Merge branch 'gallium-msaa'
authorRoland Scheidegger <sroland@vmware.com>
Fri, 21 May 2010 18:02:22 +0000 (20:02 +0200)
committerRoland Scheidegger <sroland@vmware.com>
Fri, 21 May 2010 18:02:22 +0000 (20:02 +0200)
Conflicts:
src/mesa/state_tracker/st_gen_mipmap.c
src/mesa/state_tracker/st_texture.c

746 files changed:
Makefile
SConstruct
common.py
configs/autoconf.in
configs/darwin
configs/default
configs/linux-cell
configs/linux-opengl-es
configs/linux-osmesa
configs/linux-osmesa16
configs/linux-osmesa32
configure.ac
docs/GL3.txt
docs/egl.html
docs/opengles.html
docs/relnotes-7.8.2.html
include/EGL/eglext.h
include/GL/glew.h
include/GL/glxew.h
include/GL/internal/dri_interface.h
progs/demos/engine.c
progs/egl/eglut/eglut.c
progs/egl/opengl/Makefile
progs/egl/opengl/eglgears.c
progs/egl/opengles1/Makefile
progs/egl/opengles1/pbuffer.c
progs/egl/opengles1/render_tex.c
progs/egl/opengles1/torus.c
progs/egl/opengles2/Makefile
progs/egl/opengles2/es2gears.c
progs/egl/opengles2/tri.c
progs/egl/openvg/Makefile
progs/rbug/README
progs/tests/Makefile
progs/tests/copypixrate.c
progs/tests/getprocaddress.c
progs/tests/getprocaddress.py
progs/vpglsl/func.glsl [new file with mode: 0644]
progs/vpglsl/func2.glsl [new file with mode: 0644]
progs/xdemos/glxinfo.c
scons/crossmingw.py
src/SConscript
src/egl/drivers/Makefile.template
src/egl/drivers/dri/Makefile
src/egl/drivers/dri2/Makefile
src/egl/drivers/dri2/egl_dri2.c
src/egl/drivers/glx/egl_glx.c
src/egl/main/Makefile
src/egl/main/egl.pc.in [new file with mode: 0644]
src/egl/main/eglapi.c
src/egl/main/eglapi.h
src/egl/main/eglconfig.c
src/egl/main/eglconfig.h
src/egl/main/egldefines.h
src/egl/main/egldisplay.h
src/egl/main/egldriver.c
src/egl/main/egldriver.h
src/egl/main/eglglobals.c
src/egl/main/eglmisc.c
src/egl/main/eglsurface.c
src/egl/main/eglsurface.h
src/gallium/SConscript
src/gallium/auxiliary/Makefile
src/gallium/auxiliary/SConscript
src/gallium/auxiliary/draw/draw_context.c
src/gallium/auxiliary/draw/draw_llvm.c
src/gallium/auxiliary/draw/draw_pipe.c
src/gallium/auxiliary/draw/draw_pipe_clip.c
src/gallium/auxiliary/draw/draw_pipe_cull.c
src/gallium/auxiliary/draw/draw_pipe_twoside.c
src/gallium/auxiliary/draw/draw_pipe_unfilled.c
src/gallium/auxiliary/draw/draw_pipe_validate.c
src/gallium/auxiliary/draw/draw_pipe_vbuf.c
src/gallium/auxiliary/draw/draw_pipe_wide_line.c
src/gallium/auxiliary/draw/draw_pt_decompose.h
src/gallium/auxiliary/draw/draw_pt_emit.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_pt_vcache.c
src/gallium/auxiliary/draw/draw_pt_vcache_tmp.h
src/gallium/auxiliary/draw/draw_vbuf.h
src/gallium/auxiliary/gallivm/f.cpp [new file with mode: 0644]
src/gallium/auxiliary/gallivm/lp_bld.h
src/gallium/auxiliary/gallivm/lp_bld_arit.c
src/gallium/auxiliary/gallivm/lp_bld_const.c
src/gallium/auxiliary/gallivm/lp_bld_debug.h
src/gallium/auxiliary/gallivm/lp_bld_flow.c
src/gallium/auxiliary/gallivm/lp_bld_format.h
src/gallium/auxiliary/gallivm/lp_bld_format_aos.c
src/gallium/auxiliary/gallivm/lp_bld_format_soa.c
src/gallium/auxiliary/gallivm/lp_bld_init.c
src/gallium/auxiliary/gallivm/lp_bld_limits.h
src/gallium/auxiliary/gallivm/lp_bld_misc.cpp [new file with mode: 0644]
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_swizzle.c
src/gallium/auxiliary/gallivm/lp_bld_swizzle.h
src/gallium/auxiliary/gallivm/lp_bld_tgsi.h
src/gallium/auxiliary/gallivm/lp_bld_tgsi_soa.c
src/gallium/auxiliary/gallivm/lp_bld_type.c
src/gallium/auxiliary/gallivm/lp_bld_type.h
src/gallium/auxiliary/indices/.gitignore [new file with mode: 0644]
src/gallium/auxiliary/indices/u_indices_gen.c [deleted file]
src/gallium/auxiliary/indices/u_unfilled_gen.c [deleted file]
src/gallium/auxiliary/os/os_thread.h
src/gallium/auxiliary/os/os_time.c
src/gallium/auxiliary/rbug/README
src/gallium/auxiliary/rtasm/rtasm_x86sse.c
src/gallium/auxiliary/rtasm/rtasm_x86sse.h
src/gallium/auxiliary/target-helpers/wrap_screen.c
src/gallium/auxiliary/tgsi/tgsi_dump.c
src/gallium/auxiliary/tgsi/tgsi_exec.c
src/gallium/auxiliary/tgsi/tgsi_exec.h
src/gallium/auxiliary/tgsi/tgsi_info.c
src/gallium/auxiliary/tgsi/tgsi_info.h
src/gallium/auxiliary/tgsi/tgsi_ppc.c
src/gallium/auxiliary/tgsi/tgsi_scan.c
src/gallium/auxiliary/tgsi/tgsi_scan.h
src/gallium/auxiliary/tgsi/tgsi_sse2.c
src/gallium/auxiliary/tgsi/tgsi_ureg.c
src/gallium/auxiliary/tgsi/tgsi_ureg.h
src/gallium/auxiliary/util/u_blit.c
src/gallium/auxiliary/util/u_blitter.c
src/gallium/auxiliary/util/u_debug.c
src/gallium/auxiliary/util/u_debug_symbol.c
src/gallium/auxiliary/util/u_dump.h
src/gallium/auxiliary/util/u_dump_defines.c
src/gallium/auxiliary/util/u_dump_state.c
src/gallium/auxiliary/util/u_format.h
src/gallium/auxiliary/util/u_format_pack.py
src/gallium/auxiliary/util/u_format_parse.py
src/gallium/auxiliary/util/u_format_srgb.py
src/gallium/auxiliary/util/u_gen_mipmap.c
src/gallium/auxiliary/util/u_half.py
src/gallium/auxiliary/util/u_inlines.h
src/gallium/auxiliary/util/u_surface.c
src/gallium/auxiliary/util/u_surfaces.c
src/gallium/auxiliary/util/u_transfer.c
src/gallium/docs/source/context.rst
src/gallium/docs/source/cso/rasterizer.rst
src/gallium/docs/source/screen.rst
src/gallium/drivers/cell/ppu/cell_context.c
src/gallium/drivers/cell/ppu/cell_draw_arrays.c
src/gallium/drivers/cell/ppu/cell_fence.c
src/gallium/drivers/cell/ppu/cell_pipe_state.c
src/gallium/drivers/cell/ppu/cell_render.c
src/gallium/drivers/cell/ppu/cell_screen.c
src/gallium/drivers/cell/ppu/cell_texture.c
src/gallium/drivers/cell/ppu/cell_vbuf.c
src/gallium/drivers/cell/spu/spu_tri.c
src/gallium/drivers/i915/i915_prim_vbuf.c
src/gallium/drivers/i915/i915_screen.c
src/gallium/drivers/i915/i915_state.c
src/gallium/drivers/i965/SConscript
src/gallium/drivers/i965/brw_batchbuffer.c
src/gallium/drivers/i965/brw_pipe_rast.c
src/gallium/drivers/i965/brw_resource.c
src/gallium/drivers/i965/brw_resource_texture.c
src/gallium/drivers/i965/brw_screen.c
src/gallium/drivers/i965/brw_sf.c
src/gallium/drivers/i965/brw_sf_state.c
src/gallium/drivers/i965/brw_wm_state.c
src/gallium/drivers/identity/id_screen.c
src/gallium/drivers/llvmpipe/Makefile
src/gallium/drivers/llvmpipe/README
src/gallium/drivers/llvmpipe/SConscript
src/gallium/drivers/llvmpipe/lp_bld_blend.h
src/gallium/drivers/llvmpipe/lp_bld_blend_aos.c
src/gallium/drivers/llvmpipe/lp_bld_blend_soa.c
src/gallium/drivers/llvmpipe/lp_bld_depth.c
src/gallium/drivers/llvmpipe/lp_bld_depth.h
src/gallium/drivers/llvmpipe/lp_context.h
src/gallium/drivers/llvmpipe/lp_debug.h
src/gallium/drivers/llvmpipe/lp_flush.c
src/gallium/drivers/llvmpipe/lp_jit.c
src/gallium/drivers/llvmpipe/lp_jit.h
src/gallium/drivers/llvmpipe/lp_query.c
src/gallium/drivers/llvmpipe/lp_query.h
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.h
src/gallium/drivers/llvmpipe/lp_setup_tri.c
src/gallium/drivers/llvmpipe/lp_setup_vbuf.c
src/gallium/drivers/llvmpipe/lp_state.h
src/gallium/drivers/llvmpipe/lp_state_derived.c
src/gallium/drivers/llvmpipe/lp_state_fs.c
src/gallium/drivers/llvmpipe/lp_state_rasterizer.c
src/gallium/drivers/llvmpipe/lp_test_blend.c
src/gallium/drivers/llvmpipe/lp_test_conv.c
src/gallium/drivers/llvmpipe/lp_test_format.c
src/gallium/drivers/llvmpipe/lp_test_printf.c
src/gallium/drivers/llvmpipe/lp_tex_sample.c
src/gallium/drivers/llvmpipe/lp_texture.c
src/gallium/drivers/llvmpipe/lp_texture.h
src/gallium/drivers/nouveau/nouveau_screen.c
src/gallium/drivers/nv50/nv50_program.c
src/gallium/drivers/nv50/nv50_push.c
src/gallium/drivers/nv50/nv50_screen.c
src/gallium/drivers/nv50/nv50_state.c
src/gallium/drivers/nv50/nv50_transfer.c
src/gallium/drivers/nvfx/nvfx_screen.c
src/gallium/drivers/nvfx/nvfx_state.c
src/gallium/drivers/r300/r300_context.c
src/gallium/drivers/r300/r300_context.h
src/gallium/drivers/r300/r300_debug.c
src/gallium/drivers/r300/r300_emit.c
src/gallium/drivers/r300/r300_flush.c
src/gallium/drivers/r300/r300_fs.c
src/gallium/drivers/r300/r300_query.c
src/gallium/drivers/r300/r300_render.c
src/gallium/drivers/r300/r300_render.h
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_invariant.c
src/gallium/drivers/r300/r300_texture.c
src/gallium/drivers/r300/r300_texture.h
src/gallium/drivers/r300/r300_transfer.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/rbug/Makefile [new file with mode: 0644]
src/gallium/drivers/rbug/README [new file with mode: 0644]
src/gallium/drivers/rbug/SConscript [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_context.c [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_context.h [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_core.c [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_objects.c [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_objects.h [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_public.h [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_screen.c [new file with mode: 0644]
src/gallium/drivers/rbug/rbug_screen.h [new file with mode: 0644]
src/gallium/drivers/softpipe/sp_context.c
src/gallium/drivers/softpipe/sp_context.h
src/gallium/drivers/softpipe/sp_prim_vbuf.c
src/gallium/drivers/softpipe/sp_quad_fs.c
src/gallium/drivers/softpipe/sp_query.c
src/gallium/drivers/softpipe/sp_screen.c
src/gallium/drivers/softpipe/sp_setup.c
src/gallium/drivers/softpipe/sp_state_fs.c
src/gallium/drivers/softpipe/sp_texture.c
src/gallium/drivers/svga/svga_pipe_rasterizer.c
src/gallium/drivers/svga/svga_resource.c
src/gallium/drivers/svga/svga_screen.c
src/gallium/drivers/svga/svga_state_fs.c
src/gallium/drivers/svga/svga_state_rss.c
src/gallium/drivers/svga/svga_surface.c
src/gallium/drivers/svga/svga_swtnl.h
src/gallium/drivers/svga/svga_swtnl_backend.c
src/gallium/drivers/svga/svga_tgsi.h
src/gallium/drivers/svga/svga_tgsi_insn.c
src/gallium/drivers/trace/Makefile
src/gallium/drivers/trace/README
src/gallium/drivers/trace/SConscript
src/gallium/drivers/trace/tr_context.c
src/gallium/drivers/trace/tr_context.h
src/gallium/drivers/trace/tr_drm.c
src/gallium/drivers/trace/tr_dump.h
src/gallium/drivers/trace/tr_dump_state.c
src/gallium/drivers/trace/tr_public.h
src/gallium/drivers/trace/tr_rbug.c [deleted file]
src/gallium/drivers/trace/tr_screen.c
src/gallium/drivers/trace/tr_screen.h
src/gallium/drivers/trace/tr_state.c [deleted file]
src/gallium/drivers/trace/tr_state.h [deleted file]
src/gallium/drivers/trace/tr_texture.c
src/gallium/include/pipe/p_config.h
src/gallium/include/pipe/p_defines.h
src/gallium/include/pipe/p_screen.h
src/gallium/include/pipe/p_state.h
src/gallium/include/state_tracker/dri1_api.h
src/gallium/include/state_tracker/drm_api.h
src/gallium/include/state_tracker/graw.h
src/gallium/include/state_tracker/st_api.h
src/gallium/state_trackers/dri/drm/Makefile
src/gallium/state_trackers/dri/drm/SConscript
src/gallium/state_trackers/dri/sw/Makefile
src/gallium/state_trackers/dri/sw/SConscript
src/gallium/state_trackers/egl/Makefile
src/gallium/state_trackers/egl/common/egl_g3d.c
src/gallium/state_trackers/egl/common/egl_g3d_st.c
src/gallium/state_trackers/egl/common/egl_g3d_st.h
src/gallium/state_trackers/es/Makefile [deleted file]
src/gallium/state_trackers/es/st_es1.c [deleted file]
src/gallium/state_trackers/es/st_es2.c [deleted file]
src/gallium/state_trackers/glx/xlib/Makefile
src/gallium/state_trackers/glx/xlib/SConscript
src/gallium/state_trackers/glx/xlib/glx_getproc.c
src/gallium/state_trackers/python/st_device.c
src/gallium/state_trackers/vega/Makefile
src/gallium/state_trackers/vega/api.c [new file with mode: 0644]
src/gallium/state_trackers/vega/api.h [new file with mode: 0644]
src/gallium/state_trackers/vega/api_context.c
src/gallium/state_trackers/vega/api_filters.c
src/gallium/state_trackers/vega/api_images.c
src/gallium/state_trackers/vega/api_masks.c
src/gallium/state_trackers/vega/api_misc.c
src/gallium/state_trackers/vega/api_paint.c
src/gallium/state_trackers/vega/api_params.c
src/gallium/state_trackers/vega/api_path.c
src/gallium/state_trackers/vega/api_text.c
src/gallium/state_trackers/vega/api_transform.c
src/gallium/state_trackers/vega/polygon.c
src/gallium/state_trackers/vega/vg_api.h [new file with mode: 0644]
src/gallium/state_trackers/vega/vg_context.c
src/gallium/state_trackers/vega/vg_context.h
src/gallium/state_trackers/vega/vg_manager.c
src/gallium/state_trackers/wgl/SConscript
src/gallium/state_trackers/xorg/SConscript
src/gallium/state_trackers/xorg/xorg_crtc.c
src/gallium/state_trackers/xorg/xorg_dri2.c
src/gallium/state_trackers/xorg/xorg_driver.c
src/gallium/state_trackers/xorg/xorg_exa.c
src/gallium/state_trackers/xorg/xorg_output.c
src/gallium/state_trackers/xorg/xorg_renderer.c
src/gallium/state_trackers/xorg/xorg_tracker.h
src/gallium/targets/Makefile.dri
src/gallium/targets/Makefile.egl
src/gallium/targets/SConscript
src/gallium/targets/SConscript.dri
src/gallium/targets/dri-i915/Makefile
src/gallium/targets/dri-i915/SConscript
src/gallium/targets/dri-i965/Makefile
src/gallium/targets/dri-i965/SConscript
src/gallium/targets/dri-radeong/Makefile
src/gallium/targets/dri-radeong/SConscript
src/gallium/targets/dri-swrast/Makefile
src/gallium/targets/dri-swrast/SConscript
src/gallium/targets/dri-vmwgfx/Makefile
src/gallium/targets/dri-vmwgfx/SConscript
src/gallium/targets/egl-apis/Makefile [new file with mode: 0644]
src/gallium/targets/egl-apis/api_GL.c [new file with mode: 0644]
src/gallium/targets/egl-apis/api_GLESv1_CM.c [new file with mode: 0644]
src/gallium/targets/egl-apis/api_GLESv2.c [new file with mode: 0644]
src/gallium/targets/egl-apis/api_OpenVG.c [new file with mode: 0644]
src/gallium/targets/egl-i915/Makefile
src/gallium/targets/egl-i965/Makefile
src/gallium/targets/egl-radeon/Makefile
src/gallium/targets/egl-vmwgfx/Makefile
src/gallium/targets/graw-null/SConscript [new file with mode: 0644]
src/gallium/targets/graw-null/graw_null.c [new file with mode: 0644]
src/gallium/targets/graw-xlib/SConscript
src/gallium/targets/graw-xlib/graw.h [deleted file]
src/gallium/targets/graw-xlib/graw_util.c [new file with mode: 0644]
src/gallium/targets/graw-xlib/graw_xlib.c
src/gallium/targets/libgl-gdi/SConscript
src/gallium/targets/libgl-xlib/Makefile
src/gallium/targets/libgl-xlib/SConscript
src/gallium/targets/xorg-i915/Makefile
src/gallium/targets/xorg-i965/Makefile
src/gallium/targets/xorg-radeon/Makefile
src/gallium/targets/xorg-vmwgfx/Makefile
src/gallium/targets/xorg-vmwgfx/SConscript
src/gallium/tests/graw/SConscript [new file with mode: 0644]
src/gallium/tests/graw/clear.c [new file with mode: 0644]
src/gallium/tests/graw/quad-tex.c [new file with mode: 0644]
src/gallium/tests/raw/SConscript [deleted file]
src/gallium/tests/raw/clear.c [deleted file]
src/gallium/tests/trivial/quad-tex.c
src/gallium/tests/trivial/tri.c
src/gallium/winsys/SConscript
src/gallium/winsys/i965/drm/i965_drm_buffer.c
src/gallium/winsys/i965/xlib/Makefile
src/gallium/winsys/radeon/drm/radeon_buffer.h
src/gallium/winsys/radeon/drm/radeon_drm_buffer.c
src/gallium/winsys/radeon/drm/radeon_r300.c
src/gallium/winsys/svga/drm/SConscript
src/gallium/winsys/sw/drm/SConscript [new file with mode: 0644]
src/gallium/winsys/sw/wrapper/SConscript [new file with mode: 0644]
src/gallium/winsys/sw/wrapper/wrapper_sw_winsys.c
src/gles/Makefile [deleted file]
src/glew/glew.c
src/glew/glewinfo.c
src/glx/Makefile
src/glx/apple/Makefile
src/glx/dri2_glx.c
src/glx/glxcmds.c
src/mapi/es1api/Makefile [new file with mode: 0644]
src/mapi/es1api/glesv1_cm.pc.in [new file with mode: 0644]
src/mapi/es2api/Makefile [new file with mode: 0644]
src/mapi/es2api/glesv2.pc.in [new file with mode: 0644]
src/mapi/glapi/.gitignore [new file with mode: 0644]
src/mapi/glapi/Makefile [new file with mode: 0644]
src/mapi/glapi/SConscript [new file with mode: 0644]
src/mapi/glapi/gen-es/Makefile [new file with mode: 0644]
src/mapi/glapi/gen-es/base1_API.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/base2_API.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es1_API.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es1_COMPAT.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es1_EXT.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es2_API.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es2_COMPAT.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es2_EXT.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es_COMPAT.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/es_EXT.xml [new file with mode: 0644]
src/mapi/glapi/gen-es/gl_compare.py [new file with mode: 0644]
src/mapi/glapi/gen-es/gl_parse_header.py [new file with mode: 0644]
src/mapi/glapi/gen/APPLE_object_purgeable.xml [new file with mode: 0644]
src/mapi/glapi/gen/APPLE_vertex_array_object.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_copy_buffer.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_depth_clamp.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_draw_instanced.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_framebuffer_object.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_map_buffer_range.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_seamless_cube_map.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_sync.xml [new file with mode: 0644]
src/mapi/glapi/gen/ARB_vertex_array_object.xml [new file with mode: 0644]
src/mapi/glapi/gen/EXT_draw_buffers2.xml [new file with mode: 0644]
src/mapi/glapi/gen/EXT_framebuffer_object.xml [new file with mode: 0644]
src/mapi/glapi/gen/EXT_packed_depth_stencil.xml [new file with mode: 0644]
src/mapi/glapi/gen/EXT_provoking_vertex.xml [new file with mode: 0644]
src/mapi/glapi/gen/EXT_texture_array.xml [new file with mode: 0644]
src/mapi/glapi/gen/EXT_transform_feedback.xml [new file with mode: 0644]
src/mapi/glapi/gen/GL3.xml [new file with mode: 0644]
src/mapi/glapi/gen/Makefile [new file with mode: 0644]
src/mapi/glapi/gen/NV_conditional_render.xml [new file with mode: 0644]
src/mapi/glapi/gen/OES_EGL_image.xml [new file with mode: 0644]
src/mapi/glapi/gen/extension_helper.py [new file with mode: 0644]
src/mapi/glapi/gen/glX_API.xml [new file with mode: 0644]
src/mapi/glapi/gen/glX_XML.py [new file with mode: 0644]
src/mapi/glapi/gen/glX_doc.py [new file with mode: 0644]
src/mapi/glapi/gen/glX_proto_common.py [new file with mode: 0644]
src/mapi/glapi/gen/glX_proto_recv.py [new file with mode: 0644]
src/mapi/glapi/gen/glX_proto_send.py [new file with mode: 0644]
src/mapi/glapi/gen/glX_proto_size.py [new file with mode: 0644]
src/mapi/glapi/gen/glX_server_table.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_API.dtd [new file with mode: 0644]
src/mapi/glapi/gen/gl_API.xml [new file with mode: 0644]
src/mapi/glapi/gen/gl_SPARC_asm.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_XML.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_and_glX_API.xml [new file with mode: 0644]
src/mapi/glapi/gen/gl_apitemp.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_enums.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_offsets.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_procs.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_table.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_x86-64_asm.py [new file with mode: 0644]
src/mapi/glapi/gen/gl_x86_asm.py [new file with mode: 0644]
src/mapi/glapi/gen/license.py [new file with mode: 0644]
src/mapi/glapi/gen/mesadef.py [new file with mode: 0644]
src/mapi/glapi/gen/next_available_offset.sh [new file with mode: 0755]
src/mapi/glapi/gen/remap_helper.py [new file with mode: 0644]
src/mapi/glapi/gen/typeexpr.py [new file with mode: 0644]
src/mapi/glapi/glapi.h [new file with mode: 0644]
src/mapi/glapi/glapi_dispatch.c [new file with mode: 0644]
src/mapi/glapi/glapi_entrypoint.c [new file with mode: 0644]
src/mapi/glapi/glapi_getproc.c [new file with mode: 0644]
src/mapi/glapi/glapi_nop.c [new file with mode: 0644]
src/mapi/glapi/glapi_priv.h [new file with mode: 0644]
src/mapi/glapi/glapi_sparc.S [new file with mode: 0644]
src/mapi/glapi/glapi_x86-64.S [new file with mode: 0644]
src/mapi/glapi/glapi_x86.S [new file with mode: 0644]
src/mapi/glapi/glapidispatch.h [new file with mode: 0644]
src/mapi/glapi/glapioffsets.h [new file with mode: 0644]
src/mapi/glapi/glapitable.h [new file with mode: 0644]
src/mapi/glapi/glapitemp.h [new file with mode: 0644]
src/mapi/glapi/glprocs.h [new file with mode: 0644]
src/mapi/glapi/glthread.c [new file with mode: 0644]
src/mapi/glapi/glthread.h [new file with mode: 0644]
src/mapi/glapi/sources.mak [new file with mode: 0644]
src/mapi/mapi/entry.c [new file with mode: 0644]
src/mapi/mapi/entry.h [new file with mode: 0644]
src/mapi/mapi/entry_x86-64_tls.h [new file with mode: 0644]
src/mapi/mapi/entry_x86_tls.h [new file with mode: 0644]
src/mapi/mapi/entry_x86_tsd.h [new file with mode: 0644]
src/mapi/mapi/mapi.c [new file with mode: 0644]
src/mapi/mapi/mapi.h [new file with mode: 0644]
src/mapi/mapi/mapi_abi.py [new file with mode: 0644]
src/mapi/mapi/mapi_tmp.h [new file with mode: 0644]
src/mapi/mapi/sources.mak [new file with mode: 0644]
src/mapi/mapi/stub.c [new file with mode: 0644]
src/mapi/mapi/stub.h [new file with mode: 0644]
src/mapi/mapi/table.c [new file with mode: 0644]
src/mapi/mapi/table.h [new file with mode: 0644]
src/mapi/mapi/u_compiler.h [new file with mode: 0644]
src/mapi/mapi/u_current.c [new file with mode: 0644]
src/mapi/mapi/u_current.h [new file with mode: 0644]
src/mapi/mapi/u_execmem.c [new file with mode: 0644]
src/mapi/mapi/u_execmem.h [new file with mode: 0644]
src/mapi/mapi/u_macros.h [new file with mode: 0644]
src/mapi/mapi/u_thread.c [new file with mode: 0644]
src/mapi/mapi/u_thread.h [new file with mode: 0644]
src/mapi/vgapi/Makefile [new file with mode: 0644]
src/mapi/vgapi/vg.pc.in [new file with mode: 0644]
src/mapi/vgapi/vgapi.csv [new file with mode: 0644]
src/mapi/vgapi/vgapi_defines.h [new file with mode: 0644]
src/mesa/.gitignore
src/mesa/Makefile
src/mesa/SConscript
src/mesa/drivers/common/driverfuncs.c
src/mesa/drivers/dri/Makefile.template
src/mesa/drivers/dri/common/dri_util.c
src/mesa/drivers/dri/common/dri_util.h
src/mesa/drivers/dri/i915/i830_state.c
src/mesa/drivers/dri/i915/i915_state.c
src/mesa/drivers/dri/i915/intel_tris.c
src/mesa/drivers/dri/i965/brw_clip.c
src/mesa/drivers/dri/i965/brw_clip.h
src/mesa/drivers/dri/i965/brw_clip_tri.c
src/mesa/drivers/dri/i965/brw_clip_util.c
src/mesa/drivers/dri/i965/brw_context.c
src/mesa/drivers/dri/i965/brw_context.h
src/mesa/drivers/dri/i965/brw_defines.h
src/mesa/drivers/dri/i965/brw_disasm.c
src/mesa/drivers/dri/i965/brw_draw.c
src/mesa/drivers/dri/i965/brw_draw_upload.c
src/mesa/drivers/dri/i965/brw_eu.h
src/mesa/drivers/dri/i965/brw_eu_emit.c
src/mesa/drivers/dri/i965/brw_gs.c
src/mesa/drivers/dri/i965/brw_gs_emit.c
src/mesa/drivers/dri/i965/brw_queryobj.c
src/mesa/drivers/dri/i965/brw_sf.c
src/mesa/drivers/dri/i965/brw_vs.c
src/mesa/drivers/dri/i965/brw_vs.h
src/mesa/drivers/dri/i965/brw_vs_emit.c
src/mesa/drivers/dri/i965/brw_wm_emit.c
src/mesa/drivers/dri/i965/brw_wm_glsl.c
src/mesa/drivers/dri/intel/intel_batchbuffer.c
src/mesa/drivers/dri/intel/intel_blit.c
src/mesa/drivers/dri/intel/intel_buffer_objects.c
src/mesa/drivers/dri/intel/intel_context.c
src/mesa/drivers/dri/intel/intel_context.h
src/mesa/drivers/dri/intel/intel_fbo.c
src/mesa/drivers/dri/intel/intel_fbo.h
src/mesa/drivers/dri/intel/intel_mipmap_tree.c
src/mesa/drivers/dri/intel/intel_pixel_copy.c
src/mesa/drivers/dri/intel/intel_pixel_draw.c
src/mesa/drivers/dri/intel/intel_pixel_read.c
src/mesa/drivers/dri/intel/intel_regions.c
src/mesa/drivers/dri/intel/intel_screen.c
src/mesa/drivers/dri/intel/intel_span.c
src/mesa/drivers/dri/intel/intel_syncobj.c
src/mesa/drivers/dri/intel/intel_tex_copy.c
src/mesa/drivers/dri/intel/intel_tex_format.c
src/mesa/drivers/dri/intel/intel_tex_image.c
src/mesa/drivers/dri/intel/intel_tex_subimage.c
src/mesa/drivers/dri/r300/compiler/Makefile
src/mesa/drivers/dri/r300/compiler/r300_fragprog_swizzle.c
src/mesa/drivers/dri/r300/compiler/r3xx_fragprog.c
src/mesa/drivers/dri/r300/compiler/radeon_code.c
src/mesa/drivers/dri/r300/compiler/radeon_code.h
src/mesa/drivers/dri/r300/compiler/radeon_dataflow.c
src/mesa/drivers/dri/r300/compiler/radeon_dataflow.h
src/mesa/drivers/dri/r300/compiler/radeon_emulate_branches.c
src/mesa/drivers/dri/r300/compiler/radeon_optimize.c [new file with mode: 0644]
src/mesa/drivers/dri/r300/compiler/radeon_pair_regalloc.c
src/mesa/drivers/dri/r300/compiler/radeon_pair_schedule.c
src/mesa/drivers/dri/r300/compiler/radeon_program_alu.c
src/mesa/drivers/dri/r300/compiler/radeon_program_constants.h
src/mesa/drivers/dri/r300/compiler/radeon_program_tex.c
src/mesa/drivers/dri/r300/r300_fragprog_common.c
src/mesa/drivers/fbdev/Makefile
src/mesa/drivers/glslcompiler/Makefile
src/mesa/drivers/osmesa/Makefile
src/mesa/drivers/osmesa/osmesa.c
src/mesa/drivers/x11/Makefile
src/mesa/drivers/x11/xm_api.c
src/mesa/es/.gitignore [deleted file]
src/mesa/es/Makefile [deleted file]
src/mesa/es/glapi/Makefile [deleted file]
src/mesa/es/glapi/base1_API.xml [deleted file]
src/mesa/es/glapi/base2_API.xml [deleted file]
src/mesa/es/glapi/es1_API.xml [deleted file]
src/mesa/es/glapi/es1_COMPAT.xml [deleted file]
src/mesa/es/glapi/es1_EXT.xml [deleted file]
src/mesa/es/glapi/es2_API.xml [deleted file]
src/mesa/es/glapi/es2_COMPAT.xml [deleted file]
src/mesa/es/glapi/es2_EXT.xml [deleted file]
src/mesa/es/glapi/es_COMPAT.xml [deleted file]
src/mesa/es/glapi/es_EXT.xml [deleted file]
src/mesa/es/glapi/gl_compare.py [deleted file]
src/mesa/es/glapi/gl_parse_header.py [deleted file]
src/mesa/es/sources.mak [deleted file]
src/mesa/glapi/.gitignore [deleted file]
src/mesa/glapi/gen/APPLE_object_purgeable.xml [deleted file]
src/mesa/glapi/gen/APPLE_vertex_array_object.xml [deleted file]
src/mesa/glapi/gen/ARB_copy_buffer.xml [deleted file]
src/mesa/glapi/gen/ARB_depth_clamp.xml [deleted file]
src/mesa/glapi/gen/ARB_draw_elements_base_vertex.xml [deleted file]
src/mesa/glapi/gen/ARB_draw_instanced.xml [deleted file]
src/mesa/glapi/gen/ARB_framebuffer_object.xml [deleted file]
src/mesa/glapi/gen/ARB_map_buffer_range.xml [deleted file]
src/mesa/glapi/gen/ARB_seamless_cube_map.xml [deleted file]
src/mesa/glapi/gen/ARB_sync.xml [deleted file]
src/mesa/glapi/gen/ARB_vertex_array_object.xml [deleted file]
src/mesa/glapi/gen/EXT_draw_buffers2.xml [deleted file]
src/mesa/glapi/gen/EXT_framebuffer_object.xml [deleted file]
src/mesa/glapi/gen/EXT_packed_depth_stencil.xml [deleted file]
src/mesa/glapi/gen/EXT_provoking_vertex.xml [deleted file]
src/mesa/glapi/gen/EXT_texture_array.xml [deleted file]
src/mesa/glapi/gen/EXT_transform_feedback.xml [deleted file]
src/mesa/glapi/gen/GL3.xml [deleted file]
src/mesa/glapi/gen/Makefile [deleted file]
src/mesa/glapi/gen/NV_conditional_render.xml [deleted file]
src/mesa/glapi/gen/OES_EGL_image.xml [deleted file]
src/mesa/glapi/gen/extension_helper.py [deleted file]
src/mesa/glapi/gen/glX_API.xml [deleted file]
src/mesa/glapi/gen/glX_XML.py [deleted file]
src/mesa/glapi/gen/glX_doc.py [deleted file]
src/mesa/glapi/gen/glX_proto_common.py [deleted file]
src/mesa/glapi/gen/glX_proto_recv.py [deleted file]
src/mesa/glapi/gen/glX_proto_send.py [deleted file]
src/mesa/glapi/gen/glX_proto_size.py [deleted file]
src/mesa/glapi/gen/glX_server_table.py [deleted file]
src/mesa/glapi/gen/gl_API.dtd [deleted file]
src/mesa/glapi/gen/gl_API.xml [deleted file]
src/mesa/glapi/gen/gl_SPARC_asm.py [deleted file]
src/mesa/glapi/gen/gl_XML.py [deleted file]
src/mesa/glapi/gen/gl_and_glX_API.xml [deleted file]
src/mesa/glapi/gen/gl_apitemp.py [deleted file]
src/mesa/glapi/gen/gl_enums.py [deleted file]
src/mesa/glapi/gen/gl_offsets.py [deleted file]
src/mesa/glapi/gen/gl_procs.py [deleted file]
src/mesa/glapi/gen/gl_table.py [deleted file]
src/mesa/glapi/gen/gl_x86-64_asm.py [deleted file]
src/mesa/glapi/gen/gl_x86_asm.py [deleted file]
src/mesa/glapi/gen/license.py [deleted file]
src/mesa/glapi/gen/mesadef.py [deleted file]
src/mesa/glapi/gen/next_available_offset.sh [deleted file]
src/mesa/glapi/gen/remap_helper.py [deleted file]
src/mesa/glapi/gen/typeexpr.py [deleted file]
src/mesa/glapi/glapi.c [deleted file]
src/mesa/glapi/glapi.h [deleted file]
src/mesa/glapi/glapi_dispatch.c [deleted file]
src/mesa/glapi/glapi_entrypoint.c [deleted file]
src/mesa/glapi/glapi_execmem.c [deleted file]
src/mesa/glapi/glapi_getproc.c [deleted file]
src/mesa/glapi/glapi_nop.c [deleted file]
src/mesa/glapi/glapi_priv.h [deleted file]
src/mesa/glapi/glapidispatch.h [deleted file]
src/mesa/glapi/glapioffsets.h [deleted file]
src/mesa/glapi/glapitable.h [deleted file]
src/mesa/glapi/glapitemp.h [deleted file]
src/mesa/glapi/glprocs.h [deleted file]
src/mesa/glapi/glthread.c [deleted file]
src/mesa/glapi/glthread.h [deleted file]
src/mesa/glesv1_cm.pc.in [deleted file]
src/mesa/glesv2.pc.in [deleted file]
src/mesa/main/.gitignore [new file with mode: 0644]
src/mesa/main/APIspec.xml
src/mesa/main/api_exec.c
src/mesa/main/attrib.c
src/mesa/main/compiler.h
src/mesa/main/context.c
src/mesa/main/context.h
src/mesa/main/dd.h
src/mesa/main/dlopen.c
src/mesa/main/drawtex.c
src/mesa/main/es_generator.py
src/mesa/main/extensions.c
src/mesa/main/fbobject.c
src/mesa/main/formats.c
src/mesa/main/formats.h
src/mesa/main/get.c
src/mesa/main/get.h
src/mesa/main/get_gen.py [deleted file]
src/mesa/main/get_gen_es.py [deleted file]
src/mesa/main/getstring.c
src/mesa/main/glheader.h
src/mesa/main/imports.c
src/mesa/main/imports.h
src/mesa/main/light.c
src/mesa/main/light.h
src/mesa/main/macros.h
src/mesa/main/mtypes.h
src/mesa/main/querymatrix.c
src/mesa/main/queryobj.h
src/mesa/main/rbadaptors.c [deleted file]
src/mesa/main/rbadaptors.h [deleted file]
src/mesa/main/renderbuffer.c
src/mesa/main/texcompress.c
src/mesa/main/texcompress_s3tc.c
src/mesa/main/texfetch.c
src/mesa/main/texfetch_tmp.h
src/mesa/main/texformat.c
src/mesa/main/texgetimage.c
src/mesa/main/teximage.c
src/mesa/main/texstore.c
src/mesa/main/transformfeedback.c
src/mesa/main/transformfeedback.h
src/mesa/math/m_matrix.c
src/mesa/shader/atifragshader.c
src/mesa/shader/atifragshader.h
src/mesa/shader/prog_execute.c
src/mesa/shader/shader_api.c
src/mesa/sources.mak
src/mesa/sparc/glapi_sparc.S [deleted file]
src/mesa/state_tracker/st_atom_constbuf.c
src/mesa/state_tracker/st_atom_pixeltransfer.c
src/mesa/state_tracker/st_atom_rasterizer.c
src/mesa/state_tracker/st_cb_accum.c
src/mesa/state_tracker/st_cb_accum.h
src/mesa/state_tracker/st_cb_bitmap.c
src/mesa/state_tracker/st_cb_bitmap.h
src/mesa/state_tracker/st_cb_blit.c
src/mesa/state_tracker/st_cb_blit.h
src/mesa/state_tracker/st_cb_bufferobjects.c
src/mesa/state_tracker/st_cb_clear.c
src/mesa/state_tracker/st_cb_drawpixels.c
src/mesa/state_tracker/st_cb_drawpixels.h
src/mesa/state_tracker/st_cb_drawtex.c
src/mesa/state_tracker/st_cb_drawtex.h
src/mesa/state_tracker/st_cb_eglimage.c
src/mesa/state_tracker/st_cb_feedback.c
src/mesa/state_tracker/st_cb_feedback.h
src/mesa/state_tracker/st_cb_queryobj.c
src/mesa/state_tracker/st_cb_queryobj.h
src/mesa/state_tracker/st_cb_rasterpos.c
src/mesa/state_tracker/st_cb_rasterpos.h
src/mesa/state_tracker/st_cb_readpixels.c
src/mesa/state_tracker/st_cb_texture.c
src/mesa/state_tracker/st_cb_xformfb.c [new file with mode: 0644]
src/mesa/state_tracker/st_cb_xformfb.h [new file with mode: 0644]
src/mesa/state_tracker/st_context.c
src/mesa/state_tracker/st_draw.c
src/mesa/state_tracker/st_draw_feedback.c
src/mesa/state_tracker/st_extensions.c
src/mesa/state_tracker/st_gen_mipmap.c
src/mesa/state_tracker/st_inlines.h [deleted file]
src/mesa/state_tracker/st_manager.c
src/mesa/state_tracker/st_mesa_to_tgsi.c
src/mesa/state_tracker/st_program.c
src/mesa/state_tracker/st_texture.c
src/mesa/state_tracker/st_texture.h
src/mesa/swrast_setup/ss_context.c
src/mesa/vbo/vbo_context.c
src/mesa/vbo/vbo_context.h
src/mesa/vbo/vbo_save.c
src/mesa/vbo/vbo_save.h
src/mesa/vbo/vbo_save_api.c
src/mesa/vbo/vbo_save_draw.c
src/mesa/vbo/vbo_save_loopback.c
src/mesa/x86-64/Makefile
src/mesa/x86-64/glapi_x86-64.S [deleted file]
src/mesa/x86/Makefile
src/mesa/x86/glapi_x86.S [deleted file]

index 411130bc272a91ecee2dd70a684e1a7e0f7e42e9..503f17ef9fac75e76ae18b1496dd2a63b394bf62 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -186,6 +186,14 @@ LIB_NAME = MesaLib-$(VERSION)
 DEMO_NAME = MesaDemos-$(VERSION)
 GLUT_NAME = MesaGLUT-$(VERSION)
 
+# This is part of MAIN_FILES
+MAIN_ES_FILES = \
+       $(DIRECTORY)/src/mesa/es/Makefile                               \
+       $(DIRECTORY)/src/mesa/es/sources.mak                            \
+       $(DIRECTORY)/src/mesa/main/*.xml                                \
+       $(DIRECTORY)/src/mesa/main/*.py                                 \
+       $(DIRECTORY)/src/mesa/main/*.dtd
+
 MAIN_FILES = \
        $(DIRECTORY)/Makefile*                                          \
        $(DIRECTORY)/configure                                          \
@@ -219,8 +227,6 @@ MAIN_FILES = \
        $(DIRECTORY)/include/GL/vms_x_fix.h                             \
        $(DIRECTORY)/include/GL/wglext.h                                \
        $(DIRECTORY)/include/GL/wmesa.h                                 \
-       $(DIRECTORY)/include/VG/*.h                                     \
-       $(DIRECTORY)/include/KHR/*.h                                    \
        $(DIRECTORY)/src/glsl/Makefile                                  \
        $(DIRECTORY)/src/glsl/Makefile.template                         \
        $(DIRECTORY)/src/glsl/SConscript                                \
@@ -233,9 +239,9 @@ MAIN_FILES = \
        $(DIRECTORY)/src/mesa/gl.pc.in                                  \
        $(DIRECTORY)/src/mesa/osmesa.pc.in                              \
        $(DIRECTORY)/src/mesa/depend                                    \
+       $(MAIN_ES_FILES)                                                \
        $(DIRECTORY)/src/mesa/main/*.[chS]                              \
        $(DIRECTORY)/src/mesa/main/descrip.mms                          \
-       $(DIRECTORY)/src/mesa/glapi/*.[chS]                             \
        $(DIRECTORY)/src/mesa/math/*.[ch]                               \
        $(DIRECTORY)/src/mesa/math/descrip.mms                          \
        $(DIRECTORY)/src/mesa/shader/*.[chly]                           \
@@ -289,31 +295,40 @@ MAIN_FILES = \
        $(DIRECTORY)/progs/util/sampleMakefile                          \
        $(DIRECTORY)/windows/VC8/
 
-ES_FILES = \
+MAPI_FILES = \
        $(DIRECTORY)/include/GLES/*.h                                   \
        $(DIRECTORY)/include/GLES2/*.h                                  \
-       $(DIRECTORY)/src/mesa/glapi/gen/*.xml                           \
-       $(DIRECTORY)/src/mesa/glapi/gen/*.py                            \
-       $(DIRECTORY)/src/mesa/glapi/gen/*.dtd                           \
-       $(DIRECTORY)/src/mesa/es/glapi/Makefile                         \
-       $(DIRECTORY)/src/mesa/es/glapi/*.xml                            \
-       $(DIRECTORY)/src/mesa/es/glapi/*.py                             \
-       $(DIRECTORY)/src/mesa/es/state_tracker/*.[ch]                   \
-       $(DIRECTORY)/src/mesa/es/main/*.[ch]                            \
-       $(DIRECTORY)/src/mesa/es/main/*.xml                             \
-       $(DIRECTORY)/src/mesa/es/main/*.py                              \
-       $(DIRECTORY)/src/mesa/es/main/*.dtd                             \
-       $(DIRECTORY)/src/mesa/es/Makefile                               \
-       $(DIRECTORY)/src/mesa/es/sources.mak                            \
+       $(DIRECTORY)/include/VG/*.h                                     \
+       $(DIRECTORY)/src/mapi/es?api/Makefile                           \
+       $(DIRECTORY)/src/mapi/es?api/*.pc.in                            \
+       $(DIRECTORY)/src/mapi/glapi/gen/Makefile                        \
+       $(DIRECTORY)/src/mapi/glapi/gen/*.xml                           \
+       $(DIRECTORY)/src/mapi/glapi/gen/*.py                            \
+       $(DIRECTORY)/src/mapi/glapi/gen/*.dtd                           \
+       $(DIRECTORY)/src/mapi/glapi/gen-es/Makefile                     \
+       $(DIRECTORY)/src/mapi/glapi/gen-es/*.xml                        \
+       $(DIRECTORY)/src/mapi/glapi/gen-es/*.py                         \
+       $(DIRECTORY)/src/mapi/glapi/Makefile                            \
+       $(DIRECTORY)/src/mapi/glapi/SConscript                          \
+       $(DIRECTORY)/src/mapi/glapi/sources.mak                         \
+       $(DIRECTORY)/src/mapi/glapi/*.[chS]                             \
+       $(DIRECTORY)/src/mapi/mapi/mapi_abi.py                          \
+       $(DIRECTORY)/src/mapi/mapi/sources.mak                          \
+       $(DIRECTORY)/src/mapi/mapi/*.[ch]                               \
+       $(DIRECTORY)/src/mapi/vgapi/Makefile                            \
+       $(DIRECTORY)/src/mapi/vgapi/vgapi.csv                           \
+       $(DIRECTORY)/src/mapi/vgapi/vg.pc.in                            \
+       $(DIRECTORY)/src/mapi/vgapi/*.h
 
 EGL_FILES = \
+       $(DIRECTORY)/include/KHR/*.h                                    \
        $(DIRECTORY)/include/EGL/*.h                                    \
        $(DIRECTORY)/src/egl/Makefile                                   \
        $(DIRECTORY)/src/egl/*/Makefile                                 \
        $(DIRECTORY)/src/egl/*/Makefile.template                        \
        $(DIRECTORY)/src/egl/*/*.[ch]                                   \
        $(DIRECTORY)/src/egl/*/*/Makefile                               \
-       $(DIRECTORY)/src/egl/*/*/*.[ch]                                 \
+       $(DIRECTORY)/src/egl/*/*/*.[ch]
 
 GALLIUM_FILES = \
        $(DIRECTORY)/src/mesa/state_tracker/*[ch]                       \
@@ -325,8 +340,6 @@ GALLIUM_FILES = \
        $(DIRECTORY)/src/gallium/*/Makefile                             \
        $(DIRECTORY)/src/gallium/*/SConscript                           \
        $(DIRECTORY)/src/gallium/*/*/Makefile                           \
-       $(DIRECTORY)/src/gallium/*/*/Makefile.egl                       \
-       $(DIRECTORY)/src/gallium/*/*/Makefile.template                  \
        $(DIRECTORY)/src/gallium/*/*/SConscript                         \
        $(DIRECTORY)/src/gallium/*/*/*.[ch]                             \
        $(DIRECTORY)/src/gallium/*/*/*.py                               \
@@ -334,9 +347,7 @@ GALLIUM_FILES = \
        $(DIRECTORY)/src/gallium/*/*/*/Makefile                         \
        $(DIRECTORY)/src/gallium/*/*/*/SConscript                       \
        $(DIRECTORY)/src/gallium/*/*/*/*.[ch]                           \
-       $(DIRECTORY)/src/gallium/*/*/*/*.py                             \
-       $(DIRECTORY)/src/gallium/*/*/*/*/Makefile                       \
-       $(DIRECTORY)/src/gallium/*/*/*/*/*.[ch]                         \
+       $(DIRECTORY)/src/gallium/*/*/*/*.py
 
 
 DRI_FILES = \
@@ -467,6 +478,7 @@ DEPEND_FILES = \
 
 LIB_FILES = \
        $(MAIN_FILES)           \
+       $(MAPI_FILES)           \
        $(ES_FILES)             \
        $(EGL_FILES)            \
        $(GALLIUM_FILES)        \
index 3a4ff9a3fac94a8314d247cffb7316b178e3772c..c843b41b0dc933c6f7562a13108d29933a053612 100644 (file)
@@ -31,6 +31,7 @@ import common
 # Configuration options
 
 default_statetrackers = 'mesa'
+default_targets = 'none'
 
 if common.default_platform in ('linux', 'freebsd', 'darwin'):
        default_drivers = 'softpipe,failover,svga,i915,i965,trace,identity,llvmpipe'
@@ -54,6 +55,28 @@ opts.Add(ListVariable('drivers', 'pipe drivers to build', default_drivers,
 opts.Add(ListVariable('winsys', 'winsys drivers to build', default_winsys,
                      ['xlib', 'vmware', 'i915', 'i965', 'gdi', 'radeon', 'graw-xlib']))
 
+opts.Add(ListVariable('targets', 'driver targets to build', default_targets,
+                     ['dri-i915',
+                      'dri-i965',
+                      'dri-nouveau',
+                      'dri-radeong',
+                      'dri-swrast',
+                      'dri-vmwgfx',
+                      'egl-i915',
+                      'egl-i965',
+                      'egl-nouveau',
+                      'egl-radeon',
+                      'egl-swrast',
+                      'egl-vmwgfx',
+                      'graw-xlib',
+                      'libgl-gdi',
+                      'libgl-xlib',
+                      'xorg-i915',
+                      'xorg-i965',
+                      'xorg-nouveau',
+                      'xorg-radeon',
+                      'xorg-vmwgfx']))
+
 opts.Add(EnumVariable('MSVS_VERSION', 'MS Visual C++ version', None, allowed_values=('7.1', '8.0', '9.0')))
 
 env = Environment(
@@ -102,9 +125,11 @@ Export([
 #######################################################################
 # Environment setup
 
-# Always build trace, identity, softpipe, and llvmpipe (where possible)
+# Always build trace, rbug, identity, softpipe, and llvmpipe (where possible)
 if 'trace' not in env['drivers']:
     env['drivers'].append('trace')
+if 'rbug' not in env['drivers']:
+    env['drivers'].append('rbug')
 if 'identity' not in env['drivers']:
     env['drivers'].append('identity')
 if 'softpipe' not in env['drivers']:
@@ -151,10 +176,11 @@ if platform in ('posix', 'linux', 'freebsd', 'darwin'):
                '_SVID_SOURCE',
                '_BSD_SOURCE', 
                '_GNU_SOURCE',
-               
                'PTHREADS',
                'HAVE_POSIX_MEMALIGN',
        ])
+       if gcc:
+               env.Append(CFLAGS = ['-fvisibility=hidden'])
        if platform == 'darwin':
                env.Append(CPPDEFINES = ['_DARWIN_C_SOURCE'])
        env.Append(LIBS = [
index 742dabf4c45d38d269b5935375297c314436f14d..bdca375f8b0d3f0633638648daf10150c07c0664 100644 (file)
--- a/common.py
+++ b/common.py
@@ -3,6 +3,7 @@
 
 import os
 import os.path
+import re
 import subprocess
 import sys
 import platform as _platform
@@ -28,22 +29,38 @@ _machine_map = {
        'ppc' : 'ppc',
        'x86_64': 'x86_64',
 }
+
+
+# find default_machine value
 if 'PROCESSOR_ARCHITECTURE' in os.environ:
        default_machine = os.environ['PROCESSOR_ARCHITECTURE']
 else:
        default_machine = _platform.machine()
 default_machine = _machine_map.get(default_machine, 'generic')
 
+
+# find default_llvm value
 if 'LLVM' in os.environ:
     default_llvm = 'yes'
 else:
+    # Search sys.argv[] for a "platform=foo" argument since we don't have
+    # an 'env' variable at this point.
+    platform = default_platform
+    pattern = re.compile("(platform=)(.*)")
+    for arg in sys.argv:
+        m = pattern.match(arg)
+        if m:
+            platform = m.group(2)
+
     default_llvm = 'no'
     try:
-        if subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0:
+        if platform != 'windows' and subprocess.call(['llvm-config', '--version'], stdout=subprocess.PIPE) == 0:
             default_llvm = 'yes'
     except:
         pass
 
+
+# find default_dri value
 if default_platform in ('linux', 'freebsd'):
        default_dri = 'yes'
 elif default_platform in ('winddk', 'windows', 'wince', 'darwin'):
index 119aadb6d4f2e0bf55f2523ea58ce5a08eef64ac..0b5be0c2cae72fb09b496988db13e094c1f41202 100644 (file)
@@ -16,6 +16,7 @@ PIC_FLAGS = @PIC_FLAGS@
 DEFINES = @DEFINES@
 API_DEFINES = @API_DEFINES@
 APIS = @APIS@
+GLES_OVERLAY = @GLES_OVERLAY@
 CFLAGS = @CPPFLAGS@ @CFLAGS@ \
        $(OPT_FLAGS) $(PIC_FLAGS) $(ARCH_FLAGS) $(ASM_FLAGS) $(DEFINES)
 CXXFLAGS = @CPPFLAGS@ @CXXFLAGS@ \
@@ -36,7 +37,6 @@ LLVM_LIBS = @LLVM_LIBS@
 # Source selection
 MESA_ASM_SOURCES = @MESA_ASM_SOURCES@
 GLAPI_ASM_SOURCES = @GLAPI_ASM_SOURCES@
-ES_SOURCES = @ES1_SOURCES@ @ES2_SOURCES@
 
 # Misc tools and flags
 MAKE = @MAKE@
@@ -58,6 +58,7 @@ GLW_LIB = GLw
 OSMESA_LIB = @OSMESA_LIB@
 GLESv1_CM_LIB = GLESv1_CM
 GLESv2_LIB = GLESv2
+VG_LIB = OpenVG
 
 # Library names (actual file names)
 GL_LIB_NAME = @GL_LIB_NAME@
@@ -68,6 +69,7 @@ OSMESA_LIB_NAME = @OSMESA_LIB_NAME@
 EGL_LIB_NAME = @EGL_LIB_NAME@
 GLESv1_CM_LIB_NAME = @GLESv1_CM_LIB_NAME@
 GLESv2_LIB_NAME = @GLESv2_LIB_NAME@
+VG_LIB_NAME = @VG_LIB_NAME@
 
 # Globs used to install the lib and all symlinks
 GL_LIB_GLOB = @GL_LIB_GLOB@
@@ -78,6 +80,7 @@ OSMESA_LIB_GLOB = @OSMESA_LIB_GLOB@
 EGL_LIB_GLOB = @EGL_LIB_GLOB@
 GLESv1_CM_LIB_GLOB = @GLESv1_CM_LIB_GLOB@
 GLESv2_LIB_GLOB = @GLESv2_LIB_GLOB@
+VG_LIB_GLOB = @VG_LIB_GLOB@
 
 # Directories to build
 LIB_DIR = @LIB_DIR@
@@ -99,6 +102,7 @@ PROGRAM_DIRS = @PROGRAM_DIRS@
 # Driver specific build vars
 DRI_DIRS = @DRI_DIRS@ 
 EGL_DISPLAYS = @EGL_DISPLAYS@
+EGL_CLIENT_APIS = @EGL_CLIENT_APIS@
 
 # Dependencies
 X11_INCLUDES = @X11_INCLUDES@
@@ -121,6 +125,7 @@ GLW_LIB_DEPS = -L$(TOP)/$(LIB_DIR) @GLW_MESA_DEPS@ \
 APP_LIB_DEPS = $(EXTRA_LIB_PATH) @APP_LIB_DEPS@
 GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv1_LIB_DEPS@
 GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) @GLESv2_LIB_DEPS@
+VG_LIB_DEPS = $(EXTRA_LIB_PATH) @VG_LIB_DEPS@
 
 # DRI dependencies
 DRI_LIB_DEPS = $(EXTRA_LIB_PATH) @DRI_LIB_DEPS@
@@ -169,8 +174,11 @@ GLW_PC_LIB_PRIV = @GLW_PC_LIB_PRIV@
 GLW_PC_CFLAGS = @GLW_PC_CFLAGS@
 OSMESA_PC_REQ = @OSMESA_PC_REQ@
 OSMESA_PC_LIB_PRIV = @OSMESA_PC_LIB_PRIV@
-GLESv1_CM_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
+GLESv1_CM_PC_LIB_PRIV = @GLESv1_CM_PC_LIB_PRIV@
 GLESv2_PC_LIB_PRIV = @GLESv2_PC_LIB_PRIV@
+EGL_PC_REQ_PRIV = @GL_PC_REQ_PRIV@
+EGL_PC_LIB_PRIV = @GL_PC_LIB_PRIV@
+EGL_PC_CFLAGS = @GL_PC_CFLAGS@
 
 EGL_DRI2_CFLAGS = @EGL_DRI2_CFLAGS@
 EGL_DRI2_LIBS = @EGL_DRI2_LIBS@
index e5196848776baec672274699c22cab38edf6fe25..0af77c7d31d10da4cfcf51b214737565568ae107 100644 (file)
@@ -52,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/apple mesa gallium glu glut/glx glew
+SRC_DIRS = glsl mapi/glapi mapi/vgapi glx/apple mesa gallium glu glut/glx glew
 GLU_DIRS = sgi
 DRIVER_DIRS = osmesa
 #DRIVER_DIRS = dri
index dd701de0401b064ddc229596f6094d93bb4fabab..f0395ce7d9eb325b2efda691a97f28ec75a3c674 100644 (file)
@@ -56,6 +56,9 @@ GLEW_LIB = GLEW
 GLW_LIB = GLw
 OSMESA_LIB = OSMesa
 EGL_LIB = EGL
+GLESv1_CM_LIB = GLESv1_CM
+GLESv2_LIB = GLESv2
+VG_LIB = OpenVG
 
 
 # Library names (actual file names)
@@ -66,6 +69,9 @@ GLEW_LIB_NAME = lib$(GLEW_LIB).a
 GLW_LIB_NAME = lib$(GLW_LIB).so
 OSMESA_LIB_NAME = lib$(OSMESA_LIB).so
 EGL_LIB_NAME = lib$(EGL_LIB).so
+GLESv1_CM_LIB_NAME = lib$(GLESv1_CM_LIB).so
+GLESv2_LIB_NAME = lib$(GLESv2_LIB).so
+VG_LIB_NAME = lib$(VG_LIB).so
 
 # globs used to install the lib and all symlinks
 GL_LIB_GLOB = $(GL_LIB_NAME)*
@@ -74,6 +80,9 @@ GLUT_LIB_GLOB = $(GLUT_LIB_NAME)*
 GLW_LIB_GLOB = $(GLW_LIB_NAME)*
 OSMESA_LIB_GLOB = $(OSMESA_LIB_NAME)*
 EGL_LIB_GLOB = $(EGL_LIB_NAME)*
+GLESv1_CM_LIB_GLOB = $(GLESv1_CM_LIB_NAME)*
+GLESv2_LIB_GLOB = $(GLESv2_LIB_NAME)*
+VG_LIB_GLOB = $(VG_LIB_NAME)*
 
 # Optional assembly language optimization files for libGL
 MESA_ASM_SOURCES = 
@@ -86,7 +95,8 @@ MOTIF_CFLAGS = -I/usr/include/Motif1.2
 
 # Directories to build
 LIB_DIR = lib
-SRC_DIRS = glsl mesa gallium egl gallium/winsys gallium/targets glu glut/glx glew glw
+SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
+       gallium egl gallium/winsys gallium/targets glu glut/glx glew glw
 GLU_DIRS = sgi
 DRIVER_DIRS = x11 osmesa
 # Which subdirs under $(TOP)/progs/ to enter:
@@ -98,7 +108,7 @@ EGL_DRIVERS_DIRS = glx
 # Gallium directories and 
 GALLIUM_DIRS = auxiliary drivers state_trackers
 GALLIUM_AUXILIARIES = $(TOP)/src/gallium/auxiliary/libgallium.a
-GALLIUM_DRIVERS_DIRS = softpipe trace identity i915 i965 svga r300 nvfx nv50 failover
+GALLIUM_DRIVERS_DIRS = softpipe trace rbug identity i915 i965 svga r300 nvfx nv50 failover
 GALLIUM_DRIVERS = $(foreach DIR,$(GALLIUM_DRIVERS_DIRS),$(TOP)/src/gallium/drivers/$(DIR)/lib$(DIR).a)
 GALLIUM_WINSYS_DIRS = sw sw/xlib
 GALLIUM_TARGET_DIRS = libgl-xlib
@@ -106,6 +116,7 @@ GALLIUM_STATE_TRACKERS_DIRS = glx vega
 
 # native displays EGL should support
 EGL_DISPLAYS = x11
+EGL_CLIENT_APIS = $(GL_LIB)
 
 # Library dependencies
 #EXTRA_LIB_PATH ?=
@@ -116,6 +127,9 @@ GLU_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lm
 GLUT_LIB_DEPS   = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GLU_LIB) -l$(GL_LIB) -lX11 -lXmu -lXi -lm
 GLW_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GL_LIB) -lXt -lX11
 APP_LIB_DEPS    = $(EXTRA_LIB_PATH) -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm
+GLESv1_CM_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
+GLESv2_LIB_DEPS = $(EXTRA_LIB_PATH) -lpthread
+VG_LIB_DEPS    = $(EXTRA_LIB_PATH) -lpthread
 
 # Program dependencies - specific GL/glut libraries added in Makefiles
 APP_LIB_DEPS = -lm
@@ -153,3 +167,12 @@ GLW_PC_LIB_PRIV =
 GLW_PC_CFLAGS =
 OSMESA_PC_REQ =
 OSMESA_PC_LIB_PRIV =
+GLESv1_CM_PC_REQ_PRIV =
+GLESv1_CM_PC_LIB_PRIV =
+GLESv1_CM_PC_CFLAGS =
+GLESv2_PC_REQ_PRIV =
+GLESv2_PC_LIB_PRIV =
+GLESv2_PC_CFLAGS =
+VG_PC_REQ_PRIV =
+VG_PC_LIB_PRIV =
+VG_PC_CFLAGS =
index 0908dba9e05660b0f9e6c20a1a25c1b4d0de78c7..2b0c41ed6ac79a8594982e4c2483319f9ec08227 100644 (file)
@@ -6,7 +6,7 @@ CONFIG_NAME = linux-cell
 
 
 # Omiting other gallium drivers:
-GALLIUM_DRIVERS_DIRS = cell softpipe trace identity
+GALLIUM_DRIVERS_DIRS = cell softpipe trace rbug identity
 
 
 # Compiler and flags
@@ -37,7 +37,8 @@ CXXFLAGS = $(COMMON_C_CPP_FLAGS)
 
 
 # Omitting glw here:
-SRC_DIRS = glsl mesa gallium gallium/winsys gallium/targets glu glut/glx glew
+SRC_DIRS = glsl mapi/glapi mapi/vgapi mesa \
+       gallium gallium/winsys gallium/targets glu glut/glx glew
 
 # Build no traditional Mesa drivers:
 DRIVER_DIRS =
index 6984aa9b2cda253cf5a93deaf000c7f7c301c6f6..fb65c02277d6f92f8790789416cfe4390a3c84a1 100644 (file)
@@ -6,7 +6,8 @@ CONFIG_NAME = linux-opengl-es
 
 # Directories to build
 LIB_DIR = lib
-SRC_DIRS = egl glsl mesa/es gallium gallium/winsys gallium/targets
+SRC_DIRS = egl glsl mapi/es1api mapi/es2api mesa/es \
+       gallium gallium/winsys gallium/targets
 PROGRAM_DIRS = egl/eglut egl/opengles1 egl/opengles2
 
 # egl st needs this
@@ -22,7 +23,7 @@ GALLIUM_DRIVERS_DIRS = softpipe
 GALLIUM_STATE_TRACKERS_DIRS = es
 
 # build egl_x11_{swrast,i915}.so
-GALLIUM_DRIVERS_DIRS += trace i915
+GALLIUM_DRIVERS_DIRS += trace rbug i915
 GALLIUM_STATE_TRACKERS_DIRS += egl
 GALLIUM_WINSYS_DIRS += drm/intel
 GALLIUM_TARGET_DIRS += egl-swrast egl-i915
index 3015f5fcbb1ac00dd8c775d61b1a1f98320a1cd3..c183171efc9184a1d63c71400c35723c521b2f69 100644 (file)
@@ -17,7 +17,7 @@ CFLAGS += -fno-strict-aliasing
 CXXFLAGS += -fno-strict-aliasing
 
 # Directories
-SRC_DIRS = glsl mesa glu
+SRC_DIRS = mapi/glapi glsl mesa glu
 DRIVER_DIRS = osmesa
 PROGRAM_DIRS = osdemos
 
index 090ca2730999aeb47839a8740e02e9dbab5f0399..161bd577008b273d201cff9b8d280486eb530470 100644 (file)
@@ -20,7 +20,7 @@ OSMESA_LIB_NAME = libOSMesa16.so
 
 
 # Directories
-SRC_DIRS = glsl mesa glu
+SRC_DIRS = mapi/glapi glsl mesa glu
 DRIVER_DIRS = osmesa
 PROGRAM_DIRS = 
 
index 63de7f9a46055b481b2179e5edb817aeaa74dbb6..ff1b189b806091ca9a0def54741eec06b297725b 100644 (file)
@@ -20,7 +20,7 @@ OSMESA_LIB_NAME = libOSMesa32.so
 
 
 # Directories
-SRC_DIRS = glsl mesa glu
+SRC_DIRS = mapi/glapi glsl mesa glu
 DRIVER_DIRS = osmesa
 PROGRAM_DIRS = 
 
index 354c220b5c900f9325efe795bed2d7a68b6f4025..eb3460e9eb6c157b6de97146181166c16f3e78ac 100644 (file)
@@ -4,7 +4,7 @@ AC_PREREQ([2.59])
 
 dnl Versioning - scrape the version from configs/default
 m4_define([mesa_version],
-    [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n'])])
+    [m4_esyscmd([${MAKE-make} -s -f bin/version.mk version | tr -d '\n' | tr -d '\r'])])
 m4_ifval(mesa_version,,
     [m4_fatal([Failed to get the Mesa version from `make -f bin/version.mk version`])])
 
@@ -265,7 +265,7 @@ else
     darwin* )
         LIB_EXTENSION='dylib' ;;
     cygwin* )
-        LIB_EXTENSION='dll' ;;
+        LIB_EXTENSION='dll.a' ;;
     aix* )
         LIB_EXTENSION='a' ;;
     * )
@@ -281,6 +281,7 @@ OSMESA_LIB_NAME='lib$(OSMESA_LIB).'${LIB_EXTENSION}
 EGL_LIB_NAME='lib$(EGL_LIB).'${LIB_EXTENSION}
 GLESv1_CM_LIB_NAME='lib$(GLESv1_CM_LIB).'${LIB_EXTENSION}
 GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
+VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
 
 GL_LIB_GLOB='lib$(GL_LIB).*'${LIB_EXTENSION}'*'
 GLU_LIB_GLOB='lib$(GLU_LIB).*'${LIB_EXTENSION}'*'
@@ -290,6 +291,7 @@ OSMESA_LIB_GLOB='lib$(OSMESA_LIB).*'${LIB_EXTENSION}'*'
 EGL_LIB_GLOB='lib$(EGL_LIB).*'${LIB_EXTENSION}'*'
 GLESv1_CM_LIB_GLOB='lib$(GLESv1_CM_LIB).*'${LIB_EXTENSION}'*'
 GLESv2_LIB_GLOB='lib$(GLESv2_LIB).*'${LIB_EXTENSION}'*'
+VG_LIB_GLOB='lib$(VG_LIB).*'${LIB_EXTENSION}'*'
 
 AC_SUBST([GL_LIB_NAME])
 AC_SUBST([GLU_LIB_NAME])
@@ -299,6 +301,7 @@ AC_SUBST([OSMESA_LIB_NAME])
 AC_SUBST([EGL_LIB_NAME])
 AC_SUBST([GLESv1_CM_LIB_NAME])
 AC_SUBST([GLESv2_LIB_NAME])
+AC_SUBST([VG_LIB_NAME])
 
 AC_SUBST([GL_LIB_GLOB])
 AC_SUBST([GLU_LIB_GLOB])
@@ -308,6 +311,7 @@ AC_SUBST([OSMESA_LIB_GLOB])
 AC_SUBST([EGL_LIB_GLOB])
 AC_SUBST([GLESv1_CM_LIB_GLOB])
 AC_SUBST([GLESv2_LIB_GLOB])
+AC_SUBST([VG_LIB_GLOB])
 
 dnl
 dnl Arch/platform-specific settings
@@ -463,14 +467,14 @@ dnl Driver specific build directories
 dnl
 
 dnl this variable will be prepended to SRC_DIRS and is not exported
-CORE_DIRS="glsl mesa"
+CORE_DIRS="mapi/glapi glsl mesa"
 
 SRC_DIRS="glew"
 GLU_DIRS="sgi"
 GALLIUM_DIRS="auxiliary drivers state_trackers"
 GALLIUM_TARGET_DIRS=""
 GALLIUM_WINSYS_DIRS="sw"
-GALLIUM_DRIVERS_DIRS="softpipe failover trace identity"
+GALLIUM_DRIVERS_DIRS="softpipe failover trace rbug identity"
 GALLIUM_STATE_TRACKERS_DIRS=""
 
 case "$mesa_driver" in
@@ -678,7 +682,10 @@ AC_SUBST([GL_PC_LIB_PRIV])
 AC_SUBST([GL_PC_CFLAGS])
 AC_SUBST([DRI_PC_REQ_PRIV])
 AC_SUBST([GLESv1_LIB_DEPS])
+AC_SUBST([GLESv1_CM_PC_LIB_PRIV])
 AC_SUBST([GLESv2_LIB_DEPS])
+AC_SUBST([GLESv2_PC_LIB_PRIV])
+
 
 dnl
 dnl More X11 setup
@@ -742,11 +749,15 @@ AC_ARG_ENABLE([gles2],
         [enable support for OpenGL ES 2.x API @<:@default=no@:>@])],
     [enable_gles2="$enableval"],
     [enable_gles2=no])
+AC_ARG_ENABLE([gles-overlay],
+    [AS_HELP_STRING([--enable-gles-overlay],
+        [build separate OpenGL ES only libraries @<:@default=no@:>@])],
+    [enable_gles_overlay="$enableval"],
+    [enable_gles_overlay=no])
 
 API_DEFINES=""
 APIS=""
-ES1_SOURCES=""
-ES2_SOURCES=""
+GLES_OVERLAY=0
 if test "x$enable_opengl" = xno; then
     API_DEFINES="$API_DEFINES -DFEATURE_GL=0"
 else
@@ -756,20 +767,21 @@ fi
 if test "x$enable_gles1" = xyes; then
     API_DEFINES="$API_DEFINES -DFEATURE_ES1=1"
     APIS="$APIS es1"
-    ES1_SOURCES='$(ES1_SOURCES)'
 fi
 if test "x$enable_gles2" = xyes; then
     API_DEFINES="$API_DEFINES -DFEATURE_ES2=1"
     APIS="$APIS es2"
-    ES2_SOURCES='$(ES2_SOURCES)'
 fi
-if test "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
-    SRC_DIRS="$SRC_DIRS gles"
+if test "x$enable_gles_overlay" = xyes -o \
+    "x$enable_gles1" = xyes -o "x$enable_gles2" = xyes; then
+    CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
+    if test "x$enable_gles_overlay" = xyes; then
+        GLES_OVERLAY=1
+    fi
 fi
 AC_SUBST([API_DEFINES])
 AC_SUBST([APIS])
-AC_SUBST([ES1_SOURCES])
-AC_SUBST([ES2_SOURCES])
+AC_SUBST([GLES_OVERLAY])
 
 dnl If $with_dri_drivers is yes, directories will be added through
 dnl platform checks
@@ -1251,6 +1263,12 @@ AC_SUBST([LLVM_LIBS])
 AC_SUBST([LLVM_LDFLAGS])
 AC_SUBST([LLVM_VERSION])
 
+VG_LIB_DEPS=""
+EGL_CLIENT_APIS='$(GL_LIB)'
+if test "x$enable_gles_overlay" = xyes; then
+    EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
+fi
+
 dnl
 dnl Gallium state trackers configuration
 dnl
@@ -1287,11 +1305,9 @@ yes)
     ;;
 *)
     # verify the requested state tracker exist
-    state_trackers=`IFS=', '; echo $with_state_trackers`
-    for tracker in $state_trackers; do
-        test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
-            AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
-
+    state_trackers=""
+    _state_trackers=`IFS=', '; echo $with_state_trackers`
+    for tracker in $_state_trackers; do
         case "$tracker" in
         dri)
             if test "x$mesa_driver" != xdri; then
@@ -1311,15 +1327,45 @@ yes)
             HAVE_ST_XORG="yes"
             ;;
         es)
-            # mesa/es is required to build es state tracker
-            CORE_DIRS="$CORE_DIRS mesa/es"
+            AC_MSG_WARN([state tracker 'es' has been replaced by --enable-gles-overlay])
+
+            if test "x$enable_gles_overlay" != xyes; then
+                if test "x$enable_gles1" != xyes -a "x$enable_gles2" != xyes; then
+                    CORE_DIRS="mapi/es1api mapi/es2api $CORE_DIRS"
+                fi
+                GLES_OVERLAY=1
+                EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(GLESv1_CM_LIB) $(GLESv2_LIB)'
+            fi
+           tracker=""
+            ;;
+        vega)
+            CORE_DIRS="$CORE_DIRS mapi/vgapi"
+            VG_LIB_DEPS="$VG_LIB_DEPS -lpthread"
+            EGL_CLIENT_APIS="$EGL_CLIENT_APIS "'$(VG_LIB)'
             ;;
         esac
+
+       if test -n "$tracker"; then
+            test -d "$srcdir/src/gallium/state_trackers/$tracker" || \
+                AC_MSG_ERROR([state tracker '$tracker' doesn't exist])
+            if test -n "$state_trackers"; then
+                state_trackers="$state_trackers $tracker"
+            else
+                state_trackers="$tracker"
+            fi
+        fi
     done
     GALLIUM_STATE_TRACKERS_DIRS="$state_trackers"
     ;;
 esac
 
+AC_SUBST([VG_LIB_DEPS])
+AC_SUBST([EGL_CLIENT_APIS])
+
+if test "x$HAVE_ST_EGL" = xyes; then
+       GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS egl-apis"
+fi
+
 if test "x$HAVE_ST_XORG" = xyes; then
     PKG_CHECK_MODULES(XEXT, [xextproto >= 7.0.99.1],
         HAVE_XEXTPROTO_71="yes"; DEFINES="$DEFINES -DHAVE_XEXTPROTO_71",
@@ -1404,7 +1450,7 @@ if test "x$enable_gallium_llvm" = xyes; then
        fi
        LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
        GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS llvmpipe"
-       DEFINES="$DEFINES -DMESA_LLVM -D__STDC_CONSTANT_MACROS"
+       DEFINES="$DEFINES -DGALLIUM_LLVMPIPE -D__STDC_CONSTANT_MACROS"
        MESA_LLVM=1
     else
        MESA_LLVM=0
@@ -1575,6 +1621,9 @@ if echo "$SRC_DIRS" | grep 'gallium' >/dev/null 2>&1; then
     echo "        Winsys dirs:     $GALLIUM_WINSYS_DIRS"
     echo "        Driver dirs:     $GALLIUM_DRIVERS_DIRS"
     echo "        Trackers dirs:   $GALLIUM_STATE_TRACKERS_DIRS"
+    if test "x$HAVE_ST_EGL" = xyes; then
+        echo "        EGL client APIs: $EGL_CLIENT_APIS"
+    fi
 else
     echo "        Gallium:         no"
 fi
@@ -1585,6 +1634,7 @@ echo "        Shared libs:     $enable_shared"
 echo "        Static libs:     $enable_static"
 if test "$enable_egl" = yes; then
     echo "        EGL:             $EGL_DRIVERS_DIRS"
+    echo "        EGL displays:    $EGL_DISPLAYS"
 else
     echo "        EGL:             no"
 fi
index 386619e2f7c5fdf02d0c7a0ec3f5f6ab9195ea70..7659a0c73e896241e0e4b162c8f18a5d7278fabd 100644 (file)
@@ -14,7 +14,7 @@ GL 3.0:
 
 GLSL changes (GL_EXT_gpu_shader4, etc)                not started
 Conditional rendering (GL_NV_conditional_render)      DONE (swrast & softpipe)
-Map buffer subranges (GL_APPLE_flush_buffer_range)    not started
+Map buffer subranges (GL_ARB_map_buffer_range)        DONE
 Float textures, renderbuffers                         some infrastructure done
  (incl. GL_EXT_packed_float, GL_EXT_shared_exponent)
 Framebuffer objects (GL_EXT_framebuffer_object)       DONE
@@ -27,14 +27,14 @@ Per-buffer blend and masks (GL_EXT_draw_buffers2)     DONE
 GL_EXT_texture_compression_rgtc                       not started
 Red and red/green texture formats                     Ian?
 Transform feedback (GL_EXT_transform_feedback)        ~50% done
+   glBindFragDataLocation, glGetFragDataLocation,
+   glBindBufferRange, glBindBufferBase commands
 Vertex array objects (GL_APPLE_vertex_array_object)   DONE
 sRGB framebuffer format (GL_EXT_framebuffer_sRGB)     not started
 glClearBuffer commands                                DONE, except for dispatch
 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          DONE
 
 
 GL 3.1:
@@ -65,6 +65,37 @@ Frag depth clamp (GL_ARB_depth_clamp)                 DONE
 Fence objects (GL_ARB_sync)                           DONE
 
 
+GL 3.3:
+
+GLSL 3.30                                             not started
+GL_ARB_blend_func_extended                            not started
+GL_ARB_explicit_attrib_location                       not started
+GL_ARB_occlusion_query2                               not started
+GL_ARB_sampler_objects                                not started
+GL_ARB_texture_rgb10_a2ui                             not started
+GL_ARB_texture_swizzle                                DONE (same as EXT version)
+GL_ARB_timer_query                                    DONE (only Xlib sw driver)
+GL_ARB_instanced_arrays                               not started
+GL_ARB_vertex_type_2_10_10_10_rev                     not started
+
+
+GL 4.0:
+
+GLSL 4.0                                             not started
+GL_ARB_texture_query_lod                             not started
+GL_ARB_draw_buffers_blend                            not started
+GL_ARB_draw_indirect                                 not started
+GL_ARB_gpu_shader_fp64                               not started
+GL_ARB_sample_shading                                not started
+GL_ARB_shader_subroutine                             not started
+GL_ARB_tessellation_shader                           not started
+GL_ARB_texture_buffer_object_rgb32                   not started
+GL_ARB_texture_cube_map_array                        not started
+GL_ARB_texture_gather                                not started
+GL_ARB_transform_feedback2                           not started
+
+
+
 
 More info about these features and the work involved can be found at
 http://dri.freedesktop.org/wiki/MissingFunctionality
index e960309fc475957f7202030cd4bec314649e95b0..ad3b850f2ad2e9be87d6d81f965f525675639df7 100644 (file)
@@ -32,13 +32,13 @@ cards.</p>
 the Gallium driver for your hardware.  For example</p>
 
 <pre>
-  $ ./configure --with-state-trackers=egl,es,vega --enable-gallium-{swrast,intel}
+  $ ./configure --enable-gles-overlay --with-state-trackers=egl,vega --enable-gallium-{swrast,intel}
 </pre>
 
-<p>The main library will be enabled by default.  The <code>egl</code> state
+<p>The main library and OpenGL is enabled by default.  The first option enables
+<a href="opengles.html">OpenGL ES 1.x and 2.x</a>.  The <code>egl</code> state
 tracker is needed by a number of EGL drivers.  EGL drivers will be covered
-later.  The <a href="opengles.html">es state tracker</a> provides OpenGL ES 1.x
-and 2.x and the <a href="openvg.html">vega state tracker</a> provides OpenVG
+later.  The <a href="openvg.html">vega state tracker</a> provides OpenVG
 1.x.</p>
 </li>
 
@@ -46,8 +46,8 @@ and 2.x and the <a href="openvg.html">vega state tracker</a> provides OpenVG
 </ol>
 
 <p>In the given example, it will build and install <code>libEGL</code>,
-<code>libGLESv1_CM</code>, <code>libGLESv2</code>, <code>libOpenVG</code>, and
-one or more EGL drivers.</p>
+<code>libGL</code>, <code>libGLESv1_CM</code>, <code>libGLESv2</code>,
+<code>libOpenVG</code>, and one or more EGL drivers.</p>
 
 <h3>Configure Options</h3>
 
@@ -83,9 +83,26 @@ bare KMS (kernel modesetting).</p>
 <li><code>--with-state-trackers</code>
 
 <p>The argument is a comma separated string.  It is usually used to specify the
-rendering APIs, like OpenGL ES or OpenVG, to build.  But it should be noted
-that a number of EGL drivers depend on the <code>egl</code> state tracker.
-They will <em>not</em> be built without the <code>egl</code> state tracker.</p>
+rendering APIs, such as OpenVG, to build.  But it should be noted that a number
+of EGL drivers depend on the <code>egl</code> state tracker.  They will
+<em>not</em> be built without the <code>egl</code> state tracker.</p>
+
+</li>
+
+<li><code>--enable-gles-overlay</code>
+
+<p>OpenGL and OpenGL ES are not controlled by
+<code>--with-state-trackers</code>.  OpenGL is always built.  To build OpenGL
+ES, this option must be explicitly given.</p>
+
+</li>
+
+<li><code>--enable-gles1</code> and <code>--enable-gles2</code>
+
+<p>Unlike <code>--enable-gles-overlay</code>, which builds one library for each
+rendering API, these options enable OpenGL ES support in OpenGL.  The result is
+one big library that supports multiple APIs.  This is used by DRI drivers and
+<code>egl_dri2</code> EGL driver.
 
 </li>
 
@@ -99,25 +116,17 @@ software rendering automatically.</p>
 </li>
 </ul>
 
-<h3>OpenGL</h3>
-
-<p>The OpenGL state tracker is not built in the above example.  It should be
-noted that the classic <code>libGL</code> is not a state tracker and cannot be
-used with EGL (unless the EGL driver in use is <code>egl_glx</code>).  To build
-the OpenGL state tracker, one may append <code>glx</code> to
-<code>--with-state-trackers</code> and manually build
-<code>src/gallium/targets/libgl-xlib/</code>.</p>
-
 <h2>Use EGL</h2>
 
-<p>The demos for OpenGL ES and OpenVG can be found in <code>progs/es1/</code>,
-<code>progs/es2/</code> and <code>progs/openvg/</code>.  You can use them to
-test your build.  For example,</p>
+<p>There are demos for the client APIs supported by EGL.  They can be found in
+<code>progs/egl/</code>, You can use them to test your build.  For example,</p>
 
 <pre>
-  $ cd progs/es1/xegl
+  $ cd progs/egl/eglut
+  $ make
+  $ cd ../opengles1
   $ make
-  $ ./torus
+  $ ./torus_x11
 </pre>
 
 <h3>Environment Variables</h3>
index fc41e6771c132c14835f92774d5246f88f5cc6af..63cc1146a2edfe91420269e51be105daf70bd7ac 100644 (file)
@@ -1,68 +1,69 @@
 <html>
 
-<title>OpenGL ES State Trackers</title>
+<title>OpenGL ES</title>
 
 <head><link rel="stylesheet" type="text/css" href="mesa.css"></head>
 
 <body>
 
-<h1>OpenGL ES State Trackers</h1>
+<h1>OpenGL ES</h1>
 
-<p>The current version of the OpenGL ES state trackers implement OpenGL ES 1.1 and OpenGL ES 2.0.
-More informations about OpenGL ES can be found at
-<a href="http://www.khronos.org/opengles/" target="_parent">
-http://www.khronos.org/opengles/</a>.</p>
-
-<p>The OpenGL ES state trackers depends on the Gallium architecture and a
-working EGL implementation.  Please refer to <a href="egl.html">Mesa EGL</a>
-for more information about EGL.</p>
+<p>Mesa implements OpenGL ES 1.1 and OpenGL ES 2.0.  More informations about
+OpenGL ES can be found at <a href="http://www.khronos.org/opengles/"
+target="_parent"> http://www.khronos.org/opengles/</a>.</p>
 
+<p>OpenGL ES depends on a working EGL implementation.  Please refer to
+<a href="egl.html">Mesa EGL</a> for more information about EGL.</p>
 
 <h2>Build the Libraries</h2>
 <ol>
-<li>Run <code>configure</code> with <code>--with-state-trackers=egl,es</code> and enable the Gallium driver for your hardware.</li>
+<li>Run <code>configure</code> with <code>--enable-gles-overlay</code> and enable the Gallium driver for your hardware.</li>
+<li>Build and install Mesa as usual.</li>
+</ol>
+
+Alternatively, if XCB-DRI2 is installed on the system, one can use
+<code>egl_dri2</code> EGL driver with OpenGL|ES-enabled DRI drivers
+
+<ol>
+<li>Run <code>configure</code> with <code>--enable-gles1 --enable-gles2</code>.</li>
 <li>Build and install Mesa as usual.</li>
 </ol>
 
-<p>It will install libGLESv1_CM, libGLESv2, libEGL, and one or more EGL drivers for your hardware.</p>
+<p>Both methods will install libGLESv1_CM, libGLESv2, libEGL, and one or more
+EGL drivers for your hardware.</p>
+
 <h2>Run the Demos</h2>
 
-<p>There are some demos in <code>progs/es1/</code> and <code>progs/es2/</code>.  You can use them to test your build.  For example,</p>
+<p>There are some demos in <code>progs/egl/</code>.  You can use them to test
+your build.  For example,</p>
 
 <pre>
-  $ cd progs/es1/xegl
+  $ cd progs/egl/eglut
+  $ make
+  $ cd ../opengles1
   $ make
-  $ ./torus
+  $ ./torus_x11
 </pre>
 
 <h2>Developers</h2>
 
-<p>The core of OpenGL ES state trackers is the ES overlay.  It is located in
-<code>src/mesa/es/</code>.</p>
-
-<h3>Structure</h3>
+<h3>Internal Libraries</h3>
 
-<p>The ES overlay uses as much code as possible from Mesa.  It has its own glapi XMLs to describe the APIs of OpenGL ES.  The ES overlay can be built parallelly with Mesa, and they will give</p>
-
-<table border="1">
-       <tr><td>Library Name</td><td>Usage</td><td>Source</td></tr>
-       <tr><td>libmesagallium.a</td><td>OpenGL state tracker</td><td>Mesa</td></tr>
-       <tr><td>libes1gallium.a</td><td>OpenGL ES 1.x state tracker</td><td>ES overlay</td></tr>
-       <tr><td>libes2gallium.a</td><td>OpenGL ES 2.x state tracker</td><td>ES overlay</td></tr>
-       <tr><td>libglapi.a</td><td>OpenGL API</td><td>Mesa</td></tr>
-       <tr><td>libes1api.a</td><td>OpenGL ES 1.x API</td><td>ES overlay</td></tr>
-       <tr><td>libes2api.a</td><td>OpenGL ES 2.x API</td><td>ES overlay</td></tr>
+<table border="1" style="text-align: center;">
+       <tr><td>Library Name</td><td>Used By</td><td>Enabled</td><td>OpenGL</td><td>OpenGL ES 1.x</td><td>OpenGL ES 2.x</td></tr>
+       <tr><td><code>libmesa.a</td><td>Classic DRI drivers</td><td>y</td><td>y</td><td>--enable-gles1</td><td>--enable-gles2</td></tr>
+       <tr><td><code>libmesagallium.a</td><td>Gallium EGL and DRI drivers</td><td>y</td><td>y</td><td>--enable-gles1</td><td>--enable-gles2</td></tr>
+       <tr><td><code>libes1gallium.a</td><td>Gallium EGL drivers</td><td>--enable-gles-overlay</td><td>n</td><td>y</td><td>n</td></tr>
+       <tr><td><code>libes2gallium.a</td><td>Gallium EGL drivers</td><td>--enable-gles-overlay</td><td>n</td><td>n</td><td>y</td></tr>
 </table>
 
-<p>The OpenGL ES state trackers and APIs are then used by <code>src/gallium/state_trackers/es/</code> to create the final libraries.</p>
-
 <h3>Dispatch Table</h3>
 
-<p>The ES overlay uses an additional indirection when dispatching fucntions</p>
+<p>OpenGL ES has an additional indirection when dispatching fucntions</p>
 
 <pre>
   Mesa:       glFoo() --&gt; _mesa_Foo()
-  ES overlay: glFoo() --&gt; _es_Foo() --&gt; _mesa_Foo()
+  OpenGL ES:  glFoo() --&gt; _es_Foo() --&gt; _mesa_Foo()
 </pre>
 
 <p>The indirection serves several purposes</p>
@@ -73,7 +74,7 @@ for more information about EGL.</p>
 <li>When a function is not available in Mesa, or accepts arguments that are not available in OpenGL, it provides its own implementation.</li>
 </ul>
 
-<p>Other than the last case, the ES overlay uses <code>APIspec.xml</code> to generate functions to check and/or converts the arguments.</p>
+<p>Other than the last case, OpenGL ES uses <code>APIspec.xml</code> to generate functions to check and/or converts the arguments.</p>
 
 </body>
 </html>
index 2194b651b73fabd00b76dd3cf2bb0c6c1ee7bd07..e1b0f2d27918da3307dab6dfef429c6365449bf8 100644 (file)
@@ -8,7 +8,7 @@
 
 <body bgcolor="#eeeeee">
 
-<H1>Mesa 7.8.2 Release Notes / April, 5, 2010</H1>
+<H1>Mesa 7.8.2 Release Notes / (date tbd)</H1>
 
 <p>
 Mesa 7.8.2 is a bug fix release which fixes bugs found since the 7.8.1 release.
@@ -43,6 +43,7 @@ tbd
 <h2>Bug fixes</h2>
 <ul>
 <li>Fixed Gallium glDrawPixels(GL_DEPTH_COMPONENT).
+<li>Fixed Gallium Cell driver to buildable, runable state
 </ul>
 
 
index a9e598d6dd6d3f0299d37e15763577e5b5a0d8d0..e9f5a49b488cbfc566120bbca9d5b19615189290 100644 (file)
@@ -227,6 +227,25 @@ typedef EGLBoolean (EGLAPIENTRYP PFNEGLCOPYCONTEXTMESA) (EGLDisplay dpy, EGLCont
 #define EGL_CONTEXT_PRIORITY_LOW_IMG           0x3103
 #endif
 
+
+#ifndef EGL_NOK_swap_region
+#define EGL_NOK_swap_region 1
+
+#ifdef EGL_EGLEXT_PROTOTYPES
+EGLAPI EGLBoolean EGLAPIENTRY eglSwapBuffersRegionNOK(EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
+#endif
+
+typedef EGLBoolean (EGLAPIENTRYP PFNEGLSWAPBUFFERSREGIONNOK) (EGLDisplay dpy, EGLSurface surface, EGLint numRects, const EGLint* rects);
+#endif
+
+
+#ifndef EGL_NOK_texture_from_pixmap
+#define EGL_NOK_texture_from_pixmap 1
+
+#define EGL_Y_INVERTED_NOK                     0x307F
+#endif /* EGL_NOK_texture_from_pixmap */
+
+
 #ifdef __cplusplus
 }
 #endif
index 04b8f7ed21fef731d4a4373b1dbb517874d57903..189270e64d866719604ce57f0eabd89162d21626 100644 (file)
@@ -197,7 +197,14 @@ typedef _W64 int ptrdiff_t;
  */
 
 #include <stddef.h>
+
+/* SGI MIPSPro doesn't like stdint.h in C++ mode */
+
+#if defined(__sgi) && !defined(__GNUC__)
+#include <inttypes.h>
+#else
 #include <stdint.h>
+#endif
 
 #define GLEW_APIENTRY_DEFINED
 #define APIENTRY
@@ -1459,9 +1466,9 @@ typedef void (GLAPIENTRY * PFNGLFOGCOORDFVPROC) (const GLfloat *coord);
 typedef void (GLAPIENTRY * PFNGLMULTIDRAWARRAYSPROC) (GLenum mode, GLint *first, GLsizei *count, GLsizei primcount);
 typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSPROC) (GLenum mode, GLsizei *count, GLenum type, const GLvoid **indices, GLsizei primcount);
 typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFPROC) (GLenum pname, GLfloat param);
-typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, GLfloat *params);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERFVPROC) (GLenum pname, const GLfloat *params);
 typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIPROC) (GLenum pname, GLint param);
-typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, GLint *params);
+typedef void (GLAPIENTRY * PFNGLPOINTPARAMETERIVPROC) (GLenum pname, const GLint *params);
 typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BPROC) (GLbyte red, GLbyte green, GLbyte blue);
 typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3BVPROC) (const GLbyte *v);
 typedef void (GLAPIENTRY * PFNGLSECONDARYCOLOR3DPROC) (GLdouble red, GLdouble green, GLdouble blue);
@@ -2248,6 +2255,9 @@ typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBIPOINTERPROC) (GLuint, GLint, GLenum
 #define GL_SIGNED_NORMALIZED 0x8F9C
 #define GL_PRIMITIVE_RESTART 0x8F9D
 #define GL_PRIMITIVE_RESTART_INDEX 0x8F9E
+#define GL_BUFFER_ACCESS_FLAGS 0x911F
+#define GL_BUFFER_MAP_LENGTH 0x9120
+#define GL_BUFFER_MAP_OFFSET 0x9121
 
 typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINSTANCEDPROC) (GLenum, GLint, GLsizei, GLsizei);
 typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDPROC) (GLenum, GLsizei, GLenum, const GLvoid*, GLsizei);
@@ -2303,6 +2313,63 @@ typedef void (GLAPIENTRY * PFNGLGETINTEGER64I_VPROC) (GLenum, GLuint, GLint64 *)
 
 #endif /* GL_VERSION_3_2 */
 
+/* ----------------------------- GL_VERSION_3_3 ---------------------------- */
+
+#ifndef GL_VERSION_3_3
+#define GL_VERSION_3_3 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_DIVISOR 0x88FE
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+#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
+#define GL_RGB10_A2UI 0x906F
+
+#define GLEW_VERSION_3_3 GLEW_GET_VAR(__GLEW_VERSION_3_3)
+
+#endif /* GL_VERSION_3_3 */
+
+/* ----------------------------- GL_VERSION_4_0 ---------------------------- */
+
+#ifndef GL_VERSION_4_0
+#define GL_VERSION_4_0 1
+
+#define GL_GEOMETRY_SHADER_INVOCATIONS 0x887F
+#define GL_SAMPLE_SHADING 0x8C36
+#define GL_MIN_SAMPLE_SHADING_VALUE 0x8C37
+#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_MIN_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5E
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_OFFSET 0x8E5F
+#define GL_MAX_PROGRAM_TEXTURE_GATHER_COMPONENTS 0x8F9F
+#define GL_TEXTURE_CUBE_MAP_ARRAY 0x9009
+#define GL_TEXTURE_BINDING_CUBE_MAP_ARRAY 0x900A
+#define GL_PROXY_TEXTURE_CUBE_MAP_ARRAY 0x900B
+#define GL_SAMPLER_CUBE_MAP_ARRAY 0x900C
+#define GL_SAMPLER_CUBE_MAP_ARRAY_SHADOW 0x900D
+#define GL_INT_SAMPLER_CUBE_MAP_ARRAY 0x900E
+#define GL_UNSIGNED_INT_SAMPLER_CUBE_MAP_ARRAY 0x900F
+
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONSEPARATEIPROC) (GLuint buf, GLenum modeRGB, GLenum modeAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDEQUATIONIPROC) (GLuint buf, GLenum mode);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCSEPARATEIPROC) (GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
+typedef void (GLAPIENTRY * PFNGLBLENDFUNCIPROC) (GLuint buf, GLenum src, GLenum dst);
+typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGPROC) (GLclampf value);
+
+#define glBlendEquationSeparatei GLEW_GET_FUN(__glewBlendEquationSeparatei)
+#define glBlendEquationi GLEW_GET_FUN(__glewBlendEquationi)
+#define glBlendFuncSeparatei GLEW_GET_FUN(__glewBlendFuncSeparatei)
+#define glBlendFunci GLEW_GET_FUN(__glewBlendFunci)
+#define glMinSampleShading GLEW_GET_FUN(__glewMinSampleShading)
+
+#define GLEW_VERSION_4_0 GLEW_GET_VAR(__GLEW_VERSION_4_0)
+
+#endif /* GL_VERSION_4_0 */
+
 /* -------------------------- GL_3DFX_multisample -------------------------- */
 
 #ifndef GL_3DFX_multisample
@@ -2342,6 +2409,15 @@ typedef void (GLAPIENTRY * PFNGLTBUFFERMASK3DFXPROC) (GLuint mask);
 
 #endif /* GL_3DFX_texture_compression_FXT1 */
 
+/* ----------------------- GL_AMD_conservative_depth ----------------------- */
+
+#ifndef GL_AMD_conservative_depth
+#define GL_AMD_conservative_depth 1
+
+#define GLEW_AMD_conservative_depth GLEW_GET_VAR(__GLEW_AMD_conservative_depth)
+
+#endif /* GL_AMD_conservative_depth */
+
 /* ----------------------- GL_AMD_draw_buffers_blend ----------------------- */
 
 #ifndef GL_AMD_draw_buffers_blend
@@ -2404,6 +2480,26 @@ typedef void (GLAPIENTRY * PFNGLSELECTPERFMONITORCOUNTERSAMDPROC) (GLuint monito
 
 #endif /* GL_AMD_performance_monitor */
 
+/* ------------------ GL_AMD_seamless_cubemap_per_texture ------------------ */
+
+#ifndef GL_AMD_seamless_cubemap_per_texture
+#define GL_AMD_seamless_cubemap_per_texture 1
+
+#define GL_TEXTURE_CUBE_MAP_SEAMLESS_ARB 0x884F
+
+#define GLEW_AMD_seamless_cubemap_per_texture GLEW_GET_VAR(__GLEW_AMD_seamless_cubemap_per_texture)
+
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+
+/* ---------------------- GL_AMD_shader_stencil_export --------------------- */
+
+#ifndef GL_AMD_shader_stencil_export
+#define GL_AMD_shader_stencil_export 1
+
+#define GLEW_AMD_shader_stencil_export GLEW_GET_VAR(__GLEW_AMD_shader_stencil_export)
+
+#endif /* GL_AMD_shader_stencil_export */
+
 /* ------------------------ GL_AMD_texture_texture4 ------------------------ */
 
 #ifndef GL_AMD_texture_texture4
@@ -2463,9 +2559,9 @@ typedef void (GLAPIENTRY * PFNGLTESSELLATIONMODEAMDPROC) (GLenum mode);
 #ifndef GL_APPLE_element_array
 #define GL_APPLE_element_array 1
 
-#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
 
 typedef void (GLAPIENTRY * PFNGLDRAWELEMENTARRAYAPPLEPROC) (GLenum mode, GLint first, GLsizei count);
 typedef void (GLAPIENTRY * PFNGLDRAWRANGEELEMENTARRAYAPPLEPROC) (GLenum mode, GLuint start, GLuint end, GLint first, GLsizei count);
@@ -2690,6 +2786,7 @@ typedef GLboolean (GLAPIENTRY * PFNGLISVERTEXARRAYAPPLEPROC) (GLuint array);
 #define GL_VERTEX_ARRAY_STORAGE_HINT_APPLE 0x851F
 #define GL_MAX_VERTEX_ARRAY_RANGE_ELEMENT_APPLE 0x8520
 #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
 
@@ -2754,6 +2851,26 @@ typedef void (GLAPIENTRY * PFNGLMAPVERTEXATTRIB2FAPPLEPROC) (GLuint index, GLuin
 
 #endif /* GL_APPLE_ycbcr_422 */
 
+/* ----------------------- GL_ARB_blend_func_extended ---------------------- */
+
+#ifndef GL_ARB_blend_func_extended
+#define GL_ARB_blend_func_extended 1
+
+#define GL_SRC1_COLOR 0x88F9
+#define GL_ONE_MINUS_SRC1_COLOR 0x88FA
+#define GL_ONE_MINUS_SRC1_ALPHA 0x88FB
+#define GL_MAX_DUAL_SOURCE_DRAW_BUFFERS 0x88FC
+
+typedef void (GLAPIENTRY * PFNGLBINDFRAGDATALOCATIONINDEXEDPROC) (GLuint program, GLuint colorNumber, GLuint index, const char * name);
+typedef GLint (GLAPIENTRY * PFNGLGETFRAGDATAINDEXPROC) (GLuint program, const char * name);
+
+#define glBindFragDataLocationIndexed GLEW_GET_FUN(__glewBindFragDataLocationIndexed)
+#define glGetFragDataIndex GLEW_GET_FUN(__glewGetFragDataIndex)
+
+#define GLEW_ARB_blend_func_extended GLEW_GET_VAR(__GLEW_ARB_blend_func_extended)
+
+#endif /* GL_ARB_blend_func_extended */
+
 /* ----------------------- GL_ARB_color_buffer_float ----------------------- */
 
 #ifndef GL_ARB_color_buffer_float
@@ -2906,6 +3023,24 @@ typedef void (GLAPIENTRY * PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC) (GLenum mode, G
 
 #endif /* GL_ARB_draw_elements_base_vertex */
 
+/* -------------------------- GL_ARB_draw_indirect ------------------------- */
+
+#ifndef GL_ARB_draw_indirect
+#define GL_ARB_draw_indirect 1
+
+#define GL_DRAW_INDIRECT_BUFFER 0x8F3F
+#define GL_DRAW_INDIRECT_BUFFER_BINDING 0x8F43
+
+typedef void (GLAPIENTRY * PFNGLDRAWARRAYSINDIRECTPROC) (GLenum mode, const void* indirect);
+typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINDIRECTPROC) (GLenum mode, GLenum type, const void* indirect);
+
+#define glDrawArraysIndirect GLEW_GET_FUN(__glewDrawArraysIndirect)
+#define glDrawElementsIndirect GLEW_GET_FUN(__glewDrawElementsIndirect)
+
+#define GLEW_ARB_draw_indirect GLEW_GET_VAR(__GLEW_ARB_draw_indirect)
+
+#endif /* GL_ARB_draw_indirect */
+
 /* ------------------------- GL_ARB_draw_instanced ------------------------- */
 
 #ifndef GL_ARB_draw_instanced
@@ -2921,6 +3056,15 @@ typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSINSTANCEDARBPROC) (GLenum mode, GLsi
 
 #endif /* GL_ARB_draw_instanced */
 
+/* -------------------- GL_ARB_explicit_attrib_location -------------------- */
+
+#ifndef GL_ARB_explicit_attrib_location
+#define GL_ARB_explicit_attrib_location 1
+
+#define GLEW_ARB_explicit_attrib_location GLEW_GET_VAR(__GLEW_ARB_explicit_attrib_location)
+
+#endif /* GL_ARB_explicit_attrib_location */
+
 /* ------------------- GL_ARB_fragment_coord_conventions ------------------- */
 
 #ifndef GL_ARB_fragment_coord_conventions
@@ -3153,6 +3297,31 @@ typedef void (GLAPIENTRY * PFNGLPROGRAMPARAMETERIARBPROC) (GLuint program, GLenu
 
 #endif /* GL_ARB_geometry_shader4 */
 
+/* --------------------------- GL_ARB_gpu_shader5 -------------------------- */
+
+#ifndef GL_ARB_gpu_shader5
+#define GL_ARB_gpu_shader5 1
+
+#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
+
+#define GLEW_ARB_gpu_shader5 GLEW_GET_VAR(__GLEW_ARB_gpu_shader5)
+
+#endif /* GL_ARB_gpu_shader5 */
+
+/* ------------------------- GL_ARB_gpu_shader_fp64 ------------------------ */
+
+#ifndef GL_ARB_gpu_shader_fp64
+#define GL_ARB_gpu_shader_fp64 1
+
+#define GLEW_ARB_gpu_shader_fp64 GLEW_GET_VAR(__GLEW_ARB_gpu_shader_fp64)
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
 /* ------------------------ GL_ARB_half_float_pixel ------------------------ */
 
 #ifndef GL_ARB_half_float_pixel
@@ -3568,6 +3737,17 @@ typedef GLboolean (GLAPIENTRY * PFNGLISQUERYARBPROC) (GLuint id);
 
 #endif /* GL_ARB_occlusion_query */
 
+/* ------------------------ GL_ARB_occlusion_query2 ------------------------ */
+
+#ifndef GL_ARB_occlusion_query2
+#define GL_ARB_occlusion_query2 1
+
+#define GL_ANY_SAMPLES_PASSED 0x8C2F
+
+#define GLEW_ARB_occlusion_query2 GLEW_GET_VAR(__GLEW_ARB_occlusion_query2)
+
+#endif /* GL_ARB_occlusion_query2 */
+
 /* ----------------------- GL_ARB_pixel_buffer_object ---------------------- */
 
 #ifndef GL_ARB_pixel_buffer_object
@@ -3648,6 +3828,47 @@ typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value);
 
 #endif /* GL_ARB_sample_shading */
 
+/* ------------------------- GL_ARB_sampler_objects ------------------------ */
+
+#ifndef GL_ARB_sampler_objects
+#define GL_ARB_sampler_objects 1
+
+#define GL_SAMPLER_BINDING 0x8919
+
+typedef void (GLAPIENTRY * PFNGLBINDSAMPLERPROC) (GLuint unit, GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLDELETESAMPLERSPROC) (GLsizei count, const GLuint * samplers);
+typedef void (GLAPIENTRY * PFNGLGENSAMPLERSPROC) (GLsizei count, GLuint* samplers);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLGETSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, GLint* params);
+typedef GLboolean (GLAPIENTRY * PFNGLISSAMPLERPROC) (GLuint sampler);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIIVPROC) (GLuint sampler, GLenum pname, const GLint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIUIVPROC) (GLuint sampler, GLenum pname, const GLuint* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFPROC) (GLuint sampler, GLenum pname, GLfloat param);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERFVPROC) (GLuint sampler, GLenum pname, const GLfloat* params);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIPROC) (GLuint sampler, GLenum pname, GLint param);
+typedef void (GLAPIENTRY * PFNGLSAMPLERPARAMETERIVPROC) (GLuint sampler, GLenum pname, const GLint* params);
+
+#define glBindSampler GLEW_GET_FUN(__glewBindSampler)
+#define glDeleteSamplers GLEW_GET_FUN(__glewDeleteSamplers)
+#define glGenSamplers GLEW_GET_FUN(__glewGenSamplers)
+#define glGetSamplerParameterIiv GLEW_GET_FUN(__glewGetSamplerParameterIiv)
+#define glGetSamplerParameterIuiv GLEW_GET_FUN(__glewGetSamplerParameterIuiv)
+#define glGetSamplerParameterfv GLEW_GET_FUN(__glewGetSamplerParameterfv)
+#define glGetSamplerParameteriv GLEW_GET_FUN(__glewGetSamplerParameteriv)
+#define glIsSampler GLEW_GET_FUN(__glewIsSampler)
+#define glSamplerParameterIiv GLEW_GET_FUN(__glewSamplerParameterIiv)
+#define glSamplerParameterIuiv GLEW_GET_FUN(__glewSamplerParameterIuiv)
+#define glSamplerParameterf GLEW_GET_FUN(__glewSamplerParameterf)
+#define glSamplerParameterfv GLEW_GET_FUN(__glewSamplerParameterfv)
+#define glSamplerParameteri GLEW_GET_FUN(__glewSamplerParameteri)
+#define glSamplerParameteriv GLEW_GET_FUN(__glewSamplerParameteriv)
+
+#define GLEW_ARB_sampler_objects GLEW_GET_VAR(__GLEW_ARB_sampler_objects)
+
+#endif /* GL_ARB_sampler_objects */
+
 /* ------------------------ GL_ARB_seamless_cube_map ----------------------- */
 
 #ifndef GL_ARB_seamless_cube_map
@@ -3659,6 +3880,15 @@ typedef void (GLAPIENTRY * PFNGLMINSAMPLESHADINGARBPROC) (GLclampf value);
 
 #endif /* GL_ARB_seamless_cube_map */
 
+/* ----------------------- GL_ARB_shader_bit_encoding ---------------------- */
+
+#ifndef GL_ARB_shader_bit_encoding
+#define GL_ARB_shader_bit_encoding 1
+
+#define GLEW_ARB_shader_bit_encoding GLEW_GET_VAR(__GLEW_ARB_shader_bit_encoding)
+
+#endif /* GL_ARB_shader_bit_encoding */
+
 /* ------------------------- GL_ARB_shader_objects ------------------------- */
 
 #ifndef GL_ARB_shader_objects
@@ -3786,6 +4016,43 @@ typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj)
 
 #endif /* GL_ARB_shader_objects */
 
+/* ------------------------ GL_ARB_shader_subroutine ----------------------- */
+
+#ifndef GL_ARB_shader_subroutine
+#define GL_ARB_shader_subroutine 1
+
+#define GL_ACTIVE_SUBROUTINES 0x8DE5
+#define GL_ACTIVE_SUBROUTINE_UNIFORMS 0x8DE6
+#define GL_MAX_SUBROUTINES 0x8DE7
+#define GL_MAX_SUBROUTINE_UNIFORM_LOCATIONS 0x8DE8
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_LOCATIONS 0x8E47
+#define GL_ACTIVE_SUBROUTINE_MAX_LENGTH 0x8E48
+#define GL_ACTIVE_SUBROUTINE_UNIFORM_MAX_LENGTH 0x8E49
+#define GL_NUM_COMPATIBLE_SUBROUTINES 0x8E4A
+#define GL_COMPATIBLE_SUBROUTINES 0x8E4B
+
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINENAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC) (GLuint program, GLenum shadertype, GLuint index, GLsizei bufsize, GLsizei* length, char *name);
+typedef void (GLAPIENTRY * PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC) (GLuint program, GLenum shadertype, GLuint index, GLenum pname, GLint* values);
+typedef void (GLAPIENTRY * PFNGLGETPROGRAMSTAGEIVPROC) (GLuint program, GLenum shadertype, GLenum pname, GLint* values);
+typedef GLuint (GLAPIENTRY * PFNGLGETSUBROUTINEINDEXPROC) (GLuint program, GLenum shadertype, const char* name);
+typedef GLint (GLAPIENTRY * PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC) (GLuint program, GLenum shadertype, const char* name);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMSUBROUTINEUIVPROC) (GLenum shadertype, GLint location, GLuint* params);
+typedef void (GLAPIENTRY * PFNGLUNIFORMSUBROUTINESUIVPROC) (GLenum shadertype, GLsizei count, const GLuint* indices);
+
+#define glGetActiveSubroutineName GLEW_GET_FUN(__glewGetActiveSubroutineName)
+#define glGetActiveSubroutineUniformName GLEW_GET_FUN(__glewGetActiveSubroutineUniformName)
+#define glGetActiveSubroutineUniformiv GLEW_GET_FUN(__glewGetActiveSubroutineUniformiv)
+#define glGetProgramStageiv GLEW_GET_FUN(__glewGetProgramStageiv)
+#define glGetSubroutineIndex GLEW_GET_FUN(__glewGetSubroutineIndex)
+#define glGetSubroutineUniformLocation GLEW_GET_FUN(__glewGetSubroutineUniformLocation)
+#define glGetUniformSubroutineuiv GLEW_GET_FUN(__glewGetUniformSubroutineuiv)
+#define glUniformSubroutinesuiv GLEW_GET_FUN(__glewUniformSubroutinesuiv)
+
+#define GLEW_ARB_shader_subroutine GLEW_GET_VAR(__GLEW_ARB_shader_subroutine)
+
+#endif /* GL_ARB_shader_subroutine */
+
 /* ----------------------- GL_ARB_shader_texture_lod ----------------------- */
 
 #ifndef GL_ARB_shader_texture_lod
@@ -3806,6 +4073,33 @@ typedef void (GLAPIENTRY * PFNGLVALIDATEPROGRAMARBPROC) (GLhandleARB programObj)
 
 #endif /* GL_ARB_shading_language_100 */
 
+/* -------------------- GL_ARB_shading_language_include -------------------- */
+
+#ifndef GL_ARB_shading_language_include
+#define GL_ARB_shading_language_include 1
+
+#define GL_SHADER_INCLUDE_ARB 0x8DAE
+#define GL_NAMED_STRING_LENGTH_ARB 0x8DE9
+#define GL_NAMED_STRING_TYPE_ARB 0x8DEA
+
+typedef void (GLAPIENTRY * PFNGLCOMPILESHADERINCLUDEARBPROC) (GLuint shader, GLsizei count, const char ** path, const GLint *length);
+typedef void (GLAPIENTRY * PFNGLDELETENAMEDSTRINGARBPROC) (GLint namelen, const char* name);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGARBPROC) (GLint namelen, const char* name, GLsizei bufSize, GLint *stringlen, char *string);
+typedef void (GLAPIENTRY * PFNGLGETNAMEDSTRINGIVARBPROC) (GLint namelen, const char* name, GLenum pname, GLint *params);
+typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDSTRINGARBPROC) (GLint namelen, const char* name);
+typedef void (GLAPIENTRY * PFNGLNAMEDSTRINGARBPROC) (GLenum type, GLint namelen, const char* name, GLint stringlen, const char *string);
+
+#define glCompileShaderIncludeARB GLEW_GET_FUN(__glewCompileShaderIncludeARB)
+#define glDeleteNamedStringARB GLEW_GET_FUN(__glewDeleteNamedStringARB)
+#define glGetNamedStringARB GLEW_GET_FUN(__glewGetNamedStringARB)
+#define glGetNamedStringivARB GLEW_GET_FUN(__glewGetNamedStringivARB)
+#define glIsNamedStringARB GLEW_GET_FUN(__glewIsNamedStringARB)
+#define glNamedStringARB GLEW_GET_FUN(__glewNamedStringARB)
+
+#define GLEW_ARB_shading_language_include GLEW_GET_VAR(__GLEW_ARB_shading_language_include)
+
+#endif /* GL_ARB_shading_language_include */
+
 /* ----------------------------- GL_ARB_shadow ----------------------------- */
 
 #ifndef GL_ARB_shadow
@@ -3871,6 +4165,54 @@ typedef void (GLAPIENTRY * PFNGLWAITSYNCPROC) (GLsync GLsync,GLbitfield flags,GL
 
 #endif /* GL_ARB_sync */
 
+/* ----------------------- GL_ARB_tessellation_shader ---------------------- */
+
+#ifndef GL_ARB_tessellation_shader
+#define GL_ARB_tessellation_shader 1
+
+#define GL_PATCHES 0xE
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_CONTROL_SHADER 0x84F0
+#define GL_UNIFORM_BLOCK_REFERENCED_BY_TESS_EVALUATION_SHADER 0x84F1
+#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_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
+#define GL_ISOLINES 0x8E7A
+#define GL_FRACTIONAL_ODD 0x8E7B
+#define GL_FRACTIONAL_EVEN 0x8E7C
+#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_TESS_EVALUATION_SHADER 0x8E87
+#define GL_TESS_CONTROL_SHADER 0x8E88
+#define GL_MAX_TESS_CONTROL_UNIFORM_BLOCKS 0x8E89
+#define GL_MAX_TESS_EVALUATION_UNIFORM_BLOCKS 0x8E8A
+
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERFVPROC) (GLenum pname, const GLfloat* values);
+typedef void (GLAPIENTRY * PFNGLPATCHPARAMETERIPROC) (GLenum pname, GLint value);
+
+#define glPatchParameterfv GLEW_GET_FUN(__glewPatchParameterfv)
+#define glPatchParameteri GLEW_GET_FUN(__glewPatchParameteri)
+
+#define GLEW_ARB_tessellation_shader GLEW_GET_VAR(__GLEW_ARB_tessellation_shader)
+
+#endif /* GL_ARB_tessellation_shader */
+
 /* ---------------------- GL_ARB_texture_border_clamp ---------------------- */
 
 #ifndef GL_ARB_texture_border_clamp
@@ -3901,6 +4243,15 @@ typedef void (GLAPIENTRY * PFNGLTEXBUFFERARBPROC) (GLenum target, GLenum interna
 
 #endif /* GL_ARB_texture_buffer_object */
 
+/* ------------------- GL_ARB_texture_buffer_object_rgb32 ------------------ */
+
+#ifndef GL_ARB_texture_buffer_object_rgb32
+#define GL_ARB_texture_buffer_object_rgb32 1
+
+#define GLEW_ARB_texture_buffer_object_rgb32 GLEW_GET_VAR(__GLEW_ARB_texture_buffer_object_rgb32)
+
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
 /* ----------------------- GL_ARB_texture_compression ---------------------- */
 
 #ifndef GL_ARB_texture_compression
@@ -3938,6 +4289,20 @@ typedef void (GLAPIENTRY * PFNGLGETCOMPRESSEDTEXIMAGEARBPROC) (GLenum target, GL
 
 #endif /* GL_ARB_texture_compression */
 
+/* -------------------- GL_ARB_texture_compression_bptc -------------------- */
+
+#ifndef GL_ARB_texture_compression_bptc
+#define GL_ARB_texture_compression_bptc 1
+
+#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
+
+#define GLEW_ARB_texture_compression_bptc GLEW_GET_VAR(__GLEW_ARB_texture_compression_bptc)
+
+#endif /* GL_ARB_texture_compression_bptc */
+
 /* -------------------- GL_ARB_texture_compression_rgtc -------------------- */
 
 #ifndef GL_ARB_texture_compression_rgtc
@@ -4217,6 +4582,104 @@ typedef void (GLAPIENTRY * PFNGLTEXIMAGE3DMULTISAMPLEPROC) (GLenum target, GLsiz
 
 #endif /* GL_ARB_texture_rg */
 
+/* ----------------------- GL_ARB_texture_rgb10_a2ui ----------------------- */
+
+#ifndef GL_ARB_texture_rgb10_a2ui
+#define GL_ARB_texture_rgb10_a2ui 1
+
+#define GL_RGB10_A2UI 0x906F
+
+#define GLEW_ARB_texture_rgb10_a2ui GLEW_GET_VAR(__GLEW_ARB_texture_rgb10_a2ui)
+
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+/* ------------------------- GL_ARB_texture_swizzle ------------------------ */
+
+#ifndef GL_ARB_texture_swizzle
+#define GL_ARB_texture_swizzle 1
+
+#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
+
+#define GLEW_ARB_texture_swizzle GLEW_GET_VAR(__GLEW_ARB_texture_swizzle)
+
+#endif /* GL_ARB_texture_swizzle */
+
+/* --------------------------- GL_ARB_timer_query -------------------------- */
+
+#ifndef GL_ARB_timer_query
+#define GL_ARB_timer_query 1
+
+#define GL_TIME_ELAPSED 0x88BF
+#define GL_TIMESTAMP 0x8E28
+
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTI64VPROC) (GLuint id, GLenum pname, GLint64* params);
+typedef void (GLAPIENTRY * PFNGLGETQUERYOBJECTUI64VPROC) (GLuint id, GLenum pname, GLuint64* params);
+typedef void (GLAPIENTRY * PFNGLQUERYCOUNTERPROC) (GLuint id, GLenum target);
+
+#define glGetQueryObjecti64v GLEW_GET_FUN(__glewGetQueryObjecti64v)
+#define glGetQueryObjectui64v GLEW_GET_FUN(__glewGetQueryObjectui64v)
+#define glQueryCounter GLEW_GET_FUN(__glewQueryCounter)
+
+#define GLEW_ARB_timer_query GLEW_GET_VAR(__GLEW_ARB_timer_query)
+
+#endif /* GL_ARB_timer_query */
+
+/* ----------------------- GL_ARB_transform_feedback2 ---------------------- */
+
+#ifndef GL_ARB_transform_feedback2
+#define GL_ARB_transform_feedback2 1
+
+#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
+
+typedef void (GLAPIENTRY * PFNGLBINDTRANSFORMFEEDBACKPROC) (GLenum target, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDELETETRANSFORMFEEDBACKSPROC) (GLsizei n, const GLuint* ids);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKPROC) (GLenum mode, GLuint id);
+typedef void (GLAPIENTRY * PFNGLGENTRANSFORMFEEDBACKSPROC) (GLsizei n, GLuint* ids);
+typedef GLboolean (GLAPIENTRY * PFNGLISTRANSFORMFEEDBACKPROC) (GLuint id);
+typedef void (GLAPIENTRY * PFNGLPAUSETRANSFORMFEEDBACKPROC) (void);
+typedef void (GLAPIENTRY * PFNGLRESUMETRANSFORMFEEDBACKPROC) (void);
+
+#define glBindTransformFeedback GLEW_GET_FUN(__glewBindTransformFeedback)
+#define glDeleteTransformFeedbacks GLEW_GET_FUN(__glewDeleteTransformFeedbacks)
+#define glDrawTransformFeedback GLEW_GET_FUN(__glewDrawTransformFeedback)
+#define glGenTransformFeedbacks GLEW_GET_FUN(__glewGenTransformFeedbacks)
+#define glIsTransformFeedback GLEW_GET_FUN(__glewIsTransformFeedback)
+#define glPauseTransformFeedback GLEW_GET_FUN(__glewPauseTransformFeedback)
+#define glResumeTransformFeedback GLEW_GET_FUN(__glewResumeTransformFeedback)
+
+#define GLEW_ARB_transform_feedback2 GLEW_GET_VAR(__GLEW_ARB_transform_feedback2)
+
+#endif /* GL_ARB_transform_feedback2 */
+
+/* ----------------------- GL_ARB_transform_feedback3 ---------------------- */
+
+#ifndef GL_ARB_transform_feedback3
+#define GL_ARB_transform_feedback3 1
+
+#define GL_MAX_TRANSFORM_FEEDBACK_BUFFERS 0x8E70
+#define GL_MAX_VERTEX_STREAMS 0x8E71
+
+typedef void (GLAPIENTRY * PFNGLBEGINQUERYINDEXEDPROC) (GLenum target, GLuint index, GLuint id);
+typedef void (GLAPIENTRY * PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC) (GLenum mode, GLuint id, GLuint stream);
+typedef void (GLAPIENTRY * PFNGLENDQUERYINDEXEDPROC) (GLenum target, GLuint index);
+typedef void (GLAPIENTRY * PFNGLGETQUERYINDEXEDIVPROC) (GLenum target, GLuint index, GLenum pname, GLint* params);
+
+#define glBeginQueryIndexed GLEW_GET_FUN(__glewBeginQueryIndexed)
+#define glDrawTransformFeedbackStream GLEW_GET_FUN(__glewDrawTransformFeedbackStream)
+#define glEndQueryIndexed GLEW_GET_FUN(__glewEndQueryIndexed)
+#define glGetQueryIndexediv GLEW_GET_FUN(__glewGetQueryIndexediv)
+
+#define GLEW_ARB_transform_feedback3 GLEW_GET_VAR(__GLEW_ARB_transform_feedback3)
+
+#endif /* GL_ARB_transform_feedback3 */
+
 /* ------------------------ GL_ARB_transpose_matrix ------------------------ */
 
 #ifndef GL_ARB_transpose_matrix
@@ -4720,6 +5183,96 @@ typedef GLint (GLAPIENTRY * PFNGLGETATTRIBLOCATIONARBPROC) (GLhandleARB programO
 
 #endif /* GL_ARB_vertex_shader */
 
+/* ------------------- GL_ARB_vertex_type_2_10_10_10_rev ------------------- */
+
+#ifndef GL_ARB_vertex_type_2_10_10_10_rev
+#define GL_ARB_vertex_type_2_10_10_10_rev 1
+
+#define GL_UNSIGNED_INT_2_10_10_10_REV 0x8368
+#define GL_INT_2_10_10_10_REV 0x8D9F
+
+typedef void (GLAPIENTRY * PFNGLCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLCOLORP3UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLCOLORP4UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLCOLORP4UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP1UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP2UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP3UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIPROC) (GLenum texture, GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLMULTITEXCOORDP4UIVPROC) (GLenum texture, GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLNORMALP3UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLNORMALP3UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIPROC) (GLenum type, GLuint color);
+typedef void (GLAPIENTRY * PFNGLSECONDARYCOLORP3UIVPROC) (GLenum type, const GLuint* color);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP1UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP2UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP3UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIPROC) (GLenum type, GLuint coords);
+typedef void (GLAPIENTRY * PFNGLTEXCOORDP4UIVPROC) (GLenum type, const GLuint* coords);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP1UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP2UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP3UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIPROC) (GLuint index, GLenum type, GLboolean normalized, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBP4UIVPROC) (GLuint index, GLenum type, GLboolean normalized, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP2UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP2UIVPROC) (GLenum type, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP3UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP3UIVPROC) (GLenum type, const GLuint* value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP4UIPROC) (GLenum type, GLuint value);
+typedef void (GLAPIENTRY * PFNGLVERTEXP4UIVPROC) (GLenum type, const GLuint* value);
+
+#define glColorP3ui GLEW_GET_FUN(__glewColorP3ui)
+#define glColorP3uiv GLEW_GET_FUN(__glewColorP3uiv)
+#define glColorP4ui GLEW_GET_FUN(__glewColorP4ui)
+#define glColorP4uiv GLEW_GET_FUN(__glewColorP4uiv)
+#define glMultiTexCoordP1ui GLEW_GET_FUN(__glewMultiTexCoordP1ui)
+#define glMultiTexCoordP1uiv GLEW_GET_FUN(__glewMultiTexCoordP1uiv)
+#define glMultiTexCoordP2ui GLEW_GET_FUN(__glewMultiTexCoordP2ui)
+#define glMultiTexCoordP2uiv GLEW_GET_FUN(__glewMultiTexCoordP2uiv)
+#define glMultiTexCoordP3ui GLEW_GET_FUN(__glewMultiTexCoordP3ui)
+#define glMultiTexCoordP3uiv GLEW_GET_FUN(__glewMultiTexCoordP3uiv)
+#define glMultiTexCoordP4ui GLEW_GET_FUN(__glewMultiTexCoordP4ui)
+#define glMultiTexCoordP4uiv GLEW_GET_FUN(__glewMultiTexCoordP4uiv)
+#define glNormalP3ui GLEW_GET_FUN(__glewNormalP3ui)
+#define glNormalP3uiv GLEW_GET_FUN(__glewNormalP3uiv)
+#define glSecondaryColorP3ui GLEW_GET_FUN(__glewSecondaryColorP3ui)
+#define glSecondaryColorP3uiv GLEW_GET_FUN(__glewSecondaryColorP3uiv)
+#define glTexCoordP1ui GLEW_GET_FUN(__glewTexCoordP1ui)
+#define glTexCoordP1uiv GLEW_GET_FUN(__glewTexCoordP1uiv)
+#define glTexCoordP2ui GLEW_GET_FUN(__glewTexCoordP2ui)
+#define glTexCoordP2uiv GLEW_GET_FUN(__glewTexCoordP2uiv)
+#define glTexCoordP3ui GLEW_GET_FUN(__glewTexCoordP3ui)
+#define glTexCoordP3uiv GLEW_GET_FUN(__glewTexCoordP3uiv)
+#define glTexCoordP4ui GLEW_GET_FUN(__glewTexCoordP4ui)
+#define glTexCoordP4uiv GLEW_GET_FUN(__glewTexCoordP4uiv)
+#define glVertexAttribP1ui GLEW_GET_FUN(__glewVertexAttribP1ui)
+#define glVertexAttribP1uiv GLEW_GET_FUN(__glewVertexAttribP1uiv)
+#define glVertexAttribP2ui GLEW_GET_FUN(__glewVertexAttribP2ui)
+#define glVertexAttribP2uiv GLEW_GET_FUN(__glewVertexAttribP2uiv)
+#define glVertexAttribP3ui GLEW_GET_FUN(__glewVertexAttribP3ui)
+#define glVertexAttribP3uiv GLEW_GET_FUN(__glewVertexAttribP3uiv)
+#define glVertexAttribP4ui GLEW_GET_FUN(__glewVertexAttribP4ui)
+#define glVertexAttribP4uiv GLEW_GET_FUN(__glewVertexAttribP4uiv)
+#define glVertexP2ui GLEW_GET_FUN(__glewVertexP2ui)
+#define glVertexP2uiv GLEW_GET_FUN(__glewVertexP2uiv)
+#define glVertexP3ui GLEW_GET_FUN(__glewVertexP3ui)
+#define glVertexP3uiv GLEW_GET_FUN(__glewVertexP3uiv)
+#define glVertexP4ui GLEW_GET_FUN(__glewVertexP4ui)
+#define glVertexP4uiv GLEW_GET_FUN(__glewVertexP4uiv)
+
+#define GLEW_ARB_vertex_type_2_10_10_10_rev GLEW_GET_VAR(__GLEW_ARB_vertex_type_2_10_10_10_rev)
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
 /* --------------------------- GL_ARB_window_pos --------------------------- */
 
 #ifndef GL_ARB_window_pos
@@ -5635,6 +6188,10 @@ typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE3DEXTPROC) (GLenum target, GLint
 #ifndef GL_EXT_cull_vertex
 #define GL_EXT_cull_vertex 1
 
+#define GL_CULL_VERTEX_EXT 0x81AA
+#define GL_CULL_VERTEX_EYE_POSITION_EXT 0x81AB
+#define GL_CULL_VERTEX_OBJECT_POSITION_EXT 0x81AC
+
 typedef void (GLAPIENTRY * PFNGLCULLPARAMETERDVEXTPROC) (GLenum pname, GLdouble* params);
 typedef void (GLAPIENTRY * PFNGLCULLPARAMETERFVEXTPROC) (GLenum pname, GLfloat* params);
 
@@ -7034,6 +7591,77 @@ typedef void (GLAPIENTRY * PFNGLUSESHADERPROGRAMEXTPROC) (GLenum type, GLuint pr
 
 #endif /* GL_EXT_separate_specular_color */
 
+/* --------------------- GL_EXT_shader_image_load_store -------------------- */
+
+#ifndef GL_EXT_shader_image_load_store
+#define GL_EXT_shader_image_load_store 1
+
+#define GL_VERTEX_ATTRIB_ARRAY_BARRIER_BIT_EXT 0x00000001
+#define GL_ELEMENT_ARRAY_BARRIER_BIT_EXT 0x00000002
+#define GL_UNIFORM_BARRIER_BIT_EXT 0x00000004
+#define GL_TEXTURE_FETCH_BARRIER_BIT_EXT 0x00000008
+#define GL_SHADER_IMAGE_ACCESS_BARRIER_BIT_EXT 0x00000020
+#define GL_COMMAND_BARRIER_BIT_EXT 0x00000040
+#define GL_PIXEL_BUFFER_BARRIER_BIT_EXT 0x00000080
+#define GL_TEXTURE_UPDATE_BARRIER_BIT_EXT 0x00000100
+#define GL_BUFFER_UPDATE_BARRIER_BIT_EXT 0x00000200
+#define GL_FRAMEBUFFER_BARRIER_BIT_EXT 0x00000400
+#define GL_TRANSFORM_FEEDBACK_BARRIER_BIT_EXT 0x00000800
+#define GL_ATOMIC_COUNTER_BARRIER_BIT_EXT 0x00001000
+#define GL_MAX_IMAGE_UNITS_EXT 0x8F38
+#define GL_MAX_COMBINED_IMAGE_UNITS_AND_FRAGMENT_OUTPUTS_EXT 0x8F39
+#define GL_IMAGE_BINDING_NAME_EXT 0x8F3A
+#define GL_IMAGE_BINDING_LEVEL_EXT 0x8F3B
+#define GL_IMAGE_BINDING_LAYERED_EXT 0x8F3C
+#define GL_IMAGE_BINDING_LAYER_EXT 0x8F3D
+#define GL_IMAGE_BINDING_ACCESS_EXT 0x8F3E
+#define GL_IMAGE_1D_EXT 0x904C
+#define GL_IMAGE_2D_EXT 0x904D
+#define GL_IMAGE_3D_EXT 0x904E
+#define GL_IMAGE_2D_RECT_EXT 0x904F
+#define GL_IMAGE_CUBE_EXT 0x9050
+#define GL_IMAGE_BUFFER_EXT 0x9051
+#define GL_IMAGE_1D_ARRAY_EXT 0x9052
+#define GL_IMAGE_2D_ARRAY_EXT 0x9053
+#define GL_IMAGE_CUBE_MAP_ARRAY_EXT 0x9054
+#define GL_IMAGE_2D_MULTISAMPLE_EXT 0x9055
+#define GL_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9056
+#define GL_INT_IMAGE_1D_EXT 0x9057
+#define GL_INT_IMAGE_2D_EXT 0x9058
+#define GL_INT_IMAGE_3D_EXT 0x9059
+#define GL_INT_IMAGE_2D_RECT_EXT 0x905A
+#define GL_INT_IMAGE_CUBE_EXT 0x905B
+#define GL_INT_IMAGE_BUFFER_EXT 0x905C
+#define GL_INT_IMAGE_1D_ARRAY_EXT 0x905D
+#define GL_INT_IMAGE_2D_ARRAY_EXT 0x905E
+#define GL_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x905F
+#define GL_INT_IMAGE_2D_MULTISAMPLE_EXT 0x9060
+#define GL_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x9061
+#define GL_UNSIGNED_INT_IMAGE_1D_EXT 0x9062
+#define GL_UNSIGNED_INT_IMAGE_2D_EXT 0x9063
+#define GL_UNSIGNED_INT_IMAGE_3D_EXT 0x9064
+#define GL_UNSIGNED_INT_IMAGE_2D_RECT_EXT 0x9065
+#define GL_UNSIGNED_INT_IMAGE_CUBE_EXT 0x9066
+#define GL_UNSIGNED_INT_IMAGE_BUFFER_EXT 0x9067
+#define GL_UNSIGNED_INT_IMAGE_1D_ARRAY_EXT 0x9068
+#define GL_UNSIGNED_INT_IMAGE_2D_ARRAY_EXT 0x9069
+#define GL_UNSIGNED_INT_IMAGE_CUBE_MAP_ARRAY_EXT 0x906A
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_EXT 0x906B
+#define GL_UNSIGNED_INT_IMAGE_2D_MULTISAMPLE_ARRAY_EXT 0x906C
+#define GL_MAX_IMAGE_SAMPLES_EXT 0x906D
+#define GL_IMAGE_BINDING_FORMAT_EXT 0x906E
+#define GL_ALL_BARRIER_BITS_EXT 0xFFFFFFFF
+
+typedef void (GLAPIENTRY * PFNGLBINDIMAGETEXTUREEXTPROC) (GLuint index, GLuint texture, GLint level, GLboolean layered, GLint layer, GLenum access, GLint format);
+typedef void (GLAPIENTRY * PFNGLMEMORYBARRIEREXTPROC) (GLbitfield barriers);
+
+#define glBindImageTextureEXT GLEW_GET_FUN(__glewBindImageTextureEXT)
+#define glMemoryBarrierEXT GLEW_GET_FUN(__glewMemoryBarrierEXT)
+
+#define GLEW_EXT_shader_image_load_store GLEW_GET_VAR(__GLEW_EXT_shader_image_load_store)
+
+#endif /* GL_EXT_shader_image_load_store */
+
 /* -------------------------- GL_EXT_shadow_funcs -------------------------- */
 
 #ifndef GL_EXT_shadow_funcs
@@ -7772,6 +8400,46 @@ typedef void (GLAPIENTRY * PFNGLVERTEXPOINTEREXTPROC) (GLint size, GLenum type,
 
 #endif /* GL_EXT_vertex_array_bgra */
 
+/* ----------------------- GL_EXT_vertex_attrib_64bit ---------------------- */
+
+#ifndef GL_EXT_vertex_attrib_64bit
+#define GL_EXT_vertex_attrib_64bit 1
+
+#define GL_DOUBLE_MAT2_EXT 0x8F46
+#define GL_DOUBLE_MAT3_EXT 0x8F47
+#define GL_DOUBLE_MAT4_EXT 0x8F48
+#define GL_DOUBLE_VEC2_EXT 0x8FFC
+#define GL_DOUBLE_VEC3_EXT 0x8FFD
+#define GL_DOUBLE_VEC4_EXT 0x8FFE
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLDVEXTPROC) (GLuint index, GLenum pname, GLdouble* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC) (GLuint vaobj, GLuint buffer, GLuint index, GLint size, GLenum type, GLsizei stride, GLintptr offset);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DEXTPROC) (GLuint index, GLdouble x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DEXTPROC) (GLuint index, GLdouble x, GLdouble y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DEXTPROC) (GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4DVEXTPROC) (GLuint index, const GLdouble* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLPOINTEREXTPROC) (GLuint index, GLint size, GLenum type, GLsizei stride, const void* pointer);
+
+#define glGetVertexAttribLdvEXT GLEW_GET_FUN(__glewGetVertexAttribLdvEXT)
+#define glVertexArrayVertexAttribLOffsetEXT GLEW_GET_FUN(__glewVertexArrayVertexAttribLOffsetEXT)
+#define glVertexAttribL1dEXT GLEW_GET_FUN(__glewVertexAttribL1dEXT)
+#define glVertexAttribL1dvEXT GLEW_GET_FUN(__glewVertexAttribL1dvEXT)
+#define glVertexAttribL2dEXT GLEW_GET_FUN(__glewVertexAttribL2dEXT)
+#define glVertexAttribL2dvEXT GLEW_GET_FUN(__glewVertexAttribL2dvEXT)
+#define glVertexAttribL3dEXT GLEW_GET_FUN(__glewVertexAttribL3dEXT)
+#define glVertexAttribL3dvEXT GLEW_GET_FUN(__glewVertexAttribL3dvEXT)
+#define glVertexAttribL4dEXT GLEW_GET_FUN(__glewVertexAttribL4dEXT)
+#define glVertexAttribL4dvEXT GLEW_GET_FUN(__glewVertexAttribL4dvEXT)
+#define glVertexAttribLPointerEXT GLEW_GET_FUN(__glewVertexAttribLPointerEXT)
+
+#define GLEW_EXT_vertex_attrib_64bit GLEW_GET_VAR(__GLEW_EXT_vertex_attrib_64bit)
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
 /* -------------------------- GL_EXT_vertex_shader ------------------------- */
 
 #ifndef GL_EXT_vertex_shader
@@ -8801,6 +9469,137 @@ typedef void (GLAPIENTRY * PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC) (GLenum targe
 
 #endif /* GL_NV_gpu_program4 */
 
+/* --------------------------- GL_NV_gpu_program5 -------------------------- */
+
+#ifndef GL_NV_gpu_program5
+#define GL_NV_gpu_program5 1
+
+#define GL_MAX_GEOMETRY_PROGRAM_INVOCATIONS_NV 0x8E5A
+#define GL_MIN_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5B
+#define GL_MAX_FRAGMENT_INTERPOLATION_OFFSET_NV 0x8E5C
+#define GL_FRAGMENT_PROGRAM_INTERPOLATION_OFFSET_BITS_NV 0x8E5D
+
+#define GLEW_NV_gpu_program5 GLEW_GET_VAR(__GLEW_NV_gpu_program5)
+
+#endif /* GL_NV_gpu_program5 */
+
+/* ------------------------- GL_NV_gpu_program_fp64 ------------------------ */
+
+#ifndef GL_NV_gpu_program_fp64
+#define GL_NV_gpu_program_fp64 1
+
+#define GLEW_NV_gpu_program_fp64 GLEW_GET_VAR(__GLEW_NV_gpu_program_fp64)
+
+#endif /* GL_NV_gpu_program_fp64 */
+
+/* --------------------------- GL_NV_gpu_shader5 --------------------------- */
+
+#ifndef GL_NV_gpu_shader5
+#define GL_NV_gpu_shader5 1
+
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+#define GL_INT8_NV 0x8FE0
+#define GL_INT8_VEC2_NV 0x8FE1
+#define GL_INT8_VEC3_NV 0x8FE2
+#define GL_INT8_VEC4_NV 0x8FE3
+#define GL_INT16_NV 0x8FE4
+#define GL_INT16_VEC2_NV 0x8FE5
+#define GL_INT16_VEC3_NV 0x8FE6
+#define GL_INT16_VEC4_NV 0x8FE7
+#define GL_INT64_VEC2_NV 0x8FE9
+#define GL_INT64_VEC3_NV 0x8FEA
+#define GL_INT64_VEC4_NV 0x8FEB
+#define GL_UNSIGNED_INT8_NV 0x8FEC
+#define GL_UNSIGNED_INT8_VEC2_NV 0x8FED
+#define GL_UNSIGNED_INT8_VEC3_NV 0x8FEE
+#define GL_UNSIGNED_INT8_VEC4_NV 0x8FEF
+#define GL_UNSIGNED_INT16_NV 0x8FF0
+#define GL_UNSIGNED_INT16_VEC2_NV 0x8FF1
+#define GL_UNSIGNED_INT16_VEC3_NV 0x8FF2
+#define GL_UNSIGNED_INT16_VEC4_NV 0x8FF3
+#define GL_UNSIGNED_INT64_VEC2_NV 0x8FF5
+#define GL_UNSIGNED_INT64_VEC3_NV 0x8FF6
+#define GL_UNSIGNED_INT64_VEC4_NV 0x8FF7
+#define GL_FLOAT16_NV 0x8FF8
+#define GL_FLOAT16_VEC2_NV 0x8FF9
+#define GL_FLOAT16_VEC3_NV 0x8FFA
+#define GL_FLOAT16_VEC4_NV 0x8FFB
+
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMI64VNVPROC) (GLuint program, GLint location, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64NVPROC) (GLuint program, GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM1UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM2UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM3UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64NVPROC) (GLuint program, GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4I64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64NVPROC) (GLuint program, GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLPROGRAMUNIFORM4UI64VNVPROC) (GLuint program, GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64NVPROC) (GLint location, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64NVPROC) (GLint location, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLUNIFORM1UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLUNIFORM2UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLUNIFORM3UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64NVPROC) (GLint location, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4I64VNVPROC) (GLint location, GLsizei count, const GLint64EXT* value);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64NVPROC) (GLint location, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLUNIFORM4UI64VNVPROC) (GLint location, GLsizei count, const GLuint64EXT* value);
+
+#define glGetUniformi64vNV GLEW_GET_FUN(__glewGetUniformi64vNV)
+#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV)
+#define glProgramUniform1i64NV GLEW_GET_FUN(__glewProgramUniform1i64NV)
+#define glProgramUniform1i64vNV GLEW_GET_FUN(__glewProgramUniform1i64vNV)
+#define glProgramUniform1ui64NV GLEW_GET_FUN(__glewProgramUniform1ui64NV)
+#define glProgramUniform1ui64vNV GLEW_GET_FUN(__glewProgramUniform1ui64vNV)
+#define glProgramUniform2i64NV GLEW_GET_FUN(__glewProgramUniform2i64NV)
+#define glProgramUniform2i64vNV GLEW_GET_FUN(__glewProgramUniform2i64vNV)
+#define glProgramUniform2ui64NV GLEW_GET_FUN(__glewProgramUniform2ui64NV)
+#define glProgramUniform2ui64vNV GLEW_GET_FUN(__glewProgramUniform2ui64vNV)
+#define glProgramUniform3i64NV GLEW_GET_FUN(__glewProgramUniform3i64NV)
+#define glProgramUniform3i64vNV GLEW_GET_FUN(__glewProgramUniform3i64vNV)
+#define glProgramUniform3ui64NV GLEW_GET_FUN(__glewProgramUniform3ui64NV)
+#define glProgramUniform3ui64vNV GLEW_GET_FUN(__glewProgramUniform3ui64vNV)
+#define glProgramUniform4i64NV GLEW_GET_FUN(__glewProgramUniform4i64NV)
+#define glProgramUniform4i64vNV GLEW_GET_FUN(__glewProgramUniform4i64vNV)
+#define glProgramUniform4ui64NV GLEW_GET_FUN(__glewProgramUniform4ui64NV)
+#define glProgramUniform4ui64vNV GLEW_GET_FUN(__glewProgramUniform4ui64vNV)
+#define glUniform1i64NV GLEW_GET_FUN(__glewUniform1i64NV)
+#define glUniform1i64vNV GLEW_GET_FUN(__glewUniform1i64vNV)
+#define glUniform1ui64NV GLEW_GET_FUN(__glewUniform1ui64NV)
+#define glUniform1ui64vNV GLEW_GET_FUN(__glewUniform1ui64vNV)
+#define glUniform2i64NV GLEW_GET_FUN(__glewUniform2i64NV)
+#define glUniform2i64vNV GLEW_GET_FUN(__glewUniform2i64vNV)
+#define glUniform2ui64NV GLEW_GET_FUN(__glewUniform2ui64NV)
+#define glUniform2ui64vNV GLEW_GET_FUN(__glewUniform2ui64vNV)
+#define glUniform3i64NV GLEW_GET_FUN(__glewUniform3i64NV)
+#define glUniform3i64vNV GLEW_GET_FUN(__glewUniform3i64vNV)
+#define glUniform3ui64NV GLEW_GET_FUN(__glewUniform3ui64NV)
+#define glUniform3ui64vNV GLEW_GET_FUN(__glewUniform3ui64vNV)
+#define glUniform4i64NV GLEW_GET_FUN(__glewUniform4i64NV)
+#define glUniform4i64vNV GLEW_GET_FUN(__glewUniform4i64vNV)
+#define glUniform4ui64NV GLEW_GET_FUN(__glewUniform4ui64NV)
+#define glUniform4ui64vNV GLEW_GET_FUN(__glewUniform4ui64vNV)
+
+#define GLEW_NV_gpu_shader5 GLEW_GET_VAR(__GLEW_NV_gpu_shader5)
+
+#endif /* GL_NV_gpu_shader5 */
+
 /* ---------------------------- GL_NV_half_float --------------------------- */
 
 #ifndef GL_NV_half_float
@@ -9212,7 +10011,6 @@ typedef void (GLAPIENTRY * PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC) (GLenum stage
 typedef void (GLAPIENTRY * PFNGLGETBUFFERPARAMETERUI64VNVPROC) (GLenum target, GLenum pname, GLuint64EXT* params);
 typedef void (GLAPIENTRY * PFNGLGETINTEGERUI64VNVPROC) (GLenum value, GLuint64EXT* result);
 typedef void (GLAPIENTRY * PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC) (GLuint buffer, GLenum pname, GLuint64EXT* params);
-typedef void (GLAPIENTRY * PFNGLGETUNIFORMUI64VNVPROC) (GLuint program, GLint location, GLuint64EXT* params);
 typedef GLboolean (GLAPIENTRY * PFNGLISBUFFERRESIDENTNVPROC) (GLenum target);
 typedef GLboolean (GLAPIENTRY * PFNGLISNAMEDBUFFERRESIDENTNVPROC) (GLuint buffer);
 typedef void (GLAPIENTRY * PFNGLMAKEBUFFERNONRESIDENTNVPROC) (GLenum target);
@@ -9227,7 +10025,6 @@ typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei cou
 #define glGetBufferParameterui64vNV GLEW_GET_FUN(__glewGetBufferParameterui64vNV)
 #define glGetIntegerui64vNV GLEW_GET_FUN(__glewGetIntegerui64vNV)
 #define glGetNamedBufferParameterui64vNV GLEW_GET_FUN(__glewGetNamedBufferParameterui64vNV)
-#define glGetUniformui64vNV GLEW_GET_FUN(__glewGetUniformui64vNV)
 #define glIsBufferResidentNV GLEW_GET_FUN(__glewIsBufferResidentNV)
 #define glIsNamedBufferResidentNV GLEW_GET_FUN(__glewIsNamedBufferResidentNV)
 #define glMakeBufferNonResidentNV GLEW_GET_FUN(__glewMakeBufferNonResidentNV)
@@ -9243,6 +10040,21 @@ typedef void (GLAPIENTRY * PFNGLUNIFORMUI64VNVPROC) (GLint location, GLsizei cou
 
 #endif /* GL_NV_shader_buffer_load */
 
+/* ---------------------- GL_NV_tessellation_program5 ---------------------- */
+
+#ifndef GL_NV_tessellation_program5
+#define GL_NV_tessellation_program5 1
+
+#define GL_MAX_PROGRAM_PATCH_ATTRIBS_NV 0x86D8
+#define GL_TESS_CONTROL_PROGRAM_NV 0x891E
+#define GL_TESS_EVALUATION_PROGRAM_NV 0x891F
+#define GL_TESS_CONTROL_PROGRAM_PARAMETER_BUFFER_NV 0x8C74
+#define GL_TESS_EVALUATION_PROGRAM_PARAMETER_BUFFER_NV 0x8C75
+
+#define GLEW_NV_tessellation_program5 GLEW_GET_VAR(__GLEW_NV_tessellation_program5)
+
+#endif /* GL_NV_tessellation_program5 */
+
 /* -------------------------- GL_NV_texgen_emboss -------------------------- */
 
 #ifndef GL_NV_texgen_emboss
@@ -9599,6 +10411,58 @@ typedef void (GLAPIENTRY * PFNGLVERTEXARRAYRANGENVPROC) (GLsizei length, void* p
 
 #endif /* GL_NV_vertex_array_range2 */
 
+/* ------------------- GL_NV_vertex_attrib_integer_64bit ------------------- */
+
+#ifndef GL_NV_vertex_attrib_integer_64bit
+#define GL_NV_vertex_attrib_integer_64bit 1
+
+#define GL_INT64_NV 0x140E
+#define GL_UNSIGNED_INT64_NV 0x140F
+
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLI64VNVPROC) (GLuint index, GLenum pname, GLint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLGETVERTEXATTRIBLUI64VNVPROC) (GLuint index, GLenum pname, GLuint64EXT* params);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64NVPROC) (GLuint index, GLint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64NVPROC) (GLuint index, GLuint64EXT x);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL1UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL2UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL3UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64NVPROC) (GLuint index, GLint64EXT x, GLint64EXT y, GLint64EXT z, GLint64EXT w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4I64VNVPROC) (GLuint index, const GLint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64NVPROC) (GLuint index, GLuint64EXT x, GLuint64EXT y, GLuint64EXT z, GLuint64EXT w);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBL4UI64VNVPROC) (GLuint index, const GLuint64EXT* v);
+typedef void (GLAPIENTRY * PFNGLVERTEXATTRIBLFORMATNVPROC) (GLuint index, GLint size, GLenum type, GLsizei stride);
+
+#define glGetVertexAttribLi64vNV GLEW_GET_FUN(__glewGetVertexAttribLi64vNV)
+#define glGetVertexAttribLui64vNV GLEW_GET_FUN(__glewGetVertexAttribLui64vNV)
+#define glVertexAttribL1i64NV GLEW_GET_FUN(__glewVertexAttribL1i64NV)
+#define glVertexAttribL1i64vNV GLEW_GET_FUN(__glewVertexAttribL1i64vNV)
+#define glVertexAttribL1ui64NV GLEW_GET_FUN(__glewVertexAttribL1ui64NV)
+#define glVertexAttribL1ui64vNV GLEW_GET_FUN(__glewVertexAttribL1ui64vNV)
+#define glVertexAttribL2i64NV GLEW_GET_FUN(__glewVertexAttribL2i64NV)
+#define glVertexAttribL2i64vNV GLEW_GET_FUN(__glewVertexAttribL2i64vNV)
+#define glVertexAttribL2ui64NV GLEW_GET_FUN(__glewVertexAttribL2ui64NV)
+#define glVertexAttribL2ui64vNV GLEW_GET_FUN(__glewVertexAttribL2ui64vNV)
+#define glVertexAttribL3i64NV GLEW_GET_FUN(__glewVertexAttribL3i64NV)
+#define glVertexAttribL3i64vNV GLEW_GET_FUN(__glewVertexAttribL3i64vNV)
+#define glVertexAttribL3ui64NV GLEW_GET_FUN(__glewVertexAttribL3ui64NV)
+#define glVertexAttribL3ui64vNV GLEW_GET_FUN(__glewVertexAttribL3ui64vNV)
+#define glVertexAttribL4i64NV GLEW_GET_FUN(__glewVertexAttribL4i64NV)
+#define glVertexAttribL4i64vNV GLEW_GET_FUN(__glewVertexAttribL4i64vNV)
+#define glVertexAttribL4ui64NV GLEW_GET_FUN(__glewVertexAttribL4ui64NV)
+#define glVertexAttribL4ui64vNV GLEW_GET_FUN(__glewVertexAttribL4ui64vNV)
+#define glVertexAttribLFormatNV GLEW_GET_FUN(__glewVertexAttribLFormatNV)
+
+#define GLEW_NV_vertex_attrib_integer_64bit GLEW_GET_VAR(__GLEW_NV_vertex_attrib_integer_64bit)
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
 /* ------------------- GL_NV_vertex_buffer_unified_memory ------------------ */
 
 #ifndef GL_NV_vertex_buffer_unified_memory
@@ -11441,6 +12305,12 @@ GLEW_FUN_EXPORT PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture;
 GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v;
 GLEW_FUN_EXPORT PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v;
 
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei;
+GLEW_FUN_EXPORT PFNGLBLENDEQUATIONIPROC __glewBlendEquationi;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei;
+GLEW_FUN_EXPORT PFNGLBLENDFUNCIPROC __glewBlendFunci;
+GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading;
+
 GLEW_FUN_EXPORT PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX;
 
 GLEW_FUN_EXPORT PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD;
@@ -11505,6 +12375,9 @@ GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE;
 GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE;
 GLEW_FUN_EXPORT PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE;
 
+GLEW_FUN_EXPORT PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed;
+GLEW_FUN_EXPORT PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex;
+
 GLEW_FUN_EXPORT PFNGLCLAMPCOLORARBPROC __glewClampColorARB;
 
 GLEW_FUN_EXPORT PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData;
@@ -11521,6 +12394,9 @@ GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInsta
 GLEW_FUN_EXPORT PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex;
 GLEW_FUN_EXPORT PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex;
 
+GLEW_FUN_EXPORT PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect;
+GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect;
+
 GLEW_FUN_EXPORT PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB;
 GLEW_FUN_EXPORT PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB;
 
@@ -11647,6 +12523,21 @@ GLEW_FUN_EXPORT PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex;
 
 GLEW_FUN_EXPORT PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB;
 
+GLEW_FUN_EXPORT PFNGLBINDSAMPLERPROC __glewBindSampler;
+GLEW_FUN_EXPORT PFNGLDELETESAMPLERSPROC __glewDeleteSamplers;
+GLEW_FUN_EXPORT PFNGLGENSAMPLERSPROC __glewGenSamplers;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv;
+GLEW_FUN_EXPORT PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv;
+GLEW_FUN_EXPORT PFNGLISSAMPLERPROC __glewIsSampler;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri;
+GLEW_FUN_EXPORT PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv;
+
 GLEW_FUN_EXPORT PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB;
 GLEW_FUN_EXPORT PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB;
 GLEW_FUN_EXPORT PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB;
@@ -11687,6 +12578,22 @@ GLEW_FUN_EXPORT PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB;
 GLEW_FUN_EXPORT PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB;
 GLEW_FUN_EXPORT PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB;
 
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName;
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName;
+GLEW_FUN_EXPORT PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv;
+GLEW_FUN_EXPORT PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv;
+GLEW_FUN_EXPORT PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex;
+GLEW_FUN_EXPORT PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv;
+GLEW_FUN_EXPORT PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv;
+
+GLEW_FUN_EXPORT PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB;
+GLEW_FUN_EXPORT PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB;
+GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB;
+GLEW_FUN_EXPORT PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB;
+GLEW_FUN_EXPORT PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB;
+GLEW_FUN_EXPORT PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB;
+
 GLEW_FUN_EXPORT PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync;
 GLEW_FUN_EXPORT PFNGLDELETESYNCPROC __glewDeleteSync;
 GLEW_FUN_EXPORT PFNGLFENCESYNCPROC __glewFenceSync;
@@ -11695,6 +12602,9 @@ GLEW_FUN_EXPORT PFNGLGETSYNCIVPROC __glewGetSynciv;
 GLEW_FUN_EXPORT PFNGLISSYNCPROC __glewIsSync;
 GLEW_FUN_EXPORT PFNGLWAITSYNCPROC __glewWaitSync;
 
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv;
+GLEW_FUN_EXPORT PFNGLPATCHPARAMETERIPROC __glewPatchParameteri;
+
 GLEW_FUN_EXPORT PFNGLTEXBUFFERARBPROC __glewTexBufferARB;
 
 GLEW_FUN_EXPORT PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB;
@@ -11710,6 +12620,23 @@ GLEW_FUN_EXPORT PFNGLSAMPLEMASKIPROC __glewSampleMaski;
 GLEW_FUN_EXPORT PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample;
 GLEW_FUN_EXPORT PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample;
 
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v;
+GLEW_FUN_EXPORT PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v;
+GLEW_FUN_EXPORT PFNGLQUERYCOUNTERPROC __glewQueryCounter;
+
+GLEW_FUN_EXPORT PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback;
+GLEW_FUN_EXPORT PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback;
+GLEW_FUN_EXPORT PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks;
+GLEW_FUN_EXPORT PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback;
+GLEW_FUN_EXPORT PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback;
+GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback;
+
+GLEW_FUN_EXPORT PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed;
+GLEW_FUN_EXPORT PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream;
+GLEW_FUN_EXPORT PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed;
+GLEW_FUN_EXPORT PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv;
+
 GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB;
 GLEW_FUN_EXPORT PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB;
 GLEW_FUN_EXPORT PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB;
@@ -11821,6 +12748,45 @@ GLEW_FUN_EXPORT PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB;
 GLEW_FUN_EXPORT PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB;
 GLEW_FUN_EXPORT PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB;
 
+GLEW_FUN_EXPORT PFNGLCOLORP3UIPROC __glewColorP3ui;
+GLEW_FUN_EXPORT PFNGLCOLORP3UIVPROC __glewColorP3uiv;
+GLEW_FUN_EXPORT PFNGLCOLORP4UIPROC __glewColorP4ui;
+GLEW_FUN_EXPORT PFNGLCOLORP4UIVPROC __glewColorP4uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui;
+GLEW_FUN_EXPORT PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv;
+GLEW_FUN_EXPORT PFNGLNORMALP3UIPROC __glewNormalP3ui;
+GLEW_FUN_EXPORT PFNGLNORMALP3UIVPROC __glewNormalP3uiv;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui;
+GLEW_FUN_EXPORT PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui;
+GLEW_FUN_EXPORT PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP2UIPROC __glewVertexP2ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP2UIVPROC __glewVertexP2uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP3UIPROC __glewVertexP3ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP3UIVPROC __glewVertexP3uiv;
+GLEW_FUN_EXPORT PFNGLVERTEXP4UIPROC __glewVertexP4ui;
+GLEW_FUN_EXPORT PFNGLVERTEXP4UIVPROC __glewVertexP4uiv;
+
 GLEW_FUN_EXPORT PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB;
 GLEW_FUN_EXPORT PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB;
 GLEW_FUN_EXPORT PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB;
@@ -12359,6 +13325,9 @@ GLEW_FUN_EXPORT PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT;
 GLEW_FUN_EXPORT PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT;
 GLEW_FUN_EXPORT PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT;
 
+GLEW_FUN_EXPORT PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT;
+GLEW_FUN_EXPORT PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT;
+
 GLEW_FUN_EXPORT PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT;
 
 GLEW_FUN_EXPORT PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT;
@@ -12406,6 +13375,18 @@ GLEW_FUN_EXPORT PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT;
 GLEW_FUN_EXPORT PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT;
 GLEW_FUN_EXPORT PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT;
 
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT;
+
 GLEW_FUN_EXPORT PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT;
 GLEW_FUN_EXPORT PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT;
 GLEW_FUN_EXPORT PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT;
@@ -12572,6 +13553,41 @@ GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParamete
 GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV;
 GLEW_FUN_EXPORT PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV;
 
+GLEW_FUN_EXPORT PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV;
+GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV;
+GLEW_FUN_EXPORT PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV;
+GLEW_FUN_EXPORT PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV;
+
 GLEW_FUN_EXPORT PFNGLCOLOR3HNVPROC __glewColor3hNV;
 GLEW_FUN_EXPORT PFNGLCOLOR3HVNVPROC __glewColor3hvNV;
 GLEW_FUN_EXPORT PFNGLCOLOR4HNVPROC __glewColor4hNV;
@@ -12667,7 +13683,6 @@ GLEW_FUN_EXPORT PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStagePar
 GLEW_FUN_EXPORT PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV;
 GLEW_FUN_EXPORT PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV;
 GLEW_FUN_EXPORT PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV;
-GLEW_FUN_EXPORT PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV;
 GLEW_FUN_EXPORT PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV;
 GLEW_FUN_EXPORT PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV;
 GLEW_FUN_EXPORT PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV;
@@ -12704,6 +13719,26 @@ GLEW_FUN_EXPORT PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedback
 GLEW_FUN_EXPORT PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV;
 GLEW_FUN_EXPORT PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV;
 
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV;
+GLEW_FUN_EXPORT PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV;
+GLEW_FUN_EXPORT PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV;
+
 GLEW_FUN_EXPORT PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV;
 GLEW_FUN_EXPORT PFNGLCOLORFORMATNVPROC __glewColorFormatNV;
 GLEW_FUN_EXPORT PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV;
@@ -12936,11 +13971,16 @@ GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_2_1;
 GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_0;
 GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_1;
 GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_2;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_3_3;
+GLEW_VAR_EXPORT GLboolean __GLEW_VERSION_4_0;
 GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_multisample;
 GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_tbuffer;
 GLEW_VAR_EXPORT GLboolean __GLEW_3DFX_texture_compression_FXT1;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_conservative_depth;
 GLEW_VAR_EXPORT GLboolean __GLEW_AMD_draw_buffers_blend;
 GLEW_VAR_EXPORT GLboolean __GLEW_AMD_performance_monitor;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_seamless_cubemap_per_texture;
+GLEW_VAR_EXPORT GLboolean __GLEW_AMD_shader_stencil_export;
 GLEW_VAR_EXPORT GLboolean __GLEW_AMD_texture_texture4;
 GLEW_VAR_EXPORT GLboolean __GLEW_AMD_vertex_shader_tessellator;
 GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_aux_depth_stencil;
@@ -12960,6 +14000,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_object;
 GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_array_range;
 GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_vertex_program_evaluators;
 GLEW_VAR_EXPORT GLboolean __GLEW_APPLE_ycbcr_422;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_blend_func_extended;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_color_buffer_float;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_compatibility;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_copy_buffer;
@@ -12969,7 +14010,9 @@ GLEW_VAR_EXPORT GLboolean __GLEW_ARB_depth_texture;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_buffers_blend;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_elements_base_vertex;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_indirect;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_draw_instanced;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_explicit_attrib_location;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_coord_conventions;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_program_shadow;
@@ -12977,6 +14020,8 @@ GLEW_VAR_EXPORT GLboolean __GLEW_ARB_fragment_shader;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_object;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_framebuffer_sRGB;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_geometry_shader4;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader5;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_gpu_shader_fp64;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_pixel;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_half_float_vertex;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_imaging;
@@ -12986,21 +14031,29 @@ GLEW_VAR_EXPORT GLboolean __GLEW_ARB_matrix_palette;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multisample;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_multitexture;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_occlusion_query2;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_pixel_buffer_object;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_parameters;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_point_sprite;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_provoking_vertex;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sample_shading;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sampler_objects;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_seamless_cube_map;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_bit_encoding;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_objects;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_subroutine;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shader_texture_lod;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_100;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shading_language_include;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_shadow_ambient;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_sync;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_tessellation_shader;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_border_clamp;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_buffer_object_rgb32;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_bptc;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_compression_rgtc;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_cube_map_array;
@@ -13016,6 +14069,11 @@ GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_non_power_of_two;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_query_lod;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rectangle;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rg;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_rgb10_a2ui;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_texture_swizzle;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_timer_query;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback2;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transform_feedback3;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_transpose_matrix;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_uniform_buffer_object;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_array_bgra;
@@ -13024,6 +14082,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_blend;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_buffer_object;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_program;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_shader;
+GLEW_VAR_EXPORT GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev;
 GLEW_VAR_EXPORT GLboolean __GLEW_ARB_window_pos;
 GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_point_sprites;
 GLEW_VAR_EXPORT GLboolean __GLEW_ATIX_texture_env_combine3;
@@ -13103,6 +14162,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_EXT_scene_marker;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_secondary_color;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_shader_objects;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_separate_specular_color;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shader_image_load_store;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shadow_funcs;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_shared_texture_palette;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_stencil_clear_tag;
@@ -13138,6 +14198,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_EXT_timer_query;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_transform_feedback;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_array_bgra;
+GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_attrib_64bit;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_shader;
 GLEW_VAR_EXPORT GLboolean __GLEW_EXT_vertex_weighting;
 GLEW_VAR_EXPORT GLboolean __GLEW_GREMEDY_frame_terminator;
@@ -13182,6 +14243,9 @@ GLEW_VAR_EXPORT GLboolean __GLEW_NV_framebuffer_multisample_coverage;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_program4;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_geometry_shader4;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program4;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program5;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_program_fp64;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_gpu_shader5;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_half_float;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_light_max_exponent;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_multisample_filter_hint;
@@ -13196,6 +14260,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_NV_primitive_restart;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_register_combiners2;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_shader_buffer_load;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_tessellation_program5;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_emboss;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_texgen_reflection;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_texture_barrier;
@@ -13210,6 +14275,7 @@ GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_transform_feedback2;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_array_range2;
+GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_attrib_integer_64bit;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_buffer_unified_memory;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program;
 GLEW_VAR_EXPORT GLboolean __GLEW_NV_vertex_program1_1;
index f19e573f84d31d6d485e710a400774253934518b..637ef1eaab7757446f25ffc7473ea386b96fff1a 100644 (file)
 #ifdef __glxext_h_
 #error glxext.h included before glxew.h
 #endif
-#ifdef GLX_H
+
+#if defined(GLX_H) || defined(__GLX_glx_h__) || defined(__glx_h__)
 #error glx.h included before glxew.h
 #endif
 
 #define __glxext_h_
-#define __GLX_glx_h__
+
 #define GLX_H
+#define __GLX_glx_h__
+#define __glx_h__
 
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
@@ -421,6 +424,17 @@ extern void ( * glXGetProcAddressARB (const GLubyte *procName)) (void);
 
 #endif /* GLX_ARB_multisample */
 
+/* ---------------------- GLX_ARB_vertex_buffer_object --------------------- */
+
+#ifndef GLX_ARB_vertex_buffer_object
+#define GLX_ARB_vertex_buffer_object 1
+
+#define GLX_CONTEXT_ALLOW_BUFFER_BYTE_ORDER_MISMATCH_ARB 0x2095
+
+#define GLXEW_ARB_vertex_buffer_object GLXEW_GET_VAR(__GLXEW_ARB_vertex_buffer_object)
+
+#endif /* GLX_ARB_vertex_buffer_object */
+
 /* ----------------------- GLX_ATI_pixel_format_float ---------------------- */
 
 #ifndef GLX_ATI_pixel_format_float
@@ -644,6 +658,20 @@ typedef void ( * PFNGLXRELEASETEXIMAGEEXTPROC) (Display* display, GLXDrawable dr
 
 #endif /* GLX_EXT_visual_rating */
 
+/* -------------------------- GLX_INTEL_swap_event ------------------------- */
+
+#ifndef GLX_INTEL_swap_event
+#define GLX_INTEL_swap_event 1
+
+#define GLX_EXCHANGE_COMPLETE_INTEL 0x8180
+#define GLX_COPY_COMPLETE_INTEL 0x8181
+#define GLX_FLIP_COMPLETE_INTEL 0x8182
+#define GLX_BUFFER_SWAP_COMPLETE_INTEL_MASK 0x04000000
+
+#define GLXEW_INTEL_swap_event GLXEW_GET_VAR(__GLXEW_INTEL_swap_event)
+
+#endif /* GLX_INTEL_swap_event */
+
 /* -------------------------- GLX_MESA_agp_offset -------------------------- */
 
 #ifndef GLX_MESA_agp_offset
@@ -1369,6 +1397,7 @@ GLXEW_EXPORT GLboolean __GLXEW_ARB_fbconfig_float;
 GLXEW_EXPORT GLboolean __GLXEW_ARB_framebuffer_sRGB;
 GLXEW_EXPORT GLboolean __GLXEW_ARB_get_proc_address;
 GLXEW_EXPORT GLboolean __GLXEW_ARB_multisample;
+GLXEW_EXPORT GLboolean __GLXEW_ARB_vertex_buffer_object;
 GLXEW_EXPORT GLboolean __GLXEW_ATI_pixel_format_float;
 GLXEW_EXPORT GLboolean __GLXEW_ATI_render_texture;
 GLXEW_EXPORT GLboolean __GLXEW_EXT_fbconfig_packed_float;
@@ -1379,6 +1408,7 @@ GLXEW_EXPORT GLboolean __GLXEW_EXT_swap_control;
 GLXEW_EXPORT GLboolean __GLXEW_EXT_texture_from_pixmap;
 GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_info;
 GLXEW_EXPORT GLboolean __GLXEW_EXT_visual_rating;
+GLXEW_EXPORT GLboolean __GLXEW_INTEL_swap_event;
 GLXEW_EXPORT GLboolean __GLXEW_MESA_agp_offset;
 GLXEW_EXPORT GLboolean __GLXEW_MESA_copy_sub_buffer;
 GLXEW_EXPORT GLboolean __GLXEW_MESA_pixmap_colormap;
index 172669e39554ac7364a03d00778d4e9a730d539d..e4c2b3a3eba76f8484d4d79bf5934ef69516bee4 100644 (file)
@@ -427,6 +427,26 @@ struct __DRIswrastLoaderExtensionRec {
                     char *data, void *loaderPrivate);
 };
 
+/**
+ * Invalidate loader extension.  The presence of this extension
+ * indicates to the DRI driver that the loader will call invalidate in
+ * the __DRI2_FLUSH extension, whenever the needs to query for new
+ * buffers.  This means that the DRI driver can drop the polling in
+ * glViewport().
+ *
+ * The extension doesn't provide any functionality, it's only use to
+ * indicate to the driver that it can use the new semantics.  A DRI
+ * driver can use this to switch between the different semantics or
+ * just refuse to initialize if this extension isn't present.
+ */
+#define __DRI_USE_INVALIDATE "DRI_UseInvalidate"
+#define __DRI_USE_INVALIDATE_VERSION 1
+
+typedef struct __DRIuseInvalidateExtensionRec __DRIuseInvalidateExtension;
+struct __DRIuseInvalidateExtensionRec {
+   __DRIextension base;
+};
+
 /**
  * The remaining extensions describe driver extensions, immediately
  * available interfaces provided by the driver.  To start using the
index a4148357d49031a14b0aeeda671729e41727ad77..ee7d5c154a9c1e04d223bf6741be201bfb365cc8 100644 (file)
@@ -832,6 +832,7 @@ DrawBox(void)
 
    glDisable(GL_LIGHTING);
    glDisable(GL_TEXTURE_2D);
+   glLineWidth(1.0);
 
    glColor3f(1, 1, 1);
 
index b9b5e6e5a8c740f096fc963e39b973af2362b2a1..ff7d8df71821d864f6085a4046635a685011cc90 100644 (file)
@@ -84,8 +84,10 @@ _eglutChooseConfig(void)
    renderable_type = 0x0;
    if (_eglut->api_mask & EGLUT_OPENGL_BIT)
       renderable_type |= EGL_OPENGL_BIT;
-   if (_eglut->api_mask & (EGLUT_OPENGL_ES1_BIT | EGLUT_OPENGL_ES2_BIT))
+   if (_eglut->api_mask & EGLUT_OPENGL_ES1_BIT)
       renderable_type |= EGL_OPENGL_ES_BIT;
+   if (_eglut->api_mask & EGLUT_OPENGL_ES2_BIT)
+      renderable_type |= EGL_OPENGL_ES2_BIT;
    if (_eglut->api_mask & EGLUT_OPENVG_BIT)
       renderable_type |= EGL_OPENVG_BIT;
    config_attribs[i++] = renderable_type;
index 79cd5fc65339e8910a5675a076d31df5dfbb0809..a49255bbb2eb57476a7aeae572542898d1752083 100644 (file)
@@ -7,9 +7,9 @@ include $(TOP)/configs/current
 INCLUDE_DIRS = -I$(TOP)/include $(X11_CFLAGS)
 
 HEADERS = $(TOP)/include/GLES/egl.h
-LIB_DEP = $(TOP)/$(LIB_DIR)/libEGL.so
+LIB_DEP = $(TOP)/$(LIB_DIR)/$(EGL_LIB_NAME)
 
-LIBS = -L$(TOP)/$(LIB_DIR) -lEGL -lGL -lm
+LIBS = -L$(TOP)/$(LIB_DIR) -l$(EGL_LIB) -l$(GL_LIB) -lm
 
 EGLUT_DIR = $(TOP)/progs/egl/eglut
 
index 28da9c0ac740c9f86ca5bfc6617d8d83a2e9c933..430deb26e5e1a9b5e3d4268ed11801ee1062f73e 100644 (file)
 
 #include "eglut.h"
 
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
 static GLfloat view_rotx = 20.0, view_roty = 30.0, view_rotz = 0.0;
 static GLint gear1, gear2, gear3;
 static GLfloat angle = 0.0;
index 593145d4bf2a8931b4d8761781ad487ab32026ba..e7802f80034134159da82cac8ec424fd9ee2db63 100644 (file)
@@ -12,13 +12,13 @@ HEADERS = $(TOP)/include/GLES/egl.h
 
 
 ES1_LIB_DEPS = \
-       $(TOP)/$(LIB_DIR)/libEGL.so \
-       $(TOP)/$(LIB_DIR)/libGLESv1_CM.so
+       $(TOP)/$(LIB_DIR)/$(EGL_LIB_NAME) \
+       $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME)
 
 
 ES1_LIBS = \
-       -L$(TOP)/$(LIB_DIR) -lEGL \
-       -L$(TOP)/$(LIB_DIR) -lGLESv1_CM $(LIBDRM_LIB) $(X11_LIBS)
+       -L$(TOP)/$(LIB_DIR) -l$(EGL_LIB) -l$(GLESv1_CM_LIB) \
+       $(LIBDRM_LIB) $(X11_LIBS)
 
 EGLUT_DIR = $(TOP)/progs/egl/eglut
 
index 60f864445af233467bc085505ef6cc7e4625510f..1b4dbb666f4cc08786da8715b87ccf3bb61d9d8a 100644 (file)
@@ -22,6 +22,9 @@
 #include <EGL/egl.h>
 
 
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
 
 static int WinWidth = 300, WinHeight = 300;
 
index 0200fa4cb06c07f7add81e9959855ecc8af962b6..cd2abbd51b7a9334b22415791dfe19ba674d7a00 100644 (file)
 #include <EGL/egl.h>
 
 
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
 static int TexWidth = 256, TexHeight = 256;
 
 static int WinWidth = 300, WinHeight = 300;
index 8f262b53d6c708f5a09a55e82cf2ac9d02beee62..18ddff3fe4ac3f77ff269ca7b2b85d1bb923abd2 100644 (file)
 
 #include "eglut.h"
 
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
 static const struct {
    GLenum internalFormat;
    const char *name;
index 89feb34acc1d90796c909710a1dff7cd7dbcb7b4..bf14513d7fb3880df869f781e26f21dce6dbfbc0 100644 (file)
@@ -14,13 +14,13 @@ HEADERS = $(TOP)/include/GLES/egl.h
 
 
 ES2_LIB_DEPS = \
-       $(TOP)/$(LIB_DIR)/libEGL.so \
-       $(TOP)/$(LIB_DIR)/libGLESv2.so
+       $(TOP)/$(LIB_DIR)/$(EGL_LIB_NAME) \
+       $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME)
 
 
 ES2_LIBS = \
-       -L$(TOP)/$(LIB_DIR) -lEGL \
-       -L$(TOP)/$(LIB_DIR) -lGLESv2 $(LIBDRM_LIB) $(X11_LIBS) \
+       -L$(TOP)/$(LIB_DIR) -l$(EGL_LIB) -l$(GLESv2_LIB) \
+       $(LIBDRM_LIB) $(X11_LIBS)
 
 PROGRAMS = \
        es2_info \
index 8e7a3e52490fe431a8ef214cfea6703660dcfb8c..6bd6594320ac34c363f6892778d7729e3f98e1c7 100644 (file)
 #include <EGL/eglext.h>
 #include "eglut.h"
 
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
 struct gear {
    GLfloat *vertices;
    GLuint vbo;
index 8981d8a7e217e9a5e8507b503fba8da39dc934d6..812dbf031e4b55b8613f8cf5f5b594b663c0ed2c 100644 (file)
 #include <EGL/egl.h>
 
 
+#ifndef M_PI
+#define M_PI 3.14159265
+#endif
+
 #define FLOAT_TO_FIXED(X)   ((X) * 65535.0)
 
 
index 3b11933db26ff6e02ae232ee02393859d53ec9a7..9a96ccc45f7db0163e482cc18215a4b75e906ce1 100644 (file)
@@ -3,7 +3,7 @@
 TOP = ../../..
 include $(TOP)/configs/current
 
-VG_LIBS=-lm -lEGL -lOpenVG -L$(TOP)/lib -L$(TOP)/lib/gallium
+VG_LIBS=-lm -L$(TOP)/$(LIB_DIR) -l$(EGL_LIB) -l$(VG_LIB)
 INCLUDE_DIRS = -I$(TOP)/include $(X11_CFLAGS)
 
 EGLUT_DIR = $(TOP)/progs/egl/eglut
index 0eb0a5de9a500bc0ef2a23447091f9f896ec4b0f..ee6ae4247fb58e73a0a69db2103dea82fc95337a 100644 (file)
@@ -15,7 +15,7 @@ To build, build a normal gallium build and from this directory do the following.
 = Usage =
 
 Make sure that you driver has trace integration, see
-src/gallium/driver/trace/README for more information about that. Then from on
+src/gallium/driver/rbug/README for more information about that. Then from on
 the computer that you want to debug do:
 
  export GALLIUM_RBUG=true
@@ -24,7 +24,10 @@ the computer that you want to debug do:
 
 From the debugging computer launch apps form this directory. Currently ip
 addresses are hardcoded and you need to edit the application, but that will
-change in the future.
+change in the future. For a more advanced gui application see:
+
+   http://cgit.freedesktop.org/mesa/rbug-gui
+
 
 = Testing =
 
index 0f938f9b0c1d08db6e94c4d88f646dc657535ef2..f8473e64e213f006f2f97f5041b3d5849afb896e 100644 (file)
@@ -134,6 +134,9 @@ INCLUDES = -I. -I$(TOP)/include
 UTIL_FILES = readtex.h readtex.c
 
 
+GL_API_XML = $(TOP)/src/mapi/glapi/gen/gl_API.xml
+
+
 ##### TARGETS #####
 
 default: $(UTIL_FILES) $(PROGS)
@@ -160,7 +163,7 @@ clean:
 # auto code generation
 getprocaddress: getprocaddress.c getproclist.h
 
-getproclist.h: $(TOP)/src/mesa/glapi/gen/gl_API.xml getprocaddress.c getprocaddress.py
+getproclist.h: $(GL_API_XML) getprocaddress.c getprocaddress.py
        python getprocaddress.py > getproclist.h
 
 arraytexture: arraytexture.o readtex.o
index f63d59f3ceccd4ee7b689eb45310f10dffc71905..e7d8343721402d8249bea132bcc5c289fb0ca2b9 100644 (file)
@@ -270,6 +270,9 @@ main(int argc, char *argv[])
    printf("Draw Buffer: %s\n", (Buffer == GL_BACK) ? "Back" : "Front");
    Init();
 
+   printf("Mode: %s\n", (UseBlit ? "glBlitFramebuffer" : "glCopyPixels"));
+   printf("Alpha Test: %s\n", (AlphaTest ? "yes" : "no"));
+
    glutMainLoop();
    return 0;
 }
index 38ca7000df24b081a2368ac5abda6975098fa25b..f7903d2bf88337c4b1d603b5cdd4758285689424 100644 (file)
@@ -1189,6 +1189,7 @@ exercise_buffer_objects(enum Map_Buffer_Usage usage)
    GLint bufferMapped;
    static GLubyte data[BUFFER_DATA_SIZE] = {0};
    float *dataPtr = NULL;
+   const char *extensions = (const char *) glGetString(GL_EXTENSIONS);
 
    /* Get the function pointers we need.  These are from
     * GL_ARB_vertex_buffer_object and are required in all
@@ -1216,6 +1217,9 @@ exercise_buffer_objects(enum Map_Buffer_Usage usage)
     * we're given Use_Map_Buffer_Range.  Test it before using it.
     */
    DECLARE_GLFUNC_PTR(BufferParameteriAPPLE, PFNGLBUFFERPARAMETERIAPPLEPROC);
+   if (!strstr("GL_APPLE_flush_buffer_range", extensions)) {
+      BufferParameteriAPPLE = NULL;
+   }
 
    /* Make sure we have all the function pointers we need. */
    if (GenBuffersARB == NULL ||
@@ -1286,7 +1290,7 @@ exercise_buffer_objects(enum Map_Buffer_Usage usage)
     * using MapBufferRange, we first have to flush the range we modified.
     */
    if (usage == Use_Map_Buffer_Range) {
-      (*FlushMappedBufferRange)(GL_ARRAY_BUFFER_ARB, 4, 16);
+      (*FlushMappedBufferRange)(GL_ARRAY_BUFFER_ARB, 0, 16);
    }
    if (!(*UnmapBufferARB)(GL_ARRAY_BUFFER_ARB)) {
       fprintf(stderr, "%s: UnmapBuffer failed\n", __FUNCTION__);
@@ -1720,19 +1724,22 @@ static GLboolean
 test_CompressedTexImage3DARB(generic_func func)
 {
    (void) func;
-   return exercise_CompressedTextures(GL_TEXTURE_3D);
+   /*return exercise_CompressedTextures(GL_TEXTURE_3D);*/
+   return GL_TRUE;
 }
 static GLboolean
 test_CompressedTexSubImage3DARB(generic_func func)
 {
    (void) func;
-   return exercise_CompressedTextures(GL_TEXTURE_3D);
+   /*return exercise_CompressedTextures(GL_TEXTURE_3D);*/
+   return GL_TRUE;
 }
 static GLboolean
 test_GetCompressedTexImageARB(generic_func func)
 {
    (void) func;
-   return exercise_CompressedTextures(GL_TEXTURE_3D);
+   /*return exercise_CompressedTextures(GL_TEXTURE_3D);*/
+   return GL_TRUE;
 }
 
 /* Wrappers on exercise_fences(). */
index 60111cb80108406807cf3f0c667999b2d6cabc78..c421f90cb68a508501019ab12ccf08f3679ab772 100644 (file)
@@ -3,8 +3,10 @@
 
 # Helper for the getprocaddress.c test.
 
+glapi_xml_path = "../../src/mapi/glapi/gen/"
+
 import sys, getopt, re
-sys.path.append("../../src/mesa/glapi/gen" )
+sys.path.append(glapi_xml_path)
 import gl_XML
 import license
 
@@ -74,7 +76,7 @@ static struct name_test_pair functions[] = {"""
 
 
 if __name__ == '__main__':
-       file_name = "../../src/mesa/glapi/gen/gl_API.xml"
+       file_name = glapi_xml_path + "gl_API.xml"
     
        try:
                (args, trail) = getopt.getopt(sys.argv[1:], "f:")
diff --git a/progs/vpglsl/func.glsl b/progs/vpglsl/func.glsl
new file mode 100644 (file)
index 0000000..0553988
--- /dev/null
@@ -0,0 +1,33 @@
+#version 120
+const int KernelSize = 16;
+uniform float KernelValue1f[KernelSize];
+
+
+float add_two(float a, float b)
+{
+    if (a > b)
+        return a - b;
+    else
+        return a + b;
+}
+
+vec4 func(vec4 x)
+{
+    int i;
+    vec4 tmp = gl_Color;
+    vec4 sum = x;
+
+    for (i = 0; i < KernelSize; ++i) {
+        sum = vec4( add_two(sum.x, KernelValue1f[i]) );
+    }
+    return sum;
+}
+
+void main(void)
+{
+    vec4 sum = vec4(0.0);
+
+    sum = func(sum);
+    gl_Position = gl_Vertex;
+    gl_FrontColor = sum;
+}
diff --git a/progs/vpglsl/func2.glsl b/progs/vpglsl/func2.glsl
new file mode 100644 (file)
index 0000000..df964ed
--- /dev/null
@@ -0,0 +1,54 @@
+#version 120
+const int KernelSize = 16;
+uniform float KernelValue1f[KernelSize];
+
+
+float add_two(float a, float b)
+{
+    if (a > b)
+        return a - b;
+    else
+        return a + b;
+}
+
+vec4 myfunc(vec4 x, vec4 mult, vec4 c)
+{
+   if (x.x >= 0.5) {
+      return mult * c;
+   } else {
+      return mult + c;
+   }
+}
+
+vec4 func2(vec4 x)
+{
+    int i;
+    vec4 color = vec4(0);
+       for (i = 0; i < KernelSize; ++i) {
+           vec4 tmp = vec4(1./KernelSize);
+           color += myfunc(x, tmp, gl_Color);
+       }
+    return x * color;
+}
+
+vec4 func(vec4 x)
+{
+    int i;
+    vec4 tmp = gl_Color;
+    vec4 sum = x;
+
+    for (i = 0; i < KernelSize; ++i) {
+        sum = vec4( add_two(sum.x, KernelValue1f[i]) );
+    }
+    sum = func2(sum);
+    return sum;
+}
+
+void main(void)
+{
+    vec4 sum = vec4(0.0);
+
+    sum = func(sum);
+    gl_Position = gl_Vertex;
+    gl_FrontColor = sum;
+}
index b656e58924e4006da1ec74d74b084d697f95568a..b774f504aece416d50f6fe8e83917c200bb162db 100644 (file)
@@ -35,6 +35,7 @@
 
 #define GLX_GLXEXT_PROTOTYPES
 
+#include <assert.h>
 #include <X11/Xlib.h>
 #include <X11/Xutil.h>
 #include <GL/gl.h>
@@ -99,6 +100,8 @@ struct visual_attribs
    int accumRedSize, accumGreenSize, accumBlueSize, accumAlphaSize;
    int numSamples, numMultisample;
    int visualCaveat;
+   int floatComponents;
+   int srgb;
 };
 
    
@@ -642,9 +645,29 @@ visual_render_type_name(int type)
          return "rgba|ci";
       default:
          return "";
-      }
+   }
 }
 
+static const char *
+caveat_string(int caveat)
+{
+   switch (caveat) {
+#ifdef GLX_EXT_visual_rating
+      case GLX_SLOW_VISUAL_EXT:
+         return "Slow";
+      case GLX_NON_CONFORMANT_VISUAL_EXT:
+         return "Ncon";
+      case GLX_NONE_EXT:
+         /* fall-through */
+#endif
+      case 0:
+         /* fall-through */
+      default:
+         return "None";
+   }
+}
+
+
 static GLboolean
 get_visual_attribs(Display *dpy, XVisualInfo *vInfo,
                    struct visual_attribs *attribs)
@@ -728,6 +751,12 @@ get_visual_attribs(Display *dpy, XVisualInfo *vInfo,
    attribs->visualCaveat = 0;
 #endif
 
+#if defined(GLX_EXT_framebuffer_sRGB)
+   if (ext && strstr(ext, "GLX_EXT_framebuffer_sRGB")) {
+      glXGetConfig(dpy, vInfo, GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, &attribs->srgb);
+   }
+#endif
+
    return GL_TRUE;
 }
 
@@ -759,20 +788,24 @@ static GLboolean
 get_fbconfig_attribs(Display *dpy, GLXFBConfig fbconfig,
                     struct visual_attribs *attribs)
 {
+   const char *ext = glXQueryExtensionsString(dpy, 0);
    int visual_type;
+   XVisualInfo *vInfo;
 
    memset(attribs, 0, sizeof(struct visual_attribs));
 
    glXGetFBConfigAttrib(dpy, fbconfig, GLX_FBCONFIG_ID, &attribs->id);
 
-#if 0
-   attribs->depth = vInfo->depth;
-   attribs->redMask = vInfo->red_mask;
-   attribs->greenMask = vInfo->green_mask;
-   attribs->blueMask = vInfo->blue_mask;
-   attribs->colormapSize = vInfo->colormap_size;
-   attribs->bitsPerRGB = vInfo->bits_per_rgb;
-#endif
+   vInfo = glXGetVisualFromFBConfig(dpy, fbconfig);
+
+   if (vInfo != NULL) {
+      attribs->depth = vInfo->depth;
+      attribs->redMask = vInfo->red_mask;
+      attribs->greenMask = vInfo->green_mask;
+      attribs->blueMask = vInfo->blue_mask;
+      attribs->colormapSize = vInfo->colormap_size;
+      attribs->bitsPerRGB = vInfo->bits_per_rgb;
+   }
 
    glXGetFBConfigAttrib(dpy, fbconfig, GLX_X_VISUAL_TYPE, &visual_type);
    attribs->klass = glx_token_to_visual_class(visual_type);
@@ -813,6 +846,24 @@ get_fbconfig_attribs(Display *dpy, GLXFBConfig fbconfig,
    glXGetFBConfigAttrib(dpy, fbconfig, GLX_SAMPLES, &attribs->numSamples);
    glXGetFBConfigAttrib(dpy, fbconfig, GLX_CONFIG_CAVEAT, &attribs->visualCaveat);
 
+#if defined(GLX_NV_float_buffer)
+   if (ext && strstr(ext, "GLX_NV_float_buffer")) {
+      glXGetFBConfigAttrib(dpy, fbconfig, GLX_FLOAT_COMPONENTS_NV, &attribs->floatComponents);
+   }
+#endif
+#if defined(GLX_ARB_fbconfig_float)
+   if (ext && strstr(ext, "GLX_ARB_fbconfig_float")) {
+      if (attribs->render_type & GLX_RGBA_FLOAT_BIT_ARB) {
+         attribs->floatComponents = True;
+      }
+   }
+#endif
+
+#if defined(GLX_EXT_framebuffer_sRGB)
+   if (ext && strstr(ext, "GLX_EXT_framebuffer_sRGB")) {
+      glXGetFBConfigAttrib(dpy, fbconfig, GLX_FRAMEBUFFER_SRGB_CAPABLE_EXT, &attribs->srgb);
+   }
+#endif
    return GL_TRUE;
 }
 
@@ -830,9 +881,11 @@ print_visual_attribs_verbose(const struct visual_attribs *attribs)
           attribs->bufferSize, attribs->level,
          visual_render_type_name(attribs->render_type),
           attribs->doubleBuffer, attribs->stereo);
-   printf("    rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n",
+   printf("    rgba: redSize=%d greenSize=%d blueSize=%d alphaSize=%d float=%c sRGB=%c\n",
           attribs->redSize, attribs->greenSize,
-          attribs->blueSize, attribs->alphaSize);
+          attribs->blueSize, attribs->alphaSize,
+          attribs->floatComponents ? 'Y' : 'N',
+          attribs->srgb ? 'Y' : 'N');
    printf("    auxBuffers=%d depthSize=%d stencilSize=%d\n",
           attribs->auxBuffers, attribs->depthSize, attribs->stencilSize);
    printf("    accum: redSize=%d greenSize=%d blueSize=%d alphaSize=%d\n",
@@ -863,30 +916,18 @@ print_visual_attribs_verbose(const struct visual_attribs *attribs)
 static void
 print_visual_attribs_short_header(void)
 {
- printf("   visual  x  bf lv rg d st colorbuffer ax dp st accumbuffer  ms  cav\n");
- printf(" id dep cl sp sz l  ci b ro  r  g  b  a bf th cl  r  g  b  a ns b eat\n");
- printf("----------------------------------------------------------------------\n");
+ printf("    visual  x   bf lv rg d st  colorbuffer  sr ax dp st accumbuffer  ms  cav\n");
+ printf("  id dep cl sp  sz l  ci b ro  r  g  b  a F gb bf th cl  r  g  b  a ns b eat\n");
+ printf("----------------------------------------------------------------------------\n");
 }
 
 
 static void
 print_visual_attribs_short(const struct visual_attribs *attribs)
 {
-   char *caveat = NULL;
-#ifdef GLX_EXT_visual_rating
-   if (attribs->visualCaveat == GLX_NONE_EXT || attribs->visualCaveat == 0)
-      caveat = "None";
-   else if (attribs->visualCaveat == GLX_SLOW_VISUAL_EXT)
-      caveat = "Slow";
-   else if (attribs->visualCaveat == GLX_NON_CONFORMANT_VISUAL_EXT)
-      caveat = "Ncon";
-   else
-      caveat = "None";
-#else
-   caveat = "None";
-#endif 
+   const char *caveat = caveat_string(attribs->visualCaveat);
 
-   printf("0x%02x %2d %2s %2d %2d %2d %c%c %c  %c %2d %2d %2d %2d %2d %2d %2d",
+   printf("0x%03x %2d %2s %2d %3d %2d %c%c %c %c  %2d %2d %2d %2d %c  %c %2d %2d %2d",
           attribs->id,
           attribs->depth,
           visual_class_abbrev(attribs->klass),
@@ -899,6 +940,8 @@ print_visual_attribs_short(const struct visual_attribs *attribs)
           attribs->stereo ? 'y' : '.',
           attribs->redSize, attribs->greenSize,
           attribs->blueSize, attribs->alphaSize,
+          attribs->floatComponents ? 'f' : '.',
+          attribs->srgb ? 's' : '.',
           attribs->auxBuffers,
           attribs->depthSize,
           attribs->stencilSize
@@ -916,16 +959,18 @@ print_visual_attribs_short(const struct visual_attribs *attribs)
 static void
 print_visual_attribs_long_header(void)
 {
- printf("Vis  Vis   Visual Trans  buff lev render DB ste  r   g   b   a  aux dep ste  accum buffers  MS   MS\n");
- printf(" ID Depth   Type  parent size el   type     reo sz  sz  sz  sz  buf th  ncl  r   g   b   a  num bufs\n");
- printf("----------------------------------------------------------------------------------------------------\n");
+ printf("Vis   Vis   Visual Trans  buff lev render DB ste  r   g   b   a      s  aux dep ste  accum buffer   MS   MS         \n");
+ printf(" ID  Depth   Type  parent size el   type     reo sz  sz  sz  sz flt rgb buf th  ncl  r   g   b   a  num bufs caveats\n");
+ printf("--------------------------------------------------------------------------------------------------------------------\n");
 }
 
 
 static void
 print_visual_attribs_long(const struct visual_attribs *attribs)
 {
-   printf("0x%2x %2d %-11s %2d     %2d %2d  %4s %3d %3d %3d %3d %3d %3d",
+   const char *caveat = caveat_string(attribs->visualCaveat);
+
+   printf("0x%3x %2d %-11s %2d    %3d %2d  %4s %3d %3d %3d %3d %3d %3d",
           attribs->id,
           attribs->depth,
           visual_class_name(attribs->klass),
@@ -939,13 +984,16 @@ print_visual_attribs_long(const struct visual_attribs *attribs)
           attribs->blueSize, attribs->alphaSize
           );
 
-   printf(" %3d %4d %2d %3d %3d %3d %3d  %2d  %2d\n",
+   printf("  %c   %c %3d %4d %2d %3d %3d %3d %3d  %2d  %2d %6s\n",
+          attribs->floatComponents ? 'f' : '.',
+          attribs->srgb ? 's' : '.',
           attribs->auxBuffers,
           attribs->depthSize,
           attribs->stencilSize,
           attribs->accumRedSize, attribs->accumGreenSize,
           attribs->accumBlueSize, attribs->accumAlphaSize,
-          attribs->numSamples, attribs->numMultisample
+          attribs->numSamples, attribs->numMultisample,
+          caveat
           );
 }
 
index 9533b2b362c31cdce9aa7bf76b646b4673d39b73..8adc8f5c970be3693f017ba501c6e370d46e69b2 100644 (file)
@@ -42,7 +42,7 @@ import SCons.Tool
 import SCons.Util
 
 # This is what we search for to find mingw:
-prefixes = SCons.Util.Split("""
+prefixes32 = SCons.Util.Split("""
     mingw32-
     mingw32msvc-
     i386-mingw32-
@@ -55,8 +55,17 @@ prefixes = SCons.Util.Split("""
     i686-mingw32msvc-
     i686-pc-mingw32-
 """)
+prefixes64 = SCons.Util.Split("""
+    amd64-mingw32-
+    amd64-mingw32msvc-
+    amd64-pc-mingw32-
+""")
 
 def find(env):
+    if env['machine'] == 'x86_64':
+        prefixes = prefixes64
+    else:
+        prefixes = prefixes32
     for prefix in prefixes:
         # First search in the SCons path and then the OS path:
         if env.WhereIs(prefix + 'gcc') or SCons.Util.WhereIs(prefix + 'gcc'):
index cf6db730da24c4c3725068ede845848df71d00ef..b72491d96f2355accc236fd2edb2b55016e2e53b 100644 (file)
@@ -1,6 +1,7 @@
 Import('*')
 
 SConscript('glsl/SConscript')
+SConscript('mapi/glapi/SConscript')
 
 if 'mesa' in env['statetrackers']:
     SConscript('mesa/SConscript')
index e9a614ce62ddcf52646ba22d0f300c185fd97b9d..08e82c65e9beb964586a8cae3f4ee40f8c7b7561 100644 (file)
 #
 
 
-EGL_DRIVER_PATH = $(TOP)/$(LIB_DIR)/$(EGL_DRIVER)
+EGL_DRIVER_PATH = $(TOP)/$(LIB_DIR)/egl/$(EGL_DRIVER)
 EGL_OBJECTS = $(EGL_SOURCES:.c=.o)
 
 
 default: depend $(EGL_DRIVER_PATH)
 
 $(EGL_DRIVER_PATH): $(EGL_DRIVER)
-       $(INSTALL) $< $(TOP)/$(LIB_DIR)
+       @$(INSTALL) -d $(TOP)/$(LIB_DIR)/egl
+       $(INSTALL) $< $(TOP)/$(LIB_DIR)/egl
 
 $(EGL_DRIVER): $(EGL_OBJECTS) Makefile $(TOP)/src/egl/drivers/Makefile.template
        @$(MKLIB) -o $(EGL_DRIVER) -noprefix \
                -linker '$(CC)' -ldflags '$(LDFLAGS)' \
                -L$(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \
-               $(EGL_OBJECTS) $(EGL_LIBS)
+               $(EGL_OBJECTS) $(EGL_LIBS) -l$(EGL_LIB)
 
 .c.o:
        $(CC) -c $(EGL_INCLUDES) $(CFLAGS) $(EGL_CFLAGS) $< -o $@
index 7339c97c77d2a6c1da821f1fd21e4e203abd085f..c3aacff1cfe27061e796b8a0eec2fb4279fe0b66 100644 (file)
@@ -11,9 +11,9 @@ INCLUDE_DIRS = \
        $(shell pkg-config --cflags-only-I libdrm) \
        -I$(TOP)/include \
        -I$(TOP)/include/GL/internal \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/mesa/main \
-       -I$(TOP)/src/mesa/glapi \
        -I$(TOP)/src/mesa/math \
        -I$(TOP)/src/mesa/transform \
        -I$(TOP)/src/mesa/shader \
index 129e67b8c6643a6aa7e5424618ec7781e092a044..4e760aec4c87554603338ffeb9084bafbee4b6f2 100644 (file)
@@ -9,7 +9,7 @@ EGL_SOURCES = egl_dri2.c
 EGL_INCLUDES = \
        -I$(TOP)/include \
        -I$(TOP)/src/egl/main \
-       -I$(TOP)/src/mesa \
+       -I$(TOP)/src/mapi \
        -DDEFAULT_DRIVER_DIR=\"$(DRI_DRIVER_SEARCH_DIR)\" \
        $(EGL_DRI2_CFLAGS)
 
index 69f3c28c9e40665b09c8afbbc735a2001c3a4cc6..eb9a6510ed0c282c27d581d8cd3d7e96d080a892 100644 (file)
@@ -51,6 +51,8 @@
 #include "eglsurface.h"
 #include "eglimage.h"
 
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
+
 struct dri2_egl_driver
 {
    _EGLDriver base;
@@ -163,7 +165,7 @@ EGLint dri2_to_egl_attribute_map[] = {
    0,                          /* __DRI_ATTRIB_BIND_TO_TEXTURE_RGBA */
    0,                          /* __DRI_ATTRIB_BIND_TO_MIPMAP_TEXTURE */
    0,                          /* __DRI_ATTRIB_BIND_TO_TEXTURE_TARGETS */
-   0,                          /* __DRI_ATTRIB_YINVERTED */
+   EGL_Y_INVERTED_NOK,         /* __DRI_ATTRIB_YINVERTED */
 };
 
 static void
@@ -415,12 +417,6 @@ dri2_get_buffers_with_format(__DRIdrawable * driDrawable,
    return dri2_surf->buffers;
 }
 
-#ifdef GLX_USE_TLS
-static const char dri_driver_format[] = "%.*s/tls/%s_dri.so";
-#else
-static const char dri_driver_format[] = "%.*s/%s_dri.so";
-#endif
-
 static const char dri_driver_path[] = DEFAULT_DRIVER_DIR;
 
 struct dri2_extension_match {
@@ -678,19 +674,28 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
    dri2_dpy->driver = NULL;
    end = search_paths + strlen(search_paths);
    for (p = search_paths; p < end && dri2_dpy->driver == NULL; p = next + 1) {
+      int len;
       next = strchr(p, ':');
       if (next == NULL)
          next = end;
 
+      len = next - p;
+#if GLX_USE_TLS
       snprintf(path, sizeof path,
-              dri_driver_format, (int) (next - p), p, dri2_dpy->driver_name);
+              "%.*s/tls/%s_dri.so", len, p, dri2_dpy->driver_name);
       dri2_dpy->driver = dlopen(path, RTLD_NOW | RTLD_GLOBAL);
-      if (dri2_dpy->driver == NULL)
-        _eglLog(_EGL_DEBUG, "failed to open %s: %s\n", path, dlerror());
+#endif
+      if (dri2_dpy->driver == NULL) {
+        snprintf(path, sizeof path,
+                 "%.*s/%s_dri.so", len, p, dri2_dpy->driver_name);
+        dri2_dpy->driver = dlopen(path, RTLD_NOW | RTLD_GLOBAL);
+        if (dri2_dpy->driver == NULL)
+           _eglLog(_EGL_DEBUG, "failed to open %s: %s\n", path, dlerror());
+      }
    }
 
    if (dri2_dpy->driver == NULL) {
-      _eglLog(_EGL_FATAL,
+      _eglLog(_EGL_WARNING,
              "DRI2: failed to open any driver (search paths %s)",
              search_paths);
       goto cleanup_conn;
@@ -699,7 +704,7 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
    _eglLog(_EGL_DEBUG, "DRI2: dlopen(%s)", path);
    extensions = dlsym(dri2_dpy->driver, __DRI_DRIVER_EXTENSIONS);
    if (extensions == NULL) {
-      _eglLog(_EGL_FATAL,
+      _eglLog(_EGL_WARNING,
              "DRI2: driver exports no extensions (%s)", dlerror());
       goto cleanup_driver;
    }
@@ -709,7 +714,7 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
 
    dri2_dpy->fd = open(dri2_dpy->device_name, O_RDWR);
    if (dri2_dpy->fd == -1) {
-      _eglLog(_EGL_FATAL,
+      _eglLog(_EGL_WARNING,
              "DRI2: could not open %s (%s)", dri2_dpy->device_name,
               strerror(errno));
       goto cleanup_driver;
@@ -748,7 +753,7 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
                                      &dri2_dpy->driver_configs, dri2_dpy);
 
    if (dri2_dpy->dri_screen == NULL) {
-      _eglLog(_EGL_FATAL, "DRI2: failed to create dri screen");
+      _eglLog(_EGL_WARNING, "DRI2: failed to create dri screen");
       goto cleanup_fd;
    }
 
@@ -778,6 +783,8 @@ dri2_initialize(_EGLDriver *drv, _EGLDisplay *disp,
    disp->Extensions.KHR_image_pixmap = EGL_TRUE;
    disp->Extensions.KHR_gl_renderbuffer_image = EGL_TRUE;
    disp->Extensions.KHR_gl_texture_2D_image = EGL_TRUE;
+   disp->Extensions.NOK_swap_region = EGL_TRUE;
+   disp->Extensions.NOK_texture_from_pixmap = EGL_TRUE;
 
    /* we're supporting EGL 1.4 */
    *major = 1;
@@ -1067,7 +1074,8 @@ dri2_create_pbuffer_surface(_EGLDriver *drv, _EGLDisplay *disp,
 }
 
 static EGLBoolean
-dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
+dri2_copy_region(_EGLDriver *drv, _EGLDisplay *disp,
+                _EGLSurface *draw, xcb_xfixes_region_t region)
 {
    struct dri2_egl_driver *dri2_drv = dri2_egl_driver(drv);
    struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
@@ -1099,7 +1107,7 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
 
    cookie = xcb_dri2_copy_region_unchecked(dri2_dpy->conn,
                                           dri2_surf->drawable,
-                                          dri2_surf->region,
+                                          region,
                                           XCB_DRI2_ATTACHMENT_BUFFER_FRONT_LEFT,
                                           XCB_DRI2_ATTACHMENT_BUFFER_FAKE_FRONT_LEFT);
    free(xcb_dri2_copy_region_reply(dri2_dpy->conn, cookie, NULL));
@@ -1107,6 +1115,44 @@ dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
    return EGL_TRUE;
 }
 
+static EGLBoolean
+dri2_swap_buffers(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw)
+{
+   struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
+
+   return dri2_copy_region(drv, disp, draw, dri2_surf->region);
+}
+
+static EGLBoolean
+dri2_swap_buffers_region(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *draw,
+                        EGLint numRects, const EGLint *rects)
+{
+   struct dri2_egl_display *dri2_dpy = dri2_egl_display(disp);
+   struct dri2_egl_surface *dri2_surf = dri2_egl_surface(draw);
+   EGLBoolean ret;
+   xcb_xfixes_region_t region;
+   xcb_rectangle_t rectangles[16];
+   int i;
+
+   if (numRects > ARRAY_SIZE(rectangles))
+      return dri2_copy_region(drv, disp, draw, dri2_surf->region);
+
+   /* FIXME: Invert y here? */
+   for (i = 0; i < numRects; i++) {
+      rectangles[i].x = rects[i * 4];
+      rectangles[i].y = rects[i * 4 + 1];
+      rectangles[i].width = rects[i * 4 + 2];
+      rectangles[i].height = rects[i * 4 + 3];
+   }
+
+   region = xcb_generate_id(dri2_dpy->conn);
+   xcb_xfixes_create_region(dri2_dpy->conn, region, numRects, rectangles);
+   ret = dri2_copy_region(drv, disp, draw, region);
+   xcb_xfixes_destroy_region(dri2_dpy->conn, region);
+
+   return ret;
+}
+
 /*
  * Called from eglGetProcAddress() via drv->API.GetProcAddress().
  */
@@ -1187,19 +1233,8 @@ dri2_bind_tex_image(_EGLDriver *drv,
    ctx = _eglGetCurrentContext();
    dri2_ctx = dri2_egl_context(ctx);
 
-   if (buffer != EGL_BACK_BUFFER) {
-      _eglError(EGL_BAD_PARAMETER, "eglBindTexImage");
-      return EGL_FALSE;
-   }
-
-   /* We allow binding pixmaps too... Not conformat, but we can do it
-    * for free and it's useful for X compositors.  Supposedly there's
-    * a EGL_NOKIA_texture_from_pixmap extension that allows that, but
-    * I couldn't find it at this time. */
-   if ((dri2_surf->base.Type & (EGL_PBUFFER_BIT | EGL_PIXMAP_BIT)) == 0) {
-      _eglError(EGL_BAD_SURFACE, "eglBindTexImage");
+   if (!_eglBindTexImage(drv, disp, surf, buffer))
       return EGL_FALSE;
-   }
 
    switch (dri2_surf->base.TextureFormat) {
    case EGL_TEXTURE_RGB:
@@ -1209,8 +1244,7 @@ dri2_bind_tex_image(_EGLDriver *drv,
       format = __DRI_TEXTURE_FORMAT_RGBA;
       break;
    default:
-      _eglError(EGL_BAD_MATCH, "eglBindTexImage");
-      return EGL_FALSE;
+      assert(0);
    }
 
    switch (dri2_surf->base.TextureTarget) {
@@ -1218,15 +1252,14 @@ dri2_bind_tex_image(_EGLDriver *drv,
       target = GL_TEXTURE_2D;
       break;
    default:
-      _eglError(EGL_BAD_PARAMETER, "eglBindTexImage");
-      return EGL_FALSE;
+      assert(0);
    }
 
    (*dri2_dpy->tex_buffer->setTexBuffer2)(dri2_ctx->dri_context,
                                          target, format,
                                          dri2_surf->dri_drawable);
 
-   return dri2_surf->base.BoundToTexture = EGL_TRUE;
+   return EGL_TRUE;
 }
 
 static EGLBoolean
@@ -1396,6 +1429,7 @@ _eglMain(const char *args)
    if (!dri2_drv)
       return NULL;
 
+   memset(dri2_drv, 0, sizeof *dri2_drv);
    _eglInitDriverFallbacks(&dri2_drv->base);
    dri2_drv->base.API.Initialize = dri2_initialize;
    dri2_drv->base.API.Terminate = dri2_terminate;
@@ -1414,6 +1448,7 @@ _eglMain(const char *args)
    dri2_drv->base.API.ReleaseTexImage = dri2_release_tex_image;
    dri2_drv->base.API.CreateImageKHR = dri2_create_image_khr;
    dri2_drv->base.API.DestroyImageKHR = dri2_destroy_image_khr;
+   dri2_drv->base.API.SwapBuffersRegionNOK = dri2_swap_buffers_region;
 
    dri2_drv->base.Name = "DRI2";
    dri2_drv->base.Unload = dri2_unload;
index 3cbfebe4881cd61e1211aa3266e553dd299c0b8f..e08ef5f2228111f3d387190b2be41f193bd7c322 100644 (file)
@@ -41,6 +41,7 @@
 #include "eglconfigutil.h"
 #include "eglconfig.h"
 #include "eglcontext.h"
+#include "egldefines.h"
 #include "egldisplay.h"
 #include "egldriver.h"
 #include "eglcurrent.h"
@@ -48,7 +49,6 @@
 #include "eglsurface.h"
 
 #define CALLOC_STRUCT(T)   (struct T *) calloc(1, sizeof(struct T))
-#define ARRAY_SIZE(a)      (sizeof(a) / sizeof(a[0]))
 
 #ifndef GLX_VERSION_1_4
 #error "GL/glx.h must be equal to or greater than GLX 1.4"
index 3b4ebf7fec4eb6a6b474a3e33fa8aaf44a9a9007..82fd855b1d5bc70900f86f5eaaa97b4a2b0f1790 100644 (file)
@@ -82,10 +82,27 @@ install-headers:
        $(INSTALL) -m 644 $(TOP)/include/EGL/*.h \
                $(DESTDIR)$(INSTALL_INC_DIR)/EGL
 
-install: default install-headers
+PKG_CONFIG_DIR = $(INSTALL_LIB_DIR)/pkgconfig
+
+gl_pcedit = sed \
+       -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
+       -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
+       -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
+       -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
+       -e 's,@EGL_PC_REQ_PRIV@,$(EGL_PC_REQ_PRIV),' \
+       -e 's,@EGL_PC_LIB_PRIV@,$(EGL_PC_LIB_PRIV),' \
+       -e 's,@EGL_PC_CFLAGS@,$(EGL_PC_CFLAGS),' \
+       -e 's,@EGL_LIB@,$(EGL_LIB),'
+
+egl.pc: egl.pc.in
+       $(gl_pcedit) $< > $@
+
+install: default install-headers egl.pc
        $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
        $(MINSTALL) $(TOP)/$(LIB_DIR)/$(EGL_LIB_GLOB) \
                $(DESTDIR)$(INSTALL_LIB_DIR)
+       $(INSTALL) -d $(DESTDIR)$(PKG_CONFIG_DIR)
+       $(INSTALL) -m 644 egl.pc $(DESTDIR)$(PKG_CONFIG_DIR)
 
 clean:
        -rm -f *.o
diff --git a/src/egl/main/egl.pc.in b/src/egl/main/egl.pc.in
new file mode 100644 (file)
index 0000000..2855a49
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@INSTALL_DIR@
+exec_prefix=${prefix}
+libdir=@INSTALL_LIB_DIR@
+includedir=@INSTALL_INC_DIR@
+
+Name: egl
+Description: Mesa EGL library
+Requires.private: @EGL_PC_REQ_PRIV@
+Version: @VERSION@
+Libs: -L${libdir} -l@EGL_LIB@
+Libs.private: @EGL_PC_LIB_PRIV@
+Cflags: -I${includedir} @EGL_PC_CFLAGS@
index 647be652207ec060755a4abf70dfa7fe6e59de7b..1a533e0880ba9a61b867dbe90e3d50d6ee7ccf1d 100644 (file)
@@ -261,7 +261,7 @@ EGLBoolean EGLAPIENTRY
 eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
 {
    _EGLDisplay *disp = _eglLockDisplay(dpy);
-   EGLint major_int, minor_int;
+   EGLint major_int = 0, minor_int = 0;
 
    if (!disp)
       RETURN_EGL_ERROR(NULL, EGL_BAD_DISPLAY, EGL_FALSE);
@@ -272,13 +272,15 @@ eglInitialize(EGLDisplay dpy, EGLint *major, EGLint *minor)
       if (!drv) {
          _eglPreloadDrivers();
          drv = _eglMatchDriver(disp);
-         if (!drv)
-            RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE);
+        /* Initialize the particular display now */
+        if (drv && !drv->API.Initialize(drv, disp, &major_int, &minor_int))
+           RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE);
       }
-
-      /* Initialize the particular display now */
-      if (!drv->API.Initialize(drv, disp, &major_int, &minor_int))
-         RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE);
+      if (!drv)
+        /* Load and initialize the first default driver that works */
+        drv = _eglLoadDefaultDriver(disp, &major_int, &minor_int);
+      if (!drv)
+        RETURN_EGL_ERROR(disp, EGL_NOT_INITIALIZED, EGL_FALSE);
 
       disp->APImajor = major_int;
       disp->APIminor = minor_int;
@@ -836,6 +838,9 @@ eglGetProcAddress(const char *procname)
       { "eglCreateImageKHR", (_EGLProc) eglCreateImageKHR },
       { "eglDestroyImageKHR", (_EGLProc) eglDestroyImageKHR },
 #endif /* EGL_KHR_image_base */
+#ifdef EGL_NOK_swap_region
+      { "eglSwapBuffersRegionNOK", (_EGLProc) eglSwapBuffersRegionNOK },
+#endif
       { NULL, NULL }
    };
    EGLint i;
@@ -1244,3 +1249,32 @@ eglDestroyImageKHR(EGLDisplay dpy, EGLImageKHR image)
 
 
 #endif /* EGL_KHR_image_base */
+
+
+#ifdef EGL_NOK_swap_region
+
+EGLBoolean
+eglSwapBuffersRegionNOK(EGLDisplay dpy, EGLSurface surface,
+                       EGLint numRects, const EGLint *rects)
+{
+   _EGLContext *ctx = _eglGetCurrentContext();
+   _EGLDisplay *disp = _eglLockDisplay(dpy);
+   _EGLSurface *surf = _eglLookupSurface(surface, disp);
+   _EGLDriver *drv;
+   EGLBoolean ret;
+
+   _EGL_CHECK_SURFACE(disp, surf, EGL_FALSE, drv);
+
+   /* surface must be bound to current context in EGL 1.4 */
+   if (!ctx || !_eglIsContextLinked(ctx) || surf != ctx->DrawSurface)
+      RETURN_EGL_ERROR(disp, EGL_BAD_SURFACE, EGL_FALSE);
+
+   if (drv->API.SwapBuffersRegionNOK)
+      ret = drv->API.SwapBuffersRegionNOK(drv, disp, surf, numRects, rects);
+   else
+      ret = drv->API.SwapBuffers(drv, disp, surf);
+
+   RETURN_EGL_EVAL(disp, ret);
+}
+
+#endif /* EGL_NOK_swap_region */
index 3e2ba8dd41579af0524ce3bb60513fe0a901f701..d8c8b49a49deef0be9cd7be2531700dd32d17fe0 100644 (file)
@@ -76,6 +76,9 @@ typedef _EGLImage *(*CreateImageKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLCo
 typedef EGLBoolean (*DestroyImageKHR_t)(_EGLDriver *drv, _EGLDisplay *dpy, _EGLImage *image);
 #endif /* EGL_KHR_image_base */
 
+#ifdef EGL_NOK_swap_region
+typedef EGLBoolean (*SwapBuffersRegionNOK_t)(_EGLDriver *drv, _EGLDisplay *disp, _EGLSurface *surf, EGLint numRects, const EGLint *rects);
+#endif
 
 /**
  * The API dispatcher jumps through these functions
@@ -134,6 +137,10 @@ struct _egl_api
    CreateImageKHR_t CreateImageKHR;
    DestroyImageKHR_t DestroyImageKHR;
 #endif /* EGL_KHR_image_base */
+
+#ifdef EGL_NOK_swap_region
+   SwapBuffersRegionNOK_t SwapBuffersRegionNOK;
+#endif
 };
 
 #endif /* EGLAPI_INCLUDED */
index 21d13cba904972ad77d33d2eafeacf288052ff71..fa947d7688759510eb80640b8346eaf5d27ba238 100644 (file)
@@ -13,7 +13,6 @@
 
 
 #define MIN2(A, B)  (((A) < (B)) ? (A) : (B))
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
 
 
 /**
@@ -224,7 +223,12 @@ static const struct {
                                     0 },
    { EGL_NONE,                      ATTRIB_TYPE_PSEUDO,
                                     ATTRIB_CRITERION_IGNORE,
-                                    0 }
+                                    0 },
+
+   { EGL_Y_INVERTED_NOK,            ATTRIB_TYPE_BOOLEAN,
+                                    ATTRIB_CRITERION_EXACT,
+                                    EGL_DONT_CARE },
+
 };
 
 
@@ -479,6 +483,28 @@ _eglMatchConfig(const _EGLConfig *conf, const _EGLConfig *criteria)
    return matched;
 }
 
+static INLINE EGLBoolean
+_eglIsConfigAttribValid(_EGLConfig *conf, EGLint attr)
+{
+   if (_eglIndexConfig(conf, attr) < 0)
+      return EGL_FALSE;
+
+   /* there are some holes in the range */
+   switch (attr) {
+   case 0x3030 /* a gap before EGL_SAMPLES */:
+   case EGL_NONE:
+#ifdef EGL_VERSION_1_4
+   case EGL_MATCH_NATIVE_PIXMAP:
+#endif
+      return EGL_FALSE;
+   case EGL_Y_INVERTED_NOK:
+      return conf->Display->Extensions.NOK_texture_from_pixmap;
+   default:
+      break;
+   }
+
+   return EGL_TRUE;
+}
 
 /**
  * Initialize a criteria config from the given attribute list.
@@ -501,15 +527,13 @@ _eglParseConfigAttribList(_EGLConfig *conf, const EGLint *attrib_list)
 
    /* parse the list */
    for (i = 0; attrib_list && attrib_list[i] != EGL_NONE; i += 2) {
-      EGLint idx;
-
       attr = attrib_list[i];
       val = attrib_list[i + 1];
 
-      idx = _eglIndexConfig(conf, attr);
-      if (idx < 0)
-         return EGL_FALSE;
-      conf->Storage[idx] = val;
+      if (!_eglIsConfigAttribValid(conf, attr))
+        return EGL_FALSE;
+             
+      SET_CONFIG_ATTRIB(conf, attr, val);
 
       /* rememeber some attributes for post-processing */
       switch (attr) {
@@ -782,28 +806,6 @@ _eglChooseConfig(_EGLDriver *drv, _EGLDisplay *disp, const EGLint *attrib_list,
 }
 
 
-static INLINE EGLBoolean
-_eglIsConfigAttribValid(_EGLConfig *conf, EGLint attr)
-{
-   if (_eglIndexConfig(conf, attr) < 0)
-      return EGL_FALSE;
-
-   /* there are some holes in the range */
-   switch (attr) {
-   case 0x3030 /* a gap before EGL_SAMPLES */:
-   case EGL_NONE:
-#ifdef EGL_VERSION_1_4
-   case EGL_MATCH_NATIVE_PIXMAP:
-#endif
-      return EGL_FALSE;
-   default:
-      break;
-   }
-
-   return EGL_TRUE;
-}
-
-
 /**
  * Fallback for eglGetConfigAttrib.
  */
index ced060f7797bece2408a75b15645ca418403b45c..ca63c40d3d78b26468638bc58b61eaa4fd4706f8 100644 (file)
@@ -8,16 +8,24 @@
 
 #define _EGL_CONFIG_FIRST_ATTRIB EGL_BUFFER_SIZE
 #define _EGL_CONFIG_LAST_ATTRIB EGL_CONFORMANT
-#define _EGL_CONFIG_NUM_ATTRIBS \
+#define _EGL_CONFIG_NUM_CONTIGUOUS_ATTRIBS \
    (_EGL_CONFIG_LAST_ATTRIB - _EGL_CONFIG_FIRST_ATTRIB + 1)
 
-#define _EGL_CONFIG_STORAGE_SIZE _EGL_CONFIG_NUM_ATTRIBS
+/* Attributes outside the contiguous block:
+ *
+ *   EGL_Y_INVERTED_NOK
+ */
+#define _EGL_CONFIG_FIRST_EXTRA_ATTRIB _EGL_CONFIG_NUM_CONTIGUOUS_ATTRIBS
+#define _EGL_CONFIG_NUM_EXTRA_ATTRIBS 1
+
+#define _EGL_CONFIG_NUM_ATTRIBS \
+   _EGL_CONFIG_NUM_CONTIGUOUS_ATTRIBS + _EGL_CONFIG_NUM_EXTRA_ATTRIBS
 
 
 struct _egl_config
 {
    _EGLDisplay *Display;
-   EGLint Storage[_EGL_CONFIG_STORAGE_SIZE];
+   EGLint Storage[_EGL_CONFIG_NUM_ATTRIBS];
 };
 
 
@@ -37,10 +45,15 @@ _eglIndexConfig(const _EGLConfig *conf, EGLint key)
 {
    (void) conf;
    if (key >= _EGL_CONFIG_FIRST_ATTRIB &&
-       key < _EGL_CONFIG_FIRST_ATTRIB + _EGL_CONFIG_NUM_ATTRIBS)
+       key < _EGL_CONFIG_FIRST_ATTRIB + _EGL_CONFIG_NUM_CONTIGUOUS_ATTRIBS)
       return key - _EGL_CONFIG_FIRST_ATTRIB;
-   else
+   
+   switch (key) {
+   case EGL_Y_INVERTED_NOK:
+      return _EGL_CONFIG_FIRST_EXTRA_ATTRIB;
+   default:
       return -1;
+   }
 }
 
 
index 8fc2301b795d0ad29775a78937bd9eb084e6fd47..4ecd4c1420c060e1fe08cb7c9e0f9b60ccf3e1c9 100644 (file)
@@ -40,6 +40,7 @@
 
 #define _EGL_VENDOR_STRING "Mesa Project"
 
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
 
 
 #endif /* EGLDEFINES_INCLUDED */
index 21bf22b5fee6c7d8ea3b0628e49548cb70795181..42e305f91ac34073d248f6ad19ff86377d782b1b 100644 (file)
@@ -46,6 +46,8 @@ struct _egl_extensions
    EGLBoolean KHR_gl_texture_cubemap_image;
    EGLBoolean KHR_gl_texture_3D_image;
    EGLBoolean KHR_gl_renderbuffer_image;
+   EGLBoolean NOK_swap_region;
+   EGLBoolean NOK_texture_from_pixmap;
 
    char String[_EGL_MAX_EXTENSIONS_LEN];
 };
index 6384242b093a7a289313b4154dea54c115723726..566554d51dc8bbe2127f554a6074c62cda3c9369 100644 (file)
@@ -36,7 +36,9 @@
 
 
 /* XXX Need to decide how to do dynamic name lookup on Windows */
-static const char DefaultDriverName[] = "TBD";
+static const char DefaultDriverNames[] = {
+   "TBD",
+};
 
 typedef HMODULE lib_handle;
 
@@ -63,7 +65,10 @@ library_suffix(void)
 #elif defined(_EGL_PLATFORM_POSIX)
 
 
-static const char DefaultDriverName[] = "egl_glx";
+static const char *DefaultDriverNames[] = {
+   "egl_dri2",
+   "egl_glx"
+};
 
 typedef void * lib_handle;
 
@@ -87,32 +92,6 @@ library_suffix(void)
 }
 
 
-#else /* _EGL_PLATFORM_NO_OS */
-
-
-static const char DefaultDriverName[] = "builtin";
-
-typedef void *lib_handle;
-
-static INLINE void *
-open_library(const char *filename)
-{
-   return (void *) filename;
-}
-
-static INLINE void
-close_library(void *lib)
-{
-}
-
-
-static const char *
-library_suffix(void)
-{
-   return NULL;
-}
-
-
 #endif
 
 
@@ -157,12 +136,6 @@ _eglOpenLibrary(const char *driverPath, lib_handle *handle)
    else {
       error = dlerror();
    }
-#else /* _EGL_PLATFORM_NO_OS */
-   /* must be the default driver name */
-   if (strcmp(driverPath, DefaultDriverName) == 0)
-      mainFunc = (_EGLMain_t) _eglMain;
-   else
-      error = "not builtin driver";
 #endif
 
    if (!lib) {
@@ -293,9 +266,9 @@ _eglLoaderFile(const char *dir, size_t len, void *loader_data)
    len += flen;
    path[len] = '\0';
 
-   drv = _eglLoadDriver(path, NULL);
-   /* fix the path and load again */
-   if (!drv && library_suffix()) {
+   if (library_suffix() == NULL || strstr(path, library_suffix()))
+      drv = _eglLoadDriver(path, NULL);
+   else {
       const char *suffix = library_suffix();
       size_t slen = strlen(suffix);
       const char *p;
@@ -306,6 +279,8 @@ _eglLoaderFile(const char *dir, size_t len, void *loader_data)
       if (need_suffix && len + slen + 1 <= sizeof(path)) {
          strcpy(path + len, suffix);
          drv = _eglLoadDriver(path, NULL);
+      } else {
+         drv = NULL;
       }
    }
    if (!drv)
@@ -517,17 +492,6 @@ _eglPreloadDisplayDrivers(void)
 }
 
 
-/**
- * Preload the default driver.
- */
-static EGLBoolean
-_eglPreloadDefaultDriver(void)
-{
-   return (_eglPreloadForEach(_eglGetSearchPath(),
-            _eglLoaderFile, (void *) DefaultDriverName) > 0);
-}
-
-
 /**
  * Preload drivers.
  *
@@ -549,15 +513,13 @@ _eglPreloadDrivers(void)
    }
 
    loaded = (_eglPreloadUserDriver() ||
-             _eglPreloadDisplayDrivers() ||
-             _eglPreloadDefaultDriver());
+             _eglPreloadDisplayDrivers());
 
    _eglUnlockMutex(_eglGlobal.Mutex);
 
    return loaded;
 }
 
-
 /**
  * Unload preloaded drivers.
  */
@@ -588,6 +550,30 @@ _eglUnloadDrivers(void)
    _eglGlobal.NumDrivers = 0;
 }
 
+_EGLDriver *
+_eglLoadDefaultDriver(EGLDisplay dpy, EGLint *major, EGLint *minor)
+{
+   _EGLDriver *drv = NULL;
+   int i;
+
+   _eglLockMutex(_eglGlobal.Mutex);
+
+   for (i = 0; i < ARRAY_SIZE(DefaultDriverNames); i++) {
+      _eglPreloadForEach(_eglGetSearchPath(),
+                        _eglLoaderFile, (void *) DefaultDriverNames[i]);
+      if (_eglGlobal.NumDrivers == 0)
+        continue;
+      drv = _eglGlobal.Drivers[0];
+      if (drv->API.Initialize(drv, dpy, major, minor))
+        break;
+      _eglUnloadDrivers();
+   }      
+
+   _eglUnlockMutex(_eglGlobal.Mutex);
+
+   return drv;
+}
+
 
 /**
  * Plug all the available fallback routines into the given driver's
@@ -652,6 +638,21 @@ _eglInitDriverFallbacks(_EGLDriver *drv)
 }
 
 
+/**
+ * Invoke a callback function on each EGL search path.
+ *
+ * The first argument of the callback function is the name of the search path.
+ * The second argument is the length of the name.
+ */
+void
+_eglSearchPathForEach(EGLBoolean (*callback)(const char *, size_t, void *),
+                      void *callback_data)
+{
+   const char *search_path = _eglGetSearchPath();
+   _eglPreloadForEach(search_path, callback, callback_data);
+}
+
+
 /**
  * Set the probe cache at the given key.
  *
index 55686681dcb446fddf57c22d39149ba61d792b36..8b34c43b924dcba4873dbf479ea163cbd1b9815d 100644 (file)
@@ -84,10 +84,19 @@ extern void
 _eglUnloadDrivers(void);
 
 
+extern _EGLDriver *
+_eglLoadDefaultDriver(EGLDisplay dpy, EGLint *major, EGLint *minor);
+
+
 PUBLIC void
 _eglInitDriverFallbacks(_EGLDriver *drv);
 
 
+PUBLIC void
+_eglSearchPathForEach(EGLBoolean (*callback)(const char *, size_t, void *),
+                      void *callback_data);
+
+
 PUBLIC void
 _eglSetProbeCache(EGLint key, const void *val);
 
index 5182b18e226f0e9443abf8dcc5dfc569ab62e141..e63819e08a20ad4625196731ca868515c5387e65 100644 (file)
@@ -6,9 +6,6 @@
 #include "eglmutex.h"
 
 
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]))
-
-
 static _EGL_DECLARE_MUTEX(_eglGlobalMutex);
 struct _egl_global _eglGlobal =
 {
index 984e426686e4119d38a3a75d5050a56b3eb900cd..e62a9e7de8ce1e13bede66e6be4fc0cbca432f19 100644 (file)
@@ -96,6 +96,8 @@ _eglUpdateExtensionsString(_EGLDisplay *dpy)
    _EGL_CHECK_EXTENSION(KHR_gl_texture_3D_image);
    _EGL_CHECK_EXTENSION(KHR_gl_renderbuffer_image);
 
+   _EGL_CHECK_EXTENSION(NOK_swap_region);
+   _EGL_CHECK_EXTENSION(NOK_texture_from_pixmap);
 #undef _EGL_CHECK_EXTENSION
 }
 
index 8026a6314d3629e83acd47f1fea527770528b35a..d46bdb0672e9659901196ab9b974c9ef433cbd3b 100644 (file)
@@ -36,12 +36,17 @@ _eglClampSwapInterval(_EGLSurface *surf, EGLint interval)
 static EGLint
 _eglParseSurfaceAttribList(_EGLSurface *surf, const EGLint *attrib_list)
 {
+   _EGLDisplay *dpy = surf->Resource.Display;
    EGLint type = surf->Type;
+   EGLint texture_type = EGL_PBUFFER_BIT;
    EGLint i, err = EGL_SUCCESS;
 
    if (!attrib_list)
       return EGL_SUCCESS;
 
+   if (dpy->Extensions.NOK_texture_from_pixmap)
+      texture_type |= EGL_PIXMAP_BIT;
+
    for (i = 0; attrib_list[i] != EGL_NONE; i++) {
       EGLint attr = attrib_list[i++];
       EGLint val = attrib_list[i];
@@ -125,7 +130,7 @@ _eglParseSurfaceAttribList(_EGLSurface *surf, const EGLint *attrib_list)
          surf->LargestPbuffer = !!val;
          break;
       case EGL_TEXTURE_FORMAT:
-         if (type != EGL_PBUFFER_BIT) {
+         if (!(type & texture_type)) {
             err = EGL_BAD_ATTRIBUTE;
             break;
          }
@@ -143,7 +148,7 @@ _eglParseSurfaceAttribList(_EGLSurface *surf, const EGLint *attrib_list)
          surf->TextureFormat = val;
          break;
       case EGL_TEXTURE_TARGET:
-         if (type != EGL_PBUFFER_BIT) {
+         if (!(type & texture_type)) {
             err = EGL_BAD_ATTRIBUTE;
             break;
          }
@@ -160,7 +165,7 @@ _eglParseSurfaceAttribList(_EGLSurface *surf, const EGLint *attrib_list)
          surf->TextureTarget = val;
          break;
       case EGL_MIPMAP_TEXTURE:
-         if (type != EGL_PBUFFER_BIT) {
+         if (!(type & texture_type)) {
             err = EGL_BAD_ATTRIBUTE;
             break;
          }
@@ -452,11 +457,16 @@ EGLBoolean
 _eglBindTexImage(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface,
                  EGLint buffer)
 {
+   EGLint texture_type = EGL_PBUFFER_BIT;
+
    /* Just do basic error checking and return success/fail.
     * Drivers must implement the real stuff.
     */
 
-   if (surface->Type != EGL_PBUFFER_BIT) {
+   if (dpy->Extensions.NOK_texture_from_pixmap)
+      texture_type |= EGL_PIXMAP_BIT;
+
+   if (!(surface->Type & texture_type)) {
       _eglError(EGL_BAD_SURFACE, "eglBindTexImage");
       return EGL_FALSE;
    }
@@ -466,6 +476,11 @@ _eglBindTexImage(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surface,
       return EGL_FALSE;
    }
 
+   if (surface->TextureTarget == EGL_NO_TEXTURE) {
+      _eglError(EGL_BAD_MATCH, "eglBindTexImage");
+      return EGL_FALSE;
+   }
+
    if (buffer != EGL_BACK_BUFFER) {
       _eglError(EGL_BAD_PARAMETER, "eglBindTexImage");
       return EGL_FALSE;
index 0a00035730f73731fa5ecdb89e24500e19a49171..8f520dcdf650f606d0cdf54d0879be2772df0159 100644 (file)
@@ -83,7 +83,7 @@ extern EGLBoolean
 _eglSurfaceAttrib(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf, EGLint attribute, EGLint value);
 
 
-extern EGLBoolean
+PUBLIC extern EGLBoolean
 _eglBindTexImage(_EGLDriver *drv, _EGLDisplay *dpy, _EGLSurface *surf, EGLint buffer);
 
 
index 6c0e7a518d1b26ded73339207d8ec4e4a236102f..e5e9578b5e4fef321498a942eda720ed324c3743 100644 (file)
@@ -25,4 +25,4 @@ SConscript('targets/SConscript')
 
 if platform != 'embedded':
        SConscript('tests/unit/SConscript')
-       #SConscript('tests/raw/SConscript')
+       #SConscript('tests/graw/SConscript')
index e0d9b313544c1c065068092b008e080da09752f7..1abf12e95bdcb19aabe5f650fe444a6341b0695a 100644 (file)
@@ -168,7 +168,8 @@ GALLIVM_SOURCES = \
         draw/draw_pt_fetch_shade_pipeline_llvm.c \
         draw/draw_llvm_translate.c
 
-GALLIVM_CPP_SOURCES =
+GALLIVM_CPP_SOURCES = \
+    gallivm/lp_bld_misc.cpp
 
 GENERATED_SOURCES = \
        indices/u_indices_gen.c \
index 29a1bd0ecbac8cec91064bd10affbebe09126ba4..7039d5f0c55ff083c655a7b666263507661199b1 100644 (file)
@@ -205,6 +205,7 @@ if env['llvm']:
     'gallivm/lp_bld_intr.c',
     'gallivm/lp_bld_logic.c',
     'gallivm/lp_bld_init.c',
+    'gallivm/lp_bld_misc.cpp',
     'gallivm/lp_bld_pack.c',
     'gallivm/lp_bld_printf.c',
     'gallivm/lp_bld_sample.c',
index 02abddf1491ba7c137c14593b6cf30db31671eb3..61980c3e4f54901a9a67eb2337bd32baca09abf8 100644 (file)
@@ -566,7 +566,7 @@ draw_get_rasterizer_no_cull( struct draw_context *draw,
       memset(&rast, 0, sizeof(rast));
       rast.scissor = scissor;
       rast.flatshade = flatshade;
-      rast.front_winding = PIPE_WINDING_CCW;
+      rast.front_ccw = 1;
       rast.gl_rasterization_rules = draw->rasterizer->gl_rasterization_rules;
 
       draw->rasterizer_no_cull[scissor][flatshade] =
index ea9b7c90a51d16bfb468d68d1eac27db9548cf48..7ea51621f72a7faa52ef272d1299b3adc68b93b3 100644 (file)
@@ -12,6 +12,7 @@
 #include "gallivm/lp_bld_printf.h"
 
 #include "tgsi/tgsi_exec.h"
+#include "tgsi/tgsi_dump.h"
 
 #include "util/u_cpu_detect.h"
 #include "util/u_string.h"
 #define DEBUG_STORE 0
 
 
+/** cast wrapper */
+static INLINE draw_jit_vert_func_elts
+voidptr_to_draw_vert_func_elts(void *v)
+{
+   union {
+      void *v;
+      draw_jit_vert_func_elts f;
+   } u;
+   assert(sizeof(u.v) == sizeof(u.f));
+   u.v = v;
+   return u.f;
+}
+
+
+/** cast wrapper */
+static INLINE draw_jit_vert_func
+voidptr_to_draw_jit_vert_func(void *v)
+{
+   union {
+      void *v;
+      draw_jit_vert_func f;
+   } u;
+   assert(sizeof(u.v) == sizeof(u.f));
+   u.v = v;
+   return u.f;
+}
+
+
 /* generates the draw jit function */
 static void
 draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *var);
@@ -161,9 +190,16 @@ create_vertex_header(struct draw_llvm *llvm, int data_elems)
 struct draw_llvm *
 draw_llvm_create(struct draw_context *draw)
 {
-   struct draw_llvm *llvm = CALLOC_STRUCT( draw_llvm );
+   struct draw_llvm *llvm;
 
+#ifdef PIPE_ARCH_X86
    util_cpu_detect();
+   /* require SSE2 due to LLVM PR6960. */
+   if (!util_cpu_caps.has_sse2)
+       return NULL;
+#endif
+
+   llvm = CALLOC_STRUCT( draw_llvm );
 
    llvm->draw = draw;
    llvm->engine = draw->engine;
@@ -179,27 +215,34 @@ draw_llvm_create(struct draw_context *draw)
 
    llvm->pass = LLVMCreateFunctionPassManager(llvm->provider);
    LLVMAddTargetData(llvm->target, llvm->pass);
-   /* These are the passes currently listed in llvm-c/Transforms/Scalar.h,
-    * but there are more on SVN. */
-   /* TODO: Add more passes */
-   LLVMAddCFGSimplificationPass(llvm->pass);
-   LLVMAddPromoteMemoryToRegisterPass(llvm->pass);
-   LLVMAddConstantPropagationPass(llvm->pass);
-   if(util_cpu_caps.has_sse4_1) {
-      /* FIXME: There is a bug in this pass, whereby the combination of fptosi
-       * and sitofp (necessary for trunc/floor/ceil/round implementation)
-       * somehow becomes invalid code.
+
+   if ((gallivm_debug & GALLIVM_DEBUG_NO_OPT) == 0) {
+      /* These are the passes currently listed in llvm-c/Transforms/Scalar.h,
+       * but there are more on SVN. */
+      /* TODO: Add more passes */
+      LLVMAddCFGSimplificationPass(llvm->pass);
+      LLVMAddPromoteMemoryToRegisterPass(llvm->pass);
+      LLVMAddConstantPropagationPass(llvm->pass);
+      if(util_cpu_caps.has_sse4_1) {
+         /* FIXME: There is a bug in this pass, whereby the combination of fptosi
+          * and sitofp (necessary for trunc/floor/ceil/round implementation)
+          * somehow becomes invalid code.
+          */
+         LLVMAddInstructionCombiningPass(llvm->pass);
+      }
+      LLVMAddGVNPass(llvm->pass);
+   } else {
+      /* We need at least this pass to prevent the backends to fail in
+       * unexpected ways.
        */
-      LLVMAddInstructionCombiningPass(llvm->pass);
+      LLVMAddPromoteMemoryToRegisterPass(llvm->pass);
    }
-   LLVMAddGVNPass(llvm->pass);
 
    init_globals(llvm);
 
-
-#if 0
-   LLVMDumpModule(llvm->module);
-#endif
+   if (gallivm_debug & GALLIVM_DEBUG_IR) {
+      LLVMDumpModule(llvm->module);
+   }
 
    return llvm;
 }
@@ -248,7 +291,10 @@ generate_vs(struct draw_llvm *llvm,
    num_vs = 4;              /* number of vertices per block */
 #endif
 
-   /*tgsi_dump(tokens, 0);*/
+   if (gallivm_debug & GALLIVM_DEBUG_IR) {
+      tgsi_dump(tokens, 0);
+   }
+
    lp_build_tgsi_soa(builder,
                      tokens,
                      vs_type,
@@ -579,6 +625,7 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
    struct lp_type vs_type = lp_type_float_vec(32);
    const int max_vertices = 4;
    LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS];
+   void *code;
 
    arg_types[0] = llvm->context_ptr_type;           /* context */
    arg_types[1] = llvm->vertex_header_ptr_type;     /* vertex_header */
@@ -684,21 +731,24 @@ draw_llvm_generate(struct draw_llvm *llvm, struct draw_llvm_variant *variant)
     */
 #ifdef DEBUG
    if(LLVMVerifyFunction(variant->function, LLVMPrintMessageAction)) {
-      LLVMDumpValue(variant->function);
+      lp_debug_dump_value(variant->function);
       assert(0);
    }
 #endif
 
    LLVMRunFunctionPassManager(llvm->pass, variant->function);
 
-   if (0) {
-      LLVMDumpValue(variant->function);
+   if (gallivm_debug & GALLIVM_DEBUG_IR) {
+      lp_debug_dump_value(variant->function);
       debug_printf("\n");
    }
-   variant->jit_func = (draw_jit_vert_func)LLVMGetPointerToGlobal(llvm->draw->engine, variant->function);
 
-   if (0)
-      lp_disassemble(variant->jit_func);
+   code = LLVMGetPointerToGlobal(llvm->draw->engine, variant->function);
+   variant->jit_func = voidptr_to_draw_jit_vert_func(code);
+
+   if (gallivm_debug & GALLIVM_DEBUG_ASM) {
+      lp_disassemble(code);
+   }
 }
 
 
@@ -721,6 +771,7 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian
    const int max_vertices = 4;
    LLVMValueRef outputs[PIPE_MAX_SHADER_OUTPUTS][NUM_CHANNELS];
    LLVMValueRef fetch_max;
+   void *code;
 
    arg_types[0] = llvm->context_ptr_type;               /* context */
    arg_types[1] = llvm->vertex_header_ptr_type;         /* vertex_header */
@@ -835,22 +886,24 @@ draw_llvm_generate_elts(struct draw_llvm *llvm, struct draw_llvm_variant *varian
     */
 #ifdef DEBUG
    if(LLVMVerifyFunction(variant->function_elts, LLVMPrintMessageAction)) {
-      LLVMDumpValue(variant->function_elts);
+      lp_debug_dump_value(variant->function_elts);
       assert(0);
    }
 #endif
 
    LLVMRunFunctionPassManager(llvm->pass, variant->function_elts);
 
-   if (0) {
-      LLVMDumpValue(variant->function_elts);
+   if (gallivm_debug & GALLIVM_DEBUG_IR) {
+      lp_debug_dump_value(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);
+   code = LLVMGetPointerToGlobal(llvm->draw->engine, variant->function_elts);
+   variant->jit_func_elts = voidptr_to_draw_vert_func_elts(code);
+
+   if (gallivm_debug & GALLIVM_DEBUG_ASM) {
+      lp_disassemble(code);
+   }
 }
 
 void
index 64c3502508160e11f076876f7b995602d12d0be5..7ea04e38193e951a8c92d63ab5aa943fb22f452f 100644 (file)
@@ -170,7 +170,25 @@ static void do_triangle( struct draw_context *draw,
  * Set up macros for draw_pt_decompose.h template code.
  * This code uses vertex indexes / elements.
  */
-#define QUAD(i0,i1,i2,i3)                       \
+
+/* emit first quad vertex as first vertex in triangles */
+#define QUAD_FIRST_PV(i0,i1,i2,i3)              \
+   do_triangle( draw,                           \
+                ( DRAW_PIPE_RESET_STIPPLE |     \
+                  DRAW_PIPE_EDGE_FLAG_0 |       \
+                  DRAW_PIPE_EDGE_FLAG_1 ),      \
+                verts + stride * elts[i0],      \
+                verts + stride * elts[i1],      \
+                verts + stride * elts[i2]);     \
+   do_triangle( draw,                           \
+                ( DRAW_PIPE_EDGE_FLAG_1 |       \
+                  DRAW_PIPE_EDGE_FLAG_2 ),      \
+                verts + stride * elts[i0],      \
+                verts + stride * elts[i2],      \
+                verts + stride * elts[i3])
+
+/* emit last quad vertex as last vertex in triangles */
+#define QUAD_LAST_PV(i0,i1,i2,i3)               \
    do_triangle( draw,                           \
                 ( DRAW_PIPE_RESET_STIPPLE |     \
                   DRAW_PIPE_EDGE_FLAG_0 |       \
@@ -261,9 +279,27 @@ void draw_pipeline_run( struct draw_context *draw,
 
 /*
  * Set up macros for draw_pt_decompose.h template code.
- * This code is for non-indexed rendering (no elts).
+ * This code is for non-indexed (aka linear) rendering (no elts).
  */
-#define QUAD(i0,i1,i2,i3)                                        \
+
+/* emit first quad vertex as first vertex in triangles */
+#define QUAD_FIRST_PV(i0,i1,i2,i3)                               \
+   do_triangle( draw,                                            \
+                ( DRAW_PIPE_RESET_STIPPLE |                      \
+                  DRAW_PIPE_EDGE_FLAG_0 |                        \
+                  DRAW_PIPE_EDGE_FLAG_1 ),                       \
+                verts + stride * ((i0) & ~DRAW_PIPE_FLAG_MASK),  \
+                verts + stride * (i1),                           \
+                verts + stride * (i2));                          \
+   do_triangle( draw,                                            \
+                ( DRAW_PIPE_EDGE_FLAG_1 |                        \
+                  DRAW_PIPE_EDGE_FLAG_2 ),                       \
+                verts + stride * ((i0) & ~DRAW_PIPE_FLAG_MASK),  \
+                verts + stride * (i2),                           \
+                verts + stride * (i3))
+
+/* emit last quad vertex as last vertex in triangles */
+#define QUAD_LAST_PV(i0,i1,i2,i3)                                \
    do_triangle( draw,                                            \
                 ( DRAW_PIPE_RESET_STIPPLE |                      \
                   DRAW_PIPE_EDGE_FLAG_0 |                        \
index 51a6115ebf5e9e06a8e1c488abb8c80ca0424933..df8d82e367d814e24e44579883ce2c0d6408d200 100644 (file)
@@ -157,6 +157,10 @@ static void interp( const struct clip_stage *clip,
 }
 
 
+/**
+ * Emit a post-clip polygon to the next pipeline stage.  The polygon
+ * will be convex and the provoking vertex will always be vertex[0].
+ */
 static void emit_poly( struct draw_stage *stage,
                       struct vertex_header **inlist,
                       unsigned n,
@@ -164,10 +168,18 @@ static void emit_poly( struct draw_stage *stage,
 {
    struct prim_header header;
    unsigned i;
+   ushort edge_first, edge_middle, edge_last;
 
-   const ushort edge_first  = DRAW_PIPE_EDGE_FLAG_2;
-   const ushort edge_middle = DRAW_PIPE_EDGE_FLAG_0;
-   const ushort edge_last   = DRAW_PIPE_EDGE_FLAG_1;
+   if (stage->draw->rasterizer->flatshade_first) {
+      edge_first  = DRAW_PIPE_EDGE_FLAG_0;
+      edge_middle = DRAW_PIPE_EDGE_FLAG_1;
+      edge_last   = DRAW_PIPE_EDGE_FLAG_2;
+   }
+   else {
+      edge_first  = DRAW_PIPE_EDGE_FLAG_2;
+      edge_middle = DRAW_PIPE_EDGE_FLAG_0;
+      edge_last   = DRAW_PIPE_EDGE_FLAG_1;
+   }
 
    /* later stages may need the determinant, but only the sign matters */
    header.det = origPrim->det;
@@ -175,9 +187,17 @@ static void emit_poly( struct draw_stage *stage,
    header.pad = 0;
 
    for (i = 2; i < n; i++, header.flags = edge_middle) {
-      header.v[0] = inlist[i-1];
-      header.v[1] = inlist[i];
-      header.v[2] = inlist[0]; /* keep in v[2] for flatshading */
+      /* order the triangle verts to respect the provoking vertex mode */
+      if (stage->draw->rasterizer->flatshade_first) {
+         header.v[0] = inlist[0];  /* the provoking vertex */
+         header.v[1] = inlist[i-1];
+         header.v[2] = inlist[i];
+      }
+      else {
+         header.v[0] = inlist[i-1];
+         header.v[1] = inlist[i];
+         header.v[2] = inlist[0];  /* the provoking vertex */
+      }
 
       if (i == n-1)
          header.flags |= edge_last;
@@ -185,7 +205,8 @@ static void emit_poly( struct draw_stage *stage,
       if (0) {
          const struct draw_vertex_shader *vs = stage->draw->vs.vertex_shader;
          uint j, k;
-         debug_printf("Clipped tri:\n");
+         debug_printf("Clipped tri: (flat-shade-first = %d)\n",
+                      stage->draw->rasterizer->flatshade_first);
          for (j = 0; j < 3; j++) {
             for (k = 0; k < vs->info.num_outputs; k++) {
                debug_printf("  Vert %d: Attr %d:  %f %f %f %f\n", j, k,
@@ -291,12 +312,21 @@ do_clip_tri( struct draw_stage *stage,
       }
    }
 
-   /* If flat-shading, copy color to new provoking vertex.
+   /* If flat-shading, copy provoking vertex color to polygon vertex[0]
     */
-   if (clipper->flat && inlist[0] != header->v[2]) {
-      inlist[0] = dup_vert(stage, inlist[0], tmpnr++);
-
-      copy_colors(stage, inlist[0], header->v[2]);
+   if (clipper->flat) {
+      if (stage->draw->rasterizer->flatshade_first) {
+         if (inlist[0] != header->v[0]) {
+            inlist[0] = dup_vert(stage, inlist[0], tmpnr++);
+            copy_colors(stage, inlist[0], header->v[0]);
+         }
+      }
+      else {
+         if (inlist[0] != header->v[2]) {
+            inlist[0] = dup_vert(stage, inlist[0], tmpnr++);
+            copy_colors(stage, inlist[0], header->v[2]);
+         }
+      }
    }
 
    /* Emit the polygon as triangles to the setup stage:
index dc66c65a56c2ab78bb65005df1492bf761b79637..bf84ce30ed1cf3aabeaf45b497a8909cea7525e5 100644 (file)
@@ -40,7 +40,8 @@
 
 struct cull_stage {
    struct draw_stage stage;
-   unsigned winding;  /**< which winding(s) to cull (one of PIPE_WINDING_x) */
+   unsigned cull_face;  /**< which face(s) to cull (one of PIPE_FACE_x) */
+   unsigned front_ccw;
 };
 
 
@@ -73,9 +74,12 @@ static void cull_tri( struct draw_stage *stage,
       /* if det < 0 then Z points toward the camera and the triangle is 
        * counter-clockwise winding.
        */
-      unsigned winding = (header->det < 0) ? PIPE_WINDING_CCW : PIPE_WINDING_CW;
+      unsigned ccw = (header->det < 0);
+      unsigned face = ((ccw == cull_stage(stage)->front_ccw) ?
+                       PIPE_FACE_FRONT :
+                       PIPE_FACE_BACK);
 
-      if ((winding & cull_stage(stage)->winding) == 0) {
+      if ((face & cull_stage(stage)->cull_face) == 0) {
          /* triangle is not culled, pass to next stage */
         stage->next->tri( stage->next, header );
       }
@@ -88,7 +92,8 @@ static void cull_first_tri( struct draw_stage *stage,
 {
    struct cull_stage *cull = cull_stage(stage);
 
-   cull->winding = stage->draw->rasterizer->cull_mode;
+   cull->cull_face = stage->draw->rasterizer->cull_face;
+   cull->front_ccw = stage->draw->rasterizer->front_ccw;
 
    stage->tri = cull_tri;
    stage->tri( stage, header );
index eef0238b157f89392a72868ea893e633324d4cb0..808b2fb0b58611a1d2fc7013a2ff4c83d1ea8621 100644 (file)
@@ -141,7 +141,7 @@ static void twoside_first_tri( struct draw_stage *stage,
     * if the triangle is back-facing (negative).
     * sign = -1 for CCW, +1 for CW
     */
-   twoside->sign = (stage->draw->rasterizer->front_winding == PIPE_WINDING_CCW) ? -1.0f : 1.0f;
+   twoside->sign = stage->draw->rasterizer->front_ccw ? -1.0f : 1.0f;
 
    stage->tri = twoside_tri;
    stage->tri( stage, header );
index 03bb842e20a30c5978fe5fe899e9139e88829825..e333d26a9320a8775203490dff252a057f059849 100644 (file)
@@ -105,6 +105,23 @@ static void lines( struct draw_stage *stage,
 }
 
 
+/** For debugging */
+static void
+print_header_flags(unsigned flags)
+{
+   debug_printf("header->flags = ");
+   if (flags & DRAW_PIPE_RESET_STIPPLE)
+      debug_printf("RESET_STIPPLE ");
+   if (flags & DRAW_PIPE_EDGE_FLAG_0)
+      debug_printf("EDGE_FLAG_0 ");
+   if (flags & DRAW_PIPE_EDGE_FLAG_1)
+      debug_printf("EDGE_FLAG_1 ");
+   if (flags & DRAW_PIPE_EDGE_FLAG_2)
+      debug_printf("EDGE_FLAG_2 ");
+   debug_printf("\n");
+}
+
+
 /* Unfilled tri:  
  *
  * Note edgeflags in the vertex struct is not sufficient as we will
@@ -117,8 +134,12 @@ static void unfilled_tri( struct draw_stage *stage,
                          struct prim_header *header )
 {
    struct unfilled_stage *unfilled = unfilled_stage(stage);
-   unsigned mode = unfilled->mode[header->det >= 0.0];
+   unsigned cw = header->det >= 0.0;
+   unsigned mode = unfilled->mode[cw];
   
+   if (0)
+      print_header_flags(header->flags);
+
    switch (mode) {
    case PIPE_POLYGON_MODE_FILL:
       stage->next->tri( stage->next, header );
@@ -139,9 +160,10 @@ static void unfilled_first_tri( struct draw_stage *stage,
                                struct prim_header *header )
 {
    struct unfilled_stage *unfilled = unfilled_stage(stage);
+   const struct pipe_rasterizer_state *rast = stage->draw->rasterizer;
 
-   unfilled->mode[0] = stage->draw->rasterizer->fill_ccw; /* front */
-   unfilled->mode[1] = stage->draw->rasterizer->fill_cw;  /* back */
+   unfilled->mode[0] = rast->front_ccw ? rast->fill_front : rast->fill_back;
+   unfilled->mode[1] = rast->front_ccw ? rast->fill_back : rast->fill_front;
 
    stage->tri = unfilled_tri;
    stage->tri( stage, header );
index 2a50af7a414a0ed41c363a35df8f1f35660266e9..eafa29276ffcd9bad39725a49e19a8a159db2684 100644 (file)
@@ -122,12 +122,14 @@ draw_need_pipeline(const struct draw_context *draw,
          return TRUE;
 
       /* unfilled polygons */
-      if (rasterizer->fill_cw != PIPE_POLYGON_MODE_FILL ||
-          rasterizer->fill_ccw != PIPE_POLYGON_MODE_FILL)
+      if (rasterizer->fill_front != PIPE_POLYGON_MODE_FILL ||
+          rasterizer->fill_back != PIPE_POLYGON_MODE_FILL)
          return TRUE;
       
       /* polygon offset */
-      if (rasterizer->offset_cw || rasterizer->offset_ccw)
+      if (rasterizer->offset_point ||
+          rasterizer->offset_line ||
+          rasterizer->offset_tri)
          return TRUE;
 
       /* two-side lighting */
@@ -222,8 +224,8 @@ static struct draw_stage *validate_pipeline( struct draw_stage *stage )
       next = draw->pipeline.pstipple;
    }
 
-   if (rast->fill_cw != PIPE_POLYGON_MODE_FILL ||
-       rast->fill_ccw != PIPE_POLYGON_MODE_FILL) {
+   if (rast->fill_front != PIPE_POLYGON_MODE_FILL ||
+       rast->fill_back != PIPE_POLYGON_MODE_FILL) {
       draw->pipeline.unfilled->next = next;
       next = draw->pipeline.unfilled;
       precalc_flat = TRUE;             /* only needed for triangles really */
@@ -235,8 +237,9 @@ static struct draw_stage *validate_pipeline( struct draw_stage *stage )
       next = draw->pipeline.flatshade;
    }
         
-   if (rast->offset_cw ||
-       rast->offset_ccw) {
+   if (rast->offset_point ||
+       rast->offset_line ||
+       rast->offset_tri) {
       draw->pipeline.offset->next = next;
       next = draw->pipeline.offset;
       need_det = TRUE;
@@ -255,7 +258,7 @@ static struct draw_stage *validate_pipeline( struct draw_stage *stage )
     * to less work emitting vertices, smaller vertex buffers, etc.
     * It's difficult to say whether this will be true in general.
     */
-   if (need_det || rast->cull_mode) {
+   if (need_det || rast->cull_face != PIPE_FACE_NONE) {
       draw->pipeline.cull->next = next;
       next = draw->pipeline.cull;
    }
index abbf6247ab824897a222811af2632740ebe5f97b..3c93c9014a605c08c1c29bcba7e2095bcf69d392 100644 (file)
@@ -159,19 +159,8 @@ vbuf_tri( struct draw_stage *stage,
 
    check_space( vbuf, 3 );
 
-   if (vbuf->stage.draw->rasterizer->flatshade_first) {
-      /* Put provoking vertex in position expected by the driver.
-       * Emit last provoking vertex in first pos.
-       * Swap verts 0 & 1 to preserve polygon winding.
-       */
-      vbuf->indices[vbuf->nr_indices++] = emit_vertex( vbuf, prim->v[2] );
-      vbuf->indices[vbuf->nr_indices++] = emit_vertex( vbuf, prim->v[0] );
-      vbuf->indices[vbuf->nr_indices++] = emit_vertex( vbuf, prim->v[1] );
-   }
-   else {
-      for (i = 0; i < 3; i++) {
-         vbuf->indices[vbuf->nr_indices++] = emit_vertex( vbuf, prim->v[i] );
-      }
+   for (i = 0; i < 3; i++) {
+      vbuf->indices[vbuf->nr_indices++] = emit_vertex( vbuf, prim->v[i] );
    }
 }
 
@@ -335,9 +324,9 @@ vbuf_flush_vertices( struct vbuf_stage *vbuf )
 
       if (vbuf->nr_indices) 
       {
-         vbuf->render->draw(vbuf->render, 
-                            vbuf->indices, 
-                            vbuf->nr_indices );
+         vbuf->render->draw_elements(vbuf->render, 
+                                     vbuf->indices, 
+                                     vbuf->nr_indices );
    
          vbuf->nr_indices = 0;
       }
index ab16706581565f2794b54fee46502c074bef9258..d7ac95b740510b9990a8fd9f9dc76891d3fb0c15 100644 (file)
@@ -77,8 +77,11 @@ static void wideline_line( struct draw_stage *stage,
    const float dx = fabsf(pos0[0] - pos2[0]);
    const float dy = fabsf(pos0[1] - pos2[1]);
 
+   const boolean gl_rasterization_rules =
+      stage->draw->rasterizer->gl_rasterization_rules;
+
    /* small tweak to meet GL specification */
-   const float bias = 0.125f;
+   const float bias = gl_rasterization_rules ? 0.125f : 0.0f;
 
    /*
     * Draw wide line as a quad (two tris) by "stretching" the line along
@@ -92,19 +95,21 @@ static void wideline_line( struct draw_stage *stage,
       pos1[1] = pos1[1] + half_width - bias;
       pos2[1] = pos2[1] - half_width - bias;
       pos3[1] = pos3[1] + half_width - bias;
-      if (pos0[0] < pos2[0]) {
-         /* left to right line */
-         pos0[0] -= 0.5f;
-         pos1[0] -= 0.5f;
-         pos2[0] -= 0.5f;
-         pos3[0] -= 0.5f;
-      }
-      else {
-         /* right to left line */
-         pos0[0] += 0.5f;
-         pos1[0] += 0.5f;
-         pos2[0] += 0.5f;
-         pos3[0] += 0.5f;
+      if (gl_rasterization_rules) {
+         if (pos0[0] < pos2[0]) {
+            /* left to right line */
+            pos0[0] -= 0.5f;
+            pos1[0] -= 0.5f;
+            pos2[0] -= 0.5f;
+            pos3[0] -= 0.5f;
+         }
+         else {
+            /* right to left line */
+            pos0[0] += 0.5f;
+            pos1[0] += 0.5f;
+            pos2[0] += 0.5f;
+            pos3[0] += 0.5f;
+         }
       }
    }
    else {
@@ -113,19 +118,21 @@ static void wideline_line( struct draw_stage *stage,
       pos1[0] = pos1[0] + half_width + bias;
       pos2[0] = pos2[0] - half_width + bias;
       pos3[0] = pos3[0] + half_width + bias;
-      if (pos0[1] < pos2[1]) {
-         /* top to bottom line */
-         pos0[1] -= 0.5f;
-         pos1[1] -= 0.5f;
-         pos2[1] -= 0.5f;
-         pos3[1] -= 0.5f;
-      }
-      else {
-         /* bottom to top line */
-         pos0[1] += 0.5f;
-         pos1[1] += 0.5f;
-         pos2[1] += 0.5f;
-         pos3[1] += 0.5f;
+      if (gl_rasterization_rules) {
+         if (pos0[1] < pos2[1]) {
+            /* top to bottom line */
+            pos0[1] -= 0.5f;
+            pos1[1] -= 0.5f;
+            pos2[1] -= 0.5f;
+            pos3[1] -= 0.5f;
+         }
+         else {
+            /* bottom to top line */
+            pos0[1] += 0.5f;
+            pos1[1] += 0.5f;
+            pos2[1] += 0.5f;
+            pos3[1] += 0.5f;
+         }
       }
    }
 
index 3c44f7c11eec0c216fa9c1217ea87dd95f0cbe89..52f9593d46ed535f199cecab6f7b7641a918aa5f 100644 (file)
@@ -47,33 +47,26 @@ static void FUNC( ARGS,
 
    case PIPE_PRIM_TRIANGLES:
       for (i = 0; i+2 < count; i += 3) {
-         if (flatfirst) {
-            /* put provoking vertex in last pos for clipper */
-            TRIANGLE( DRAW_PIPE_RESET_STIPPLE | DRAW_PIPE_EDGE_FLAG_ALL,
-                      (i + 1),
-                      (i + 2),
-                      (i + 0 ));
-         }
-         else {
-            TRIANGLE( DRAW_PIPE_RESET_STIPPLE | DRAW_PIPE_EDGE_FLAG_ALL,
-                      (i + 0),
-                      (i + 1),
-                      (i + 2 ));
-         }
+         TRIANGLE( DRAW_PIPE_RESET_STIPPLE | DRAW_PIPE_EDGE_FLAG_ALL,
+                   (i + 0),
+                   (i + 1),
+                   (i + 2 ));
       }
       break;
 
    case PIPE_PRIM_TRIANGLE_STRIP:
       if (flatfirst) {
          for (i = 0; i+2 < count; i++) {
+            /* Emit first triangle vertex as first triangle vertex */
             TRIANGLE( DRAW_PIPE_RESET_STIPPLE | DRAW_PIPE_EDGE_FLAG_ALL,
+                      (i + 0),
                       (i + 1 + (i&1)),
-                      (i + 2 - (i&1)),
-                      (i + 0) );
+                      (i + 2 - (i&1)) );
          }
       }
       else {
          for (i = 0; i+2 < count; i++) {
+            /* Emit last triangle vertex as last triangle vertex */
             TRIANGLE( DRAW_PIPE_RESET_STIPPLE | DRAW_PIPE_EDGE_FLAG_ALL,
                       (i + 0 + (i&1)),
                       (i + 1 - (i&1)),
@@ -87,9 +80,9 @@ static void FUNC( ARGS,
          if (flatfirst) {
             for (i = 0; i+2 < count; i++) {
                TRIANGLE( DRAW_PIPE_RESET_STIPPLE | DRAW_PIPE_EDGE_FLAG_ALL,
+                         (i + 1),
                          (i + 2),
-                         0,
-                         (i + 1) );
+                         0 );
             }
          }
          else {
@@ -105,24 +98,52 @@ static void FUNC( ARGS,
 
 
    case PIPE_PRIM_QUADS:
-      for (i = 0; i+3 < count; i += 4) {
-         QUAD( (i + 0),
-               (i + 1),
-               (i + 2),
-               (i + 3));
+      /* GL quads don't follow provoking vertex convention */
+      if (flatfirst) {
+         for (i = 0; i+3 < count; i += 4) {
+            /* emit last quad vertex as first triangle vertex */
+            QUAD_FIRST_PV( (i + 3),
+                           (i + 0),
+                           (i + 1),
+                           (i + 2) );
+         }
+      }
+      else {
+         for (i = 0; i+3 < count; i += 4) {
+            /* emit last quad vertex as last triangle vertex */
+            QUAD_LAST_PV( (i + 0),
+                          (i + 1),
+                          (i + 2),
+                          (i + 3) );
+         }
       }
       break;
 
    case PIPE_PRIM_QUAD_STRIP:
-      for (i = 0; i+3 < count; i += 2) {
-         QUAD( (i + 2),
-               (i + 0),
-               (i + 1),
-               (i + 3));
+      /* GL quad strips don't follow provoking vertex convention */
+      if (flatfirst) {
+         for (i = 0; i+3 < count; i += 2) {
+            /* emit last quad vertex as first triangle vertex */
+            QUAD_FIRST_PV( (i + 3),
+                           (i + 2),
+                           (i + 0),
+                           (i + 1) );
+
+         }
+      }
+      else {
+         for (i = 0; i+3 < count; i += 2) {
+            /* emit last quad vertex as last triangle vertex */
+            QUAD_LAST_PV( (i + 2),
+                          (i + 0),
+                          (i + 1),
+                          (i + 3) );
+         }
       }
       break;
 
    case PIPE_PRIM_POLYGON:
+      /* GL polygons don't follow provoking vertex convention */
       {
          /* These bitflags look a little odd because we submit the
           * vertices as (1,2,0) to satisfy flatshade requirements.
@@ -138,10 +159,20 @@ static void FUNC( ARGS,
             if (i + 3 == count)
                flags |= edge_last;
 
-           TRIANGLE( flags,
-                      (i + 1),
-                      (i + 2),
-                      (0));
+            if (flatfirst) {
+               /* emit first polygon vertex as first triangle vertex */
+               TRIANGLE( flags,
+                         (0),
+                         (i + 1),
+                         (i + 2) );
+            }
+            else {
+               /* emit first polygon vertex as last triangle vertex */
+               TRIANGLE( flags,
+                         (i + 1),
+                         (i + 2),
+                         (0));
+            }
         }
       }
       break;
@@ -156,7 +187,8 @@ static void FUNC( ARGS,
 
 
 #undef TRIANGLE
-#undef QUAD
+#undef QUAD_FIRST_PV
+#undef QUAD_LAST_PV
 #undef POINT
 #undef LINE
 #undef FUNC
index ad48fa39a4f0ad751058b9b91f07e50bc07cb080..f623c0743da17160c342ef3ca885c5042758e956 100644 (file)
@@ -190,9 +190,9 @@ void draw_pt_emit( struct pt_emit *emit,
                            0, 
                            vertex_count - 1 );
 
-   render->draw(render,
-               elts,
-               count);
+   render->draw_elements(render,
+                         elts,
+                         count);
 
    render->release_vertices(render);
 }
index d7735bf1ac9dcf0642eb08cd473bae520439205b..5158c6341c016ecddec14b458e17e5fb8b8c8831 100644 (file)
@@ -254,9 +254,9 @@ static void fetch_emit_run( struct draw_pt_middle_end *middle,
    /* XXX: Draw arrays path to avoid re-emitting index list again and
     * again.
     */
-   draw->render->draw( draw->render, 
-                       draw_elts, 
-                       draw_count );
+   draw->render->draw_elements( draw->render, 
+                                draw_elts, 
+                                draw_count );
 
    /* Done -- that was easy, wasn't it: 
     */
@@ -363,9 +363,9 @@ static boolean fetch_emit_run_linear_elts( struct draw_pt_middle_end *middle,
    /* XXX: Draw arrays path to avoid re-emitting index list again and
     * again.
     */
-   draw->render->draw( draw->render, 
-                       draw_elts, 
-                       draw_count );
+   draw->render->draw_elements( draw->render, 
+                                draw_elts, 
+                                draw_count );
 
    /* Done -- that was easy, wasn't it:
     */
index cbb5b6c960535e6320b61a67f003a1035b61a120..f0fc591bf558741af96fe49dd34d204b174d6b4b 100644 (file)
@@ -307,9 +307,9 @@ fse_run(struct draw_pt_middle_end *middle,
 
    draw->render->unmap_vertices( draw->render, 0, (ushort)(fetch_count - 1) );
    
-   draw->render->draw( draw->render, 
-                       draw_elts, 
-                       draw_count );
+   draw->render->draw_elements( draw->render, 
+                                draw_elts, 
+                                draw_count );
 
 
    draw->render->release_vertices( draw->render );
@@ -357,9 +357,9 @@ static boolean fse_run_linear_elts( struct draw_pt_middle_end *middle,
                             hw_verts );
 
 
-   draw->render->draw( draw->render, 
-                       draw_elts, 
-                       draw_count );
+   draw->render->draw_elements( draw->render, 
+                                draw_elts, 
+                                draw_count );
    
 
    draw->render->unmap_vertices( draw->render, 0, (ushort)(count - 1) );
index 6d00b0fbd44d60c9f225641e6d1d82dd096c00f2..d56889b5f651ec15035e1f539882237cd429a03c 100644 (file)
@@ -32,7 +32,6 @@
 #include "draw/draw_vertex.h"
 #include "draw/draw_pt.h"
 #include "draw/draw_vs.h"
-#include "draw/draw_gs.h"
 #include "draw/draw_llvm.h"
 
 
index 37ffbac4f92221e1c884e506dde9091c31e06015..6a48e61e624a1762e0f98229b0655ee06ae6dc99 100644 (file)
@@ -183,8 +183,16 @@ vcache_quad( struct vcache_frontend *vcache,
              unsigned i2,
              unsigned i3 )
 {
-   vcache_triangle( vcache, i0, i1, i3 );
-   vcache_triangle( vcache, i1, i2, i3 );
+   if (vcache->draw->rasterizer->flatshade_first) {
+      /* pass last quad vertex as first triangle vertex */
+      vcache_triangle( vcache, i3, i0, i1 );
+      vcache_triangle( vcache, i3, i1, i2 );
+   }
+   else {
+      /* pass last quad vertex as last triangle vertex */
+      vcache_triangle( vcache, i0, i1, i3 );
+      vcache_triangle( vcache, i1, i2, i3 );
+   }
 }
 
 static INLINE void 
@@ -195,18 +203,20 @@ vcache_ef_quad( struct vcache_frontend *vcache,
                 unsigned i3 )
 {
    if (vcache->draw->rasterizer->flatshade_first) {
+      /* pass last quad vertex as first triangle vertex */
       vcache_triangle_flags( vcache,
                              ( DRAW_PIPE_RESET_STIPPLE |
                                DRAW_PIPE_EDGE_FLAG_0 |
                                DRAW_PIPE_EDGE_FLAG_1 ),
-                             i0, i1, i2 );
+                             i3, i0, i1 );
 
       vcache_triangle_flags( vcache,
-                             ( DRAW_PIPE_EDGE_FLAG_2 |
-                               DRAW_PIPE_EDGE_FLAG_1 ),
-                             i0, i2, i3 );
+                             ( DRAW_PIPE_EDGE_FLAG_1 |
+                               DRAW_PIPE_EDGE_FLAG_2 ),
+                             i3, i1, i2 );
    }
    else {
+      /* pass last quad vertex as last triangle vertex */
       vcache_triangle_flags( vcache,
                              ( DRAW_PIPE_RESET_STIPPLE |
                                DRAW_PIPE_EDGE_FLAG_0 |
index f7a63de3ba9c6be8a1a5ec3788746b1fa1983510..dac68ad4398fd81689f5d00353a87a0a01fa9e57 100644 (file)
@@ -142,20 +142,21 @@ static void FUNC( struct draw_pt_front_end *frontend,
          /* These bitflags look a little odd because we submit the
           * vertices as (1,2,0) to satisfy flatshade requirements.  
           */
-         const ushort edge_first  = DRAW_PIPE_EDGE_FLAG_2;
-         const ushort edge_middle = DRAW_PIPE_EDGE_FLAG_0;
-         const ushort edge_last   = DRAW_PIPE_EDGE_FLAG_1;
          ushort edge_next, edge_finish;
 
          if (flatfirst) {
-            flags = DRAW_PIPE_RESET_STIPPLE | edge_middle | edge_last;
-            edge_next = edge_last;
-            edge_finish = edge_first;
+            flags = (DRAW_PIPE_RESET_STIPPLE |
+                     DRAW_PIPE_EDGE_FLAG_1 |
+                     DRAW_PIPE_EDGE_FLAG_2);
+            edge_next = DRAW_PIPE_EDGE_FLAG_2;
+            edge_finish = DRAW_PIPE_EDGE_FLAG_0;
          }
          else {
-            flags = DRAW_PIPE_RESET_STIPPLE | edge_first | edge_middle;
-            edge_next = edge_middle;
-            edge_finish = edge_last;
+            flags = (DRAW_PIPE_RESET_STIPPLE |
+                     DRAW_PIPE_EDGE_FLAG_2 |
+                     DRAW_PIPE_EDGE_FLAG_0);
+            edge_next = DRAW_PIPE_EDGE_FLAG_0;
+            edge_finish = DRAW_PIPE_EDGE_FLAG_1;
          }
 
         for (i = 0; i+2 < count; i++, flags = edge_next) {
index cccd3bf4358d4ac5e97c21cfd1daf80829a0ebb5..83ae26a9c2b365e5e1e38a29d16b80852b87d8a0 100644 (file)
@@ -98,14 +98,14 @@ struct vbuf_render {
    boolean (*set_primitive)( struct vbuf_render *, unsigned prim );
 
    /**
-    * DrawElements, note indices are ushort.  The driver must complete
-    * this call, if necessary splitting the index list itself.
+    * Draw indexed primitives.  Note that indices are ushort.  The driver
+    * must complete this call, if necessary splitting the index list itself.
     */
-   void (*draw)( struct vbuf_render *,
-                const ushort *indices,
-                uint nr_indices );
+   void (*draw_elements)( struct vbuf_render *,
+                          const ushort *indices,
+                          uint nr_indices );
 
-   /* Draw Arrays path too.
+   /* Draw non-indexed primitives.
     */
    void (*draw_arrays)( struct vbuf_render *,
                        unsigned start,
diff --git a/src/gallium/auxiliary/gallivm/f.cpp b/src/gallium/auxiliary/gallivm/f.cpp
new file mode 100644 (file)
index 0000000..5eb09c0
--- /dev/null
@@ -0,0 +1,85 @@
+/**************************************************************************
+ *
+ * (C) Copyright VMware, Inc 2010.
+ * (C) Copyright John Maddock 2006.
+ * Use, modification and distribution are subject to the
+ * Boost Software License, Version 1.0. (See accompanying file
+ * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ *
+ **************************************************************************/
+
+
+/*
+ * This file allows to compute the minimax polynomial coefficients we use
+ * for fast exp2/log2.
+ *
+ * How to use this source:
+ *
+ * - Download and abuild the NTL library from
+ *   http://shoup.net/ntl/download.html
+ *
+ * - Download boost source code matching to your distro. 
+ *
+ * - Goto libs/math/minimax and replace f.cpp with this file.
+ *
+ * - Build as
+ *
+ *   g++ -o minimax -I /path/to/ntl/include main.cpp f.cpp /path/to/ntl/src/ntl.a -lboost_math_tr1
+ *
+ * - Run as 
+ *
+ *    ./minimax
+ *
+ * - For example, to compute exp2 5th order polynomial between [0, 1] do:
+ *
+ *    variant 1
+ *    range 0 1
+ *    order 5 0
+ *    steps 200
+ *    info
+ *
+ * - For more info see
+ * http://www.boost.org/doc/libs/1_36_0/libs/math/doc/sf_and_dist/html/math_toolkit/toolkit/internals2/minimax.html
+ */
+
+#define L22
+#include <boost/math/bindings/rr.hpp>
+#include <boost/math/tools/polynomial.hpp>
+
+#include <cmath>
+
+
+boost::math::ntl::RR f(const boost::math::ntl::RR& x, int variant)
+{
+   static const boost::math::ntl::RR tiny = boost::math::tools::min_value<boost::math::ntl::RR>() * 64;
+   
+   switch(variant)
+   {
+   case 0:
+      // log2(x)/(x - 1)
+      return log(x)/log(2.0)/(x - 1.0);
+
+   case 1:
+      // exp2(x)
+      return exp(x*log(2.0));
+   }
+
+   return 0;
+}
+
+
+void show_extra(
+   const boost::math::tools::polynomial<boost::math::ntl::RR>& n, 
+   const boost::math::tools::polynomial<boost::math::ntl::RR>& d, 
+   const boost::math::ntl::RR& x_offset, 
+   const boost::math::ntl::RR& y_offset, 
+   int variant)
+{
+   switch(variant)
+   {
+   default:
+      // do nothing here...
+      ;
+   }
+}
+
index 2fa682f400950a38a055040bd5efaf712f605ee3..8103bc917fc7f9d1a95f9e2b319c5c9cd2931445 100644 (file)
 #define LP_BLD_H
 
 
+/**
+ * @file
+ * LLVM IR building helpers interfaces.
+ *
+ * We use LLVM-C bindings for now. They are not documented, but follow the C++
+ * interfaces very closely, and appear to be complete enough for code
+ * genration. See
+ * http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
+ * for a standalone example.
+ */
+
 #include <llvm-c/Core.h>  
 
 
index f372a48846ff86986a543c38ecb09a1e3a0c93b3..b55c863aa04cad9264a8e71bb9fcd94eb2c0d68d 100644 (file)
@@ -54,6 +54,7 @@
 #include "lp_bld_type.h"
 #include "lp_bld_const.h"
 #include "lp_bld_intr.h"
+#include "lp_bld_init.h" /* for lp_build_engine */
 #include "lp_bld_logic.h"
 #include "lp_bld_pack.h"
 #include "lp_bld_debug.h"
@@ -239,7 +240,7 @@ lp_build_sum_vector(struct lp_build_context *bld,
 {
    const struct lp_type type = bld->type;
    LLVMValueRef index, res;
-   int i;
+   unsigned i;
 
    if (a == bld->zero)
       return bld->zero;
@@ -675,26 +676,13 @@ lp_build_abs(struct lp_build_context *bld,
 
    if(type.floating) {
       /* Mask out the sign bit */
-      if (type.length == 1) {
-         LLVMTypeRef int_type = LLVMIntType(type.width);
-         LLVMTypeRef float_type = LLVMFloatType();
-         unsigned long long absMask = ~(1ULL << (type.width - 1));
-         LLVMValueRef mask = LLVMConstInt(int_type, absMask, 0);
-         a = LLVMBuildBitCast(bld->builder, a, int_type, "");
-         a = LLVMBuildAnd(bld->builder, a, mask, "");
-         a = LLVMBuildBitCast(bld->builder, a, float_type, "");
-         return a;
-      }
-      else {
-         /* vector of floats */
-         LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
-         unsigned long long absMask = ~(1ULL << (type.width - 1));
-         LLVMValueRef mask = lp_build_const_int_vec(type, ((unsigned long long) absMask));
-         a = LLVMBuildBitCast(bld->builder, a, int_vec_type, "");
-         a = LLVMBuildAnd(bld->builder, a, mask, "");
-         a = LLVMBuildBitCast(bld->builder, a, vec_type, "");
-         return a;
-      }
+      LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
+      unsigned long long absMask = ~(1ULL << (type.width - 1));
+      LLVMValueRef mask = lp_build_const_int_vec(type, ((unsigned long long) absMask));
+      a = LLVMBuildBitCast(bld->builder, a, int_vec_type, "");
+      a = LLVMBuildAnd(bld->builder, a, mask, "");
+      a = LLVMBuildBitCast(bld->builder, a, vec_type, "");
+      return a;
    }
 
    if(type.width*type.length == 128 && util_cpu_caps.has_ssse3) {
@@ -742,17 +730,9 @@ lp_build_sgn(struct lp_build_context *bld,
       LLVMValueRef one;
       unsigned long long maskBit = (unsigned long long)1 << (type.width - 1);
 
-      if (type.length == 1) {
-         int_type = lp_build_int_elem_type(type);
-         vec_type = lp_build_elem_type(type);
-         mask = LLVMConstInt(int_type, maskBit, 0);
-      }
-      else {
-         /* vector */
-         int_type = lp_build_int_vec_type(type);
-         vec_type = lp_build_vec_type(type);
-         mask = lp_build_const_int_vec(type, maskBit);
-      }
+      int_type = lp_build_int_vec_type(type);
+      vec_type = lp_build_vec_type(type);
+      mask = lp_build_const_int_vec(type, maskBit);
 
       /* Take the sign bit and add it to 1 constant */
       sign = LLVMBuildBitCast(bld->builder, a, int_type, "");
@@ -819,21 +799,11 @@ lp_build_int_to_float(struct lp_build_context *bld,
                       LLVMValueRef a)
 {
    const struct lp_type type = bld->type;
+   LLVMTypeRef vec_type = lp_build_vec_type(type);
 
    assert(type.floating);
-   /*assert(lp_check_value(type, a));*/
 
-   if (type.length == 1) {
-      LLVMTypeRef float_type = LLVMFloatType();
-      return LLVMBuildSIToFP(bld->builder, a, float_type, "");
-   }
-   else {
-      LLVMTypeRef vec_type = lp_build_vec_type(type);
-      /*LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);*/
-      LLVMValueRef res;
-      res = LLVMBuildSIToFP(bld->builder, a, vec_type, "");
-      return res;
-   }
+   return LLVMBuildSIToFP(bld->builder, a, vec_type, "");
 }
 
 
@@ -887,7 +857,7 @@ lp_build_trunc(struct lp_build_context *bld,
    assert(type.floating);
    assert(lp_check_value(type, a));
 
-   if(util_cpu_caps.has_sse4_1)
+   if (util_cpu_caps.has_sse4_1 && type.width*type.length == 128)
       return lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_TRUNCATE);
    else {
       LLVMTypeRef vec_type = lp_build_vec_type(type);
@@ -909,7 +879,7 @@ lp_build_round(struct lp_build_context *bld,
    assert(type.floating);
    assert(lp_check_value(type, a));
 
-   if(util_cpu_caps.has_sse4_1)
+   if (util_cpu_caps.has_sse4_1 && type.width*type.length == 128)
       return lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_NEAREST);
    else {
       LLVMTypeRef vec_type = lp_build_vec_type(type);
@@ -928,15 +898,9 @@ lp_build_floor(struct lp_build_context *bld,
    const struct lp_type type = bld->type;
 
    assert(type.floating);
+   assert(lp_check_value(type, a));
 
-   if (type.length == 1) {
-      LLVMValueRef res;
-      res = lp_build_ifloor(bld, a);
-      res = LLVMBuildSIToFP(bld->builder, res, LLVMFloatType(), "");
-      return res;
-   }
-
-   if(util_cpu_caps.has_sse4_1)
+   if (util_cpu_caps.has_sse4_1 && type.width*type.length == 128)
       return lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_FLOOR);
    else {
       LLVMTypeRef vec_type = lp_build_vec_type(type);
@@ -957,7 +921,7 @@ lp_build_ceil(struct lp_build_context *bld,
    assert(type.floating);
    assert(lp_check_value(type, a));
 
-   if(util_cpu_caps.has_sse4_1)
+   if (util_cpu_caps.has_sse4_1 && type.width*type.length == 128)
       return lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_CEIL);
    else {
       LLVMTypeRef vec_type = lp_build_vec_type(type);
@@ -991,18 +955,12 @@ lp_build_itrunc(struct lp_build_context *bld,
                 LLVMValueRef a)
 {
    const struct lp_type type = bld->type;
+   LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
 
    assert(type.floating);
+   assert(lp_check_value(type, a));
 
-   if (type.length == 1) {
-      LLVMTypeRef int_type = LLVMIntType(type.width);
-      return LLVMBuildFPToSI(bld->builder, a, int_type, "");
-   }
-   else {
-      LLVMTypeRef int_vec_type = lp_build_int_vec_type(type);
-      assert(lp_check_value(type, a));
-      return LLVMBuildFPToSI(bld->builder, a, int_vec_type, "");
-   }
+   return LLVMBuildFPToSI(bld->builder, a, int_vec_type, "");
 }
 
 
@@ -1019,17 +977,9 @@ lp_build_iround(struct lp_build_context *bld,
 
    assert(type.floating);
 
-   if (type.length == 1) {
-      /* scalar float to int */
-      LLVMTypeRef int_type = LLVMIntType(type.width);
-      /* XXX we want rounding here! */
-      res = LLVMBuildFPToSI(bld->builder, a, int_type, "");
-      return res;
-   }
-
    assert(lp_check_value(type, a));
 
-   if(util_cpu_caps.has_sse4_1) {
+   if (util_cpu_caps.has_sse4_1 && type.width*type.length == 128) {
       res = lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_NEAREST);
    }
    else {
@@ -1069,17 +1019,9 @@ lp_build_ifloor(struct lp_build_context *bld,
    LLVMValueRef res;
 
    assert(type.floating);
-
-   if (type.length == 1) {
-      /* scalar float to int */
-      LLVMTypeRef int_type = LLVMIntType(type.width);
-      res = LLVMBuildFPToSI(bld->builder, a, int_type, "");
-      return res;
-   }
-
    assert(lp_check_value(type, a));
 
-   if(util_cpu_caps.has_sse4_1) {
+   if (util_cpu_caps.has_sse4_1 && type.width*type.length == 128) {
       res = lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_FLOOR);
    }
    else {
@@ -1127,10 +1069,11 @@ lp_build_iceil(struct lp_build_context *bld,
    assert(type.floating);
    assert(lp_check_value(type, a));
 
-   if(util_cpu_caps.has_sse4_1) {
+   if (util_cpu_caps.has_sse4_1 && type.width*type.length == 128) {
       res = lp_build_round_sse41(bld, a, LP_BUILD_ROUND_SSE41_CEIL);
    }
    else {
+      /* TODO: mimic lp_build_ifloor() here */
       assert(0);
       res = bld->undef;
    }
@@ -1228,6 +1171,92 @@ lp_build_rsqrt(struct lp_build_context *bld,
 }
 
 
+#ifdef PIPE_OS_WINDOWS
+
+/*
+ * XXX: 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.
+ *
+ * XXX: With LLVM 2.7 both schemes cause an assertion failure.
+ */
+static LLVMValueRef
+lp_build_sincos(struct lp_build_context *bld,
+                const char *name,
+                float (*func)(float),
+                LLVMValueRef a)
+{
+   LLVMModuleRef module =
+         LLVMGetGlobalParent(LLVMGetBasicBlockParent(LLVMGetInsertBlock(bld->builder)));
+   LLVMValueRef function;
+   LLVMValueRef res;
+   unsigned i;
+
+   assert(bld->type.floating);
+   assert(bld->type.width == 32);
+
+   function = LLVMGetNamedFunction(module, name);
+   if (!function) {
+      LLVMTypeRef ret_type;
+      LLVMTypeRef arg_types[1];
+      LLVMTypeRef function_type;
+
+      ret_type = LLVMFloatType();
+      arg_types[0] = LLVMFloatType();
+      function_type = LLVMFunctionType(ret_type, arg_types, Elements(arg_types), 0);
+      function = LLVMAddFunction(module, name, function_type);
+
+      LLVMSetFunctionCallConv(function, LLVMCCallConv);
+      LLVMSetLinkage(function, LLVMPrivateLinkage);
+
+      assert(LLVMIsDeclaration(function));
+
+      LLVMAddGlobalMapping(lp_build_engine, function, func);
+   }
+
+   res = bld->undef;
+
+   for (i = 0; i < bld->type.length; ++i) {
+      LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0);
+      LLVMValueRef args[1];
+      LLVMValueRef tmp;
+
+      args[0] = LLVMBuildExtractElement(bld->builder, a, index, "");
+
+      tmp = LLVMBuildCall(bld->builder, function, args, Elements(args), "");
+
+      res = LLVMBuildInsertElement(bld->builder, res, tmp, index, "");
+   }
+
+   return res;
+}
+
+static float c_cosf( float f )
+{
+   return (float) cos( (double) f );
+}
+
+static float c_sinf( float f )
+{
+   return (float) sin( (double) f );
+}
+
+LLVMValueRef
+lp_build_cos(struct lp_build_context *bld,
+             LLVMValueRef a)
+{
+   return lp_build_sincos(bld, "cosf", &c_cosf, a);
+}
+
+LLVMValueRef
+lp_build_sin(struct lp_build_context *bld,
+             LLVMValueRef a)
+{
+   return lp_build_sincos(bld, "sinf", &c_sinf, a);
+}
+
+#else /* !PIPE_OS_WINDOWS */
+
 /**
  * Generate cos(a)
  */
@@ -1235,14 +1264,6 @@ 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];
@@ -1253,7 +1274,6 @@ 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
 }
 
 
@@ -1264,14 +1284,6 @@ 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];
@@ -1282,9 +1294,10 @@ 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
 }
 
+#endif /* !PIPE_OS_WINDOWS */
+
 
 /**
  * Generate pow(x, y)
@@ -1346,7 +1359,6 @@ lp_build_polynomial(struct lp_build_context *bld,
                     unsigned num_coeffs)
 {
    const struct lp_type type = bld->type;
-   LLVMTypeRef float_type = LLVMFloatType();
    LLVMValueRef res = NULL;
    unsigned i;
 
@@ -1358,10 +1370,7 @@ lp_build_polynomial(struct lp_build_context *bld,
    for (i = num_coeffs; i--; ) {
       LLVMValueRef coeff;
 
-      if (type.length == 1)
-         coeff = LLVMConstReal(float_type, coeffs[i]);
-      else
-         coeff = lp_build_const_vec(type, coeffs[i]);
+      coeff = lp_build_const_vec(type, coeffs[i]);
 
       if(res)
          res = lp_build_add(bld, coeff, lp_build_mul(bld, x, res));
@@ -1377,17 +1386,31 @@ lp_build_polynomial(struct lp_build_context *bld,
 
 
 /**
- * Minimax polynomial fit of 2**x, in range [-0.5, 0.5[
+ * Minimax polynomial fit of 2**x, in range [0, 1[
  */
 const double lp_build_exp2_polynomial[] = {
 #if EXP_POLY_DEGREE == 5
-   9.9999994e-1, 6.9315308e-1, 2.4015361e-1, 5.5826318e-2, 8.9893397e-3, 1.8775767e-3
+   0.999999999690134838155,
+   0.583974334321735217258,
+   0.164553105719676828492,
+   0.0292811063701710962255,
+   0.00354944426657875141846,
+   0.000296253726543423377365
 #elif EXP_POLY_DEGREE == 4
-   1.0000026, 6.9300383e-1, 2.4144275e-1, 5.2011464e-2, 1.3534167e-2
+   1.00000001502262084505,
+   0.563586057338685991394,
+   0.150436017652442413623,
+   0.0243220604213317927308,
+   0.0025359088446580436489
 #elif EXP_POLY_DEGREE == 3
-   9.9992520e-1, 6.9583356e-1, 2.2606716e-1, 7.8024521e-2
+   0.999925218562710312959,
+   0.695833540494823811697,
+   0.226067155427249155588,
+   0.0780245226406372992967
 #elif EXP_POLY_DEGREE == 2
-   1.0017247, 6.5763628e-1, 3.3718944e-1
+   1.00172476321474503578,
+   0.657636275736077639316,
+   0.33718943461968720704
 #else
 #error
 #endif
@@ -1421,17 +1444,16 @@ lp_build_exp2_approx(struct lp_build_context *bld,
       x = lp_build_min(bld, x, lp_build_const_vec(type,  129.0));
       x = lp_build_max(bld, x, lp_build_const_vec(type, -126.99999));
 
-      /* ipart = int(x - 0.5) */
-      ipart = LLVMBuildSub(bld->builder, x, lp_build_const_vec(type, 0.5f), "");
-      ipart = LLVMBuildFPToSI(bld->builder, ipart, int_vec_type, "");
+      /* ipart = floor(x) */
+      ipart = lp_build_floor(bld, x);
 
       /* fpart = x - ipart */
-      fpart = LLVMBuildSIToFP(bld->builder, ipart, vec_type, "");
-      fpart = LLVMBuildSub(bld->builder, x, fpart, "");
+      fpart = LLVMBuildSub(bld->builder, x, ipart, "");
    }
 
    if(p_exp2_int_part || p_exp2) {
       /* expipart = (float) (1 << ipart) */
+      ipart = LLVMBuildFPToSI(bld->builder, ipart, int_vec_type, "");
       expipart = LLVMBuildAdd(bld->builder, ipart, lp_build_const_int_vec(type, 127), "");
       expipart = LLVMBuildShl(bld->builder, expipart, lp_build_const_int_vec(type, 23), "");
       expipart = LLVMBuildBitCast(bld->builder, expipart, vec_type, "");
@@ -1472,13 +1494,27 @@ lp_build_exp2(struct lp_build_context *bld,
  */
 const double lp_build_log2_polynomial[] = {
 #if LOG_POLY_DEGREE == 6
-   3.11578814719469302614, -3.32419399085241980044, 2.59883907202499966007, -1.23152682416275988241, 0.318212422185251071475, -0.0344359067839062357313
+   3.11578814719469302614,
+   -3.32419399085241980044,
+   2.59883907202499966007,
+   -1.23152682416275988241,
+   0.318212422185251071475,
+   -0.0344359067839062357313
 #elif LOG_POLY_DEGREE == 5
-   2.8882704548164776201, -2.52074962577807006663, 1.48116647521213171641, -0.465725644288844778798, 0.0596515482674574969533
+   2.8882704548164776201,
+   -2.52074962577807006663,
+   1.48116647521213171641,
+   -0.465725644288844778798,
+   0.0596515482674574969533
 #elif LOG_POLY_DEGREE == 4
-   2.61761038894603480148, -1.75647175389045657003, 0.688243882994381274313, -0.107254423828329604454
+   2.61761038894603480148,
+   -1.75647175389045657003,
+   0.688243882994381274313,
+   -0.107254423828329604454
 #elif LOG_POLY_DEGREE == 3
-   2.28330284476918490682, -1.04913055217340124191, 0.204446009836232697516
+   2.28330284476918490682,
+   -1.04913055217340124191,
+   0.204446009836232697516
 #else
 #error
 #endif
@@ -1558,89 +1594,11 @@ lp_build_log2_approx(struct lp_build_context *bld,
 }
 
 
-/** scalar version of above function */
-static void
-lp_build_float_log2_approx(struct lp_build_context *bld,
-                           LLVMValueRef x,
-                           LLVMValueRef *p_exp,
-                           LLVMValueRef *p_floor_log2,
-                           LLVMValueRef *p_log2)
-{
-   const struct lp_type type = bld->type;
-   LLVMTypeRef float_type = LLVMFloatType();
-   LLVMTypeRef int_type = LLVMIntType(type.width);
-
-   LLVMValueRef expmask = LLVMConstInt(int_type, 0x7f800000, 0);
-   LLVMValueRef mantmask = LLVMConstInt(int_type, 0x007fffff, 0);
-   LLVMValueRef one = LLVMConstBitCast(bld->one, int_type);
-
-   LLVMValueRef i = NULL;
-   LLVMValueRef exp = NULL;
-   LLVMValueRef mant = NULL;
-   LLVMValueRef logexp = NULL;
-   LLVMValueRef logmant = NULL;
-   LLVMValueRef res = NULL;
-
-   if(p_exp || p_floor_log2 || p_log2) {
-      /* TODO: optimize the constant case */
-      if(LLVMIsConstant(x))
-         debug_printf("%s: inefficient/imprecise constant arithmetic\n",
-                      __FUNCTION__);
-
-      assert(type.floating && type.width == 32);
-
-      i = LLVMBuildBitCast(bld->builder, x, int_type, "");
-
-      /* exp = (float) exponent(x) */
-      exp = LLVMBuildAnd(bld->builder, i, expmask, "");
-   }
-
-   if(p_floor_log2 || p_log2) {
-      LLVMValueRef c23 = LLVMConstInt(int_type, 23, 0);
-      LLVMValueRef c127 = LLVMConstInt(int_type, 127, 0);
-      logexp = LLVMBuildLShr(bld->builder, exp, c23, "");
-      logexp = LLVMBuildSub(bld->builder, logexp, c127, "");
-      logexp = LLVMBuildSIToFP(bld->builder, logexp, float_type, "");
-   }
-
-   if(p_log2) {
-      /* mant = (float) mantissa(x) */
-      mant = LLVMBuildAnd(bld->builder, i, mantmask, "");
-      mant = LLVMBuildOr(bld->builder, mant, one, "");
-      mant = LLVMBuildBitCast(bld->builder, mant, float_type, "");
-
-      logmant = lp_build_polynomial(bld, mant, lp_build_log2_polynomial,
-                                    Elements(lp_build_log2_polynomial));
-
-      /* This effectively increases the polynomial degree by one, but ensures that log2(1) == 0*/
-      logmant = LLVMBuildMul(bld->builder, logmant, LLVMBuildSub(bld->builder, mant, bld->one, ""), "");
-
-      res = LLVMBuildAdd(bld->builder, logmant, logexp, "");
-   }
-
-   if(p_exp) {
-      exp = LLVMBuildBitCast(bld->builder, exp, float_type, "");
-      *p_exp = exp;
-   }
-
-   if(p_floor_log2)
-      *p_floor_log2 = logexp;
-
-   if(p_log2)
-      *p_log2 = res;
-}
-
-
 LLVMValueRef
 lp_build_log2(struct lp_build_context *bld,
               LLVMValueRef x)
 {
    LLVMValueRef res;
-   if (bld->type.length == 1) {
-      lp_build_float_log2_approx(bld, x, NULL, NULL, &res);
-   }
-   else {
-      lp_build_log2_approx(bld, x, NULL, NULL, &res);
-   }
+   lp_build_log2_approx(bld, x, NULL, NULL, &res);
    return res;
 }
index 57843e9a60ce909e230aac77bf284710801c853b..031ce9d1a375390deebed743dee791d325f74227 100644 (file)
@@ -301,6 +301,9 @@ lp_build_const_vec(struct lp_type type,
       elems[0] = LLVMConstInt(elem_type, val*dscale + 0.5, 0);
    }
 
+   if (type.length == 1)
+      return elems[0];
+
    for(i = 1; i < type.length; ++i)
       elems[i] = elems[0];
 
@@ -321,6 +324,9 @@ lp_build_const_int_vec(struct lp_type type,
    for(i = 0; i < type.length; ++i)
       elems[i] = LLVMConstInt(elem_type, val, type.sign ? 1 : 0);
 
+   if (type.length == 1)
+      return elems[0];
+
    return LLVMConstVector(elems, type.length);
 }
 
index 7b010cbdb0986d728aafc3c236ce98747b7a5b14..858002b34feda33fb79b838242f9c067e4083504 100644 (file)
 #include "util/u_string.h"
 
 
+#define GALLIVM_DEBUG_TGSI      0x1
+#define GALLIVM_DEBUG_IR        0x2
+#define GALLIVM_DEBUG_ASM       0x4
+#define GALLIVM_DEBUG_NO_OPT    0x8
+
+
+#ifdef DEBUG
+extern unsigned gallivm_debug;
+#else
+#define gallivm_debug 0
+#endif
+
+
 static INLINE void
 lp_build_name(LLVMValueRef val, const char *format, ...)
 {
@@ -53,6 +66,10 @@ lp_build_name(LLVMValueRef val, const char *format, ...)
 }
 
 
+void
+lp_debug_dump_value(LLVMValueRef value);
+
+
 boolean
 lp_check_alignment(const void *ptr, unsigned alignment);
 
index 8f15b1d287d40076d75de1bf37405a78cebd33ab..823a8ec7b70519404b696a373dfcaeaea532f557 100644 (file)
@@ -821,8 +821,11 @@ lp_build_alloca(LLVMBuilderRef builder,
    LLVMBuilderRef first_builder = LLVMCreateBuilder();
    LLVMValueRef res;
 
-   LLVMPositionBuilderAtEnd(first_builder, first_block);
-   LLVMPositionBuilderBefore(first_builder, first_instr);
+   if (first_instr) {
+      LLVMPositionBuilderBefore(first_builder, first_instr);
+   } else {
+      LLVMPositionBuilderAtEnd(first_builder, first_block);
+   }
 
    res = LLVMBuildAlloca(first_builder, type, name);
 
@@ -840,7 +843,7 @@ lp_build_alloca(LLVMBuilderRef builder,
  * 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
+ * Also the scalarrepl pass is supposedly more powerful and can promote
  * arrays in many cases.
  *
  * See also:
@@ -859,7 +862,11 @@ lp_build_array_alloca(LLVMBuilderRef builder,
    LLVMBuilderRef first_builder = LLVMCreateBuilder();
    LLVMValueRef res;
 
-   LLVMPositionBuilderBefore(first_builder, first_instr);
+   if (first_instr) {
+      LLVMPositionBuilderBefore(first_builder, first_instr);
+   } else {
+      LLVMPositionBuilderAtEnd(first_builder, first_block);
+   }
 
    res = LLVMBuildArrayAlloca(first_builder, type, count, name);
 
index 085937588ff260b4a314f36ea3b01e33948afe13..5f5036e7bdc2672e1f3e2364c2649c407f97af69 100644 (file)
@@ -40,6 +40,7 @@
 
 struct util_format_description;
 struct lp_type;
+struct lp_build_context;
 
 
 /*
@@ -70,16 +71,16 @@ lp_build_fetch_rgba_aos(LLVMBuilderRef builder,
 
 void
 lp_build_format_swizzle_soa(const struct util_format_description *format_desc,
-                            struct lp_type type,
+                            struct lp_build_context *bld,
                             const LLVMValueRef *unswizzled,
-                            LLVMValueRef *swizzled);
+                            LLVMValueRef swizzled_out[4]);
 
 void
 lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
                          const struct util_format_description *format_desc,
                          struct lp_type type,
                          LLVMValueRef packed,
-                         LLVMValueRef *rgba);
+                         LLVMValueRef rgba_out[4]);
 
 
 void
@@ -90,7 +91,7 @@ lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
                         LLVMValueRef offsets,
                         LLVMValueRef i,
                         LLVMValueRef j,
-                        LLVMValueRef *rgba);
+                        LLVMValueRef rgba_out[4]);
 
 
 #endif /* !LP_BLD_FORMAT_H */
index 6257e9a4047cf5de7bc3026e4253c43e71585054..eb492042387f33c53b2a58949fb1f689689469a8 100644 (file)
@@ -47,7 +47,8 @@
 /**
  * Unpack a single pixel into its RGBA components.
  *
- * @param packed integer.
+ * @param desc  the pixel format for the packed pixel value
+ * @param packed integer pixel in a format such as PIPE_FORMAT_B8G8R8A8_UNORM
  *
  * @return RGBA in a 4 floats vector.
  */
@@ -62,9 +63,9 @@ lp_build_unpack_rgba_aos(LLVMBuilderRef builder,
    LLVMValueRef scales[4];
    LLVMValueRef swizzles[4];
    LLVMValueRef aux[4];
-   bool normalized;
+   boolean normalized;
    int empty_channel;
-   bool needs_uitofp;
+   boolean needs_uitofp;
    unsigned shift;
    unsigned i;
 
@@ -79,7 +80,10 @@ lp_build_unpack_rgba_aos(LLVMBuilderRef builder,
    if (desc->block.bits < 32)
       packed = LLVMBuildZExt(builder, packed, LLVMInt32Type(), "");
 
-   /* Broadcast the packed value to all four channels */
+   /* Broadcast the packed value to all four channels
+    * before: packed = BGRA
+    * after: packed = {BGRA, BGRA, BGRA, BGRA}
+    */
    packed = LLVMBuildInsertElement(builder,
                                    LLVMGetUndef(LLVMVectorType(LLVMInt32Type(), 4)),
                                    packed,
@@ -96,6 +100,8 @@ lp_build_unpack_rgba_aos(LLVMBuilderRef builder,
    needs_uitofp = FALSE;
    empty_channel = -1;
    shift = 0;
+
+   /* Loop over 4 color components */
    for (i = 0; i < 4; ++i) {
       unsigned bits = desc->channel[i].size;
 
@@ -128,8 +134,13 @@ lp_build_unpack_rgba_aos(LLVMBuilderRef builder,
       shift += bits;
    }
 
+   /* Ex: convert packed = {BGRA, BGRA, BGRA, BGRA}
+    * into masked = {B, G, R, A}
+    */
    shifted = LLVMBuildLShr(builder, packed, LLVMConstVector(shifts, 4), "");
    masked = LLVMBuildAnd(builder, shifted, LLVMConstVector(masks, 4), "");
+
+
    if (!needs_uitofp) {
       /* UIToFP can't be expressed in SSE2 */
       casted = LLVMBuildSIToFP(builder, masked, LLVMVectorType(LLVMFloatType(), 4), "");
@@ -137,6 +148,11 @@ lp_build_unpack_rgba_aos(LLVMBuilderRef builder,
       casted = LLVMBuildUIToFP(builder, masked, LLVMVectorType(LLVMFloatType(), 4), "");
    }
 
+   /* At this point 'casted' may be a vector of floats such as
+    * {255.0, 255.0, 255.0, 255.0}.  Next, if the pixel values are normalized
+    * we'll scale this to {1.0, 1.0, 1.0, 1.0}.
+    */
+
    if (normalized)
       scaled = LLVMBuildMul(builder, casted, LLVMConstVector(scales, 4), "");
    else
@@ -145,6 +161,7 @@ lp_build_unpack_rgba_aos(LLVMBuilderRef builder,
    for (i = 0; i < 4; ++i)
       aux[i] = LLVMGetUndef(LLVMFloatType());
 
+   /* Build swizzles vector to put components into R,G,B,A order */
    for (i = 0; i < 4; ++i) {
       enum util_format_swizzle swizzle;
 
@@ -185,7 +202,8 @@ lp_build_unpack_rgba_aos(LLVMBuilderRef builder,
       }
    }
 
-   return LLVMBuildShuffleVector(builder, scaled, LLVMConstVector(aux, 4), LLVMConstVector(swizzles, 4), "");
+   return LLVMBuildShuffleVector(builder, scaled, LLVMConstVector(aux, 4),
+                                 LLVMConstVector(swizzles, 4), "");
 }
 
 
@@ -208,7 +226,7 @@ lp_build_pack_rgba_aos(LLVMBuilderRef builder,
    LLVMValueRef shifted, casted, scaled, unswizzled;
    LLVMValueRef shifts[4];
    LLVMValueRef scales[4];
-   bool normalized;
+   boolean normalized;
    unsigned shift;
    unsigned i, j;
 
@@ -292,10 +310,29 @@ lp_build_pack_rgba_aos(LLVMBuilderRef builder,
 }
 
 
+typedef void (*fetch_func)(float *, const uint8_t *, unsigned, unsigned);
+
+/** cast wrapper */
+static void *
+fetch_func_ptr_to_voidptr(fetch_func f)
+{
+   union {
+      void *v;
+      fetch_func f;
+   } u;
+   u.f = f;
+   return u.v;
+}
+
+
 /**
  * Fetch a pixel into a 4 float AoS.
  *
- * i and j are the sub-block pixel coordinates.
+ * \param format_desc  describes format of the image we're fetching from
+ * \param ptr  address of the pixel block (or the texel if uncompressed)
+ * \param i, j  the sub-block pixel coordinates.  For non-compressed formats
+ *              these will always be (0,).
+ * \return  valueRef with the float[4] RGBA pixel
  */
 LLVMValueRef
 lp_build_fetch_rgba_aos(LLVMBuilderRef builder,
@@ -368,7 +405,8 @@ lp_build_fetch_rgba_aos(LLVMBuilderRef builder,
 
          assert(LLVMIsDeclaration(function));
 
-         LLVMAddGlobalMapping(lp_build_engine, function, format_desc->fetch_rgba_float);
+         LLVMAddGlobalMapping(lp_build_engine, function,
+                    fetch_func_ptr_to_voidptr(format_desc->fetch_rgba_float));
       }
 
       tmp = lp_build_alloca(builder, LLVMVectorType(LLVMFloatType(), 4), "");
@@ -384,7 +422,7 @@ lp_build_fetch_rgba_aos(LLVMBuilderRef builder,
       args[2] = i;
       args[3] = j;
 
-      LLVMBuildCall(builder, function, args, 4, "");
+      LLVMBuildCall(builder, function, args, Elements(args), "");
 
       return LLVMBuildLoad(builder, tmp, "");
    }
index 26b947b3b1c3a182806bc4fb4112236f146aa2f7..e1b94adc85a4a070cdd86e34ff0971610d294113 100644 (file)
@@ -26,6 +26,8 @@
  **************************************************************************/
 
 
+#include "pipe/p_defines.h"
+
 #include "util/u_format.h"
 #include "util/u_memory.h"
 #include "util/u_string.h"
 #include "lp_bld_type.h"
 #include "lp_bld_const.h"
 #include "lp_bld_conv.h"
+#include "lp_bld_swizzle.h"
 #include "lp_bld_sample.h" /* for lp_build_gather */
 #include "lp_bld_format.h"
 
 
-static LLVMValueRef
-lp_build_format_swizzle_chan_soa(struct lp_type type,
-                                 const LLVMValueRef *unswizzled,
-                                 enum util_format_swizzle swizzle)
-{
-   switch (swizzle) {
-   case UTIL_FORMAT_SWIZZLE_X:
-   case UTIL_FORMAT_SWIZZLE_Y:
-   case UTIL_FORMAT_SWIZZLE_Z:
-   case UTIL_FORMAT_SWIZZLE_W:
-      return unswizzled[swizzle];
-   case UTIL_FORMAT_SWIZZLE_0:
-      return lp_build_zero(type);
-   case UTIL_FORMAT_SWIZZLE_1:
-      return lp_build_one(type);
-   case UTIL_FORMAT_SWIZZLE_NONE:
-      return lp_build_undef(type);
-   default:
-      assert(0);
-      return lp_build_undef(type);
-   }
-}
-
-
 void
 lp_build_format_swizzle_soa(const struct util_format_description *format_desc,
-                            struct lp_type type,
+                            struct lp_build_context *bld,
                             const LLVMValueRef *unswizzled,
-                            LLVMValueRef *swizzled)
+                            LLVMValueRef swizzled_out[4])
 {
-   if(format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) {
+   assert(UTIL_FORMAT_SWIZZLE_0 == PIPE_SWIZZLE_ZERO);
+   assert(UTIL_FORMAT_SWIZZLE_1 == PIPE_SWIZZLE_ONE);
+
+   if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) {
+      /*
+       * Return zzz1 for depth-stencil formats.
+       *
+       * XXX: Allow to control the depth swizzle with an additional parameter,
+       * as the caller may wish another depth swizzle, or retain the stencil
+       * value.
+       */
       enum util_format_swizzle swizzle = format_desc->swizzle[0];
-      LLVMValueRef depth = lp_build_format_swizzle_chan_soa(type, unswizzled, swizzle);
-      swizzled[2] = swizzled[1] = swizzled[0] = depth;
-      swizzled[3] = lp_build_one(type);
+      LLVMValueRef depth = lp_build_swizzle_soa_channel(bld, unswizzled, swizzle);
+      swizzled_out[2] = swizzled_out[1] = swizzled_out[0] = depth;
+      swizzled_out[3] = bld->one;
    }
    else {
       unsigned chan;
       for (chan = 0; chan < 4; ++chan) {
          enum util_format_swizzle swizzle = format_desc->swizzle[chan];
-         swizzled[chan] = lp_build_format_swizzle_chan_soa(type, unswizzled, swizzle);
+         swizzled_out[chan] = lp_build_swizzle_soa_channel(bld, unswizzled, swizzle);
       }
    }
 }
@@ -100,14 +89,20 @@ lp_build_format_swizzle_soa(const struct util_format_description *format_desc,
  * It requires that a packed pixel fits into an element of the output
  * channels. The common case is when converting pixel with a depth of 32 bit or
  * less into floats.
+ *
+ * \param format_desc  the format of the 'packed' incoming pixel vector
+ * \param type  the desired type for rgba_out (type.length = n, above)
+ * \param packed  the incoming vector of packed pixels
+ * \param rgba_out  returns the SoA R,G,B,A vectors
  */
 void
 lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
                          const struct util_format_description *format_desc,
                          struct lp_type type,
                          LLVMValueRef packed,
-                         LLVMValueRef *rgba)
+                         LLVMValueRef rgba_out[4])
 {
+   struct lp_build_context bld;
    LLVMValueRef inputs[4];
    unsigned start;
    unsigned chan;
@@ -120,11 +115,13 @@ lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
    assert(type.floating);
    assert(type.width == 32);
 
+   lp_build_context_init(&bld, builder, type);
+
    /* Decode the input vector components */
    start = 0;
    for (chan = 0; chan < format_desc->nr_channels; ++chan) {
-      unsigned width = format_desc->channel[chan].size;
-      unsigned stop = start + width;
+      const unsigned width = format_desc->channel[chan].size;
+      const unsigned stop = start + width;
       LLVMValueRef input;
 
       input = packed;
@@ -250,14 +247,24 @@ lp_build_unpack_rgba_soa(LLVMBuilderRef builder,
       start = stop;
    }
 
-   lp_build_format_swizzle_soa(format_desc, type, inputs, rgba);
+   lp_build_format_swizzle_soa(format_desc, &bld, inputs, rgba_out);
 }
 
 
 /**
- * Fetch a pixel into a SoA.
+ * Fetch a texels from a texture, returning them in SoA layout.
  *
- * i and j are the sub-block pixel coordinates.
+ * \param type  the desired return type for 'rgba'.  The vector length
+ *              is the number of texels to fetch
+ *
+ * \param base_ptr  points to start of the texture image block.  For non-
+ *                  compressed formats, this simply points to the texel.
+ *                  For compressed formats, it points to the start of the
+ *                  compressed data block.
+ *
+ * \param i, j  the sub-block pixel coordinates.  For non-compressed formats
+ *              these will always be (0,0).  For compressed formats, i will
+ *              be in [0, block_width-1] and j will be in [0, block_height-1].
  */
 void
 lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
@@ -267,7 +274,7 @@ lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
                         LLVMValueRef offset,
                         LLVMValueRef i,
                         LLVMValueRef j,
-                        LLVMValueRef *rgba)
+                        LLVMValueRef rgba_out[4])
 {
 
    if (format_desc->layout == UTIL_FORMAT_LAYOUT_PLAIN &&
@@ -281,7 +288,7 @@ lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
    {
       /*
        * The packed pixel fits into an element of the destination format. Put
-       * the packed pixels into a vector and estract each component for all
+       * the packed pixels into a vector and extract each component for all
        * vector elements in parallel.
        */
 
@@ -289,6 +296,7 @@ lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
 
       /*
        * gather the texels from the texture
+       * Ex: packed = {BGRA, BGRA, BGRA, BGRA}.
        */
       packed = lp_build_gather(builder,
                                type.length,
@@ -302,16 +310,16 @@ lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
       lp_build_unpack_rgba_soa(builder,
                                format_desc,
                                type,
-                               packed, rgba);
+                               packed, rgba_out);
    }
    else {
       /*
        * Fallback to calling lp_build_fetch_rgba_aos for each pixel.
        *
-       * This is not the most efficient way of fetching pixels, as
-       * we miss some opportunities to do vectorization, but this it is a
-       * convenient for formats or scenarios for which there was no opportunity
-       * or incentive to optimize.
+       * This is not the most efficient way of fetching pixels, as we
+       * miss some opportunities to do vectorization, but this is
+       * convenient for formats or scenarios for which there was no
+       * opportunity or incentive to optimize.
        */
 
       unsigned k, chan;
@@ -319,9 +327,10 @@ lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
       assert(type.floating);
 
       for (chan = 0; chan < 4; ++chan) {
-         rgba[chan] = lp_build_undef(type);
+         rgba_out[chan] = lp_build_undef(type);
       }
 
+      /* loop over number of pixels */
       for(k = 0; k < type.length; ++k) {
          LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), k, 0);
          LLVMValueRef offset_elem;
@@ -335,16 +344,19 @@ lp_build_fetch_rgba_soa(LLVMBuilderRef builder,
          i_elem = LLVMBuildExtractElement(builder, i, index, "");
          j_elem = LLVMBuildExtractElement(builder, j, index, "");
 
-         tmp = lp_build_fetch_rgba_aos(builder, format_desc, ptr, i_elem, j_elem);
+         /* Get a single float[4]={R,G,B,A} pixel */
+         tmp = lp_build_fetch_rgba_aos(builder, format_desc, ptr,
+                                       i_elem, j_elem);
 
          /*
-          * AoS to SoA
+          * Insert the AoS tmp value channels into the SoA result vectors at
+          * position = 'index'.
           */
-
          for (chan = 0; chan < 4; ++chan) {
             LLVMValueRef chan_val = LLVMConstInt(LLVMInt32Type(), chan, 0),
             tmp_chan = LLVMBuildExtractElement(builder, tmp, chan_val, "");
-            rgba[chan] = LLVMBuildInsertElement(builder, rgba[chan], tmp_chan, index, "");
+            rgba_out[chan] = LLVMBuildInsertElement(builder, rgba_out[chan],
+                                                    tmp_chan, index, "");
          }
       }
    }
index 5067d0a164f4cf7b9d3ee5c3483ad59ec6054c58..bd080f397aa0f73907a4ae67a8f7c3d7773a9629 100644 (file)
 #include "pipe/p_compiler.h"
 #include "util/u_cpu_detect.h"
 #include "util/u_debug.h"
+#include "lp_bld_debug.h"
 #include "lp_bld_init.h"
 
 
+#ifdef DEBUG
+unsigned gallivm_debug = 0;
+
+static const struct debug_named_value lp_bld_debug_flags[] = {
+   { "tgsi",   GALLIVM_DEBUG_TGSI },
+   { "ir",     GALLIVM_DEBUG_IR },
+   { "asm",    GALLIVM_DEBUG_ASM },
+   { "nopt",   GALLIVM_DEBUG_NO_OPT },
+   {NULL, 0}
+};
+#endif
+
+
 LLVMModuleRef lp_build_module = NULL;
 LLVMExecutionEngineRef lp_build_engine = NULL;
 LLVMModuleProviderRef lp_build_provider = NULL;
@@ -41,6 +55,10 @@ LLVMTargetDataRef lp_build_target = NULL;
 void
 lp_build_init(void)
 {
+#ifdef DEBUG
+   gallivm_debug = debug_get_flags_option("GALLIVM_DEBUG", lp_bld_debug_flags, 0 );
+#endif
+
    LLVMInitializeNativeTarget();
 
    LLVMLinkInJIT();
index e095a0abe3a1427beae195cebbdd1a05d949968b..369c8121b5c664d83c47b0bc7c6575f39182edf0 100644 (file)
@@ -42,6 +42,8 @@
 
 #define LP_MAX_TGSI_IMMEDIATES 256
 
+#define LP_MAX_TGSI_PREDS 16
+
 /**
  * Maximum control flow nesting
  *
diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
new file mode 100644 (file)
index 0000000..db0ca60
--- /dev/null
@@ -0,0 +1,100 @@
+/**************************************************************************
+ *
+ * Copyright 2010 VMware, Inc.
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sub license, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL
+ * THE COPYRIGHT HOLDERS, AUTHORS AND/OR ITS SUPPLIERS BE LIABLE FOR ANY CLAIM,
+ * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ * USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial portions
+ * of the Software.
+ *
+ **************************************************************************/
+
+
+#ifndef __STDC_LIMIT_MACROS
+#define __STDC_LIMIT_MACROS
+#endif
+
+#ifndef __STDC_CONSTANT_MACROS
+#define __STDC_CONSTANT_MACROS
+#endif
+
+#include "llvm-c/Core.h"
+
+#include "pipe/p_config.h"
+#include "util/u_debug.h"
+
+
+#if (defined(PIPE_OS_WINDOWS) && !defined(PIPE_CC_MSVC)) || defined(PIPE_OS_EMBDDED)
+
+#include "llvm/Support/raw_ostream.h"
+
+class raw_debug_ostream :
+   public llvm::raw_ostream
+{
+   uint64_t pos;
+
+   void write_impl(const char *Ptr, size_t Size);
+   uint64_t current_pos() { return pos; }
+   uint64_t current_pos() const { return pos; }
+
+#if HAVE_LLVM >= 0x207
+   uint64_t preferred_buffer_size() { return 512; }
+#else
+   size_t preferred_buffer_size() { return 512; }
+#endif
+};
+
+
+void
+raw_debug_ostream::write_impl(const char *Ptr, size_t Size)
+{
+   if (Size > 0) {
+      char *lastPtr = (char *)&Ptr[Size];
+      char last = *lastPtr;
+      *lastPtr = 0;
+      _debug_printf("%*s", Size, Ptr);
+      *lastPtr = last;
+      pos += Size;
+   }
+}
+
+
+/**
+ * Same as LLVMDumpValue, but through our debugging channels.
+ */
+extern "C" void
+lp_debug_dump_value(LLVMValueRef value)
+{
+   raw_debug_ostream os;
+   llvm::unwrap(value)->print(os);
+   os.flush();
+}
+
+
+#else
+
+
+extern "C" void
+lp_debug_dump_value(LLVMValueRef value)
+{
+   LLVMDumpValue(value);
+}
+
+
+#endif
index 195a4953ab15b54b7fe8b282eece505533acdcb5..c7f9b1083b1434bf343759e8621a68e2aba33d03 100644 (file)
@@ -120,10 +120,12 @@ lp_sampler_static_state(struct lp_sampler_static_state *state,
 
 /**
  * Gather elements from scatter positions in memory into a single vector.
+ * Use for fetching texels from a texture.
+ * For SSE, typical values are length=4, src_width=32, dst_width=32.
  *
- * @param src_width src element width
- * @param dst_width result element width (source will be expanded to fit)
- * @param length length of the offsets,
+ * @param length length of the offsets
+ * @param src_width src element width in bits
+ * @param dst_width result element width in bits (src will be expanded to fit)
  * @param base_ptr base pointer, should be a i8 pointer type.
  * @param offsets vector with offsets
  */
index 955b1d21ee5ead71fce1d0be5e2a3a25ac9c5344..51e98ab2f9eb03c90de346081d932f54d56c3e74 100644 (file)
@@ -56,14 +56,14 @@ struct lp_sampler_static_state
 {
    /* pipe_sampler_view's state */
    enum pipe_format format;
-   unsigned swizzle_r:3;
+   unsigned swizzle_r:3;     /**< PIPE_SWIZZLE_* */
    unsigned swizzle_g:3;
    unsigned swizzle_b:3;
    unsigned swizzle_a:3;
 
    /* pipe_texture's state */
-   unsigned target:3;
-   unsigned pot_width:1;
+   unsigned target:3;        /**< PIPE_TEXTURE_* */
+   unsigned pot_width:1;     /**< is the width a power of two? */
    unsigned pot_height:1;
    unsigned pot_depth:1;
 
@@ -97,40 +97,40 @@ struct lp_sampler_dynamic_state
 
    /** Obtain the base texture width. */
    LLVMValueRef
-   (*width)( struct lp_sampler_dynamic_state *state,
+   (*width)( const struct lp_sampler_dynamic_state *state,
              LLVMBuilderRef builder,
              unsigned unit);
 
    /** Obtain the base texture height. */
    LLVMValueRef
-   (*height)( struct lp_sampler_dynamic_state *state,
+   (*height)( const struct lp_sampler_dynamic_state *state,
               LLVMBuilderRef builder,
               unsigned unit);
 
    /** Obtain the base texture depth. */
    LLVMValueRef
-   (*depth)( struct lp_sampler_dynamic_state *state,
+   (*depth)( const struct lp_sampler_dynamic_state *state,
              LLVMBuilderRef builder,
              unsigned unit);
 
    /** Obtain the number of mipmap levels (minus one). */
    LLVMValueRef
-   (*last_level)( struct lp_sampler_dynamic_state *state,
+   (*last_level)( const struct lp_sampler_dynamic_state *state,
                   LLVMBuilderRef builder,
                   unsigned unit);
 
    LLVMValueRef
-   (*row_stride)( struct lp_sampler_dynamic_state *state,
+   (*row_stride)( const struct lp_sampler_dynamic_state *state,
                   LLVMBuilderRef builder,
                   unsigned unit);
 
    LLVMValueRef
-   (*img_stride)( struct lp_sampler_dynamic_state *state,
+   (*img_stride)( const struct lp_sampler_dynamic_state *state,
                   LLVMBuilderRef builder,
                   unsigned unit);
 
    LLVMValueRef
-   (*data_ptr)( struct lp_sampler_dynamic_state *state,
+   (*data_ptr)( const struct lp_sampler_dynamic_state *state,
                 LLVMBuilderRef builder,
                 unsigned unit);
 
@@ -177,7 +177,7 @@ lp_build_sample_soa(LLVMBuilderRef builder,
                     const LLVMValueRef *ddy,
                     LLVMValueRef lod_bias,
                     LLVMValueRef explicit_lod,
-                    LLVMValueRef *texel);
+                    LLVMValueRef texel_out[4]);
 
 
 
index 3f0ea05b79519c522dd759459c362e8872281bf7..bc7213db8b35163b614c9fb55b4dba48b80bc239 100644 (file)
@@ -186,50 +186,18 @@ 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)
+apply_sampler_swizzle(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);
-   }
+   lp_build_swizzle_soa_inplace(&bld->texel_bld, texel, swizzles);
 }
 
 
@@ -254,7 +222,7 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
                           LLVMValueRef y_stride,
                           LLVMValueRef z_stride,
                           LLVMValueRef data_ptr,
-                          LLVMValueRef *texel)
+                          LLVMValueRef texel_out[4])
 {
    const int dims = texture_dims(bld->static_state->target);
    struct lp_build_context *int_coord_bld = &bld->int_coord_bld;
@@ -343,9 +311,9 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
                            bld->texel_type,
                            data_ptr, offset,
                            i, j,
-                           texel);
+                           texel_out);
 
-   lp_build_swizzle_soa(bld, texel);
+   apply_sampler_swizzle(bld, texel_out);
 
    /*
     * Note: if we find an app which frequently samples the texture border
@@ -369,8 +337,8 @@ lp_build_sample_texel_soa(struct lp_build_sample_context *bld,
          LLVMValueRef border_chan =
             lp_build_const_vec(bld->texel_type,
                                   bld->static_state->border_color[chan]);
-         texel[chan] = lp_build_select(&bld->texel_bld, use_border,
-                                       border_chan, texel[chan]);
+         texel_out[chan] = lp_build_select(&bld->texel_bld, use_border,
+                                           border_chan, texel_out[chan]);
       }
    }
 }
@@ -950,7 +918,8 @@ lp_build_lod_selector(struct lp_build_sample_context *bld,
       }
       else {
          const int dims = texture_dims(bld->static_state->target);
-         LLVMValueRef dsdx, dsdy, dtdx, dtdy, drdx, drdy;
+         LLVMValueRef dsdx, dsdy;
+         LLVMValueRef dtdx = NULL, dtdy = NULL, drdx = NULL, drdy = NULL;
          LLVMValueRef rho;
 
          /*
@@ -1078,8 +1047,10 @@ lp_build_linear_mip_levels(struct lp_build_sample_context *bld,
                                 int_bld->zero,
                                 last_level);
    /* compute level 1 and clamp to legal range of levels */
-   *level1_out = lp_build_add(int_bld, *level0_out, int_bld->one);
-   *level1_out = lp_build_min(int_bld, *level1_out, last_level);
+   level = lp_build_add(int_bld, level, int_bld->one);
+   *level1_out = lp_build_clamp(int_bld, level,
+                                int_bld->zero,
+                                last_level);
 
    *weight_out = lp_build_fract(float_bld, lod);
 }
@@ -1830,7 +1801,7 @@ lp_build_sample_2d_linear_aos(struct lp_build_sample_context *bld,
                               LLVMValueRef height,
                               LLVMValueRef stride_array,
                               LLVMValueRef data_array,
-                              LLVMValueRef *texel)
+                              LLVMValueRef texel_out[4])
 {
    LLVMBuilderRef builder = bld->builder;
    struct lp_build_context i32, h16, u8n;
@@ -2023,17 +1994,17 @@ lp_build_sample_2d_linear_aos(struct lp_build_sample_context *bld,
                              packed, unswizzled);
 
    lp_build_format_swizzle_soa(bld->format_desc,
-                               bld->texel_type, unswizzled,
-                               texel);
+                               &bld->texel_bld,
+                               unswizzled, texel_out);
 
-   lp_build_swizzle_soa(bld, texel);
+   apply_sampler_swizzle(bld, texel_out);
 }
 
 
 static void
 lp_build_sample_compare(struct lp_build_sample_context *bld,
                         LLVMValueRef p,
-                        LLVMValueRef *texel)
+                        LLVMValueRef texel[4])
 {
    struct lp_build_context *texel_bld = &bld->texel_bld;
    LLVMValueRef res;
@@ -2071,14 +2042,14 @@ lp_build_sample_compare(struct lp_build_sample_context *bld,
  */
 static void
 lp_build_sample_nop(struct lp_build_sample_context *bld,
-                    LLVMValueRef *texel)
+                    LLVMValueRef texel_out[4])
 {
    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;
+      texel_out[chan] = texel_bld->one;
    }  
 }
 
@@ -2101,7 +2072,7 @@ lp_build_sample_soa(LLVMBuilderRef builder,
                     const LLVMValueRef *ddy,
                     LLVMValueRef lod_bias, /* optional */
                     LLVMValueRef explicit_lod, /* optional */
-                    LLVMValueRef *texel)
+                    LLVMValueRef texel_out[4])
 {
    struct lp_build_sample_context bld;
    LLVMValueRef width, width_vec;
@@ -2113,6 +2084,11 @@ lp_build_sample_soa(LLVMBuilderRef builder,
    LLVMValueRef t;
    LLVMValueRef r;
 
+   if (0) {
+      enum pipe_format fmt = static_state->format;
+      debug_printf("Sample from %s\n", util_format_name(fmt));
+   }
+
    /* Setup our build context */
    memset(&bld, 0, sizeof bld);
    bld.builder = builder;
@@ -2153,7 +2129,7 @@ lp_build_sample_soa(LLVMBuilderRef builder,
 
    if (0) {
       /* For debug: no-op texture sampling */
-      lp_build_sample_nop(&bld, texel);
+      lp_build_sample_nop(&bld, texel_out);
    }
    else if (util_format_is_rgba8_variant(bld.format_desc) &&
             static_state->target == PIPE_TEXTURE_2D &&
@@ -2164,7 +2140,7 @@ lp_build_sample_soa(LLVMBuilderRef builder,
             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);
+                                    row_stride_array, data_array, texel_out);
    }
    else {
       lp_build_sample_general(&bld, unit, s, t, r, ddx, ddy,
@@ -2173,8 +2149,8 @@ lp_build_sample_soa(LLVMBuilderRef builder,
                               width_vec, height_vec, depth_vec,
                               row_stride_array, img_stride_array,
                               data_array,
-                              texel);
+                              texel_out);
    }
 
-   lp_build_sample_compare(&bld, r, texel);
+   lp_build_sample_compare(&bld, r, texel_out);
 }
index 278c838eaca5fb63a4c531ebe1a379b5cfae68bb..3c8a7bc09ea03ba4e94f4ec15c1c34dd007500e5 100644 (file)
@@ -60,21 +60,38 @@ lp_build_broadcast(LLVMBuilderRef builder,
 }
 
 
+/**
+ * Broadcast
+ */
 LLVMValueRef
 lp_build_broadcast_scalar(struct lp_build_context *bld,
                           LLVMValueRef scalar)
 {
    const struct lp_type type = bld->type;
-   LLVMValueRef res;
-   unsigned i;
 
-   res = bld->undef;
-   for(i = 0; i < type.length; ++i) {
-      LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0);
-      res = LLVMBuildInsertElement(bld->builder, res, scalar, index, "");
-   }
+   assert(lp_check_elem_type(type, LLVMTypeOf(scalar)));
 
-   return res;
+   if (type.length == 1) {
+      return scalar;
+   }
+   else {
+      LLVMValueRef res;
+#if HAVE_LLVM >= 0x207
+      res = LLVMBuildInsertElement(bld->builder, bld->undef, scalar,
+                                   LLVMConstInt(LLVMInt32Type(), 0, 0), "");
+      res = LLVMBuildShuffleVector(bld->builder, res, bld->undef,
+                                   lp_build_const_int_vec(type, 0), "");
+#else
+      /* XXX: The above path provokes a bug in LLVM 2.6 */
+      unsigned i;
+      res = bld->undef;
+      for(i = 0; i < type.length; ++i) {
+         LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0);
+         res = LLVMBuildInsertElement(bld->builder, res, scalar, index, "");
+      }
+#endif
+      return res;
+   }
 }
 
 
@@ -237,3 +254,78 @@ lp_build_swizzle2_aos(struct lp_build_context *bld,
 }
 
 
+/**
+ * Extended swizzle of a single channel of a SoA vector.
+ *
+ * @param bld         building context
+ * @param unswizzled  array with the 4 unswizzled values
+ * @param swizzle     one of the PIPE_SWIZZLE_*
+ *
+ * @return  the swizzled value.
+ */
+LLVMValueRef
+lp_build_swizzle_soa_channel(struct lp_build_context *bld,
+                             const LLVMValueRef *unswizzled,
+                             unsigned 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 bld->zero;
+   case PIPE_SWIZZLE_ONE:
+      return bld->one;
+   default:
+      assert(0);
+      return bld->undef;
+   }
+}
+
+
+/**
+ * Extended swizzle of a SoA vector.
+ *
+ * @param bld         building context
+ * @param unswizzled  array with the 4 unswizzled values
+ * @param swizzles    array of PIPE_SWIZZLE_*
+ * @param swizzled    output swizzled values
+ */
+void
+lp_build_swizzle_soa(struct lp_build_context *bld,
+                     const LLVMValueRef *unswizzled,
+                     const unsigned char swizzles[4],
+                     LLVMValueRef *swizzled)
+{
+   unsigned chan;
+
+   for (chan = 0; chan < 4; ++chan) {
+      swizzled[chan] = lp_build_swizzle_soa_channel(bld, unswizzled,
+                                                    swizzles[chan]);
+   }
+}
+
+
+/**
+ * Do an extended swizzle of a SoA vector inplace.
+ *
+ * @param bld         building context
+ * @param values      intput/output array with the 4 values
+ * @param swizzles    array of PIPE_SWIZZLE_*
+ */
+void
+lp_build_swizzle_soa_inplace(struct lp_build_context *bld,
+                             LLVMValueRef *values,
+                             const unsigned char swizzles[4])
+{
+   LLVMValueRef unswizzled[4];
+   unsigned chan;
+
+   for (chan = 0; chan < 4; ++chan) {
+      unswizzled[chan] = values[chan];
+   }
+
+   lp_build_swizzle_soa(bld, unswizzled, swizzles, values);
+}
index 138ca620e63468b5079e982d9846a0c1a924655a..4f4fa777c930fa433213acf01f1109f94b5ff7a4 100644 (file)
@@ -88,4 +88,23 @@ lp_build_swizzle2_aos(struct lp_build_context *bld,
                       const unsigned char swizzle[4]);
 
 
+LLVMValueRef
+lp_build_swizzle_soa_channel(struct lp_build_context *bld,
+                             const LLVMValueRef *unswizzled,
+                             unsigned swizzle);
+
+
+void
+lp_build_swizzle_soa(struct lp_build_context *bld,
+                     const LLVMValueRef *unswizzled,
+                     const unsigned char swizzles[4],
+                     LLVMValueRef *swizzled);
+
+
+void
+lp_build_swizzle_soa_inplace(struct lp_build_context *bld,
+                             LLVMValueRef *values,
+                             const unsigned char swizzles[4]);
+
+
 #endif /* !LP_BLD_SWIZZLE_H */
index 5ce1385c4809081e04943592f43231e13f68129d..4d415b6d4161e0dbc06c11a72c807c1d5add6f1b 100644 (file)
@@ -59,7 +59,7 @@ struct lp_build_sampler_soa
    (*destroy)( struct lp_build_sampler_soa *sampler );
 
    void
-   (*emit_fetch_texel)( struct lp_build_sampler_soa *sampler,
+   (*emit_fetch_texel)( const struct lp_build_sampler_soa *sampler,
                         LLVMBuilderRef builder,
                         struct lp_type type,
                         unsigned unit,
@@ -83,7 +83,7 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
                   const LLVMValueRef (*inputs)[4],
                   LLVMValueRef (*outputs)[4],
                   struct lp_build_sampler_soa *sampler,
-                  struct tgsi_shader_info *info);
+                  const struct tgsi_shader_info *info);
 
 
 #endif /* LP_BLD_TGSI_H */
index 0b1a28a7ab7c68a5edf00a82535ed011cbf4d519..40ea94c493537f4838c94d0f80eefd8ec68fcf69 100644 (file)
@@ -81,6 +81,8 @@
 #define QUAD_BOTTOM_LEFT  2
 #define QUAD_BOTTOM_RIGHT 3
 
+#define LP_MAX_INSTRUCTIONS 256
+
 
 struct lp_exec_mask {
    struct lp_build_context *bld;
@@ -93,18 +95,24 @@ struct lp_exec_mask {
    int cond_stack_size;
    LLVMValueRef cond_mask;
 
-   LLVMValueRef break_stack[LP_MAX_TGSI_NESTING];
-   int break_stack_size;
-   LLVMValueRef break_mask;
-
-   LLVMValueRef cont_stack[LP_MAX_TGSI_NESTING];
-   int cont_stack_size;
+   LLVMBasicBlockRef loop_block;
    LLVMValueRef cont_mask;
-
-   LLVMBasicBlockRef loop_stack[LP_MAX_TGSI_NESTING];
+   LLVMValueRef break_mask;
+   LLVMValueRef break_var;
+   struct {
+      LLVMBasicBlockRef loop_block;
+      LLVMValueRef cont_mask;
+      LLVMValueRef break_mask;
+      LLVMValueRef break_var;
+   } loop_stack[LP_MAX_TGSI_NESTING];
    int loop_stack_size;
-   LLVMBasicBlockRef loop_block;
 
+   LLVMValueRef ret_mask;
+   struct {
+      int pc;
+      LLVMValueRef ret_mask;
+   } call_stack[LP_MAX_TGSI_NESTING];
+   int call_stack_size;
 
    LLVMValueRef exec_mask;
 };
@@ -113,16 +121,20 @@ struct lp_build_tgsi_soa_context
 {
    struct lp_build_context base;
 
+   /* Builder for integer masks and indices */
+   struct lp_build_context int_bld;
+
    LLVMValueRef consts_ptr;
    const LLVMValueRef *pos;
    const LLVMValueRef (*inputs)[NUM_CHANNELS];
    LLVMValueRef (*outputs)[NUM_CHANNELS];
 
-   struct lp_build_sampler_soa *sampler;
+   const struct lp_build_sampler_soa *sampler;
 
    LLVMValueRef immediates[LP_MAX_TGSI_IMMEDIATES][NUM_CHANNELS];
    LLVMValueRef temps[LP_MAX_TGSI_TEMPS][NUM_CHANNELS];
    LLVMValueRef addr[LP_MAX_TGSI_ADDRS][NUM_CHANNELS];
+   LLVMValueRef preds[LP_MAX_TGSI_PREDS][NUM_CHANNELS];
 
    /* we allocate an array of temps if we have indirect
     * addressing and then the temps above is unused */
@@ -131,6 +143,9 @@ struct lp_build_tgsi_soa_context
 
    struct lp_build_mask_context *mask;
    struct lp_exec_mask exec_mask;
+
+   struct tgsi_full_instruction *instructions;
+   uint max_instructions;
 };
 
 static const unsigned char
@@ -163,10 +178,11 @@ static void lp_exec_mask_init(struct lp_exec_mask *mask, struct lp_build_context
    mask->has_mask = FALSE;
    mask->cond_stack_size = 0;
    mask->loop_stack_size = 0;
-   mask->break_stack_size = 0;
-   mask->cont_stack_size = 0;
+   mask->call_stack_size = 0;
 
    mask->int_vec_type = lp_build_int_vec_type(mask->bld->type);
+   mask->exec_mask = mask->ret_mask = mask->break_mask = mask->cont_mask = mask->cond_mask =
+         LLVMConstAllOnes(mask->int_vec_type);
 }
 
 static void lp_exec_mask_update(struct lp_exec_mask *mask)
@@ -186,34 +202,45 @@ static void lp_exec_mask_update(struct lp_exec_mask *mask)
    } else
       mask->exec_mask = mask->cond_mask;
 
+   if (mask->call_stack_size) {
+      mask->exec_mask = LLVMBuildAnd(mask->bld->builder,
+                                     mask->exec_mask,
+                                     mask->ret_mask,
+                                     "callmask");
+   }
 
    mask->has_mask = (mask->cond_stack_size > 0 ||
-                     mask->loop_stack_size > 0);
+                     mask->loop_stack_size > 0 ||
+                     mask->call_stack_size > 0);
 }
 
 static void lp_exec_mask_cond_push(struct lp_exec_mask *mask,
                                    LLVMValueRef val)
 {
    assert(mask->cond_stack_size < LP_MAX_TGSI_NESTING);
+   if (mask->cond_stack_size == 0) {
+      assert(mask->cond_mask == LLVMConstAllOnes(mask->int_vec_type));
+   }
    mask->cond_stack[mask->cond_stack_size++] = mask->cond_mask;
-   mask->cond_mask = LLVMBuildBitCast(mask->bld->builder, val,
-                                      mask->int_vec_type, "");
+   assert(LLVMTypeOf(val) == mask->int_vec_type);
+   mask->cond_mask = val;
 
    lp_exec_mask_update(mask);
 }
 
 static void lp_exec_mask_cond_invert(struct lp_exec_mask *mask)
 {
-   LLVMValueRef prev_mask = mask->cond_stack[mask->cond_stack_size - 1];
-   LLVMValueRef inv_mask = LLVMBuildNot(mask->bld->builder,
-                                        mask->cond_mask, "");
-
-   /* means that we didn't have any mask before and that
-    * we were fully enabled */
-   if (mask->cond_stack_size <= 1) {
-      prev_mask = LLVMConstAllOnes(mask->int_vec_type);
+   LLVMValueRef prev_mask;
+   LLVMValueRef inv_mask;
+
+   assert(mask->cond_stack_size);
+   prev_mask = mask->cond_stack[mask->cond_stack_size - 1];
+   if (mask->cond_stack_size == 1) {
+      assert(prev_mask == LLVMConstAllOnes(mask->int_vec_type));
    }
 
+   inv_mask = LLVMBuildNot(mask->bld->builder, mask->cond_mask, "");
+
    mask->cond_mask = LLVMBuildAnd(mask->bld->builder,
                                   inv_mask,
                                   prev_mask, "");
@@ -222,31 +249,37 @@ static void lp_exec_mask_cond_invert(struct lp_exec_mask *mask)
 
 static void lp_exec_mask_cond_pop(struct lp_exec_mask *mask)
 {
+   assert(mask->cond_stack_size);
    mask->cond_mask = mask->cond_stack[--mask->cond_stack_size];
    lp_exec_mask_update(mask);
 }
 
 static void lp_exec_bgnloop(struct lp_exec_mask *mask)
 {
+   if (mask->loop_stack_size == 0) {
+      assert(mask->loop_block == NULL);
+      assert(mask->cont_mask == LLVMConstAllOnes(mask->int_vec_type));
+      assert(mask->break_mask == LLVMConstAllOnes(mask->int_vec_type));
+      assert(mask->break_var == NULL);
+   }
 
-   if (mask->cont_stack_size == 0)
-      mask->cont_mask = LLVMConstAllOnes(mask->int_vec_type);
-   if (mask->break_stack_size == 0)
-      mask->break_mask = LLVMConstAllOnes(mask->int_vec_type);
-   if (mask->cond_stack_size == 0)
-      mask->cond_mask = LLVMConstAllOnes(mask->int_vec_type);
+   assert(mask->loop_stack_size < LP_MAX_TGSI_NESTING);
 
-   assert(mask->break_stack_size < LP_MAX_TGSI_NESTING);
-   assert(mask->cont_stack_size < LP_MAX_TGSI_NESTING);
-   assert(mask->break_stack_size < LP_MAX_TGSI_NESTING);
+   mask->loop_stack[mask->loop_stack_size].loop_block = mask->loop_block;
+   mask->loop_stack[mask->loop_stack_size].cont_mask = mask->cont_mask;
+   mask->loop_stack[mask->loop_stack_size].break_mask = mask->break_mask;
+   mask->loop_stack[mask->loop_stack_size].break_var = mask->break_var;
+   ++mask->loop_stack_size;
+
+   mask->break_var = lp_build_alloca(mask->bld->builder, mask->int_vec_type, "");
+   LLVMBuildStore(mask->bld->builder, mask->break_mask, mask->break_var);
 
-   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);
    LLVMPositionBuilderAtEnd(mask->bld->builder, mask->loop_block);
 
+   mask->break_mask = LLVMBuildLoad(mask->bld->builder, mask->break_var, "");
+
    lp_exec_mask_update(mask);
 }
 
@@ -286,11 +319,24 @@ static void lp_exec_endloop(struct lp_exec_mask *mask)
 
    assert(mask->break_mask);
 
+   /*
+    * Restore the cont_mask, but don't pop
+    */
+   assert(mask->loop_stack_size);
+   mask->cont_mask = mask->loop_stack[mask->loop_stack_size - 1].cont_mask;
+   lp_exec_mask_update(mask);
+
+   /*
+    * Unlike the continue mask, the break_mask must be preserved across loop
+    * iterations
+    */
+   LLVMBuildStore(mask->bld->builder, mask->break_mask, mask->break_var);
+
    /* i1cond = (mask == 0) */
    i1cond = LLVMBuildICmp(
       mask->bld->builder,
       LLVMIntNE,
-      LLVMBuildBitCast(mask->bld->builder, mask->break_mask, reg_type, ""),
+      LLVMBuildBitCast(mask->bld->builder, mask->exec_mask, reg_type, ""),
       LLVMConstNull(reg_type), "");
 
    endloop = lp_build_insert_new_block(mask->bld->builder, "endloop");
@@ -300,15 +346,12 @@ 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 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->break_stack[--mask->break_stack_size];
-   }
+   assert(mask->loop_stack_size);
+   --mask->loop_stack_size;
+   mask->loop_block = mask->loop_stack[mask->loop_stack_size].loop_block;
+   mask->cont_mask = mask->loop_stack[mask->loop_stack_size].cont_mask;
+   mask->break_mask = mask->loop_stack[mask->loop_stack_size].break_mask;
+   mask->break_var = mask->loop_stack[mask->loop_stack_size].break_var;
 
    lp_exec_mask_update(mask);
 }
@@ -319,15 +362,25 @@ static void lp_exec_endloop(struct lp_exec_mask *mask)
  * (0 means don't store this bit, 1 means do store).
  */
 static void lp_exec_mask_store(struct lp_exec_mask *mask,
+                               LLVMValueRef pred,
                                LLVMValueRef val,
                                LLVMValueRef dst)
 {
+   /* Mix the predicate and execution mask */
    if (mask->has_mask) {
+      if (pred) {
+         pred = LLVMBuildAnd(mask->bld->builder, pred, mask->exec_mask, "");
+      } else {
+         pred = mask->exec_mask;
+      }
+   }
+
+   if (pred) {
       LLVMValueRef real_val, dst_val;
 
       dst_val = LLVMBuildLoad(mask->bld->builder, dst, "");
       real_val = lp_build_select(mask->bld,
-                                 mask->exec_mask,
+                                 pred,
                                  val, dst_val);
 
       LLVMBuildStore(mask->bld->builder, real_val, dst);
@@ -335,6 +388,49 @@ static void lp_exec_mask_store(struct lp_exec_mask *mask,
       LLVMBuildStore(mask->bld->builder, val, dst);
 }
 
+static void lp_exec_mask_call(struct lp_exec_mask *mask,
+                              int func,
+                              int *pc)
+{
+   assert(mask->call_stack_size < LP_MAX_TGSI_NESTING);
+   mask->call_stack[mask->call_stack_size].pc = *pc;
+   mask->call_stack[mask->call_stack_size].ret_mask = mask->ret_mask;
+   mask->call_stack_size++;
+   *pc = func;
+}
+
+static void lp_exec_mask_ret(struct lp_exec_mask *mask, int *pc)
+{
+   LLVMValueRef exec_mask;
+
+   if (mask->call_stack_size == 0) {
+      /* returning from main() */
+      *pc = -1;
+      return;
+   }
+   exec_mask = LLVMBuildNot(mask->bld->builder,
+                            mask->exec_mask,
+                            "ret");
+
+   mask->ret_mask = LLVMBuildAnd(mask->bld->builder,
+                                 mask->ret_mask,
+                                 exec_mask, "ret_full");
+
+   lp_exec_mask_update(mask);
+}
+
+static void lp_exec_mask_bgnsub(struct lp_exec_mask *mask)
+{
+}
+
+static void lp_exec_mask_endsub(struct lp_exec_mask *mask, int *pc)
+{
+   assert(mask->call_stack_size);
+   mask->call_stack_size--;
+   *pc = mask->call_stack[mask->call_stack_size].pc;
+   mask->ret_mask = mask->call_stack[mask->call_stack_size].ret_mask;
+   lp_exec_mask_update(mask);
+}
 
 static LLVMValueRef
 emit_ddx(struct lp_build_tgsi_soa_context *bld,
@@ -358,15 +454,16 @@ emit_ddy(struct lp_build_tgsi_soa_context *bld,
 static LLVMValueRef
 get_temp_ptr(struct lp_build_tgsi_soa_context *bld,
              unsigned index,
-             unsigned swizzle,
+             unsigned chan,
              boolean is_indirect,
              LLVMValueRef addr)
 {
+   assert(chan < 4);
    if (!bld->has_indirect_addressing) {
-      return bld->temps[index][swizzle];
+      return bld->temps[index][chan];
    } else {
       LLVMValueRef lindex =
-         LLVMConstInt(LLVMInt32Type(), index*4 + swizzle, 0);
+         LLVMConstInt(LLVMInt32Type(), index * 4 + chan, 0);
       if (is_indirect)
          lindex = lp_build_add(&bld->base, lindex, addr);
       return LLVMBuildGEP(bld->base.builder, bld->temps_array, &lindex, 1, "");
@@ -384,34 +481,36 @@ emit_fetch(
    const unsigned chan_index )
 {
    const struct tgsi_full_src_register *reg = &inst->Src[index];
-   unsigned swizzle = tgsi_util_get_full_src_register_swizzle( reg, chan_index );
+   const unsigned swizzle =
+      tgsi_util_get_full_src_register_swizzle(reg, chan_index);
    LLVMValueRef res;
-   LLVMValueRef addr;
-
-   switch (swizzle) {
-   case TGSI_SWIZZLE_X:
-   case TGSI_SWIZZLE_Y:
-   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 addr = NULL;
+
+   if (swizzle > 3) {
+      assert(0 && "invalid swizzle in emit_fetch()");
+      return bld->base.undef;
+   }
+
+   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, scalar_ptr;
 
          if (reg->Register.Indirect) {
@@ -419,24 +518,26 @@ emit_fetch(
               "\taddr = %d\n", addr);*/
             index = lp_build_add(&bld->base, index, addr);
          }
-         scalar_ptr = LLVMBuildGEP(bld->base.builder, bld->consts_ptr, &index, 1, "");
+         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;
       }
+      break;
 
-      case TGSI_FILE_IMMEDIATE:
-         res = bld->immediates[reg->Register.Index][swizzle];
-         assert(res);
-         break;
+   case TGSI_FILE_IMMEDIATE:
+      res = bld->immediates[reg->Register.Index][swizzle];
+      assert(res);
+      break;
 
-      case TGSI_FILE_INPUT:
-         res = bld->inputs[reg->Register.Index][swizzle];
-         assert(res);
-         break;
+   case TGSI_FILE_INPUT:
+      res = bld->inputs[reg->Register.Index][swizzle];
+      assert(res);
+      break;
 
-      case TGSI_FILE_TEMPORARY: {
+   case TGSI_FILE_TEMPORARY:
+      {
          LLVMValueRef temp_ptr = get_temp_ptr(bld, reg->Register.Index,
                                               swizzle,
                                               reg->Register.Indirect,
@@ -444,17 +545,11 @@ emit_fetch(
          res = LLVMBuildLoad(bld->base.builder, temp_ptr, "");
          if(!res)
             return bld->base.undef;
-         break;
-      }
-
-      default:
-         assert( 0 );
-         return bld->base.undef;
       }
       break;
 
    default:
-      assert( 0 );
+      assert(0 && "invalid src register in emit_fetch()");
       return bld->base.undef;
    }
 
@@ -511,6 +606,73 @@ emit_fetch_deriv(
 }
 
 
+/**
+ * Predicate.
+ */
+static void
+emit_fetch_predicate(
+   struct lp_build_tgsi_soa_context *bld,
+   const struct tgsi_full_instruction *inst,
+   LLVMValueRef *pred)
+{
+   unsigned index;
+   unsigned char swizzles[4];
+   LLVMValueRef unswizzled[4] = {NULL, NULL, NULL, NULL};
+   LLVMValueRef value;
+   unsigned chan;
+
+   if (!inst->Instruction.Predicate) {
+      FOR_EACH_CHANNEL( chan ) {
+         pred[chan] = NULL;
+      }
+      return;
+   }
+
+   swizzles[0] = inst->Predicate.SwizzleX;
+   swizzles[1] = inst->Predicate.SwizzleY;
+   swizzles[2] = inst->Predicate.SwizzleZ;
+   swizzles[3] = inst->Predicate.SwizzleW;
+
+   index = inst->Predicate.Index;
+   assert(index < LP_MAX_TGSI_PREDS);
+
+   FOR_EACH_CHANNEL( chan ) {
+      unsigned swizzle = swizzles[chan];
+
+      /*
+       * Only fetch the predicate register channels that are actually listed
+       * in the swizzles
+       */
+      if (!unswizzled[swizzle]) {
+         value = LLVMBuildLoad(bld->base.builder,
+                               bld->preds[index][swizzle], "");
+
+         /*
+          * Convert the value to an integer mask.
+          *
+          * TODO: Short-circuit this comparison -- a D3D setp_xx instructions
+          * is needlessly causing two comparisons due to storing the intermediate
+          * result as float vector instead of an integer mask vector.
+          */
+         value = lp_build_compare(bld->base.builder,
+                                  bld->base.type,
+                                  PIPE_FUNC_NOTEQUAL,
+                                  value,
+                                  bld->base.zero);
+         if (inst->Predicate.Negate) {
+            value = LLVMBuildNot(bld->base.builder, value, "");
+         }
+
+         unswizzled[swizzle] = value;
+      } else {
+         value = unswizzled[swizzle];
+      }
+
+      pred[chan] = value;
+   }
+}
+
+
 /**
  * Register store.
  */
@@ -520,10 +682,11 @@ emit_store(
    const struct tgsi_full_instruction *inst,
    unsigned index,
    unsigned chan_index,
+   LLVMValueRef pred,
    LLVMValueRef value)
 {
    const struct tgsi_full_dst_register *reg = &inst->Dst[index];
-   LLVMValueRef addr;
+   LLVMValueRef addr = NULL;
 
    switch( inst->Instruction.Saturate ) {
    case TGSI_SAT_NONE:
@@ -560,7 +723,7 @@ emit_store(
 
    switch( reg->Register.File ) {
    case TGSI_FILE_OUTPUT:
-      lp_exec_mask_store(&bld->exec_mask, value,
+      lp_exec_mask_store(&bld->exec_mask, pred, value,
                          bld->outputs[reg->Register.Index][chan_index]);
       break;
 
@@ -569,17 +732,18 @@ emit_store(
                                            chan_index,
                                            reg->Register.Indirect,
                                            addr);
-      lp_exec_mask_store(&bld->exec_mask, value, temp_ptr);
+      lp_exec_mask_store(&bld->exec_mask, pred, value, temp_ptr);
       break;
    }
 
    case TGSI_FILE_ADDRESS:
-      lp_exec_mask_store(&bld->exec_mask, value,
+      lp_exec_mask_store(&bld->exec_mask, pred, value,
                          bld->addr[reg->Indirect.Index][chan_index]);
       break;
 
    case TGSI_FILE_PREDICATE:
-      /* FIXME */
+      lp_exec_mask_store(&bld->exec_mask, pred, value,
+                         bld->preds[index][chan_index]);
       break;
 
    default:
@@ -789,10 +953,10 @@ emit_declaration(
       case TGSI_FILE_TEMPORARY:
          assert(idx < LP_MAX_TGSI_TEMPS);
          if (bld->has_indirect_addressing) {
-            LLVMValueRef val = LLVMConstInt(LLVMInt32Type(),
-                                            last*4 + 4, 0);
+            LLVMValueRef array_size = LLVMConstInt(LLVMInt32Type(),
+                                                   last*4 + 4, 0);
             bld->temps_array = lp_build_array_alloca(bld->base.builder,
-                                                     vec_type, val, "");
+                                                     vec_type, array_size, "");
          } else {
             for (i = 0; i < NUM_CHANNELS; i++)
                bld->temps[idx][i] = lp_build_alloca(bld->base.builder,
@@ -814,7 +978,10 @@ emit_declaration(
          break;
 
       case TGSI_FILE_PREDICATE:
-         _debug_printf("warning: predicate registers not yet implemented\n");
+         assert(idx < LP_MAX_TGSI_PREDS);
+         for (i = 0; i < NUM_CHANNELS; i++)
+            bld->preds[idx][i] = lp_build_alloca(bld->base.builder,
+                                                 vec_type, "");
          break;
 
       default:
@@ -833,7 +1000,8 @@ static boolean
 emit_instruction(
    struct lp_build_tgsi_soa_context *bld,
    const struct tgsi_full_instruction *inst,
-   const struct tgsi_opcode_info *info)
+   const struct tgsi_opcode_info *info,
+   int *pc)
 {
    unsigned chan_index;
    LLVMValueRef src0, src1, src2;
@@ -857,8 +1025,10 @@ emit_instruction(
     * redundant code.
     */
 
+   (*pc)++;
+
    assert(info->num_dst <= 1);
-   if(info->num_dst) {
+   if (info->num_dst) {
       FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
          dst0[chan_index] = bld->base.undef;
       }
@@ -1455,16 +1625,18 @@ emit_instruction(
       break;
 
    case TGSI_OPCODE_CAL:
-      /* FIXME */
-      return FALSE;
+      lp_exec_mask_call(&bld->exec_mask,
+                        inst->Label.Label,
+                        pc);
+
       break;
 
    case TGSI_OPCODE_RET:
-      /* FIXME */
-      return FALSE;
+      lp_exec_mask_ret(&bld->exec_mask, pc);
       break;
 
    case TGSI_OPCODE_END:
+      *pc = -1;
       break;
 
    case TGSI_OPCODE_SSG:
@@ -1630,6 +1802,10 @@ emit_instruction(
       lp_exec_bgnloop(&bld->exec_mask);
       break;
 
+   case TGSI_OPCODE_BGNSUB:
+      lp_exec_mask_bgnsub(&bld->exec_mask);
+      break;
+
    case TGSI_OPCODE_ELSE:
       lp_exec_mask_cond_invert(&bld->exec_mask);
       break;
@@ -1642,6 +1818,10 @@ emit_instruction(
       lp_exec_endloop(&bld->exec_mask);
       break;
 
+   case TGSI_OPCODE_ENDSUB:
+      lp_exec_mask_endsub(&bld->exec_mask, pc);
+      break;
+
    case TGSI_OPCODE_PUSHA:
       /* deprecated? */
       assert(0);
@@ -1754,8 +1934,12 @@ emit_instruction(
    }
    
    if(info->num_dst) {
+      LLVMValueRef pred[NUM_CHANNELS];
+
+      emit_fetch_predicate( bld, inst, pred );
+
       FOR_EACH_DST0_ENABLED_CHANNEL( inst, chan_index ) {
-         emit_store( bld, inst, 0, chan_index, dst0[chan_index]);
+         emit_store( bld, inst, 0, chan_index, pred[chan_index], dst0[chan_index]);
       }
    }
 
@@ -1773,16 +1957,19 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
                   const LLVMValueRef (*inputs)[NUM_CHANNELS],
                   LLVMValueRef (*outputs)[NUM_CHANNELS],
                   struct lp_build_sampler_soa *sampler,
-                  struct tgsi_shader_info *info)
+                  const struct tgsi_shader_info *info)
 {
    struct lp_build_tgsi_soa_context bld;
    struct tgsi_parse_context parse;
    uint num_immediates = 0;
+   uint num_instructions = 0;
    unsigned i;
+   int pc = 0;
 
    /* Setup build context */
    memset(&bld, 0, sizeof bld);
    lp_build_context_init(&bld.base, builder, type);
+   lp_build_context_init(&bld.int_bld, builder, lp_int_type(type));
    bld.mask = mask;
    bld.pos = pos;
    bld.inputs = inputs;
@@ -1791,6 +1978,13 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
    bld.sampler = sampler;
    bld.has_indirect_addressing = info->opcode_count[TGSI_OPCODE_ARR] > 0 ||
                                  info->opcode_count[TGSI_OPCODE_ARL] > 0;
+   bld.instructions = (struct tgsi_full_instruction *)
+                      MALLOC( LP_MAX_INSTRUCTIONS * sizeof(struct tgsi_full_instruction) );
+   bld.max_instructions = LP_MAX_INSTRUCTIONS;
+
+   if (!bld.instructions) {
+      return;
+   }
 
    lp_exec_mask_init(&bld.exec_mask, &bld.base);
 
@@ -1807,11 +2001,21 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
 
       case TGSI_TOKEN_TYPE_INSTRUCTION:
          {
-            unsigned opcode = parse.FullToken.FullInstruction.Instruction.Opcode;
-            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",
-                             opcode_info->mnemonic);
+            /* save expanded instruction */
+            if (num_instructions == bld.max_instructions) {
+               bld.instructions = REALLOC(bld.instructions,
+                                          bld.max_instructions
+                                          * sizeof(struct tgsi_full_instruction),
+                                          (bld.max_instructions + LP_MAX_INSTRUCTIONS)
+                                          * sizeof(struct tgsi_full_instruction));
+               bld.max_instructions += LP_MAX_INSTRUCTIONS;
+            }
+
+            memcpy(bld.instructions + num_instructions,
+                   &parse.FullToken.FullInstruction,
+                   sizeof(bld.instructions[0]));
+
+            num_instructions++;
          }
 
          break;
@@ -1838,14 +2042,33 @@ lp_build_tgsi_soa(LLVMBuilderRef builder,
          assert( 0 );
       }
    }
+
+   while (pc != -1) {
+      struct tgsi_full_instruction *instr = bld.instructions + pc;
+      const struct tgsi_opcode_info *opcode_info =
+         tgsi_get_opcode_info(instr->Instruction.Opcode);
+      if (!emit_instruction( &bld, instr, opcode_info, &pc ))
+         _debug_printf("warning: failed to translate tgsi opcode %s to LLVM\n",
+                       opcode_info->mnemonic);
+   }
+
    if (0) {
       LLVMBasicBlockRef block = LLVMGetInsertBlock(builder);
       LLVMValueRef function = LLVMGetBasicBlockParent(block);
       debug_printf("11111111111111111111111111111 \n");
       tgsi_dump(tokens, 0);
-      LLVMDumpValue(function);
+      lp_debug_dump_value(function);
       debug_printf("2222222222222222222222222222 \n");
    }
    tgsi_parse_free( &parse );
+
+   if (0) {
+      LLVMModuleRef module = LLVMGetGlobalParent(
+         LLVMGetBasicBlockParent(LLVMGetInsertBlock(bld.base.builder)));
+      LLVMDumpModule(module);
+
+   }
+
+   FREE( bld.instructions );
 }
 
index 796af88caad517cbbb4a1dfa9df4cfcf49d8d473..aac3a57bc73383945241fcdb3a844d297e6af6ac 100644 (file)
@@ -195,6 +195,7 @@ lp_uint_type(struct lp_type type)
 {
    struct lp_type res_type;
 
+   assert(type.length <= LP_MAX_VECTOR_LENGTH);
    memset(&res_type, 0, sizeof res_type);
    res_type.width = type.width;
    res_type.length = type.length;
@@ -211,6 +212,7 @@ lp_int_type(struct lp_type type)
 {
    struct lp_type res_type;
 
+   assert(type.length <= LP_MAX_VECTOR_LENGTH);
    memset(&res_type, 0, sizeof res_type);
    res_type.width = type.width;
    res_type.length = type.length;
@@ -238,6 +240,131 @@ lp_wider_type(struct lp_type type)
 }
 
 
+/**
+ * Return the size of the LLVMType in bits.
+ * XXX this function doesn't necessarily handle all LLVM types.
+ */
+unsigned
+lp_sizeof_llvm_type(LLVMTypeRef t)
+{
+   LLVMTypeKind k = LLVMGetTypeKind(t);
+
+   switch (k) {
+   case LLVMIntegerTypeKind:
+      return LLVMGetIntTypeWidth(t);
+   case LLVMFloatTypeKind:
+      return 8 * sizeof(float);
+   case LLVMDoubleTypeKind:
+      return 8 * sizeof(double);
+   case LLVMVectorTypeKind:
+      {
+         LLVMTypeRef elem = LLVMGetElementType(t);
+         unsigned len = LLVMGetVectorSize(t);
+         return len * lp_sizeof_llvm_type(elem);
+      }
+      break;
+   case LLVMArrayTypeKind:
+      {
+         LLVMTypeRef elem = LLVMGetElementType(t);
+         unsigned len = LLVMGetArrayLength(t);
+         return len * lp_sizeof_llvm_type(elem);
+      }
+      break;
+   default:
+      assert(0 && "Unexpected type in lp_get_llvm_type_size()");
+      return 0;
+   }
+}
+
+
+/**
+ * Return string name for a LLVMTypeKind.  Useful for debugging.
+ */
+const char *
+lp_typekind_name(LLVMTypeKind t)
+{
+   switch (t) {
+   case LLVMVoidTypeKind:
+      return "LLVMVoidTypeKind";
+   case LLVMFloatTypeKind:
+      return "LLVMFloatTypeKind";
+   case LLVMDoubleTypeKind:
+      return "LLVMDoubleTypeKind";
+   case LLVMX86_FP80TypeKind:
+      return "LLVMX86_FP80TypeKind";
+   case LLVMFP128TypeKind:
+      return "LLVMFP128TypeKind";
+   case LLVMPPC_FP128TypeKind:
+      return "LLVMPPC_FP128TypeKind";
+   case LLVMLabelTypeKind:
+      return "LLVMLabelTypeKind";
+   case LLVMIntegerTypeKind:
+      return "LLVMIntegerTypeKind";
+   case LLVMFunctionTypeKind:
+      return "LLVMFunctionTypeKind";
+   case LLVMStructTypeKind:
+      return "LLVMStructTypeKind";
+   case LLVMArrayTypeKind:
+      return "LLVMArrayTypeKind";
+   case LLVMPointerTypeKind:
+      return "LLVMPointerTypeKind";
+   case LLVMOpaqueTypeKind:
+      return "LLVMOpaqueTypeKind";
+   case LLVMVectorTypeKind:
+      return "LLVMVectorTypeKind";
+   case LLVMMetadataTypeKind:
+      return "LLVMMetadataTypeKind";
+   /* Only in LLVM 2.7 and later???
+   case LLVMUnionTypeKind:
+      return "LLVMUnionTypeKind";
+   */
+   default:
+      return "unknown LLVMTypeKind";
+   }
+}
+
+
+/**
+ * Print an LLVMTypeRef.  Like LLVMDumpValue().  For debugging.
+ */
+void
+lp_dump_llvmtype(LLVMTypeRef t)
+{
+   LLVMTypeKind k = LLVMGetTypeKind(t);
+
+   if (k == LLVMVectorTypeKind) {
+      LLVMTypeRef te = LLVMGetElementType(t);
+      LLVMTypeKind ke = LLVMGetTypeKind(te);
+      unsigned len = LLVMGetVectorSize(t);
+      if (ke == LLVMIntegerTypeKind) {
+         unsigned b = LLVMGetIntTypeWidth(te);
+         debug_printf("Vector [%u] of %u-bit Integer\n", len, b);
+      }
+      else {
+         debug_printf("Vector [%u] of %s\n", len, lp_typekind_name(ke));
+      }
+   }
+   else if (k == LLVMArrayTypeKind) {
+      LLVMTypeRef te = LLVMGetElementType(t);
+      LLVMTypeKind ke = LLVMGetTypeKind(te);
+      unsigned len = LLVMGetArrayLength(t);
+      debug_printf("Array [%u] of %s\n", len, lp_typekind_name(ke));
+   }
+   else if (k == LLVMIntegerTypeKind) {
+      unsigned b = LLVMGetIntTypeWidth(t);
+      debug_printf("%u-bit Integer\n", b);
+   }
+   else if (k == LLVMPointerTypeKind) {
+      LLVMTypeRef te = LLVMGetElementType(t);
+      debug_printf("Pointer to ");
+      lp_dump_llvmtype(te);
+   }
+   else {
+      debug_printf("%s\n", lp_typekind_name(k));
+   }
+}
+
+
 void
 lp_build_context_init(struct lp_build_context *bld,
                       LLVMBuilderRef builder,
index cd59d2faa662a0d60fb888016921ecd7d0e3bb7e..17819d4d32a3ab1d144539fbb000f63fc4a9984f 100644 (file)
@@ -316,6 +316,18 @@ struct lp_type
 lp_wider_type(struct lp_type type);
 
 
+unsigned
+lp_sizeof_llvm_type(LLVMTypeRef t);
+
+
+const char *
+lp_typekind_name(LLVMTypeKind t);
+
+
+void
+lp_dump_llvmtype(LLVMTypeRef t);
+
+
 void
 lp_build_context_init(struct lp_build_context *bld,
                       LLVMBuilderRef builder,
diff --git a/src/gallium/auxiliary/indices/.gitignore b/src/gallium/auxiliary/indices/.gitignore
new file mode 100644 (file)
index 0000000..7374007
--- /dev/null
@@ -0,0 +1,2 @@
+u_indices_gen.c
+u_unfilled_gen.c
diff --git a/src/gallium/auxiliary/indices/u_indices_gen.c b/src/gallium/auxiliary/indices/u_indices_gen.c
deleted file mode 100644 (file)
index 3c981e5..0000000
+++ /dev/null
@@ -1,5129 +0,0 @@
-/* File automatically generated by indices.py */
-
-/*
- * 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
- * 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
- * VMWARE 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.
- */
-
-
-
-/**
- * @file
- * Functions to translate and generate index lists
- */
-
-#include "indices/u_indices.h"
-#include "indices/u_indices_priv.h"
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-#include "pipe/p_defines.h"
-#include "util/u_memory.h"
-
-
-static unsigned out_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return OUT_UINT;
-   case 2: return OUT_USHORT;
-   default: assert(0); return OUT_USHORT;
-   }
-}
-
-static unsigned in_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return IN_UINT;
-   case 2: return IN_USHORT;
-   case 1: return IN_UBYTE;
-   default: assert(0); return IN_UBYTE;
-   }
-}
-
-
-static u_translate_func translate[IN_COUNT][OUT_COUNT][PV_COUNT][PV_COUNT][PRIM_COUNT];
-static u_generate_func  generate[OUT_COUNT][PV_COUNT][PV_COUNT][PRIM_COUNT];
-
-
-
-static void generate_points_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-   }
-}
-static void generate_linestrip_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-}
-static void generate_lineloop_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(0);
-}
-static void generate_tris_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-      (out+i)[2] = (ushort)(i+2);
-   }
-}
-static void generate_tristrip_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1+(i&1));
-      (out+j)[2] = (ushort)(i+2-(i&1));
-   }
-}
-static void generate_trifan_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_quads_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+0);
-      (out+j+0)[1] = (ushort)(i+1);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+1);
-      (out+j+3)[1] = (ushort)(i+2);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_quadstrip_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+2);
-      (out+j+0)[1] = (ushort)(i+0);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+0);
-      (out+j+3)[1] = (ushort)(i+1);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_polygon_ushort_first2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_points_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i+1);
-      (out+i)[1] = (ushort)(i);
-   }
-}
-static void generate_linestrip_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-}
-static void generate_lineloop_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i);
-}
-static void generate_tris_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i+1);
-      (out+i)[1] = (ushort)(i+2);
-      (out+i)[2] = (ushort)(i);
-   }
-}
-static void generate_tristrip_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1+(i&1));
-      (out+j)[1] = (ushort)(i+2-(i&1));
-      (out+j)[2] = (ushort)(i);
-   }
-}
-static void generate_trifan_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i+2);
-      (out+j)[2] = (ushort)(0);
-   }
-}
-static void generate_quads_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+1);
-      (out+j+0)[1] = (ushort)(i+3);
-      (out+j+0)[2] = (ushort)(i+0);
-      (out+j+3)[0] = (ushort)(i+2);
-      (out+j+3)[1] = (ushort)(i+3);
-      (out+j+3)[2] = (ushort)(i+1);
-   }
-}
-static void generate_quadstrip_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+0);
-      (out+j+0)[1] = (ushort)(i+3);
-      (out+j+0)[2] = (ushort)(i+2);
-      (out+j+3)[0] = (ushort)(i+1);
-      (out+j+3)[1] = (ushort)(i+3);
-      (out+j+3)[2] = (ushort)(i+0);
-   }
-}
-static void generate_polygon_ushort_first2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i+2);
-      (out+j)[2] = (ushort)(0);
-   }
-}
-static void generate_points_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i+1);
-      (out+i)[1] = (ushort)(i);
-   }
-}
-static void generate_linestrip_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-}
-static void generate_lineloop_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i);
-   }
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i);
-}
-static void generate_tris_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i+2);
-      (out+i)[1] = (ushort)(i);
-      (out+i)[2] = (ushort)(i+1);
-   }
-}
-static void generate_tristrip_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+2);
-      (out+j)[1] = (ushort)(i+(i&1));
-      (out+j)[2] = (ushort)(i+1-(i&1));
-   }
-}
-static void generate_trifan_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+2);
-      (out+j)[1] = (ushort)(0);
-      (out+j)[2] = (ushort)(i+1);
-   }
-}
-static void generate_quads_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+3);
-      (out+j+0)[1] = (ushort)(i+0);
-      (out+j+0)[2] = (ushort)(i+1);
-      (out+j+3)[0] = (ushort)(i+3);
-      (out+j+3)[1] = (ushort)(i+1);
-      (out+j+3)[2] = (ushort)(i+2);
-   }
-}
-static void generate_quadstrip_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+3);
-      (out+j+0)[1] = (ushort)(i+2);
-      (out+j+0)[2] = (ushort)(i+0);
-      (out+j+3)[0] = (ushort)(i+3);
-      (out+j+3)[1] = (ushort)(i+0);
-      (out+j+3)[2] = (ushort)(i+1);
-   }
-}
-static void generate_polygon_ushort_last2first(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_points_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)(i);
-   }
-}
-static void generate_lines_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-   }
-}
-static void generate_linestrip_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-}
-static void generate_lineloop_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-   }
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(0);
-}
-static void generate_tris_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)(i);
-      (out+i)[1] = (ushort)(i+1);
-      (out+i)[2] = (ushort)(i+2);
-   }
-}
-static void generate_tristrip_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+(i&1));
-      (out+j)[1] = (ushort)(i+1-(i&1));
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_trifan_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j)[2] = (ushort)(i+2);
-   }
-}
-static void generate_quads_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)(i+0);
-      (out+j+0)[1] = (ushort)(i+1);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+1);
-      (out+j+3)[1] = (ushort)(i+2);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_quadstrip_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)(i+2);
-      (out+j+0)[1] = (ushort)(i+0);
-      (out+j+0)[2] = (ushort)(i+3);
-      (out+j+3)[0] = (ushort)(i+0);
-      (out+j+3)[1] = (ushort)(i+1);
-      (out+j+3)[2] = (ushort)(i+3);
-   }
-}
-static void generate_polygon_ushort_last2last(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)(i+1);
-      (out+j)[1] = (ushort)(i+2);
-      (out+j)[2] = (ushort)(0);
-   }
-}
-static void generate_points_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-   }
-}
-static void generate_linestrip_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-}
-static void generate_lineloop_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(0);
-}
-static void generate_tris_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-      (out+i)[2] = (uint)(i+2);
-   }
-}
-static void generate_tristrip_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1+(i&1));
-      (out+j)[2] = (uint)(i+2-(i&1));
-   }
-}
-static void generate_trifan_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_quads_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+0);
-      (out+j+0)[1] = (uint)(i+1);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+1);
-      (out+j+3)[1] = (uint)(i+2);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_quadstrip_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+2);
-      (out+j+0)[1] = (uint)(i+0);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+0);
-      (out+j+3)[1] = (uint)(i+1);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_polygon_uint_first2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_points_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i+1);
-      (out+i)[1] = (uint)(i);
-   }
-}
-static void generate_linestrip_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-}
-static void generate_lineloop_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i);
-}
-static void generate_tris_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i+1);
-      (out+i)[1] = (uint)(i+2);
-      (out+i)[2] = (uint)(i);
-   }
-}
-static void generate_tristrip_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1+(i&1));
-      (out+j)[1] = (uint)(i+2-(i&1));
-      (out+j)[2] = (uint)(i);
-   }
-}
-static void generate_trifan_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i+2);
-      (out+j)[2] = (uint)(0);
-   }
-}
-static void generate_quads_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+1);
-      (out+j+0)[1] = (uint)(i+3);
-      (out+j+0)[2] = (uint)(i+0);
-      (out+j+3)[0] = (uint)(i+2);
-      (out+j+3)[1] = (uint)(i+3);
-      (out+j+3)[2] = (uint)(i+1);
-   }
-}
-static void generate_quadstrip_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+0);
-      (out+j+0)[1] = (uint)(i+3);
-      (out+j+0)[2] = (uint)(i+2);
-      (out+j+3)[0] = (uint)(i+1);
-      (out+j+3)[1] = (uint)(i+3);
-      (out+j+3)[2] = (uint)(i+0);
-   }
-}
-static void generate_polygon_uint_first2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i+2);
-      (out+j)[2] = (uint)(0);
-   }
-}
-static void generate_points_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i+1);
-      (out+i)[1] = (uint)(i);
-   }
-}
-static void generate_linestrip_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-}
-static void generate_lineloop_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i);
-   }
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i);
-}
-static void generate_tris_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i+2);
-      (out+i)[1] = (uint)(i);
-      (out+i)[2] = (uint)(i+1);
-   }
-}
-static void generate_tristrip_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+2);
-      (out+j)[1] = (uint)(i+(i&1));
-      (out+j)[2] = (uint)(i+1-(i&1));
-   }
-}
-static void generate_trifan_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+2);
-      (out+j)[1] = (uint)(0);
-      (out+j)[2] = (uint)(i+1);
-   }
-}
-static void generate_quads_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+3);
-      (out+j+0)[1] = (uint)(i+0);
-      (out+j+0)[2] = (uint)(i+1);
-      (out+j+3)[0] = (uint)(i+3);
-      (out+j+3)[1] = (uint)(i+1);
-      (out+j+3)[2] = (uint)(i+2);
-   }
-}
-static void generate_quadstrip_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+3);
-      (out+j+0)[1] = (uint)(i+2);
-      (out+j+0)[2] = (uint)(i+0);
-      (out+j+3)[0] = (uint)(i+3);
-      (out+j+3)[1] = (uint)(i+0);
-      (out+j+3)[2] = (uint)(i+1);
-   }
-}
-static void generate_polygon_uint_last2first(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_points_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)(i);
-   }
-}
-static void generate_lines_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-   }
-}
-static void generate_linestrip_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-}
-static void generate_lineloop_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-   }
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(0);
-}
-static void generate_tris_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)(i);
-      (out+i)[1] = (uint)(i+1);
-      (out+i)[2] = (uint)(i+2);
-   }
-}
-static void generate_tristrip_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+(i&1));
-      (out+j)[1] = (uint)(i+1-(i&1));
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_trifan_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j)[2] = (uint)(i+2);
-   }
-}
-static void generate_quads_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)(i+0);
-      (out+j+0)[1] = (uint)(i+1);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+1);
-      (out+j+3)[1] = (uint)(i+2);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_quadstrip_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)(i+2);
-      (out+j+0)[1] = (uint)(i+0);
-      (out+j+0)[2] = (uint)(i+3);
-      (out+j+3)[0] = (uint)(i+0);
-      (out+j+3)[1] = (uint)(i+1);
-      (out+j+3)[2] = (uint)(i+3);
-   }
-}
-static void generate_polygon_uint_last2last(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)(i+1);
-      (out+j)[1] = (uint)(i+2);
-      (out+j)[2] = (uint)(0);
-   }
-}
-static void translate_points_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1+(i&1)];
-      (out+j)[2] = (ushort)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i+2];
-      (out+i)[2] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1+(i&1)];
-      (out+j)[1] = (ushort)in[i+2-(i&1)];
-      (out+j)[2] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_quads_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+1];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+2];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+2];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+0];
-   }
-}
-static void translate_polygon_ubyte2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+2];
-      (out+i)[1] = (ushort)in[i];
-      (out+i)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_tristrip_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+(i&1)];
-      (out+j)[2] = (ushort)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[0];
-      (out+j)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quads_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+1];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+2];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+0];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_polygon_ubyte2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+(i&1)];
-      (out+j)[1] = (ushort)in[i+1-(i&1)];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_trifan_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1+(i&1)];
-      (out+j)[2] = (uint)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i+2];
-      (out+i)[2] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1+(i&1)];
-      (out+j)[1] = (uint)in[i+2-(i&1)];
-      (out+j)[2] = (uint)in[i];
-   }
-}
-static void translate_trifan_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_quads_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+1];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+2];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quadstrip_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+2];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+0];
-   }
-}
-static void translate_polygon_ubyte2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+2];
-      (out+i)[1] = (uint)in[i];
-      (out+i)[2] = (uint)in[i+1];
-   }
-}
-static void translate_tristrip_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+(i&1)];
-      (out+j)[2] = (uint)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[0];
-      (out+j)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quads_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+1];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quadstrip_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+2];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+0];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_polygon_ubyte2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+(i&1)];
-      (out+j)[1] = (uint)in[i+1-(i&1)];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_trifan_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ubyte2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1+(i&1)];
-      (out+j)[2] = (ushort)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ushort2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i+2];
-      (out+i)[2] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1+(i&1)];
-      (out+j)[1] = (ushort)in[i+2-(i&1)];
-      (out+j)[2] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_quads_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+1];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+2];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quadstrip_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+2];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+0];
-   }
-}
-static void translate_polygon_ushort2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+2];
-      (out+i)[1] = (ushort)in[i];
-      (out+i)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_tristrip_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+(i&1)];
-      (out+j)[2] = (ushort)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[0];
-      (out+j)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quads_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+1];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quadstrip_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+2];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+0];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_polygon_ushort2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+(i&1)];
-      (out+j)[1] = (ushort)in[i+1-(i&1)];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_trifan_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_ushort2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1+(i&1)];
-      (out+j)[2] = (uint)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ushort2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i+2];
-      (out+i)[2] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1+(i&1)];
-      (out+j)[1] = (uint)in[i+2-(i&1)];
-      (out+j)[2] = (uint)in[i];
-   }
-}
-static void translate_trifan_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_quads_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+1];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+2];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quadstrip_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+2];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+0];
-   }
-}
-static void translate_polygon_ushort2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+2];
-      (out+i)[1] = (uint)in[i];
-      (out+i)[2] = (uint)in[i+1];
-   }
-}
-static void translate_tristrip_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+(i&1)];
-      (out+j)[2] = (uint)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[0];
-      (out+j)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quads_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+1];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quadstrip_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+2];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+0];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_polygon_ushort2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+(i&1)];
-      (out+j)[1] = (uint)in[i+1-(i&1)];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_trifan_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_ushort2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1+(i&1)];
-      (out+j)[2] = (ushort)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_uint2ushort_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i+2];
-      (out+i)[2] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1+(i&1)];
-      (out+j)[1] = (ushort)in[i+2-(i&1)];
-      (out+j)[2] = (ushort)in[i];
-   }
-}
-static void translate_trifan_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_quads_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+1];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+2];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quadstrip_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+3];
-      (out+j+0)[2] = (ushort)in[i+2];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+3];
-      (out+j+3)[2] = (ushort)in[i+0];
-   }
-}
-static void translate_polygon_uint2ushort_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i+1];
-      (out+i)[1] = (ushort)in[i];
-   }
-}
-static void translate_linestrip_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-}
-static void translate_lineloop_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i];
-   }
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i];
-}
-static void translate_tris_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i+2];
-      (out+i)[1] = (ushort)in[i];
-      (out+i)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_tristrip_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+(i&1)];
-      (out+j)[2] = (ushort)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[0];
-      (out+j)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_quads_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+1];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quadstrip_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+3];
-      (out+j+0)[1] = (ushort)in[i+2];
-      (out+j+0)[2] = (ushort)in[i+0];
-      (out+j+3)[0] = (ushort)in[i+3];
-      (out+j+3)[1] = (ushort)in[i+0];
-      (out+j+3)[2] = (ushort)in[i+1];
-   }
-}
-static void translate_polygon_uint2ushort_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_points_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (ushort)in[i];
-   }
-}
-static void translate_lines_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_linestrip_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-}
-static void translate_lineloop_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-   }
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[0];
-}
-static void translate_tris_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (ushort)in[i];
-      (out+i)[1] = (ushort)in[i+1];
-      (out+i)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_tristrip_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+(i&1)];
-      (out+j)[1] = (ushort)in[i+1-(i&1)];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_trifan_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j)[2] = (ushort)in[i+2];
-   }
-}
-static void translate_quads_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (ushort)in[i+0];
-      (out+j+0)[1] = (ushort)in[i+1];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+1];
-      (out+j+3)[1] = (ushort)in[i+2];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (ushort)in[i+2];
-      (out+j+0)[1] = (ushort)in[i+0];
-      (out+j+0)[2] = (ushort)in[i+3];
-      (out+j+3)[0] = (ushort)in[i+0];
-      (out+j+3)[1] = (ushort)in[i+1];
-      (out+j+3)[2] = (ushort)in[i+3];
-   }
-}
-static void translate_polygon_uint2ushort_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (ushort)in[i+1];
-      (out+j)[1] = (ushort)in[i+2];
-      (out+j)[2] = (ushort)in[0];
-   }
-}
-static void translate_points_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1+(i&1)];
-      (out+j)[2] = (uint)in[i+2-(i&1)];
-   }
-}
-static void translate_trifan_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_uint2uint_first2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i+2];
-      (out+i)[2] = (uint)in[i];
-   }
-}
-static void translate_tristrip_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1+(i&1)];
-      (out+j)[1] = (uint)in[i+2-(i&1)];
-      (out+j)[2] = (uint)in[i];
-   }
-}
-static void translate_trifan_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_quads_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+1];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+2];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quadstrip_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+3];
-      (out+j+0)[2] = (uint)in[i+2];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+3];
-      (out+j+3)[2] = (uint)in[i+0];
-   }
-}
-static void translate_polygon_uint2uint_first2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-static void translate_points_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i+1];
-      (out+i)[1] = (uint)in[i];
-   }
-}
-static void translate_linestrip_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-}
-static void translate_lineloop_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i];
-   }
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i];
-}
-static void translate_tris_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i+2];
-      (out+i)[1] = (uint)in[i];
-      (out+i)[2] = (uint)in[i+1];
-   }
-}
-static void translate_tristrip_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+(i&1)];
-      (out+j)[2] = (uint)in[i+1-(i&1)];
-   }
-}
-static void translate_trifan_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[0];
-      (out+j)[2] = (uint)in[i+1];
-   }
-}
-static void translate_quads_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+1];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quadstrip_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+3];
-      (out+j+0)[1] = (uint)in[i+2];
-      (out+j+0)[2] = (uint)in[i+0];
-      (out+j+3)[0] = (uint)in[i+3];
-      (out+j+3)[1] = (uint)in[i+0];
-      (out+j+3)[2] = (uint)in[i+1];
-   }
-}
-static void translate_polygon_uint2uint_last2first(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_points_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i++) { 
-      (out+i)[0] = (uint)in[i];
-   }
-}
-static void translate_lines_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=2) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-   }
-}
-static void translate_linestrip_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-}
-static void translate_lineloop_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr - 2; j+=2, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-   }
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[0];
-}
-static void translate_tris_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (i = 0; i < nr; i+=3) { 
-      (out+i)[0] = (uint)in[i];
-      (out+i)[1] = (uint)in[i+1];
-      (out+i)[2] = (uint)in[i+2];
-   }
-}
-static void translate_tristrip_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+(i&1)];
-      (out+j)[1] = (uint)in[i+1-(i&1)];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_trifan_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j)[2] = (uint)in[i+2];
-   }
-}
-static void translate_quads_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=4) { 
-      (out+j+0)[0] = (uint)in[i+0];
-      (out+j+0)[1] = (uint)in[i+1];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+1];
-      (out+j+3)[1] = (uint)in[i+2];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_quadstrip_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=2) { 
-      (out+j+0)[0] = (uint)in[i+2];
-      (out+j+0)[1] = (uint)in[i+0];
-      (out+j+0)[2] = (uint)in[i+3];
-      (out+j+3)[0] = (uint)in[i+0];
-      (out+j+3)[1] = (uint)in[i+1];
-      (out+j+3)[2] = (uint)in[i+3];
-   }
-}
-static void translate_polygon_uint2uint_last2last(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=3, i++) { 
-      (out+j)[0] = (uint)in[i+1];
-      (out+j)[1] = (uint)in[i+2];
-      (out+j)[2] = (uint)in[0];
-   }
-}
-void u_index_init( void )
-{
-  static int firsttime = 1;
-  if (!firsttime) return;
-  firsttime = 0;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_first2first;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_first2last;
-generate[OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_first2last;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_last2first;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort_last2last;
-generate[OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_ushort_last2last;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_uint_first2first;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_first2last;
-generate[OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_uint_first2last;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = generate_points_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = generate_lines_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = generate_quads_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = generate_polygon_uint_last2first;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = generate_points_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = generate_lines_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = generate_linestrip_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = generate_lineloop_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = generate_tris_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = generate_quads_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint_last2last;
-generate[OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = generate_polygon_uint_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_first2first;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_first2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_last2first;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_first2first;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_first2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_last2first;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint_last2last;
-translate[IN_UBYTE][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_first2first;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_first2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_last2first;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort_last2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_first2first;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_first2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_last2first;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint_last2last;
-translate[IN_USHORT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint_last2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_first2first;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_first2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_last2first;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort_last2last;
-translate[IN_UINT][OUT_USHORT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort_last2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_first2first;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_FIRST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_first2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POINTS] = translate_points_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINES] = translate_lines_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_FIRST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_last2first;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POINTS] = translate_points_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINES] = translate_lines_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_STRIP] = translate_linestrip_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_LINE_LOOP] = translate_lineloop_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUADS] = translate_quads_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint_last2last;
-translate[IN_UINT][OUT_UINT][PV_LAST][PV_LAST][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint_last2last;
-}
-#include "indices/u_indices.c"
diff --git a/src/gallium/auxiliary/indices/u_unfilled_gen.c b/src/gallium/auxiliary/indices/u_unfilled_gen.c
deleted file mode 100644 (file)
index 93897c9..0000000
+++ /dev/null
@@ -1,992 +0,0 @@
-/* File automatically generated by u_unfilled_gen.py */
-
-/*
- * 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
- * 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
- * VMWARE 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.
- */
-
-
-
-/**
- * @file
- * Functions to translate and generate index lists
- */
-
-#include "indices/u_indices.h"
-#include "indices/u_indices_priv.h"
-#include "pipe/p_compiler.h"
-#include "util/u_debug.h"
-#include "pipe/p_defines.h"
-#include "util/u_memory.h"
-
-
-static unsigned out_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return OUT_UINT;
-   case 2: return OUT_USHORT;
-   default: assert(0); return OUT_USHORT;
-   }
-}
-
-static unsigned in_size_idx( unsigned index_size )
-{
-   switch (index_size) {
-   case 4: return IN_UINT;
-   case 2: return IN_USHORT;
-   case 1: return IN_UBYTE;
-   default: assert(0); return IN_UBYTE;
-   }
-}
-
-
-static u_generate_func generate_line[OUT_COUNT][PRIM_COUNT];
-static u_translate_func translate_line[IN_COUNT][OUT_COUNT][PRIM_COUNT];
-
-
-static void generate_tris_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(i);
-   }
-}
-static void generate_tristrip_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)(i);
-      (out+j)[1] = (ushort)(i+1/*+(i&1)*/);
-      (out+j+2)[0] = (ushort)(i+1/*+(i&1)*/);
-      (out+j+2)[1] = (ushort)(i+2/*-(i&1)*/);
-      (out+j+4)[0] = (ushort)(i+2/*-(i&1)*/);
-      (out+j+4)[1] = (ushort)(i);
-   }
-}
-static void generate_trifan_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(0);
-   }
-}
-static void generate_quads_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)(i+0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(i+3);
-      (out+j+6)[0] = (ushort)(i+3);
-      (out+j+6)[1] = (ushort)(i+0);
-   }
-}
-static void generate_quadstrip_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)(i+2);
-      (out+j)[1] = (ushort)(i+0);
-      (out+j+2)[0] = (ushort)(i+0);
-      (out+j+2)[1] = (ushort)(i+1);
-      (out+j+4)[0] = (ushort)(i+1);
-      (out+j+4)[1] = (ushort)(i+3);
-      (out+j+6)[0] = (ushort)(i+3);
-      (out+j+6)[1] = (ushort)(i+2);
-   }
-}
-static void generate_polygon_ushort(
-    unsigned nr,
-    void *_out )
-{
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)(0);
-      (out+j)[1] = (ushort)(i+1);
-      (out+j+2)[0] = (ushort)(i+1);
-      (out+j+2)[1] = (ushort)(i+2);
-      (out+j+4)[0] = (ushort)(i+2);
-      (out+j+4)[1] = (ushort)(0);
-   }
-}
-static void generate_tris_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(i);
-   }
-}
-static void generate_tristrip_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)(i);
-      (out+j)[1] = (uint)(i+1/*+(i&1)*/);
-      (out+j+2)[0] = (uint)(i+1/*+(i&1)*/);
-      (out+j+2)[1] = (uint)(i+2/*-(i&1)*/);
-      (out+j+4)[0] = (uint)(i+2/*-(i&1)*/);
-      (out+j+4)[1] = (uint)(i);
-   }
-}
-static void generate_trifan_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(0);
-   }
-}
-static void generate_quads_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)(i+0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(i+3);
-      (out+j+6)[0] = (uint)(i+3);
-      (out+j+6)[1] = (uint)(i+0);
-   }
-}
-static void generate_quadstrip_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)(i+2);
-      (out+j)[1] = (uint)(i+0);
-      (out+j+2)[0] = (uint)(i+0);
-      (out+j+2)[1] = (uint)(i+1);
-      (out+j+4)[0] = (uint)(i+1);
-      (out+j+4)[1] = (uint)(i+3);
-      (out+j+6)[0] = (uint)(i+3);
-      (out+j+6)[1] = (uint)(i+2);
-   }
-}
-static void generate_polygon_uint(
-    unsigned nr,
-    void *_out )
-{
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)(0);
-      (out+j)[1] = (uint)(i+1);
-      (out+j+2)[0] = (uint)(i+1);
-      (out+j+2)[1] = (uint)(i+2);
-      (out+j+4)[0] = (uint)(i+2);
-      (out+j+4)[1] = (uint)(0);
-   }
-}
-static void translate_tris_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_quads_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)in[i+0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+0];
-   }
-}
-static void translate_quadstrip_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+0];
-      (out+j+2)[0] = (ushort)in[i+0];
-      (out+j+2)[1] = (ushort)in[i+1];
-      (out+j+4)[0] = (ushort)in[i+1];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+2];
-   }
-}
-static void translate_polygon_ubyte2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_tris_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_trifan_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_quads_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)in[i+0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+0];
-   }
-}
-static void translate_quadstrip_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+0];
-      (out+j+2)[0] = (uint)in[i+0];
-      (out+j+2)[1] = (uint)in[i+1];
-      (out+j+4)[0] = (uint)in[i+1];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+2];
-   }
-}
-static void translate_polygon_ubyte2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ubyte*in = (const ubyte*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_tris_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_trifan_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_quads_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)in[i+0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+0];
-   }
-}
-static void translate_quadstrip_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+0];
-      (out+j+2)[0] = (ushort)in[i+0];
-      (out+j+2)[1] = (ushort)in[i+1];
-      (out+j+4)[0] = (ushort)in[i+1];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+2];
-   }
-}
-static void translate_polygon_ushort2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_tris_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_tristrip_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_trifan_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_quads_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)in[i+0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+0];
-   }
-}
-static void translate_quadstrip_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+0];
-      (out+j+2)[0] = (uint)in[i+0];
-      (out+j+2)[1] = (uint)in[i+1];
-      (out+j+4)[0] = (uint)in[i+1];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+2];
-   }
-}
-static void translate_polygon_ushort2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const ushort*in = (const ushort*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_tris_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_tristrip_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[i];
-      (out+j)[1] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (ushort)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (ushort)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (ushort)in[i];
-   }
-}
-static void translate_trifan_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_quads_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (ushort)in[i+0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+0];
-   }
-}
-static void translate_quadstrip_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (ushort)in[i+2];
-      (out+j)[1] = (ushort)in[i+0];
-      (out+j+2)[0] = (ushort)in[i+0];
-      (out+j+2)[1] = (ushort)in[i+1];
-      (out+j+4)[0] = (ushort)in[i+1];
-      (out+j+4)[1] = (ushort)in[i+3];
-      (out+j+6)[0] = (ushort)in[i+3];
-      (out+j+6)[1] = (ushort)in[i+2];
-   }
-}
-static void translate_polygon_uint2ushort(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  ushort *out = (ushort*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (ushort)in[0];
-      (out+j)[1] = (ushort)in[i+1];
-      (out+j+2)[0] = (ushort)in[i+1];
-      (out+j+2)[1] = (ushort)in[i+2];
-      (out+j+4)[0] = (ushort)in[i+2];
-      (out+j+4)[1] = (ushort)in[0];
-   }
-}
-static void translate_tris_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i+=3) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_tristrip_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[i];
-      (out+j)[1] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[0] = (uint)in[i+1/*+(i&1)*/];
-      (out+j+2)[1] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[0] = (uint)in[i+2/*-(i&1)*/];
-      (out+j+4)[1] = (uint)in[i];
-   }
-}
-static void translate_trifan_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-static void translate_quads_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=4) { 
-      (out+j)[0] = (uint)in[i+0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+0];
-   }
-}
-static void translate_quadstrip_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=8, i+=2) { 
-      (out+j)[0] = (uint)in[i+2];
-      (out+j)[1] = (uint)in[i+0];
-      (out+j+2)[0] = (uint)in[i+0];
-      (out+j+2)[1] = (uint)in[i+1];
-      (out+j+4)[0] = (uint)in[i+1];
-      (out+j+4)[1] = (uint)in[i+3];
-      (out+j+6)[0] = (uint)in[i+3];
-      (out+j+6)[1] = (uint)in[i+2];
-   }
-}
-static void translate_polygon_uint2uint(
-    const void * _in,
-    unsigned nr,
-    void *_out )
-{
-  const uint*in = (const uint*)_in;
-  uint *out = (uint*)_out;
-  unsigned i, j;
-  (void)j;
-  for (j = i = 0; j < nr; j+=6, i++) { 
-      (out+j)[0] = (uint)in[0];
-      (out+j)[1] = (uint)in[i+1];
-      (out+j+2)[0] = (uint)in[i+1];
-      (out+j+2)[1] = (uint)in[i+2];
-      (out+j+4)[0] = (uint)in[i+2];
-      (out+j+4)[1] = (uint)in[0];
-   }
-}
-void u_unfilled_init( void )
-{
-  static int firsttime = 1;
-  if (!firsttime) return;
-  firsttime = 0;
-generate_line[OUT_USHORT][PIPE_PRIM_TRIANGLES] = generate_tris_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_QUADS] = generate_quads_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_ushort;
-generate_line[OUT_USHORT][PIPE_PRIM_POLYGON] = generate_polygon_ushort;
-generate_line[OUT_UINT][PIPE_PRIM_TRIANGLES] = generate_tris_uint;
-generate_line[OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = generate_trifan_uint;
-generate_line[OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = generate_tristrip_uint;
-generate_line[OUT_UINT][PIPE_PRIM_QUADS] = generate_quads_uint;
-generate_line[OUT_UINT][PIPE_PRIM_QUAD_STRIP] = generate_quadstrip_uint;
-generate_line[OUT_UINT][PIPE_PRIM_POLYGON] = generate_polygon_uint;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_QUADS] = translate_quads_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_USHORT][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2ushort;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_TRIANGLES] = translate_tris_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_QUADS] = translate_quads_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ubyte2uint;
-translate_line[IN_UBYTE][OUT_UINT][PIPE_PRIM_POLYGON] = translate_polygon_ubyte2uint;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_QUADS] = translate_quads_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2ushort;
-translate_line[IN_USHORT][OUT_USHORT][PIPE_PRIM_POLYGON] = translate_polygon_ushort2ushort;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_TRIANGLES] = translate_tris_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_QUADS] = translate_quads_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_ushort2uint;
-translate_line[IN_USHORT][OUT_UINT][PIPE_PRIM_POLYGON] = translate_polygon_ushort2uint;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_TRIANGLES] = translate_tris_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_QUADS] = translate_quads_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2ushort;
-translate_line[IN_UINT][OUT_USHORT][PIPE_PRIM_POLYGON] = translate_polygon_uint2ushort;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_TRIANGLES] = translate_tris_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_TRIANGLE_FAN] = translate_trifan_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_TRIANGLE_STRIP] = translate_tristrip_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_QUADS] = translate_quads_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_QUAD_STRIP] = translate_quadstrip_uint2uint;
-translate_line[IN_UINT][OUT_UINT][PIPE_PRIM_POLYGON] = translate_polygon_uint2uint;
-}
-#include "indices/u_unfilled_indices.c"
index c09e8a7a76fb26774b1574b61e96a437e8b78d13..0238308d20b72b5be131e238cd849b5f907203d4 100644 (file)
@@ -40,7 +40,7 @@
 #include "util/u_debug.h" /* for assert */
 
 
-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED)
+#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED) || defined(PIPE_OS_CYGWIN)
 
 #include <pthread.h> /* POSIX threads headers */
 #include <stdio.h> /* for perror() */
@@ -405,7 +405,7 @@ pipe_semaphore_wait(pipe_semaphore *sema)
  */
 
 typedef struct {
-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED)
+#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED) || defined(PIPE_OS_CYGWIN)
    pthread_key_t key;
 #elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
    DWORD key;
@@ -420,7 +420,7 @@ typedef struct {
 static INLINE void
 pipe_tsd_init(pipe_tsd *tsd)
 {
-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED)
+#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED) || defined(PIPE_OS_CYGWIN)
    if (pthread_key_create(&tsd->key, NULL/*free*/) != 0) {
       perror("pthread_key_create(): failed to allocate key for thread specific data");
       exit(-1);
@@ -437,7 +437,7 @@ pipe_tsd_get(pipe_tsd *tsd)
    if (tsd->initMagic != (int) PIPE_TSD_INIT_MAGIC) {
       pipe_tsd_init(tsd);
    }
-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED)
+#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED) || defined(PIPE_OS_CYGWIN)
    return pthread_getspecific(tsd->key);
 #elif defined(PIPE_SUBSYSTEM_WINDOWS_USER)
    assert(0);
@@ -454,7 +454,7 @@ pipe_tsd_set(pipe_tsd *tsd, void *value)
    if (tsd->initMagic != (int) PIPE_TSD_INIT_MAGIC) {
       pipe_tsd_init(tsd);
    }
-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED)
+#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_EMBEDDED) || defined(PIPE_OS_CYGWIN)
    if (pthread_setspecific(tsd->key, value) != 0) {
       perror("pthread_set_specific() failed");
       exit(-1);
index 6259142bec06dccf38098a5a367fe7f3732586f1..84907215fe6ced1fd642d39cffeb3c80cd3ed373 100644 (file)
@@ -37,7 +37,7 @@
 
 #if !defined(PIPE_OS_EMBEDDED)
 
-#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU)
+#if defined(PIPE_OS_LINUX) || defined(PIPE_OS_BSD) || defined(PIPE_OS_SOLARIS) || defined(PIPE_OS_APPLE) || defined(PIPE_OS_HAIKU) || defined(PIPE_OS_CYGWIN)
 #  include <sys/time.h> /* timeval */
 #elif defined(PIPE_SUBSYSTEM_WINDOWS_DISPLAY)
 #  include <windows.h>
index d984067893c75157f4ebf71f8e51bf593cdd8413..c5156438a1b6947b8e00be45ba4c87a745789130 100644 (file)
@@ -10,7 +10,7 @@ The code currently uses tcp and ip4v for connections.
 
 Information about driver integration can be found in:
 
-src/gallium/drivers/trace/README
+src/gallium/drivers/rbug/README
 
 for information about applications look in:
 
index 7595214bdf25ee5a610a1282789c1abe5fd82721..9f70b73698aaa2735bf0fda24ae110d4b495605a 100644 (file)
@@ -1743,20 +1743,35 @@ void x86_release_func( struct x86_function *p )
 }
 
 
-void (*x86_get_func( struct x86_function *p ))(void)
+static INLINE x86_func
+voidptr_to_x86_func(void *v)
+{
+   union {
+      void *v;
+      x86_func f;
+   } u;
+   assert(sizeof(u.v) == sizeof(u.f));
+   u.v = v;
+   return u.f;
+}
+
+
+x86_func x86_get_func( struct x86_function *p )
 {
    DUMP_END();
    if (DISASSEM && p->store)
       debug_printf("disassemble %p %p\n", p->store, p->csr);
 
    if (p->store == p->error_overflow)
-      return (void (*)(void)) NULL;
+      return voidptr_to_x86_func(NULL);
    else
-      return (void (*)(void)) p->store;
+      return voidptr_to_x86_func(p->store);
 }
 
 #else
 
+void x86sse_dummy( void );
+
 void x86sse_dummy( void )
 {
 }
index 319b836ffb1bb777dd6c936f74547e27bdc1fdbb..6208e8f707f26a89f593d54d5f8ea530ae0f9eda 100644 (file)
@@ -102,6 +102,11 @@ enum sse_cc {
 #define cc_Z  cc_E
 #define cc_NZ cc_NE
 
+
+/** generic pointer to function */
+typedef void (*x86_func)(void);
+
+
 /* Begin/end/retrieve function creation:
  */
 
@@ -109,7 +114,7 @@ enum sse_cc {
 void x86_init_func( struct x86_function *p );
 void x86_init_func_size( struct x86_function *p, unsigned code_size );
 void x86_release_func( struct x86_function *p );
-void (*x86_get_func( struct x86_function *p ))( void );
+x86_func x86_get_func( struct x86_function *p );
 
 /* Debugging:
  */
index eb475123198221b71e4fc0f39f03ec75af7d7865..df5d56a53c917cbb6fd01c45257caf67711060ee 100644 (file)
@@ -33,6 +33,7 @@
 
 #include "target-helpers/wrap_screen.h"
 #include "trace/tr_public.h"
+#include "rbug/rbug_public.h"
 #include "identity/id_public.h"
 #include "util/u_debug.h"
 
@@ -56,6 +57,9 @@ gallium_wrap_screen( struct pipe_screen *screen )
    /* Trace does its own checking if it should run */
    screen = trace_screen_create(screen);
 
+   /* Rbug does its own checking if it should run */
+   screen = rbug_screen_create(screen);
+
    return screen;
 }
 
index 1ad183b8dd4aad162a3cfacf188999e472e41ea3..35480076edfde6019d9d902d558aed60148598e5 100644 (file)
@@ -56,7 +56,7 @@ dump_ctx_printf(struct dump_ctx *ctx, const char *format, ...)
    va_list ap;
    (void)ctx;
    va_start(ap, format);
-   debug_vprintf(format, ap);
+   _debug_vprintf(format, ap);
    va_end(ap);
 }
 
index 9b1ca7fa8518c068f8db4d209a4484edb09afc95..c15d970b573a2055328682f40a477ae28ba5f87a 100644 (file)
@@ -621,12 +621,10 @@ tgsi_exec_machine_bind_shader(
 {
    uint k;
    struct tgsi_parse_context parse;
-   struct tgsi_exec_labels *labels = &mach->Labels;
    struct tgsi_full_instruction *instructions;
    struct tgsi_full_declaration *declarations;
    uint maxInstructions = 10, numInstructions = 0;
    uint maxDeclarations = 10, numDeclarations = 0;
-   uint instno = 0;
 
 #if 0
    tgsi_dump(tokens, 0);
@@ -637,6 +635,23 @@ tgsi_exec_machine_bind_shader(
    mach->Tokens = tokens;
    mach->Samplers = samplers;
 
+   if (!tokens) {
+      /* unbind and free all */
+      if (mach->Declarations) {
+         FREE( mach->Declarations );
+      }
+      mach->Declarations = NULL;
+      mach->NumDeclarations = 0;
+
+      if (mach->Instructions) {
+         FREE( mach->Instructions );
+      }
+      mach->Instructions = NULL;
+      mach->NumInstructions = 0;
+
+      return;
+   }
+
    k = tgsi_parse_init (&parse, mach->Tokens);
    if (k != TGSI_PARSE_OK) {
       debug_printf( "Problem parsing!\n" );
@@ -645,7 +660,6 @@ tgsi_exec_machine_bind_shader(
 
    mach->Processor = parse.FullHeader.Processor.Processor;
    mach->ImmLimit = 0;
-   labels->count = 0;
 
    declarations = (struct tgsi_full_declaration *)
       MALLOC( maxDeclarations * sizeof(struct tgsi_full_declaration) );
@@ -663,7 +677,6 @@ tgsi_exec_machine_bind_shader(
    }
 
    while( !tgsi_parse_end_of_tokens( &parse ) ) {
-      uint pointer = parse.Position;
       uint i;
 
       tgsi_parse_token( &parse );
@@ -707,11 +720,6 @@ tgsi_exec_machine_bind_shader(
          break;
 
       case TGSI_TOKEN_TYPE_INSTRUCTION:
-         assert( labels->count < MAX_LABELS );
-
-         labels->labels[labels->count][0] = instno;
-         labels->labels[labels->count][1] = pointer;
-         labels->count++;
 
          /* save expanded instruction */
          if (numInstructions == maxInstructions) {
@@ -801,7 +809,9 @@ void
 tgsi_exec_machine_destroy(struct tgsi_exec_machine *mach)
 {
    if (mach) {
-      FREE(mach->Instructions);
+      if (mach->Instructions)
+         FREE(mach->Instructions);
+      if (mach->Declarations)
       FREE(mach->Declarations);
    }
 
@@ -3126,7 +3136,7 @@ exec_instruction(
       break;
 
    case TGSI_OPCODE_DIV:
-      assert( 0 );
+      exec_vector_binary(mach, inst, micro_div, TGSI_EXEC_DATA_FLOAT, TGSI_EXEC_DATA_FLOAT);
       break;
 
    case TGSI_OPCODE_DP2:
index 11bbaf6722eee245027bac0004c226969323247b..3caf820af671c326271d0499232c02ea31023f46 100644 (file)
@@ -37,8 +37,6 @@ extern "C" {
 #endif
 
 
-#define MAX_LABELS (4 * 1024)  /**< basically, max instructions */
-
 #define NUM_CHANNELS 4  /* R,G,B,A */
 #define QUAD_SIZE    4  /* 4 pixel/quad */
 
@@ -93,16 +91,6 @@ struct tgsi_sampler
                        float rgba[NUM_CHANNELS][QUAD_SIZE]);
 };
 
-/**
- * For branching/calling subroutines.
- */
-struct tgsi_exec_labels
-{
-   unsigned labels[MAX_LABELS][2];
-   unsigned count;
-};
-
-
 #define TGSI_EXEC_NUM_TEMPS       128
 #define TGSI_EXEC_NUM_IMMEDIATES  256
 
@@ -186,10 +174,11 @@ struct tgsi_exec_labels
 
 
 
-#define TGSI_EXEC_MAX_COND_NESTING  32
-#define TGSI_EXEC_MAX_LOOP_NESTING  32
-#define TGSI_EXEC_MAX_SWITCH_NESTING 32
-#define TGSI_EXEC_MAX_CALL_NESTING  32
+#define TGSI_EXEC_MAX_NESTING  32
+#define TGSI_EXEC_MAX_COND_NESTING  TGSI_EXEC_MAX_NESTING
+#define TGSI_EXEC_MAX_LOOP_NESTING  TGSI_EXEC_MAX_NESTING
+#define TGSI_EXEC_MAX_SWITCH_NESTING TGSI_EXEC_MAX_NESTING
+#define TGSI_EXEC_MAX_CALL_NESTING  TGSI_EXEC_MAX_NESTING
 
 /* The maximum number of input attributes per vertex. For 2D
  * input register files, this is the stride between two 1D
@@ -324,7 +313,6 @@ struct tgsi_exec_machine
    struct tgsi_full_declaration *Declarations;
    uint NumDeclarations;
 
-   struct tgsi_exec_labels Labels;
 };
 
 struct tgsi_exec_machine *
index cfa2f631bd84430504a4a3d29b25b3c43bd2bf01..e59e964ffa77a8d160605ea54bf6ba375a6d3afc 100644 (file)
@@ -205,3 +205,18 @@ tgsi_get_opcode_name( uint opcode )
    return info->mnemonic;
 }
 
+
+const char *
+tgsi_get_processor_name( uint processor )
+{
+   switch (processor) {
+   case TGSI_PROCESSOR_VERTEX:
+      return "vertex shader";
+   case TGSI_PROCESSOR_FRAGMENT:
+      return "fragment shader";
+   case TGSI_PROCESSOR_GEOMETRY:
+      return "geometry shader";
+   default:
+      return "unknown shader type!";
+   }
+}
index 74713c3b98a3b054e9210eebdad8efdee89b57a5..50248884fd0d67d4cde3c84ae147467f3e2fce3a 100644 (file)
@@ -52,6 +52,9 @@ tgsi_get_opcode_info( uint opcode );
 const char *
 tgsi_get_opcode_name( uint opcode );
 
+const char *
+tgsi_get_processor_name( uint processor );
+
 
 #if defined __cplusplus
 }
index ad553c71a5703acdfe49e690d781dffa971a4fed..3521847b61901e40593e219f1dbcf4dd7a1c70de 100644 (file)
@@ -1366,4 +1366,12 @@ tgsi_emit_ppc(const struct tgsi_token *tokens,
    return ok;
 }
 
+#else
+
+void ppc_dummy_func(void);
+
+void ppc_dummy_func(void)
+{
+}
+
 #endif /* PIPE_ARCH_PPC */
index 232fc537c1d1dcda2575a23776b9268edbe94b8a..e0c5d3d3d613d28d557eea3360be54ad78ca27d1 100644 (file)
@@ -88,10 +88,7 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
             assert(fullinst->Instruction.Opcode < TGSI_OPCODE_LAST);
             info->opcode_count[fullinst->Instruction.Opcode]++;
 
-            /* special case: scan fragment shaders for use of the fog
-             * input/attribute.  The X component is fog, the Y component
-             * is the front/back-face flag.
-             */
+            /* check if we read the frag shader FOG or FACE inputs */
             if (procType == TGSI_PROCESSOR_FRAGMENT) {
                uint i;
                for (i = 0; i < fullinst->Instruction.NumSrcRegs; i++) {
@@ -109,6 +106,8 @@ tgsi_scan_shader(const struct tgsi_token *tokens,
                   }
                }
             }
+
+            info->num_instructions++;
          }
          break;
 
index 741aa7d5c42a53d5c17dbfccd0cf7df7fa7a2495..27de33f7990c72192ce1247c055a467bd97c66fe 100644 (file)
@@ -54,6 +54,7 @@ struct tgsi_shader_info
    int file_max[TGSI_FILE_COUNT];  /**< highest index of declared registers */
 
    uint immediate_count; /**< number of immediates declared */
+   uint num_instructions;
 
    uint opcode_count[TGSI_OPCODE_LAST];  /**< opcode histogram */
 
index 1071298b497a880e96b37ccb6046444bd1244b91..d5061f8b511eeb296d487cf16f12b81a33e34ab7 100644 (file)
@@ -1929,20 +1929,32 @@ emit_instruction(
       break;
 
    case TGSI_OPCODE_MUL:
+      /* do all fetches and adds, storing results in temp regs */
       FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {
-         FETCH( func, *inst, 0, 0, chan_index );
-         FETCH( func, *inst, 1, 1, chan_index );
-         emit_mul( func, 0, 1 );
-         STORE( func, *inst, 0, 0, chan_index );
+         int r = chan_index + 1;
+         FETCH( func, *inst, 0, 0, chan_index ); /* load xmm[0] */
+         FETCH( func, *inst, r, 1, chan_index ); /* load xmm[r] */
+         emit_mul( func, r, 0 );   /* xmm[r] = xmm[r] * xmm[0] */
+      }
+      /* do all stores of the temp regs */
+      FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {
+         int r = chan_index + 1;
+         STORE( func, *inst, r, 0, chan_index ); /* store xmm[r] */
       }
       break;
 
    case TGSI_OPCODE_ADD:
+      /* do all fetches and adds, storing results in temp regs */
       FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {
-         FETCH( func, *inst, 0, 0, chan_index );
-         FETCH( func, *inst, 1, 1, chan_index );
-         emit_add( func, 0, 1 );
-         STORE( func, *inst, 0, 0, chan_index );
+         int r = chan_index + 1;
+         FETCH( func, *inst, 0, 0, chan_index ); /* load xmm[0] */
+         FETCH( func, *inst, r, 1, chan_index ); /* load xmm[r] */
+         emit_add( func, r, 0 );   /* xmm[r] = xmm[r] + xmm[0] */
+      }
+      /* do all stores of the temp regs */
+      FOR_EACH_DST0_ENABLED_CHANNEL( *inst, chan_index ) {
+         int r = chan_index + 1;
+         STORE( func, *inst, r, 0, chan_index ); /* store xmm[r] */
       }
       break;
 
@@ -2816,6 +2828,40 @@ static void soa_to_aos( struct x86_function *func,
    x86_pop( func, x86_make_reg( file_REG32, reg_BX ) );
 }
 
+
+/**
+ * Check if the instructions dst register is the same as any src
+ * register and warn if there's a posible SOA dependency.
+ */
+static void
+check_soa_dependencies(const struct tgsi_full_instruction *inst)
+{
+   switch (inst->Instruction.Opcode) {
+   case TGSI_OPCODE_ADD:
+   case TGSI_OPCODE_MOV:
+   case TGSI_OPCODE_MUL:
+   case TGSI_OPCODE_XPD:
+      /* OK - these opcodes correctly handle SOA dependencies */
+      break;
+   default:
+      if (tgsi_check_soa_dependencies(inst)) {
+         uint opcode = inst->Instruction.Opcode;
+
+         /* XXX: we only handle src/dst aliasing in a few opcodes
+          * currently.  Need to use an additional temporay to hold
+          * the result in the cases where the code is too opaque to
+          * fix.
+          */
+         if (opcode != TGSI_OPCODE_MOV) {
+            debug_printf("Warning: src/dst aliasing in instruction"
+                         " is not handled:\n");
+            tgsi_dump_instruction(inst, 1);
+         }
+      }
+   }
+}
+
+
 /**
  * Translate a TGSI vertex/fragment shader to SSE2 code.
  * Slightly different things are done for vertex vs. fragment shaders.
@@ -2905,27 +2951,14 @@ tgsi_emit_sse2(
 
         if (!ok) {
             uint opcode = parse.FullToken.FullInstruction.Instruction.Opcode;
+            uint proc = parse.FullHeader.Processor.Processor;
            debug_printf("failed to translate tgsi opcode %d (%s) to SSE (%s)\n", 
                         opcode,
                          tgsi_get_opcode_name(opcode),
-                         parse.FullHeader.Processor.Processor == TGSI_PROCESSOR_VERTEX ?
-                         "vertex shader" : "fragment shader");
+                         tgsi_get_processor_name(proc));
         }
 
-         if (tgsi_check_soa_dependencies(&parse.FullToken.FullInstruction)) {
-            uint opcode = parse.FullToken.FullInstruction.Instruction.Opcode;
-
-            /* XXX: we only handle src/dst aliasing in a few opcodes
-             * currently.  Need to use an additional temporay to hold
-             * the result in the cases where the code is too opaque to
-             * fix.
-             */
-            if (opcode != TGSI_OPCODE_MOV) {
-               debug_printf("Warning: src/dst aliasing in instruction"
-                            " is not handled:\n");
-               tgsi_dump_instruction(&parse.FullToken.FullInstruction, 1);
-            }
-         }
+         check_soa_dependencies(&parse.FullToken.FullInstruction);
          break;
 
       case TGSI_TOKEN_TYPE_IMMEDIATE:
index 49b854b12341dcdd06848e83c0ea68e7b5675856..5fda808dbeff0419cb0c5a6698b75544309bced0 100644 (file)
@@ -1467,6 +1467,12 @@ const struct tgsi_token *ureg_get_tokens( struct ureg_program *ureg,
 }
 
 
+void ureg_free_tokens( const struct tgsi_token *tokens )
+{
+   FREE((struct tgsi_token *)tokens);
+}
+
+
 struct ureg_program *ureg_create( unsigned processor )
 {
    struct ureg_program *ureg = CALLOC_STRUCT( ureg_program );
index f32420dd872e1752cc9d0ec9425c374ce99cd70c..055545f3d2aef4e3b93fda570bdf8a183d07f03d 100644 (file)
@@ -104,6 +104,10 @@ ureg_get_tokens( struct ureg_program *ureg,
                  unsigned *nr_tokens );
 
 
+/* Free the tokens created by ureg_get_tokens() */
+void ureg_free_tokens( const struct tgsi_token *tokens );
+
+
 void 
 ureg_destroy( struct ureg_program * );
 
index 9df5f9a9d26d75011ec9a8b23fdbd68357151b40..d4fbd658f40394af34fc650558feb3d95c66f908 100644 (file)
@@ -48,7 +48,6 @@
 #include "util/u_sampler.h"
 #include "util/u_simple_shaders.h"
 #include "util/u_surface.h"
-#include "util/u_rect.h"
 
 #include "cso_cache/cso_context.h"
 
@@ -102,8 +101,7 @@ util_create_blit(struct pipe_context *pipe, struct cso_context *cso)
 
    /* rasterizer */
    memset(&ctx->rasterizer, 0, sizeof(ctx->rasterizer));
-   ctx->rasterizer.front_winding = PIPE_WINDING_CW;
-   ctx->rasterizer.cull_mode = PIPE_WINDING_NONE;
+   ctx->rasterizer.cull_face = PIPE_FACE_NONE;
    ctx->rasterizer.gl_rasterization_rules = 1;
 
    /* samplers */
index d603c7ac06d43e6d8b65947292d8c0b91961b2ae..e0bd89154cb1883ded0a8bd83adfe5df6028cc8f 100644 (file)
@@ -44,7 +44,6 @@
 #include "util/u_blitter.h"
 #include "util/u_draw_quad.h"
 #include "util/u_pack_color.h"
-#include "util/u_rect.h"
 #include "util/u_sampler.h"
 #include "util/u_simple_shaders.h"
 #include "util/u_surface.h"
@@ -70,8 +69,8 @@ struct blitter_context_priv
    void *vs_tex; /**< Vertex shader which passes {pos, texcoord} to the output.*/
 
    /* Fragment shaders. */
-   /* FS which outputs a color to multiple color buffers. */
-   void *fs_col[PIPE_MAX_COLOR_BUFS];
+   /* The shader at index i outputs color to color buffers 0,1,...,i-1. */
+   void *fs_col[PIPE_MAX_COLOR_BUFS+1];
 
    /* FS which outputs a color from a texture,
       where the index is PIPE_TEXTURE_* to be sampled. */
@@ -176,8 +175,7 @@ struct blitter_context *util_blitter_create(struct pipe_context *pipe)
 
    /* rasterizer state */
    memset(&rs_state, 0, sizeof(rs_state));
-   rs_state.front_winding = PIPE_WINDING_CW;
-   rs_state.cull_mode = PIPE_WINDING_NONE;
+   rs_state.cull_face = PIPE_FACE_NONE;
    rs_state.gl_rasterization_rules = 1;
    rs_state.flatshade = 1;
    ctx->rs_state = pipe->create_rasterizer_state(pipe, &rs_state);
@@ -249,7 +247,7 @@ void util_blitter_destroy(struct blitter_context *blitter)
          pipe->delete_fs_state(pipe, ctx->fs_texfetch_depth[i]);
    }
 
-   for (i = 0; i < PIPE_MAX_COLOR_BUFS && ctx->fs_col[i]; i++)
+   for (i = 0; i <= PIPE_MAX_COLOR_BUFS && ctx->fs_col[i]; i++)
       if (ctx->fs_col[i])
          pipe->delete_fs_state(pipe, ctx->fs_col[i]);
 
@@ -496,15 +494,14 @@ static INLINE
 void *blitter_get_fs_col(struct blitter_context_priv *ctx, unsigned num_cbufs)
 {
    struct pipe_context *pipe = ctx->pipe;
-   unsigned index = num_cbufs ? num_cbufs - 1 : 0;
 
    assert(num_cbufs <= PIPE_MAX_COLOR_BUFS);
 
-   if (!ctx->fs_col[index])
-      ctx->fs_col[index] =
+   if (!ctx->fs_col[num_cbufs])
+      ctx->fs_col[num_cbufs] =
          util_make_fragment_clonecolor_shader(pipe, num_cbufs);
 
-   return ctx->fs_col[index];
+   return ctx->fs_col[num_cbufs];
 }
 
 static INLINE
index 0de38e791d6661a43d137abbfabbe62aa2de8894..86db2c2e4b49db693d0810e0fddc785aa866a049 100644 (file)
@@ -123,8 +123,12 @@ debug_get_bool_option(const char *name, boolean dfault)
       result = FALSE;
    else if(!util_strcmp(str, "f"))
       result = FALSE;
+   else if(!util_strcmp(str, "F"))
+      result = FALSE;
    else if(!util_strcmp(str, "false"))
       result = FALSE;
+   else if(!util_strcmp(str, "FALSE"))
+      result = FALSE;
    else
       result = TRUE;
 
index 417d0cf04c924350ed37dfc4d792d010fb9f7cb8..6e250575d66756592a7cfc03aca502724e1685a6 100644 (file)
@@ -67,21 +67,6 @@ BOOL WINAPI j_SymInitialize(HANDLE hProcess, PSTR UserSearchPath, BOOL fInvadePr
       return FALSE;
 }
 
-typedef BOOL (WINAPI *PFNSYMCLEANUP)(HANDLE);
-static PFNSYMCLEANUP pfnSymCleanup = NULL;
-
-static
-BOOL WINAPI j_SymCleanup(HANDLE hProcess)
-{
-   if(
-      (hModule_Imagehlp || (hModule_Imagehlp = LoadLibraryA("IMAGEHLP.DLL"))) &&
-      (pfnSymCleanup || (pfnSymCleanup = (PFNSYMCLEANUP) GetProcAddress(hModule_Imagehlp, "SymCleanup")))
-   )
-      return pfnSymCleanup(hProcess);
-   else
-      return FALSE;
-}
-
 typedef DWORD (WINAPI *PFNSYMSETOPTIONS)(DWORD);
 static PFNSYMSETOPTIONS pfnSymSetOptions = NULL;
 
@@ -97,36 +82,6 @@ DWORD WINAPI j_SymSetOptions(DWORD SymOptions)
       return FALSE;
 }
 
-typedef BOOL (WINAPI *PFNSYMUNDNAME)(PIMAGEHLP_SYMBOL, PSTR, DWORD);
-static PFNSYMUNDNAME pfnSymUnDName = NULL;
-
-static
-BOOL WINAPI j_SymUnDName(PIMAGEHLP_SYMBOL Symbol, PSTR UnDecName, DWORD UnDecNameLength)
-{
-   if(
-      (hModule_Imagehlp || (hModule_Imagehlp = LoadLibraryA("IMAGEHLP.DLL"))) &&
-      (pfnSymUnDName || (pfnSymUnDName = (PFNSYMUNDNAME) GetProcAddress(hModule_Imagehlp, "SymUnDName")))
-   )
-      return pfnSymUnDName(Symbol, UnDecName, UnDecNameLength);
-   else
-      return FALSE;
-}
-
-typedef PFUNCTION_TABLE_ACCESS_ROUTINE PFNSYMFUNCTIONTABLEACCESS;
-static PFNSYMFUNCTIONTABLEACCESS pfnSymFunctionTableAccess = NULL;
-
-static
-PVOID WINAPI j_SymFunctionTableAccess(HANDLE hProcess, DWORD AddrBase)
-{
-   if(
-      (hModule_Imagehlp || (hModule_Imagehlp = LoadLibraryA("IMAGEHLP.DLL"))) &&
-      (pfnSymFunctionTableAccess || (pfnSymFunctionTableAccess = (PFNSYMFUNCTIONTABLEACCESS) GetProcAddress(hModule_Imagehlp, "SymFunctionTableAccess")))
-   )
-      return pfnSymFunctionTableAccess(hProcess, AddrBase);
-   else
-      return NULL;
-}
-
 typedef PGET_MODULE_BASE_ROUTINE PFNSYMGETMODULEBASE;
 static PFNSYMGETMODULEBASE pfnSymGetModuleBase = NULL;
 
@@ -142,41 +97,6 @@ DWORD WINAPI j_SymGetModuleBase(HANDLE hProcess, DWORD dwAddr)
       return 0;
 }
 
-typedef BOOL (WINAPI *PFNSTACKWALK)(DWORD, HANDLE, HANDLE, LPSTACKFRAME, LPVOID, PREAD_PROCESS_MEMORY_ROUTINE, PFUNCTION_TABLE_ACCESS_ROUTINE, PGET_MODULE_BASE_ROUTINE, PTRANSLATE_ADDRESS_ROUTINE);
-static PFNSTACKWALK pfnStackWalk = NULL;
-
-static
-BOOL WINAPI j_StackWalk(
-   DWORD MachineType, 
-   HANDLE hProcess, 
-   HANDLE hThread, 
-   LPSTACKFRAME StackFrame, 
-   PVOID ContextRecord, 
-   PREAD_PROCESS_MEMORY_ROUTINE ReadMemoryRoutine,  
-   PFUNCTION_TABLE_ACCESS_ROUTINE FunctionTableAccessRoutine,
-   PGET_MODULE_BASE_ROUTINE GetModuleBaseRoutine, 
-   PTRANSLATE_ADDRESS_ROUTINE TranslateAddress 
-)
-{
-   if(
-      (hModule_Imagehlp || (hModule_Imagehlp = LoadLibraryA("IMAGEHLP.DLL"))) &&
-      (pfnStackWalk || (pfnStackWalk = (PFNSTACKWALK) GetProcAddress(hModule_Imagehlp, "StackWalk")))
-   )
-      return pfnStackWalk(
-         MachineType, 
-         hProcess, 
-         hThread, 
-         StackFrame, 
-         ContextRecord, 
-         ReadMemoryRoutine,  
-         FunctionTableAccessRoutine,
-         GetModuleBaseRoutine, 
-         TranslateAddress 
-      );
-   else
-      return FALSE;
-}
-
 typedef BOOL (WINAPI *PFNSYMGETSYMFROMADDR)(HANDLE, DWORD, LPDWORD, PIMAGEHLP_SYMBOL);
 static PFNSYMGETSYMFROMADDR pfnSymGetSymFromAddr = NULL;
 
@@ -192,21 +112,6 @@ BOOL WINAPI j_SymGetSymFromAddr(HANDLE hProcess, DWORD Address, PDWORD Displacem
       return FALSE;
 }
 
-typedef BOOL (WINAPI *PFNSYMGETLINEFROMADDR)(HANDLE, DWORD, LPDWORD, PIMAGEHLP_LINE);
-static PFNSYMGETLINEFROMADDR pfnSymGetLineFromAddr = NULL;
-
-static
-BOOL WINAPI j_SymGetLineFromAddr(HANDLE hProcess, DWORD dwAddr, PDWORD pdwDisplacement, PIMAGEHLP_LINE Line)
-{
-   if(
-      (hModule_Imagehlp || (hModule_Imagehlp = LoadLibraryA("IMAGEHLP.DLL"))) &&
-      (pfnSymGetLineFromAddr || (pfnSymGetLineFromAddr = (PFNSYMGETLINEFROMADDR) GetProcAddress(hModule_Imagehlp, "SymGetLineFromAddr")))
-   )
-      return pfnSymGetLineFromAddr(hProcess, dwAddr, pdwDisplacement, Line);
-   else
-      return FALSE;
-}
-
 
 static INLINE boolean
 debug_symbol_print_imagehlp(const void *addr)
index bdc73ac47d20eaab0ce225055e460803ec58f96c..49536c0d593317a0be293d1cb7e68a3f31d222da 100644 (file)
@@ -70,9 +70,15 @@ util_dump_blend_factor(unsigned value, boolean shortened);
 const char *
 util_dump_blend_func(unsigned value, boolean shortened);
 
+const char *
+util_dump_logicop(unsigned value, boolean shortened);
+
 const char *
 util_dump_func(unsigned value, boolean shortened);
 
+const char *
+util_dump_stencil_op(unsigned value, boolean shortened);
+
 const char *
 util_dump_tex_target(unsigned value, boolean shortened);
 
index 96a225634739162e04cf9f73f3b01426121de5eb..692d4447c66c4f143403f682a490a5010423b990 100644 (file)
@@ -159,6 +159,49 @@ util_dump_blend_func_short_names[] = {
 DEFINE_UTIL_DUMP_CONTINUOUS(blend_func)
 
 
+static const char *
+util_dump_logicop_names[] = {
+   "PIPE_LOGICOP_CLEAR",
+   "PIPE_LOGICOP_NOR",
+   "PIPE_LOGICOP_AND_INVERTED",
+   "PIPE_LOGICOP_COPY_INVERTED",
+   "PIPE_LOGICOP_AND_REVERSE",
+   "PIPE_LOGICOP_INVERT",
+   "PIPE_LOGICOP_XOR",
+   "PIPE_LOGICOP_NAND",
+   "PIPE_LOGICOP_AND",
+   "PIPE_LOGICOP_EQUIV",
+   "PIPE_LOGICOP_NOOP",
+   "PIPE_LOGICOP_OR_INVERTED",
+   "PIPE_LOGICOP_COPY",
+   "PIPE_LOGICOP_OR_REVERSE",
+   "PIPE_LOGICOP_OR",
+   "PIPE_LOGICOP_SET"
+};
+
+static const char *
+util_dump_logicop_short_names[] = {
+   "clear",
+   "nor",
+   "and_inverted",
+   "copy_inverted",
+   "and_reverse",
+   "invert",
+   "xor",
+   "nand",
+   "and",
+   "equiv",
+   "noop",
+   "or_inverted",
+   "copy",
+   "or_reverse",
+   "or",
+   "set"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(logicop)
+
+
 static const char *
 util_dump_func_names[] = {
    "PIPE_FUNC_NEVER",
@@ -186,8 +229,36 @@ util_dump_func_short_names[] = {
 DEFINE_UTIL_DUMP_CONTINUOUS(func)
 
 
+static const char *
+util_dump_stencil_op_names[] = {
+   "PIPE_STENCIL_OP_KEEP",
+   "PIPE_STENCIL_OP_ZERO",
+   "PIPE_STENCIL_OP_REPLACE",
+   "PIPE_STENCIL_OP_INCR",
+   "PIPE_STENCIL_OP_DECR",
+   "PIPE_STENCIL_OP_INCR_WRAP",
+   "PIPE_STENCIL_OP_DECR_WRAP",
+   "PIPE_STENCIL_OP_INVERT"
+};
+
+static const char *
+util_dump_stencil_op_short_names[] = {
+   "keep",
+   "zero",
+   "replace",
+   "incr",
+   "decr",
+   "incr_wrap",
+   "decr_wrap",
+   "invert"
+};
+
+DEFINE_UTIL_DUMP_CONTINUOUS(stencil_op)
+
+
 static const char *
 util_dump_tex_target_names[] = {
+   "PIPE_BUFFER",
    "PIPE_TEXTURE_1D",
    "PIPE_TEXTURE_2D",
    "PIPE_TEXTURE_3D",
@@ -196,6 +267,7 @@ util_dump_tex_target_names[] = {
 
 static const char *
 util_dump_tex_target_short_names[] = {
+   "buffer",
    "1d",
    "2d",
    "3d",
index 2ce643e90cdf02abc0a8bada4f99085a2d72370b..cda5b8ba512881b06ea84535be8a2c590826f7fd 100644 (file)
@@ -300,12 +300,13 @@ util_dump_rasterizer_state(struct os_stream *stream, const struct pipe_rasterize
 
    util_dump_member(stream, bool, state, flatshade);
    util_dump_member(stream, bool, state, light_twoside);
-   util_dump_member(stream, uint, state, front_winding);
-   util_dump_member(stream, uint, state, cull_mode);
-   util_dump_member(stream, uint, state, fill_cw);
-   util_dump_member(stream, uint, state, fill_ccw);
-   util_dump_member(stream, bool, state, offset_cw);
-   util_dump_member(stream, bool, state, offset_ccw);
+   util_dump_member(stream, uint, state, front_ccw);
+   util_dump_member(stream, uint, state, cull_face);
+   util_dump_member(stream, uint, state, fill_front);
+   util_dump_member(stream, uint, state, fill_back);
+   util_dump_member(stream, bool, state, offset_point);
+   util_dump_member(stream, bool, state, offset_line);
+   util_dump_member(stream, bool, state, offset_tri);
    util_dump_member(stream, bool, state, scissor);
    util_dump_member(stream, bool, state, poly_smooth);
    util_dump_member(stream, bool, state, poly_stipple_enable);
index 8ba076949b6eb2477c71469555f9423224fbf9e4..fd95bea1a7bf897f53cfe5a3c9c1adf8f844a414 100644 (file)
@@ -366,6 +366,26 @@ util_format_is_plain(enum pipe_format format)
    return desc->layout == UTIL_FORMAT_LAYOUT_PLAIN ? TRUE : FALSE;
 }
 
+static INLINE boolean 
+util_format_is_compressed(enum pipe_format format)
+{
+   const struct util_format_description *desc = util_format_description(format);
+
+   assert(desc);
+   if (!desc) {
+      return FALSE;
+   }
+
+   switch (desc->layout) {
+   case UTIL_FORMAT_LAYOUT_S3TC:
+   case UTIL_FORMAT_LAYOUT_RGTC:
+      /* XXX add other formats in the future */
+      return TRUE;
+   default:
+      return FALSE;
+   }
+}
+
 static INLINE boolean 
 util_format_is_s3tc(enum pipe_format format)
 {
index 0c1bbc84c172a5dba89586dd06a74d7931b3eec3..6d0016c0ad8c60fc529d3fd6d8116e1ca5dc836d 100644 (file)
@@ -37,9 +37,6 @@
 '''
 
 
-import sys
-import math
-
 from u_format_parse import *
 
 
index 7076c676aaf000f50d0362e3865fab397d404d54..ddb9f2443d9b805fba7b9b78f77940c59fa230c0 100755 (executable)
@@ -43,7 +43,7 @@ ZS = 'zs'
 
 
 def is_pot(x):
-   return (x & (x - 1)) == 0;
+   return (x & (x - 1)) == 0
 
 
 VERY_LARGE = 99999999999999999999999
index a4c76dc00b3fdc0f51940dd31b11b3bc1b7ed943..3e8000f3687bd2f5145659b7325a3634a6f9b2e2 100644 (file)
@@ -39,7 +39,6 @@
 '''
 
 
-import sys
 import math
 
 
index 48ee0427261d240ed033ff762046059de4de0a8d..d19267be72fd932adc015a63ffe6d6c85067a91a 100644 (file)
@@ -1295,8 +1295,7 @@ util_create_gen_mipmap(struct pipe_context *pipe,
 
    /* rasterizer */
    memset(&ctx->rasterizer, 0, sizeof(ctx->rasterizer));
-   ctx->rasterizer.front_winding = PIPE_WINDING_CW;
-   ctx->rasterizer.cull_mode = PIPE_WINDING_NONE;
+   ctx->rasterizer.cull_face = PIPE_FACE_NONE;
    ctx->rasterizer.gl_rasterization_rules = 1;
 
    /* sampler state */
index 8007482e971ddab4359d04d8f1e5861c59b0cdfa..915cf3b9273951f68d3c1d39e39ef65c6fc3b818 100644 (file)
@@ -83,11 +83,11 @@ for i in xrange(1, 1024):
 
        # normalize number
        while (m & 0x00800000) == 0:
-               e -= 0x00800000;
-               m <<= 1;
+               e -= 0x00800000
+               m <<= 1
 
-       m &= ~0x00800000;
-       e += 0x38800000;
+       m &= ~0x00800000
+       e += 0x38800000
        value(m | e)
 
 # normals
index a48689ee8be78329b271975a106ba0f68d35676b..540305c1465765a90c3fd141ca484520e5a0a285 100644 (file)
@@ -369,6 +369,24 @@ pipe_transfer_destroy( struct pipe_context *context,
 }
 
 
+static INLINE boolean util_get_offset( 
+   const struct pipe_rasterizer_state *templ,
+   unsigned fill_mode)
+{
+   switch(fill_mode) {
+   case PIPE_POLYGON_MODE_POINT:
+      return templ->offset_point;
+   case PIPE_POLYGON_MODE_LINE:
+      return templ->offset_line;
+   case PIPE_POLYGON_MODE_FILL:
+      return templ->offset_tri;
+   default:
+      assert(0);
+      return FALSE;
+   }
+}
+
+
 #ifdef __cplusplus
 }
 #endif
index 6f49a723557b8884e5885ef4b142b232a34decd0..9adf22c471e86f740313aa25fcdd98557f511e36 100644 (file)
@@ -38,7 +38,6 @@
 
 #include "util/u_format.h"
 #include "util/u_inlines.h"
-#include "util/u_memory.h"
 #include "util/u_rect.h"
 #include "util/u_surface.h"
 
index 668da8c5c27bb611e211613e4ed2b5cdb3eddff7..b5d21570d5715e44089587996486e3c6a7508745 100644 (file)
@@ -28,7 +28,7 @@ util_surfaces_do_get(struct util_surfaces *us, unsigned surface_struct_size, str
    {   /* or 2D array */
       if(!us->u.table)
         us->u.table = util_hash_table_create(hash, compare);
-      key = (void *)(((zslice + face) << 8) | level);
+      key = (void *)(uintptr_t)(((zslice + face) << 8) | level);
       /* TODO: ouch, should have a get-reference function...
        * also, shouldn't allocate a two-pointer structure for each item... */
       ps = util_hash_table_get(us->u.table, key);
index bedace3b1dcdb2c3f18404685b4ccfe2e5bbd187..69f6fab9504e62870031a27095a37da55db87a67 100644 (file)
@@ -35,12 +35,12 @@ void u_default_transfer_inline_write( struct pipe_context *pipe,
    
    util_copy_rect(map,
                  resource->format,
-                 transfer->stride, /* bytes? */
+                 transfer->stride, /* bytes */
                  0, 0,
                  box->width,
                  box->height,
                  data,
-                 box->width,   /* bytes? texels? */
+                 stride,       /* bytes */
                  0, 0);
 
 out:
index ac3c3c7bdbd712053f964a41ead94c1634cd0169..89c02b1b703c3467be66405e83ee60b95dba4248 100644 (file)
@@ -201,9 +201,16 @@ returned).  Otherwise, if the ``wait`` parameter is FALSE, the call
 will not block and the return value will be TRUE if the query has
 completed or FALSE otherwise.
 
-A common type of query is the occlusion query which counts the number of
-fragments/pixels which are written to the framebuffer (and not culled by
-Z/stencil/alpha testing or shader KILL instructions).
+The most common type of query is the occlusion query,
+``PIPE_QUERY_OCCLUSION_COUNTER``, which counts the number of fragments which
+are written to the framebuffer without being culled by
+:ref:`Depth, Stencil, & Alpha` testing or shader KILL instructions.
+
+Another type of query, ``PIPE_QUERY_TIME_ELAPSED``, returns the amount of
+time, in nanoseconds, the context takes to perform operations.
+
+Gallium does not guarantee the availability of any query types; one must
+always check the capabilities of the :ref:`Screen` first.
 
 
 Conditional Rendering
@@ -289,11 +296,6 @@ data to be written to the resource at this point.
 The returned map points to the start of the mapped range according to
 the box region, not the beginning of the resource.
 
-.. _transfer_flush_region:
-``transfer_flush_region`` If a transfer was created with TRANFER_FLUSH_EXPLICIT,
-only the region specified is guaranteed to be written to. This is relative to
-the mapped range, not the beginning of the resource.
-
 ``transfer_unmap`` remove the memory mapping for the transfer object.
 Any pointers into the map should be considered invalid and discarded.
 
@@ -301,6 +303,16 @@ Any pointers into the map should be considered invalid and discarded.
 Basically get_transfer, transfer_map, data write, transfer_unmap, and
 transfer_destroy all in one.
 
+.. _transfer_flush_region:
+
+transfer_flush_region
+%%%%%%%%%%%%%%%%%%%%%
+
+If a transfer was created with ``FLUSH_EXPLICIT``, it will not automatically
+be flushed on write or unmap. Flushes must be requested with
+``transfer_flush_region``. Flush ranges are relative to the mapped range, not
+the beginning of the resource.
+
 .. _pipe_transfer:
 
 PIPE_TRANSFER
@@ -320,5 +332,4 @@ These flags control the behavior of a transfer object.
   operations pending on the resource are undefined. Cannot be used with
   ``READ``.
 * ``FLUSH_EXPLICIT``: Written ranges will be notified later with
-  :ref:`transfer_flush_region`. Cannot be used with
-  ``READ``.
+  :ref:`transfer_flush_region`. Cannot be used with ``READ``.
index 56a601a8d06470a6f6f7e0b5075849566c0a9c8f..ad1612f93e31e104826a8c5ed8b0cae8418e7d20 100644 (file)
@@ -46,6 +46,78 @@ There are several important exceptions to the specification of this rule.
   second vertex, not the first. This permits each segment of the fan to have
   a different color.
 
+Polygons
+--------
+
+light_twoside
+^^^^^^^^^^^^^
+
+If set, there are per-vertex back-facing colors.  The hardware
+(perhaps assisted by :ref:`Draw`) should be set up to use this state
+along with the front/back information to set the final vertex colors
+prior to rasterization.
+
+The frontface vertex shader color output is marked with TGSI semantic
+COLOR[0], and backface COLOR[1].
+
+front_ccw
+    Indicates whether the window order of front-facing polygons is
+    counter-clockwise (TRUE) or clockwise (FALSE).
+
+cull_mode
+    Indicates which faces of polygons to cull, either PIPE_FACE_NONE
+    (cull no polygons), PIPE_FACE_FRONT (cull front-facing polygons),
+    PIPE_FACE_BACK (cull back-facing polygons), or
+    PIPE_FACE_FRONT_AND_BACK (cull all polygons).
+
+fill_front
+    Indicates how to fill front-facing polygons, either
+    PIPE_POLYGON_MODE_FILL, PIPE_POLYGON_MODE_LINE or
+    PIPE_POLYGON_MODE_POINT.
+fill_back
+    Indicates how to fill back-facing polygons, either
+    PIPE_POLYGON_MODE_FILL, PIPE_POLYGON_MODE_LINE or
+    PIPE_POLYGON_MODE_POINT.
+
+poly_stipple_enable
+    Whether polygon stippling is enabled.
+poly_smooth
+    Controls OpenGL-style polygon smoothing/antialiasing
+
+offset_point
+    If set, point-filled polygons will have polygon offset factors applied
+offset_line
+    If set, line-filled polygons will have polygon offset factors applied
+offset_tri
+    If set, filled polygons will have polygon offset factors applied
+
+offset_units
+    Specifies the polygon offset bias
+offset_scale
+    Specifies the polygon offset scale
+
+
+
+Lines
+-----
+
+line_width
+    The width of lines.
+line_smooth
+    Whether lines should be smoothed. Line smoothing is simply anti-aliasing.
+line_stipple_enable
+    Whether line stippling is enabled.
+line_stipple_pattern
+    16-bit bitfield of on/off flags, used to pattern the line stipple.
+line_stipple_factor
+    When drawing a stippled line, each bit in the stipple pattern is
+    repeated N times, where N = line_stipple_factor + 1.
+line_last_pixel
+    Controls whether the last pixel in a line is drawn or not.  OpenGL
+    omits the last pixel to avoid double-drawing pixels at the ends of lines
+    when drawing connected lines.
+
+
 Points
 ------
 
@@ -89,68 +161,21 @@ coordinates are not generated.
    Some renderers always internally translate points into quads; this state
    still affects those renderers by overriding other rasterization state.
 
-Other Members
-^^^^^^^^^^^^^
-
-light_twoside
-    If set, there are per-vertex back-facing colors. :ref:`Draw`
-    uses this state along with the front/back information to set the
-    final vertex colors prior to rasterization.
-
-front_winding
-    Indicates the window order of front-facing polygons, either
-    PIPE_WINDING_CW or PIPE_WINDING_CCW
-
-cull_mode
-    Indicates which polygons to cull, either PIPE_WINDING_NONE (cull no
-    polygons), PIPE_WINDING_CW (cull clockwise-winding polygons),
-    PIPE_WINDING_CCW (cull counter clockwise-winding polygons), or
-    PIPE_WINDING_BOTH (cull all polygons).
-
-fill_cw
-    Indicates how to fill clockwise polygons, either PIPE_POLYGON_MODE_FILL,
-    PIPE_POLYGON_MODE_LINE or PIPE_POLYGON_MODE_POINT.
-fill_ccw
-    Indicates how to fill counter clockwise polygons, either
-    PIPE_POLYGON_MODE_FILL, PIPE_POLYGON_MODE_LINE or PIPE_POLYGON_MODE_POINT.
-
-poly_stipple_enable
-    Whether polygon stippling is enabled.
-poly_smooth
-    Controls OpenGL-style polygon smoothing/antialiasing
-offset_cw
-    If set, clockwise polygons will have polygon offset factors applied
-offset_ccw
-    If set, counter clockwise polygons will have polygon offset factors applied
-offset_units
-    Specifies the polygon offset bias
-offset_scale
-    Specifies the polygon offset scale
-
-line_width
-    The width of lines.
-line_smooth
-    Whether lines should be smoothed. Line smoothing is simply anti-aliasing.
-line_stipple_enable
-    Whether line stippling is enabled.
-line_stipple_pattern
-    16-bit bitfield of on/off flags, used to pattern the line stipple.
-line_stipple_factor
-    When drawing a stippled line, each bit in the stipple pattern is
-    repeated N times, where N = line_stipple_factor + 1.
-line_last_pixel
-    Controls whether the last pixel in a line is drawn or not.  OpenGL
-    omits the last pixel to avoid double-drawing pixels at the ends of lines
-    when drawing connected lines.
-
 point_smooth
     Whether points should be smoothed. Point smoothing turns rectangular
     points into circles or ovals.
 point_size_per_vertex
-    Whether vertices have a point size element.
+    Whether the vertex shader is expected to have a point size output.
+    Undefined behaviour is permitted if there is disagreement between
+    this flag and the actual bound shader.
 point_size
     The size of points, if not specified per-vertex.
 
+
+
+Other Members
+-------------
+
 scissor
     Whether the scissor test is enabled.
 
index 5a60ee00a69b8552ead976273c39992bc7be7852..48d9d570b6fcfc9f581e071634786c90e8a4bf23 100644 (file)
@@ -1,3 +1,5 @@
+.. _screen:
+
 Screen
 ======
 
@@ -33,6 +35,7 @@ The integer capabilities:
 * ``MAX_RENDER_TARGETS``: The maximum number of render targets that may be
   bound.
 * ``OCCLUSION_QUERY``: Whether occlusion queries are available.
+* ``TIMER_QUERY``: Whether timer queries are available.
 * ``TEXTURE_SHADOW_MAP``: XXX
 * ``MAX_TEXTURE_2D_LEVELS``: The maximum number of mipmap levels available
   for a 2D texture.
@@ -101,6 +104,22 @@ The floating-point capabilities:
 * ``GUARD_BAND_LEFT``, ``GUARD_BAND_TOP``, ``GUARD_BAND_RIGHT``,
   ``GUARD_BAND_BOTTOM``: XXX
 
+Fragment shader limits:
+
+* ``PIPE_CAP_MAX_FS_INSTRUCTIONS``: The maximum number of instructions.
+* ``PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS``: The maximum number of arithmetic instructions.
+* ``PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS``: The maximum number of texture instructions.
+* ``PIPE_CAP_MAX_FS_TEX_INDIRECTIONS``: The maximum number of texture indirections.
+* ``PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH``: The maximum nested control flow depth.
+* ``PIPE_CAP_MAX_FS_INPUTS``: The maximum number of input registers.
+* ``PIPE_CAP_MAX_FS_CONSTS``: The maximum number of constants.
+* ``PIPE_CAP_MAX_FS_TEMPS``: The maximum number of temporary registers.
+* ``PIPE_CAP_MAX_FS_ADDRS``: The maximum number of address registers.
+* ``PIPE_CAP_MAX_FS_PREDS``: The maximum number of predicate registers.
+
+Vertex shader limits:
+
+* ``PIPE_CAP_MAX_VS_*``: Identical to ``PIPE_CAP_MAX_FS_*``.
 
 
 .. _pipe_bind:
index 49cece58b8f2e1e257f33167037ef1593f7e2fc5..411f204f15a2b6d4666fa4701b24fb4d395dd69a 100644 (file)
@@ -73,7 +73,7 @@ cell_destroy_context( struct pipe_context *pipe )
 static struct draw_context *
 cell_draw_create(struct cell_context *cell)
 {
-   struct draw_context *draw = draw_create();
+   struct draw_context *draw = draw_create(&cell->pipe);
 
 #if 0 /* broken */
    if (getenv("GALLIUM_CELL_VS")) {
index b50a30bee803dc15cde37851aa73e21779fd6af6..6a1e4d8a646a976bff9104ec54d53e6432e10115 100644 (file)
@@ -103,7 +103,7 @@ cell_draw_range_elements(struct pipe_context *pipe,
       draw_set_mapped_vertex_buffer(draw, i, NULL);
    }
    if (indexBuffer) {
-      draw_set_mapped_element_buffer(draw, 0, NULL);
+      draw_set_mapped_element_buffer(draw, 0, 0, NULL);
    }
 
    /*
@@ -122,7 +122,7 @@ cell_draw_elements(struct pipe_context *pipe,
                    unsigned mode, unsigned start, unsigned count)
 {
    cell_draw_range_elements( pipe, indexBuffer,
-                             indexSize, indeBias,
+                             indexSize, indexBias,
                              0, 0xffffffff,
                              mode, start, count );
 }
index eac798e8cf6dfcdb9d85778e6be191f391e526e7..34ca864155b32576d49cb0c8af5048c25fce4df8 100644 (file)
@@ -123,7 +123,7 @@ cell_free_fenced_buffers(struct cell_context *cell,
       while (node) {
          struct cell_buffer_node *next = node->next;
          assert(node->buffer);
-         pipe_buffer_unmap(ps, node->buffer);
+         /* XXX need this? pipe_buffer_unmap(ps, node->buffer);*/
 #if 0
          printf("Unref buffer %p\n", node->buffer);
          if (node->buffer->reference.count == 1)
index ecc9de4df6605af9f0e5d4a45185fa8e9bf40e74..03f84d295b50b63a0cd7d63719807e3ced435fdf 100644 (file)
@@ -204,7 +204,7 @@ cell_bind_rasterizer_state(struct pipe_context *pipe, void *rast)
    struct cell_context *cell = cell_context(pipe);
 
    /* pass-through to draw module */
-   draw_set_rasterizer_state(cell->draw, rasterizer);
+   draw_set_rasterizer_state(cell->draw, rasterizer, rast);
 
    cell->rasterizer = rasterizer;
 
index 79cb8df82fac524d2e9364ce9c4b41ec0393d1c2..f648482c551a3780f632e9acab6e2a08d505299e 100644 (file)
@@ -152,7 +152,7 @@ cell_flush_prim_buffer(struct cell_context *cell)
       struct cell_command_render *render = &cell_global.command[i].render;
       render->prim_type = PIPE_PRIM_TRIANGLES;
       render->num_verts = cell->prim_buffer.num_verts;
-      render->front_winding = cell->rasterizer->front_winding;
+      render->front_ccw = cell->rasterizer->front_ccw;
       render->vertex_size = cell->vertex_info->size * 4;
       render->xmin = cell->prim_buffer.xmin;
       render->ymin = cell->prim_buffer.ymin;
index 9bb3abfc9dd84932a276ad79f6e4ecf05a9da923..0f12e0667eb93e28512f048c63674de5b67b08c3 100644 (file)
@@ -55,7 +55,7 @@ cell_get_name(struct pipe_screen *screen)
 
 
 static int
-cell_get_param(struct pipe_screen *screen, int param)
+cell_get_param(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
@@ -76,6 +76,8 @@ cell_get_param(struct pipe_screen *screen, int param)
       return 1;
    case PIPE_CAP_OCCLUSION_QUERY:
       return 1;
+   case PIPE_CAP_TIMER_QUERY:
+      return 0;
    case PIPE_CAP_TEXTURE_SHADOW_MAP:
       return 10;
    case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
@@ -105,7 +107,7 @@ cell_get_param(struct pipe_screen *screen, int param)
 
 
 static float
-cell_get_paramf(struct pipe_screen *screen, int param)
+cell_get_paramf(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_LINE_WIDTH:
index d08334d892b7592d95a4d1a8c17c27ec9db81e11..b3042df77922c556948e7e85e5deb686f16756ca 100644 (file)
@@ -34,7 +34,7 @@
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
 #include "util/u_inlines.h"
-
+#include "util/u_transfer.h"
 #include "util/u_format.h"
 #include "util/u_math.h"
 #include "util/u_memory.h"
@@ -42,7 +42,7 @@
 #include "cell_context.h"
 #include "cell_screen.h"
 #include "cell_state.h"
-#include "cell_resource.h"
+#include "cell_texture.h"
 
 #include "state_tracker/sw_winsys.h"
 
@@ -155,9 +155,9 @@ fail:
 
 
 static void
-cell_resource_destroy(struct pipe_resource *pt)
+cell_resource_destroy(struct pipe_screen *scrn, struct pipe_resource *pt)
 {
-   struct cell_screen *screen = cell_screen(pt->screen);
+   struct cell_screen *screen = cell_screen(scrn);
    struct sw_winsys *winsys = screen->winsys;
    struct cell_resource *ct = cell_resource(pt);
 
@@ -365,10 +365,10 @@ cell_get_transfer(struct pipe_context *ctx,
 {
    struct cell_resource *ct = cell_resource(resource);
    struct cell_transfer *ctrans;
-   enum pipe_format *format = resource->format;
+   enum pipe_format format = resource->format;
 
    assert(resource);
-   assert(level <= resource->last_level);
+   assert(sr.level <= resource->last_level);
 
    /* make sure the requested region is in the image bounds */
    assert(box->x + box->width <= u_minify(resource->width0, sr.level));
@@ -612,6 +612,24 @@ cell_user_buffer_create(struct pipe_screen *screen,
 }
 
 
+static struct pipe_resource *
+cell_resource_from_handle(struct pipe_screen *screen,
+                          const struct pipe_resource *templat,
+                          struct winsys_handle *handle)
+{
+   /* XXX todo */
+   return NULL;
+}
+
+
+static boolean 
+cell_resource_get_handle(struct pipe_screen *scree,
+                         struct pipe_resource *tex,
+                         struct winsys_handle *handle)
+{
+   /* XXX todo */
+   return FALSE;
+}
 
 
 void
@@ -630,7 +648,7 @@ cell_init_screen_texture_funcs(struct pipe_screen *screen)
 }
 
 void
-cell_init_transfer_funcs(struct cell_context *cell)
+cell_init_texture_transfer_funcs(struct cell_context *cell)
 {
    cell->pipe.get_transfer = cell_get_transfer;
    cell->pipe.transfer_destroy = cell_transfer_destroy;
index cfaffb52a8504359e7f734ea4f703c8d9f18ad73..37b719564823fc9ca6ec5f5d95690818b186ffdf 100644 (file)
@@ -165,9 +165,9 @@ cell_vbuf_set_primitive(struct vbuf_render *vbr, unsigned prim)
 
 
 static void
-cell_vbuf_draw(struct vbuf_render *vbr,
-              const ushort *indices,
-               uint nr_indices)
+cell_vbuf_draw_elements(struct vbuf_render *vbr,
+                        const ushort *indices,
+                        uint nr_indices)
 {
    struct cell_vbuf_render *cvbr = cell_vbuf_render(vbr);
    struct cell_context *cell = cvbr->cell;
@@ -319,7 +319,7 @@ cell_init_vbuf(struct cell_context *cell)
    cell->vbuf_render->base.map_vertices = cell_vbuf_map_vertices;
    cell->vbuf_render->base.unmap_vertices = cell_vbuf_unmap_vertices;
    cell->vbuf_render->base.set_primitive = cell_vbuf_set_primitive;
-   cell->vbuf_render->base.draw = cell_vbuf_draw;
+   cell->vbuf_render->base.draw_elements = cell_vbuf_draw_elements;
    cell->vbuf_render->base.release_vertices = cell_vbuf_release_vertices;
    cell->vbuf_render->base.destroy = cell_vbuf_destroy;
 
index f619380d8079900a75da0023dfe941c05e2d3931..efeebca27bb72b88594e6dd21ff82a69e8acb1f3 100644 (file)
@@ -568,7 +568,7 @@ setup_sort_vertices(const qword vs)
    ASSERT(CELL_FACING_FRONT == 0);
    ASSERT(CELL_FACING_BACK == 1);
    setup.facing = (area * sign > 0.0f)
-      ^ (spu.rasterizer.front_winding == PIPE_WINDING_CW);
+      ^ (!spu.rasterizer.front_ccw);
 
    return TRUE;
 }
index df9e68af4fcd4fb882b885ddfb86b99250449315..f8665acbe18975bbd33ad7c9ca8f4eb734f777b1 100644 (file)
@@ -544,9 +544,9 @@ draw_calc_nr_indices(uint nr_indices, unsigned type)
 }
 
 static void 
-i915_vbuf_render_draw(struct vbuf_render *render,
-                      const ushort *indices,
-                      uint nr_indices)
+i915_vbuf_render_draw_elements(struct vbuf_render *render,
+                               const ushort *indices,
+                               uint nr_indices)
 {
    struct i915_vbuf_render *i915_render = i915_vbuf_render(render);
    struct i915_context *i915 = i915_render->i915;
@@ -638,7 +638,7 @@ i915_vbuf_render_create(struct i915_context *i915)
    i915_render->base.map_vertices = i915_vbuf_render_map_vertices;
    i915_render->base.unmap_vertices = i915_vbuf_render_unmap_vertices;
    i915_render->base.set_primitive = i915_vbuf_render_set_primitive;
-   i915_render->base.draw = i915_vbuf_render_draw;
+   i915_render->base.draw_elements = i915_vbuf_render_draw_elements;
    i915_render->base.draw_arrays = i915_vbuf_render_draw_arrays;
    i915_render->base.release_vertices = i915_vbuf_render_release_vertices;
    i915_render->base.destroy = i915_vbuf_render_destroy;
index c10ba25d2d524d8c175927a7a1a8c897f75f128c..0897a863dbd2ba01597b03b139006d5223853cc5 100644 (file)
@@ -90,7 +90,7 @@ i915_get_name(struct pipe_screen *screen)
 }
 
 static int
-i915_get_param(struct pipe_screen *screen, int param)
+i915_get_param(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
@@ -113,6 +113,8 @@ i915_get_param(struct pipe_screen *screen, int param)
       return 1;
    case PIPE_CAP_OCCLUSION_QUERY:
       return 0;
+   case PIPE_CAP_TIMER_QUERY:
+      return 0;
    case PIPE_CAP_TEXTURE_SHADOW_MAP:
       return 1;
    case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
@@ -133,7 +135,7 @@ i915_get_param(struct pipe_screen *screen, int param)
 }
 
 static float
-i915_get_paramf(struct pipe_screen *screen, int param)
+i915_get_paramf(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_LINE_WIDTH:
index e008195a910b1cc0692b7e9cd751bac2127adc72..e767aa9f8f09f174198bdb3bfe09afff452fb572 100644 (file)
@@ -686,17 +686,23 @@ i915_create_rasterizer_state(struct pipe_context *pipe,
    else
       cso->sc[0] = _3DSTATE_SCISSOR_ENABLE_CMD | DISABLE_SCISSOR_RECT;
 
-   switch (rasterizer->cull_mode) {
-   case PIPE_WINDING_NONE:
+   switch (rasterizer->cull_face) {
+   case PIPE_FACE_NONE:
       cso->LIS4 |= S4_CULLMODE_NONE;
       break;
-   case PIPE_WINDING_CW:
-      cso->LIS4 |= S4_CULLMODE_CW;
+   case PIPE_FACE_FRONT:
+      if (rasterizer->front_ccw)
+         cso->LIS4 |= S4_CULLMODE_CCW;
+      else 
+         cso->LIS4 |= S4_CULLMODE_CW;
       break;
-   case PIPE_WINDING_CCW:
-      cso->LIS4 |= S4_CULLMODE_CCW;
+   case PIPE_FACE_BACK:
+      if (rasterizer->front_ccw)
+         cso->LIS4 |= S4_CULLMODE_CW;
+      else 
+         cso->LIS4 |= S4_CULLMODE_CCW;
       break;
-   case PIPE_WINDING_BOTH:
+   case PIPE_FACE_FRONT_AND_BACK:
       cso->LIS4 |= S4_CULLMODE_BOTH;
       break;
    }
index 85c4d7ed22e6160d9786f9d41c956b4ebc96cf7c..019af682f68f044c90990ead8ba24f8e0450fa24 100644 (file)
@@ -50,7 +50,7 @@ i965 = env.ConvenienceLibrary(
                'brw_sf_state.c',
                'brw_state_batch.c',
                'brw_state_cache.c',
-#              'brw_state_debug.c',
+               'brw_state_debug.c',
                'brw_state_upload.c',
                'brw_swtnl.c',
                'brw_urb.c',
index 003b1fd5bf0f807be9fdc6bd8fe397587470152d..8b3f46f2c1632cf4b288d0e2ca4f6a1994464c8d 100644 (file)
@@ -161,7 +161,7 @@ brw_batchbuffer_emit_reloc(struct brw_batchbuffer *batch,
    int ret;
 
    if (batch->ptr - batch->map > batch->buf->size) {
-      debug_printf("bad relocation ptr %p map %p offset %d size %d\n",
+      debug_printf("bad relocation ptr %p map %p offset %li size %i\n",
                   batch->ptr, batch->map, batch->ptr - batch->map, batch->buf->size);
 
       return PIPE_ERROR_OUT_OF_MEMORY;
index 2117e91a9e453bd99b0a100a5e625f753b64d55d..4c1a6d7dcdfde014ae3248c9457395e9279c4dfa 100644 (file)
@@ -42,7 +42,7 @@ calculate_clip_key_rast( const struct brw_context *brw,
 
    key->do_flat_shading = templ->flatshade;
 
-   if (templ->cull_mode == PIPE_WINDING_BOTH) {
+   if (templ->cull_face == PIPE_FACE_FRONT_AND_BACK) {
       key->clip_mode = BRW_CLIPMODE_REJECT_ALL;
       return;
    }
@@ -50,12 +50,18 @@ calculate_clip_key_rast( const struct brw_context *brw,
    key->fill_ccw = CLIP_CULL;
    key->fill_cw = CLIP_CULL;
 
-   if (!(templ->cull_mode & PIPE_WINDING_CCW)) {
-      key->fill_ccw = translate_fill(templ->fill_ccw);
+   if (!(templ->cull_face & PIPE_FACE_FRONT)) {
+      if (templ->front_ccw)
+         key->fill_ccw = translate_fill(templ->fill_front);
+      else 
+         key->fill_cw = translate_fill(templ->fill_front);
    }
 
-   if (!(templ->cull_mode & PIPE_WINDING_CW)) {
-      key->fill_cw = translate_fill(templ->fill_cw);
+   if (!(templ->cull_face & PIPE_FACE_BACK)) {
+      if (templ->front_ccw)
+         key->fill_cw = translate_fill(templ->fill_back);
+      else 
+         key->fill_ccw = translate_fill(templ->fill_back);
    }
 
    if (key->fill_cw == CLIP_LINE ||
@@ -66,8 +72,29 @@ calculate_clip_key_rast( const struct brw_context *brw,
       key->clip_mode = BRW_CLIPMODE_CLIP_NON_REJECTED;
    }
 
-   key->offset_ccw = templ->offset_ccw;
-   key->offset_cw = templ->offset_cw;
+   switch (key->fill_cw) {
+   case CLIP_POINT:
+      key->offset_cw = templ->offset_point;
+      break;
+   case CLIP_LINE:
+      key->offset_cw = templ->offset_line;
+      break;
+   case CLIP_FILL:
+      key->offset_cw = templ->offset_tri;
+      break;
+   }
+
+   switch (key->fill_ccw) {
+   case CLIP_POINT:
+      key->offset_ccw = templ->offset_point;
+      break;
+   case CLIP_LINE:
+      key->offset_ccw = templ->offset_line;
+      break;
+   case CLIP_FILL:
+      key->offset_ccw = templ->offset_tri;
+      break;
+   }
 
    if (templ->light_twoside && key->fill_cw != CLIP_CULL) 
       key->copy_bfc_cw = 1;
@@ -111,12 +138,12 @@ static void *brw_create_rasterizer_state( struct pipe_context *pipe,
    /* Caclculate lookup value for WM IZ table.
     */
    if (templ->line_smooth) {
-      if (templ->fill_cw == PIPE_POLYGON_MODE_LINE &&
-         templ->fill_ccw == PIPE_POLYGON_MODE_LINE) {
+      if (templ->fill_front == PIPE_POLYGON_MODE_LINE &&
+         templ->fill_back == PIPE_POLYGON_MODE_LINE) {
         rast->unfilled_aa_line = AA_ALWAYS;
       }
-      else if (templ->fill_cw == PIPE_POLYGON_MODE_LINE ||
-              templ->fill_ccw == PIPE_POLYGON_MODE_LINE) {
+      else if (templ->fill_front == PIPE_POLYGON_MODE_LINE ||
+              templ->fill_back == PIPE_POLYGON_MODE_LINE) {
         rast->unfilled_aa_line = AA_SOMETIMES;
       }
       else {
index 3b9854be588a96a86943c1b573f65c49941ea4bb..1efdb1e0b4d110e08ffc04e29c1bd8942e13a7d6 100644 (file)
@@ -13,7 +13,7 @@ brw_resource_create(struct pipe_screen *screen,
    if (template->target == PIPE_BUFFER)
       return brw_buffer_create(screen, template);
    else
-      return brw_resource_create(screen, template);
+      return brw_texture_create(screen, template);
 
 }
 
index 4fbb0c2484dea747599b5aa95f3cffddeaa005b6..ffd0f38672c7e7b32121fea8796d1571c4b72262 100644 (file)
@@ -210,7 +210,7 @@ brw_texture_get_handle(struct pipe_screen *screen,
 
    stride = tex->pitch * tex->cpp;
 
-   return bscreen->sws->bo_get_handle(tex->bo, whandle, stride);
+   return bscreen->sws->bo_get_handle(tex->bo, whandle, stride) == PIPE_OK;
 }
 
 
index 172e222c057547ab5d1b2587e83e47ef0041db9a..7a7b9c1a5a962b42a1d72e34eeee10476e8495bc 100644 (file)
@@ -149,7 +149,7 @@ brw_get_name(struct pipe_screen *screen)
 }
 
 static int
-brw_get_param(struct pipe_screen *screen, int param)
+brw_get_param(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
@@ -172,6 +172,8 @@ brw_get_param(struct pipe_screen *screen, int param)
       return 1;
    case PIPE_CAP_OCCLUSION_QUERY:
       return 0;
+   case PIPE_CAP_TIMER_QUERY:
+      return 0;
    case PIPE_CAP_TEXTURE_SHADOW_MAP:
       return 1;
    case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
@@ -192,7 +194,7 @@ brw_get_param(struct pipe_screen *screen, int param)
 }
 
 static float
-brw_get_paramf(struct pipe_screen *screen, int param)
+brw_get_paramf(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_LINE_WIDTH:
index 9cceb4dbe525d9522b9a3b0345d05c6646d5b004..5abf3848ab4e6d7865c505e5215845443cbb7946 100644 (file)
@@ -166,8 +166,8 @@ static enum pipe_error upload_sf_prog(struct brw_context *brw)
    case PIPE_PRIM_TRIANGLES: 
       /* PIPE_NEW_RAST
        */
-      if (rast->fill_cw != PIPE_POLYGON_MODE_FILL ||
-         rast->fill_ccw != PIPE_POLYGON_MODE_FILL)
+      if (rast->fill_front != PIPE_POLYGON_MODE_FILL ||
+         rast->fill_back != PIPE_POLYGON_MODE_FILL)
         key.primitive = SF_UNFILLED_TRIS;
       else
         key.primitive = SF_TRIANGLES;
@@ -187,7 +187,7 @@ static enum pipe_error upload_sf_prog(struct brw_context *brw)
    key.do_twoside_color = rast->light_twoside;
 
    if (key.do_twoside_color) {
-      key.frontface_ccw = (rast->front_winding == PIPE_WINDING_CCW);
+      key.frontface_ccw = rast->front_ccw;
    }
 
    if (brw_search_cache(&brw->cache, BRW_SF_PROG,
index 0ad91e03072afb345f5ef63e9a098f7b43ad45e1..6c299a86b4986a0f2d5a793ff4348df0a229f377 100644 (file)
@@ -89,8 +89,8 @@ struct brw_sf_unit_key {
    unsigned line_smooth:1;
    unsigned point_sprite:1;
    unsigned point_attenuated:1;
-   unsigned front_face:2;
-   unsigned cull_mode:2;
+   unsigned front_ccw:1;
+   unsigned cull_face:2;
    unsigned flatshade_first:1;
    unsigned gl_rasterization_rules:1;
    unsigned line_last_pixel_enable:1;
@@ -115,8 +115,8 @@ sf_unit_populate_key(struct brw_context *brw, struct brw_sf_unit_key *key)
 
    /* PIPE_NEW_RAST */
    key->scissor = rast->scissor;
-   key->front_face = rast->front_winding;
-   key->cull_mode = rast->cull_mode;
+   key->front_ccw = rast->front_ccw;
+   key->cull_face = rast->cull_face;
    key->line_smooth = rast->line_smooth;
    key->line_width = rast->line_width;
    key->flatshade_first = rast->flatshade_first;
@@ -183,22 +183,22 @@ sf_unit_create_from_key(struct brw_context *brw,
    if (key->scissor)
       sf.sf6.scissor = 1;
 
-   if (key->front_face == PIPE_WINDING_CCW)
+   if (key->front_ccw)
       sf.sf5.front_winding = BRW_FRONTWINDING_CCW;
    else
       sf.sf5.front_winding = BRW_FRONTWINDING_CW;
 
-   switch (key->cull_mode) {
-   case PIPE_WINDING_CCW:
-   case PIPE_WINDING_CW:
-      sf.sf6.cull_mode = (key->front_face == key->cull_mode ?
-                         BRW_CULLMODE_FRONT :
-                         BRW_CULLMODE_BACK);
+   switch (key->cull_face) {
+   case PIPE_FACE_FRONT:
+      sf.sf6.cull_mode = BRW_CULLMODE_FRONT;
       break;
-   case PIPE_WINDING_BOTH:
+   case PIPE_FACE_BACK:
+      sf.sf6.cull_mode = BRW_CULLMODE_BACK;
+      break;
+   case PIPE_FACE_FRONT_AND_BACK:
       sf.sf6.cull_mode = BRW_CULLMODE_BOTH;
       break;
-   case PIPE_WINDING_NONE:
+   case PIPE_FACE_NONE:
       sf.sf6.cull_mode = BRW_CULLMODE_NONE;
       break;
    default:
@@ -284,7 +284,7 @@ static enum pipe_error upload_sf_unit( struct brw_context *brw )
     */
    total_grf = (align(key.total_grf, 16) / 16 - 1);
    viewport_transform = 1;
-   front_winding = (key.front_face == PIPE_WINDING_CCW ?
+   front_winding = (key.front_ccw ?
                     BRW_FRONTWINDING_CCW :
                     BRW_FRONTWINDING_CW);
 
index ee970ac75bcd0a53a019e6aa2e7b8e5a880d8281..efc2d96be135a60427fc37ac5ec4310bee04de68 100644 (file)
@@ -128,8 +128,9 @@ wm_unit_populate_key(struct brw_context *brw, struct brw_wm_unit_key *key)
    key->line_stipple = brw->curr.rast->templ.line_stipple_enable;
 
 
-   key->offset_enable = (brw->curr.rast->templ.offset_cw ||
-                        brw->curr.rast->templ.offset_ccw);
+   key->offset_enable = (brw->curr.rast->templ.offset_point ||
+                        brw->curr.rast->templ.offset_line ||
+                        brw->curr.rast->templ.offset_tri);
 
    key->offset_units = brw->curr.rast->templ.offset_units;
    key->offset_factor = brw->curr.rast->templ.offset_scale;
index 7082d60d1c99bb3b06f19f11bb986f1a511efbfa..f71585e06f81c7f0a399ec605b2e8c722b6e37ba 100644 (file)
@@ -67,7 +67,7 @@ identity_screen_get_vendor(struct pipe_screen *_screen)
 
 static int
 identity_screen_get_param(struct pipe_screen *_screen,
-                          int param)
+                          enum pipe_cap param)
 {
    struct identity_screen *id_screen = identity_screen(_screen);
    struct pipe_screen *screen = id_screen->screen;
@@ -78,7 +78,7 @@ identity_screen_get_param(struct pipe_screen *_screen,
 
 static float
 identity_screen_get_paramf(struct pipe_screen *_screen,
-                           int param)
+                           enum pipe_cap param)
 {
    struct identity_screen *id_screen = identity_screen(_screen);
    struct pipe_screen *screen = id_screen->screen;
index 4ea367597e18eb740dd856e50097511b4850a09e..526e85c82e11ffa0c39183527d7ee4c6d5183180 100644 (file)
@@ -59,7 +59,7 @@ lp_tile_soa.c: lp_tile_soa.py ../../auxiliary/util/u_format_parse.py ../../auxil
        python lp_tile_soa.py ../../auxiliary/util/u_format.csv > $@
 
 LDFLAGS += $(LLVM_LDFLAGS)
-LIBS += $(GL_LIB_DEPS) -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS)
+LIBS += -L../../auxiliary/ -lgallium libllvmpipe.a $(LLVM_LIBS) $(GL_LIB_DEPS)
 LD=g++
 
 $(PROGS): lp_test_main.o libllvmpipe.a
index 3c3fd386b5283ad157079aad36a8226a2d42795d..9c874acdedc028e70bd2b1c51a4adb352344ad71 100644 (file)
@@ -69,7 +69,15 @@ Requirements
    http://people.freedesktop.org/~jrfonseca/llvm/ and set the LLVM environment
    variable to the extracted path.
 
-   The version of LLVM from SVN ("2.7svn") from mid-March 2010 seems pretty
+   For MSVC there are two set of binaries: llvm-x.x-msvc32mt.7z and
+   llvm-x.x-msvc32mtd.7z .
+
+   You have to set the LLVM=/path/to/llvm-x.x-msvc32mtd env var when passing
+   debug=yes to scons, and LLVM=/path/to/llvm-x.x-msvc32mt when building with
+   debug=no. This is necessary as LLVM builds as static library so the chosen
+   MS CRT must match.
+
+   The version of LLVM from SVN ("2.7svn") from mid-March 2010 is pretty
    stable and has some features not in version 2.6.
 
  - scons (optional)
index 2911cf2179a59074bf63998fa84fa154a3dde8f6..c155558aa54a7877cef0d11d3e23022d9287eb4e 100644 (file)
@@ -85,4 +85,4 @@ if env['platform'] != 'embedded':
         )
         env.InstallProgram(target)
 
-    Export('llvmpipe')
+Export('llvmpipe')
index ebbdb1a604c679aed7427ba9a1b3fd6e1ba2e496..5cecec3d7f9f5a7b3757c3c168ec70ea9962b3f7 100644 (file)
 #define LP_BLD_BLEND_H
 
 
-/**
- * @file
- * LLVM IR building helpers interfaces.
- *
- * We use LLVM-C bindings for now. They are not documented, but follow the C++
- * interfaces very closely, and appear to be complete enough for code
- * genration. See
- * http://npcontemplation.blogspot.com/2008/06/secret-of-llvm-c-bindings.html
- * for a standalone example.
- */
-
 #include "gallivm/lp_bld.h"
  
 #include "pipe/p_format.h"
@@ -75,6 +64,7 @@ LLVMValueRef
 lp_build_blend_aos(LLVMBuilderRef builder,
                    const struct pipe_blend_state *blend,
                    struct lp_type type,
+                   unsigned rt,
                    LLVMValueRef src,
                    LLVMValueRef dst,
                    LLVMValueRef const_,
@@ -85,6 +75,7 @@ void
 lp_build_blend_soa(LLVMBuilderRef builder,
                    const struct pipe_blend_state *blend,
                    struct lp_type type,
+                   unsigned rt,
                    LLVMValueRef src[4],
                    LLVMValueRef dst[4],
                    LLVMValueRef const_[4],
index 3fa5e51cac5f0a14bf0d4afd2fc718166b7ce2fe..70d08e71f6ecf660351cef812335eafc30acdb5c 100644 (file)
@@ -243,6 +243,9 @@ lp_build_blend_factor(struct lp_build_blend_aos_context *bld,
 }
 
 
+/**
+ * Is (a OP b) == (b OP a)?
+ */
 boolean
 lp_build_blend_func_commutative(unsigned func)
 {
@@ -305,6 +308,7 @@ LLVMValueRef
 lp_build_blend_aos(LLVMBuilderRef builder,
                    const struct pipe_blend_state *blend,
                    struct lp_type type,
+                   unsigned rt,
                    LLVMValueRef src,
                    LLVMValueRef dst,
                    LLVMValueRef const_,
@@ -314,11 +318,10 @@ lp_build_blend_aos(LLVMBuilderRef builder,
    LLVMValueRef src_term;
    LLVMValueRef dst_term;
 
-   /* FIXME */
-   assert(blend->independent_blend_enable == 0);
-   assert(blend->rt[0].colormask == 0xf);
+   /* FIXME: color masking not implemented yet */
+   assert(blend->rt[rt].colormask == 0xf);
 
-   if(!blend->rt[0].blend_enable)
+   if(!blend->rt[rt].blend_enable)
       return src;
 
    /* It makes no sense to blend unless values are normalized */
@@ -335,16 +338,16 @@ lp_build_blend_aos(LLVMBuilderRef builder,
     * combinations it is possible to reorder the operations and therefore saving
     * some instructions. */
 
-   src_term = lp_build_blend_factor(&bld, src, blend->rt[0].rgb_src_factor,
-                                    blend->rt[0].alpha_src_factor, alpha_swizzle);
-   dst_term = lp_build_blend_factor(&bld, dst, blend->rt[0].rgb_dst_factor,
-                                    blend->rt[0].alpha_dst_factor, alpha_swizzle);
+   src_term = lp_build_blend_factor(&bld, src, blend->rt[rt].rgb_src_factor,
+                                    blend->rt[rt].alpha_src_factor, alpha_swizzle);
+   dst_term = lp_build_blend_factor(&bld, dst, blend->rt[rt].rgb_dst_factor,
+                                    blend->rt[rt].alpha_dst_factor, alpha_swizzle);
 
    lp_build_name(src_term, "src_term");
    lp_build_name(dst_term, "dst_term");
 
-   if(blend->rt[0].rgb_func == blend->rt[0].alpha_func) {
-      return lp_build_blend_func(&bld.base, blend->rt[0].rgb_func, src_term, dst_term);
+   if(blend->rt[rt].rgb_func == blend->rt[rt].alpha_func) {
+      return lp_build_blend_func(&bld.base, blend->rt[rt].rgb_func, src_term, dst_term);
    }
    else {
       /* Seperate RGB / A functions */
@@ -352,8 +355,8 @@ lp_build_blend_aos(LLVMBuilderRef builder,
       LLVMValueRef rgb;
       LLVMValueRef alpha;
 
-      rgb   = lp_build_blend_func(&bld.base, blend->rt[0].rgb_func,   src_term, dst_term);
-      alpha = lp_build_blend_func(&bld.base, blend->rt[0].alpha_func, src_term, dst_term);
+      rgb   = lp_build_blend_func(&bld.base, blend->rt[rt].rgb_func,   src_term, dst_term);
+      alpha = lp_build_blend_func(&bld.base, blend->rt[rt].alpha_func, src_term, dst_term);
 
       return lp_build_blend_swizzle(&bld, rgb, alpha, LP_BUILD_BLEND_SWIZZLE_RGBA, alpha_swizzle);
    }
index b7523eb9c13ccef3aadb1ab2022ac0a68322e656..b9c7a6ceed63c8bf5708a16a8291ef9b46352618 100644 (file)
@@ -33,8 +33,8 @@
  * Blending in SoA is much faster than AoS, especially when separate rgb/alpha
  * factors/functions are used, since no channel masking/shuffling is necessary
  * and we can achieve the full throughput of the SIMD operations. Furthermore
- * the fragment shader output is also in SoA, so it fits nicely with the rest of
- * the fragment pipeline.
+ * the fragment shader output is also in SoA, so it fits nicely with the rest
+ * of the fragment pipeline.
  *
  * The drawback is that to be displayed the color buffer needs to be in AoS
  * layout, so we need to tile/untile the color buffer before/after rendering.
@@ -77,7 +77,7 @@
 
 
 /**
- * We may the same values several times, so we keep them here to avoid
+ * We may use the same values several times, so we keep them here to avoid
  * recomputing them. Also reusing the values allows us to do simplifications
  * that LLVM optimization passes wouldn't normally be able to do.
  */
@@ -98,16 +98,22 @@ struct lp_build_blend_soa_context
    /**
     * We store all factors in a table in order to eliminate redundant
     * multiplications later.
+    * Indexes are: factor[src,dst][color,term][r,g,b,a]
     */
    LLVMValueRef factor[2][2][4];
 
    /**
     * Table with all terms.
+    * Indexes are: term[src,dst][r,g,b,a]
     */
    LLVMValueRef term[2][4];
 };
 
 
+/**
+ * Build a single SOA blend factor for a color channel.
+ * \param i  the color channel in [0,3]
+ */
 static LLVMValueRef
 lp_build_blend_soa_factor(struct lp_build_blend_soa_context *bld,
                           unsigned factor, unsigned i)
@@ -191,6 +197,7 @@ lp_build_blend_soa_factor(struct lp_build_blend_soa_context *bld,
 
 /**
  * Generate blend code in SOA mode.
+ * \param rt  render target index (to index the blend / colormask state)
  * \param src  src/fragment color
  * \param dst  dst/framebuffer color
  * \param con  constant blend color
@@ -200,6 +207,7 @@ void
 lp_build_blend_soa(LLVMBuilderRef builder,
                    const struct pipe_blend_state *blend,
                    struct lp_type type,
+                   unsigned rt,
                    LLVMValueRef src[4],
                    LLVMValueRef dst[4],
                    LLVMValueRef con[4],
@@ -208,6 +216,8 @@ lp_build_blend_soa(LLVMBuilderRef builder,
    struct lp_build_blend_soa_context bld;
    unsigned i, j, k;
 
+   assert(rt < PIPE_MAX_COLOR_BUFS);
+
    /* Setup build context */
    memset(&bld, 0, sizeof bld);
    lp_build_context_init(&bld.base, builder, type);
@@ -218,7 +228,8 @@ lp_build_blend_soa(LLVMBuilderRef builder,
    }
 
    for (i = 0; i < 4; ++i) {
-      if (blend->rt[0].colormask & (1 << i)) {
+      /* only compute blending for the color channels enabled for writing */
+      if (blend->rt[rt].colormask & (1 << i)) {
          if (blend->logicop_enable) {
             if(!type.floating) {
                res[i] = lp_build_logicop(builder, blend->logicop_func, src[i], dst[i]);
@@ -226,10 +237,10 @@ lp_build_blend_soa(LLVMBuilderRef builder,
             else
                res[i] = dst[i];
          }
-         else if (blend->rt[0].blend_enable) {
-            unsigned src_factor = i < 3 ? blend->rt[0].rgb_src_factor : blend->rt[0].alpha_src_factor;
-            unsigned dst_factor = i < 3 ? blend->rt[0].rgb_dst_factor : blend->rt[0].alpha_dst_factor;
-            unsigned func = i < 3 ? blend->rt[0].rgb_func : blend->rt[0].alpha_func;
+         else if (blend->rt[rt].blend_enable) {
+            unsigned src_factor = i < 3 ? blend->rt[rt].rgb_src_factor : blend->rt[rt].alpha_src_factor;
+            unsigned dst_factor = i < 3 ? blend->rt[rt].rgb_dst_factor : blend->rt[rt].alpha_dst_factor;
+            unsigned func = i < 3 ? blend->rt[rt].rgb_func : blend->rt[rt].alpha_func;
             boolean func_commutative = lp_build_blend_func_commutative(func);
 
             /* It makes no sense to blend unless values are normalized */
@@ -269,9 +280,9 @@ lp_build_blend_soa(LLVMBuilderRef builder,
                   /* XXX special case these combos to work around an apparent
                    * bug in LLVM.
                    * This hack disables the check for multiplication by zero
-                   * in lp_bld_mul().  When we optimize away the multiplication,
-                   * something goes wrong during code generation and we segfault
-                   * at runtime.
+                   * in lp_bld_mul().  When we optimize away the
+                   * multiplication, something goes wrong during code
+                   * generation and we segfault at runtime.
                    */
                   LLVMValueRef zeroSave = bld.base.zero;
                   bld.base.zero = NULL;
@@ -287,7 +298,7 @@ lp_build_blend_soa(LLVMBuilderRef builder,
 
             /* See if this function has been previously applied */
             for(j = 0; j < i; ++j) {
-               unsigned prev_func = j < 3 ? blend->rt[0].rgb_func : blend->rt[0].alpha_func;
+               unsigned prev_func = j < 3 ? blend->rt[rt].rgb_func : blend->rt[rt].alpha_func;
                unsigned func_reverse = lp_build_blend_func_reverse(func, prev_func);
 
                if((!func_reverse &&
index 1b59a13c946353393b24595909be7cb4f5e6c544..e05bbe5011a40c79a227685552c78e90d9c5138a 100644 (file)
@@ -72,6 +72,7 @@
 #include "gallivm/lp_bld_const.h"
 #include "gallivm/lp_bld_logic.h"
 #include "gallivm/lp_bld_flow.h"
+#include "gallivm/lp_bld_intr.h"
 #include "gallivm/lp_bld_debug.h"
 #include "gallivm/lp_bld_swizzle.h"
 
@@ -445,6 +446,42 @@ get_s_shift_and_mask(const struct util_format_description *format_desc,
 }
 
 
+/**
+ * Perform the occlusion test and increase the counter.
+ * Test the depth mask. Add the number of channel which has none zero mask
+ * into the occlusion counter. e.g. maskvalue is {-1, -1, -1, -1}.
+ * The counter will add 4.
+ *
+ * \param type holds element type of the mask vector.
+ * \param maskvalue is the depth test mask.
+ * \param counter is a pointer of the uint32 counter.
+ */
+static void
+lp_build_occlusion_count(LLVMBuilderRef builder,
+                         struct lp_type type,
+                         LLVMValueRef maskvalue,
+                         LLVMValueRef counter)
+{
+   LLVMValueRef countmask = lp_build_const_int_vec(type, 1);
+   LLVMValueRef countv = LLVMBuildAnd(builder, maskvalue, countmask, "countv");
+   LLVMTypeRef i8v16 = LLVMVectorType(LLVMInt8Type(), 16);
+   LLVMValueRef counti = LLVMBuildBitCast(builder, countv, i8v16, "counti");
+   LLVMValueRef maskarray[4] = {
+      LLVMConstInt(LLVMInt32Type(), 0, 0),
+      LLVMConstInt(LLVMInt32Type(), 4, 0),
+      LLVMConstInt(LLVMInt32Type(), 8, 0),
+      LLVMConstInt(LLVMInt32Type(), 12, 0),
+   };
+   LLVMValueRef shufflemask = LLVMConstVector(maskarray, 4);
+   LLVMValueRef shufflev =  LLVMBuildShuffleVector(builder, counti, LLVMGetUndef(i8v16), shufflemask, "shufflev");
+   LLVMValueRef shuffle = LLVMBuildBitCast(builder, shufflev, LLVMInt32Type(), "shuffle");
+   LLVMValueRef count = lp_build_intrinsic_unary(builder, "llvm.ctpop.i32", LLVMInt32Type(), shuffle);
+   LLVMValueRef orig = LLVMBuildLoad(builder, counter, "orig");
+   LLVMValueRef incr = LLVMBuildAdd(builder, orig, count, "incr");
+   LLVMBuildStore(builder, incr, counter);
+}
+
+
 
 /**
  * Generate code for performing depth and/or stencil tests.
@@ -470,7 +507,8 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder,
                             LLVMValueRef stencil_refs[2],
                             LLVMValueRef z_src,
                             LLVMValueRef zs_dst_ptr,
-                            LLVMValueRef face)
+                            LLVMValueRef face,
+                            LLVMValueRef counter)
 {
    struct lp_build_context bld;
    struct lp_build_context sbld;
@@ -682,4 +720,7 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder,
 
    if (depth->enabled && stencil[0].enabled)
       lp_build_mask_update(mask, z_pass);
+
+   if (counter)
+      lp_build_occlusion_count(builder, type, mask->value, counter);
 }
index 27dd46b625daff4e2f607af521d6d7f1efa3da33..e257a5bd7d09c678361945e9d56a34b86fd3a60d 100644 (file)
@@ -60,7 +60,8 @@ lp_build_depth_stencil_test(LLVMBuilderRef builder,
                             LLVMValueRef stencil_refs[2],
                             LLVMValueRef zs_src,
                             LLVMValueRef zs_dst_ptr,
-                            LLVMValueRef facing);
+                            LLVMValueRef facing,
+                            LLVMValueRef counter);
 
 
 #endif /* !LP_BLD_DEPTH_H */
index 4e597b247960ac8f0692b108b68f69c669395f4e..de7fe7a17968be2de0737a1c02991a895478b563 100644 (file)
@@ -82,11 +82,7 @@ struct llvmpipe_context {
 
    unsigned dirty; /**< Mask of LP_NEW_x flags */
 
-   /* Counter for occlusion queries.  Note this supports overlapping
-    * queries.
-    */
-   uint64_t occlusion_count;
-   unsigned active_query_count;
+   int active_query_count;
 
    /** Mapped vertex buffers */
    ubyte *mapped_vbuffer[PIPE_MAX_ATTRIBS];
index ee81814361020bceca873a86ad4286eba14100c9..92fb2b3ee5b530477999e211c19aac21a59998a9 100644 (file)
@@ -39,16 +39,13 @@ st_print_current(void);
 #define DEBUG_PIPE      0x1
 #define DEBUG_TGSI      0x2
 #define DEBUG_TEX       0x4
-#define DEBUG_ASM       0x8
 #define DEBUG_SETUP     0x10
 #define DEBUG_RAST      0x20
 #define DEBUG_QUERY     0x40
 #define DEBUG_SCREEN    0x80
-#define DEBUG_JIT       0x100
 #define DEBUG_SHOW_TILES    0x200
 #define DEBUG_SHOW_SUBTILES 0x400
 #define DEBUG_COUNTERS      0x800
-#define DEBUG_NO_LLVM_OPT  0x1000
 
 
 #ifdef DEBUG
index 644b821957a2f5c7b40bae339bf62dfb30c97386..e1425435e1952dee46b7a8e3ef0d9a082c0f5278 100644 (file)
@@ -31,6 +31,7 @@
 
 
 #include "pipe/p_defines.h"
+#include "util/u_string.h"
 #include "draw/draw_context.h"
 #include "lp_flush.h"
 #include "lp_context.h"
@@ -71,25 +72,25 @@ llvmpipe_flush( struct pipe_context *pipe,
    }
 
    /* Enable to dump BMPs of the color/depth buffers each frame */
-#if 0
-   if (flags & PIPE_FLUSH_FRAME) {
-      static unsigned frame_no = 1;
-      char filename[256];
-      unsigned i;
-
-      for (i = 0; i < llvmpipe->framebuffer.nr_cbufs; i++) {
-        util_snprintf(filename, sizeof(filename), "cbuf%u_%u", i, frame_no);
-         debug_dump_surface_bmp(&llvmpipe->pipe, filename, llvmpipe->framebuffer.cbufs[0]);
-      }
+   if (0) {
+      if (flags & PIPE_FLUSH_FRAME) {
+         static unsigned frame_no = 1;
+         char filename[256];
+         unsigned i;
+
+         for (i = 0; i < llvmpipe->framebuffer.nr_cbufs; i++) {
+            util_snprintf(filename, sizeof(filename), "cbuf%u_%u", i, frame_no);
+            debug_dump_surface_bmp(&llvmpipe->pipe, filename, llvmpipe->framebuffer.cbufs[0]);
+         }
 
-      if (0) {
-         util_snprintf(filename, sizeof(filename), "zsbuf_%u", frame_no);
-         debug_dump_surface_bmp(&llvmpipe->pipe, filename, llvmpipe->framebuffer.zsbuf);
-      }
+         if (0) {
+            util_snprintf(filename, sizeof(filename), "zsbuf_%u", frame_no);
+            debug_dump_surface_bmp(&llvmpipe->pipe, filename, llvmpipe->framebuffer.zsbuf);
+         }
 
-      ++frame_no;
+         ++frame_no;
+      }
    }
-#endif
 }
 
 
index 30e206a2b42001d428ff5ed35fc2475d506766dd..23aa34ddec1c65d89aa0471816cb1ddcdd5a5346 100644 (file)
@@ -38,7 +38,7 @@
 #include "util/u_memory.h"
 #include "util/u_cpu_detect.h"
 #include "gallivm/lp_bld_init.h"
-#include "lp_debug.h"
+#include "gallivm/lp_bld_debug.h"
 #include "lp_screen.h"
 #include "gallivm/lp_bld_intr.h"
 #include "lp_jit.h"
@@ -151,9 +151,9 @@ lp_jit_init_globals(struct llvmpipe_screen *screen)
       screen->context_ptr_type = LLVMPointerType(context_type, 0);
    }
 
-#ifdef DEBUG
-   LLVMDumpModule(screen->module);
-#endif
+   if (gallivm_debug & GALLIVM_DEBUG_IR) {
+      LLVMDumpModule(screen->module);
+   }
 }
 
 
@@ -181,7 +181,7 @@ lp_jit_screen_init(struct llvmpipe_screen *screen)
    screen->pass = LLVMCreateFunctionPassManager(screen->provider);
    LLVMAddTargetData(screen->target, screen->pass);
 
-   if ((LP_DEBUG & DEBUG_NO_LLVM_OPT) == 0) {
+   if ((gallivm_debug & GALLIVM_DEBUG_NO_OPT) == 0) {
       /* These are the passes currently listed in llvm-c/Transforms/Scalar.h,
        * but there are more on SVN. */
       /* TODO: Add more passes */
@@ -196,6 +196,11 @@ lp_jit_screen_init(struct llvmpipe_screen *screen)
          LLVMAddInstructionCombiningPass(screen->pass);
       }
       LLVMAddGVNPass(screen->pass);
+   } else {
+      /* We need at least this pass to prevent the backends to fail in
+       * unexpected ways.
+       */
+      LLVMAddPromoteMemoryToRegisterPass(screen->pass);
    }
 
    lp_jit_init_globals(screen);
index 5d0268c68c4a5cdaf927a6d3746bd9d024e31a0b..8dee041301936278d920cf984e796dec55a6ef82 100644 (file)
@@ -146,13 +146,9 @@ enum {
    lp_build_struct_get(_builder, _ptr, LP_JIT_CTX_BLEND_COLOR, "blend_color")
 
 #define lp_jit_context_textures(_builder, _ptr) \
-   lp_build_struct_get_ptr(_builder, _ptr, LP_JIT_CONTEXT_TEXTURES, "textures")
+   lp_build_struct_get_ptr(_builder, _ptr, LP_JIT_CTX_TEXTURES, "textures")
 
 
-/** Indexes into jit_function[] array */
-#define RAST_WHOLE 0
-#define RAST_EDGE_TEST 1
-
 
 typedef void
 (*lp_jit_frag_func)(const struct lp_jit_context *context,
@@ -169,7 +165,38 @@ typedef void
                     const int32_t c3,
                     const int32_t *step1,
                     const int32_t *step2,
-                    const int32_t *step3);
+                    const int32_t *step3,
+                    uint32_t *counter);
+
+
+/** cast wrapper to avoid compiler warnings */
+static INLINE lp_jit_frag_func
+cast_voidptr_to_lp_jit_frag_func(void *v)
+{
+   union {
+      void *v;
+      lp_jit_frag_func f;
+   } u;
+   assert(sizeof(u.v) == sizeof(u.f));
+   u.v = v;
+   return u.f;
+}
+
+
+/** cast wrapper */
+static INLINE void *
+cast_lp_jit_frag_func_to_voidptr(lp_jit_frag_func f)
+{
+   union {
+      void *v;
+      lp_jit_frag_func f;
+   } u;
+   assert(sizeof(u.v) == sizeof(u.f));
+   u.f = f;
+   return u.v;
+}
+
+
 
 
 void
index 5554285425deb52ab50150a095929a181b989a73..c23e9839063d26be4d1dc91e5892a70139436b71 100644 (file)
@@ -1,6 +1,7 @@
 /**************************************************************************
  * 
  * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2010 VMware, Inc.
  * All Rights Reserved.
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
  * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.
- * IN NO EVENT SHALL TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
+ * 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.
  * 
  **************************************************************************/
 
-/* Author:
- *    Keith Whitwell <keith@tungstengraphics.com>
+/* Authors:
+ *    Keith Whitwell, Qicheng Christopher Li, Brian Paul
  */
 
 #include "draw/draw_context.h"
 #include "util/u_memory.h"
 #include "lp_context.h"
 #include "lp_query.h"
+#include "lp_rast.h"
+#include "lp_rast_priv.h"
 #include "lp_state.h"
-
-struct llvmpipe_query {
-   uint64_t start;
-   uint64_t end;
-};
+#include "lp_setup_context.h"
 
 
 static struct llvmpipe_query *llvmpipe_query( struct pipe_query *p )
@@ -51,15 +50,46 @@ static struct pipe_query *
 llvmpipe_create_query(struct pipe_context *pipe, 
                      unsigned type)
 {
+   struct llvmpipe_query *pq;
+
    assert(type == PIPE_QUERY_OCCLUSION_COUNTER);
-   return (struct pipe_query *)CALLOC_STRUCT( llvmpipe_query );
+
+   pq = CALLOC_STRUCT( llvmpipe_query );
+   if (pq) {
+      pipe_mutex_init(pq->mutex);
+   }
+
+   return (struct pipe_query *) pq;
 }
 
 
 static void
 llvmpipe_destroy_query(struct pipe_context *pipe, struct pipe_query *q)
 {
-   FREE(q);
+   struct llvmpipe_query *pq = llvmpipe_query(q);
+   pipe_mutex_destroy(pq->mutex);
+   FREE(pq);
+}
+
+
+static boolean
+llvmpipe_get_query_result(struct pipe_context *pipe, 
+                         struct pipe_query *q,
+                         boolean wait,
+                         uint64_t *result )
+{
+   struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
+   struct llvmpipe_query *pq = llvmpipe_query(q);
+
+   if (!pq->done) {
+      lp_setup_flush(llvmpipe->setup, TRUE);
+   }
+
+   if (pq->done) {
+      *result = pq->result;
+   }
+
+   return pq->done;
 }
 
 
@@ -67,9 +97,23 @@ static void
 llvmpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
-   struct llvmpipe_query *sq = llvmpipe_query(q);
-   
-   sq->start = llvmpipe->occlusion_count;
+   struct llvmpipe_query *pq = llvmpipe_query(q);
+
+   /* Check if the query is already in the scene.  If so, we need to
+    * flush the scene now.  Real apps shouldn't re-use a query in a
+    * frame of rendering.
+    */
+   if (pq->binned) {
+      struct pipe_fence_handle *fence;
+      pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE, &fence);
+      if (fence) {
+         pipe->screen->fence_finish(pipe->screen, fence, 0);
+         pipe->screen->fence_reference(pipe->screen, &fence, NULL);
+      }
+   }
+
+   lp_setup_begin_query(llvmpipe->setup, pq);
+
    llvmpipe->active_query_count++;
    llvmpipe->dirty |= LP_NEW_QUERY;
 }
@@ -79,26 +123,16 @@ static void
 llvmpipe_end_query(struct pipe_context *pipe, struct pipe_query *q)
 {
    struct llvmpipe_context *llvmpipe = llvmpipe_context( pipe );
-   struct llvmpipe_query *sq = llvmpipe_query(q);
+   struct llvmpipe_query *pq = llvmpipe_query(q);
 
+   lp_setup_end_query(llvmpipe->setup, pq);
+
+   assert(llvmpipe->active_query_count);
    llvmpipe->active_query_count--;
-   sq->end = llvmpipe->occlusion_count;
    llvmpipe->dirty |= LP_NEW_QUERY;
 }
 
 
-static boolean
-llvmpipe_get_query_result(struct pipe_context *pipe, 
-                         struct pipe_query *q,
-                         boolean wait,
-                         uint64_t *result )
-{
-   struct llvmpipe_query *sq = llvmpipe_query(q);
-   *result = sq->end - sq->start;
-   return TRUE;
-}
-
-
 void llvmpipe_init_query_funcs(struct llvmpipe_context *llvmpipe )
 {
    llvmpipe->pipe.create_query = llvmpipe_create_query;
index fa9fcd87139b74d77096073310d71470351ddf55..721c41cb5c956531497705b0a7af2ab45b84c723 100644 (file)
@@ -1,6 +1,7 @@
 /**************************************************************************
  * 
  * Copyright 2007 Tungsten Graphics, Inc., Cedar Park, Texas.
+ * Copyright 2010 VMware, Inc.
  * All Rights Reserved.
  * 
  * Permission is hereby granted, free of charge, to any person obtaining a
  * 
  **************************************************************************/
 
-/* Author:
- *    Keith Whitwell
+/* Authors:
+ *    Keith Whitwell, Qicheng Christopher Li, Brian Paul
  */
 
 #ifndef LP_QUERY_H
 #define LP_QUERY_H
 
+#include <limits.h>
+#include "os/os_thread.h"
+#include "lp_limits.h"
+
+
 struct llvmpipe_context;
+
+
+struct llvmpipe_query {
+   uint64_t count[LP_MAX_THREADS];  /**< a counter for each thread */
+   uint64_t result;                 /**< total of all counters */
+
+   pipe_mutex mutex;
+   unsigned num_tiles, tile_count;
+
+   boolean done;
+   boolean binned;  /**< has this query been binned in the scene? */
+};
+
+
 extern void llvmpipe_init_query_funcs(struct llvmpipe_context * );
 
 
index a00a592f2fe120d6fe4b7f272a1244f7eb02daef..6bb868bf1a93fa94214078ad42c24abd3ad1484a 100644 (file)
@@ -34,6 +34,7 @@
 #include "lp_debug.h"
 #include "lp_fence.h"
 #include "lp_perf.h"
+#include "lp_query.h"
 #include "lp_rast.h"
 #include "lp_rast_priv.h"
 #include "lp_tile_soa.h"
@@ -442,7 +443,7 @@ lp_rast_shade_tile(struct lp_rasterizer_task *task,
                                           color,
                                           depth,
                                           INT_MIN, INT_MIN, INT_MIN,
-                                          NULL, NULL, NULL );
+                                          NULL, NULL, NULL, &task->vis_counter);
       }
    }
 }
@@ -502,7 +503,8 @@ void lp_rast_shade_quads( struct lp_rasterizer_task *task,
                                         c1, c2, c3,
                                         inputs->step[0],
                                         inputs->step[1],
-                                        inputs->step[2]);
+                                        inputs->step[2],
+                                       &task->vis_counter);
 }
 
 
@@ -602,6 +604,60 @@ lp_rast_fence(struct lp_rasterizer_task *task,
 }
 
 
+/**
+ * Begin a new occlusion query.
+ * This is a bin command put in all bins.
+ * Called per thread.
+ */
+void
+lp_rast_begin_query(struct lp_rasterizer_task *task,
+                    const union lp_rast_cmd_arg arg)
+{
+   /* Reset the the per-task counter */
+   task->vis_counter = 0;
+}
+
+/**
+ * End the current occlusion query.
+ * This is a bin command put in all bins.
+ * Called per thread.
+ */
+void
+lp_rast_end_query(struct lp_rasterizer_task *task,
+                  const union lp_rast_cmd_arg arg)
+{
+   struct llvmpipe_query *pq = arg.query_obj;
+
+   pipe_mutex_lock(pq->mutex);
+   {
+      /* Accumulate the visible fragment counter from this tile in
+       * the query object.
+       */
+      pq->count[task->thread_index] += task->vis_counter;
+
+      /* check if this is the last tile in the scene */
+      pq->tile_count++;
+      if (pq->tile_count == pq->num_tiles) {
+         uint i;
+
+         /* sum the per-thread counters for the query */
+         pq->result = 0;
+         for (i = 0; i < LP_MAX_THREADS; i++) {
+            pq->result += pq->count[i];
+         }
+
+         /* reset counters (in case this query is re-used in the scene) */
+         memset(pq->count, 0, sizeof(pq->count));
+
+         pq->tile_count = 0;
+         pq->binned = FALSE;
+         pq->done = TRUE;
+      }
+   }
+   pipe_mutex_unlock(pq->mutex);
+}
+
 
 
 /**
@@ -650,6 +706,8 @@ static struct {
    RAST(set_state),
    RAST(store_color),
    RAST(fence),
+   RAST(begin_query),
+   RAST(end_query),
 };
 
 static void
@@ -956,3 +1014,5 @@ lp_rast_get_num_threads( struct lp_rasterizer *rast )
 {
    return rast->num_threads;
 }
+
+
index e2f6f926779e9a3a54b94941384414c77eab1540..881f475189ea30c10026ccc965e68235b481a088 100644 (file)
@@ -157,6 +157,7 @@ union lp_rast_cmd_arg {
    uint8_t clear_color[4];
    unsigned clear_zstencil;
    struct lp_fence *fence;
+   struct llvmpipe_query *query_obj;
 };
 
 
@@ -233,4 +234,11 @@ void lp_rast_store_color( struct lp_rasterizer_task *,
                           const union lp_rast_cmd_arg );
 
 
+void lp_rast_begin_query(struct lp_rasterizer_task *,
+                         const union lp_rast_cmd_arg );
+
+void lp_rast_end_query(struct lp_rasterizer_task *,
+                       const union lp_rast_cmd_arg );
+
+
 #endif
index 5884d12721e248385841676ff192168abf9e7c28..efc013ff3f04bc053826fe759fa7e8dc7b0d3970 100644 (file)
@@ -33,6 +33,7 @@
 #include "gallivm/lp_bld_debug.h"
 #include "lp_rast.h"
 #include "lp_scene.h"
+#include "lp_state.h"
 #include "lp_texture.h"
 #include "lp_tile_soa.h"
 #include "lp_limits.h"
@@ -59,6 +60,9 @@ struct lp_rasterizer_task
    /** "my" index */
    unsigned thread_index;
 
+   /* occlude counter for visiable pixels */
+   uint32_t vis_counter;
+
    pipe_semaphore work_ready;
    pipe_semaphore work_done;
 };
@@ -221,7 +225,7 @@ lp_rast_shade_quads_all( struct lp_rasterizer_task *task,
                                     color,
                                     depth,
                                     INT_MIN, INT_MIN, INT_MIN,
-                                    NULL, NULL, NULL );
+                                    NULL, NULL, NULL, &task->vis_counter );
 }
 
 
index 887f2dbad917b49c441c369d838ab545ed60f8f2..59e4c18ad0556eaab59aa800da61ba2bdab503d4 100644 (file)
@@ -30,7 +30,6 @@
 #include "util/u_memory.h"
 #include "util/u_inlines.h"
 #include "util/u_simple_list.h"
-#include "util/u_surface.h"
 #include "lp_scene.h"
 #include "lp_scene_queue.h"
 
@@ -210,25 +209,31 @@ lp_scene_reset(struct lp_scene *scene )
 
 
 
-void
+struct cmd_block *
 lp_bin_new_cmd_block( struct cmd_block_list *list )
 {
    struct cmd_block *block = MALLOC_STRUCT(cmd_block);
-   list->tail->next = block;
-   list->tail = block;
-   block->next = NULL;
-   block->count = 0;
+   if (block) {
+      list->tail->next = block;
+      list->tail = block;
+      block->next = NULL;
+      block->count = 0;
+   }
+   return block;
 }
 
 
-void
+struct data_block *
 lp_bin_new_data_block( struct data_block_list *list )
 {
    struct data_block *block = MALLOC_STRUCT(data_block);
-   list->tail->next = block;
-   list->tail = block;
-   block->next = NULL;
-   block->used = 0;
+   if (block) {
+      list->tail->next = block;
+      list->tail = block;
+      block->next = NULL;
+      block->used = 0;
+   }
+   return block;
 }
 
 
index 9467cd6f16d174d6273b8a7d28626bfbb327cd91..22d619fdbc341de0a728de937414767345575761 100644 (file)
@@ -158,9 +158,9 @@ boolean lp_scene_is_empty(struct lp_scene *scene );
 void lp_scene_reset(struct lp_scene *scene );
 
 
-void lp_bin_new_data_block( struct data_block_list *list );
+struct data_block *lp_bin_new_data_block( struct data_block_list *list );
 
-void lp_bin_new_cmd_block( struct cmd_block_list *list );
+struct cmd_block *lp_bin_new_cmd_block( struct cmd_block_list *list );
 
 unsigned lp_scene_data_size( const struct lp_scene *scene );
 
@@ -181,15 +181,19 @@ static INLINE void *
 lp_scene_alloc( struct lp_scene *scene, unsigned size)
 {
    struct data_block_list *list = &scene->data;
-
-   if (list->tail->used + size > DATA_BLOCK_SIZE) {
-      lp_bin_new_data_block( list );
+   struct data_block *tail = list->tail;
+
+   if (tail->used + size > DATA_BLOCK_SIZE) {
+      tail = lp_bin_new_data_block( list );
+      if (!tail) {
+         /* out of memory */
+         return NULL;
+      }
    }
 
    scene->scene_size += size;
 
    {
-      struct data_block *tail = list->tail;
       ubyte *data = tail->data + tail->used;
       tail->used += size;
       return data;
@@ -205,15 +209,17 @@ lp_scene_alloc_aligned( struct lp_scene *scene, unsigned size,
                        unsigned alignment )
 {
    struct data_block_list *list = &scene->data;
+   struct data_block *tail = list->tail;
 
-   if (list->tail->used + size + alignment - 1 > DATA_BLOCK_SIZE) {
-      lp_bin_new_data_block( list );
+   if (tail->used + size + alignment - 1 > DATA_BLOCK_SIZE) {
+      tail = lp_bin_new_data_block( list );
+      if (!tail)
+         return NULL;
    }
 
    scene->scene_size += size;
 
    {
-      struct data_block *tail = list->tail;
       ubyte *data = tail->data + tail->used;
       unsigned offset = (((uintptr_t)data + alignment - 1) & ~(alignment - 1)) - (uintptr_t)data;
       tail->used += offset + size;
@@ -257,16 +263,21 @@ lp_scene_bin_command( struct lp_scene *scene,
 {
    struct cmd_bin *bin = lp_scene_get_bin(scene, x, y);
    struct cmd_block_list *list = &bin->commands;
+   struct cmd_block *tail = list->tail;
 
    assert(x < scene->tiles_x);
    assert(y < scene->tiles_y);
 
-   if (list->tail->count == CMD_BLOCK_MAX) {
-      lp_bin_new_cmd_block( list );
+   if (tail->count == CMD_BLOCK_MAX) {
+      tail = lp_bin_new_cmd_block( list );
+      if (!tail) {
+         /* out of memory - simply ignore this command (for now) */
+         return;
+      }
+      assert(tail->count == 0);
    }
 
    {
-      struct cmd_block *tail = list->tail;
       unsigned i = tail->count;
       tail->cmd[i] = cmd;
       tail->arg[i] = arg;
index 5f50446f8463c469c3b1af02e7c905fb28aa2c88..cedc08e9292225eecf8e008455da4b1f44056017 100644 (file)
@@ -34,6 +34,7 @@
 #include "pipe/p_defines.h"
 #include "pipe/p_screen.h"
 
+#include "gallivm/lp_bld_limits.h"
 #include "lp_texture.h"
 #include "lp_fence.h"
 #include "lp_jit.h"
@@ -52,16 +53,13 @@ static const struct debug_named_value lp_debug_flags[] = {
    { "pipe",   DEBUG_PIPE },
    { "tgsi",   DEBUG_TGSI },
    { "tex",    DEBUG_TEX },
-   { "asm",    DEBUG_ASM },
    { "setup",  DEBUG_SETUP },
    { "rast",   DEBUG_RAST },
    { "query",  DEBUG_QUERY },
    { "screen", DEBUG_SCREEN },
-   { "jit",    DEBUG_JIT },
    { "show_tiles",    DEBUG_SHOW_TILES },
    { "show_subtiles", DEBUG_SHOW_SUBTILES },
    { "counters", DEBUG_COUNTERS },
-   { "nopt", DEBUG_NO_LLVM_OPT },
    {NULL, 0}
 };
 #endif
@@ -82,7 +80,7 @@ llvmpipe_get_name(struct pipe_screen *screen)
 
 
 static int
-llvmpipe_get_param(struct pipe_screen *screen, int param)
+llvmpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
@@ -107,6 +105,8 @@ llvmpipe_get_param(struct pipe_screen *screen, int param)
       return PIPE_MAX_COLOR_BUFS;
    case PIPE_CAP_OCCLUSION_QUERY:
       return 1;
+   case PIPE_CAP_TIMER_QUERY:
+      return 0;
    case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
       return 1;
    case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
@@ -124,7 +124,7 @@ llvmpipe_get_param(struct pipe_screen *screen, int param)
    case PIPE_CAP_BLEND_EQUATION_SEPARATE:
       return 1;
    case PIPE_CAP_INDEP_BLEND_ENABLE:
-      return 0;
+      return 1;
    case PIPE_CAP_INDEP_BLEND_FUNC:
       return 0;
    case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
@@ -133,14 +133,44 @@ llvmpipe_get_param(struct pipe_screen *screen, int param)
    case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
    case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
       return 0;
+   case PIPE_CAP_MAX_VS_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_TEX_INDIRECTIONS:
+   case PIPE_CAP_MAX_FS_TEX_INDIRECTIONS:
+      /* There is no limit in number of instructions beyond available memory */
+      return 32768;
+   case PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH:
+   case PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH:
+      return LP_MAX_TGSI_NESTING;
+   case PIPE_CAP_MAX_VS_INPUTS:
+   case PIPE_CAP_MAX_FS_INPUTS:
+      return PIPE_MAX_ATTRIBS;
+   case PIPE_CAP_MAX_FS_CONSTS:
+   case PIPE_CAP_MAX_VS_CONSTS:
+      /* There is no limit in number of constants beyond available memory */
+      return 32768;
+   case PIPE_CAP_MAX_VS_TEMPS:
+   case PIPE_CAP_MAX_FS_TEMPS:
+      return LP_MAX_TGSI_TEMPS;
+   case PIPE_CAP_MAX_VS_ADDRS:
+   case PIPE_CAP_MAX_FS_ADDRS:
+      return LP_MAX_TGSI_ADDRS;
+   case PIPE_CAP_MAX_VS_PREDS:
+   case PIPE_CAP_MAX_FS_PREDS:
+      return LP_MAX_TGSI_PREDS;
    default:
+      assert(0);
       return 0;
    }
 }
 
 
 static float
-llvmpipe_get_paramf(struct pipe_screen *screen, int param)
+llvmpipe_get_paramf(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_LINE_WIDTH:
@@ -155,7 +185,13 @@ llvmpipe_get_paramf(struct pipe_screen *screen, int param)
       return 16.0; /* not actually signficant at this time */
    case PIPE_CAP_MAX_TEXTURE_LOD_BIAS:
       return 16.0; /* arbitrary */
+   case PIPE_CAP_GUARD_BAND_LEFT:
+   case PIPE_CAP_GUARD_BAND_TOP:
+   case PIPE_CAP_GUARD_BAND_RIGHT:
+   case PIPE_CAP_GUARD_BAND_BOTTOM:
+      return 0.0;
    default:
+      assert(0);
       return 0;
    }
 }
@@ -270,7 +306,16 @@ llvmpipe_destroy_screen( struct pipe_screen *_screen )
 struct pipe_screen *
 llvmpipe_create_screen(struct sw_winsys *winsys)
 {
-   struct llvmpipe_screen *screen = CALLOC_STRUCT(llvmpipe_screen);
+   struct llvmpipe_screen *screen;
+
+#ifdef PIPE_ARCH_X86
+   /* require SSE2 due to LLVM PR6960. */
+   util_cpu_detect();
+   if (!util_cpu_caps.has_sse2)
+       return NULL;
+#endif
+
+   screen = CALLOC_STRUCT(llvmpipe_screen);
 
 #ifdef DEBUG
    LP_DEBUG = debug_get_flags_option("LP_DEBUG", lp_debug_flags, 0 );
index 4f394326103f20ae788b53a64346fd18bf1e6cb4..eb40f6823f5f946be6fa686022f27a96abf7a304 100644 (file)
@@ -60,10 +60,9 @@ struct llvmpipe_screen
 
    unsigned num_threads;
 
-   /* Increments whenever textures are modified.  Contexts can track
-    * this.
+   /* Increments whenever textures are modified.  Contexts can track this.
     */
-   unsigned timestamp;          
+   unsigned timestamp;
 };
 
 
index 1a2cd55b164f4fd081b84987beca0520c36d381b..656e6cc38a61dea2aae5ff73b9e8c317a22ef2ee 100644 (file)
  * lp_setup_flush().
  */
 
+#include <limits.h>
+
 #include "pipe/p_defines.h"
 #include "util/u_framebuffer.h"
 #include "util/u_inlines.h"
 #include "util/u_memory.h"
 #include "util/u_pack_color.h"
-#include "util/u_surface.h"
 #include "lp_context.h"
 #include "lp_scene.h"
 #include "lp_scene_queue.h"
 #include "lp_texture.h"
 #include "lp_debug.h"
 #include "lp_fence.h"
+#include "lp_query.h"
 #include "lp_rast.h"
 #include "lp_setup_context.h"
 #include "lp_screen.h"
@@ -418,7 +420,8 @@ lp_setup_set_fs_functions( struct lp_setup_context *setup,
                            lp_jit_frag_func jit_function1,
                            boolean opaque )
 {
-   LP_DBG(DEBUG_SETUP, "%s %p\n", __FUNCTION__, (void *) jit_function0);
+   LP_DBG(DEBUG_SETUP, "%s %p\n", __FUNCTION__,
+          cast_lp_jit_frag_func_to_voidptr(jit_function0));
    /* FIXME: reference count */
 
    setup->fs.current.jit_function[0] = jit_function0;
@@ -644,16 +647,19 @@ lp_setup_update_state( struct lp_setup_context *setup )
 
       stored = lp_scene_alloc_aligned(scene, 4 * 16, 16);
 
-      /* smear each blend color component across 16 ubyte elements */
-      for (i = 0; i < 4; ++i) {
-         uint8_t c = float_to_ubyte(setup->blend_color.current.color[i]);
-         for (j = 0; j < 16; ++j)
-            stored[i*16 + j] = c;
-      }
+      if (stored) {
+         /* smear each blend color component across 16 ubyte elements */
+         for (i = 0; i < 4; ++i) {
+            uint8_t c = float_to_ubyte(setup->blend_color.current.color[i]);
+            for (j = 0; j < 16; ++j)
+               stored[i*16 + j] = c;
+         }
 
-      setup->blend_color.stored = stored;
+         setup->blend_color.stored = stored;
+
+         setup->fs.current.jit_context.blend_color = setup->blend_color.stored;
+      }
 
-      setup->fs.current.jit_context.blend_color = setup->blend_color.stored;
       setup->dirty |= LP_SETUP_NEW_FS;
    }
 
@@ -662,17 +668,19 @@ lp_setup_update_state( struct lp_setup_context *setup )
 
       stored = lp_scene_alloc_aligned(scene, 4 * sizeof(int32_t), 16);
 
-      stored[0] = (float) setup->scissor.current.minx;
-      stored[1] = (float) setup->scissor.current.miny;
-      stored[2] = (float) setup->scissor.current.maxx;
-      stored[3] = (float) setup->scissor.current.maxy;
+      if (stored) {
+         stored[0] = (float) setup->scissor.current.minx;
+         stored[1] = (float) setup->scissor.current.miny;
+         stored[2] = (float) setup->scissor.current.maxx;
+         stored[3] = (float) setup->scissor.current.maxy;
 
-      setup->scissor.stored = stored;
+         setup->scissor.stored = stored;
 
-      setup->fs.current.jit_context.scissor_xmin = stored[0];
-      setup->fs.current.jit_context.scissor_ymin = stored[1];
-      setup->fs.current.jit_context.scissor_xmax = stored[2];
-      setup->fs.current.jit_context.scissor_ymax = stored[3];
+         setup->fs.current.jit_context.scissor_xmin = stored[0];
+         setup->fs.current.jit_context.scissor_ymin = stored[1];
+         setup->fs.current.jit_context.scissor_xmax = stored[2];
+         setup->fs.current.jit_context.scissor_ymax = stored[3];
+      }
 
       setup->dirty |= LP_SETUP_NEW_FS;
    }
@@ -852,3 +860,40 @@ fail:
    return NULL;
 }
 
+
+/**
+ * Put a BeginQuery command into all bins.
+ */
+void
+lp_setup_begin_query(struct lp_setup_context *setup,
+                     struct llvmpipe_query *pq)
+{
+   struct lp_scene * scene = lp_setup_get_current_scene(setup);
+   union lp_rast_cmd_arg cmd_arg;
+
+   /* init the query to its beginning state */
+   pq->done = FALSE;
+   pq->tile_count = 0;
+   pq->num_tiles = scene->tiles_x * scene->tiles_y;
+   assert(pq->num_tiles > 0);
+
+   memset(pq->count, 0, sizeof(pq->count));  /* reset all counters */
+
+   cmd_arg.query_obj = pq;
+   lp_scene_bin_everywhere(scene, lp_rast_begin_query, cmd_arg);
+   pq->binned = TRUE;
+}
+
+
+/**
+ * Put an EndQuery command into all bins.
+ */
+void
+lp_setup_end_query(struct lp_setup_context *setup, struct llvmpipe_query *pq)
+{
+   struct lp_scene * scene = lp_setup_get_current_scene(setup);
+   union lp_rast_cmd_arg cmd_arg;
+
+   cmd_arg.query_obj = pq;
+   lp_scene_bin_everywhere(scene, lp_rast_end_query, cmd_arg);
+}
index e10d37d8d0430089cddc051c6c675aee100e1dc3..10db03b9c69798d738a7f8ea7684a7fa5347d3d5 100644 (file)
@@ -53,12 +53,15 @@ struct lp_shader_input {
 };
 
 struct pipe_resource;
+struct pipe_query;
 struct pipe_surface;
 struct pipe_blend_color;
 struct pipe_screen;
 struct pipe_framebuffer_state;
 struct lp_fragment_shader;
 struct lp_jit_context;
+struct llvmpipe_query;
+
 
 struct lp_setup_context *
 lp_setup_create( struct pipe_context *pipe,
@@ -140,5 +143,12 @@ void
 lp_setup_set_vertex_info( struct lp_setup_context *setup, 
                           struct vertex_info *info );
 
+void
+lp_setup_begin_query(struct lp_setup_context *setup,
+                     struct llvmpipe_query *pq);
+
+void
+lp_setup_end_query(struct lp_setup_context *setup,
+                   struct llvmpipe_query *pq);
 
 #endif
index f8a581657335d525bc0da81be4ceceff06e62c65..306cb6e27d2895dcb8a667ae332a4441549fbd54 100644 (file)
@@ -205,8 +205,14 @@ static void setup_tri_coefficients( struct lp_setup_context *setup,
 
       switch (setup->fs.input[slot].interp) {
       case LP_INTERP_CONSTANT:
-         for (i = 0; i < NUM_CHANNELS; i++)
-            constant_coef(setup, tri, slot+1, v3[vert_attr][i], i);
+         if (setup->flatshade_first) {
+            for (i = 0; i < NUM_CHANNELS; i++)
+               constant_coef(setup, tri, slot+1, v1[vert_attr][i], i);
+         }
+         else {
+            for (i = 0; i < NUM_CHANNELS; i++)
+               constant_coef(setup, tri, slot+1, v3[vert_attr][i], i);
+         }
          break;
 
       case LP_INTERP_LINEAR:
@@ -665,14 +671,14 @@ void
 lp_setup_choose_triangle( struct lp_setup_context *setup )
 {
    switch (setup->cullmode) {
-   case PIPE_WINDING_NONE:
+   case PIPE_FACE_NONE:
       setup->triangle = triangle_both;
       break;
-   case PIPE_WINDING_CCW:
-      setup->triangle = triangle_cw;
+   case PIPE_FACE_BACK:
+      setup->triangle = setup->ccw_is_frontface ? triangle_ccw : triangle_cw;
       break;
-   case PIPE_WINDING_CW:
-      setup->triangle = triangle_ccw;
+   case PIPE_FACE_FRONT:
+      setup->triangle = setup->ccw_is_frontface ? triangle_cw : triangle_ccw;
       break;
    default:
       setup->triangle = triangle_nop;
index 5d3122e8ba23ef4a6995f429f13ff6fc6ce44c0f..f6a424f25a833575480baac47fcecef618fe8d77 100644 (file)
@@ -131,11 +131,12 @@ static INLINE const_float4_ptr get_vert( const void *vertex_buffer,
  * draw elements / indexed primitives
  */
 static void
-lp_setup_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
+lp_setup_draw_elements(struct vbuf_render *vbr, const ushort *indices, uint nr)
 {
    struct lp_setup_context *setup = lp_setup_context(vbr);
    const unsigned stride = setup->vertex_info->size * sizeof(float);
    const void *vertex_buffer = setup->vertex_buffer;
+   const boolean flatshade_first = setup->flatshade_first;
    unsigned i;
 
    lp_setup_update_state(setup);
@@ -178,35 +179,28 @@ lp_setup_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
       break;
 
    case PIPE_PRIM_TRIANGLES:
-      if (setup->flatshade_first) {
-         for (i = 2; i < nr; i += 3) {
-            setup->triangle( setup,
-                             get_vert(vertex_buffer, indices[i-1], stride),
-                             get_vert(vertex_buffer, indices[i-0], stride),
-                             get_vert(vertex_buffer, indices[i-2], stride) );
-         }
-      }
-      else {
-         for (i = 2; i < nr; i += 3) {
-            setup->triangle( setup,
-                             get_vert(vertex_buffer, indices[i-2], stride),
-                             get_vert(vertex_buffer, indices[i-1], stride),
-                             get_vert(vertex_buffer, indices[i-0], stride) );
-         }
+      for (i = 2; i < nr; i += 3) {
+         setup->triangle( setup,
+                          get_vert(vertex_buffer, indices[i-2], stride),
+                          get_vert(vertex_buffer, indices[i-1], stride),
+                          get_vert(vertex_buffer, indices[i-0], stride) );
       }
       break;
 
    case PIPE_PRIM_TRIANGLE_STRIP:
-      if (setup->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i += 1) {
+            /* emit first triangle vertex as first triangle vertex */
             setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-2], stride),
                              get_vert(vertex_buffer, indices[i+(i&1)-1], stride),
-                             get_vert(vertex_buffer, indices[i-(i&1)], stride),
-                             get_vert(vertex_buffer, indices[i-2], stride) );
+                             get_vert(vertex_buffer, indices[i-(i&1)], stride) );
+
          }
       }
       else {
          for (i = 2; i < nr; i += 1) {
+            /* emit last triangle vertex as last triangle vertex */
             setup->triangle( setup,
                              get_vert(vertex_buffer, indices[i+(i&1)-2], stride),
                              get_vert(vertex_buffer, indices[i-(i&1)-1], stride),
@@ -216,16 +210,18 @@ lp_setup_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
       break;
 
    case PIPE_PRIM_TRIANGLE_FAN:
-      if (setup->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i += 1) {
+            /* emit first non-spoke vertex as first vertex */
             setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-1], stride),
                              get_vert(vertex_buffer, indices[i-0], stride),
-                             get_vert(vertex_buffer, indices[0], stride),
-                             get_vert(vertex_buffer, indices[i-1], stride) );
+                             get_vert(vertex_buffer, indices[0], stride) );
          }
       }
       else {
          for (i = 2; i < nr; i += 1) {
+            /* emit last non-spoke vertex as last vertex */
             setup->triangle( setup,
                              get_vert(vertex_buffer, indices[0], stride),
                              get_vert(vertex_buffer, indices[i-1], stride),
@@ -235,43 +231,88 @@ lp_setup_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
       break;
 
    case PIPE_PRIM_QUADS:
-      for (i = 3; i < nr; i += 4) {
-         setup->triangle( setup,
+      /* GL quads don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-0], stride),
+                             get_vert(vertex_buffer, indices[i-3], stride),
+                             get_vert(vertex_buffer, indices[i-2], stride) );
+
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-0], stride),
+                             get_vert(vertex_buffer, indices[i-2], stride),
+                             get_vert(vertex_buffer, indices[i-1], stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            setup->triangle( setup,
                           get_vert(vertex_buffer, indices[i-3], stride),
                           get_vert(vertex_buffer, indices[i-2], stride),
                           get_vert(vertex_buffer, indices[i-0], stride) );
 
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, indices[i-2], stride),
-                          get_vert(vertex_buffer, indices[i-1], stride),
-                          get_vert(vertex_buffer, indices[i-0], stride) );
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-2], stride),
+                             get_vert(vertex_buffer, indices[i-1], stride),
+                             get_vert(vertex_buffer, indices[i-0], stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_QUAD_STRIP:
-      for (i = 3; i < nr; i += 2) {
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, indices[i-3], stride),
-                          get_vert(vertex_buffer, indices[i-2], stride),
-                          get_vert(vertex_buffer, indices[i-0], stride) );
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, indices[i-1], stride),
-                          get_vert(vertex_buffer, indices[i-3], stride),
-                          get_vert(vertex_buffer, indices[i-0], stride) );
+      /* GL quad strips don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-0], stride),
+                             get_vert(vertex_buffer, indices[i-3], stride),
+                             get_vert(vertex_buffer, indices[i-2], stride) );
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-0], stride),
+                             get_vert(vertex_buffer, indices[i-1], stride),
+                             get_vert(vertex_buffer, indices[i-3], stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-3], stride),
+                             get_vert(vertex_buffer, indices[i-2], stride),
+                             get_vert(vertex_buffer, indices[i-0], stride) );
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-1], stride),
+                             get_vert(vertex_buffer, indices[i-3], stride),
+                             get_vert(vertex_buffer, indices[i-0], stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_POLYGON:
       /* Almost same as tri fan but the _first_ vertex specifies the flat
-       * shading color.  Note that the first polygon vertex is passed as
-       * the last triangle vertex here.
-       * flatshade_first state makes no difference.
+       * shading color.
        */
-      for (i = 2; i < nr; i += 1) {
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, indices[i-0], stride),
-                          get_vert(vertex_buffer, indices[i-1], stride),
-                          get_vert(vertex_buffer, indices[0], stride) );
+      if (flatshade_first) { 
+         /* emit first polygon  vertex as first triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[0], stride),
+                             get_vert(vertex_buffer, indices[i-1], stride),
+                             get_vert(vertex_buffer, indices[i-0], stride) );
+         }
+      }
+      else {
+         /* emit first polygon  vertex as last triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, indices[i-1], stride),
+                             get_vert(vertex_buffer, indices[i-0], stride),
+                             get_vert(vertex_buffer, indices[0], stride) );
+         }
       }
       break;
 
@@ -292,6 +333,7 @@ lp_setup_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
    const unsigned stride = setup->vertex_info->size * sizeof(float);
    const void *vertex_buffer =
       (void *) get_vert(setup->vertex_buffer, start, stride);
+   const boolean flatshade_first = setup->flatshade_first;
    unsigned i;
 
    lp_setup_update_state(setup);
@@ -334,35 +376,27 @@ lp_setup_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
       break;
 
    case PIPE_PRIM_TRIANGLES:
-      if (setup->flatshade_first) {
-         for (i = 2; i < nr; i += 3) {
-            setup->triangle( setup,
-                             get_vert(vertex_buffer, i-1, stride),
-                             get_vert(vertex_buffer, i-0, stride),
-                             get_vert(vertex_buffer, i-2, stride) );
-         }
-      }
-      else {
-         for (i = 2; i < nr; i += 3) {
-            setup->triangle( setup,
-                             get_vert(vertex_buffer, i-2, stride),
-                             get_vert(vertex_buffer, i-1, stride),
-                             get_vert(vertex_buffer, i-0, stride) );
-         }
+      for (i = 2; i < nr; i += 3) {
+         setup->triangle( setup,
+                          get_vert(vertex_buffer, i-2, stride),
+                          get_vert(vertex_buffer, i-1, stride),
+                          get_vert(vertex_buffer, i-0, stride) );
       }
       break;
 
    case PIPE_PRIM_TRIANGLE_STRIP:
-      if (setup->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i++) {
+            /* emit first triangle vertex as first triangle vertex */
             setup->triangle( setup,
+                             get_vert(vertex_buffer, i-2, stride),
                              get_vert(vertex_buffer, i+(i&1)-1, stride),
-                             get_vert(vertex_buffer, i-(i&1), stride),
-                             get_vert(vertex_buffer, i-2, stride) );
+                             get_vert(vertex_buffer, i-(i&1), stride) );
          }
       }
       else {
          for (i = 2; i < nr; i++) {
+            /* emit last triangle vertex as last triangle vertex */
             setup->triangle( setup,
                              get_vert(vertex_buffer, i+(i&1)-2, stride),
                              get_vert(vertex_buffer, i-(i&1)-1, stride),
@@ -372,16 +406,18 @@ lp_setup_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
       break;
 
    case PIPE_PRIM_TRIANGLE_FAN:
-      if (setup->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i += 1) {
+            /* emit first non-spoke vertex as first vertex */
             setup->triangle( setup,
+                             get_vert(vertex_buffer, i-1, stride),
                              get_vert(vertex_buffer, i-0, stride),
-                             get_vert(vertex_buffer, 0, stride),
-                             get_vert(vertex_buffer, i-1, stride) );
+                             get_vert(vertex_buffer, 0, stride)  );
          }
       }
       else {
          for (i = 2; i < nr; i += 1) {
+            /* emit last non-spoke vertex as last vertex */
             setup->triangle( setup,
                              get_vert(vertex_buffer, 0, stride),
                              get_vert(vertex_buffer, i-1, stride),
@@ -391,42 +427,86 @@ lp_setup_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
       break;
 
    case PIPE_PRIM_QUADS:
-      for (i = 3; i < nr; i += 4) {
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, i-3, stride),
-                          get_vert(vertex_buffer, i-2, stride),
-                          get_vert(vertex_buffer, i-0, stride) );
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, i-2, stride),
-                          get_vert(vertex_buffer, i-1, stride),
-                          get_vert(vertex_buffer, i-0, stride) );
+      /* GL quads don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-0, stride),
+                             get_vert(vertex_buffer, i-3, stride),
+                             get_vert(vertex_buffer, i-2, stride) );
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-0, stride),
+                             get_vert(vertex_buffer, i-2, stride),
+                             get_vert(vertex_buffer, i-1, stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-3, stride),
+                             get_vert(vertex_buffer, i-2, stride),
+                             get_vert(vertex_buffer, i-0, stride) );
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-2, stride),
+                             get_vert(vertex_buffer, i-1, stride),
+                             get_vert(vertex_buffer, i-0, stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_QUAD_STRIP:
-      for (i = 3; i < nr; i += 2) {
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, i-3, stride),
-                          get_vert(vertex_buffer, i-2, stride),
-                          get_vert(vertex_buffer, i-0, stride) );
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, i-1, stride),
-                          get_vert(vertex_buffer, i-3, stride),
-                          get_vert(vertex_buffer, i-0, stride) );
+      /* GL quad strips don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-0, stride),
+                             get_vert(vertex_buffer, i-3, stride),
+                             get_vert(vertex_buffer, i-2, stride) );
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-0, stride),
+                             get_vert(vertex_buffer, i-1, stride),
+                             get_vert(vertex_buffer, i-3, stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-3, stride),
+                             get_vert(vertex_buffer, i-2, stride),
+                             get_vert(vertex_buffer, i-0, stride) );
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-1, stride),
+                             get_vert(vertex_buffer, i-3, stride),
+                             get_vert(vertex_buffer, i-0, stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_POLYGON:
       /* Almost same as tri fan but the _first_ vertex specifies the flat
-       * shading color.  Note that the first polygon vertex is passed as
-       * the last triangle vertex here.
-       * flatshade_first state makes no difference.
+       * shading color.
        */
-      for (i = 2; i < nr; i += 1) {
-         setup->triangle( setup,
-                          get_vert(vertex_buffer, i-1, stride),
-                          get_vert(vertex_buffer, i-0, stride),
-                          get_vert(vertex_buffer, 0, stride) );
+      if (flatshade_first) { 
+         /* emit first polygon  vertex as first triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, 0, stride),
+                             get_vert(vertex_buffer, i-1, stride),
+                             get_vert(vertex_buffer, i-0, stride) );
+         }
+      }
+      else {
+         /* emit first polygon  vertex as last triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            setup->triangle( setup,
+                             get_vert(vertex_buffer, i-1, stride),
+                             get_vert(vertex_buffer, i-0, stride),
+                             get_vert(vertex_buffer, 0, stride) );
+         }
       }
       break;
 
@@ -463,7 +543,7 @@ lp_setup_init_vbuf(struct lp_setup_context *setup)
    setup->base.map_vertices = lp_setup_map_vertices;
    setup->base.unmap_vertices = lp_setup_unmap_vertices;
    setup->base.set_primitive = lp_setup_set_primitive;
-   setup->base.draw = lp_setup_draw;
+   setup->base.draw_elements = lp_setup_draw_elements;
    setup->base.draw_arrays = lp_setup_draw_arrays;
    setup->base.release_vertices = lp_setup_release_vertices;
    setup->base.destroy = lp_setup_vbuf_destroy;
index 18143807c915136af46c8b588a5428d0b7d1808f..bae5de0cb353566efd1b7c8a9df885c70045ace8 100644 (file)
@@ -63,6 +63,11 @@ struct llvmpipe_context;
 struct lp_fragment_shader;
 
 
+/** Indexes into jit_function[] array */
+#define RAST_WHOLE 0
+#define RAST_EDGE_TEST 1
+
+
 struct lp_fragment_shader_variant_key
 {
    struct pipe_depth_state depth;
@@ -73,6 +78,7 @@ struct lp_fragment_shader_variant_key
    unsigned nr_cbufs:8;
    unsigned flatshade:1;
    unsigned scissor:1;
+   unsigned occlusion_count:1;
 
    struct {
       ubyte colormask;
@@ -86,6 +92,8 @@ struct lp_fragment_shader_variant
 {
    struct lp_fragment_shader_variant_key key;
 
+   boolean opaque;
+
    LLVMValueRef function[2];
 
    lp_jit_frag_func jit_function[2];
index 113d77ab7880003f73c9e856b5a8959f96b65dbb..2edfcb28ce6dafb0baa70426ba5d43256357f369 100644 (file)
@@ -163,7 +163,8 @@ void llvmpipe_update_derived( struct llvmpipe_context *llvmpipe )
                           LP_NEW_DEPTH_STENCIL_ALPHA |
                           LP_NEW_RASTERIZER |
                           LP_NEW_SAMPLER |
-                          LP_NEW_SAMPLER_VIEW))
+                          LP_NEW_SAMPLER_VIEW |
+                          LP_NEW_QUERY))
       llvmpipe_update_fs( llvmpipe );
 
    if (llvmpipe->dirty & LP_NEW_BLEND_COLOR)
index 5f861d6ca4d1479b9b9063a2ea513f1da91b31c4..9ef78e6badf61fa56462c9917f096041437f84d1 100644 (file)
@@ -87,7 +87,6 @@
 #include "lp_bld_depth.h"
 #include "lp_bld_interp.h"
 #include "lp_context.h"
-#include "lp_debug.h"
 #include "lp_perf.h"
 #include "lp_screen.h"
 #include "lp_setup.h"
@@ -148,7 +147,8 @@ generate_depth_stencil(LLVMBuilderRef builder,
                        LLVMValueRef stencil_refs[2],
                        LLVMValueRef src,
                        LLVMValueRef dst_ptr,
-                       LLVMValueRef facing)
+                       LLVMValueRef facing,
+                       LLVMValueRef counter)
 {
    const struct util_format_description *format_desc;
    struct lp_type dst_type;
@@ -195,7 +195,8 @@ generate_depth_stencil(LLVMBuilderRef builder,
                                stencil_refs,
                                src,
                                dst_ptr,
-                               facing);
+                               facing,
+                               counter);
 }
 
 
@@ -400,7 +401,8 @@ generate_fs(struct llvmpipe_context *lp,
             LLVMValueRef c2,
             LLVMValueRef step0_ptr,
             LLVMValueRef step1_ptr,
-            LLVMValueRef step2_ptr)
+            LLVMValueRef step2_ptr,
+            LLVMValueRef counter)
 {
    const struct tgsi_token *tokens = shader->base.tokens;
    LLVMTypeRef vec_type;
@@ -466,12 +468,13 @@ generate_fs(struct llvmpipe_context *lp,
    if (early_depth_stencil_test)
       generate_depth_stencil(builder, key,
                              type, &mask,
-                             stencil_refs, z, depth_ptr, facing);
+                             stencil_refs, z, depth_ptr, facing, counter);
 
    lp_build_tgsi_soa(builder, tokens, type, &mask,
                      consts_ptr, interp->pos, interp->inputs,
                      outputs, sampler, &shader->info);
 
+   /* loop over fragment shader outputs/results */
    for (attrib = 0; attrib < shader->info.num_outputs; ++attrib) {
       for(chan = 0; chan < NUM_CHANNELS; ++chan) {
          if(outputs[attrib][chan]) {
@@ -513,7 +516,7 @@ generate_fs(struct llvmpipe_context *lp,
    if (!early_depth_stencil_test)
       generate_depth_stencil(builder, key,
                              type, &mask,
-                             stencil_refs, z, depth_ptr, facing);
+                             stencil_refs, z, depth_ptr, facing, counter);
 
    lp_build_mask_end(&mask);
 
@@ -528,9 +531,16 @@ generate_fs(struct llvmpipe_context *lp,
 
 /**
  * Generate color blending and color output.
+ * \param rt  the render target index (to index blend, colormask state)
+ * \param type  the pixel color type
+ * \param context_ptr  pointer to the runtime JIT context
+ * \param mask  execution mask (active fragment/pixel mask)
+ * \param src  colors from the fragment shader
+ * \param dst_ptr  the destination color buffer pointer
  */
 static void
 generate_blend(const struct pipe_blend_state *blend,
+               unsigned rt,
                LLVMBuilderRef builder,
                struct lp_type type,
                LLVMValueRef context_ptr,
@@ -561,6 +571,7 @@ generate_blend(const struct pipe_blend_state *blend,
    const_ptr = LLVMBuildBitCast(builder, const_ptr,
                                 LLVMPointerType(vec_type, 0), "");
 
+   /* load constant blend color and colors from the dest color buffer */
    for(chan = 0; chan < 4; ++chan) {
       LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), chan, 0);
       con[chan] = LLVMBuildLoad(builder, LLVMBuildGEP(builder, const_ptr, &index, 1, ""), "");
@@ -571,10 +582,12 @@ generate_blend(const struct pipe_blend_state *blend,
       lp_build_name(dst[chan], "dst.%c", "rgba"[chan]);
    }
 
-   lp_build_blend_soa(builder, blend, type, src, dst, con, res);
+   /* do blend */
+   lp_build_blend_soa(builder, blend, type, rt, src, dst, con, res);
 
+   /* store results to color buffer */
    for(chan = 0; chan < 4; ++chan) {
-      if(blend->rt[0].colormask & (1 << chan)) {
+      if(blend->rt[rt].colormask & (1 << chan)) {
          LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), chan, 0);
          lp_build_name(res[chan], "res.%c", "rgba"[chan]);
          res[chan] = lp_build_select(&bld, mask, res[chan], dst[chan]);
@@ -587,20 +600,6 @@ generate_blend(const struct pipe_blend_state *blend,
 }
 
 
-/** casting function to avoid compiler warnings */
-static lp_jit_frag_func
-cast_voidptr_to_lp_jit_frag_func(void *p)
-{
-   union {
-      void *v;
-      lp_jit_frag_func f;
-   } tmp;
-   assert(sizeof(tmp.v) == sizeof(tmp.f));
-   tmp.v = p;
-   return tmp.f;
-}
-
-
 /**
  * Generate the runtime callable function for the whole fragment pipeline.
  * Note that the function which we generate operates on a block of 16
@@ -620,7 +619,7 @@ generate_fragment(struct llvmpipe_context *lp,
    LLVMTypeRef fs_elem_type;
    LLVMTypeRef fs_int_vec_type;
    LLVMTypeRef blend_vec_type;
-   LLVMTypeRef arg_types[15];
+   LLVMTypeRef arg_types[16];
    LLVMTypeRef func_type;
    LLVMTypeRef int32_vec4_type = lp_build_int32_vec4_type();
    LLVMValueRef context_ptr;
@@ -631,7 +630,7 @@ generate_fragment(struct llvmpipe_context *lp,
    LLVMValueRef dady_ptr;
    LLVMValueRef color_ptr_ptr;
    LLVMValueRef depth_ptr;
-   LLVMValueRef c0, c1, c2, step0_ptr, step1_ptr, step2_ptr;
+   LLVMValueRef c0, c1, c2, step0_ptr, step1_ptr, step2_ptr, counter = NULL;
    LLVMBasicBlockRef block;
    LLVMBuilderRef builder;
    LLVMValueRef x0;
@@ -641,7 +640,6 @@ generate_fragment(struct llvmpipe_context *lp,
    LLVMValueRef fs_mask[LP_MAX_VECTOR_LENGTH];
    LLVMValueRef fs_out_color[PIPE_MAX_COLOR_BUFS][NUM_CHANNELS][LP_MAX_VECTOR_LENGTH];
    LLVMValueRef blend_mask;
-   LLVMValueRef blend_in_color[NUM_CHANNELS];
    LLVMValueRef function;
    LLVMValueRef facing;
    unsigned num_fs;
@@ -696,6 +694,7 @@ generate_fragment(struct llvmpipe_context *lp,
    arg_types[12] = LLVMPointerType(int32_vec4_type, 0);/* step0 */
    arg_types[13] = LLVMPointerType(int32_vec4_type, 0);/* step1 */
    arg_types[14] = LLVMPointerType(int32_vec4_type, 0);/* step2 */
+   arg_types[15] = LLVMPointerType(LLVMInt32Type(), 0);/* counter */
 
    func_type = LLVMFunctionType(LLVMVoidType(), arg_types, Elements(arg_types), 0);
 
@@ -734,7 +733,7 @@ generate_fragment(struct llvmpipe_context *lp,
    lp_build_name(a0_ptr, "a0");
    lp_build_name(dadx_ptr, "dadx");
    lp_build_name(dady_ptr, "dady");
-   lp_build_name(color_ptr_ptr, "color_ptr");
+   lp_build_name(color_ptr_ptr, "color_ptr_ptr");
    lp_build_name(depth_ptr, "depth");
    lp_build_name(c0, "c0");
    lp_build_name(c1, "c1");
@@ -743,6 +742,11 @@ generate_fragment(struct llvmpipe_context *lp,
    lp_build_name(step1_ptr, "step1");
    lp_build_name(step2_ptr, "step2");
 
+   if (key->occlusion_count) {
+      counter = LLVMGetParam(function, 15);
+      lp_build_name(counter, "counter");
+   }
+
    /*
     * Function body
     */
@@ -787,7 +791,7 @@ generate_fragment(struct llvmpipe_context *lp,
                   facing,
                   do_tri_test,
                   c0, c1, c2,
-                  step0_ptr, step1_ptr, step2_ptr);
+                  step0_ptr, step1_ptr, step2_ptr, counter);
 
       for(cbuf = 0; cbuf < key->nr_cbufs; cbuf++)
         for(chan = 0; chan < NUM_CHANNELS; ++chan)
@@ -801,6 +805,8 @@ generate_fragment(struct llvmpipe_context *lp,
    for(cbuf = 0; cbuf < key->nr_cbufs; cbuf++) {
       LLVMValueRef color_ptr;
       LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), cbuf, 0);
+      LLVMValueRef blend_in_color[NUM_CHANNELS];
+      unsigned rt;
 
       /* 
        * Convert the fs's output color and mask to fit to the blending type. 
@@ -821,10 +827,14 @@ generate_fragment(struct llvmpipe_context *lp,
                                "");
       lp_build_name(color_ptr, "color_ptr%d", cbuf);
 
+      /* which blend/colormask state to use */
+      rt = key->blend.independent_blend_enable ? cbuf : 0;
+
       /*
        * Blending.
        */
       generate_blend(&key->blend,
+                     rt,
                     builder,
                     blend_type,
                     context_ptr,
@@ -842,7 +852,7 @@ generate_fragment(struct llvmpipe_context *lp,
 #ifdef DEBUG
    if(LLVMVerifyFunction(function, LLVMPrintMessageAction)) {
       if (1)
-         LLVMDumpValue(function);
+         lp_debug_dump_value(function);
       abort();
    }
 #endif
@@ -851,9 +861,9 @@ generate_fragment(struct llvmpipe_context *lp,
    if (1)
       LLVMRunFunctionPassManager(screen->pass, function);
 
-   if (LP_DEBUG & DEBUG_JIT) {
+   if (gallivm_debug & GALLIVM_DEBUG_IR) {
       /* Print the LLVM IR to stderr */
-      LLVMDumpValue(function);
+      lp_debug_dump_value(function);
       debug_printf("\n");
    }
 
@@ -865,12 +875,84 @@ generate_fragment(struct llvmpipe_context *lp,
 
       variant->jit_function[do_tri_test] = cast_voidptr_to_lp_jit_frag_func(f);
 
-      if (LP_DEBUG & DEBUG_ASM)
+      if (gallivm_debug & GALLIVM_DEBUG_ASM) {
          lp_disassemble(f);
+      }
    }
 }
 
 
+static void
+dump_fs_variant_key(const struct lp_fragment_shader_variant_key *key)
+{
+   unsigned i;
+
+   debug_printf("fs variant %p:\n", (void *) key);
+
+   if (key->depth.enabled) {
+      debug_printf("depth.format = %s\n", util_format_name(key->zsbuf_format));
+      debug_printf("depth.func = %s\n", util_dump_func(key->depth.func, TRUE));
+      debug_printf("depth.writemask = %u\n", key->depth.writemask);
+   }
+
+   for (i = 0; i < 2; ++i) {
+      if (key->stencil[i].enabled) {
+         debug_printf("stencil[%u].func = %s\n", i, util_dump_func(key->stencil[i].func, TRUE));
+         debug_printf("stencil[%u].fail_op = %s\n", i, util_dump_stencil_op(key->stencil[i].fail_op, TRUE));
+         debug_printf("stencil[%u].zpass_op = %s\n", i, util_dump_stencil_op(key->stencil[i].zpass_op, TRUE));
+         debug_printf("stencil[%u].zfail_op = %s\n", i, util_dump_stencil_op(key->stencil[i].zfail_op, TRUE));
+         debug_printf("stencil[%u].valuemask = 0x%x\n", i, key->stencil[i].valuemask);
+         debug_printf("stencil[%u].writemask = 0x%x\n", i, key->stencil[i].writemask);
+      }
+   }
+
+   if (key->alpha.enabled) {
+      debug_printf("alpha.func = %s\n", util_dump_func(key->alpha.func, TRUE));
+      debug_printf("alpha.ref_value = %f\n", key->alpha.ref_value);
+   }
+
+   if (key->blend.logicop_enable) {
+      debug_printf("blend.logicop_func = %s\n", util_dump_logicop(key->blend.logicop_func, TRUE));
+   }
+   else if (key->blend.rt[0].blend_enable) {
+      debug_printf("blend.rgb_func = %s\n",   util_dump_blend_func  (key->blend.rt[0].rgb_func, TRUE));
+      debug_printf("blend.rgb_src_factor = %s\n",   util_dump_blend_factor(key->blend.rt[0].rgb_src_factor, TRUE));
+      debug_printf("blend.rgb_dst_factor = %s\n",   util_dump_blend_factor(key->blend.rt[0].rgb_dst_factor, TRUE));
+      debug_printf("blend.alpha_func = %s\n",       util_dump_blend_func  (key->blend.rt[0].alpha_func, TRUE));
+      debug_printf("blend.alpha_src_factor = %s\n", util_dump_blend_factor(key->blend.rt[0].alpha_src_factor, TRUE));
+      debug_printf("blend.alpha_dst_factor = %s\n", util_dump_blend_factor(key->blend.rt[0].alpha_dst_factor, TRUE));
+   }
+   debug_printf("blend.colormask = 0x%x\n", key->blend.rt[0].colormask);
+   for (i = 0; i < PIPE_MAX_SAMPLERS; ++i) {
+      if (key->sampler[i].format) {
+         debug_printf("sampler[%u] = \n", i);
+         debug_printf("  .format = %s\n",
+                      util_format_name(key->sampler[i].format));
+         debug_printf("  .target = %s\n",
+                      util_dump_tex_target(key->sampler[i].target, TRUE));
+         debug_printf("  .pot = %u %u %u\n",
+                      key->sampler[i].pot_width,
+                      key->sampler[i].pot_height,
+                      key->sampler[i].pot_depth);
+         debug_printf("  .wrap = %s %s %s\n",
+                      util_dump_tex_wrap(key->sampler[i].wrap_s, TRUE),
+                      util_dump_tex_wrap(key->sampler[i].wrap_t, TRUE),
+                      util_dump_tex_wrap(key->sampler[i].wrap_r, TRUE));
+         debug_printf("  .min_img_filter = %s\n",
+                      util_dump_tex_filter(key->sampler[i].min_img_filter, TRUE));
+         debug_printf("  .min_mip_filter = %s\n",
+                      util_dump_tex_mipfilter(key->sampler[i].min_mip_filter, TRUE));
+         debug_printf("  .mag_img_filter = %s\n",
+                      util_dump_tex_filter(key->sampler[i].mag_img_filter, TRUE));
+         if (key->sampler[i].compare_mode != PIPE_TEX_COMPARE_NONE)
+            debug_printf("  .compare_func = %s\n", util_dump_func(key->sampler[i].compare_func, TRUE));
+         debug_printf("  .normalized_coords = %u\n", key->sampler[i].normalized_coords);
+      }
+   }
+}
+
+
+
 static struct lp_fragment_shader_variant *
 generate_variant(struct llvmpipe_context *lp,
                  struct lp_fragment_shader *shader,
@@ -878,57 +960,9 @@ generate_variant(struct llvmpipe_context *lp,
 {
    struct lp_fragment_shader_variant *variant;
 
-   if (LP_DEBUG & DEBUG_JIT) {
-      unsigned i;
-
+   if (gallivm_debug & GALLIVM_DEBUG_IR) {
       tgsi_dump(shader->base.tokens, 0);
-      if(key->depth.enabled) {
-         debug_printf("depth.format = %s\n", util_format_name(key->zsbuf_format));
-         debug_printf("depth.func = %s\n", util_dump_func(key->depth.func, TRUE));
-         debug_printf("depth.writemask = %u\n", key->depth.writemask);
-      }
-      if(key->alpha.enabled) {
-         debug_printf("alpha.func = %s\n", util_dump_func(key->alpha.func, TRUE));
-         debug_printf("alpha.ref_value = %f\n", key->alpha.ref_value);
-      }
-      if(key->blend.logicop_enable) {
-         debug_printf("blend.logicop_func = %u\n", key->blend.logicop_func);
-      }
-      else if(key->blend.rt[0].blend_enable) {
-         debug_printf("blend.rgb_func = %s\n",   util_dump_blend_func  (key->blend.rt[0].rgb_func, TRUE));
-         debug_printf("rgb_src_factor = %s\n",   util_dump_blend_factor(key->blend.rt[0].rgb_src_factor, TRUE));
-         debug_printf("rgb_dst_factor = %s\n",   util_dump_blend_factor(key->blend.rt[0].rgb_dst_factor, TRUE));
-         debug_printf("alpha_func = %s\n",       util_dump_blend_func  (key->blend.rt[0].alpha_func, TRUE));
-         debug_printf("alpha_src_factor = %s\n", util_dump_blend_factor(key->blend.rt[0].alpha_src_factor, TRUE));
-         debug_printf("alpha_dst_factor = %s\n", util_dump_blend_factor(key->blend.rt[0].alpha_dst_factor, TRUE));
-      }
-      debug_printf("blend.colormask = 0x%x\n", key->blend.rt[0].colormask);
-      for(i = 0; i < PIPE_MAX_SAMPLERS; ++i) {
-         if(key->sampler[i].format) {
-            debug_printf("sampler[%u] = \n", i);
-            debug_printf("  .format = %s\n",
-                         util_format_name(key->sampler[i].format));
-            debug_printf("  .target = %s\n",
-                         util_dump_tex_target(key->sampler[i].target, TRUE));
-            debug_printf("  .pot = %u %u %u\n",
-                         key->sampler[i].pot_width,
-                         key->sampler[i].pot_height,
-                         key->sampler[i].pot_depth);
-            debug_printf("  .wrap = %s %s %s\n",
-                         util_dump_tex_wrap(key->sampler[i].wrap_s, TRUE),
-                         util_dump_tex_wrap(key->sampler[i].wrap_t, TRUE),
-                         util_dump_tex_wrap(key->sampler[i].wrap_r, TRUE));
-            debug_printf("  .min_img_filter = %s\n",
-                         util_dump_tex_filter(key->sampler[i].min_img_filter, TRUE));
-            debug_printf("  .min_mip_filter = %s\n",
-                         util_dump_tex_mipfilter(key->sampler[i].min_mip_filter, TRUE));
-            debug_printf("  .mag_img_filter = %s\n",
-                         util_dump_tex_filter(key->sampler[i].mag_img_filter, TRUE));
-            if(key->sampler[i].compare_mode != PIPE_TEX_COMPARE_NONE)
-               debug_printf("  .compare_func = %s\n", util_dump_func(key->sampler[i].compare_func, TRUE));
-            debug_printf("  .normalized_coords = %u\n", key->sampler[i].normalized_coords);
-         }
-      }
+      dump_fs_variant_key(key);
    }
 
    variant = CALLOC_STRUCT(lp_fragment_shader_variant);
@@ -937,8 +971,20 @@ generate_variant(struct llvmpipe_context *lp,
 
    memcpy(&variant->key, key, sizeof *key);
 
-   generate_fragment(lp, shader, variant, 0);
-   generate_fragment(lp, shader, variant, 1);
+   generate_fragment(lp, shader, variant, RAST_WHOLE);
+   generate_fragment(lp, shader, variant, RAST_EDGE_TEST);
+
+   /* TODO: most of these can be relaxed, in particular the colormask */
+   variant->opaque =
+         !key->blend.logicop_enable &&
+         !key->blend.rt[0].blend_enable &&
+         key->blend.rt[0].colormask == 0xf &&
+         !key->stencil[0].enabled &&
+         !key->alpha.enabled &&
+         !key->depth.enabled &&
+         !key->scissor &&
+         !shader->info.uses_kill
+         ? TRUE : FALSE;
 
    /* insert new variant into linked list */
    variant->next = shader->variants;
@@ -964,7 +1010,7 @@ 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) {
+   if (gallivm_debug & GALLIVM_DEBUG_TGSI) {
       debug_printf("llvmpipe: Create fragment shader %p:\n", (void *) shader);
       tgsi_dump(templ->tokens, 0);
    }
@@ -1123,6 +1169,9 @@ make_variant_key(struct llvmpipe_context *lp,
 
    key->flatshade = lp->rasterizer->flatshade;
    key->scissor = lp->rasterizer->scissor;
+   if (lp->active_query_count) {
+      key->occlusion_count = TRUE;
+   }
 
    if (lp->framebuffer.nr_cbufs) {
       memcpy(&key->blend, lp->blend, sizeof key->blend);
@@ -1187,7 +1236,6 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
    struct lp_fragment_shader *shader = lp->fs;
    struct lp_fragment_shader_variant_key key;
    struct lp_fragment_shader_variant *variant;
-   boolean opaque;
 
    make_variant_key(lp, shader, &key);
 
@@ -1212,22 +1260,10 @@ llvmpipe_update_fs(struct llvmpipe_context *lp)
       LP_COUNT_ADD(nr_llvm_compiles, 2);  /* emit vs. omit in/out test */
    }
 
-   /* TODO: put this in the variant */
-   /* TODO: most of these can be relaxed, in particular the colormask */
-   opaque = !key.blend.logicop_enable &&
-            !key.blend.rt[0].blend_enable &&
-            key.blend.rt[0].colormask == 0xf &&
-            !key.stencil[0].enabled &&
-            !key.alpha.enabled &&
-            !key.depth.enabled &&
-            !key.scissor &&
-            !shader->info.uses_kill
-            ? TRUE : FALSE;
-
    lp_setup_set_fs_functions(lp->setup, 
                              variant->jit_function[RAST_WHOLE],
                              variant->jit_function[RAST_EDGE_TEST],
-                             opaque);
+                             variant->opaque);
 }
 
 
index 622eb47ff4535629c2863155e40af2ef1539137b..afd3e0b21c912c043a7672b41de020f3077e4c2d 100644 (file)
@@ -67,8 +67,8 @@ llvmpipe_bind_rasterizer_state(struct pipe_context *pipe, void *handle)
     */
    if (llvmpipe->rasterizer) {
       lp_setup_set_triangle_state( llvmpipe->setup,
-                   llvmpipe->rasterizer->cull_mode,
-                   llvmpipe->rasterizer->front_winding == PIPE_WINDING_CCW,
+                   llvmpipe->rasterizer->cull_face,
+                   llvmpipe->rasterizer->front_ccw,
                    llvmpipe->rasterizer->scissor,
                    llvmpipe->rasterizer->gl_rasterization_rules);
       lp_setup_set_flatshade_first( llvmpipe->setup,
index fae7bf3fcf2ef6a5f1cc35dc7255c0ba818b96a5..072d699666bea174389f2e7dca1c3d3c125e5549 100644 (file)
@@ -52,6 +52,19 @@ enum vector_mode
 
 typedef void (*blend_test_ptr_t)(const void *src, const void *dst, const void *con, void *res);
 
+/** cast wrapper */
+static blend_test_ptr_t
+voidptr_to_blend_test_ptr_t(void *p)
+{
+   union {
+      void *v;
+      blend_test_ptr_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
+
+
 
 void
 write_tsv_header(FILE *fp)
@@ -163,6 +176,7 @@ add_blend_test(LLVMModuleRef module,
    LLVMValueRef res_ptr;
    LLVMBasicBlockRef block;
    LLVMBuilderRef builder;
+   const unsigned rt = 0;
 
    vec_type = lp_build_vec_type(type);
 
@@ -188,7 +202,7 @@ add_blend_test(LLVMModuleRef module,
       dst = LLVMBuildLoad(builder, dst_ptr, "dst");
       con = LLVMBuildLoad(builder, const_ptr, "const");
 
-      res = lp_build_blend_aos(builder, blend, type, src, dst, con, 3);
+      res = lp_build_blend_aos(builder, blend, type, rt, src, dst, con, 3);
 
       lp_build_name(res, "res");
 
@@ -212,7 +226,7 @@ add_blend_test(LLVMModuleRef module,
          lp_build_name(dst[i], "dst.%c", "rgba"[i]);
       }
 
-      lp_build_blend_soa(builder, blend, type, src, dst, con, res);
+      lp_build_blend_soa(builder, blend, type, rt, src, dst, con, res);
 
       for(i = 0; i < 4; ++i) {
          LLVMValueRef index = LLVMConstInt(LLVMInt32Type(), i, 0);
@@ -481,6 +495,7 @@ test_one(unsigned verbose,
    int64_t cycles[LP_TEST_NUM_SAMPLES];
    double cycles_avg = 0.0;
    unsigned i, j;
+   void *code;
 
    if(verbose >= 1)
       dump_blend_type(stdout, blend, mode, type);
@@ -522,10 +537,11 @@ test_one(unsigned verbose,
    if(verbose >= 2)
       LLVMDumpModule(module);
 
-   blend_test_ptr = (blend_test_ptr_t)LLVMGetPointerToGlobal(engine, func);
+   code = LLVMGetPointerToGlobal(engine, func);
+   blend_test_ptr = voidptr_to_blend_test_ptr_t(code);
 
    if(verbose >= 2)
-      lp_disassemble(blend_test_ptr);
+      lp_disassemble(code);
 
    success = TRUE;
    for(i = 0; i < n && success; ++i) {
index 958cc40538e92d6420e30432927136a43cc359fe..254f0daea3b09c0423e34010ad97d5c0b5440919 100644 (file)
 
 typedef void (*conv_test_ptr_t)(const void *src, const void *dst);
 
+/** cast wrapper */
+static conv_test_ptr_t
+voidptr_to_conv_test_ptr_t(void *p)
+{
+   union {
+      void *v;
+      conv_test_ptr_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
 
 void
 write_tsv_header(FILE *fp)
@@ -164,6 +175,7 @@ test_one(unsigned verbose,
    unsigned num_dsts;
    double eps;
    unsigned i, j;
+   void *code;
 
    if(verbose >= 1)
       dump_conv_types(stdout, src_type, dst_type);
@@ -221,10 +233,11 @@ test_one(unsigned verbose,
    if(verbose >= 2)
       LLVMDumpModule(module);
 
-   conv_test_ptr = (conv_test_ptr_t)LLVMGetPointerToGlobal(engine, func);
+   code = LLVMGetPointerToGlobal(engine, func);
+   conv_test_ptr = voidptr_to_conv_test_ptr_t(code);
 
    if(verbose >= 2)
-      lp_disassemble(conv_test_ptr);
+      lp_disassemble(code);
 
    success = TRUE;
    for(i = 0; i < n && success; ++i) {
@@ -384,7 +397,7 @@ test_all(unsigned verbose, FILE *fp)
 {
    const struct lp_type *src_type;
    const struct lp_type *dst_type;
-   bool success = TRUE;
+   boolean success = TRUE;
 
    for(src_type = conv_types; src_type < &conv_types[num_types]; ++src_type) {
       for(dst_type = conv_types; dst_type < &conv_types[num_types]; ++dst_type) {
@@ -411,7 +424,7 @@ test_some(unsigned verbose, FILE *fp, unsigned long n)
    const struct lp_type *src_type;
    const struct lp_type *dst_type;
    unsigned long i;
-   bool success = TRUE;
+   boolean success = TRUE;
 
    for(i = 0; i < n; ++i) {
       src_type = &conv_types[rand() % num_types];
index fbac815d107326512bd2c726577e6cc876e7e971..267f1487bb8f241212fcd31ad42132a21ebccee7 100644 (file)
@@ -73,6 +73,19 @@ typedef void
 (*fetch_ptr_t)(float *, const void *packed,
                unsigned i, unsigned j);
 
+/** cast wrapper to avoid warnings */
+static fetch_ptr_t
+void_to_fetch_ptr_t(void *p)
+{
+   union {
+      void *v;
+      fetch_ptr_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
+
+
 
 static LLVMValueRef
 add_fetch_rgba_test(LLVMModuleRef lp_build_module,
@@ -125,7 +138,7 @@ test_format(unsigned verbose, FILE *fp,
    fetch_ptr_t fetch_ptr;
    float unpacked[4];
    boolean success;
-   unsigned i;
+   unsigned i, j, k;
 
    fetch = add_fetch_rgba_test(lp_build_module, desc);
 
@@ -149,31 +162,39 @@ test_format(unsigned verbose, FILE *fp,
    (void)pass;
 #endif
 
-   fetch_ptr = (fetch_ptr_t) LLVMGetPointerToGlobal(lp_build_engine, fetch);
+   fetch_ptr = void_to_fetch_ptr_t(LLVMGetPointerToGlobal(lp_build_engine, fetch));
 
-   memset(unpacked, 0, sizeof unpacked);
+   for (i = 0; i < desc->block.height; ++i) {
+      for (j = 0; j < desc->block.width; ++j) {
 
-   fetch_ptr(unpacked, test->packed, 0, 0);
+         memset(unpacked, 0, sizeof unpacked);
 
-   success = TRUE;
-   for(i = 0; i < 4; ++i)
-      if (fabs((float)test->unpacked[0][0][i] - unpacked[i]) > FLT_EPSILON)
-         success = FALSE;
+         fetch_ptr(unpacked, test->packed, j, i);
 
-   if (!success) {
-      printf("FAILED\n");
-      printf("  Packed: %02x %02x %02x %02x\n",
-             test->packed[0], test->packed[1], test->packed[2], test->packed[3]);
-      printf("  Unpacked: %f %f %f %f obtained\n",
-             unpacked[0], unpacked[1], unpacked[2], unpacked[3]);
-      printf("            %f %f %f %f expected\n",
-             test->unpacked[0][0][0],
-             test->unpacked[0][0][1],
-             test->unpacked[0][0][2],
-             test->unpacked[0][0][3]);
-      LLVMDumpValue(fetch);
+         success = TRUE;
+         for(k = 0; k < 4; ++k)
+            if (fabs((float)test->unpacked[i][j][k] - unpacked[k]) > FLT_EPSILON)
+               success = FALSE;
+
+         if (!success) {
+            printf("FAILED\n");
+            printf("  Packed: %02x %02x %02x %02x\n",
+                   test->packed[0], test->packed[1], test->packed[2], test->packed[3]);
+            printf("  Unpacked (%u,%u): %f %f %f %f obtained\n",
+                   j, i,
+                   unpacked[0], unpacked[1], unpacked[2], unpacked[3]);
+            printf("                  %f %f %f %f expected\n",
+                   test->unpacked[i][j][0],
+                   test->unpacked[i][j][1],
+                   test->unpacked[i][j][2],
+                   test->unpacked[i][j][3]);
+         }
+      }
    }
 
+   if (!success)
+      LLVMDumpValue(fetch);
+
    LLVMFreeMachineCodeForFunction(lp_build_engine, fetch);
    LLVMDeleteFunction(fetch);
 
@@ -193,20 +214,23 @@ test_one(unsigned verbose, FILE *fp,
          const struct util_format_description *format_desc)
 {
    unsigned i;
-   bool success = TRUE;
-
-   printf("Testing %s ...\n",
-          format_desc->name);
+   boolean first = TRUE;
+   boolean success = TRUE;
 
    for (i = 0; i < util_format_nr_test_cases; ++i) {
       const struct util_format_test_case *test = &util_format_test_cases[i];
 
       if (test->format == format_desc->format) {
 
+         if (first) {
+            printf("Testing %s ...\n",
+                   format_desc->name);
+            first = FALSE;
+         }
+
          if (!test_format(verbose, fp, format_desc, test)) {
            success = FALSE;
          }
-
       }
    }
 
@@ -218,7 +242,7 @@ boolean
 test_all(unsigned verbose, FILE *fp)
 {
    enum pipe_format format;
-   bool success = TRUE;
+   boolean success = TRUE;
 
    for (format = 1; format < PIPE_FORMAT_COUNT; ++format) {
       const struct util_format_description *format_desc;
@@ -232,9 +256,7 @@ test_all(unsigned verbose, FILE *fp)
        * TODO: test more
        */
 
-      if (format_desc->block.width != 1 ||
-          format_desc->block.height != 1 ||
-          format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) {
+      if (format_desc->colorspace == UTIL_FORMAT_COLORSPACE_ZS) {
          continue;
       }
 
index e5e5925012a8b3b1518dbb1f55649ebee936f23a..13485c377482d33b492a484adb266fdec1e21024 100644 (file)
@@ -41,6 +41,7 @@
 
 
 struct printf_test_case {
+   int foo;
 };
 
 void
@@ -57,6 +58,19 @@ write_tsv_header(FILE *fp)
 
 typedef void (*test_printf_t)(int i);
 
+/** cast wrapper */
+static test_printf_t
+voidptr_to_test_printf_t(void *p)
+{
+   union {
+      void *v;
+      test_printf_t f;
+   } u;
+   u.v = p;
+   return u.f;
+}
+
+
 static LLVMValueRef
 add_printf_test(LLVMModuleRef module)
 {
@@ -91,6 +105,7 @@ test_printf(unsigned verbose, FILE *fp, const struct printf_test_case *testcase)
    float unpacked[4];
    unsigned packed;
    boolean success = TRUE;
+   void *code;
 
    module = LLVMModuleCreateWithName("test");
 
@@ -124,7 +139,8 @@ test_printf(unsigned verbose, FILE *fp, const struct printf_test_case *testcase)
    (void)pass;
 #endif
 
-   test_printf = (test_printf_t)LLVMGetPointerToGlobal(engine, test);
+   code = LLVMGetPointerToGlobal(engine, test);
+   test_printf = voidptr_to_test_printf_t(code);
 
    memset(unpacked, 0, sizeof unpacked);
    packed = 0;
@@ -147,7 +163,7 @@ test_printf(unsigned verbose, FILE *fp, const struct printf_test_case *testcase)
 boolean
 test_all(unsigned verbose, FILE *fp)
 {
-   bool success = TRUE;
+   boolean success = TRUE;
 
    test_printf(verbose, fp, NULL);
 
index d3a9d39f6167375ead7bdd6cccb86e7353434176..65208dd5d5c9484ab35182185a8300e5862b8c1d 100644 (file)
@@ -87,7 +87,7 @@ struct lp_llvm_sampler_soa
  * @sa http://llvm.org/docs/GetElementPtr.html
  */
 static LLVMValueRef
-lp_llvm_texture_member(struct lp_sampler_dynamic_state *base,
+lp_llvm_texture_member(const struct lp_sampler_dynamic_state *base,
                        LLVMBuilderRef builder,
                        unsigned unit,
                        unsigned member_index,
@@ -135,7 +135,7 @@ lp_llvm_texture_member(struct lp_sampler_dynamic_state *base,
  */
 #define LP_LLVM_TEXTURE_MEMBER(_name, _index, _emit_load)  \
    static LLVMValueRef \
-   lp_llvm_texture_##_name( struct lp_sampler_dynamic_state *base, \
+   lp_llvm_texture_##_name( const struct lp_sampler_dynamic_state *base, \
                             LLVMBuilderRef builder, \
                             unsigned unit) \
    { \
@@ -164,7 +164,7 @@ lp_llvm_sampler_soa_destroy(struct lp_build_sampler_soa *sampler)
  * 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,
+lp_llvm_sampler_soa_emit_fetch_texel(const struct lp_build_sampler_soa *base,
                                      LLVMBuilderRef builder,
                                      struct lp_type type,
                                      unsigned unit,
index 2f41d620c8a675f97a010efa5e4e38a2776e66da..4eed687ac714b48519a2d3a5ae66492266a0089c 100644 (file)
@@ -39,6 +39,7 @@
 #include "util/u_format.h"
 #include "util/u_math.h"
 #include "util/u_memory.h"
+#include "util/u_simple_list.h"
 #include "util/u_transfer.h"
 
 #include "lp_context.h"
 #include "state_tracker/sw_winsys.h"
 
 
+#ifdef DEBUG
+static struct llvmpipe_resource resource_list;
+#endif
+
+
 static INLINE boolean
 resource_is_texture(const struct pipe_resource *resource)
 {
@@ -107,32 +113,55 @@ llvmpipe_texture_layout(struct llvmpipe_screen *screen,
    assert(LP_MAX_TEXTURE_3D_LEVELS <= LP_MAX_TEXTURE_LEVELS);
 
    for (level = 0; level <= pt->last_level; level++) {
-      const unsigned width_t = align(width, TILE_SIZE) / TILE_SIZE;
-      const unsigned height_t = align(height, TILE_SIZE) / TILE_SIZE;
-      unsigned nblocksx, num_slices;
-
-      if (lpr->base.target == PIPE_TEXTURE_CUBE)
-         num_slices = 6;
-      else if (lpr->base.target == PIPE_TEXTURE_3D)
-         num_slices = depth;
-      else
-         num_slices = 1;
-
-      /* Allocate storage for whole quads. This is particularly important
-       * for depth surfaces, which are currently stored in a swizzled format.
-       */
-      nblocksx = util_format_get_nblocksx(pt->format, align(width, TILE_SIZE));
 
-      lpr->row_stride[level] =
-         align(nblocksx * util_format_get_blocksize(pt->format), 16);
+      /* Row stride and image stride (for linear layout) */
+      {
+         unsigned alignment, nblocksx, nblocksy, block_size;
+
+         /* For non-compressed formats we need to align the texture size
+          * to the tile size to facilitate render-to-texture.
+          */
+         if (util_format_is_compressed(pt->format))
+            alignment = 1;
+         else
+            alignment = TILE_SIZE;
+
+         nblocksx = util_format_get_nblocksx(pt->format,
+                                             align(width, alignment));
+         nblocksy = util_format_get_nblocksy(pt->format,
+                                             align(height, alignment));
+         block_size = util_format_get_blocksize(pt->format);
 
-      lpr->img_stride[level] = lpr->row_stride[level] * align(height, TILE_SIZE);
+         lpr->row_stride[level] = align(nblocksx * block_size, 16);
 
-      lpr->tiles_per_row[level] = width_t;
-      lpr->tiles_per_image[level] = width_t * height_t;
-      lpr->num_slices_faces[level] = num_slices;
-      lpr->layout[level] = alloc_layout_array(num_slices, width, height);
+         lpr->img_stride[level] = lpr->row_stride[level] * nblocksy;
+      }
 
+      /* Size of the image in tiles (for tiled layout) */
+      {
+         const unsigned width_t = align(width, TILE_SIZE) / TILE_SIZE;
+         const unsigned height_t = align(height, TILE_SIZE) / TILE_SIZE;
+         lpr->tiles_per_row[level] = width_t;
+         lpr->tiles_per_image[level] = width_t * height_t;
+      }
+
+      /* Number of 3D image slices or cube faces */
+      {
+         unsigned num_slices;
+
+         if (lpr->base.target == PIPE_TEXTURE_CUBE)
+            num_slices = 6;
+         else if (lpr->base.target == PIPE_TEXTURE_3D)
+            num_slices = depth;
+         else
+            num_slices = 1;
+
+         lpr->num_slices_faces[level] = num_slices;
+
+         lpr->layout[level] = alloc_layout_array(num_slices, width, height);
+      }
+
+      /* Compute size of next mipmap level */
       width = u_minify(width, 1);
       height = u_minify(height, 1);
       depth = u_minify(depth, 1);
@@ -222,6 +251,10 @@ llvmpipe_resource_create(struct pipe_screen *_screen,
 
    lpr->id = id_counter++;
 
+#ifdef DEBUG
+   insert_at_tail(&resource_list, lpr);
+#endif
+
    return &lpr->base;
 
  fail:
@@ -280,6 +313,11 @@ llvmpipe_resource_destroy(struct pipe_screen *pscreen,
       align_free(lpr->data);
    }
 
+#ifdef DEBUG
+   if (lpr->next)
+      remove_from_list(lpr);
+#endif
+
    FREE(lpr);
 }
 
@@ -450,7 +488,7 @@ static struct pipe_surface *
 llvmpipe_get_tex_surface(struct pipe_screen *screen,
                          struct pipe_resource *pt,
                          unsigned face, unsigned level, unsigned zslice,
-                         enum lp_texture_usage usage)
+                         unsigned usage)
 {
    struct pipe_surface *ps;
 
@@ -698,11 +736,8 @@ tex_image_face_size(const struct llvmpipe_resource *lpr, unsigned level,
       return buffer_size;
    }
    else {
-      const enum pipe_format format = lpr->base.format;
-      const unsigned nblocksy =
-         util_format_get_nblocksy(format, align(height, TILE_SIZE));
-      const unsigned buffer_size = nblocksy * lpr->row_stride[level];
-      return buffer_size;
+      /* we already computed this */
+      return lpr->img_stride[level];
    }
 }
 
@@ -1188,9 +1223,43 @@ llvmpipe_resource_size(const struct pipe_resource *resource)
 }
 
 
+#ifdef DEBUG
+void
+llvmpipe_print_resources(void)
+{
+   struct llvmpipe_resource *lpr;
+   unsigned n = 0, total = 0;
+
+   debug_printf("LLVMPIPE: current resources:\n");
+   foreach(lpr, &resource_list) {
+      unsigned size = llvmpipe_resource_size(&lpr->base);
+      debug_printf("resource %u at %p, size %ux%ux%u: %u bytes, refcount %u\n",
+                   lpr->id, (void *) lpr,
+                   lpr->base.width0, lpr->base.height0, lpr->base.depth0,
+                   size, lpr->base.reference.count);
+      total += size;
+      n++;
+   }
+   debug_printf("LLVMPIPE: total size of %u resources: %u\n", n, total);
+}
+#endif
+
+
 void
 llvmpipe_init_screen_resource_funcs(struct pipe_screen *screen)
 {
+#ifdef DEBUG
+   /* init linked list for tracking resources */
+   {
+      static boolean first_call = TRUE;
+      if (first_call) {
+         memset(&resource_list, 0, sizeof(resource_list));
+         make_empty_list(&resource_list);
+         first_call = FALSE;
+      }
+   }
+#endif
+
    screen->resource_create = llvmpipe_resource_create;
    screen->resource_destroy = llvmpipe_resource_destroy;
    screen->resource_from_handle = llvmpipe_resource_from_handle;
index a8d08d6247f0011aa587bde030d3cc8eeeec0f27..503b6a19a8d57aeb86577f49ce4bd76ffe4c3a69 100644 (file)
@@ -119,6 +119,11 @@ struct llvmpipe_resource
    unsigned timestamp;
 
    unsigned id;  /**< temporary, for debugging */
+
+#ifdef DEBUG
+   /** for linked list */
+   struct llvmpipe_resource *prev, *next;
+#endif
 };
 
 
@@ -219,6 +224,10 @@ llvmpipe_get_texture_tile(struct llvmpipe_resource *lpr,
 
 
 
+extern void
+llvmpipe_print_resources(void);
+
+
 extern void
 llvmpipe_init_screen_texture_funcs(struct pipe_screen *screen);
 
index 89d5ffa8aa3e972543563793722dad0e2b18d33c..60bdd7276aa5b9b65126314f581473b8d514cd7e 100644 (file)
@@ -5,6 +5,7 @@
 #include "util/u_memory.h"
 #include "util/u_inlines.h"
 #include "util/u_format.h"
+#include "util/u_format_s3tc.h"
 
 #include <stdio.h>
 #include <errno.h>
@@ -246,6 +247,8 @@ nouveau_screen_init(struct nouveau_screen *screen, struct nouveau_device *dev)
        pscreen->fence_signalled = nouveau_screen_fence_signalled;
        pscreen->fence_finish = nouveau_screen_fence_finish;
 
+       util_format_s3tc_init();
+
        return 0;
 }
 
index 0156ff95ff943f75a45e443147d9ff3a4f3ebdf5..97f938e6980e4af80fe442b46500f5f91087747e 100644 (file)
@@ -4208,9 +4208,12 @@ static void
 nv50_program_validate_code(struct nv50_context *nv50, struct nv50_program *p)
 {
        struct nouveau_channel *chan = nv50->screen->base.channel;
+       struct nouveau_grobj *tesla = nv50->screen->tesla;
        struct nv50_program_exec *e;
        uint32_t *up, i;
        boolean upload = FALSE;
+       unsigned offset;
+       int width;
 
        if (!p->bo) {
                nouveau_bo_new(chan->device, NOUVEAU_BO_VRAM, 0x100,
@@ -4267,10 +4270,22 @@ nv50_program_validate_code(struct nv50_context *nv50, struct nv50_program *p)
                        NOUVEAU_ERR("0x%08x\n", e->inst[1]);
        }
 #endif
-       nv50_upload_sifc(nv50, p->bo, 0, NOUVEAU_BO_VRAM,
-                        NV50_2D_DST_FORMAT_R8_UNORM, 65536, 1, 262144,
-                        up, NV50_2D_SIFC_FORMAT_R8_UNORM, 0,
-                        0, 0, p->exec_size * 4, 1, 1);
+
+       /* SIFC_HEIGHT/SIFC_WIDTH of 65536 do not work, and are not reported
+        * as data error either. hw bug ? */
+#define SIFC_MAX_WIDTH (65536 - 256)
+       offset = 0;
+       width = p->exec_size * 4;
+       while (width > 0) {
+               nv50_upload_sifc(nv50, p->bo, offset, NOUVEAU_BO_VRAM,
+                                NV50_2D_DST_FORMAT_R8_UNORM, 65536, 1, 262144,
+                                &up[offset / 4], NV50_2D_SIFC_FORMAT_R8_UNORM,
+                                0, 0, 0, MIN2(SIFC_MAX_WIDTH, width), 1, 1);
+               width -= SIFC_MAX_WIDTH;
+               offset += SIFC_MAX_WIDTH;
+       }
+       BEGIN_RING(chan, tesla, NV50TCL_CODE_CB_FLUSH, 1);
+       OUT_RING  (chan, 0);
 
        FREE(up);
 }
index 244242b84342e200dbcd0db0dc8f05759b0b718a..c3ac804146267a08eb75a6cdbc6aaec07fb9dad2 100644 (file)
@@ -108,7 +108,7 @@ emit_vertex(struct push_context *ctx, unsigned n)
    int i;
 
    if (ctx->edgeflag_attr < 16) {
-      float *edgeflag = ctx->attr[ctx->edgeflag_attr].map +
+      float *edgeflag = (uint8_t *)ctx->attr[ctx->edgeflag_attr].map +
                         ctx->attr[ctx->edgeflag_attr].stride * n;
 
       if (*edgeflag != ctx->edgeflag) {
@@ -120,7 +120,8 @@ emit_vertex(struct push_context *ctx, unsigned n)
 
    BEGIN_RING_NI(chan, tesla, NV50TCL_VERTEX_DATA, ctx->vtx_size);
    for (i = 0; i < ctx->attr_nr; i++)
-      ctx->attr[i].push(chan, ctx->attr[i].map + ctx->attr[i].stride * n);
+      ctx->attr[i].push(chan,
+                       (uint8_t *)ctx->attr[i].map + ctx->attr[i].stride * n);
 }
 
 static void
@@ -243,14 +244,14 @@ nv50_push_elements_instanced(struct pipe_context *pipe,
          assert(bo->map);
          return;
       }
-      ctx.attr[n].map = bo->map + vb->buffer_offset + ve->src_offset;
+      ctx.attr[n].map = (uint8_t *)bo->map + vb->buffer_offset + ve->src_offset;
       nouveau_bo_unmap(bo);
 
       ctx.attr[n].stride = vb->stride;
       ctx.attr[n].divisor = ve->instance_divisor;
       if (ctx.attr[n].divisor) {
          ctx.attr[n].step = i_start % ve->instance_divisor;
-         ctx.attr[n].map += i_start * vb->stride;
+         ctx.attr[n].map = (uint8_t *)ctx.attr[n].map + i_start * vb->stride;
       }
 
       size = util_format_get_component_bits(ve->src_format,
@@ -331,7 +332,7 @@ nv50_push_elements_instanced(struct pipe_context *pipe,
               ctx.attr[i].divisor != ++ctx.attr[i].step)
             continue;
          ctx.attr[i].step = 0;
-         ctx.attr[i].map += ctx.attr[i].stride;
+         ctx.attr[i].map = (uint8_t *)ctx.attr[i].map + ctx.attr[i].stride;
       }
 
       u_split_prim_init(&s, mode, start, count);
index a8cb1e25d81bfaa231ac28874144dbef8a29d74f..2c0caada3664c81cbf234ee831ad4bd4469ceaa7 100644 (file)
@@ -20,6 +20,7 @@
  * SOFTWARE.
  */
 
+#include "util/u_format_s3tc.h"
 #include "pipe/p_screen.h"
 
 #include "nv50_context.h"
@@ -64,6 +65,17 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
                        break;
                }
        } else {
+               if (tex_usage & PIPE_BIND_SAMPLER_VIEW) {
+                       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;
+                       }
+               }
                switch (format) {
                case PIPE_FORMAT_B8G8R8A8_UNORM:
                case PIPE_FORMAT_B8G8R8X8_UNORM:
@@ -76,10 +88,6 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
                case PIPE_FORMAT_A8_UNORM:
                case PIPE_FORMAT_I8_UNORM:
                case PIPE_FORMAT_L8A8_UNORM:
-               case PIPE_FORMAT_DXT1_RGB:
-               case PIPE_FORMAT_DXT1_RGBA:
-               case PIPE_FORMAT_DXT3_RGBA:
-               case PIPE_FORMAT_DXT5_RGBA:
                case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
                case PIPE_FORMAT_Z24_UNORM_S8_USCALED:
                case PIPE_FORMAT_Z32_FLOAT:
@@ -98,7 +106,7 @@ nv50_screen_is_format_supported(struct pipe_screen *pscreen,
 }
 
 static int
-nv50_screen_get_param(struct pipe_screen *pscreen, int param)
+nv50_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
 {
        switch (param) {
        case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
@@ -121,6 +129,8 @@ nv50_screen_get_param(struct pipe_screen *pscreen, int param)
                return 8;
        case PIPE_CAP_OCCLUSION_QUERY:
                return 1;
+        case PIPE_CAP_TIMER_QUERY:
+               return 0;
        case PIPE_CAP_TEXTURE_SHADOW_MAP:
                return 1;
        case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
@@ -146,6 +156,34 @@ nv50_screen_get_param(struct pipe_screen *pscreen, int param)
        case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
                return 0;
+       case PIPE_CAP_MAX_VS_INSTRUCTIONS:
+       case PIPE_CAP_MAX_FS_INSTRUCTIONS:
+       case PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS:
+       case PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS:
+       case PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS:
+       case PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS:
+       case PIPE_CAP_MAX_VS_TEX_INDIRECTIONS:
+       case PIPE_CAP_MAX_FS_TEX_INDIRECTIONS: /* arbitrary limit */
+               return 16384;
+       case PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH:
+       case PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH: /* need stack bo */
+               return 4;
+       case PIPE_CAP_MAX_VS_INPUTS:
+               return 16;
+       case PIPE_CAP_MAX_FS_INPUTS: /* 128 / 4 with GP */
+               return 64 / 4;
+       case PIPE_CAP_MAX_VS_CONSTS:
+       case PIPE_CAP_MAX_FS_CONSTS:
+               return 65536 / 16;
+       case PIPE_CAP_MAX_VS_ADDRS:
+       case PIPE_CAP_MAX_FS_ADDRS: /* no spilling atm */
+               return 1;
+       case PIPE_CAP_MAX_VS_PREDS:
+       case PIPE_CAP_MAX_FS_PREDS: /* not yet handled */
+               return 0;
+       case PIPE_CAP_MAX_VS_TEMPS:
+       case PIPE_CAP_MAX_FS_TEMPS: /* no spilling atm */
+               return 128 / 4;
        default:
                NOUVEAU_ERR("Unknown PIPE_CAP %d\n", param);
                return 0;
@@ -153,7 +191,7 @@ nv50_screen_get_param(struct pipe_screen *pscreen, int param)
 }
 
 static float
-nv50_screen_get_paramf(struct pipe_screen *pscreen, int param)
+nv50_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_cap param)
 {
        switch (param) {
        case PIPE_CAP_MAX_LINE_WIDTH:
index cf4105bcb77a44a488125b6a3f789e702c352fb8..f8bff764f27ab2ac626b5c5ff9a5e93fc8cc2d81 100644 (file)
@@ -345,7 +345,7 @@ nv50_rasterizer_state_create(struct pipe_context *pipe,
                CALLOC_STRUCT(nv50_rasterizer_stateobj);
 
        /*XXX: ignored
-        *      - light_twosize
+        *      - light_twoside
         *      - point_smooth
         *      - multisample
         *      - point_sprite / sprite_coord_mode
@@ -385,72 +385,44 @@ nv50_rasterizer_state_create(struct pipe_context *pipe,
        so_data  (so, cso->point_quad_rasterization ? 1 : 0);
 
        so_method(so, tesla, NV50TCL_POLYGON_MODE_FRONT, 3);
-       if (cso->front_winding == PIPE_WINDING_CCW) {
-               so_data(so, nvgl_polygon_mode(cso->fill_ccw));
-               so_data(so, nvgl_polygon_mode(cso->fill_cw));
-       } else {
-               so_data(so, nvgl_polygon_mode(cso->fill_cw));
-               so_data(so, nvgl_polygon_mode(cso->fill_ccw));
-       }
+        so_data(so, nvgl_polygon_mode(cso->fill_front));
+        so_data(so, nvgl_polygon_mode(cso->fill_back));
        so_data(so, cso->poly_smooth ? 1 : 0);
 
        so_method(so, tesla, NV50TCL_CULL_FACE_ENABLE, 3);
-       so_data  (so, cso->cull_mode != PIPE_WINDING_NONE);
-       if (cso->front_winding == PIPE_WINDING_CCW) {
+       so_data  (so, cso->cull_face != PIPE_FACE_NONE);
+       if (cso->front_ccw) {
                so_data(so, NV50TCL_FRONT_FACE_CCW);
-               switch (cso->cull_mode) {
-               case PIPE_WINDING_CCW:
-                       so_data(so, NV50TCL_CULL_FACE_FRONT);
-                       break;
-               case PIPE_WINDING_CW:
-                       so_data(so, NV50TCL_CULL_FACE_BACK);
-                       break;
-               case PIPE_WINDING_BOTH:
-                       so_data(so, NV50TCL_CULL_FACE_FRONT_AND_BACK);
-                       break;
-               default:
-                       so_data(so, NV50TCL_CULL_FACE_BACK);
-                       break;
-               }
-       } else {
+        }
+        else {
                so_data(so, NV50TCL_FRONT_FACE_CW);
-               switch (cso->cull_mode) {
-               case PIPE_WINDING_CCW:
-                       so_data(so, NV50TCL_CULL_FACE_BACK);
-                       break;
-               case PIPE_WINDING_CW:
-                       so_data(so, NV50TCL_CULL_FACE_FRONT);
-                       break;
-               case PIPE_WINDING_BOTH:
-                       so_data(so, NV50TCL_CULL_FACE_FRONT_AND_BACK);
-                       break;
-               default:
-                       so_data(so, NV50TCL_CULL_FACE_BACK);
-                       break;
-               }
+        }
+       switch (cso->cull_face) {
+       case PIPE_FACE_FRONT:
+               so_data(so, NV50TCL_CULL_FACE_FRONT);
+               break;
+       case PIPE_FACE_BACK:
+               so_data(so, NV50TCL_CULL_FACE_BACK);
+               break;
+       case PIPE_FACE_FRONT_AND_BACK:
+               so_data(so, NV50TCL_CULL_FACE_FRONT_AND_BACK);
+               break;
+       default:
+               so_data(so, NV50TCL_CULL_FACE_BACK);
+               break;
        }
 
        so_method(so, tesla, NV50TCL_POLYGON_STIPPLE_ENABLE, 1);
        so_data  (so, cso->poly_stipple_enable ? 1 : 0);
 
        so_method(so, tesla, NV50TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
-       if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_POINT) ||
-           (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_POINT))
-               so_data(so, 1);
-       else
-               so_data(so, 0);
-       if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_LINE) ||
-           (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_LINE))
-               so_data(so, 1);
-       else
-               so_data(so, 0);
-       if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_FILL) ||
-           (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_FILL))
-               so_data(so, 1);
-       else
-               so_data(so, 0);
+        so_data(so, cso->offset_point);
+        so_data(so, cso->offset_line);
+        so_data(so, cso->offset_tri);
 
-       if (cso->offset_cw || cso->offset_ccw) {
+       if (cso->offset_point ||
+            cso->offset_line ||
+            cso->offset_tri) {
                so_method(so, tesla, NV50TCL_POLYGON_OFFSET_FACTOR, 1);
                so_data  (so, fui(cso->offset_scale));
                so_method(so, tesla, NV50TCL_POLYGON_OFFSET_UNITS, 1);
index c5581a6f9d080e1034b71f7373351481efcf84d6..f973cf24b9863c49bc1cffdeaadfa0a1b02a8921 100644 (file)
@@ -274,7 +274,6 @@ nv50_upload_sifc(struct nv50_context *nv50,
 {
        struct nouveau_channel *chan = nv50->screen->base.channel;
        struct nouveau_grobj *eng2d = nv50->screen->eng2d;
-       struct nouveau_grobj *tesla = nv50->screen->tesla;
        unsigned line_dwords = (w * cpp + 3) / 4;
 
        reloc |= NOUVEAU_BO_WR;
@@ -346,7 +345,4 @@ nv50_upload_sifc(struct nv50_context *nv50,
 
                src = (uint8_t *) src + src_pitch;
        }
-
-       BEGIN_RING(chan, tesla, NV50TCL_CODE_CB_FLUSH, 1);
-       OUT_RING  (chan, 0);
 }
index 1786af776aaa40443d2be511fd859b1f7ce94dac..7e534a0c738bd048cc0067bbba062f70dc457732 100644 (file)
@@ -1,5 +1,6 @@
 #include "pipe/p_screen.h"
 #include "pipe/p_state.h"
+#include "util/u_format_s3tc.h"
 #include "util/u_simple_screen.h"
 
 #include "nouveau/nouveau_screen.h"
@@ -29,7 +30,7 @@ struct nouveau_winsys {
 #define NV6X_GRCLASS4497_CHIPSETS 0x00000088
 
 static int
-nvfx_screen_get_param(struct pipe_screen *pscreen, int param)
+nvfx_screen_get_param(struct pipe_screen *pscreen, enum pipe_cap param)
 {
        struct nvfx_screen *screen = nvfx_screen(pscreen);
 
@@ -51,6 +52,8 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, int param)
                return screen->is_nv4x ? 4 : 2;
        case PIPE_CAP_OCCLUSION_QUERY:
                return 1;
+        case PIPE_CAP_TIMER_QUERY:
+               return 0;
        case PIPE_CAP_TEXTURE_SHADOW_MAP:
                return 1;
        case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
@@ -83,6 +86,45 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, int param)
        case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
        case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
                return 0;
+       case PIPE_CAP_MAX_FS_INSTRUCTIONS:
+       case PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS:
+       case PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS:
+       case PIPE_CAP_MAX_FS_TEX_INDIRECTIONS:
+               return 4096;
+       case PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH:
+               /* FIXME: is it the dynamic (nv30:0/nv40:24) or the static
+                  value (nv30:0/nv40:4) ? */
+               return screen->is_nv4x ? 4 : 0;
+       case PIPE_CAP_MAX_FS_INPUTS:
+               return 10;
+       case PIPE_CAP_MAX_FS_CONSTS:
+               return screen->is_nv4x ? 224 : 32;
+       case PIPE_CAP_MAX_FS_TEMPS:
+               return 32;
+       case PIPE_CAP_MAX_FS_ADDRS:
+               return screen->is_nv4x ? 1 : 0;
+       case PIPE_CAP_MAX_FS_PREDS:
+               return screen->is_nv4x ? 1 : 0;
+       case PIPE_CAP_MAX_VS_INSTRUCTIONS:
+       case PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS:
+               return screen->is_nv4x ? 512 : 256;
+       case PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS:
+       case PIPE_CAP_MAX_VS_TEX_INDIRECTIONS:
+               return screen->is_nv4x ? 512 : 0;
+       case PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH:
+               /* FIXME: is it the dynamic (nv30:24/nv40:24) or the static
+                  value (nv30:1/nv40:4) ? */
+               return screen->is_nv4x ? 4 : 1;
+       case PIPE_CAP_MAX_VS_INPUTS:
+               return 16;
+       case PIPE_CAP_MAX_VS_CONSTS:
+               return 256;
+       case PIPE_CAP_MAX_VS_TEMPS:
+               return screen->is_nv4x ? 32 : 13;
+       case PIPE_CAP_MAX_VS_ADDRS:
+               return 2;
+       case PIPE_CAP_MAX_VS_PREDS:
+               return screen->is_nv4x ? 1 : 0;
        default:
                NOUVEAU_ERR("Unknown PIPE_CAP %d\n", param);
                return 0;
@@ -90,7 +132,7 @@ nvfx_screen_get_param(struct pipe_screen *pscreen, int param)
 }
 
 static float
-nvfx_screen_get_paramf(struct pipe_screen *pscreen, int param)
+nvfx_screen_get_paramf(struct pipe_screen *pscreen, enum pipe_cap param)
 {
        struct nvfx_screen *screen = nvfx_screen(pscreen);
 
@@ -149,6 +191,17 @@ nvfx_screen_surface_format_supported(struct pipe_screen *pscreen,
                }
        } else {
                switch (format) {
+               if (tex_usage & PIPE_BIND_SAMPLER_VIEW) {
+                       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;
+                       }
+               }
                case PIPE_FORMAT_B8G8R8A8_UNORM:
                case PIPE_FORMAT_B8G8R8X8_UNORM:
                case PIPE_FORMAT_B5G5R5A1_UNORM:
@@ -160,10 +213,6 @@ nvfx_screen_surface_format_supported(struct pipe_screen *pscreen,
                case PIPE_FORMAT_L8A8_UNORM:
                case PIPE_FORMAT_Z16_UNORM:
                case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
-               case PIPE_FORMAT_DXT1_RGB:
-               case PIPE_FORMAT_DXT1_RGBA:
-               case PIPE_FORMAT_DXT3_RGBA:
-               case PIPE_FORMAT_DXT5_RGBA:
                        return TRUE;
                /* TODO: does nv30 support this? */
                case PIPE_FORMAT_R16_SNORM:
index 3c566808d03ae6badccd8d604db407983e1d0398..30322d46d934df0a1e8867f41408aaac2f4ce265 100644 (file)
@@ -216,66 +216,39 @@ nvfx_rasterizer_state_create(struct pipe_context *pipe,
        sb_data(sb, fui(cso->point_size));
 
        sb_method(sb, NV34TCL_POLYGON_MODE_FRONT, 6);
-       if (cso->front_winding == PIPE_WINDING_CCW) {
-               sb_data(sb, nvgl_polygon_mode(cso->fill_ccw));
-               sb_data(sb, nvgl_polygon_mode(cso->fill_cw));
-               switch (cso->cull_mode) {
-               case PIPE_WINDING_CCW:
-                       sb_data(sb, NV34TCL_CULL_FACE_FRONT);
-                       break;
-               case PIPE_WINDING_CW:
-                       sb_data(sb, NV34TCL_CULL_FACE_BACK);
-                       break;
-               case PIPE_WINDING_BOTH:
-                       sb_data(sb, NV34TCL_CULL_FACE_FRONT_AND_BACK);
-                       break;
-               default:
-                       sb_data(sb, NV34TCL_CULL_FACE_BACK);
-                       break;
-               }
+        sb_data(sb, nvgl_polygon_mode(cso->fill_front));
+        sb_data(sb, nvgl_polygon_mode(cso->fill_back));
+       switch (cso->cull_face) {
+       case PIPE_FACE_FRONT:
+               sb_data(sb, NV34TCL_CULL_FACE_FRONT);
+               break;
+       case PIPE_FACE_BACK:
+               sb_data(sb, NV34TCL_CULL_FACE_BACK);
+               break;
+       case PIPE_FACE_FRONT_AND_BACK:
+               sb_data(sb, NV34TCL_CULL_FACE_FRONT_AND_BACK);
+               break;
+       default:
+               sb_data(sb, NV34TCL_CULL_FACE_BACK);
+               break;
+       }
+       if (cso->front_ccw) {
                sb_data(sb, NV34TCL_FRONT_FACE_CCW);
        } else {
-               sb_data(sb, nvgl_polygon_mode(cso->fill_cw));
-               sb_data(sb, nvgl_polygon_mode(cso->fill_ccw));
-               switch (cso->cull_mode) {
-               case PIPE_WINDING_CCW:
-                       sb_data(sb, NV34TCL_CULL_FACE_BACK);
-                       break;
-               case PIPE_WINDING_CW:
-                       sb_data(sb, NV34TCL_CULL_FACE_FRONT);
-                       break;
-               case PIPE_WINDING_BOTH:
-                       sb_data(sb, NV34TCL_CULL_FACE_FRONT_AND_BACK);
-                       break;
-               default:
-                       sb_data(sb, NV34TCL_CULL_FACE_BACK);
-                       break;
-               }
                sb_data(sb, NV34TCL_FRONT_FACE_CW);
        }
        sb_data(sb, cso->poly_smooth ? 1 : 0);
-       sb_data(sb, (cso->cull_mode != PIPE_WINDING_NONE) ? 1 : 0);
+       sb_data(sb, (cso->cull_face != PIPE_FACE_NONE) ? 1 : 0);
 
        sb_method(sb, NV34TCL_POLYGON_STIPPLE_ENABLE, 1);
        sb_data(sb, cso->poly_stipple_enable ? 1 : 0);
 
        sb_method(sb, NV34TCL_POLYGON_OFFSET_POINT_ENABLE, 3);
-       if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_POINT) ||
-           (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_POINT))
-               sb_data(sb, 1);
-       else
-               sb_data(sb, 0);
-       if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_LINE) ||
-           (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_LINE))
-               sb_data(sb, 1);
-       else
-               sb_data(sb, 0);
-       if ((cso->offset_cw && cso->fill_cw == PIPE_POLYGON_MODE_FILL) ||
-           (cso->offset_ccw && cso->fill_ccw == PIPE_POLYGON_MODE_FILL))
-               sb_data(sb, 1);
-       else
-               sb_data(sb, 0);
-       if (cso->offset_cw || cso->offset_ccw) {
+        sb_data(sb, cso->offset_point);
+        sb_data(sb, cso->offset_line);
+        sb_data(sb, cso->offset_tri);
+
+       if (cso->offset_point || cso->offset_line || cso->offset_tri) {
                sb_method(sb, NV34TCL_POLYGON_OFFSET_FACTOR, 2);
                sb_data(sb, fui(cso->offset_scale));
                sb_data(sb, fui(cso->offset_units * 2));
index b3ef97fa52b2f93bf6ec9986919dab84a2936bb0..f771e10c64ee6c5fb27400f7a70c26df074ccd54 100644 (file)
@@ -80,6 +80,9 @@ static void r300_destroy_context(struct pipe_context* context)
     FREE(r300->ztop_state.state);
     FREE(r300->fs_constants.state);
     FREE(r300->vs_constants.state);
+    if (!r300->screen->caps.has_tcl) {
+        FREE(r300->vertex_stream_state.state);
+    }
     FREE(r300);
 }
 
@@ -151,6 +154,16 @@ static void r300_setup_atoms(struct r300_context* r300)
     r300->ztop_state.state = CALLOC_STRUCT(r300_ztop_state);
     r300->fs_constants.state = CALLOC_STRUCT(r300_constant_buffer);
     r300->vs_constants.state = CALLOC_STRUCT(r300_constant_buffer);
+    if (!r300->screen->caps.has_tcl) {
+        r300->vertex_stream_state.state = CALLOC_STRUCT(r300_vertex_stream_state);
+    }
+
+    /* Some non-CSO atoms don't use the state pointer. */
+    r300->invariant_state.allow_null_state = TRUE;
+    r300->fs_rc_constant_state.allow_null_state = TRUE;
+    r300->pvs_flush.allow_null_state = TRUE;
+    r300->query_start.allow_null_state = TRUE;
+    r300->texture_cache_inval.allow_null_state = TRUE;
 }
 
 struct pipe_context* r300_create_context(struct pipe_screen* screen,
@@ -201,9 +214,9 @@ struct pipe_context* r300_create_context(struct pipe_screen* screen,
         draw_set_rasterize_stage(r300->draw, r300_draw_stage(r300));
         /* Enable Draw's clipping. */
         draw_set_driver_clipping(r300->draw, FALSE);
-        /* Force Draw to never do viewport transform, since we can do
-         * transform in hardware, always. */
-        draw_set_viewport_state(r300->draw, &r300_viewport_identity);
+        /* Disable converting points/lines to triangles. */
+        draw_wide_line_threshold(r300->draw, 10000000.f);
+        draw_wide_point_threshold(r300->draw, 10000000.f);
     }
 
     r300_setup_atoms(r300);
index e9c8fcdc157baffdc5d6a72e86293498fc64259f..e44906d00997c85d777ec28637496e29c1cf61a9 100644 (file)
@@ -55,6 +55,8 @@ struct r300_atom {
     unsigned size;
     /* Whether this atom should be emitted. */
     boolean dirty;
+    /* Whether this atom may be emitted with state == NULL. */
+    boolean allow_null_state;
 };
 
 struct r300_blend_state {
@@ -88,12 +90,15 @@ struct r300_dsa_state {
 };
 
 struct r300_rs_state {
-    /* Draw-specific rasterizer state */
+    /* Original rasterizer state. */
     struct pipe_rasterizer_state rs;
+    /* Draw-specific rasterizer state. */
+    struct pipe_rasterizer_state rs_draw;
 
     uint32_t vap_control_status;    /* R300_VAP_CNTL_STATUS: 0x2140 */
     uint32_t antialiasing_config;   /* R300_GB_AA_CONFIG: 0x4020 */
     uint32_t point_size;            /* R300_GA_POINT_SIZE: 0x421c */
+    uint32_t point_minmax;          /* R300_GA_POINT_MINMAX: 0x4230 */
     uint32_t line_control;          /* R300_GA_LINE_CNTL: 0x4234 */
     float depth_scale;            /* R300_SU_POLY_OFFSET_FRONT_SCALE: 0x42a4 */
                                   /* R300_SU_POLY_OFFSET_BACK_SCALE: 0x42ac */
@@ -151,6 +156,10 @@ struct r300_texture_format_state {
 struct r300_sampler_view {
     struct pipe_sampler_view base;
 
+    /* Swizzles in the UTIL_FORMAT_SWIZZLE_* representation,
+     * derived from base. */
+    unsigned char swizzle[4];
+
     /* Copy of r300_texture::texture_format_state with format-specific bits
      * added. */
     struct r300_texture_format_state format;
@@ -166,6 +175,13 @@ struct r300_texture_fb_state {
     uint32_t zb_format; /* R300_ZB_FORMAT */
 };
 
+struct r300_texture_sampler_state {
+    struct r300_texture_format_state format;
+    uint32_t filter0;      /* R300_TX_FILTER0: 0x4400 */
+    uint32_t filter1;      /* R300_TX_FILTER1: 0x4440 */
+    uint32_t border_color;  /* R300_TX_BORDER_COLOR: 0x45c0 */
+};
+
 struct r300_textures_state {
     /* Textures. */
     struct r300_sampler_view *sampler_views[16];
@@ -177,12 +193,7 @@ struct r300_textures_state {
     /* This is the merge of the texture and sampler states. */
     unsigned count;
     uint32_t tx_enable;         /* R300_TX_ENABLE: 0x4101 */
-    struct r300_texture_sampler_state {
-        struct r300_texture_format_state format;
-        uint32_t filter0;      /* R300_TX_FILTER0: 0x4400 */
-        uint32_t filter1;      /* R300_TX_FILTER1: 0x4440 */
-        uint32_t border_color;  /* R300_TX_BORDER_COLOR: 0x45c0 */
-    } regs[16];
+    struct r300_texture_sampler_state regs[16];
 };
 
 struct r300_vertex_stream_state {
@@ -228,10 +239,6 @@ struct r300_constant_buffer {
 struct r300_query {
     /* The kind of query. Currently only OQ is supported. */
     unsigned type;
-    /* Whether this query is currently active. Only active queries will
-     * get emitted into the command stream, and only active queries get
-     * tallied. */
-    boolean active;
     /* The current count of this query. Required to be at least 32 bits. */
     unsigned int count;
     /* The offset of this query into the query buffer, in bytes. */
@@ -297,16 +304,6 @@ struct r300_texture {
     enum r300_buffer_tiling microtile, macrotile;
 };
 
-struct r300_vertex_info {
-    /* Parent class */
-    struct vertex_info vinfo;
-
-    /* R300_VAP_PROG_STREAK_CNTL_[0-7] */
-    uint32_t vap_prog_stream_cntl[8];
-    /* R300_VAP_PROG_STREAK_CNTL_EXT_[0-7] */
-    uint32_t vap_prog_stream_cntl_ext[8];
-};
-
 struct r300_vertex_element_state {
     unsigned count;
     struct pipe_vertex_element velem[PIPE_MAX_ATTRIBS];
@@ -314,8 +311,6 @@ struct r300_vertex_element_state {
     struct r300_vertex_stream_state vertex_stream;
 };
 
-extern struct pipe_viewport_state r300_viewport_identity;
-
 struct r300_context {
     /* Parent class */
     struct pipe_context context;
@@ -331,8 +326,7 @@ struct r300_context {
 
     void (*emit_draw_elements)(
             struct r300_context *r300, struct pipe_resource* indexBuffer,
-            unsigned indexSize, int indexBias,
-            unsigned minIndex, unsigned maxIndex,
+            unsigned indexSize, unsigned minIndex, unsigned maxIndex,
             unsigned mode, unsigned start, unsigned count);
 
 
@@ -436,6 +430,8 @@ struct r300_context {
     boolean stencil_ref_bf_fallback;
     /* Point sprites texcoord index,  1 bit per texcoord */
     int sprite_coord_enable;
+    /* Whether two-sided color selection is enabled (AKA light_twoside). */
+    boolean two_sided_color;
 
     /* upload managers */
     struct u_upload_mgr *upload_vb;
index 8eb321fa08a352e9007ec7082d98b9c96fd40d0e..85a1aa7b06ebea4afbc977630cf71fb7d540b5a5 100644 (file)
@@ -40,6 +40,7 @@ static struct debug_option debug_options[] = {
     { "texalloc", DBG_TEXALLOC, "Texture allocation (for debugging)" },
     { "fall", DBG_FALL, "Fallbacks (for debugging)" },
     { "rs", DBG_RS, "Rasterizer (for debugging)" },
+    { "fb", DBG_FB, "Framebuffer (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)" },
@@ -97,3 +98,84 @@ void r300_init_debug(struct r300_screen * screen)
         }
     }
 }
+
+void r500_dump_rs_block(struct r300_rs_block *rs)
+{
+    unsigned count, ip, it_count, ic_count, i, j;
+    unsigned tex_ptr;
+    unsigned col_ptr, col_fmt;
+
+    count = rs->inst_count & 0xf;
+    count++;
+
+    it_count = rs->count & 0x7f;
+    ic_count = (rs->count >> 7) & 0xf;
+
+    fprintf(stderr, "RS Block: %d texcoords (linear), %d colors (perspective)\n",
+        it_count, ic_count);
+    fprintf(stderr, "%d instructions\n", count);
+
+    for (i = 0; i < count; i++) {
+        if (rs->inst[i] & 0x10) {
+            ip = rs->inst[i] & 0xf;
+            fprintf(stderr, "texture: ip %d to psf %d\n",
+                ip, (rs->inst[i] >> 5) & 0x7f);
+
+            tex_ptr = rs->ip[ip] & 0xffffff;
+            fprintf(stderr, "       : ");
+
+            j = 3;
+            do {
+                if (tex_ptr & 0x3f == 63) {
+                    fprintf(stderr, "1.0");
+                } else if (tex_ptr & 0x3f == 62) {
+                    fprintf(stderr, "0.0");
+                } else {
+                    fprintf(stderr, "[%d]", tex_ptr & 0x3f);
+                }
+            } while (j-- && fprintf(stderr, "/"));
+            fprintf(stderr, "\n");
+        }
+
+        if (rs->inst[i] & 0x10000) {
+            ip = (rs->inst[i] >> 12) & 0xf;
+            fprintf(stderr, "color: ip %d to psf %d\n",
+                ip, (rs->inst[i] >> 18) & 0x7f);
+
+            col_ptr = (rs->ip[ip] >> 24) & 0x7;
+            col_fmt = (rs->ip[ip] >> 27) & 0xf;
+            fprintf(stderr, "     : offset %d ", col_ptr);
+
+            switch (col_fmt) {
+                case 0:
+                    fprintf(stderr, "(R/G/B/A)");
+                    break;
+                case 1:
+                    fprintf(stderr, "(R/G/B/0)");
+                    break;
+                case 2:
+                    fprintf(stderr, "(R/G/B/1)");
+                    break;
+                case 4:
+                    fprintf(stderr, "(0/0/0/A)");
+                    break;
+                case 5:
+                    fprintf(stderr, "(0/0/0/0)");
+                    break;
+                case 6:
+                    fprintf(stderr, "(0/0/0/1)");
+                    break;
+                case 8:
+                    fprintf(stderr, "(1/1/1/A)");
+                    break;
+                case 9:
+                    fprintf(stderr, "(1/1/1/0)");
+                    break;
+                case 10:
+                    fprintf(stderr, "(1/1/1/1)");
+                    break;
+            }
+            fprintf(stderr, "\n");
+        }
+    }
+}
index 23bbc6a99c86151f23abe6f4fb9d09bea6b76787..7f7f2929cc3ae8a008de86f9564b86ef5b4d106c 100644 (file)
@@ -525,8 +525,6 @@ void r300_emit_fb_state(struct r300_context* r300, unsigned size, void* state)
         OUT_CS(((fb->width  + 1440-1) << R300_SCISSORS_X_SHIFT) |
                ((fb->height + 1440-1) << R300_SCISSORS_Y_SHIFT));
     }
-    OUT_CS_REG(R300_GA_POINT_MINMAX,
-        (MAX2(fb->width, fb->height) * 6) << R300_GA_POINT_MINMAX_MAX_SHIFT);
     END_CS;
 }
 
@@ -550,8 +548,8 @@ void r300_emit_query_start(struct r300_context *r300, unsigned size, void*state)
 }
 
 
-static void r300_emit_query_finish(struct r300_context *r300,
-                                   struct r300_query *query)
+static void r300_emit_query_end_frag_pipes(struct r300_context *r300,
+                                           struct r300_query *query)
 {
     struct r300_capabilities* caps = &r300->screen->caps;
     CS_LOCALS(r300);
@@ -606,8 +604,8 @@ static void r300_emit_query_finish(struct r300_context *r300,
     END_CS;
 }
 
-static void rv530_emit_query_single(struct r300_context *r300,
-                                    struct r300_query *query)
+static void rv530_emit_query_end_single_z(struct r300_context *r300,
+                                          struct r300_query *query)
 {
     CS_LOCALS(r300);
 
@@ -619,8 +617,8 @@ static void rv530_emit_query_single(struct r300_context *r300,
     END_CS;
 }
 
-static void rv530_emit_query_double(struct r300_context *r300,
-                                    struct r300_query *query)
+static void rv530_emit_query_end_double_z(struct r300_context *r300,
+                                          struct r300_query *query)
 {
     CS_LOCALS(r300);
 
@@ -648,11 +646,13 @@ void r300_emit_query_end(struct r300_context* r300)
 
     if (caps->family == CHIP_FAMILY_RV530) {
         if (caps->num_z_pipes == 2)
-            rv530_emit_query_double(r300, query);
+            rv530_emit_query_end_double_z(r300, query);
         else
-            rv530_emit_query_single(r300, query);
+            rv530_emit_query_end_single_z(r300, query);
     } else 
-        r300_emit_query_finish(r300, query);
+        r300_emit_query_end_frag_pipes(r300, query);
+
+    query->begin_emitted = FALSE;
 }
 
 void r300_emit_rs_state(struct r300_context* r300, unsigned size, void* state)
@@ -667,7 +667,9 @@ void r300_emit_rs_state(struct r300_context* r300, unsigned size, void* state)
     OUT_CS_REG(R300_GB_AA_CONFIG, rs->antialiasing_config);
 
     OUT_CS_REG(R300_GA_POINT_SIZE, rs->point_size);
-    OUT_CS_REG(R300_GA_LINE_CNTL, rs->line_control);
+    OUT_CS_REG_SEQ(R300_GA_POINT_MINMAX, 2);
+    OUT_CS(rs->point_minmax);
+    OUT_CS(rs->line_control);
 
     if (rs->polygon_offset_enable) {
         scale = rs->depth_scale * 12;
@@ -714,6 +716,10 @@ void r300_emit_rs_block_state(struct r300_context* r300,
     unsigned count = (rs->inst_count & R300_RS_INST_COUNT_MASK) + 1;
     CS_LOCALS(r300);
 
+    if (SCREEN_DBG_ON(r300->screen, DBG_DRAW)) {
+        r500_dump_rs_block(rs);
+    }
+
     DBG(r300, DBG_DRAW, "r300: RS emit:\n");
 
     BEGIN_CS(size);
@@ -1003,16 +1009,16 @@ void r300_emit_viewport_state(struct r300_context* r300,
     struct r300_viewport_state* viewport = (struct r300_viewport_state*)state;
     CS_LOCALS(r300);
 
-     BEGIN_CS(size);
-     OUT_CS_REG_SEQ(R300_SE_VPORT_XSCALE, 6);
-     OUT_CS_32F(viewport->xscale);
-     OUT_CS_32F(viewport->xoffset);
-     OUT_CS_32F(viewport->yscale);
-     OUT_CS_32F(viewport->yoffset);
-     OUT_CS_32F(viewport->zscale);
-     OUT_CS_32F(viewport->zoffset);
-     OUT_CS_REG(R300_VAP_VTE_CNTL, viewport->vte_control);
-     END_CS;
+    BEGIN_CS(size);
+    OUT_CS_REG_SEQ(R300_SE_VPORT_XSCALE, 6);
+    OUT_CS_32F(viewport->xscale);
+    OUT_CS_32F(viewport->xoffset);
+    OUT_CS_32F(viewport->yscale);
+    OUT_CS_32F(viewport->yoffset);
+    OUT_CS_32F(viewport->zscale);
+    OUT_CS_32F(viewport->zoffset);
+    OUT_CS_REG(R300_VAP_VTE_CNTL, viewport->vte_control);
+    END_CS;
 }
 
 void r300_emit_ztop_state(struct r300_context* r300,
@@ -1094,7 +1100,8 @@ validate:
         }
     }
     /* ...occlusion query buffer... */
-    if (r300->query_start.dirty) {
+    if (r300->query_start.dirty ||
+        (r300->query_current && r300->query_current->begin_emitted)) {
         if (!r300_add_buffer(r300->rws, r300->oqbo,
                             0, RADEON_GEM_DOMAIN_GTT)) {
             r300->context.flush(&r300->context, 0, NULL);
@@ -1152,8 +1159,6 @@ 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;
 
index e78c6a3624f5c2a08f112445ab7a5352a770182c..d6876c1903f4b65ad66afc9d16737567e23b3d56 100644 (file)
@@ -1,5 +1,6 @@
 /*
  * Copyright 2008 Corbin Simpson <MostAwesomeDude@gmail.com>
+ * 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"),
@@ -37,6 +38,8 @@ static void r300_flush(struct pipe_context* pipe,
     struct r300_context *r300 = r300_context(pipe);
     struct r300_query *query;
     struct r300_atom *atom;
+    struct pipe_framebuffer_state *fb;
+    unsigned i;
 
     CS_LOCALS(r300);
     (void) cs_count;
@@ -48,15 +51,15 @@ static void r300_flush(struct pipe_context* pipe,
         draw_flush(r300->draw);
     }
 
-    r300_emit_query_end(r300);
-
     if (r300->dirty_hw) {
+        r300_emit_query_end(r300);
+
         FLUSH_CS;
         r300->dirty_hw = 0;
 
         /* New kitchen sink, baby. */
         foreach(atom, &r300->atom_list) {
-            if (atom->state) {
+            if (atom->state || atom->allow_null_state) {
                 atom->dirty = TRUE;
             }
         }
@@ -72,6 +75,39 @@ static void r300_flush(struct pipe_context* pipe,
     foreach(query, &r300->query_list) {
         query->flushed = TRUE;
     }
+
+    /* XXX
+     *
+     * This is a preliminary implementation of glFinish. Note that st/mesa
+     * uses a non-null fence when glFinish is called and then waits for
+     * the fence. Instead of returning the actual fence, we do the sync
+     * directly.
+     *
+     * The ideal implementation should use something like EmitIrqLocked and
+     * WaitIrq, or better, real fences.
+     *
+     * This feature degrades performance to the level of r300c for games that
+     * use glFinish a lot, even openarena does. Ideally we wouldn't need
+     * glFinish at all if we had proper throttling in swapbuffers so that
+     * the CPU wouldn't outrun the GPU by several frames, so this is basically
+     * a temporary fix for the input lag. Once swap&sync works with DRI2,
+     * I'll be happy to remove this code.
+     *
+     * - M. */
+    if (fence && r300->fb_state.state) {
+        fb = r300->fb_state.state;
+
+        for (i = 0; i < fb->nr_cbufs; i++) {
+            if (fb->cbufs[i]->texture) {
+                r300->rws->buffer_wait(r300->rws,
+                    r300_texture(fb->cbufs[i]->texture)->buffer);
+            }
+            if (fb->zsbuf) {
+                r300->rws->buffer_wait(r300->rws,
+                    r300_texture(fb->zsbuf->texture)->buffer);
+            }
+        }
+    }
 }
 
 void r300_init_flush_functions(struct r300_context* r300)
index 88303f074cd8a1039adf53e77b473fa91772abde..30aa0651399aeadbb3d2f57496418c934f26dba6 100644 (file)
@@ -137,6 +137,7 @@ static void get_external_state(
 {
     struct r300_textures_state *texstate = r300->textures_state.state;
     unsigned i;
+    unsigned char *swizzle;
 
     for (i = 0; i < texstate->sampler_state_count; i++) {
         struct r300_sampler_state* s = texstate->sampler_states[i];
@@ -146,9 +147,18 @@ static void get_external_state(
         }
 
         if (s->state.compare_mode == PIPE_TEX_COMPARE_R_TO_TEXTURE) {
-            /* XXX Gallium doesn't provide us with any information regarding
-             * this mode, so we are screwed. I'm setting 0 = LUMINANCE. */
-            state->unit[i].depth_texture_mode = 0;
+            state->unit[i].compare_mode_enabled = 1;
+
+            /* Pass depth texture swizzling to the compiler. */
+            if (texstate->sampler_views[i]) {
+                swizzle = texstate->sampler_views[i]->swizzle;
+
+                state->unit[i].depth_texture_swizzle =
+                    RC_MAKE_SWIZZLE(swizzle[0], swizzle[1],
+                                    swizzle[2], swizzle[3]);
+            } else {
+                state->unit[i].depth_texture_swizzle = RC_SWIZZLE_XYZW;
+            }
 
             /* Fortunately, no need to translate this. */
             state->unit[i].texture_compare_func = s->state.compare_func;
index 5c27796e894d3b93bac0c1c9621ee7983d6b7c6b..6acbac2219664411554c22b9b76ceb815d09f86a 100644 (file)
@@ -43,8 +43,6 @@ static struct pipe_query *r300_create_query(struct pipe_context *pipe,
     q->type = query_type;
     assert(q->type == PIPE_QUERY_OCCLUSION_COUNTER);
 
-    q->active = FALSE;
-
     if (r300screen->caps.family == CHIP_FAMILY_RV530)
         query_size = r300screen->caps.num_z_pipes * sizeof(uint32_t);
     else
@@ -59,6 +57,7 @@ static struct pipe_query *r300_create_query(struct pipe_context *pipe,
     /* XXX */
     if (q->offset >= 4096) {
         q->offset = 0;
+        fprintf(stderr, "r300: Rewinding OQBO...\n");
     }
 
     return (struct pipe_query*)q;
@@ -80,7 +79,12 @@ static void r300_begin_query(struct pipe_context* pipe,
     struct r300_context* r300 = r300_context(pipe);
     struct r300_query* q = (struct r300_query*)query;
 
-    assert(r300->query_current == NULL);
+    if (r300->query_current != NULL) {
+        fprintf(stderr, "r300: begin_query: "
+                "Some other query has already been started.\n");
+        assert(0);
+        return;
+    }
 
     pipe_buffer_write(pipe,
                      r300->oqbo,
@@ -97,10 +101,14 @@ static void r300_end_query(struct pipe_context* pipe,
                           struct pipe_query* query)
 {
     struct r300_context* r300 = r300_context(pipe);
-    struct r300_query* q = (struct r300_query*)query;
+
+    if ((struct r300_query*)query != r300->query_current) {
+        fprintf(stderr, "r300: end_query: Got invalid query.\n");
+        assert(0);
+        return;
+    }
 
     r300_emit_query_end(r300);
-    q->begin_emitted = false;
     r300->query_current = NULL;
 }
 
index 7c3a7902a49372a680284a926cae116cca95b9b5..e1f61982be223c8571e286b0976690c92ff6155a 100644 (file)
@@ -114,16 +114,79 @@ static uint32_t r300_provoking_vertex_fixes(struct r300_context *r300,
     return color_control;
 }
 
+static void r500_emit_index_offset(struct r300_context *r300, int index_bias)
+{
+    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,
+                   (index_bias & 0xFFFFFF) | (index_bias < 0 ? 1<<24 : 0));
+        END_CS;
+    } else {
+        if (index_bias) {
+            fprintf(stderr, "r300: Non-zero index bias is unsupported "
+                            "on this hardware.\n");
+            assert(0);
+        }
+    }
+}
+
+enum r300_prepare_flags {
+    PREP_FIRST_DRAW     = (1 << 0),
+    PREP_VALIDATE_VBOS  = (1 << 1),
+    PREP_EMIT_AOS       = (1 << 2),
+    PREP_INDEXED        = (1 << 3)
+};
+
 /* Check if the requested number of dwords is available in the CS and
- * if not, flush. Return TRUE if the flush occured. */
-static boolean r300_reserve_cs_space(struct r300_context *r300,
-                                     unsigned dwords)
+ * if not, flush. Then validate buffers and emit dirty state.
+ * Return TRUE if flush occured. */
+static void r300_prepare_for_rendering(struct r300_context *r300,
+                                       enum r300_prepare_flags flags,
+                                       struct pipe_resource *index_buffer,
+                                       unsigned cs_dwords,
+                                       unsigned aos_offset,
+                                       int index_bias)
 {
-    if (!r300->rws->check_cs(r300->rws, dwords)) {
+    boolean flushed = FALSE;
+    boolean first_draw = flags & PREP_FIRST_DRAW;
+    boolean emit_aos = flags & PREP_EMIT_AOS;
+
+    /* Stencil ref fallback. */
+    if (r300->stencil_ref_bf_fallback) {
+        cs_dwords = cs_dwords * 2 + 10;
+    }
+
+    /* Add dirty state, index offset, and AOS. */
+    if (first_draw) {
+        cs_dwords += r300_get_num_dirty_dwords(r300);
+
+        if (r300->screen->caps.is_r500)
+            cs_dwords += 2; /* emit_index_offset */
+
+        if (emit_aos)
+            cs_dwords += 55; /* emit_aos */
+    }
+
+    /* Emitted in flush. */
+    cs_dwords += 26; /* emit_query_end */
+
+    /* Reserve requested CS space. */
+    if (!r300->rws->check_cs(r300->rws, cs_dwords)) {
         r300->context.flush(&r300->context, 0, NULL);
-        return TRUE;
+        flushed = TRUE;
+    }
+
+    /* Validate buffers and emit dirty state if needed. */
+    if (first_draw || flushed) {
+        r300_emit_buffer_validate(r300, flags & PREP_VALIDATE_VBOS, index_buffer);
+        r300_emit_dirty_state(r300);
+        r500_emit_index_offset(r300, index_bias);
+        if (emit_aos)
+            r300_emit_aos(r300, aos_offset, flags & PREP_INDEXED);
     }
-    return FALSE;
 }
 
 static boolean immd_is_good_idea(struct r300_context *r300,
@@ -135,7 +198,15 @@ static boolean immd_is_good_idea(struct r300_context *r300,
     unsigned vertex_element_count = r300->velems->count;
     unsigned i, vbi;
 
-    if (count > 10 || DBG_ON(r300, DBG_NO_IMMD)) {
+    if (DBG_ON(r300, DBG_NO_IMMD)) {
+        return FALSE;
+    }
+
+    if (r300->draw) {
+        return FALSE;
+    }
+
+    if (count > 10) {
         return FALSE;
     }
 
@@ -166,24 +237,6 @@ 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,
@@ -235,11 +288,7 @@ 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) + 2 + dwords);
-    r300_emit_buffer_validate(r300, FALSE, NULL);
-    r300_emit_dirty_state(r300);
-
-    r500_emit_index_offset(r300, 0);
+    r300_prepare_for_rendering(r300, PREP_FIRST_DRAW, NULL, dwords, 0, 0);
 
     BEGIN_CS(dwords);
     OUT_CS_REG(R300_GA_COLOR_CONTROL,
@@ -291,8 +340,6 @@ void r500_emit_draw_arrays(struct r300_context *r300,
         return;
     }
 
-    r500_emit_index_offset(r300, 0);
-
     BEGIN_CS(7 + (alt_num_verts ? 2 : 0));
     if (alt_num_verts) {
         OUT_CS_REG(R500_VAP_ALT_NUM_VERTICES, count);
@@ -312,7 +359,6 @@ void r500_emit_draw_arrays(struct r300_context *r300,
 void r500_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
-                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
@@ -335,12 +381,6 @@ void r500_emit_draw_elements(struct r300_context *r300,
     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) {
         OUT_CS_REG(R500_VAP_ALT_NUM_VERTICES, count);
@@ -457,7 +497,6 @@ void r300_emit_draw_arrays(struct r300_context *r300,
 void r300_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
-                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
@@ -465,14 +504,14 @@ void r300_emit_draw_elements(struct r300_context *r300,
                              unsigned count)
 {
     if (!r300->stencil_ref_bf_fallback) {
-        r500_emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+        r500_emit_draw_elements(r300, indexBuffer, indexSize,
                                 minIndex, maxIndex, mode, start, count);
     } else {
         r300_begin_stencil_ref_fallback(r300);
-        r500_emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+        r500_emit_draw_elements(r300, indexBuffer, indexSize,
                                 minIndex, maxIndex, mode, start, count);
         r300_switch_stencil_ref_side(r300);
-        r500_emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+        r500_emit_draw_elements(r300, indexBuffer, indexSize,
                                 minIndex, maxIndex, mode, start, count);
         r300_end_stencil_ref_fallback(r300);
     }
@@ -576,36 +615,33 @@ void r300_draw_range_elements(struct pipe_context* pipe,
     }
 
     r300_update_derived_state(r300);
-
     r300_upload_index_buffer(r300, &indexBuffer, indexSize, start, count);
 
-    /* 128 dwords for emit_aos and emit_draw_elements */
-    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, TRUE);
+    /* 15 dwords for emit_draw_elements */
+    r300_prepare_for_rendering(r300,
+        PREP_FIRST_DRAW | PREP_VALIDATE_VBOS | PREP_EMIT_AOS | PREP_INDEXED,
+        indexBuffer, 15, 0, indexBias);
 
     u_upload_flush(r300->upload_vb);
     u_upload_flush(r300->upload_ib);
     if (alt_num_verts || count <= 65535) {
-        r300->emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+        r300->emit_draw_elements(r300, indexBuffer, indexSize,
                                  minIndex, maxIndex, mode, start, count);
     } else {
         do {
             short_count = MIN2(count, 65534);
-            r300->emit_draw_elements(r300, indexBuffer, indexSize, indexBias,
+            r300->emit_draw_elements(r300, indexBuffer, indexSize,
                                      minIndex, maxIndex,
                                      mode, start, short_count);
 
             start += short_count;
             count -= short_count;
 
-            /* 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, TRUE);
+            /* 15 dwords for emit_draw_elements */
+            if (count) {
+                r300_prepare_for_rendering(r300,
+                    PREP_VALIDATE_VBOS | PREP_EMIT_AOS | PREP_INDEXED,
+                    indexBuffer, 15, 0, indexBias);
             }
         } while (count);
     }
@@ -650,30 +686,25 @@ void r300_draw_arrays(struct pipe_context* pipe, unsigned mode,
     if (immd_is_good_idea(r300, count)) {
         r300->emit_draw_arrays_immediate(r300, mode, start, count);
     } else {
-        /* Make sure there are at least 128 spare dwords in the command buffer.
-         * (most of it being consumed by emit_aos) */
-        r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + 128);
-        r300_emit_buffer_validate(r300, TRUE, NULL);
-        r300_emit_dirty_state(r300);
+        /* 9 spare dwords for emit_draw_arrays. */
+        r300_prepare_for_rendering(r300, PREP_FIRST_DRAW | PREP_VALIDATE_VBOS | PREP_EMIT_AOS,
+                               NULL, 9, start, 0);
 
         if (alt_num_verts || count <= 65535) {
-            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, 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.
-                 * 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);
+                /* 9 spare dwords for emit_draw_arrays. */
+                if (count) {
+                    r300_prepare_for_rendering(r300,
+                        PREP_VALIDATE_VBOS | PREP_EMIT_AOS, NULL, 9,
+                        start, 0);
                 }
             } while (count);
         }
@@ -704,6 +735,8 @@ void r300_swtcl_draw_arrays(struct pipe_context* pipe,
         return;
     }
 
+    r300_update_derived_state(r300);
+
     for (i = 0; i < r300->vertex_buffer_count; i++) {
         void* buf = pipe_buffer_map(pipe,
                                     r300->vertex_buffer[i].buffer,
@@ -716,6 +749,10 @@ void r300_swtcl_draw_arrays(struct pipe_context* pipe,
 
     draw_arrays(r300->draw, mode, start, count);
 
+    /* XXX Not sure whether this is the best fix.
+     * It prevents CS from being rejected and weird assertion failures. */
+    draw_flush(r300->draw);
+
     for (i = 0; i < r300->vertex_buffer_count; i++) {
         pipe_buffer_unmap(pipe, r300->vertex_buffer[i].buffer,
                          vb_transfer[i]);
@@ -748,6 +785,8 @@ void r300_swtcl_draw_range_elements(struct pipe_context* pipe,
         return;
     }
 
+    r300_update_derived_state(r300);
+
     for (i = 0; i < r300->vertex_buffer_count; i++) {
         void* buf = pipe_buffer_map(pipe,
                                     r300->vertex_buffer[i].buffer,
@@ -763,6 +802,10 @@ void r300_swtcl_draw_range_elements(struct pipe_context* pipe,
 
     draw_arrays(r300->draw, mode, start, count);
 
+    /* XXX Not sure whether this is the best fix.
+     * It prevents CS from being rejected and weird assertion failures. */
+    draw_flush(r300->draw);
+
     for (i = 0; i < r300->vertex_buffer_count; i++) {
         pipe_buffer_unmap(pipe, r300->vertex_buffer[i].buffer,
                          vb_transfer[i]);
@@ -796,7 +839,7 @@ struct r300_render {
     size_t vbo_max_used;
     void * vbo_ptr;
 
-   struct pipe_transfer *vbo_transfer;
+    struct pipe_transfer *vbo_transfer;
 };
 
 static INLINE struct r300_render*
@@ -811,8 +854,6 @@ r300_render_get_vertex_info(struct vbuf_render* render)
     struct r300_render* r300render = r300_render(render);
     struct r300_context* r300 = r300render->r300;
 
-    r300_update_derived_state(r300);
-
     return &r300->vertex_info;
 }
 
@@ -860,10 +901,6 @@ static void r300_render_unmap_vertices(struct vbuf_render* render,
 {
     struct r300_render* r300render = r300_render(render);
     struct pipe_context* context = &r300render->r300->context;
-    CS_LOCALS(r300render->r300);
-    BEGIN_CS(2);
-    OUT_CS_REG(R300_VAP_VF_MAX_VTX_INDX, max);
-    END_CS;
 
     r300render->vbo_max_used = MAX2(r300render->vbo_max_used,
                                     r300render->vertex_size * (max + 1));
@@ -895,42 +932,64 @@ static void r500_render_draw_arrays(struct vbuf_render* render,
 {
     struct r300_render* r300render = r300_render(render);
     struct r300_context* r300 = r300render->r300;
+    uint8_t* ptr;
+    unsigned i;
+    unsigned dwords = 6;
 
     CS_LOCALS(r300);
 
-    r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + 2);
-    r300_emit_buffer_validate(r300, FALSE, NULL);
-    r300_emit_dirty_state(r300);
+    (void) i; (void) ptr;
+
+    r300_prepare_for_rendering(r300, PREP_FIRST_DRAW, NULL, dwords, 0, 0);
 
     DBG(r300, DBG_DRAW, "r300: Doing vbuf render, count %d\n", count);
 
-    r500_emit_index_offset(r300, 0);
+    /* Uncomment to dump all VBOs rendered through this interface.
+     * Slow and noisy!
+    ptr = pipe_buffer_map(&r300render->r300->context,
+                          r300render->vbo, PIPE_TRANSFER_READ,
+                          &r300render->vbo_transfer);
 
-    BEGIN_CS(2);
+    for (i = 0; i < count; i++) {
+        printf("r300: Vertex %d\n", i);
+        draw_dump_emitted_vertex(&r300->vertex_info, ptr);
+        ptr += r300->vertex_info.size * 4;
+        printf("\n");
+    }
+
+    pipe_buffer_unmap(&r300render->r300->context, r300render->vbo,
+        r300render->vbo_transfer);
+    */
+
+    BEGIN_CS(dwords);
+    OUT_CS_REG(R300_GA_COLOR_CONTROL,
+            r300_provoking_vertex_fixes(r300, r300render->prim));
+    OUT_CS_REG(R300_VAP_VF_MAX_VTX_INDX, count - 1);
     OUT_CS_PKT3(R300_PACKET3_3D_DRAW_VBUF_2, 0);
     OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_VERTEX_LIST | (count << 16) |
            r300render->hwprim);
     END_CS;
 }
 
-static void r500_render_draw(struct vbuf_render* render,
-                             const ushort* indices,
-                             uint count)
+static void r500_render_draw_elements(struct vbuf_render* render,
+                                      const ushort* indices,
+                                      uint count)
 {
     struct r300_render* r300render = r300_render(render);
     struct r300_context* r300 = r300render->r300;
     int i;
-    unsigned dwords = 2 + (count+1)/2;
+    unsigned dwords = 6 + (count+1)/2;
+    unsigned max_index = (r300render->vbo_size - r300render->vbo_offset) /
+                         (r300render->r300->vertex_info.size * 4) - 1;
 
     CS_LOCALS(r300);
 
-    r300_reserve_cs_space(r300, r300_get_num_dirty_dwords(r300) + dwords);
-    r300_emit_buffer_validate(r300, FALSE, NULL);
-    r300_emit_dirty_state(r300);
-
-    r500_emit_index_offset(r300, 0);
+    r300_prepare_for_rendering(r300, PREP_FIRST_DRAW, NULL, dwords, 0, 0);
 
     BEGIN_CS(dwords);
+    OUT_CS_REG(R300_GA_COLOR_CONTROL,
+            r300_provoking_vertex_fixes(r300, r300render->prim));
+    OUT_CS_REG(R300_VAP_VF_MAX_VTX_INDX, max_index);
     OUT_CS_PKT3(R300_PACKET3_3D_DRAW_INDX_2, (count+1)/2);
     OUT_CS(R300_VAP_VF_CNTL__PRIM_WALK_INDICES | (count << 16) |
            r300render->hwprim);
@@ -960,19 +1019,19 @@ static void r300_render_draw_arrays(struct vbuf_render* render,
     }
 }
 
-static void r300_render_draw(struct vbuf_render* render,
-                             const ushort* indices,
-                             uint count)
+static void r300_render_draw_elements(struct vbuf_render* render,
+                                      const ushort* indices,
+                                      uint count)
 {
     struct r300_context* r300 = r300_render(render)->r300;
 
     if (!r300->stencil_ref_bf_fallback) {
-        r500_render_draw(render, indices, count);
+        r500_render_draw_elements(render, indices, count);
     } else {
         r300_begin_stencil_ref_fallback(r300);
-        r500_render_draw(render, indices, count);
+        r500_render_draw_elements(render, indices, count);
         r300_switch_stencil_ref_side(r300);
-        r500_render_draw(render, indices, count);
+        r500_render_draw_elements(render, indices, count);
         r300_end_stencil_ref_fallback(r300);
     }
 }
@@ -998,10 +1057,10 @@ static struct vbuf_render* r300_render_create(struct r300_context* r300)
     r300render->base.unmap_vertices = r300_render_unmap_vertices;
     r300render->base.set_primitive = r300_render_set_primitive;
     if (r300->screen->caps.is_r500) {
-        r300render->base.draw = r500_render_draw;
+        r300render->base.draw_elements = r500_render_draw_elements;
         r300render->base.draw_arrays = r500_render_draw_arrays;
     } else {
-        r300render->base.draw = r300_render_draw;
+        r300render->base.draw_elements = r300_render_draw_elements;
         r300render->base.draw_arrays = r300_render_draw_arrays;
     }
     r300render->base.release_vertices = r300_render_release_vertices;
index 4e78914c1bacd6f67ddecaeff6b4e9533aa05b60..71dea218be6ee72812c6daf0b5d070ef8c7508c6 100644 (file)
@@ -35,7 +35,6 @@ void r500_emit_draw_arrays(struct r300_context *r300,
 void r500_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
-                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
@@ -54,7 +53,6 @@ void r300_emit_draw_arrays(struct r300_context *r300,
 void r300_emit_draw_elements(struct r300_context *r300,
                              struct pipe_resource* indexBuffer,
                              unsigned indexSize,
-                             int indexBias,
                              unsigned minIndex,
                              unsigned maxIndex,
                              unsigned mode,
index b7f1c617f0390d63f732c2d725331295a1aa96b6..ef0255066b798061a30f74924c5c2557e5ba3d1a 100644 (file)
@@ -76,20 +76,19 @@ static const char* r300_get_name(struct pipe_screen* pscreen)
     return chip_families[r300screen->caps.family];
 }
 
-static int r300_get_param(struct pipe_screen* pscreen, int param)
+static int r300_get_param(struct pipe_screen* pscreen, enum pipe_cap param)
 {
     struct r300_screen* r300screen = r300_screen(pscreen);
+    boolean is_r400 = r300screen->caps.is_r400;
+    boolean is_r500 = r300screen->caps.is_r500;
+
+    /* XXX extended shader capabilities of r400 unimplemented */
+    is_r400 = FALSE;
 
     switch (param) {
-        case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
-        case PIPE_CAP_MAX_COMBINED_SAMPLERS:
-            return r300screen->caps.num_tex_units;
+        /* Supported features (boolean caps). */
         case PIPE_CAP_NPOT_TEXTURES:
-            /* XXX enable now to get GL2.1 API,
-             * figure out later how to emulate this */
-            return 1;
         case PIPE_CAP_TWO_SIDED_STENCIL:
-            return 1;
         case PIPE_CAP_GLSL:
             /* I'll be frank. This is a lie.
              *
@@ -106,59 +105,103 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
              *
              * ~ C.
              */
-            return 1;
-        case PIPE_CAP_DUAL_SOURCE_BLEND:
-            return 0;
         case PIPE_CAP_ANISOTROPIC_FILTER:
-            return 1;
         case PIPE_CAP_POINT_SPRITE:
-            return 1;
-        case PIPE_CAP_MAX_RENDER_TARGETS:
-            return 4;
         case PIPE_CAP_OCCLUSION_QUERY:
-            return 1;
         case PIPE_CAP_TEXTURE_SHADOW_MAP:
-            return 1;
-        case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
-        case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
-        case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
-            if (r300screen->caps.is_r500) {
-                /* 13 == 4096 */
-                return 13;
-            } else {
-                /* 12 == 2048 */
-                return 12;
-            }
         case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
-            return 1;
         case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
+        case PIPE_CAP_BLEND_EQUATION_SEPARATE:
             return 1;
-        case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
-            return 0;
+
+        /* Unsupported features (boolean caps). */
+        case PIPE_CAP_TIMER_QUERY:
+        case PIPE_CAP_DUAL_SOURCE_BLEND:
         case PIPE_CAP_TGSI_CONT_SUPPORTED:
+        case PIPE_CAP_INDEP_BLEND_ENABLE:
+        case PIPE_CAP_INDEP_BLEND_FUNC:
             return 0;
-        case PIPE_CAP_BLEND_EQUATION_SEPARATE:
-            return 1;
+
+        /* Texturing. */
+        case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
+        case PIPE_CAP_MAX_COMBINED_SAMPLERS:
+            return r300screen->caps.num_tex_units;
+        case PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS:
+            return 0;
+        case PIPE_CAP_MAX_TEXTURE_2D_LEVELS:
+        case PIPE_CAP_MAX_TEXTURE_3D_LEVELS:
+        case PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS:
+            /* 13 == 4096, 12 == 2048 */
+            return is_r500 ? 13 : 12;
+
+        /* Render targets. */
+        case PIPE_CAP_MAX_RENDER_TARGETS:
+            return 4;
+
+        /* General shader limits and features. */
         case PIPE_CAP_SM3:
-            if (r300screen->caps.is_r500) {
-                return 1;
-            } else {
-                return 0;
-            }
+            return is_r500 ? 1 : 0;
         case PIPE_CAP_MAX_CONST_BUFFERS:
             return 1;
         case PIPE_CAP_MAX_CONST_BUFFER_SIZE:
             return 256;
-        case PIPE_CAP_INDEP_BLEND_ENABLE:
-            return 0;
-        case PIPE_CAP_INDEP_BLEND_FUNC:
-            return 0;
+
+        /* Fragment coordinate conventions. */
         case PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT:
         case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
            return 1;
         case PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT:
         case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
             return 0;
+
+        /* Fragment shader limits. */
+        case PIPE_CAP_MAX_FS_INSTRUCTIONS:
+            return is_r500 || is_r400 ? 512 : 96;
+        case PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS:
+            return is_r500 || is_r400 ? 512 : 64;
+        case PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS:
+            return is_r500 || is_r400 ? 512 : 32;
+        case PIPE_CAP_MAX_FS_TEX_INDIRECTIONS:
+            return is_r500 ? 511 : 4;
+        case PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH:
+            return is_r500 ? 64 : 0; /* Actually unlimited on r500. */
+        case PIPE_CAP_MAX_FS_INPUTS:
+            /* 2 colors + 8 texcoords are always supported
+             * (minus fog and wpos).
+             *
+             * R500 has the ability to turn 3rd and 4th color into
+             * additional texcoords but there is no two-sided color
+             * selection then. However the facing bit can be used instead. */
+            return 10;
+        case PIPE_CAP_MAX_FS_CONSTS:
+            return is_r500 ? 256 : 32;
+        case PIPE_CAP_MAX_FS_TEMPS:
+            return is_r500 ? 128 : is_r400 ? 64 : 32;
+        case PIPE_CAP_MAX_FS_ADDRS:
+            return 0;
+        case PIPE_CAP_MAX_FS_PREDS:
+            return is_r500 ? 1 : 0;
+
+        /* Vertex shader limits. */
+        case PIPE_CAP_MAX_VS_INSTRUCTIONS:
+        case PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS:
+            return is_r500 ? 1024 : 256;
+        case PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS:
+        case PIPE_CAP_MAX_VS_TEX_INDIRECTIONS:
+            return 0;
+        case PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH:
+            return is_r500 ? 4 : 0; /* For loops; not sure about conditionals. */
+        case PIPE_CAP_MAX_VS_INPUTS:
+            return 16;
+        case PIPE_CAP_MAX_VS_CONSTS:
+            return 256;
+        case PIPE_CAP_MAX_VS_TEMPS:
+            return 32;
+        case PIPE_CAP_MAX_VS_ADDRS:
+            return 1; /* XXX guessed */
+        case PIPE_CAP_MAX_VS_PREDS:
+            return is_r500 ? 4 : 0; /* XXX guessed. */
+
         default:
             fprintf(stderr, "r300: Implementation error: Bad param %d\n",
                 param);
@@ -166,7 +209,7 @@ static int r300_get_param(struct pipe_screen* pscreen, int param)
     }
 }
 
-static float r300_get_paramf(struct pipe_screen* pscreen, int param)
+static float r300_get_paramf(struct pipe_screen* pscreen, enum pipe_cap param)
 {
     struct r300_screen* r300screen = r300_screen(pscreen);
 
index d58aa138a704c3d96e90ce45eba28ee11252ddd8..29492024fe3ab92c46411eec07031cb73eb1bea1 100644 (file)
@@ -61,19 +61,23 @@ static INLINE struct r300_screen* r300_screen(struct pipe_screen* screen) {
  * those changes.
  */
 /*@{*/
-#define DBG_HELP    0x0000001
-#define DBG_FP      0x0000002
-#define DBG_VP      0x0000004
-#define DBG_CS      0x0000008
-#define DBG_DRAW    0x0000010
-#define DBG_TEX     0x0000020
-#define DBG_FALL    0x0000040
-#define DBG_ANISOHQ 0x0000080
-#define DBG_NO_TILING 0x0000100
-#define DBG_NO_IMMD 0x0000200
-#define DBG_STATS   0x0000400
-#define DBG_RS      0x0000800
-#define DBG_TEXALLOC 0x0001000
+#define DBG_HELP        (1 << 0)
+/* Logging. */
+#define DBG_FP          (1 << 1)
+#define DBG_VP          (1 << 2)
+#define DBG_CS          (1 << 3)
+#define DBG_DRAW        (1 << 4)
+#define DBG_TEX         (1 << 5)
+#define DBG_TEXALLOC    (1 << 6)
+#define DBG_RS          (1 << 7)
+#define DBG_FALL        (1 << 8)
+#define DBG_FB          (1 << 9)
+/* Features. */
+#define DBG_ANISOHQ     (1 << 16)
+#define DBG_NO_TILING   (1 << 17)
+#define DBG_NO_IMMD     (1 << 18)
+/* Statistics. */
+#define DBG_STATS       (1 << 24)
 /*@}*/
 
 static INLINE boolean SCREEN_DBG_ON(struct r300_screen * screen, unsigned flags)
index 4f41530c16a648464a3014dd2c420431645dd685..67e09362d8e38fbef6ef8ce270c42f8d40d289b6 100644 (file)
@@ -395,13 +395,13 @@ static void r300_set_clip_state(struct pipe_context* pipe,
     if (r300->screen->caps.has_tcl) {
         memcpy(r300->clip_state.state, state, sizeof(struct pipe_clip_state));
         r300->clip_state.size = 29;
+
+        r300->clip_state.dirty = TRUE;
     } else {
         draw_flush(r300->draw);
         draw_set_clip_state(r300->draw, state);
         r300->clip_state.size = 2;
     }
-
-    r300->clip_state.dirty = TRUE;
 }
 
 static void
@@ -573,13 +573,35 @@ static void r300_fb_set_tiling_flags(struct r300_context *r300,
     }
 }
 
+static void r300_print_fb_surf_info(struct pipe_surface *surf, unsigned index,
+                                    const char *binding)
+{
+    struct pipe_resource *tex = surf->texture;
+    struct r300_texture *rtex = r300_texture(tex);
+
+    fprintf(stderr,
+            "r300:   %s[%i] Dim: %ix%i, Offset: %i, ZSlice: %i, "
+            "Face: %i, Level: %i, Format: %s\n"
+
+            "r300:     TEX: Macro: %s, Micro: %s, Pitch: %i, "
+            "Dim: %ix%ix%i, LastLevel: %i, Format: %s\n",
+
+            binding, index, surf->width, surf->height, surf->offset,
+            surf->zslice, surf->face, surf->level,
+            util_format_short_name(surf->format),
+
+            rtex->macrotile ? "YES" : " NO", rtex->microtile ? "YES" : " NO",
+            rtex->hwpitch[0], tex->width0, tex->height0, tex->depth0,
+            tex->last_level, util_format_short_name(tex->format));
+}
+
 static void
     r300_set_framebuffer_state(struct pipe_context* pipe,
                                const struct pipe_framebuffer_state* state)
 {
     struct r300_context* r300 = r300_context(pipe);
     struct pipe_framebuffer_state *old_state = r300->fb_state.state;
-    unsigned max_width, max_height;
+    unsigned max_width, max_height, i;
     uint32_t zbuffer_bpp = 0;
 
     if (state->nr_cbufs > 4) {
@@ -623,7 +645,7 @@ static void
     memcpy(r300->fb_state.state, state, sizeof(struct pipe_framebuffer_state));
 
     r300->fb_state.size = (10 * state->nr_cbufs) + (2 * (4 - state->nr_cbufs)) +
-                          (state->zsbuf ? 10 : 0) + 11;
+                          (state->zsbuf ? 10 : 0) + 9;
 
     /* Polygon offset depends on the zbuffer bit depth. */
     if (state->zsbuf && r300->polygon_offset_enabled) {
@@ -641,6 +663,16 @@ static void
             r300->rs_state.dirty = TRUE;
         }
     }
+
+    if (DBG_ON(r300, DBG_FB)) {
+        fprintf(stderr, "r300: set_framebuffer_state:\n");
+        for (i = 0; i < state->nr_cbufs; i++) {
+            r300_print_fb_surf_info(state->cbufs[i], i, "CB");
+        }
+        if (state->zsbuf) {
+            r300_print_fb_surf_info(state->zsbuf, 0, "ZB");
+        }
+    }
 }
 
 /* Create fragment shader state. */
@@ -729,9 +761,14 @@ static void* r300_create_rs_state(struct pipe_context* pipe,
 {
     struct r300_rs_state* rs = CALLOC_STRUCT(r300_rs_state);
     int i;
+    float psiz;
 
-    /* Copy rasterizer state for Draw. */
+    /* Copy rasterizer state. */
     rs->rs = *state;
+    rs->rs_draw = *state;
+
+    /* Override some states for Draw. */
+    rs->rs_draw.sprite_coord_enable = 0; /* We can do this in HW. */
 
 #ifdef PIPE_ARCH_LITTLE_ENDIAN
     rs->vap_control_status = R300_VC_NO_SWAP;
@@ -744,60 +781,64 @@ static void* r300_create_rs_state(struct pipe_context* pipe,
         rs->vap_control_status |= R300_VAP_TCL_BYPASS;
     }
 
-    rs->point_size = pack_float_16_6x(state->point_size) |
+    /* Point size width and height. */
+    rs->point_size =
+        pack_float_16_6x(state->point_size) |
         (pack_float_16_6x(state->point_size) << R300_POINTSIZE_X_SHIFT);
 
+    /* Point size clamping. */
+    if (state->point_size_per_vertex) {
+        /* Per-vertex point size.
+         * Clamp to [0, max FB size] */
+        psiz = pipe->screen->get_paramf(pipe->screen,
+                                        PIPE_CAP_MAX_POINT_WIDTH);
+        rs->point_minmax =
+            pack_float_16_6x(psiz) << R300_GA_POINT_MINMAX_MAX_SHIFT;
+    } else {
+        /* We cannot disable the point-size vertex output,
+         * so clamp it. */
+        psiz = state->point_size;
+        rs->point_minmax =
+            (pack_float_16_6x(psiz) << R300_GA_POINT_MINMAX_MIN_SHIFT) |
+            (pack_float_16_6x(psiz) << R300_GA_POINT_MINMAX_MAX_SHIFT);
+    }
+
+    /* Line control. */
     rs->line_control = pack_float_16_6x(state->line_width) |
         R300_GA_LINE_CNTL_END_TYPE_COMP;
 
     /* Enable polygon mode */
-    if (state->fill_cw != PIPE_POLYGON_MODE_FILL ||
-        state->fill_ccw != PIPE_POLYGON_MODE_FILL) {
+    if (state->fill_front != PIPE_POLYGON_MODE_FILL ||
+        state->fill_back != PIPE_POLYGON_MODE_FILL) {
         rs->polygon_mode = R300_GA_POLY_MODE_DUAL;
     }
 
-    /* Radeons don't think in "CW/CCW", they think in "front/back". */
-    if (state->front_winding == PIPE_WINDING_CW) {
-        rs->cull_mode = R300_FRONT_FACE_CW;
-
-        /* Polygon offset */
-        if (state->offset_cw) {
-            rs->polygon_offset_enable |= R300_FRONT_ENABLE;
-        }
-        if (state->offset_ccw) {
-            rs->polygon_offset_enable |= R300_BACK_ENABLE;
-        }
-
-        /* Polygon mode */
-        if (rs->polygon_mode) {
-            rs->polygon_mode |=
-                r300_translate_polygon_mode_front(state->fill_cw);
-            rs->polygon_mode |=
-                r300_translate_polygon_mode_back(state->fill_ccw);
-        }
-    } else {
+    /* Front face */
+    if (state->front_ccw) 
         rs->cull_mode = R300_FRONT_FACE_CCW;
+    else
+        rs->cull_mode = R300_FRONT_FACE_CW;
 
-        /* Polygon offset */
-        if (state->offset_ccw) {
-            rs->polygon_offset_enable |= R300_FRONT_ENABLE;
-        }
-        if (state->offset_cw) {
-            rs->polygon_offset_enable |= R300_BACK_ENABLE;
-        }
+    /* Polygon offset */
+    if (util_get_offset(state, state->fill_front)) {
+       rs->polygon_offset_enable |= R300_FRONT_ENABLE;
+    }
+    if (util_get_offset(state, state->fill_back)) {
+       rs->polygon_offset_enable |= R300_BACK_ENABLE;
+    }
 
-        /* Polygon mode */
-        if (rs->polygon_mode) {
-            rs->polygon_mode |=
-                r300_translate_polygon_mode_front(state->fill_ccw);
-            rs->polygon_mode |=
-                r300_translate_polygon_mode_back(state->fill_cw);
-        }
+    /* Polygon mode */
+    if (rs->polygon_mode) {
+       rs->polygon_mode |=
+          r300_translate_polygon_mode_front(state->fill_front);
+       rs->polygon_mode |=
+          r300_translate_polygon_mode_back(state->fill_back);
     }
-    if (state->front_winding & state->cull_mode) {
+
+    if (state->cull_face & PIPE_FACE_FRONT) {
         rs->cull_mode |= R300_CULL_FRONT;
     }
-    if (~(state->front_winding) & state->cull_mode) {
+    if (state->cull_face & PIPE_FACE_BACK) {
         rs->cull_mode |= R300_CULL_BACK;
     }
 
@@ -856,24 +897,30 @@ static void r300_bind_rs_state(struct pipe_context* pipe, void* state)
     struct r300_context* r300 = r300_context(pipe);
     struct r300_rs_state* rs = (struct r300_rs_state*)state;
     int last_sprite_coord_enable = r300->sprite_coord_enable;
+    boolean last_two_sided_color = r300->two_sided_color;
 
-    if (r300->draw) {
+    if (r300->draw && rs) {
         draw_flush(r300->draw);
-        draw_set_rasterizer_state(r300->draw, &rs->rs, state);
+        draw_set_rasterizer_state(r300->draw, &rs->rs_draw, state);
     }
 
     if (rs) {
-        r300->polygon_offset_enabled = rs->rs.offset_cw || rs->rs.offset_ccw;
+        r300->polygon_offset_enabled = (rs->rs.offset_point ||
+                                        rs->rs.offset_line ||
+                                        rs->rs.offset_tri);
         r300->sprite_coord_enable = rs->rs.sprite_coord_enable;
+        r300->two_sided_color = rs->rs.light_twoside;
     } else {
         r300->polygon_offset_enabled = FALSE;
         r300->sprite_coord_enable = 0;
+        r300->two_sided_color = FALSE;
     }
 
     UPDATE_STATE(state, r300->rs_state);
-    r300->rs_state.size = 26 + (r300->polygon_offset_enabled ? 5 : 0);
+    r300->rs_state.size = 27 + (r300->polygon_offset_enabled ? 5 : 0);
 
-    if (last_sprite_coord_enable != r300->sprite_coord_enable) {
+    if (last_sprite_coord_enable != r300->sprite_coord_enable ||
+        last_two_sided_color != r300->two_sided_color) {
         r300->rs_block_state.dirty = TRUE;
     }
 }
@@ -913,7 +960,7 @@ static void*
     sampler->min_lod = MAX2((unsigned)state->min_lod, 0);
     sampler->max_lod = MAX2((unsigned)ceilf(state->max_lod), 0);
 
-    lod_bias = CLAMP((int)(state->lod_bias * 32), -(1 << 9), (1 << 9) - 1);
+    lod_bias = CLAMP((int)(state->lod_bias * 32 + 1), -(1 << 9), (1 << 9) - 1);
 
     sampler->filter1 |= lod_bias << R300_LOD_BIAS_SHIFT;
 
@@ -1028,7 +1075,6 @@ r300_create_sampler_view(struct pipe_context *pipe,
 {
     struct r300_sampler_view *view = CALLOC_STRUCT(r300_sampler_view);
     struct r300_texture *tex = r300_texture(texture);
-    unsigned char swizzle[4];
 
     if (view) {
         view->base = *templ;
@@ -1037,14 +1083,14 @@ r300_create_sampler_view(struct pipe_context *pipe,
         view->base.texture = NULL;
         pipe_resource_reference(&view->base.texture, texture);
 
-        swizzle[0] = templ->swizzle_r;
-        swizzle[1] = templ->swizzle_g;
-        swizzle[2] = templ->swizzle_b;
-        swizzle[3] = templ->swizzle_a;
+        view->swizzle[0] = templ->swizzle_r;
+        view->swizzle[1] = templ->swizzle_g;
+        view->swizzle[2] = templ->swizzle_b;
+        view->swizzle[3] = templ->swizzle_a;
 
         view->format = tex->tx_format;
         view->format.format1 |= r300_translate_texformat(templ->format,
-                                                         swizzle);
+                                                         view->swizzle);
         if (r300_screen(pipe->screen)->caps.is_r500) {
             view->format.format2 |= r500_tx_format_msb_bit(templ->format);
         }
@@ -1081,6 +1127,13 @@ static void r300_set_viewport_state(struct pipe_context* pipe,
 
     r300->viewport = *state;
 
+    if (r300->draw) {
+        draw_flush(r300->draw);
+        draw_set_viewport_state(r300->draw, state);
+        viewport->vte_control = R300_VTX_XY_FMT | R300_VTX_Z_FMT;
+        return;
+    }
+
     /* Do the transform in HW. */
     viewport->vte_control = R300_VTX_W0_FMT;
 
@@ -1190,7 +1243,7 @@ static void r300_set_vertex_buffers(struct pipe_context* pipe,
     }
 }
 
-/* Update the PSC tables. */
+/* Initialize the PSC tables. */
 static void r300_vertex_psc(struct r300_vertex_element_state *velems)
 {
     struct r300_vertex_stream_state *vstream = &velems->vertex_stream;
@@ -1329,7 +1382,6 @@ static void* r300_create_vertex_elements_state(struct pipe_context* pipe,
                     abort();
                 }
             }
-
         }
     }
     return velems;
@@ -1350,6 +1402,7 @@ static void r300_bind_vertex_elements_state(struct pipe_context *pipe,
     if (r300->draw) {
         draw_flush(r300->draw);
         draw_set_vertex_elements(r300->draw, velems->count, velems->velem);
+        return;
     }
 
     UPDATE_STATE(&velems->vertex_stream, r300->vertex_stream_state);
@@ -1372,8 +1425,10 @@ static void* r300_create_vs_state(struct pipe_context* pipe,
     vs->state = *shader;
     vs->state.tokens = tgsi_dup_tokens(shader->tokens);
 
+    r300_init_vs_outputs(vs);
+
     if (r300->screen->caps.has_tcl) {
-        r300_translate_vertex_shader(r300, vs, vs->state.tokens);
+        r300_translate_vertex_shader(r300, vs);
     } else {
         vs->draw_vs = draw_create_vertex_shader(r300->draw, shader);
     }
@@ -1443,7 +1498,7 @@ static void r300_set_constant_buffer(struct pipe_context *pipe,
     struct r300_constant_buffer *cbuf;
     struct pipe_transfer *tr;
     void *mapped;
-    int max_size = 0;
+    int max_size = 0, max_size_bytes = 0, clamped_size = 0;
 
     switch (shader) {
         case PIPE_SHADER_VERTEX:
@@ -1462,6 +1517,7 @@ static void r300_set_constant_buffer(struct pipe_context *pipe,
             assert(0);
             return;
     }
+    max_size_bytes = max_size * 4 * sizeof(float);
 
     if (buf == NULL || buf->width0 == 0 ||
         (mapped = pipe_buffer_map(pipe, buf, PIPE_TRANSFER_READ, &tr)) == NULL)
@@ -1470,19 +1526,21 @@ static void r300_set_constant_buffer(struct pipe_context *pipe,
         return;
     }
 
-    assert((buf->width0 % 4 * sizeof(float)) == 0);
+    if (shader == PIPE_SHADER_FRAGMENT ||
+        (shader == PIPE_SHADER_VERTEX && r300->screen->caps.has_tcl)) {
+        assert((buf->width0 % (4 * sizeof(float))) == 0);
 
-    /* Check the size of the constant buffer. */
-    /* XXX Subtract immediates and RC_STATE_* variables. */
-    if (buf->width0 > (sizeof(float) * 4 * max_size)) {
-        fprintf(stderr, "r300: Max size of the constant buffer is "
-                      "%i*4 floats.\n", max_size);
-        abort();
-    }
+        /* Check the size of the constant buffer. */
+        /* XXX Subtract immediates and RC_STATE_* variables. */
+        if (buf->width0 > max_size_bytes) {
+            fprintf(stderr, "r300: Max size of the constant buffer is "
+                          "%i*4 floats.\n", max_size);
+        }
+        clamped_size = MIN2(buf->width0, max_size_bytes);
 
-    memcpy(cbuf->constants, mapped, buf->width0);
-    cbuf->count = buf->width0 / (4 * sizeof(float));
-    pipe_buffer_unmap(pipe, buf, tr);
+        memcpy(cbuf->constants, mapped, clamped_size);
+        cbuf->count = clamped_size / (4 * sizeof(float));
+    }
 
     if (shader == PIPE_SHADER_VERTEX) {
         if (r300->screen->caps.has_tcl) {
@@ -1492,12 +1550,13 @@ static void r300_set_constant_buffer(struct pipe_context *pipe,
             r300->pvs_flush.dirty = TRUE;
         } else if (r300->draw) {
             draw_set_mapped_constant_buffer(r300->draw, PIPE_SHADER_VERTEX,
-                0, cbuf->constants,
-                buf->width0);
+                0, mapped, buf->width0);
         }
     } else if (shader == PIPE_SHADER_FRAGMENT) {
         r300->fs_constants.dirty = TRUE;
     }
+
+    pipe_buffer_unmap(pipe, buf, tr);
 }
 
 void r300_init_state_functions(struct r300_context* r300)
index e3adace0faa8e08c9525aefbda8450fbc5b1b764..7583862a1a4baed83a9033fdef0a7744b3231ad8 100644 (file)
@@ -34,6 +34,7 @@
 #include "r300_state.h"
 #include "r300_state_derived.h"
 #include "r300_state_inlines.h"
+#include "r300_texture.h"
 #include "r300_vs.h"
 
 /* r300_state_derived: Various bits of state which are dependent upon
@@ -115,13 +116,12 @@ 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 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 = r300->stream_loc_notcl;
 
-    /* XXX hax */
     memset(vstream, 0, sizeof(struct r300_vertex_stream_state));
 
     /* For each Draw attribute, route it to the fragment shader according
@@ -354,10 +354,26 @@ static void r300_update_rs_block(struct r300_context *r300)
     /* Set up back-face colors. The rasterizer will do the color selection
      * automatically. */
     if (any_bcolor_used) {
-        for (i = 0; i < ATTR_COLOR_COUNT; i++) {
-            rs.vap_vsm_vtx_assm |= R300_INPUT_CNTL_COLOR;
-            rs.vap_out_vtx_fmt[0] |= R300_VAP_OUTPUT_VTX_FMT_0__COLOR_0_PRESENT << (2+i);
-            stream_loc_notcl[loc++] = 4 + i;
+        if (r300->two_sided_color) {
+            /* Rasterize as back-face colors. */
+            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;
+            }
+        } else {
+            /* Rasterize two fake texcoords to prevent from the two-sided color
+             * selection. */
+            /* XXX Consider recompiling the vertex shader to save 2 RS units. */
+            for (i = 0; i < 2; i++) {
+                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);
+                tex_count++;
+            }
         }
     }
 
@@ -493,6 +509,12 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
     unsigned min_level, max_level, i, size;
     unsigned count = MIN2(state->sampler_view_count,
                           state->sampler_state_count);
+    unsigned char depth_swizzle[4] = {
+        UTIL_FORMAT_SWIZZLE_X,
+        UTIL_FORMAT_SWIZZLE_X,
+        UTIL_FORMAT_SWIZZLE_X,
+        UTIL_FORMAT_SWIZZLE_X
+    };
 
     state->tx_enable = 0;
     state->count = 0;
@@ -512,6 +534,20 @@ static void r300_merge_textures_and_samplers(struct r300_context* r300)
             texstate->filter1 = sampler->filter1;
             texstate->border_color = sampler->border_color;
 
+            /* If compare mode is disabled, the sampler view swizzles
+             * are stored in the format.
+             * Otherwise, swizzles must be applied after the compare mode
+             * in the fragment shader. */
+            if (util_format_is_depth_or_stencil(tex->b.b.format)) {
+                if (sampler->state.compare_mode == PIPE_TEX_COMPARE_NONE) {
+                    texstate->format.format1 |=
+                        r300_get_swizzle_combined(depth_swizzle, view->swizzle);
+                } else {
+                    texstate->format.format1 |=
+                        r300_get_swizzle_combined(depth_swizzle, 0);
+                }
+            }
+
             /* to emulate 1D textures through 2D ones correctly */
             if (tex->b.b.target == PIPE_TEXTURE_1D) {
                 texstate->filter0 &= ~R300_TX_WRAP_T_MASK;
@@ -578,13 +614,13 @@ void r300_update_derived_state(struct r300_context* r300)
 
     if (r300->rs_block_state.dirty) {
         r300_update_rs_block(r300);
-    }
 
-    if (r300->draw) {
-        memset(&r300->vertex_info, 0, sizeof(struct vertex_info));
-        r300_draw_emit_all_attribs(r300);
-        draw_compute_vertex_size(&r300->vertex_info);
-        r300_swtcl_vertex_psc(r300);
+        if (r300->draw) {
+            memset(&r300->vertex_info, 0, sizeof(struct vertex_info));
+            r300_draw_emit_all_attribs(r300);
+            draw_compute_vertex_size(&r300->vertex_info);
+            r300_swtcl_vertex_psc(r300);
+        }
     }
 
     r300_update_hyperz_state(r300);
index cd9443fa260283df1db787059f36f3a92b4b1008..34d3a169d574ea3fd150bc79af9c7eff984f4185 100644 (file)
 #include "r300_screen.h"
 #include "r300_state_invariant.h"
 
-struct pipe_viewport_state r300_viewport_identity = {
-    .scale = {1.0, 1.0, 1.0, 1.0},
-    .translate = {0.0, 0.0, 0.0, 0.0},
-};
-
 /* Calculate and emit invariant state. This is data that the 3D engine
  * will probably want at the beginning of every CS, but it's not currently
  * handled by any CSO setup, and in addition it doesn't really change much.
index d6f629cf9c6fcbfa8677a7e59515cafc116cebbd..4a5c932b7e864ca8984912598c48240854773815 100644 (file)
@@ -24,6 +24,7 @@
 #include "pipe/p_screen.h"
 
 #include "util/u_format.h"
+#include "util/u_format_s3tc.h"
 #include "util/u_math.h"
 #include "util/u_memory.h"
 
@@ -46,6 +47,60 @@ static const unsigned microblock_table[5][3][2] = {
     {{ 2, 1}, {0, 0}, {0, 0}}  /* 128 bits per pixel */
 };
 
+unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format,
+                                   const unsigned char *swizzle_view)
+{
+    unsigned i;
+    unsigned char swizzle[4];
+    unsigned result = 0;
+    const uint32_t swizzle_shift[4] = {
+        R300_TX_FORMAT_R_SHIFT,
+        R300_TX_FORMAT_G_SHIFT,
+        R300_TX_FORMAT_B_SHIFT,
+        R300_TX_FORMAT_A_SHIFT
+    };
+    const uint32_t swizzle_bit[4] = {
+        R300_TX_FORMAT_X,
+        R300_TX_FORMAT_Y,
+        R300_TX_FORMAT_Z,
+        R300_TX_FORMAT_W
+    };
+
+    if (swizzle_view) {
+        /* Combine two sets of swizzles. */
+        for (i = 0; i < 4; i++) {
+            swizzle[i] = swizzle_view[i] <= UTIL_FORMAT_SWIZZLE_W ?
+                         swizzle_format[swizzle_view[i]] : swizzle_view[i];
+        }
+    } else {
+        memcpy(swizzle, swizzle_format, 4);
+    }
+
+    /* Get swizzle. */
+    for (i = 0; i < 4; i++) {
+        switch (swizzle[i]) {
+            case UTIL_FORMAT_SWIZZLE_Y:
+                result |= swizzle_bit[1] << swizzle_shift[i];
+                break;
+            case UTIL_FORMAT_SWIZZLE_Z:
+                result |= swizzle_bit[2] << swizzle_shift[i];
+                break;
+            case UTIL_FORMAT_SWIZZLE_W:
+                result |= swizzle_bit[3] << swizzle_shift[i];
+                break;
+            case UTIL_FORMAT_SWIZZLE_0:
+                result |= R300_TX_FORMAT_ZERO << swizzle_shift[i];
+                break;
+            case UTIL_FORMAT_SWIZZLE_1:
+                result |= R300_TX_FORMAT_ONE << swizzle_shift[i];
+                break;
+            default: /* UTIL_FORMAT_SWIZZLE_X */
+                result |= swizzle_bit[0] << swizzle_shift[i];
+        }
+    }
+    return result;
+}
+
 /* Translate a pipe_format into a useful texture format for sampling.
  *
  * Some special formats are translated directly using R300_EASY_TX_FORMAT,
@@ -65,38 +120,26 @@ uint32_t r300_translate_texformat(enum pipe_format format,
     const struct util_format_description *desc;
     unsigned i;
     boolean uniform = TRUE;
-    const uint32_t swizzle_shift[4] = {
-        R300_TX_FORMAT_R_SHIFT,
-        R300_TX_FORMAT_G_SHIFT,
-        R300_TX_FORMAT_B_SHIFT,
-        R300_TX_FORMAT_A_SHIFT
-    };
-    const uint32_t swizzle_bit[4] = {
-        R300_TX_FORMAT_X,
-        R300_TX_FORMAT_Y,
-        R300_TX_FORMAT_Z,
-        R300_TX_FORMAT_W
-    };
     const uint32_t sign_bit[4] = {
         R300_TX_FORMAT_SIGNED_X,
         R300_TX_FORMAT_SIGNED_Y,
         R300_TX_FORMAT_SIGNED_Z,
         R300_TX_FORMAT_SIGNED_W,
     };
-    unsigned char swizzle[4];
 
     desc = util_format_description(format);
 
     /* Colorspace (return non-RGB formats directly). */
     switch (desc->colorspace) {
-        /* Depth stencil formats. */
+        /* Depth stencil formats.
+         * Swizzles are added in r300_merge_textures_and_samplers. */
         case UTIL_FORMAT_COLORSPACE_ZS:
             switch (format) {
                 case PIPE_FORMAT_Z16_UNORM:
-                    return R300_EASY_TX_FORMAT(X, X, X, X, X16);
+                    return R300_TX_FORMAT_X16;
                 case PIPE_FORMAT_X8Z24_UNORM:
                 case PIPE_FORMAT_S8_USCALED_Z24_UNORM:
-                    return R300_EASY_TX_FORMAT(X, X, X, X, W24_FP);
+                    return R300_TX_FORMAT_W24_FP;
                 default:
                     return ~0; /* Unsupported. */
             }
@@ -130,46 +173,14 @@ uint32_t r300_translate_texformat(enum pipe_format format,
             }
     }
 
-    /* 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:
-            case UTIL_FORMAT_SWIZZLE_NONE:
-                result |= swizzle_bit[0] << swizzle_shift[i];
-                break;
-            case UTIL_FORMAT_SWIZZLE_Y:
-                result |= swizzle_bit[1] << swizzle_shift[i];
-                break;
-            case UTIL_FORMAT_SWIZZLE_Z:
-                result |= swizzle_bit[2] << swizzle_shift[i];
-                break;
-            case UTIL_FORMAT_SWIZZLE_W:
-                result |= swizzle_bit[3] << swizzle_shift[i];
-                break;
-            case UTIL_FORMAT_SWIZZLE_0:
-                result |= R300_TX_FORMAT_ZERO << swizzle_shift[i];
-                break;
-            case UTIL_FORMAT_SWIZZLE_1:
-                result |= R300_TX_FORMAT_ONE << swizzle_shift[i];
-                break;
-            default:
-                return ~0; /* Unsupported. */
-        }
-    }
+    result |= r300_get_swizzle_combined(desc->swizzle, swizzle_view);
 
     /* S3TC formats. */
     if (desc->layout == UTIL_FORMAT_LAYOUT_S3TC) {
+        if (!util_format_s3tc_enabled) {
+            return ~0; /* Unsupported. */
+        }
+
         switch (format) {
             case PIPE_FORMAT_DXT1_RGB:
             case PIPE_FORMAT_DXT1_RGBA:
@@ -920,6 +931,7 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen,
         fprintf(stderr, "r300: texture_create: "
                 "Got invalid texture dimensions: %ix%ix%i\n",
                 base->width0, base->height0, base->depth0);
+        FREE(tex);
         return NULL;
     }
 
@@ -948,7 +960,7 @@ struct pipe_resource* r300_texture_create(struct pipe_screen* screen,
                util_format_short_name(base->format));
 
     tex->buffer = rws->buffer_create(rws, 2048,
-                                    PIPE_BIND_SAMPLER_VIEW, /* XXX */
+                                     base->bind,
                                     tex->size);
     rws->buffer_set_tiling(rws, tex->buffer,
                           tex->pitch[0],
index ba79ec068a13e7c3f2727e89a6da9a61d1014b8c..2d8f0e1439396e43706a305f6f1611a33496a8b1 100644 (file)
@@ -27,6 +27,9 @@
 
 struct r300_texture;
 
+unsigned r300_get_swizzle_combined(const unsigned char *swizzle_format,
+                                   const unsigned char *swizzle_view);
+
 uint32_t r300_translate_texformat(enum pipe_format format,
                                   const unsigned char *swizzle_view);
 
index f0f87c5e2bcfc57bb77f81131e3f4b6bb3e74b67..beb321cb2380a683d7986cc6871da80b4d1d9032 100644 (file)
@@ -108,6 +108,12 @@ r300_texture_get_transfer(struct pipe_context *ctx,
     struct r300_transfer *trans;
     struct pipe_resource base;
 
+    /* XXX Why aren't flushes taken care of by winsys automatically?
+     * Winsys seems to sometimes return a cached buffer instead of
+     * a mapped hardware buffer if this flush is commented out. */
+    if (ctx->is_resource_referenced(ctx, texture, sr.face, sr.level))
+        ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL);
+
     trans = CALLOC_STRUCT(r300_transfer);
     if (trans) {
         /* Initialize the transfer object. */
index f3186431e1d170e66fa916b7e401fe9115e422fc..59f89b3482ab7e07c3c5edb8022e81c88ff4671a 100644 (file)
@@ -181,21 +181,23 @@ static void r300_dummy_vertex_shader(
     state.tokens = ureg_finalize(ureg);
 
     shader->dummy = TRUE;
-    r300_translate_vertex_shader(r300, shader, state.tokens);
+    r300_translate_vertex_shader(r300, shader);
 
     ureg_destroy(ureg);
 }
 
-void r300_translate_vertex_shader(struct r300_context* r300,
-                                  struct r300_vertex_shader* vs,
-                                  const struct tgsi_token *tokens)
+void r300_init_vs_outputs(struct r300_vertex_shader *vs)
+{
+    tgsi_scan_shader(vs->state.tokens, &vs->info);
+    r300_shader_read_vs_outputs(&vs->info, &vs->outputs);
+}
+
+void r300_translate_vertex_shader(struct r300_context *r300,
+                                  struct r300_vertex_shader *vs)
 {
     struct r300_vertex_program_compiler compiler;
     struct tgsi_to_rc ttr;
 
-    tgsi_scan_shader(tokens, &vs->info);
-    r300_shader_read_vs_outputs(&vs->info, &vs->outputs);
-
     /* Setup the compiler */
     rc_init(&compiler.Base);
 
@@ -205,7 +207,7 @@ void r300_translate_vertex_shader(struct r300_context* r300,
 
     if (compiler.Base.Debug) {
         debug_printf("r300: Initial vertex program\n");
-        tgsi_dump(tokens, 0);
+        tgsi_dump(vs->state.tokens, 0);
     }
 
     /* Translate TGSI to our internal representation */
@@ -213,7 +215,7 @@ void r300_translate_vertex_shader(struct r300_context* r300,
     ttr.info = &vs->info;
     ttr.use_half_swizzles = FALSE;
 
-    r300_tgsi_to_rc(&ttr, tokens);
+    r300_tgsi_to_rc(&ttr, vs->state.tokens);
 
     compiler.RequiredOutputs = ~(~0 << (vs->info.num_outputs + 1));
     compiler.SetHwInputOutput = &set_vertex_inputs_outputs;
index 57b3fbca0bb7216d64e1ab4a0ce0228c94279e41..31890d78caf076b501e4f6564bbc07624ffb3528 100644 (file)
@@ -56,8 +56,8 @@ struct r300_vertex_shader {
     void *draw_vs;
 };
 
-void r300_translate_vertex_shader(struct r300_context* r300,
-                                  struct r300_vertex_shader* vs,
-                                  const struct tgsi_token *tokens);
+void r300_init_vs_outputs(struct r300_vertex_shader *vs);
 
+void r300_translate_vertex_shader(struct r300_context *r300,
+                                  struct r300_vertex_shader *vs);
 #endif /* R300_VS_H */
index 1642981eaa8328d11b077aa4697a1ed5c909d2f8..3d0413f90af4f20ee4a5add95c923041ddf6b88f 100644 (file)
@@ -87,13 +87,8 @@ struct r300_winsys_screen {
                             struct r300_winsys_buffer **pdst,
                             struct r300_winsys_buffer *src);
 
-    boolean (*buffer_references)(struct r300_winsys_buffer *a,
-                                struct r300_winsys_buffer *b);
-
-    void (*buffer_flush_range)(struct r300_winsys_screen *rws,
-                              struct r300_winsys_buffer *buf,
-                              unsigned offset,
-                              unsigned length);
+    void (*buffer_wait)(struct r300_winsys_screen *rws,
+                        struct r300_winsys_buffer *buf);
 
     /* Add a pipe_resource to the list of buffer objects to validate. */
     boolean (*add_buffer)(struct r300_winsys_screen *winsys,
diff --git a/src/gallium/drivers/rbug/Makefile b/src/gallium/drivers/rbug/Makefile
new file mode 100644 (file)
index 0000000..64e172f
--- /dev/null
@@ -0,0 +1,12 @@
+TOP = ../../../..
+include $(TOP)/configs/current
+
+LIBNAME = rbug
+
+C_SOURCES = \
+       rbug_core.c \
+       rbug_context.c \
+       rbug_objects.c \
+       rbug_screen.c
+
+include ../../Makefile.template
diff --git a/src/gallium/drivers/rbug/README b/src/gallium/drivers/rbug/README
new file mode 100644 (file)
index 0000000..b6d3a5c
--- /dev/null
@@ -0,0 +1,58 @@
+                              RBUG PIPE DRIVER
+
+
+= About =
+
+This directory contains a Gallium3D remote debugger pipe driver.
+It provides remote debugging functionality.
+
+
+= Build Instructions =
+
+To build, invoke scons on the top dir as
+ scons dri=no statetrackers=mesa winsys=xlib
+
+
+= Usage =
+
+To use do
+
+   export LD_LIBRARY_PATH=$PWD/build/linux-x86-debug/lib
+
+ensure the right libGL.so is being picked by doing
+
+   ldd progs/trivial/tri 
+
+   export XMESA_TRACE=y
+   GALLIUM_RBUG=true progs/trivial/tri
+
+which should open gallium remote debugging session. While the program is running
+you can launch the small remote debugging application from progs/rbug. More
+information is in that directory. Also for a gui see:
+
+   http://cgit.freedesktop.org/mesa/rbug-gui
+
+
+= Integrating =
+
+You can integrate the rbug pipe driver either inside the state tracker or the 
+target. The procedure on both cases is the same. Let's assume you have a 
+pipe_screen obtained by the usual means (variable and function names are just
+for illustration purposes):
+
+  real_screen = real_screen_create(...);
+
+The rbug screen is then created by doing
+
+  rbug_screen = rbug_screen_create(real_screen);
+
+You can then simply use rbug_screen instead of real_screen.
+
+You can create as many contexts you wish from rbug_screen::context_create they
+are automatically wrapped by rbug_screen.
+
+
+--
+Jose Fonseca <jrfonseca@tungstengraphics.com>
+Jakob Bornecrantz <jakob@vmware.com>
diff --git a/src/gallium/drivers/rbug/SConscript b/src/gallium/drivers/rbug/SConscript
new file mode 100644 (file)
index 0000000..3da6ac1
--- /dev/null
@@ -0,0 +1,14 @@
+Import('*')
+
+env = env.Clone()
+
+rbug = env.ConvenienceLibrary(
+       target = 'rbug',
+       source = [
+               'rbug_context.c',
+               'rbug_core.c',
+               'rbug_objects.c',
+               'rbug_screen.c',
+       ])
+
+Export('rbug')
diff --git a/src/gallium/drivers/rbug/rbug_context.c b/src/gallium/drivers/rbug/rbug_context.c
new file mode 100644 (file)
index 0000000..59f005e
--- /dev/null
@@ -0,0 +1,1072 @@
+/**************************************************************************
+ *
+ * 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_context.h"
+#include "util/u_memory.h"
+#include "util/u_inlines.h"
+#include "util/u_simple_list.h"
+
+#include "rbug/rbug_context.h"
+
+#include "rbug_context.h"
+#include "rbug_objects.h"
+
+
+static void
+rbug_destroy(struct pipe_context *_pipe)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->destroy(pipe);
+
+   FREE(rb_pipe);
+}
+
+static void
+rbug_draw_block_locked(struct rbug_context *rb_pipe, int flag)
+{
+
+   if (rb_pipe->draw_blocker & flag) {
+      rb_pipe->draw_blocked |= flag;
+   } else if ((rb_pipe->draw_rule.blocker & flag) &&
+              (rb_pipe->draw_blocker & RBUG_BLOCK_RULE)) {
+      int k;
+      boolean block = FALSE;
+      debug_printf("%s (%p %p) (%p %p) (%p %u) (%p %u)\n", __FUNCTION__,
+                   (void *) rb_pipe->draw_rule.fs, (void *) rb_pipe->curr.fs,
+                   (void *) rb_pipe->draw_rule.vs, (void *) rb_pipe->curr.vs,
+                   (void *) rb_pipe->draw_rule.surf, 0,
+                   (void *) rb_pipe->draw_rule.texture, 0);
+      if (rb_pipe->draw_rule.fs &&
+          rb_pipe->draw_rule.fs == rb_pipe->curr.fs)
+         block = TRUE;
+      if (rb_pipe->draw_rule.vs &&
+          rb_pipe->draw_rule.vs == rb_pipe->curr.vs)
+         block = TRUE;
+      if (rb_pipe->draw_rule.surf &&
+          rb_pipe->draw_rule.surf == rb_pipe->curr.zsbuf)
+            block = TRUE;
+      if (rb_pipe->draw_rule.surf)
+         for (k = 0; k < rb_pipe->curr.nr_cbufs; k++)
+            if (rb_pipe->draw_rule.surf == rb_pipe->curr.cbufs[k])
+               block = TRUE;
+      if (rb_pipe->draw_rule.texture) {
+         for (k = 0; k < rb_pipe->curr.num_fs_views; k++)
+            if (rb_pipe->draw_rule.texture == rb_pipe->curr.fs_texs[k])
+               block = TRUE;
+         for (k = 0; k < rb_pipe->curr.num_vs_views; k++) {
+            if (rb_pipe->draw_rule.texture == rb_pipe->curr.vs_texs[k]) {
+               block = TRUE;
+            }
+         }
+      }
+
+      if (block)
+         rb_pipe->draw_blocked |= (flag | RBUG_BLOCK_RULE);
+   }
+
+   if (rb_pipe->draw_blocked)
+      rbug_notify_draw_blocked(rb_pipe);
+
+   /* wait for rbug to clear the blocked flag */
+   while (rb_pipe->draw_blocked & flag) {
+      rb_pipe->draw_blocked |= flag;
+#ifdef PIPE_THREAD_HAVE_CONDVAR
+      pipe_condvar_wait(rb_pipe->draw_cond, rb_pipe->draw_mutex);
+#else
+      pipe_mutex_unlock(rb_pipe->draw_mutex);
+#ifdef PIPE_SUBSYSTEM_WINDOWS_USER
+      Sleep(1);
+#endif
+      pipe_mutex_lock(rb_pipe->draw_mutex);
+#endif
+   }
+
+}
+
+static void
+rbug_draw_arrays(struct pipe_context *_pipe,
+                 unsigned prim,
+                 unsigned start,
+                 unsigned count)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe_mutex_lock(rb_pipe->draw_mutex);
+   rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_BEFORE);
+
+   pipe->draw_arrays(pipe,
+                     prim,
+                     start,
+                     count);
+
+   rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_AFTER);
+   pipe_mutex_unlock(rb_pipe->draw_mutex);
+}
+
+static void
+rbug_draw_elements(struct pipe_context *_pipe,
+                   struct pipe_resource *_indexResource,
+                   unsigned indexSize,
+                   int indexBias,
+                   unsigned prim,
+                   unsigned start,
+                   unsigned count)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_resource *rb_resource = rbug_resource(_indexResource);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_resource *indexResource = rb_resource->resource;
+
+   pipe_mutex_lock(rb_pipe->draw_mutex);
+   rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_BEFORE);
+
+   pipe->draw_elements(pipe,
+                       indexResource,
+                       indexSize,
+                       indexBias,
+                       prim,
+                       start,
+                       count);
+
+   rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_AFTER);
+   pipe_mutex_unlock(rb_pipe->draw_mutex);
+}
+
+static void
+rbug_draw_range_elements(struct pipe_context *_pipe,
+                         struct pipe_resource *_indexResource,
+                         unsigned indexSize,
+                         int indexBias,
+                         unsigned minIndex,
+                         unsigned maxIndex,
+                         unsigned mode,
+                         unsigned start,
+                         unsigned count)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_resource *rb_resource = rbug_resource(_indexResource);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_resource *indexResource = rb_resource->resource;
+
+   pipe_mutex_lock(rb_pipe->draw_mutex);
+   rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_BEFORE);
+
+   pipe->draw_range_elements(pipe,
+                             indexResource,
+                             indexSize,
+                             indexBias,
+                             minIndex,
+                             maxIndex,
+                             mode,
+                             start,
+                             count);
+
+   rbug_draw_block_locked(rb_pipe, RBUG_BLOCK_AFTER);
+   pipe_mutex_unlock(rb_pipe->draw_mutex);
+}
+
+static struct pipe_query *
+rbug_create_query(struct pipe_context *_pipe,
+                  unsigned query_type)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   return pipe->create_query(pipe,
+                             query_type);
+}
+
+static void
+rbug_destroy_query(struct pipe_context *_pipe,
+                   struct pipe_query *query)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->destroy_query(pipe,
+                       query);
+}
+
+static void
+rbug_begin_query(struct pipe_context *_pipe,
+                 struct pipe_query *query)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->begin_query(pipe,
+                     query);
+}
+
+static void
+rbug_end_query(struct pipe_context *_pipe,
+               struct pipe_query *query)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->end_query(pipe,
+                   query);
+}
+
+static boolean
+rbug_get_query_result(struct pipe_context *_pipe,
+                      struct pipe_query *query,
+                      boolean wait,
+                      uint64_t *result)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   return pipe->get_query_result(pipe,
+                                 query,
+                                 wait,
+                                 result);
+}
+
+static void *
+rbug_create_blend_state(struct pipe_context *_pipe,
+                        const struct pipe_blend_state *blend)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   return pipe->create_blend_state(pipe,
+                                   blend);
+}
+
+static void
+rbug_bind_blend_state(struct pipe_context *_pipe,
+                      void *blend)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->bind_blend_state(pipe,
+                              blend);
+}
+
+static void
+rbug_delete_blend_state(struct pipe_context *_pipe,
+                        void *blend)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->delete_blend_state(pipe,
+                            blend);
+}
+
+static void *
+rbug_create_sampler_state(struct pipe_context *_pipe,
+                          const struct pipe_sampler_state *sampler)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   return pipe->create_sampler_state(pipe,
+                                     sampler);
+}
+
+static void
+rbug_bind_fragment_sampler_states(struct pipe_context *_pipe,
+                                  unsigned num_samplers,
+                                  void **samplers)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->bind_fragment_sampler_states(pipe,
+                                      num_samplers,
+                                      samplers);
+}
+
+static void
+rbug_bind_vertex_sampler_states(struct pipe_context *_pipe,
+                                unsigned num_samplers,
+                                void **samplers)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->bind_vertex_sampler_states(pipe,
+                                    num_samplers,
+                                    samplers);
+}
+
+static void
+rbug_delete_sampler_state(struct pipe_context *_pipe,
+                          void *sampler)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->delete_sampler_state(pipe,
+                              sampler);
+}
+
+static void *
+rbug_create_rasterizer_state(struct pipe_context *_pipe,
+                             const struct pipe_rasterizer_state *rasterizer)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   return pipe->create_rasterizer_state(pipe,
+                                        rasterizer);
+}
+
+static void
+rbug_bind_rasterizer_state(struct pipe_context *_pipe,
+                           void *rasterizer)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->bind_rasterizer_state(pipe,
+                               rasterizer);
+}
+
+static void
+rbug_delete_rasterizer_state(struct pipe_context *_pipe,
+                             void *rasterizer)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->delete_rasterizer_state(pipe,
+                                 rasterizer);
+}
+
+static void *
+rbug_create_depth_stencil_alpha_state(struct pipe_context *_pipe,
+                                      const struct pipe_depth_stencil_alpha_state *depth_stencil_alpha)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   return pipe->create_depth_stencil_alpha_state(pipe,
+                                                 depth_stencil_alpha);
+}
+
+static void
+rbug_bind_depth_stencil_alpha_state(struct pipe_context *_pipe,
+                                    void *depth_stencil_alpha)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->bind_depth_stencil_alpha_state(pipe,
+                                        depth_stencil_alpha);
+}
+
+static void
+rbug_delete_depth_stencil_alpha_state(struct pipe_context *_pipe,
+                                      void *depth_stencil_alpha)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->delete_depth_stencil_alpha_state(pipe,
+                                          depth_stencil_alpha);
+}
+
+static void *
+rbug_create_fs_state(struct pipe_context *_pipe,
+                     const struct pipe_shader_state *state)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   void *result;
+
+   result = pipe->create_fs_state(pipe, state);
+   if (!result)
+      return NULL;
+
+   return rbug_shader_create(rb_pipe, state, result, RBUG_SHADER_FRAGMENT);
+}
+
+static void
+rbug_bind_fs_state(struct pipe_context *_pipe,
+                   void *_fs)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   void *fs;
+
+   fs = rbug_shader_unwrap(_fs);
+   rb_pipe->curr.fs = rbug_shader(_fs);
+   pipe->bind_fs_state(pipe,
+                       fs);
+}
+
+static void
+rbug_delete_fs_state(struct pipe_context *_pipe,
+                     void *_fs)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_shader *rb_shader = rbug_shader(_fs);
+
+   rbug_shader_destroy(rb_pipe, rb_shader);
+}
+
+static void *
+rbug_create_vs_state(struct pipe_context *_pipe,
+                     const struct pipe_shader_state *state)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   void *result;
+
+   result = pipe->create_vs_state(pipe, state);
+   if (!result)
+      return NULL;
+
+   return rbug_shader_create(rb_pipe, state, result, RBUG_SHADER_VERTEX);
+}
+
+static void
+rbug_bind_vs_state(struct pipe_context *_pipe,
+                   void *_vs)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   void *vs;
+
+   vs = rbug_shader_unwrap(_vs);
+   rb_pipe->curr.vs = rbug_shader(_vs);
+   pipe->bind_vs_state(pipe,
+                       vs);
+}
+
+static void
+rbug_delete_vs_state(struct pipe_context *_pipe,
+                     void *_vs)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_shader *rb_shader = rbug_shader(_vs);
+
+   rbug_shader_destroy(rb_pipe, rb_shader);
+}
+
+static void *
+rbug_create_gs_state(struct pipe_context *_pipe,
+                     const struct pipe_shader_state *state)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   void *result;
+
+   result = pipe->create_gs_state(pipe, state);
+   if (!result)
+      return NULL;
+
+   return rbug_shader_create(rb_pipe, state, result, RBUG_SHADER_GEOM);
+}
+
+static void
+rbug_bind_gs_state(struct pipe_context *_pipe,
+                   void *_gs)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   void *gs;
+
+   gs = rbug_shader_unwrap(_gs);
+   rb_pipe->curr.gs = rbug_shader(_gs);
+   pipe->bind_gs_state(pipe,
+                       gs);
+}
+
+static void
+rbug_delete_gs_state(struct pipe_context *_pipe,
+                     void *_gs)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_shader *rb_shader = rbug_shader(_gs);
+
+   rbug_shader_destroy(rb_pipe, rb_shader);
+}
+
+static void *
+rbug_create_vertex_elements_state(struct pipe_context *_pipe,
+                                  unsigned num_elements,
+                                  const struct pipe_vertex_element *vertex_elements)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   return pipe->create_vertex_elements_state(pipe,
+                                             num_elements,
+                                             vertex_elements);
+}
+
+static void
+rbug_bind_vertex_elements_state(struct pipe_context *_pipe,
+                                void *velems)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->bind_vertex_elements_state(pipe,
+                                    velems);
+}
+
+static void
+rbug_delete_vertex_elements_state(struct pipe_context *_pipe,
+                                  void *velems)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->delete_vertex_elements_state(pipe,
+                                      velems);
+}
+
+static void
+rbug_set_blend_color(struct pipe_context *_pipe,
+                     const struct pipe_blend_color *blend_color)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->set_blend_color(pipe,
+                         blend_color);
+}
+
+static void
+rbug_set_stencil_ref(struct pipe_context *_pipe,
+                     const struct pipe_stencil_ref *stencil_ref)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->set_stencil_ref(pipe,
+                         stencil_ref);
+}
+
+static void
+rbug_set_clip_state(struct pipe_context *_pipe,
+                    const struct pipe_clip_state *clip)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->set_clip_state(pipe,
+                        clip);
+}
+
+static void
+rbug_set_constant_buffer(struct pipe_context *_pipe,
+                         uint shader,
+                         uint index,
+                         struct pipe_resource *_resource)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_resource *unwrapped_resource;
+   struct pipe_resource *resource = NULL;
+
+   /* XXX hmm? unwrap the input state */
+   if (_resource) {
+      unwrapped_resource = rbug_resource_unwrap(_resource);
+      resource = unwrapped_resource;
+   }
+
+   pipe->set_constant_buffer(pipe,
+                             shader,
+                             index,
+                             resource);
+}
+
+static void
+rbug_set_framebuffer_state(struct pipe_context *_pipe,
+                           const struct pipe_framebuffer_state *_state)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_framebuffer_state unwrapped_state;
+   struct pipe_framebuffer_state *state = NULL;
+   unsigned i;
+
+   rb_pipe->curr.nr_cbufs = 0;
+   memset(rb_pipe->curr.cbufs, 0, sizeof(rb_pipe->curr.cbufs));
+
+   /* unwrap the input state */
+   if (_state) {
+      memcpy(&unwrapped_state, _state, sizeof(unwrapped_state));
+
+      rb_pipe->curr.nr_cbufs = _state->nr_cbufs;
+      for(i = 0; i < _state->nr_cbufs; i++) {
+         unwrapped_state.cbufs[i] = rbug_surface_unwrap(_state->cbufs[i]);
+         if (_state->cbufs[i])
+            rb_pipe->curr.cbufs[i] = rbug_resource(_state->cbufs[i]->texture);
+      }
+      unwrapped_state.zsbuf = rbug_surface_unwrap(_state->zsbuf);
+      state = &unwrapped_state;
+   }
+
+   pipe->set_framebuffer_state(pipe,
+                               state);
+}
+
+static void
+rbug_set_polygon_stipple(struct pipe_context *_pipe,
+                         const struct pipe_poly_stipple *poly_stipple)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->set_polygon_stipple(pipe,
+                             poly_stipple);
+}
+
+static void
+rbug_set_scissor_state(struct pipe_context *_pipe,
+                       const struct pipe_scissor_state *scissor)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->set_scissor_state(pipe,
+                           scissor);
+}
+
+static void
+rbug_set_viewport_state(struct pipe_context *_pipe,
+                        const struct pipe_viewport_state *viewport)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->set_viewport_state(pipe,
+                            viewport);
+}
+
+static void
+rbug_set_fragment_sampler_views(struct pipe_context *_pipe,
+                                unsigned num,
+                                struct pipe_sampler_view **_views)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SAMPLERS];
+   struct pipe_sampler_view **views = NULL;
+   unsigned i;
+
+   rb_pipe->curr.num_fs_views = 0;
+   memset(rb_pipe->curr.fs_views, 0, sizeof(rb_pipe->curr.fs_views));
+   memset(rb_pipe->curr.fs_texs, 0, sizeof(rb_pipe->curr.fs_texs));
+   memset(unwrapped_views, 0, sizeof(unwrapped_views));
+
+   if (_views) {
+      rb_pipe->curr.num_fs_views = num;
+      for (i = 0; i < num; i++) {
+         rb_pipe->curr.fs_views[i] = rbug_sampler_view(_views[i]);
+         rb_pipe->curr.fs_texs[i] = rbug_resource(_views[i] ? _views[i]->texture : NULL);
+         unwrapped_views[i] = rbug_sampler_view_unwrap(_views[i]);
+      }
+      views = unwrapped_views;
+   }
+
+   pipe->set_fragment_sampler_views(pipe, num, views);
+}
+
+static void
+rbug_set_vertex_sampler_views(struct pipe_context *_pipe,
+                              unsigned num,
+                              struct pipe_sampler_view **_views)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_sampler_view *unwrapped_views[PIPE_MAX_VERTEX_SAMPLERS];
+   struct pipe_sampler_view **views = NULL;
+   unsigned i;
+
+   rb_pipe->curr.num_vs_views = 0;
+   memset(rb_pipe->curr.vs_views, 0, sizeof(rb_pipe->curr.vs_views));
+   memset(rb_pipe->curr.vs_texs, 0, sizeof(rb_pipe->curr.vs_texs));
+   memset(unwrapped_views, 0, sizeof(unwrapped_views));
+
+   if (_views) {
+      rb_pipe->curr.num_vs_views = num;
+      for (i = 0; i < num; i++) {
+         rb_pipe->curr.vs_views[i] = rbug_sampler_view(_views[i]);
+         rb_pipe->curr.vs_texs[i] = rbug_resource(_views[i]->texture);
+         unwrapped_views[i] = rbug_sampler_view_unwrap(_views[i]);
+      }
+      views = unwrapped_views;
+   }
+
+   pipe->set_vertex_sampler_views(pipe, num, views);
+}
+
+static void
+rbug_set_vertex_buffers(struct pipe_context *_pipe,
+                        unsigned num_buffers,
+                        const struct pipe_vertex_buffer *_buffers)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_vertex_buffer unwrapped_buffers[PIPE_MAX_SHADER_INPUTS];
+   struct pipe_vertex_buffer *buffers = NULL;
+   unsigned i;
+
+   if (num_buffers) {
+      memcpy(unwrapped_buffers, _buffers, num_buffers * sizeof(*_buffers));
+      for (i = 0; i < num_buffers; i++)
+         unwrapped_buffers[i].buffer = rbug_resource_unwrap(_buffers[i].buffer);
+      buffers = unwrapped_buffers;
+   }
+
+   pipe->set_vertex_buffers(pipe,
+                            num_buffers,
+                            buffers);
+}
+static void
+rbug_surface_copy(struct pipe_context *_pipe,
+                  struct pipe_surface *_dst,
+                  unsigned dstx,
+                  unsigned dsty,
+                  struct pipe_surface *_src,
+                  unsigned srcx,
+                  unsigned srcy,
+                  unsigned width,
+                  unsigned height)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_surface *rb_surface_dst = rbug_surface(_dst);
+   struct rbug_surface *rb_surface_src = rbug_surface(_src);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_surface *dst = rb_surface_dst->surface;
+   struct pipe_surface *src = rb_surface_src->surface;
+
+   pipe->surface_copy(pipe,
+                      dst,
+                      dstx,
+                      dsty,
+                      src,
+                      srcx,
+                      srcy,
+                      width,
+                      height);
+}
+
+static void
+rbug_surface_fill(struct pipe_context *_pipe,
+                  struct pipe_surface *_dst,
+                  unsigned dstx,
+                  unsigned dsty,
+                  unsigned width,
+                  unsigned height,
+                  unsigned value)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_surface *rb_surface_dst = rbug_surface(_dst);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_surface *dst = rb_surface_dst->surface;
+
+   pipe->surface_fill(pipe,
+                      dst,
+                      dstx,
+                      dsty,
+                      width,
+                      height,
+                      value);
+}
+
+static void
+rbug_clear(struct pipe_context *_pipe,
+           unsigned buffers,
+           const float *rgba,
+           double depth,
+           unsigned stencil)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->clear(pipe,
+               buffers,
+               rgba,
+               depth,
+               stencil);
+}
+
+static void
+rbug_flush(struct pipe_context *_pipe,
+           unsigned flags,
+           struct pipe_fence_handle **fence)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct pipe_context *pipe = rb_pipe->pipe;
+
+   pipe->flush(pipe,
+               flags,
+               fence);
+}
+
+static unsigned int
+rbug_is_resource_referenced(struct pipe_context *_pipe,
+                            struct pipe_resource *_resource,
+                            unsigned face,
+                            unsigned level)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_resource *rb_resource = rbug_resource(_resource);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_resource *resource = rb_resource->resource;
+
+   return pipe->is_resource_referenced(pipe,
+                                       resource,
+                                       face,
+                                       level);
+}
+
+static struct pipe_sampler_view *
+rbug_context_create_sampler_view(struct pipe_context *_pipe,
+                                 struct pipe_resource *_resource,
+                                 const struct pipe_sampler_view *templ)
+{
+   struct rbug_context *rb_pipe = rbug_context(_pipe);
+   struct rbug_resource *rb_resource = rbug_resource(_resource);
+   struct pipe_context *pipe = rb_pipe->pipe;
+   struct pipe_resource *resource = rb_resource->resource;
+   struct pipe_sampler_view *result;
+
+   result = pipe->create_sampler_view(pipe,
+                                      resource,
+                                      templ);
+
+   if (result)
+      return rbug_sampler_view_create(rb_pipe, rb_resource, result);
+   return NULL;
+}
+
+static void
+rbug_context_sampler_view_destroy(struct pipe_context *_pipe,
+                                  struct pipe_sampler_view *_view)
+{
+   rbug_sampler_view_destroy(rbug_context(_pipe),
+                             rbug_sampler_view(_view));
+}
+
+static struct pipe_transfer *
+rbug_context_get_transfer(struct pipe_context *_context,
+                          struct pipe_resource *_resource,
+                          struct pipe_subresource sr,
+                          unsigned usage,
+                          const struct pipe_box *box)
+{
+   struct rbug_context *rb_pipe = rbug_context(_context);
+   struct rbug_resource *rb_resource = rbug_resource(_resource);
+   struct pipe_context *context = rb_pipe->pipe;
+   struct pipe_resource *resource = rb_resource->resource;
+   struct pipe_transfer *result;
+
+   result = context->get_transfer(context,
+                                  resource,
+                                  sr,
+                                  usage,
+                                  box);
+
+   if (result)
+      return rbug_transfer_create(rb_pipe, rb_resource, result);
+   return NULL;
+}
+
+static void
+rbug_context_transfer_destroy(struct pipe_context *_pipe,
+                              struct pipe_transfer *_transfer)
+{
+   rbug_transfer_destroy(rbug_context(_pipe),
+                             rbug_transfer(_transfer));
+}
+
+static void *
+rbug_context_transfer_map(struct pipe_context *_context,
+                          struct pipe_transfer *_transfer)
+{
+   struct rbug_context *rb_pipe = rbug_context(_context);
+   struct rbug_transfer *rb_transfer = rbug_transfer(_transfer);
+   struct pipe_context *context = rb_pipe->pipe;
+   struct pipe_transfer *transfer = rb_transfer->transfer;
+
+   return context->transfer_map(context,
+                                transfer);
+}
+
+
+
+static void
+rbug_context_transfer_flush_region(struct pipe_context *_context,
+                                   struct pipe_transfer *_transfer,
+                                   const struct pipe_box *box)
+{
+   struct rbug_context *rb_pipe = rbug_context(_context);
+   struct rbug_transfer *rb_transfer = rbug_transfer(_transfer);
+   struct pipe_context *context = rb_pipe->pipe;
+   struct pipe_transfer *transfer = rb_transfer->transfer;
+
+   context->transfer_flush_region(context,
+                                  transfer,
+                                  box);
+}
+
+
+static void
+rbug_context_transfer_unmap(struct pipe_context *_context,
+                            struct pipe_transfer *_transfer)
+{
+   struct rbug_context *rb_pipe = rbug_context(_context);
+   struct rbug_transfer *rb_transfer = rbug_transfer(_transfer);
+   struct pipe_context *context = rb_pipe->pipe;
+   struct pipe_transfer *transfer = rb_transfer->transfer;
+
+   context->transfer_unmap(context,
+                           transfer);
+}
+
+
+static void
+rbug_context_transfer_inline_write(struct pipe_context *_context,
+                                   struct pipe_resource *_resource,
+                                   struct pipe_subresource sr,
+                                   unsigned usage,
+                                   const struct pipe_box *box,
+                                   const void *data,
+                                   unsigned stride,
+                                   unsigned slice_stride)
+{
+   struct rbug_context *rb_pipe = rbug_context(_context);
+   struct rbug_resource *rb_resource = rbug_resource(_resource);
+   struct pipe_context *context = rb_pipe->pipe;
+   struct pipe_resource *resource = rb_resource->resource;
+
+   context->transfer_inline_write(context,
+                                  resource,
+                                  sr,
+                                  usage,
+                                  box,
+                                  data,
+                                  stride,
+                                  slice_stride);
+}
+
+
+struct pipe_context *
+rbug_context_create(struct pipe_screen *_screen, struct pipe_context *pipe)
+{
+   struct rbug_context *rb_pipe;
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+
+   if (!rb_screen)
+      return NULL;
+
+   rb_pipe = CALLOC_STRUCT(rbug_context);
+   if (!rb_pipe)
+      return NULL;
+
+   pipe_mutex_init(rb_pipe->draw_mutex);
+   pipe_condvar_init(rb_pipe->draw_cond);
+   pipe_mutex_init(rb_pipe->call_mutex);
+   pipe_mutex_init(rb_pipe->list_mutex);
+   make_empty_list(&rb_pipe->shaders);
+
+   rb_pipe->base.winsys = NULL;
+   rb_pipe->base.screen = _screen;
+   rb_pipe->base.priv = pipe->priv; /* expose wrapped data */
+   rb_pipe->base.draw = NULL;
+
+   rb_pipe->base.destroy = rbug_destroy;
+   rb_pipe->base.draw_arrays = rbug_draw_arrays;
+   rb_pipe->base.draw_elements = rbug_draw_elements;
+   rb_pipe->base.draw_range_elements = rbug_draw_range_elements;
+   rb_pipe->base.create_query = rbug_create_query;
+   rb_pipe->base.destroy_query = rbug_destroy_query;
+   rb_pipe->base.begin_query = rbug_begin_query;
+   rb_pipe->base.end_query = rbug_end_query;
+   rb_pipe->base.get_query_result = rbug_get_query_result;
+   rb_pipe->base.create_blend_state = rbug_create_blend_state;
+   rb_pipe->base.bind_blend_state = rbug_bind_blend_state;
+   rb_pipe->base.delete_blend_state = rbug_delete_blend_state;
+   rb_pipe->base.create_sampler_state = rbug_create_sampler_state;
+   rb_pipe->base.bind_fragment_sampler_states = rbug_bind_fragment_sampler_states;
+   rb_pipe->base.bind_vertex_sampler_states = rbug_bind_vertex_sampler_states;
+   rb_pipe->base.delete_sampler_state = rbug_delete_sampler_state;
+   rb_pipe->base.create_rasterizer_state = rbug_create_rasterizer_state;
+   rb_pipe->base.bind_rasterizer_state = rbug_bind_rasterizer_state;
+   rb_pipe->base.delete_rasterizer_state = rbug_delete_rasterizer_state;
+   rb_pipe->base.create_depth_stencil_alpha_state = rbug_create_depth_stencil_alpha_state;
+   rb_pipe->base.bind_depth_stencil_alpha_state = rbug_bind_depth_stencil_alpha_state;
+   rb_pipe->base.delete_depth_stencil_alpha_state = rbug_delete_depth_stencil_alpha_state;
+   rb_pipe->base.create_fs_state = rbug_create_fs_state;
+   rb_pipe->base.bind_fs_state = rbug_bind_fs_state;
+   rb_pipe->base.delete_fs_state = rbug_delete_fs_state;
+   rb_pipe->base.create_vs_state = rbug_create_vs_state;
+   rb_pipe->base.bind_vs_state = rbug_bind_vs_state;
+   rb_pipe->base.delete_vs_state = rbug_delete_vs_state;
+   rb_pipe->base.create_gs_state = rbug_create_gs_state;
+   rb_pipe->base.bind_gs_state = rbug_bind_gs_state;
+   rb_pipe->base.delete_gs_state = rbug_delete_gs_state;
+   rb_pipe->base.create_vertex_elements_state = rbug_create_vertex_elements_state;
+   rb_pipe->base.bind_vertex_elements_state = rbug_bind_vertex_elements_state;
+   rb_pipe->base.delete_vertex_elements_state = rbug_delete_vertex_elements_state;
+   rb_pipe->base.set_blend_color = rbug_set_blend_color;
+   rb_pipe->base.set_stencil_ref = rbug_set_stencil_ref;
+   rb_pipe->base.set_clip_state = rbug_set_clip_state;
+   rb_pipe->base.set_constant_buffer = rbug_set_constant_buffer;
+   rb_pipe->base.set_framebuffer_state = rbug_set_framebuffer_state;
+   rb_pipe->base.set_polygon_stipple = rbug_set_polygon_stipple;
+   rb_pipe->base.set_scissor_state = rbug_set_scissor_state;
+   rb_pipe->base.set_viewport_state = rbug_set_viewport_state;
+   rb_pipe->base.set_fragment_sampler_views = rbug_set_fragment_sampler_views;
+   rb_pipe->base.set_vertex_sampler_views = rbug_set_vertex_sampler_views;
+   rb_pipe->base.set_vertex_buffers = rbug_set_vertex_buffers;
+   rb_pipe->base.surface_copy = rbug_surface_copy;
+   rb_pipe->base.surface_fill = rbug_surface_fill;
+   rb_pipe->base.clear = rbug_clear;
+   rb_pipe->base.flush = rbug_flush;
+   rb_pipe->base.is_resource_referenced = rbug_is_resource_referenced;
+   rb_pipe->base.create_sampler_view = rbug_context_create_sampler_view;
+   rb_pipe->base.sampler_view_destroy = rbug_context_sampler_view_destroy;
+   rb_pipe->base.get_transfer = rbug_context_get_transfer;
+   rb_pipe->base.transfer_destroy = rbug_context_transfer_destroy;
+   rb_pipe->base.transfer_map = rbug_context_transfer_map;
+   rb_pipe->base.transfer_unmap = rbug_context_transfer_unmap;
+   rb_pipe->base.transfer_flush_region = rbug_context_transfer_flush_region;
+   rb_pipe->base.transfer_inline_write = rbug_context_transfer_inline_write;
+
+   rb_pipe->pipe = pipe;
+
+   rbug_screen_add_to_list(rb_screen, contexts, rb_pipe);
+
+   return &rb_pipe->base;
+}
diff --git a/src/gallium/drivers/rbug/rbug_context.h b/src/gallium/drivers/rbug/rbug_context.h
new file mode 100644 (file)
index 0000000..80c803d
--- /dev/null
@@ -0,0 +1,111 @@
+/**************************************************************************
+ *
+ * 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 RBUG_CONTEXT_H
+#define RBUG_CONTEXT_H
+
+#include "pipe/p_state.h"
+#include "pipe/p_context.h"
+
+#include "rbug_screen.h"
+
+
+struct rbug_context {
+   struct pipe_context base;  /**< base class */
+
+   struct pipe_context *pipe;
+
+   struct rbug_list list;
+
+   /* call locking */
+   pipe_mutex call_mutex;
+
+   /* current state */
+   struct {
+      struct rbug_shader *fs;
+      struct rbug_shader *vs;
+      struct rbug_shader *gs;
+
+      struct rbug_sampler_view *fs_views[PIPE_MAX_SAMPLERS];
+      struct rbug_resource *fs_texs[PIPE_MAX_SAMPLERS];
+      unsigned num_fs_views;
+
+      struct rbug_sampler_view *vs_views[PIPE_MAX_VERTEX_SAMPLERS];
+      struct rbug_resource *vs_texs[PIPE_MAX_VERTEX_SAMPLERS];
+      unsigned num_vs_views;
+
+      unsigned nr_cbufs;
+      struct rbug_resource *cbufs[PIPE_MAX_COLOR_BUFS];
+      struct rbug_resource *zsbuf;
+   } curr;
+
+   /* draw locking */
+   pipe_mutex draw_mutex;
+   pipe_condvar draw_cond;
+   unsigned draw_num_rules;
+   int draw_blocker;
+   int draw_blocked;
+
+   struct {
+      struct rbug_shader *fs;
+      struct rbug_shader *vs;
+
+      struct rbug_resource *texture;
+      struct rbug_resource *surf;
+
+      int blocker;
+   } draw_rule;
+
+   /* list of state objects */
+   pipe_mutex list_mutex;
+   unsigned num_shaders;
+   struct rbug_list shaders;
+};
+
+static INLINE struct rbug_context *
+rbug_context(struct pipe_context *pipe)
+{
+   return (struct rbug_context *)pipe;
+}
+
+
+/**********************************************************
+ * rbug_context.c
+ */
+
+struct pipe_context *
+rbug_context_create(struct pipe_screen *screen, struct pipe_context *pipe);
+
+
+/**********************************************************
+ * rbug_core.c
+ */
+
+void rbug_notify_draw_blocked(struct rbug_context *rb_context);
+
+
+#endif /* RBUG_CONTEXT_H */
diff --git a/src/gallium/drivers/rbug/rbug_core.c b/src/gallium/drivers/rbug/rbug_core.c
new file mode 100644 (file)
index 0000000..f1aab38
--- /dev/null
@@ -0,0 +1,890 @@
+/**************************************************************************
+ *
+ * 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 "os/os_thread.h"
+#include "util/u_format.h"
+#include "util/u_string.h"
+#include "util/u_inlines.h"
+#include "util/u_memory.h"
+#include "util/u_simple_list.h"
+#include "util/u_network.h"
+#include "os/os_time.h"
+
+#include "tgsi/tgsi_parse.h"
+
+#include "rbug_context.h"
+#include "rbug_objects.h"
+
+#include "rbug/rbug.h"
+
+#include <errno.h>
+
+#define U642VOID(x) ((void *)(unsigned long)(x))
+#define VOID2U64(x) ((uint64_t)(unsigned long)(x))
+
+#define container_of(ptr, type, field) \
+   (type*)((char*)ptr - offsetof(type, field))
+
+struct rbug_rbug
+{
+   struct rbug_screen *rb_screen;
+   struct rbug_connection *con;
+   pipe_thread thread;
+   boolean running;
+};
+
+PIPE_THREAD_ROUTINE(rbug_thread, void_rbug);
+
+
+/**********************************************************
+ * Helper functions
+ */
+
+
+static struct rbug_context *
+rbug_get_context_locked(struct rbug_screen *rb_screen, rbug_context_t ctx)
+{
+   struct rbug_context *rb_context = NULL;
+   struct rbug_list *ptr;
+
+   foreach(ptr, &rb_screen->contexts) {
+      rb_context = container_of(ptr, struct rbug_context, list);
+      if (ctx == VOID2U64(rb_context))
+         break;
+      rb_context = NULL;
+   }
+
+   return rb_context;
+}
+
+static struct rbug_shader *
+rbug_get_shader_locked(struct rbug_context *rb_context, rbug_shader_t shdr)
+{
+   struct rbug_shader *tr_shdr = NULL;
+   struct rbug_list *ptr;
+
+   foreach(ptr, &rb_context->shaders) {
+      tr_shdr = container_of(ptr, struct rbug_shader, list);
+      if (shdr == VOID2U64(tr_shdr))
+         break;
+      tr_shdr = NULL;
+   }
+
+   return tr_shdr;
+}
+
+static void *
+rbug_shader_create_locked(struct pipe_context *pipe,
+                          struct rbug_shader *rb_shader,
+                          struct tgsi_token *tokens)
+{
+   void *state = NULL;
+   struct pipe_shader_state pss = { 0 };
+   pss.tokens = tokens;
+
+   switch(rb_shader->type) {
+   case RBUG_SHADER_FRAGMENT:
+      state = pipe->create_fs_state(pipe, &pss);
+      break;
+   case RBUG_SHADER_VERTEX:
+      state = pipe->create_vs_state(pipe, &pss);
+      break;
+   case RBUG_SHADER_GEOM:
+      state = pipe->create_gs_state(pipe, &pss);
+      break;
+   default:
+      assert(0);
+      break;
+   }
+
+   return state;
+}
+
+static void
+rbug_shader_bind_locked(struct pipe_context *pipe,
+                        struct rbug_shader *rb_shader,
+                        void *state)
+{
+   switch(rb_shader->type) {
+   case RBUG_SHADER_FRAGMENT:
+      pipe->bind_fs_state(pipe, state);
+      break;
+   case RBUG_SHADER_VERTEX:
+      pipe->bind_vs_state(pipe, state);
+      break;
+   case RBUG_SHADER_GEOM:
+      pipe->bind_gs_state(pipe, state);
+      break;
+   default:
+      assert(0);
+      break;
+   }
+}
+
+static void
+rbug_shader_delete_locked(struct pipe_context *pipe,
+                          struct rbug_shader *rb_shader,
+                          void *state)
+{
+   switch(rb_shader->type) {
+   case RBUG_SHADER_FRAGMENT:
+      pipe->delete_fs_state(pipe, state);
+      break;
+   case RBUG_SHADER_VERTEX:
+      pipe->delete_vs_state(pipe, state);
+      break;
+   case RBUG_SHADER_GEOM:
+      pipe->delete_gs_state(pipe, state);
+      break;
+   default:
+      assert(0);
+      break;
+   }
+}
+
+/************************************************
+ * Request handler functions
+ */
+
+
+static int
+rbug_texture_list(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_resource *tr_tex = NULL;
+   struct rbug_list *ptr;
+   rbug_texture_t *texs;
+   int i = 0;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   texs = MALLOC(rb_screen->num_resources * sizeof(rbug_texture_t));
+   foreach(ptr, &rb_screen->resources) {
+      tr_tex = container_of(ptr, struct rbug_resource, list);
+      texs[i++] = VOID2U64(tr_tex);
+   }
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   rbug_send_texture_list_reply(tr_rbug->con, serial, texs, i, NULL);
+   FREE(texs);
+
+   return 0;
+}
+
+static int
+rbug_texture_info(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_resource *tr_tex = NULL;
+   struct rbug_proto_texture_info *gpti = (struct rbug_proto_texture_info *)header;
+   struct rbug_list *ptr;
+   struct pipe_resource *t;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   foreach(ptr, &rb_screen->resources) {
+      tr_tex = container_of(ptr, struct rbug_resource, list);
+      if (gpti->texture == VOID2U64(tr_tex))
+         break;
+      tr_tex = NULL;
+   }
+
+   if (!tr_tex) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   t = tr_tex->resource;
+   rbug_send_texture_info_reply(tr_rbug->con, serial,
+                               t->target, t->format,
+                               &t->width0, 1,
+                               &t->height0, 1,
+                               &t->depth0, 1,
+                               util_format_get_blockwidth(t->format),
+                               util_format_get_blockheight(t->format),
+                               util_format_get_blocksize(t->format),
+                               t->last_level,
+                               t->nr_samples,
+                               t->bind,
+                               NULL);
+
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_texture_read(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_texture_read *gptr = (struct rbug_proto_texture_read *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_resource *tr_tex = NULL;
+   struct rbug_list *ptr;
+
+   struct pipe_context *context = rb_screen->private_context;
+   struct pipe_resource *tex;
+   struct pipe_transfer *t;
+
+   void *map;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   foreach(ptr, &rb_screen->resources) {
+      tr_tex = container_of(ptr, struct rbug_resource, list);
+      if (gptr->texture == VOID2U64(tr_tex))
+         break;
+      tr_tex = NULL;
+   }
+
+   if (!tr_tex) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   tex = tr_tex->resource;
+   t = pipe_get_transfer(context, tex,
+                                gptr->face, gptr->level, gptr->zslice,
+                                PIPE_TRANSFER_READ,
+                                gptr->x, gptr->y, gptr->w, gptr->h);
+
+   map = context->transfer_map(context, t);
+
+   rbug_send_texture_read_reply(tr_rbug->con, serial,
+                                t->resource->format,
+                                util_format_get_blockwidth(t->resource->format),
+                                util_format_get_blockheight(t->resource->format),
+                                util_format_get_blocksize(t->resource->format),
+                                (uint8_t*)map,
+                                t->stride * util_format_get_nblocksy(t->resource->format,
+                                                                    t->box.height),
+                                t->stride,
+                                NULL);
+
+   context->transfer_unmap(context, t);
+   context->transfer_destroy(context, t);
+
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_context_list(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_list *ptr;
+   struct rbug_context *rb_context = NULL;
+   rbug_context_t *ctxs;
+   int i = 0;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   ctxs = MALLOC(rb_screen->num_contexts * sizeof(rbug_context_t));
+   foreach(ptr, &rb_screen->contexts) {
+      rb_context = container_of(ptr, struct rbug_context, list);
+      ctxs[i++] = VOID2U64(rb_context);
+   }
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   rbug_send_context_list_reply(tr_rbug->con, serial, ctxs, i, NULL);
+   FREE(ctxs);
+
+   return 0;
+}
+
+static int
+rbug_context_info(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_context_info *info = (struct rbug_proto_context_info *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+   rbug_texture_t cbufs[PIPE_MAX_COLOR_BUFS];
+   rbug_texture_t texs[PIPE_MAX_SAMPLERS];
+   int i;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, info->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   /* protect the pipe context */
+   pipe_mutex_lock(rb_context->draw_mutex);
+   pipe_mutex_lock(rb_context->call_mutex);
+
+   for (i = 0; i < rb_context->curr.nr_cbufs; i++)
+      cbufs[i] = VOID2U64(rb_context->curr.cbufs[i]);
+
+   for (i = 0; i < rb_context->curr.num_fs_views; i++)
+      texs[i] = VOID2U64(rb_context->curr.fs_texs[i]);
+
+   rbug_send_context_info_reply(tr_rbug->con, serial,
+                                VOID2U64(rb_context->curr.vs), VOID2U64(rb_context->curr.fs),
+                                texs, rb_context->curr.num_fs_views,
+                                cbufs, rb_context->curr.nr_cbufs,
+                                VOID2U64(rb_context->curr.zsbuf),
+                                rb_context->draw_blocker, rb_context->draw_blocked, NULL);
+
+   pipe_mutex_unlock(rb_context->call_mutex);
+   pipe_mutex_unlock(rb_context->draw_mutex);
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_context_draw_block(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_context_draw_block *block = (struct rbug_proto_context_draw_block *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, block->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->draw_mutex);
+   rb_context->draw_blocker |= block->block;
+   pipe_mutex_unlock(rb_context->draw_mutex);
+
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_context_draw_step(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_context_draw_step *step = (struct rbug_proto_context_draw_step *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, step->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->draw_mutex);
+   if (rb_context->draw_blocked & RBUG_BLOCK_RULE) {
+      if (step->step & RBUG_BLOCK_RULE)
+         rb_context->draw_blocked &= ~RBUG_BLOCK_MASK;
+   } else {
+      rb_context->draw_blocked &= ~step->step;
+   }
+   pipe_mutex_unlock(rb_context->draw_mutex);
+
+#ifdef PIPE_THREAD_HAVE_CONDVAR
+   pipe_condvar_broadcast(rb_context->draw_cond);
+#endif
+
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_context_draw_unblock(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_context_draw_unblock *unblock = (struct rbug_proto_context_draw_unblock *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, unblock->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->draw_mutex);
+   if (rb_context->draw_blocked & RBUG_BLOCK_RULE) {
+      if (unblock->unblock & RBUG_BLOCK_RULE)
+         rb_context->draw_blocked &= ~RBUG_BLOCK_MASK;
+   } else {
+      rb_context->draw_blocked &= ~unblock->unblock;
+   }
+   rb_context->draw_blocker &= ~unblock->unblock;
+   pipe_mutex_unlock(rb_context->draw_mutex);
+
+#ifdef PIPE_THREAD_HAVE_CONDVAR
+   pipe_condvar_broadcast(rb_context->draw_cond);
+#endif
+
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_context_draw_rule(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_context_draw_rule *rule = (struct rbug_proto_context_draw_rule *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, rule->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->draw_mutex);
+   rb_context->draw_rule.vs = U642VOID(rule->vertex);
+   rb_context->draw_rule.fs = U642VOID(rule->fragment);
+   rb_context->draw_rule.texture = U642VOID(rule->texture);
+   rb_context->draw_rule.surf = U642VOID(rule->surface);
+   rb_context->draw_rule.blocker = rule->block;
+   rb_context->draw_blocker |= RBUG_BLOCK_RULE;
+   pipe_mutex_unlock(rb_context->draw_mutex);
+
+#ifdef PIPE_THREAD_HAVE_CONDVAR
+   pipe_condvar_broadcast(rb_context->draw_cond);
+#endif
+
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_context_flush(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_context_flush *flush = (struct rbug_proto_context_flush *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, flush->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   /* protect the pipe context */
+   pipe_mutex_lock(rb_context->call_mutex);
+
+   rb_context->pipe->flush(rb_context->pipe, flush->flags, NULL);
+
+   pipe_mutex_unlock(rb_context->call_mutex);
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_shader_list(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_shader_list *list = (struct rbug_proto_shader_list *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+   struct rbug_shader *tr_shdr = NULL;
+   struct rbug_list *ptr;
+   rbug_shader_t *shdrs;
+   int i = 0;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, list->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->list_mutex);
+   shdrs = MALLOC(rb_context->num_shaders * sizeof(rbug_shader_t));
+   foreach(ptr, &rb_context->shaders) {
+      tr_shdr = container_of(ptr, struct rbug_shader, list);
+      shdrs[i++] = VOID2U64(tr_shdr);
+   }
+
+   pipe_mutex_unlock(rb_context->list_mutex);
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   rbug_send_shader_list_reply(tr_rbug->con, serial, shdrs, i, NULL);
+   FREE(shdrs);
+
+   return 0;
+}
+
+static int
+rbug_shader_info(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   struct rbug_proto_shader_info *info = (struct rbug_proto_shader_info *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+   struct rbug_shader *tr_shdr = NULL;
+   unsigned original_len;
+   unsigned replaced_len;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, info->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->list_mutex);
+
+   tr_shdr = rbug_get_shader_locked(rb_context, info->shader);
+
+   if (!tr_shdr) {
+      pipe_mutex_unlock(rb_context->list_mutex);
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   /* just in case */
+   assert(sizeof(struct tgsi_token) == 4);
+
+   original_len = tgsi_num_tokens(tr_shdr->tokens);
+   if (tr_shdr->replaced_tokens)
+      replaced_len = tgsi_num_tokens(tr_shdr->replaced_tokens);
+   else
+      replaced_len = 0;
+
+   rbug_send_shader_info_reply(tr_rbug->con, serial,
+                               (uint32_t*)tr_shdr->tokens, original_len,
+                               (uint32_t*)tr_shdr->replaced_tokens, replaced_len,
+                               tr_shdr->disabled,
+                               NULL);
+
+   pipe_mutex_unlock(rb_context->list_mutex);
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_shader_disable(struct rbug_rbug *tr_rbug, struct rbug_header *header)
+{
+   struct rbug_proto_shader_disable *dis = (struct rbug_proto_shader_disable *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+   struct rbug_shader *tr_shdr = NULL;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, dis->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->list_mutex);
+
+   tr_shdr = rbug_get_shader_locked(rb_context, dis->shader);
+
+   if (!tr_shdr) {
+      pipe_mutex_unlock(rb_context->list_mutex);
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   tr_shdr->disabled = dis->disable;
+
+   pipe_mutex_unlock(rb_context->list_mutex);
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+}
+
+static int
+rbug_shader_replace(struct rbug_rbug *tr_rbug, struct rbug_header *header)
+{
+   struct rbug_proto_shader_replace *rep = (struct rbug_proto_shader_replace *)header;
+
+   struct rbug_screen *rb_screen = tr_rbug->rb_screen;
+   struct rbug_context *rb_context = NULL;
+   struct rbug_shader *tr_shdr = NULL;
+   struct pipe_context *pipe = NULL;
+   void *state;
+
+   pipe_mutex_lock(rb_screen->list_mutex);
+   rb_context = rbug_get_context_locked(rb_screen, rep->context);
+
+   if (!rb_context) {
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   pipe_mutex_lock(rb_context->list_mutex);
+
+   tr_shdr = rbug_get_shader_locked(rb_context, rep->shader);
+
+   if (!tr_shdr) {
+      pipe_mutex_unlock(rb_context->list_mutex);
+      pipe_mutex_unlock(rb_screen->list_mutex);
+      return -ESRCH;
+   }
+
+   /* protect the pipe context */
+   pipe_mutex_lock(rb_context->call_mutex);
+
+   pipe = rb_context->pipe;
+
+   /* remove old replaced shader */
+   if (tr_shdr->replaced_shader) {
+      /* if this shader is bound rebind the original shader */
+      if (rb_context->curr.fs == tr_shdr || rb_context->curr.vs == tr_shdr)
+         rbug_shader_bind_locked(pipe, tr_shdr, tr_shdr->shader);
+
+      FREE(tr_shdr->replaced_tokens);
+      rbug_shader_delete_locked(pipe, tr_shdr, tr_shdr->replaced_shader);
+      tr_shdr->replaced_shader = NULL;
+      tr_shdr->replaced_tokens = NULL;
+   }
+
+   /* empty inputs means restore old which we did above */
+   if (rep->tokens_len == 0)
+      goto out;
+
+   tr_shdr->replaced_tokens = tgsi_dup_tokens((struct tgsi_token *)rep->tokens);
+   if (!tr_shdr->replaced_tokens)
+      goto err;
+
+   state = rbug_shader_create_locked(pipe, tr_shdr, tr_shdr->replaced_tokens);
+   if (!state)
+      goto err;
+
+   /* bind new shader if the shader is currently a bound */
+   if (rb_context->curr.fs == tr_shdr || rb_context->curr.vs == tr_shdr)
+      rbug_shader_bind_locked(pipe, tr_shdr, state);
+
+   /* save state */
+   tr_shdr->replaced_shader = state;
+
+out:
+   pipe_mutex_unlock(rb_context->call_mutex);
+   pipe_mutex_unlock(rb_context->list_mutex);
+   pipe_mutex_unlock(rb_screen->list_mutex);
+
+   return 0;
+
+err:
+   FREE(tr_shdr->replaced_tokens);
+   tr_shdr->replaced_shader = NULL;
+   tr_shdr->replaced_tokens = NULL;
+
+   pipe_mutex_unlock(rb_context->call_mutex);
+   pipe_mutex_unlock(rb_context->list_mutex);
+   pipe_mutex_unlock(rb_screen->list_mutex);
+   return -EINVAL;
+}
+
+static boolean
+rbug_header(struct rbug_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
+{
+   int ret = 0;
+
+   switch(header->opcode) {
+      case RBUG_OP_PING:
+         rbug_send_ping_reply(tr_rbug->con, serial, NULL);
+         break;
+      case RBUG_OP_TEXTURE_LIST:
+         ret = rbug_texture_list(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_TEXTURE_INFO:
+         ret = rbug_texture_info(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_TEXTURE_READ:
+         ret = rbug_texture_read(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_CONTEXT_LIST:
+         ret = rbug_context_list(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_CONTEXT_INFO:
+         ret = rbug_context_info(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_CONTEXT_DRAW_BLOCK:
+         ret = rbug_context_draw_block(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_CONTEXT_DRAW_STEP:
+         ret = rbug_context_draw_step(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_CONTEXT_DRAW_UNBLOCK:
+         ret = rbug_context_draw_unblock(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_CONTEXT_DRAW_RULE:
+         ret = rbug_context_draw_rule(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_CONTEXT_FLUSH:
+         ret = rbug_context_flush(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_SHADER_LIST:
+         ret = rbug_shader_list(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_SHADER_INFO:
+         ret = rbug_shader_info(tr_rbug, header, serial);
+         break;
+      case RBUG_OP_SHADER_DISABLE:
+         ret = rbug_shader_disable(tr_rbug, header);
+         break;
+      case RBUG_OP_SHADER_REPLACE:
+         ret = rbug_shader_replace(tr_rbug, header);
+         break;
+      default:
+         debug_printf("%s - unsupported opcode %u\n", __FUNCTION__, header->opcode);
+         ret = -ENOSYS;
+         break;
+   }
+   rbug_free_header(header);
+
+   if (ret)
+      rbug_send_error_reply(tr_rbug->con, serial, ret, NULL);
+
+   return TRUE;
+}
+
+static void
+rbug_con(struct rbug_rbug *tr_rbug)
+{
+   struct rbug_header *header;
+   uint32_t serial;
+
+   debug_printf("%s - connection received\n", __FUNCTION__);
+
+   while(tr_rbug->running) {
+      header = rbug_get_message(tr_rbug->con, &serial);
+      if (!header)
+         break;
+
+      if (!rbug_header(tr_rbug, header, serial))
+         break;
+   }
+
+   debug_printf("%s - connection closed\n", __FUNCTION__);
+
+   rbug_disconnect(tr_rbug->con);
+   tr_rbug->con = NULL;
+}
+
+PIPE_THREAD_ROUTINE(rbug_thread, void_tr_rbug)
+{
+   struct rbug_rbug *tr_rbug = void_tr_rbug;
+   uint16_t port = 13370;
+   int s = -1;
+   int c;
+
+   u_socket_init();
+
+   for (;port <= 13379 && s < 0; port++)
+      s = u_socket_listen_on_port(port);
+
+   if (s < 0) {
+      debug_printf("rbug_rbug - failed to listen\n");
+      return NULL;
+   }
+
+   u_socket_block(s, false);
+
+   debug_printf("rbug_rbug - remote debugging listening on port %u\n", --port);
+
+   while(tr_rbug->running) {
+      os_time_sleep(1);
+
+      c = u_socket_accept(s);
+      if (c < 0)
+         continue;
+
+      u_socket_block(c, true);
+      tr_rbug->con = rbug_from_socket(c);
+
+      rbug_con(tr_rbug);
+
+      u_socket_close(c);
+   }
+
+   u_socket_close(s);
+
+   u_socket_stop();
+
+   return NULL;
+}
+
+/**********************************************************
+ *
+ */
+
+struct rbug_rbug *
+rbug_start(struct rbug_screen *rb_screen)
+{
+   struct rbug_rbug *tr_rbug = CALLOC_STRUCT(rbug_rbug);
+   if (!tr_rbug)
+      return NULL;
+
+   tr_rbug->rb_screen = rb_screen;
+   tr_rbug->running = TRUE;
+   tr_rbug->thread = pipe_thread_create(rbug_thread, tr_rbug);
+
+   return tr_rbug;
+}
+
+void
+rbug_stop(struct rbug_rbug *tr_rbug)
+{
+   if (!tr_rbug)
+      return;
+
+   tr_rbug->running = false;
+   pipe_thread_wait(tr_rbug->thread);
+
+   FREE(tr_rbug);
+
+   return;
+}
+
+void
+rbug_notify_draw_blocked(struct rbug_context *rb_context)
+{
+   struct rbug_screen *rb_screen = rbug_screen(rb_context->base.screen);
+   struct rbug_rbug *tr_rbug = rb_screen->rbug;
+
+   if (tr_rbug && tr_rbug->con)
+      rbug_send_context_draw_blocked(tr_rbug->con,
+                                     VOID2U64(rb_context), rb_context->draw_blocked, NULL);
+}
diff --git a/src/gallium/drivers/rbug/rbug_objects.c b/src/gallium/drivers/rbug/rbug_objects.c
new file mode 100644 (file)
index 0000000..0979fcf
--- /dev/null
@@ -0,0 +1,247 @@
+/**************************************************************************
+ *
+ * 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 "util/u_inlines.h"
+#include "util/u_memory.h"
+#include "util/u_simple_list.h"
+
+#include "tgsi/tgsi_parse.h"
+
+#include "rbug_screen.h"
+#include "rbug_objects.h"
+#include "rbug_context.h"
+
+
+
+struct pipe_resource *
+rbug_resource_create(struct rbug_screen *rb_screen,
+                     struct pipe_resource *resource)
+{
+   struct rbug_resource *rb_resource;
+
+   if(!resource)
+      goto error;
+
+   assert(resource->screen == rb_screen->screen);
+
+   rb_resource = CALLOC_STRUCT(rbug_resource);
+   if(!rb_resource)
+      goto error;
+
+   memcpy(&rb_resource->base, resource, sizeof(struct pipe_resource));
+
+   pipe_reference_init(&rb_resource->base.reference, 1);
+   rb_resource->base.screen = &rb_screen->base;
+   rb_resource->resource = resource;
+
+   rbug_screen_add_to_list(rb_screen, resources, rb_resource);
+
+   return &rb_resource->base;
+
+error:
+   pipe_resource_reference(&resource, NULL);
+   return NULL;
+}
+
+void
+rbug_resource_destroy(struct rbug_resource *rb_resource)
+{
+   struct rbug_screen *rb_screen = rbug_screen(rb_resource->base.screen);
+   rbug_screen_remove_from_list(rb_screen, resources, rb_resource);
+
+   pipe_resource_reference(&rb_resource->resource, NULL);
+   FREE(rb_resource);
+}
+
+
+struct pipe_surface *
+rbug_surface_create(struct rbug_resource *rb_resource,
+                    struct pipe_surface *surface)
+{
+   struct rbug_surface *rb_surface;
+
+   if(!surface)
+      goto error;
+
+   assert(surface->texture == rb_resource->resource);
+
+   rb_surface = CALLOC_STRUCT(rbug_surface);
+   if(!rb_surface)
+      goto error;
+
+   memcpy(&rb_surface->base, surface, sizeof(struct pipe_surface));
+
+   pipe_reference_init(&rb_surface->base.reference, 1);
+   rb_surface->base.texture = NULL;
+   pipe_resource_reference(&rb_surface->base.texture, &rb_resource->base);
+   rb_surface->surface = surface;
+
+   return &rb_surface->base;
+
+error:
+   pipe_surface_reference(&surface, NULL);
+   return NULL;
+}
+
+void
+rbug_surface_destroy(struct rbug_surface *rb_surface)
+{
+   pipe_resource_reference(&rb_surface->base.texture, NULL);
+   pipe_surface_reference(&rb_surface->surface, NULL);
+   FREE(rb_surface);
+}
+
+
+struct pipe_sampler_view *
+rbug_sampler_view_create(struct rbug_context *rb_context,
+                         struct rbug_resource *rb_resource,
+                         struct pipe_sampler_view *view)
+{
+   struct rbug_sampler_view *rb_view;
+
+   if (!view)
+      goto error;
+
+   assert(view->texture == rb_resource->resource);
+
+   rb_view = MALLOC(sizeof(struct rbug_sampler_view));
+
+   rb_view->base = *view;
+   rb_view->base.reference.count = 1;
+   rb_view->base.texture = NULL;
+   pipe_resource_reference(&rb_view->base.texture, &rb_resource->base);
+   rb_view->base.context = rb_context->pipe;
+   rb_view->sampler_view = view;
+
+   return &rb_view->base;
+error:
+   return NULL;
+}
+
+void
+rbug_sampler_view_destroy(struct rbug_context *rb_context,
+                          struct rbug_sampler_view *rb_view)
+{
+   pipe_resource_reference(&rb_view->base.texture, NULL);
+   rb_context->pipe->sampler_view_destroy(rb_context->pipe,
+                                          rb_view->sampler_view);
+   FREE(rb_view);
+}
+
+
+struct pipe_transfer *
+rbug_transfer_create(struct rbug_context *rb_context,
+                     struct rbug_resource *rb_resource,
+                     struct pipe_transfer *transfer)
+{
+   struct rbug_transfer *rb_transfer;
+
+   if(!transfer)
+      goto error;
+
+   assert(transfer->resource == rb_resource->resource);
+
+   rb_transfer = CALLOC_STRUCT(rbug_transfer);
+   if(!rb_transfer)
+      goto error;
+
+   memcpy(&rb_transfer->base, transfer, sizeof(struct pipe_transfer));
+
+   rb_transfer->base.resource = NULL;
+   rb_transfer->transfer = transfer;
+   rb_transfer->pipe = rb_context->pipe;
+
+   pipe_resource_reference(&rb_transfer->base.resource, &rb_resource->base);
+   assert(rb_transfer->base.resource == &rb_resource->base);
+
+   return &rb_transfer->base;
+
+error:
+   rb_context->pipe->transfer_destroy(rb_context->pipe, transfer);
+   return NULL;
+}
+
+void
+rbug_transfer_destroy(struct rbug_context *rb_context,
+                      struct rbug_transfer *rb_transfer)
+{
+   pipe_resource_reference(&rb_transfer->base.resource, NULL);
+   rb_transfer->pipe->transfer_destroy(rb_context->pipe,
+                                       rb_transfer->transfer);
+   FREE(rb_transfer);
+}
+
+void *
+rbug_shader_create(struct rbug_context *rb_context,
+                   const struct pipe_shader_state *state,
+                   void *result, enum rbug_shader_type type)
+{
+   struct rbug_shader *rb_shader = CALLOC_STRUCT(rbug_shader);
+
+   rb_shader->type = type;
+   rb_shader->shader = result;
+   rb_shader->tokens = tgsi_dup_tokens(state->tokens);
+
+   /* works on context as well since its just a macro */
+   rbug_screen_add_to_list(rb_context, shaders, rb_shader);
+
+   return rb_shader;
+}
+
+void
+rbug_shader_destroy(struct rbug_context *rb_context,
+                    struct rbug_shader *rb_shader)
+{
+   struct pipe_context *pipe = rb_context->pipe;
+
+   /* works on context as well since its just a macro */
+   rbug_screen_remove_from_list(rb_context, shaders, rb_shader);
+
+   switch(rb_shader->type) {
+   case RBUG_SHADER_FRAGMENT:
+      if (rb_shader->replaced_shader)
+         pipe->delete_fs_state(pipe, rb_shader->replaced_shader);
+      pipe->delete_fs_state(pipe, rb_shader->shader);
+      break;
+   case RBUG_SHADER_VERTEX:
+      if (rb_shader->replaced_shader)
+         pipe->delete_vs_state(pipe, rb_shader->replaced_shader);
+      pipe->delete_vs_state(pipe, rb_shader->shader);
+      break;
+   case RBUG_SHADER_GEOM:
+      if (rb_shader->replaced_shader)
+         pipe->delete_gs_state(pipe, rb_shader->replaced_shader);
+      pipe->delete_gs_state(pipe, rb_shader->shader);
+      break;
+   default:
+      assert(0);
+   }
+
+   FREE(rb_shader->replaced_tokens);
+   FREE(rb_shader->tokens);
+   FREE(rb_shader);
+}
diff --git a/src/gallium/drivers/rbug/rbug_objects.h b/src/gallium/drivers/rbug/rbug_objects.h
new file mode 100644 (file)
index 0000000..49c128d
--- /dev/null
@@ -0,0 +1,226 @@
+/**************************************************************************
+ *
+ * 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 RBUG_OBJECTS_H
+#define RBUG_OBJECTS_H
+
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_state.h"
+
+#include "rbug_screen.h"
+
+struct rbug_context;
+
+
+struct rbug_resource
+{
+   struct pipe_resource base;
+
+   struct pipe_resource *resource;
+
+   struct rbug_list list;
+};
+
+
+enum rbug_shader_type
+{
+   RBUG_SHADER_GEOM,
+   RBUG_SHADER_VERTEX,
+   RBUG_SHADER_FRAGMENT,
+};
+
+struct rbug_shader
+{
+   struct rbug_list list;
+
+   void *shader;
+   void *tokens;
+   void *replaced_shader;
+   void *replaced_tokens;
+
+   enum rbug_shader_type type;
+   boolean disabled;
+};
+
+
+struct rbug_sampler_view
+{
+   struct pipe_sampler_view base;
+
+   struct pipe_sampler_view *sampler_view;
+};
+
+
+struct rbug_surface
+{
+   struct pipe_surface base;
+
+   struct pipe_surface *surface;
+};
+
+
+struct rbug_transfer
+{
+   struct pipe_transfer base;
+
+   struct pipe_context *pipe;
+   struct pipe_transfer *transfer;
+};
+
+
+static INLINE struct rbug_resource *
+rbug_resource(struct pipe_resource *_resource)
+{
+   if (!_resource)
+      return NULL;
+   (void)rbug_screen(_resource->screen);
+   return (struct rbug_resource *)_resource;
+}
+
+static INLINE struct rbug_sampler_view *
+rbug_sampler_view(struct pipe_sampler_view *_sampler_view)
+{
+   if (!_sampler_view)
+      return NULL;
+   (void)rbug_resource(_sampler_view->texture);
+   return (struct rbug_sampler_view *)_sampler_view;
+}
+
+static INLINE struct rbug_surface *
+rbug_surface(struct pipe_surface *_surface)
+{
+   if (!_surface)
+      return NULL;
+   (void)rbug_resource(_surface->texture);
+   return (struct rbug_surface *)_surface;
+}
+
+static INLINE struct rbug_transfer *
+rbug_transfer(struct pipe_transfer *_transfer)
+{
+   if (!_transfer)
+      return NULL;
+   (void)rbug_resource(_transfer->resource);
+   return (struct rbug_transfer *)_transfer;
+}
+
+static INLINE struct rbug_shader *
+rbug_shader(void *_state)
+{
+   if (!_state)
+      return NULL;
+   return (struct rbug_shader *)_state;
+}
+
+static INLINE struct pipe_resource *
+rbug_resource_unwrap(struct pipe_resource *_resource)
+{
+   if (!_resource)
+      return NULL;
+   return rbug_resource(_resource)->resource;
+}
+
+static INLINE struct pipe_sampler_view *
+rbug_sampler_view_unwrap(struct pipe_sampler_view *_sampler_view)
+{
+   if (!_sampler_view)
+      return NULL;
+   return rbug_sampler_view(_sampler_view)->sampler_view;
+}
+
+static INLINE struct pipe_surface *
+rbug_surface_unwrap(struct pipe_surface *_surface)
+{
+   if (!_surface)
+      return NULL;
+   return rbug_surface(_surface)->surface;
+}
+
+static INLINE struct pipe_transfer *
+rbug_transfer_unwrap(struct pipe_transfer *_transfer)
+{
+   if (!_transfer)
+      return NULL;
+   return rbug_transfer(_transfer)->transfer;
+}
+
+static INLINE void *
+rbug_shader_unwrap(void *_state)
+{
+   struct rbug_shader *shader;
+   if (!_state)
+      return NULL;
+
+   shader = rbug_shader(_state);
+   return shader->replaced_shader ? shader->replaced_shader : shader->shader;
+}
+
+
+struct pipe_resource *
+rbug_resource_create(struct rbug_screen *rb_screen,
+                     struct pipe_resource *resource);
+
+void
+rbug_resource_destroy(struct rbug_resource *rb_resource);
+
+struct pipe_surface *
+rbug_surface_create(struct rbug_resource *rb_resource,
+                    struct pipe_surface *surface);
+
+void
+rbug_surface_destroy(struct rbug_surface *rb_surface);
+
+struct pipe_sampler_view *
+rbug_sampler_view_create(struct rbug_context *rb_context,
+                         struct rbug_resource *rb_resource,
+                         struct pipe_sampler_view *view);
+
+void
+rbug_sampler_view_destroy(struct rbug_context *rb_context,
+                          struct rbug_sampler_view *rb_sampler_view);
+
+struct pipe_transfer *
+rbug_transfer_create(struct rbug_context *rb_context,
+                     struct rbug_resource *rb_resource,
+                     struct pipe_transfer *transfer);
+
+void
+rbug_transfer_destroy(struct rbug_context *rb_context,
+                      struct rbug_transfer *rb_transfer);
+
+void *
+rbug_shader_create(struct rbug_context *rb_context,
+                   const struct pipe_shader_state *state,
+                   void *result, enum rbug_shader_type type);
+
+void
+rbug_shader_destroy(struct rbug_context *rb_context,
+                    struct rbug_shader *rb_shader);
+
+
+#endif /* RBUG_OBJECTS_H */
diff --git a/src/gallium/drivers/rbug/rbug_public.h b/src/gallium/drivers/rbug/rbug_public.h
new file mode 100644 (file)
index 0000000..b66740b
--- /dev/null
@@ -0,0 +1,40 @@
+/**************************************************************************
+ *
+ * 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 RBUG_PUBLIC_H
+#define RBUG_PUBLIC_H
+
+struct pipe_screen;
+struct pipe_context;
+
+struct pipe_screen *
+rbug_screen_create(struct pipe_screen *screen);
+
+boolean
+rbug_enabled(void);
+
+#endif /* RBUG_PUBLIC_H */
diff --git a/src/gallium/drivers/rbug/rbug_screen.c b/src/gallium/drivers/rbug/rbug_screen.c
new file mode 100644 (file)
index 0000000..2b60af2
--- /dev/null
@@ -0,0 +1,351 @@
+/**************************************************************************
+ *
+ * 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 "pipe/p_state.h"
+#include "util/u_memory.h"
+#include "util/u_debug.h"
+#include "util/u_simple_list.h"
+
+#include "rbug_public.h"
+#include "rbug_screen.h"
+#include "rbug_context.h"
+#include "rbug_objects.h"
+
+DEBUG_GET_ONCE_BOOL_OPTION(rbug, "GALLIUM_RBUG", FALSE)
+
+static void
+rbug_screen_destroy(struct pipe_screen *_screen)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   screen->destroy(screen);
+
+   FREE(rb_screen);
+}
+
+static const char *
+rbug_screen_get_name(struct pipe_screen *_screen)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->get_name(screen);
+}
+
+static const char *
+rbug_screen_get_vendor(struct pipe_screen *_screen)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->get_vendor(screen);
+}
+
+static int
+rbug_screen_get_param(struct pipe_screen *_screen,
+                      enum pipe_cap param)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->get_param(screen,
+                            param);
+}
+
+static float
+rbug_screen_get_paramf(struct pipe_screen *_screen,
+                       enum pipe_cap param)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->get_paramf(screen,
+                             param);
+}
+
+static boolean
+rbug_screen_is_format_supported(struct pipe_screen *_screen,
+                                enum pipe_format format,
+                                enum pipe_texture_target target,
+                                unsigned tex_usage,
+                                unsigned geom_flags)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->is_format_supported(screen,
+                                      format,
+                                      target,
+                                      tex_usage,
+                                      geom_flags);
+}
+
+static struct pipe_context *
+rbug_screen_context_create(struct pipe_screen *_screen,
+                           void *priv)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_context *result;
+
+   result = screen->context_create(screen, priv);
+   if (result)
+      return rbug_context_create(_screen, result);
+   return NULL;
+}
+
+static struct pipe_resource *
+rbug_screen_resource_create(struct pipe_screen *_screen,
+                            const struct pipe_resource *templat)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_resource *result;
+
+   result = screen->resource_create(screen,
+                                    templat);
+
+   if (result)
+      return rbug_resource_create(rb_screen, result);
+   return NULL;
+}
+
+static struct pipe_resource *
+rbug_screen_resource_from_handle(struct pipe_screen *_screen,
+                                 const struct pipe_resource *templ,
+                                 struct winsys_handle *handle)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_resource *result;
+
+   result = screen->resource_from_handle(screen, templ, handle);
+
+   result = rbug_resource_create(rbug_screen(_screen), result);
+
+   return result;
+}
+
+static boolean
+rbug_screen_resource_get_handle(struct pipe_screen *_screen,
+                                struct pipe_resource *_resource,
+                                struct winsys_handle *handle)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct rbug_resource *rb_resource = rbug_resource(_resource);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_resource *resource = rb_resource->resource;
+
+   return screen->resource_get_handle(screen, resource, handle);
+}
+
+
+
+static void
+rbug_screen_resource_destroy(struct pipe_screen *screen,
+                             struct pipe_resource *_resource)
+{
+   rbug_resource_destroy(rbug_resource(_resource));
+}
+
+static struct pipe_surface *
+rbug_screen_get_tex_surface(struct pipe_screen *_screen,
+                            struct pipe_resource *_resource,
+                            unsigned face,
+                            unsigned level,
+                            unsigned zslice,
+                            unsigned usage)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct rbug_resource *rb_resource = rbug_resource(_resource);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_resource *resource = rb_resource->resource;
+   struct pipe_surface *result;
+
+   result = screen->get_tex_surface(screen,
+                                    resource,
+                                    face,
+                                    level,
+                                    zslice,
+                                    usage);
+
+   if (result)
+      return rbug_surface_create(rb_resource, result);
+   return NULL;
+}
+
+static void
+rbug_screen_tex_surface_destroy(struct pipe_surface *_surface)
+{
+   rbug_surface_destroy(rbug_surface(_surface));
+}
+
+
+
+static struct pipe_resource *
+rbug_screen_user_buffer_create(struct pipe_screen *_screen,
+                               void *ptr,
+                               unsigned bytes,
+                               unsigned usage)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_resource *result;
+
+   result = screen->user_buffer_create(screen,
+                                       ptr,
+                                       bytes,
+                                       usage);
+
+   if (result)
+      return rbug_resource_create(rb_screen, result);
+   return NULL;
+}
+
+
+
+static void
+rbug_screen_flush_frontbuffer(struct pipe_screen *_screen,
+                              struct pipe_surface *_surface,
+                              void *context_private)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct rbug_surface *rb_surface = rbug_surface(_surface);
+   struct pipe_screen *screen = rb_screen->screen;
+   struct pipe_surface *surface = rb_surface->surface;
+
+   screen->flush_frontbuffer(screen,
+                             surface,
+                             context_private);
+}
+
+static void
+rbug_screen_fence_reference(struct pipe_screen *_screen,
+                            struct pipe_fence_handle **ptr,
+                            struct pipe_fence_handle *fence)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   screen->fence_reference(screen,
+                           ptr,
+                           fence);
+}
+
+static int
+rbug_screen_fence_signalled(struct pipe_screen *_screen,
+                            struct pipe_fence_handle *fence,
+                            unsigned flags)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->fence_signalled(screen,
+                                  fence,
+                                  flags);
+}
+
+static int
+rbug_screen_fence_finish(struct pipe_screen *_screen,
+                         struct pipe_fence_handle *fence,
+                         unsigned flags)
+{
+   struct rbug_screen *rb_screen = rbug_screen(_screen);
+   struct pipe_screen *screen = rb_screen->screen;
+
+   return screen->fence_finish(screen,
+                               fence,
+                               flags);
+}
+
+boolean
+rbug_enabled()
+{
+   return debug_get_option_rbug();
+}
+
+struct pipe_screen *
+rbug_screen_create(struct pipe_screen *screen)
+{
+   struct rbug_screen *rb_screen;
+
+   if (!debug_get_option_rbug())
+      return screen;
+
+   rb_screen = CALLOC_STRUCT(rbug_screen);
+   if (!rb_screen)
+      return screen;
+
+   pipe_mutex_init(rb_screen->list_mutex);
+   make_empty_list(&rb_screen->contexts);
+   make_empty_list(&rb_screen->resources);
+   make_empty_list(&rb_screen->surfaces);
+   make_empty_list(&rb_screen->transfers);
+
+   rb_screen->base.winsys = NULL;
+
+   rb_screen->base.destroy = rbug_screen_destroy;
+   rb_screen->base.get_name = rbug_screen_get_name;
+   rb_screen->base.get_vendor = rbug_screen_get_vendor;
+   rb_screen->base.get_param = rbug_screen_get_param;
+   rb_screen->base.get_paramf = rbug_screen_get_paramf;
+   rb_screen->base.is_format_supported = rbug_screen_is_format_supported;
+   rb_screen->base.context_create = rbug_screen_context_create;
+   rb_screen->base.resource_create = rbug_screen_resource_create;
+   rb_screen->base.resource_from_handle = rbug_screen_resource_from_handle;
+   rb_screen->base.resource_get_handle = rbug_screen_resource_get_handle;
+   rb_screen->base.resource_destroy = rbug_screen_resource_destroy;
+   rb_screen->base.get_tex_surface = rbug_screen_get_tex_surface;
+   rb_screen->base.tex_surface_destroy = rbug_screen_tex_surface_destroy;
+   rb_screen->base.user_buffer_create = rbug_screen_user_buffer_create;
+   rb_screen->base.flush_frontbuffer = rbug_screen_flush_frontbuffer;
+   rb_screen->base.fence_reference = rbug_screen_fence_reference;
+   rb_screen->base.fence_signalled = rbug_screen_fence_signalled;
+   rb_screen->base.fence_finish = rbug_screen_fence_finish;
+
+   rb_screen->screen = screen;
+
+   rb_screen->private_context = screen->context_create(screen, NULL);
+   if (!rb_screen->private_context)
+      goto err_free;
+
+   rb_screen->rbug = rbug_start(rb_screen);
+
+   if (!rb_screen->rbug)
+      goto err_context;
+
+   return &rb_screen->base;
+
+err_context:
+   rb_screen->private_context->destroy(rb_screen->private_context);
+err_free:
+   FREE(rb_screen);
+   return screen;
+}
diff --git a/src/gallium/drivers/rbug/rbug_screen.h b/src/gallium/drivers/rbug/rbug_screen.h
new file mode 100644 (file)
index 0000000..a53afac
--- /dev/null
@@ -0,0 +1,100 @@
+/**************************************************************************
+ *
+ * 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 RBUG_SCREEN_H
+#define RBUG_SCREEN_H
+
+#include "pipe/p_screen.h"
+#include "pipe/p_defines.h"
+
+#include "os/os_thread.h"
+
+struct rbug_list {
+   struct rbug_list *next;
+   struct rbug_list *prev;
+};
+
+
+struct rbug_screen
+{
+   struct pipe_screen base;
+
+   struct pipe_screen *screen;
+   struct pipe_context *private_context;
+
+   /* remote debugger */
+   struct rbug_rbug *rbug;
+
+   pipe_mutex list_mutex;
+   int num_contexts;
+   int num_resources;
+   int num_surfaces;
+   int num_transfers;
+   struct rbug_list contexts;
+   struct rbug_list resources;
+   struct rbug_list surfaces;
+   struct rbug_list transfers;
+};
+
+static INLINE struct rbug_screen *
+rbug_screen(struct pipe_screen *screen)
+{
+   return (struct rbug_screen *)screen;
+}
+
+#define rbug_screen_add_to_list(scr, name, obj) \
+   do {                                          \
+      pipe_mutex_lock(scr->list_mutex);          \
+      insert_at_head(&scr->name, &obj->list);    \
+      scr->num_##name++;                         \
+      pipe_mutex_unlock(scr->list_mutex);        \
+   } while (0)
+
+#define rbug_screen_remove_from_list(scr, name, obj) \
+   do {                                               \
+      pipe_mutex_lock(scr->list_mutex);               \
+      remove_from_list(&obj->list);                   \
+      scr->num_##name--;                              \
+      pipe_mutex_unlock(scr->list_mutex);             \
+   } while (0)
+
+
+
+/**********************************************************
+ * rbug_core.c
+ */
+
+struct rbug_rbug;
+
+struct rbug_rbug *
+rbug_start(struct rbug_screen *rb_screen);
+
+void
+rbug_stop(struct rbug_rbug *rbug);
+
+
+#endif /* RBUG_SCREEN_H */
index 0f1bcc21bd66e7ce133f64bf15b02b0c7134820f..2f10b46e9898e3c916646a894aa4f044f2f7e964 100644 (file)
@@ -36,6 +36,7 @@
 #include "util/u_math.h"
 #include "util/u_memory.h"
 #include "util/u_inlines.h"
+#include "tgsi/tgsi_exec.h"
 #include "sp_clear.h"
 #include "sp_context.h"
 #include "sp_flush.h"
@@ -123,6 +124,8 @@ softpipe_destroy( struct pipe_context *pipe )
       }
    }
 
+   tgsi_exec_machine_destroy(softpipe->fs_machine);
+
    FREE( softpipe );
 }
 
@@ -294,6 +297,8 @@ softpipe_create_context( struct pipe_screen *screen,
       softpipe->vertex_tex_cache[i] = sp_create_tex_tile_cache( &softpipe->pipe );
    }
 
+   softpipe->fs_machine = tgsi_exec_machine_create();
+
    /* setup quad rendering stages */
    softpipe->quad.shade = sp_quad_shade_stage(softpipe);
    softpipe->quad.depth_test = sp_quad_depth_test_stage(softpipe);
index 92607874b60912f4f0d3551be46b1d2615a87cfe..b3d3fe620fd794ab2160f330ecbfab651199b924 100644 (file)
@@ -109,6 +109,9 @@ struct softpipe_context {
    /** The reduced version of the primitive supplied by the state tracker */
    unsigned reduced_api_prim;
 
+   /** Derived information about which winding orders to cull */
+   unsigned cull_mode;
+
    /**
     * The reduced primitive after unfilled triangles, wide-line decomposition,
     * etc, are taken into account.  This is the primitive type that's actually
@@ -140,6 +143,8 @@ struct softpipe_context {
       struct sp_sampler_varient *frag_samplers_list[PIPE_MAX_SAMPLERS];
    } tgsi;
 
+   struct tgsi_exec_machine *fs_machine;
+
    /** The primitive drawing context */
    struct draw_context *draw;
 
index a58bc107c0a72f378828dda019745e45d5018e71..db0d1755103620ff679b0205e61752715f7bfd61 100644 (file)
@@ -158,26 +158,27 @@ static INLINE cptrf4 get_vert( const void *vertex_buffer,
  * draw elements / indexed primitives
  */
 static void
-sp_vbuf_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
+sp_vbuf_draw_elements(struct vbuf_render *vbr, const ushort *indices, uint nr)
 {
    struct softpipe_vbuf_render *cvbr = softpipe_vbuf_render(vbr);
    struct softpipe_context *softpipe = cvbr->softpipe;
    const unsigned stride = softpipe->vertex_info_vbuf.size * sizeof(float);
    const void *vertex_buffer = cvbr->vertex_buffer;
-   struct setup_context *setup_ctx = cvbr->setup;
+   struct setup_context *setup = cvbr->setup;
+   const boolean flatshade_first = softpipe->rasterizer->flatshade_first;
    unsigned i;
 
    switch (cvbr->prim) {
    case PIPE_PRIM_POINTS:
       for (i = 0; i < nr; i++) {
-         sp_setup_point( setup_ctx,
+         sp_setup_point( setup,
                          get_vert(vertex_buffer, indices[i-0], stride) );
       }
       break;
 
    case PIPE_PRIM_LINES:
       for (i = 1; i < nr; i += 2) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                         get_vert(vertex_buffer, indices[i-1], stride),
                         get_vert(vertex_buffer, indices[i-0], stride) );
       }
@@ -185,7 +186,7 @@ sp_vbuf_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
 
    case PIPE_PRIM_LINE_STRIP:
       for (i = 1; i < nr; i ++) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                         get_vert(vertex_buffer, indices[i-1], stride),
                         get_vert(vertex_buffer, indices[i-0], stride) );
       }
@@ -193,48 +194,41 @@ sp_vbuf_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
 
    case PIPE_PRIM_LINE_LOOP:
       for (i = 1; i < nr; i ++) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                         get_vert(vertex_buffer, indices[i-1], stride),
                         get_vert(vertex_buffer, indices[i-0], stride) );
       }
       if (nr) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                         get_vert(vertex_buffer, indices[nr-1], stride),
                         get_vert(vertex_buffer, indices[0], stride) );
       }
       break;
 
    case PIPE_PRIM_TRIANGLES:
-      if (softpipe->rasterizer->flatshade_first) {
-         for (i = 2; i < nr; i += 3) {
-            sp_setup_tri( setup_ctx,
-                          get_vert(vertex_buffer, indices[i-1], stride),
-                          get_vert(vertex_buffer, indices[i-0], stride),
-                          get_vert(vertex_buffer, indices[i-2], stride) );
-         }
-      }
-      else {
-         for (i = 2; i < nr; i += 3) {
-            sp_setup_tri( setup_ctx,
-                          get_vert(vertex_buffer, indices[i-2], stride),
-                          get_vert(vertex_buffer, indices[i-1], stride),
-                          get_vert(vertex_buffer, indices[i-0], stride) );
-         }
+      for (i = 2; i < nr; i += 3) {
+         sp_setup_tri( setup,
+                       get_vert(vertex_buffer, indices[i-2], stride),
+                       get_vert(vertex_buffer, indices[i-1], stride),
+                       get_vert(vertex_buffer, indices[i-0], stride) );
       }
       break;
 
    case PIPE_PRIM_TRIANGLE_STRIP:
-      if (softpipe->rasterizer->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i += 1) {
-            sp_setup_tri( setup_ctx,
+            /* emit first triangle vertex as first triangle vertex */
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-2], stride),
                           get_vert(vertex_buffer, indices[i+(i&1)-1], stride),
-                          get_vert(vertex_buffer, indices[i-(i&1)], stride),
-                          get_vert(vertex_buffer, indices[i-2], stride) );
+                          get_vert(vertex_buffer, indices[i-(i&1)], stride) );
+
          }
       }
       else {
          for (i = 2; i < nr; i += 1) {
-            sp_setup_tri( setup_ctx,
+            /* emit last triangle vertex as last triangle vertex */
+            sp_setup_tri( setup,
                           get_vert(vertex_buffer, indices[i+(i&1)-2], stride),
                           get_vert(vertex_buffer, indices[i-(i&1)-1], stride),
                           get_vert(vertex_buffer, indices[i-0], stride) );
@@ -243,17 +237,19 @@ sp_vbuf_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
       break;
 
    case PIPE_PRIM_TRIANGLE_FAN:
-      if (softpipe->rasterizer->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i += 1) {
-            sp_setup_tri( setup_ctx,
+            /* emit first non-spoke vertex as first vertex */
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-1], stride),
                           get_vert(vertex_buffer, indices[i-0], stride),
-                          get_vert(vertex_buffer, indices[0], stride),
-                          get_vert(vertex_buffer, indices[i-1], stride) );
+                          get_vert(vertex_buffer, indices[0], stride) );
          }
       }
       else {
          for (i = 2; i < nr; i += 1) {
-            sp_setup_tri( setup_ctx,
+            /* emit last non-spoke vertex as last vertex */
+            sp_setup_tri( setup,
                           get_vert(vertex_buffer, indices[0], stride),
                           get_vert(vertex_buffer, indices[i-1], stride),
                           get_vert(vertex_buffer, indices[i-0], stride) );
@@ -262,43 +258,88 @@ sp_vbuf_draw(struct vbuf_render *vbr, const ushort *indices, uint nr)
       break;
 
    case PIPE_PRIM_QUADS:
-      for (i = 3; i < nr; i += 4) {
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, indices[i-3], stride),
-                       get_vert(vertex_buffer, indices[i-2], stride),
-                       get_vert(vertex_buffer, indices[i-0], stride) );
+      /* GL quads don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-0], stride),
+                          get_vert(vertex_buffer, indices[i-3], stride),
+                          get_vert(vertex_buffer, indices[i-2], stride) );
 
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, indices[i-2], stride),
-                       get_vert(vertex_buffer, indices[i-1], stride),
-                       get_vert(vertex_buffer, indices[i-0], stride) );
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-0], stride),
+                          get_vert(vertex_buffer, indices[i-2], stride),
+                          get_vert(vertex_buffer, indices[i-1], stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-3], stride),
+                          get_vert(vertex_buffer, indices[i-2], stride),
+                          get_vert(vertex_buffer, indices[i-0], stride) );
+
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-2], stride),
+                          get_vert(vertex_buffer, indices[i-1], stride),
+                          get_vert(vertex_buffer, indices[i-0], stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_QUAD_STRIP:
-      for (i = 3; i < nr; i += 2) {
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, indices[i-3], stride),
-                       get_vert(vertex_buffer, indices[i-2], stride),
-                       get_vert(vertex_buffer, indices[i-0], stride) );
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, indices[i-1], stride),
-                       get_vert(vertex_buffer, indices[i-3], stride),
-                       get_vert(vertex_buffer, indices[i-0], stride) );
+      /* GL quad strips don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-0], stride),
+                          get_vert(vertex_buffer, indices[i-3], stride),
+                          get_vert(vertex_buffer, indices[i-2], stride) );
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-0], stride),
+                          get_vert(vertex_buffer, indices[i-1], stride),
+                          get_vert(vertex_buffer, indices[i-3], stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-3], stride),
+                          get_vert(vertex_buffer, indices[i-2], stride),
+                          get_vert(vertex_buffer, indices[i-0], stride) );
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-1], stride),
+                          get_vert(vertex_buffer, indices[i-3], stride),
+                          get_vert(vertex_buffer, indices[i-0], stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_POLYGON:
       /* Almost same as tri fan but the _first_ vertex specifies the flat
-       * shading color.  Note that the first polygon vertex is passed as
-       * the last triangle vertex here.
-       * flatshade_first state makes no difference.
+       * shading color.
        */
-      for (i = 2; i < nr; i += 1) {
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, indices[i-0], stride),
-                       get_vert(vertex_buffer, indices[i-1], stride),
-                       get_vert(vertex_buffer, indices[0], stride) );
+      if (flatshade_first) { 
+         /* emit first polygon  vertex as first triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[0], stride),
+                          get_vert(vertex_buffer, indices[i-1], stride),
+                          get_vert(vertex_buffer, indices[i-0], stride) );
+         }
+      }
+      else {
+         /* emit first polygon  vertex as last triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, indices[i-1], stride),
+                          get_vert(vertex_buffer, indices[i-0], stride),
+                          get_vert(vertex_buffer, indices[0], stride) );
+         }
       }
       break;
 
@@ -317,23 +358,24 @@ sp_vbuf_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
 {
    struct softpipe_vbuf_render *cvbr = softpipe_vbuf_render(vbr);
    struct softpipe_context *softpipe = cvbr->softpipe;
-   struct setup_context *setup_ctx = cvbr->setup;
+   struct setup_context *setup = cvbr->setup;
    const unsigned stride = softpipe->vertex_info_vbuf.size * sizeof(float);
    const void *vertex_buffer =
       (void *) get_vert(cvbr->vertex_buffer, start, stride);
+   const boolean flatshade_first = softpipe->rasterizer->flatshade_first;
    unsigned i;
 
    switch (cvbr->prim) {
    case PIPE_PRIM_POINTS:
       for (i = 0; i < nr; i++) {
-         sp_setup_point( setup_ctx,
+         sp_setup_point( setup,
                          get_vert(vertex_buffer, i-0, stride) );
       }
       break;
 
    case PIPE_PRIM_LINES:
       for (i = 1; i < nr; i += 2) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                         get_vert(vertex_buffer, i-1, stride),
                         get_vert(vertex_buffer, i-0, stride) );
       }
@@ -341,7 +383,7 @@ sp_vbuf_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
 
    case PIPE_PRIM_LINE_STRIP:
       for (i = 1; i < nr; i ++) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                      get_vert(vertex_buffer, i-1, stride),
                      get_vert(vertex_buffer, i-0, stride) );
       }
@@ -349,48 +391,40 @@ sp_vbuf_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
 
    case PIPE_PRIM_LINE_LOOP:
       for (i = 1; i < nr; i ++) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                         get_vert(vertex_buffer, i-1, stride),
                         get_vert(vertex_buffer, i-0, stride) );
       }
       if (nr) {
-         sp_setup_line( setup_ctx,
+         sp_setup_line( setup,
                         get_vert(vertex_buffer, nr-1, stride),
                         get_vert(vertex_buffer, 0, stride) );
       }
       break;
 
    case PIPE_PRIM_TRIANGLES:
-      if (softpipe->rasterizer->flatshade_first) {
-         for (i = 2; i < nr; i += 3) {
-            sp_setup_tri( setup_ctx,
-                          get_vert(vertex_buffer, i-1, stride),
-                          get_vert(vertex_buffer, i-0, stride),
-                          get_vert(vertex_buffer, i-2, stride) );
-         }
-      }
-      else {
-         for (i = 2; i < nr; i += 3) {
-            sp_setup_tri( setup_ctx,
-                          get_vert(vertex_buffer, i-2, stride),
-                          get_vert(vertex_buffer, i-1, stride),
-                          get_vert(vertex_buffer, i-0, stride) );
-         }
+      for (i = 2; i < nr; i += 3) {
+         sp_setup_tri( setup,
+                       get_vert(vertex_buffer, i-2, stride),
+                       get_vert(vertex_buffer, i-1, stride),
+                       get_vert(vertex_buffer, i-0, stride) );
       }
       break;
 
    case PIPE_PRIM_TRIANGLE_STRIP:
-      if (softpipe->rasterizer->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i++) {
-            sp_setup_tri( setup_ctx,
+            /* emit first triangle vertex as first triangle vertex */
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-2, stride),
                           get_vert(vertex_buffer, i+(i&1)-1, stride),
-                          get_vert(vertex_buffer, i-(i&1), stride),
-                          get_vert(vertex_buffer, i-2, stride) );
+                          get_vert(vertex_buffer, i-(i&1), stride) );
          }
       }
       else {
          for (i = 2; i < nr; i++) {
-            sp_setup_tri( setup_ctx,
+            /* emit last triangle vertex as last triangle vertex */
+            sp_setup_tri( setup,
                           get_vert(vertex_buffer, i+(i&1)-2, stride),
                           get_vert(vertex_buffer, i-(i&1)-1, stride),
                           get_vert(vertex_buffer, i-0, stride) );
@@ -399,17 +433,19 @@ sp_vbuf_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
       break;
 
    case PIPE_PRIM_TRIANGLE_FAN:
-      if (softpipe->rasterizer->flatshade_first) {
+      if (flatshade_first) {
          for (i = 2; i < nr; i += 1) {
-            sp_setup_tri( setup_ctx,
+            /* emit first non-spoke vertex as first vertex */
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-1, stride),
                           get_vert(vertex_buffer, i-0, stride),
-                          get_vert(vertex_buffer, 0, stride),
-                          get_vert(vertex_buffer, i-1, stride) );
+                          get_vert(vertex_buffer, 0, stride)  );
          }
       }
       else {
          for (i = 2; i < nr; i += 1) {
-            sp_setup_tri( setup_ctx,
+            /* emit last non-spoke vertex as last vertex */
+            sp_setup_tri( setup,
                           get_vert(vertex_buffer, 0, stride),
                           get_vert(vertex_buffer, i-1, stride),
                           get_vert(vertex_buffer, i-0, stride) );
@@ -418,42 +454,86 @@ sp_vbuf_draw_arrays(struct vbuf_render *vbr, uint start, uint nr)
       break;
 
    case PIPE_PRIM_QUADS:
-      for (i = 3; i < nr; i += 4) {
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, i-3, stride),
-                       get_vert(vertex_buffer, i-2, stride),
-                       get_vert(vertex_buffer, i-0, stride) );
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, i-2, stride),
-                       get_vert(vertex_buffer, i-1, stride),
-                       get_vert(vertex_buffer, i-0, stride) );
+      /* GL quads don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-0, stride),
+                          get_vert(vertex_buffer, i-3, stride),
+                          get_vert(vertex_buffer, i-2, stride) );
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-0, stride),
+                          get_vert(vertex_buffer, i-2, stride),
+                          get_vert(vertex_buffer, i-1, stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 4) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-3, stride),
+                          get_vert(vertex_buffer, i-2, stride),
+                          get_vert(vertex_buffer, i-0, stride) );
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-2, stride),
+                          get_vert(vertex_buffer, i-1, stride),
+                          get_vert(vertex_buffer, i-0, stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_QUAD_STRIP:
-      for (i = 3; i < nr; i += 2) {
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, i-3, stride),
-                       get_vert(vertex_buffer, i-2, stride),
-                       get_vert(vertex_buffer, i-0, stride) );
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, i-1, stride),
-                       get_vert(vertex_buffer, i-3, stride),
-                       get_vert(vertex_buffer, i-0, stride) );
+      /* GL quad strips don't follow provoking vertex convention */
+      if (flatshade_first) { 
+         /* emit last quad vertex as first triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-0, stride),
+                          get_vert(vertex_buffer, i-3, stride),
+                          get_vert(vertex_buffer, i-2, stride) );
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-0, stride),
+                          get_vert(vertex_buffer, i-1, stride),
+                          get_vert(vertex_buffer, i-3, stride) );
+         }
+      }
+      else {
+         /* emit last quad vertex as last triangle vertex */
+         for (i = 3; i < nr; i += 2) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-3, stride),
+                          get_vert(vertex_buffer, i-2, stride),
+                          get_vert(vertex_buffer, i-0, stride) );
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-1, stride),
+                          get_vert(vertex_buffer, i-3, stride),
+                          get_vert(vertex_buffer, i-0, stride) );
+         }
       }
       break;
 
    case PIPE_PRIM_POLYGON:
       /* Almost same as tri fan but the _first_ vertex specifies the flat
-       * shading color.  Note that the first polygon vertex is passed as
-       * the last triangle vertex here.
-       * flatshade_first state makes no difference.
+       * shading color.
        */
-      for (i = 2; i < nr; i += 1) {
-         sp_setup_tri( setup_ctx,
-                       get_vert(vertex_buffer, i-1, stride),
-                       get_vert(vertex_buffer, i-0, stride),
-                       get_vert(vertex_buffer, 0, stride) );
+      if (flatshade_first) { 
+         /* emit first polygon  vertex as first triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, 0, stride),
+                          get_vert(vertex_buffer, i-1, stride),
+                          get_vert(vertex_buffer, i-0, stride) );
+         }
+      }
+      else {
+         /* emit first polygon  vertex as last triangle vertex */
+         for (i = 2; i < nr; i += 1) {
+            sp_setup_tri( setup,
+                          get_vert(vertex_buffer, i-1, stride),
+                          get_vert(vertex_buffer, i-0, stride),
+                          get_vert(vertex_buffer, 0, stride) );
+         }
       }
       break;
 
@@ -492,7 +572,7 @@ sp_create_vbuf_backend(struct softpipe_context *sp)
    cvbr->base.map_vertices = sp_vbuf_map_vertices;
    cvbr->base.unmap_vertices = sp_vbuf_unmap_vertices;
    cvbr->base.set_primitive = sp_vbuf_set_primitive;
-   cvbr->base.draw = sp_vbuf_draw;
+   cvbr->base.draw_elements = sp_vbuf_draw_elements;
    cvbr->base.draw_arrays = sp_vbuf_draw_arrays;
    cvbr->base.release_vertices = sp_vbuf_release_vertices;
    cvbr->base.destroy = sp_vbuf_destroy;
index 8ae5a7f028b2985a2f8099d63b52c5a5b4995eaf..907e94b59b98ab924af61527346fdc5be9d47801 100644 (file)
@@ -50,8 +50,8 @@
 struct quad_shade_stage
 {
    struct quad_stage stage;  /**< base class */
-   struct tgsi_exec_machine *machine;
-   struct tgsi_exec_vector *inputs, *outputs;
+
+   /* no other fields at this time */
 };
 
 
@@ -70,9 +70,8 @@ quad_shade_stage(struct quad_stage *qs)
 static INLINE boolean
 shade_quad(struct quad_stage *qs, struct quad_header *quad)
 {
-   struct quad_shade_stage *qss = quad_shade_stage( qs );
    struct softpipe_context *softpipe = qs->softpipe;
-   struct tgsi_exec_machine *machine = qss->machine;
+   struct tgsi_exec_machine *machine = softpipe->fs_machine;
 
    /* run shader */
    return softpipe->fs->run( softpipe->fs, machine, quad );
@@ -108,9 +107,8 @@ shade_quads(struct quad_stage *qs,
             struct quad_header *quads[],
             unsigned nr)
 {
-   struct quad_shade_stage *qss = quad_shade_stage( qs );
    struct softpipe_context *softpipe = qs->softpipe;
-   struct tgsi_exec_machine *machine = qss->machine;
+   struct tgsi_exec_machine *machine = softpipe->fs_machine;
    unsigned i, pass = 0;
 
    for (i = 0; i < PIPE_MAX_CONSTANT_BUFFERS; i++) {
@@ -139,11 +137,10 @@ shade_quads(struct quad_stage *qs,
 static void
 shade_begin(struct quad_stage *qs)
 {
-   struct quad_shade_stage *qss = quad_shade_stage(qs);
    struct softpipe_context *softpipe = qs->softpipe;
 
    softpipe->fs->prepare( softpipe->fs, 
-                         qss->machine,
+                         softpipe->fs_machine,
                          (struct tgsi_sampler **)
                              softpipe->tgsi.frag_samplers_list );
 
@@ -154,10 +151,6 @@ shade_begin(struct quad_stage *qs)
 static void
 shade_destroy(struct quad_stage *qs)
 {
-   struct quad_shade_stage *qss = (struct quad_shade_stage *) qs;
-
-   tgsi_exec_machine_destroy(qss->machine);
-
    FREE( qs );
 }
 
@@ -174,16 +167,9 @@ sp_quad_shade_stage( struct softpipe_context *softpipe )
    qss->stage.run = shade_quads;
    qss->stage.destroy = shade_destroy;
 
-   qss->machine = tgsi_exec_machine_create();
-   if (!qss->machine)
-      goto fail;
-
    return &qss->stage;
 
 fail:
-   if (qss && qss->machine)
-      tgsi_exec_machine_destroy(qss->machine);
-
    FREE(qss);
    return NULL;
 }
index 4ef5d9f7b1db3e3172bd272d72b5ce4e5647722d..b959af63aff59e6ebe8a24d4b18bb39a85664bd2 100644 (file)
@@ -30,6 +30,7 @@
  */
 
 #include "draw/draw_context.h"
+#include "os/os_time.h"
 #include "pipe/p_defines.h"
 #include "util/u_memory.h"
 #include "sp_context.h"
@@ -37,6 +38,7 @@
 #include "sp_state.h"
 
 struct softpipe_query {
+   unsigned type;
    uint64_t start;
    uint64_t end;
 };
@@ -51,8 +53,13 @@ static struct pipe_query *
 softpipe_create_query(struct pipe_context *pipe, 
                      unsigned type)
 {
-   assert(type == PIPE_QUERY_OCCLUSION_COUNTER);
-   return (struct pipe_query *)CALLOC_STRUCT( softpipe_query );
+   struct softpipe_query* sq;
+
+   assert(type == PIPE_QUERY_OCCLUSION_COUNTER || type == PIPE_QUERY_TIME_ELAPSED);
+   sq = CALLOC_STRUCT( softpipe_query );
+   sq->type = type;
+
+   return (struct pipe_query *)sq;
 }
 
 
@@ -69,7 +76,17 @@ softpipe_begin_query(struct pipe_context *pipe, struct pipe_query *q)
    struct softpipe_context *softpipe = softpipe_context( pipe );
    struct softpipe_query *sq = softpipe_query(q);
    
-   sq->start = softpipe->occlusion_count;
+   switch (sq->type) {
+   case PIPE_QUERY_OCCLUSION_COUNTER:
+      sq->start = softpipe->occlusion_count;
+      break;
+   case PIPE_QUERY_TIME_ELAPSED:
+      sq->start = 1000*os_time_get();
+      break;
+   default:
+      assert(0);
+      break;
+   }
    softpipe->active_query_count++;
    softpipe->dirty |= SP_NEW_QUERY;
 }
@@ -82,7 +99,17 @@ softpipe_end_query(struct pipe_context *pipe, struct pipe_query *q)
    struct softpipe_query *sq = softpipe_query(q);
 
    softpipe->active_query_count--;
-   sq->end = softpipe->occlusion_count;
+   switch (sq->type) {
+   case PIPE_QUERY_OCCLUSION_COUNTER:
+      sq->end = softpipe->occlusion_count;
+      break;
+   case PIPE_QUERY_TIME_ELAPSED:
+      sq->end = 1000*os_time_get();
+      break;
+   default:
+      assert(0);
+      break;
+   }
    softpipe->dirty |= SP_NEW_QUERY;
 }
 
index ad59ee909365b327afbee426549fc507f1fd1959..73987c913e5d4367a0170d8622afa694afce795b 100644 (file)
@@ -33,6 +33,7 @@
 #include "pipe/p_screen.h"
 
 #include "state_tracker/sw_winsys.h"
+#include "tgsi/tgsi_exec.h"
 
 #include "sp_texture.h"
 #include "sp_screen.h"
@@ -56,7 +57,7 @@ softpipe_get_name(struct pipe_screen *screen)
 
 
 static int
-softpipe_get_param(struct pipe_screen *screen, int param)
+softpipe_get_param(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS:
@@ -81,6 +82,8 @@ softpipe_get_param(struct pipe_screen *screen, int param)
       return PIPE_MAX_COLOR_BUFS;
    case PIPE_CAP_OCCLUSION_QUERY:
       return 1;
+   case PIPE_CAP_TIMER_QUERY:
+      return 1;
    case PIPE_CAP_TEXTURE_MIRROR_CLAMP:
       return 1;
    case PIPE_CAP_TEXTURE_MIRROR_REPEAT:
@@ -110,6 +113,36 @@ softpipe_get_param(struct pipe_screen *screen, int param)
    case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER:
    case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
       return 1;
+
+   case PIPE_CAP_MAX_VS_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_TEX_INDIRECTIONS:
+   case PIPE_CAP_MAX_FS_TEX_INDIRECTIONS:
+      /* There is no limit in number of instructions beyond available memory */
+      return 32768;
+   case PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH:
+   case PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH:
+      return TGSI_EXEC_MAX_NESTING;
+   case PIPE_CAP_MAX_VS_INPUTS:
+   case PIPE_CAP_MAX_FS_INPUTS:
+      return TGSI_EXEC_MAX_INPUT_ATTRIBS;
+   case PIPE_CAP_MAX_FS_CONSTS:
+   case PIPE_CAP_MAX_VS_CONSTS:
+      return TGSI_EXEC_MAX_CONST_BUFFER;
+   case PIPE_CAP_MAX_VS_TEMPS:
+   case PIPE_CAP_MAX_FS_TEMPS:
+      return TGSI_EXEC_NUM_TEMPS;
+   case PIPE_CAP_MAX_VS_ADDRS:
+   case PIPE_CAP_MAX_FS_ADDRS:
+      return TGSI_EXEC_NUM_ADDRS;
+   case PIPE_CAP_MAX_VS_PREDS:
+   case PIPE_CAP_MAX_FS_PREDS:
+      return TGSI_EXEC_NUM_PREDS;
+
    default:
       return 0;
    }
@@ -117,7 +150,7 @@ softpipe_get_param(struct pipe_screen *screen, int param)
 
 
 static float
-softpipe_get_paramf(struct pipe_screen *screen, int param)
+softpipe_get_paramf(struct pipe_screen *screen, enum pipe_cap param)
 {
    switch (param) {
    case PIPE_CAP_MAX_LINE_WIDTH:
index 86354664e4bf9317d0a2c27ae82f834d94f16cd0..5d727dc00df0952ebdfe7ca1676aa28da45ff60b 100644 (file)
@@ -111,34 +111,13 @@ struct setup_context {
    uint numFragsWritten;  /**< per primitive */
 #endif
 
-   unsigned winding;           /* which winding to cull */
+   unsigned cull_face;         /* which faces cull */
    unsigned nr_vertex_attrs;
 };
 
 
 
 
-/**
- * Do triangle cull test using tri determinant (sign indicates orientation)
- * \return true if triangle is to be culled.
- */
-static INLINE boolean
-cull_tri(const struct setup_context *setup, float det)
-{
-   if (det != 0) {   
-      /* if (det < 0 then Z points toward camera and triangle is 
-       * counter-clockwise winding.
-       */
-      unsigned winding = (det < 0) ? PIPE_WINDING_CCW : PIPE_WINDING_CW;
-
-      if ((winding & setup->winding) == 0)
-        return FALSE;
-   }
-
-   /* Culled:
-    */
-   return TRUE;
-}
 
 
 
@@ -304,7 +283,10 @@ setup_sort_vertices(struct setup_context *setup,
                     const float (*v1)[4],
                     const float (*v2)[4])
 {
-   setup->vprovoke = v2;
+   if (setup->softpipe->rasterizer->flatshade_first)
+      setup->vprovoke = v0;
+   else
+      setup->vprovoke = v2;
 
    /* determine bottom to top order of vertices */
    {
@@ -390,8 +372,16 @@ setup_sort_vertices(struct setup_context *setup,
     * 0 = front-facing, 1 = back-facing
     */
    setup->facing = 
-      ((det > 0.0) ^ 
-       (setup->softpipe->rasterizer->front_winding == PIPE_WINDING_CW));
+      ((det < 0.0) ^ 
+       (setup->softpipe->rasterizer->front_ccw));
+
+   {
+      unsigned face = setup->facing == 0 ? PIPE_FACE_FRONT : PIPE_FACE_BACK;
+
+      if (face & setup->cull_face)
+        return FALSE;
+   }
+
 
    /* Prepare pixel offset for rasterisation:
     *  - pixel center (0.5, 0.5) for GL, or
@@ -829,11 +819,9 @@ sp_setup_tri(struct setup_context *setup,
    setup->numFragsWritten = 0;
 #endif
 
-   if (cull_tri( setup, det ))
-      return;
-
    if (!setup_sort_vertices( setup, det, v0, v1, v2 ))
       return;
+
    setup_tri_coefficients( setup );
    setup_tri_edges( setup );
 
@@ -1417,14 +1405,14 @@ sp_setup_prepare(struct setup_context *setup)
    sp->quad.first->begin( sp->quad.first );
 
    if (sp->reduced_api_prim == PIPE_PRIM_TRIANGLES &&
-       sp->rasterizer->fill_cw == PIPE_POLYGON_MODE_FILL &&
-       sp->rasterizer->fill_ccw == PIPE_POLYGON_MODE_FILL) {
+       sp->rasterizer->fill_front == PIPE_POLYGON_MODE_FILL &&
+       sp->rasterizer->fill_back == PIPE_POLYGON_MODE_FILL) {
       /* we'll do culling */
-      setup->winding = sp->rasterizer->cull_mode;
+      setup->cull_face = sp->rasterizer->cull_face;
    }
    else {
       /* 'draw' will do culling */
-      setup->winding = PIPE_WINDING_NONE;
+      setup->cull_face = PIPE_FACE_NONE;
    }
 }
 
index 7f072f5a2698eeeb8982600e5a731b449f2d3d3d..816e0c18bd2b898ca714dc086436f53c164ef5f3 100644 (file)
@@ -36,6 +36,7 @@
 #include "draw/draw_context.h"
 #include "draw/draw_vs.h"
 #include "tgsi/tgsi_dump.h"
+#include "tgsi/tgsi_exec.h"
 #include "tgsi/tgsi_scan.h"
 #include "tgsi/tgsi_parse.h"
 
@@ -95,10 +96,18 @@ softpipe_bind_fs_state(struct pipe_context *pipe, void *fs)
 void
 softpipe_delete_fs_state(struct pipe_context *pipe, void *fs)
 {
+   struct softpipe_context *softpipe = softpipe_context(pipe);
    struct sp_fragment_shader *state = fs;
 
    assert(fs != softpipe_context(pipe)->fs);
-   
+
+   if (softpipe->fs_machine->Tokens == state->shader.tokens) {
+      /* unbind the shader from the tgsi executor if we're
+       * deleting it.
+       */
+      tgsi_exec_machine_bind_shader(softpipe->fs_machine, NULL, 0, NULL);
+   }
+
    state->delete( state );
 }
 
index 7aa85559b236d0d3a8dfa6f79782b8e0a5752c53..4e6123fbd07834303e2cc9ed07265f0c45c2b37f 100644 (file)
@@ -343,11 +343,15 @@ softpipe_get_transfer(struct pipe_context *pipe,
    if (spt) {
       struct pipe_transfer *pt = &spt->base;
       enum pipe_format format = resource->format;
+      const unsigned hgt = u_minify(spr->base.height0, sr.level);
+      const unsigned nblocksy = util_format_get_nblocksy(format, hgt);
+
       pipe_resource_reference(&pt->resource, resource);
       pt->sr = sr;
       pt->usage = usage;
       pt->box = *box;
       pt->stride = spr->stride[sr.level];
+      pt->slice_stride = pt->stride * nblocksy;
 
       spt->offset = sp_get_tex_image_offset(spr, sr.level, sr.face, box->z);
  
index 5253c45cb202180c083dd3d56e73cfc40c0981f6..660eb0757a6778bfc0c2fdf434a30d20da2039ab 100644 (file)
 /* Hardware frontwinding is always set up as SVGA3D_FRONTWINDING_CW.
  */
 static SVGA3dFace svga_translate_cullmode( unsigned mode,
-                                           unsigned front_winding )
+                                           unsigned front_ccw )
 {
+   const int hw_front_ccw = 0;  /* hardware is always CW */
    switch (mode) {
-   case PIPE_WINDING_NONE:
+   case PIPE_FACE_NONE:
       return SVGA3D_FACE_NONE;
-   case PIPE_WINDING_CCW:
-      return SVGA3D_FACE_BACK;
-   case PIPE_WINDING_CW:
-      return SVGA3D_FACE_FRONT;
-   case PIPE_WINDING_BOTH:
+   case PIPE_FACE_FRONT:
+      return front_ccw == hw_front_ccw ? SVGA3D_FACE_FRONT : SVGA3D_FACE_BACK;
+   case PIPE_FACE_BACK:
+      return front_ccw == hw_front_ccw ? SVGA3D_FACE_BACK : SVGA3D_FACE_FRONT;
+   case PIPE_FACE_FRONT_AND_BACK:
       return SVGA3D_FACE_FRONT_BACK;
    default:
       assert(0);
@@ -81,8 +82,8 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
    /* fill_cw, fill_ccw      - draw module or index translation */
 
    rast->shademode = svga_translate_flatshade( templ->flatshade );
-   rast->cullmode = svga_translate_cullmode( templ->cull_mode, 
-                                             templ->front_winding );
+   rast->cullmode = svga_translate_cullmode( templ->cull_face, 
+                                             templ->front_ccw );
    rast->scissortestenable = templ->scissor;
    rast->multisampleantialias = templ->multisample;
    rast->antialiasedlineenable = templ->line_smooth;
@@ -117,31 +118,31 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
       rast->need_pipeline |= SVGA_PIPELINE_FLAG_POINTS;
 
    {
-      boolean offset_cw = templ->offset_cw;
-      boolean offset_ccw = templ->offset_ccw;
-      boolean offset  = 0;
-      int fill_cw = templ->fill_cw;
-      int fill_ccw = templ->fill_ccw;
+      int fill_front = templ->fill_front;
+      int fill_back = templ->fill_back;
       int fill = PIPE_POLYGON_MODE_FILL;
+      boolean offset_front = util_get_offset(templ, fill_front);
+      boolean offset_back = util_get_offset(templ, fill_back);
+      boolean offset  = 0;
 
-      switch (templ->cull_mode) {
-      case PIPE_WINDING_BOTH:
+      switch (templ->cull_face) {
+      case PIPE_FACE_FRONT_AND_BACK:
          offset = 0;
          fill = PIPE_POLYGON_MODE_FILL;
          break;
 
-      case PIPE_WINDING_CW:
-         offset = offset_ccw;
-         fill = fill_ccw;
+      case PIPE_FACE_FRONT:
+         offset = offset_front;
+         fill = fill_front;
          break;
 
-      case PIPE_WINDING_CCW:
-         offset = offset_cw;
-         fill = fill_cw;
+      case PIPE_FACE_BACK:
+         offset = offset_back;
+         fill = fill_back;
          break;
 
-      case PIPE_WINDING_NONE:
-         if (fill_cw != fill_ccw || offset_cw != offset_ccw
+      case PIPE_FACE_NONE:
+         if (fill_front != fill_back || offset_front != offset_back
          {
             /* Always need the draw module to work out different
              * front/back fill modes:
@@ -149,8 +150,8 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
             rast->need_pipeline |= SVGA_PIPELINE_FLAG_TRIS;
          }
          else {
-            offset = offset_ccw;
-            fill = fill_ccw;
+            offset = offset_front;
+            fill = fill_front;
          }
          break;
 
@@ -167,7 +168,7 @@ svga_create_rasterizer_state(struct pipe_context *pipe,
           (templ->flatshade ||
            templ->light_twoside ||
            offset ||
-           templ->cull_mode != PIPE_WINDING_NONE)) 
+           templ->cull_face != PIPE_FACE_NONE)) 
       {
          fill = PIPE_POLYGON_MODE_FILL;
          rast->need_pipeline |= SVGA_PIPELINE_FLAG_TRIS;
index ba630582e594beda8e7b43689bffbab8e8ef5c44..ef2a0c40f03026eb2377377da7c5860dd41c9f0a 100644 (file)
@@ -33,6 +33,7 @@ svga_resource_from_handle(struct pipe_screen * screen,
 void
 svga_init_resource_functions(struct svga_context *svga)
 {
+   svga->pipe.is_resource_referenced = u_is_resource_referenced_vtbl;
    svga->pipe.get_transfer = u_get_transfer_vtbl;
    svga->pipe.transfer_map = u_transfer_map_vtbl;
    svga->pipe.transfer_flush_region = u_transfer_flush_region_vtbl;
index b24af3292184d0a8b73482c05d605c0ac59c99ac..99b419178b0b3db2fc6631ca2fd5bb9ad5851b69 100644 (file)
@@ -84,7 +84,7 @@ svga_get_name( struct pipe_screen *pscreen )
 
 
 static float
-svga_get_paramf(struct pipe_screen *screen, int param)
+svga_get_paramf(struct pipe_screen *screen, enum pipe_cap param)
 {
    struct svga_screen *svgascreen = svga_screen(screen);
    struct svga_winsys_screen *sws = svgascreen->sws;
@@ -134,6 +134,8 @@ svga_get_paramf(struct pipe_screen *screen, int param)
       return MIN2(result.u, PIPE_MAX_COLOR_BUFS);
    case PIPE_CAP_OCCLUSION_QUERY:
       return 1;
+   case PIPE_CAP_TIMER_QUERY:
+      return 0;
    case PIPE_CAP_TEXTURE_SHADOW_MAP:
       return 1;
 
@@ -177,6 +179,57 @@ svga_get_paramf(struct pipe_screen *screen, int param)
    case PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER:
       return 0;
 
+   /*
+    * Fragment shader limits
+    */
+
+   case PIPE_CAP_MAX_FS_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS:
+   case PIPE_CAP_MAX_FS_TEX_INDIRECTIONS:
+      return svgascreen->use_ps30 ? 512 : 96;
+   case PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH:
+      return SVGA3D_MAX_NESTING_LEVEL;
+   case PIPE_CAP_MAX_FS_INPUTS:
+      return 10;
+   case PIPE_CAP_MAX_FS_CONSTS:
+      return svgascreen->use_vs30 ? 224 : 16;
+   case PIPE_CAP_MAX_FS_TEMPS:
+      if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_FRAGMENT_SHADER_TEMPS, &result))
+         return svgascreen->use_ps30 ? 32 : 12;
+      return result.u;
+   case PIPE_CAP_MAX_FS_ADDRS:
+      return svgascreen->use_ps30 ? 1 : 0;
+   case PIPE_CAP_MAX_FS_PREDS:
+      return svgascreen->use_ps30 ? 1 : 0;
+
+   /*
+    * Vertex shader limits
+    */
+   case PIPE_CAP_MAX_VS_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS:
+      if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_VERTEX_SHADER_INSTRUCTIONS, &result))
+         return svgascreen->use_vs30 ? 512 : 256;
+      return result.u;
+   case PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS:
+   case PIPE_CAP_MAX_VS_TEX_INDIRECTIONS:
+      /* XXX: until we have vertex texture support */
+      return 0;
+   case PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH:
+      return SVGA3D_MAX_NESTING_LEVEL;
+   case PIPE_CAP_MAX_VS_INPUTS:
+      return 16;
+   case PIPE_CAP_MAX_VS_CONSTS:
+      return 256;
+   case PIPE_CAP_MAX_VS_TEMPS:
+      if (!sws->get_cap(sws, SVGA3D_DEVCAP_MAX_VERTEX_SHADER_TEMPS, &result))
+         return svgascreen->use_vs30 ? 32 : 12;
+      return result.u;
+   case PIPE_CAP_MAX_VS_ADDRS:
+      return svgascreen->use_vs30 ? 1 : 0;
+   case PIPE_CAP_MAX_VS_PREDS:
+      return svgascreen->use_vs30 ? 1 : 0;
+
    default:
       return 0;
    }
@@ -186,7 +239,7 @@ svga_get_paramf(struct pipe_screen *screen, int param)
 /* This is a fairly pointless interface
  */
 static int
-svga_get_param(struct pipe_screen *screen, int param)
+svga_get_param(struct pipe_screen *screen, enum pipe_cap param)
 {
    return (int) svga_get_paramf( screen, param );
 }
index 1310fd9825fa8a71d7f686cf0107fce422b331c7..ad6f2947137633bb21672c130ffe1addfcda6db2 100644 (file)
@@ -131,8 +131,7 @@ static int make_fs_key( const struct svga_context *svga,
       /* SVGA_NEW_RAST
        */
       key->light_twoside = svga->curr.rast->templ.light_twoside;
-      key->front_cw = (svga->curr.rast->templ.front_winding == 
-                       PIPE_WINDING_CW);
+      key->front_ccw = svga->curr.rast->templ.front_ccw;
    }
 
    /* The blend workaround for simulating logicop xor behaviour
index b7195d246bc87c0b41b27aeb73b6948f964d69de..ab13f3fdf19eaaf4207f6af3d8b24950691d48bd 100644 (file)
@@ -146,13 +146,13 @@ static int emit_rss( struct svga_context *svga,
           * then our definition of front face agrees with hardware.
           * Otherwise need to flip.
           */
-         if (rast->templ.front_winding == PIPE_WINDING_CW) {
-            cw = 0;
-            ccw = 1;
+         if (rast->templ.front_ccw) {
+            ccw = 0;
+            cw = 1;
          }
          else {
-            cw = 1;
-            ccw = 0;
+            ccw = 1;
+            cw = 0;
          }
 
          /* Twoside stencil
index bd2cc380048a2feb45b9e47260d513aa85f75b22..b21dc5fd9afcaf64338aacd9f7a3df009a4af1ec 100644 (file)
@@ -37,7 +37,6 @@
 #include "svga_context.h"
 #include "svga_resource_texture.h"
 #include "svga_surface.h"
-#include "svga_winsys.h"
 #include "svga_debug.h"
 
 
index 8724690f7e1da2489255801024d8da624e46db27..65c675f99c94cd6269d86d1a39a49dea2375184c 100644 (file)
@@ -30,7 +30,6 @@
 
 struct svga_context;
 struct pipe_context;
-struct pipe_buffer;
 struct vbuf_render;
 
 
index b0cbead8a5cb2d6362cb6fa9b48470bff449201a..ff3da842729e183e6cd072b7bfd933a8f29f8834 100644 (file)
@@ -240,9 +240,9 @@ svga_vbuf_render_draw_arrays( struct vbuf_render *render,
 
 
 static void
-svga_vbuf_render_draw( struct vbuf_render *render,
-                       const ushort *indices,
-                       uint nr_indices)
+svga_vbuf_render_draw_elements( struct vbuf_render *render,
+                                const ushort *indices,
+                                uint nr_indices)
 {
    struct svga_vbuf_render *svga_render = svga_vbuf_render(render);
    struct svga_context *svga = svga_render->svga;
@@ -341,7 +341,7 @@ svga_vbuf_render_create( struct svga_context *svga )
    svga_render->base.map_vertices = svga_vbuf_render_map_vertices;
    svga_render->base.unmap_vertices = svga_vbuf_render_unmap_vertices;
    svga_render->base.set_primitive = svga_vbuf_render_set_primitive;
-   svga_render->base.draw = svga_vbuf_render_draw;
+   svga_render->base.draw_elements = svga_vbuf_render_draw_elements;
    svga_render->base.draw_arrays = svga_vbuf_render_draw_arrays;
    svga_render->base.release_vertices = svga_vbuf_render_release_vertices;
    svga_render->base.destroy = svga_vbuf_render_destroy;
index 063c9cf4221574cf06e8aeca54cd646c40a81d7c..7ea909c37bfe889961df19d0571de0b1d8da11e2 100644 (file)
@@ -48,7 +48,7 @@ struct svga_vs_compile_key
 struct svga_fs_compile_key
 {
    unsigned light_twoside:1;
-   unsigned front_cw:1;
+   unsigned front_ccw:1;
    unsigned white_fragments:1;
    unsigned num_textures:8;
    unsigned num_unnormalized_coords:8;
index 7d7024c4a7d721bc840c94565a07cd2032d4a428..67e1f22a70138c618ef3b751ac88c5634fe0c4de 100644 (file)
@@ -2588,10 +2588,10 @@ static boolean emit_light_twoside( struct svga_shader_emitter *emit )
    
    if_token = inst_token( SVGA3DOP_IFC );
 
-   if (emit->key.fkey.front_cw)
-      if_token.control = SVGA3DOPCOMP_GT;
-   else
+   if (emit->key.fkey.front_ccw)
       if_token.control = SVGA3DOPCOMP_LT;
+   else
+      if_token.control = SVGA3DOPCOMP_GT;
 
    zero = scalar(zero, TGSI_SWIZZLE_X);
 
@@ -2639,12 +2639,12 @@ static boolean emit_frontface( struct svga_shader_emitter *emit )
    temp = dst_register( SVGA3DREG_TEMP,
                         emit->nr_hw_temp++ );
 
-   if (emit->key.fkey.front_cw) {
-      pass = scalar( zero, TGSI_SWIZZLE_W );
-      fail = scalar( zero, TGSI_SWIZZLE_X );
-   } else {
+   if (emit->key.fkey.front_ccw) {
       pass = scalar( zero, TGSI_SWIZZLE_X );
       fail = scalar( zero, TGSI_SWIZZLE_W );
+   } else {
+      pass = scalar( zero, TGSI_SWIZZLE_W );
+      fail = scalar( zero, TGSI_SWIZZLE_X );
    }
 
    if (!emit_conditional(emit, PIPE_FUNC_GREATER,
index 78f6347dc725773ac3e5c8d3c801252fed87e470..1b0c087a2a4193039cbe075e5a41980ee1333043 100644 (file)
@@ -8,8 +8,6 @@ C_SOURCES = \
        tr_dump.c \
        tr_dump_state.c \
        tr_screen.c \
-       tr_state.c \
-       tr_rbug.c \
        tr_drm.c \
        tr_texture.c
 
index 203c3851bc3ccf779ab2ccb25be6238a216e4bbc..cdcd8d2b4be9b8ee5eb6508433ee74e34aa75de0 100644 (file)
@@ -3,15 +3,15 @@
 
 = About =
 
-This directory contains a Gallium3D debugger pipe driver.
-It can traces all incoming calls and/or provide remote debugging functionality.
+This directory contains a Gallium3D trace debugger pipe driver.
+It can traces all incoming calls.
 
 
 = Build Instructions =
 
 To build, invoke scons on the top dir as
  
- scons dri=no statetrackers=mesa drivers=softpipe,i965simple,trace winsys=xlib
+ scons dri=no statetrackers=mesa winsys=xlib
 
 
 = Usage =
@@ -36,40 +36,27 @@ Firefox or Internet Explorer.
 
 == Remote debugging ==
 
-For remote debugging
+For remote debugging see:
 
- export XMESA_TRACE=y
- GALLIUM_RBUG=true progs/trivial/tri
-
-which should open gallium remote debugging session. While the program is running
-you can launch the small remote debugging application from progs/rbug. More
-information is in that directory.
+  src/gallium/drivers/rbug/README
 
 = Integrating =
 
 You can integrate the trace pipe driver either inside the state tracker or the 
-winsys. The procedure on both cases is the same. Let's assume you have a 
-pipe_screen and a pipe_context pair obtained by the usual means (variable and 
-function names are just for illustration purposes):
+target. The procedure on both cases is the same. Let's assume you have a 
+pipe_screen obtained by the usual means (variable and function names are just
+for illustration purposes):
 
   real_screen = real_screen_create(...);
   
-  real_context = real_context_create(...);
-  
-The trace screen and pipe_context is then created by doing
+The trace screen is then created by doing
 
   trace_screen = trace_screen_create(real_screen);
-  
-  trace_context = trace_context_create(trace_screen, real_context);
-  
-You can then simply use trace_screen and trace_context instead of real_screen
-and real_context.
 
-Do not call trace_winsys_create. Simply pass trace_screen->winsys or 
-trace_context->winsys in places you would pass winsys.
+You can then simply use trace_screen instead of real_screen.
 
-You can create as many contexts you wish. Just ensure that you don't mistake 
-trace_screen with real_screen when creating them.
+You can create as many contexts you wish from trace_screen::context_create they
+are automatically wrapped by trace_screen.
 
 
 --
index 5f1fb17966a4828878deea1f89c671ae8ba3ebee..0dc43a9ec415e295488288ddf39be79837c89c61 100644 (file)
@@ -10,8 +10,6 @@ trace = env.ConvenienceLibrary(
         'tr_dump.c',
         'tr_dump_state.c',
         'tr_screen.c',
-        'tr_state.c',
-        'tr_rbug.c',
         'tr_texture.c',
     ])
 
index 64a4316984b3a7e1d919ce1b2684582a50ce926c..5cc244d4b779ea0bd73cad4b40660b567cbe4767 100644 (file)
 #include "util/u_inlines.h"
 #include "util/u_memory.h"
 #include "util/u_simple_list.h"
-#include "util/u_format.h"
 
 #include "pipe/p_format.h"
 #include "pipe/p_screen.h"
 
 #include "tr_dump.h"
 #include "tr_dump_state.h"
-#include "tr_state.h"
+#include "tr_public.h"
 #include "tr_screen.h"
 #include "tr_texture.h"
+#include "tr_context.h"
 
 
 
@@ -82,71 +82,6 @@ trace_surface_unwrap(struct trace_context *tr_ctx,
 }
 
 
-static INLINE void
-trace_context_draw_block(struct trace_context *tr_ctx, int flag)
-{
-   int k;
-
-   pipe_mutex_lock(tr_ctx->draw_mutex);
-
-   if (tr_ctx->draw_blocker & flag) {
-      tr_ctx->draw_blocked |= flag;
-   } else if ((tr_ctx->draw_rule.blocker & flag) &&
-              (tr_ctx->draw_blocker & 4)) {
-      boolean block = FALSE;
-      debug_printf("%s (%p %p) (%p %p) (%p %u) (%p %u)\n", __FUNCTION__,
-                   (void *) tr_ctx->draw_rule.fs, (void *) tr_ctx->curr.fs,
-                   (void *) tr_ctx->draw_rule.vs, (void *) tr_ctx->curr.vs,
-                   (void *) tr_ctx->draw_rule.surf, 0,
-                   (void *) tr_ctx->draw_rule.sampler_view, 0);
-      if (tr_ctx->draw_rule.fs &&
-          tr_ctx->draw_rule.fs == tr_ctx->curr.fs)
-         block = TRUE;
-      if (tr_ctx->draw_rule.vs &&
-          tr_ctx->draw_rule.vs == tr_ctx->curr.vs)
-         block = TRUE;
-      if (tr_ctx->draw_rule.surf &&
-          tr_ctx->draw_rule.surf == tr_ctx->curr.zsbuf)
-            block = TRUE;
-      if (tr_ctx->draw_rule.surf)
-         for (k = 0; k < tr_ctx->curr.nr_cbufs; k++)
-            if (tr_ctx->draw_rule.surf == tr_ctx->curr.cbufs[k])
-               block = TRUE;
-      if (tr_ctx->draw_rule.sampler_view) {
-         for (k = 0; k < tr_ctx->curr.num_sampler_views; k++)
-            if (tr_ctx->draw_rule.sampler_view == tr_ctx->curr.sampler_views[k])
-               block = TRUE;
-         for (k = 0; k < tr_ctx->curr.num_vert_sampler_views; k++) {
-            if (tr_ctx->draw_rule.sampler_view == tr_ctx->curr.vert_sampler_views[k]) {
-               block = TRUE;
-            }
-         }
-      }
-
-      if (block)
-         tr_ctx->draw_blocked |= (flag | 4);
-   }
-
-   if (tr_ctx->draw_blocked)
-      trace_rbug_notify_draw_blocked(tr_ctx);
-
-   /* wait for rbug to clear the blocked flag */
-   while (tr_ctx->draw_blocked & flag) {
-      tr_ctx->draw_blocked |= flag;
-#ifdef PIPE_THREAD_HAVE_CONDVAR
-      pipe_condvar_wait(tr_ctx->draw_cond, tr_ctx->draw_mutex);
-#else
-      pipe_mutex_unlock(tr_ctx->draw_mutex);
-#ifdef PIPE_SUBSYSTEM_WINDOWS_USER
-      Sleep(1);
-#endif
-      pipe_mutex_lock(tr_ctx->draw_mutex);
-#endif
-   }
-
-   pipe_mutex_unlock(tr_ctx->draw_mutex);
-}
-
 static INLINE void
 trace_context_draw_arrays(struct pipe_context *_pipe,
                           unsigned mode, unsigned start, unsigned count)
@@ -154,11 +89,6 @@ trace_context_draw_arrays(struct pipe_context *_pipe,
    struct trace_context *tr_ctx = trace_context(_pipe);
    struct pipe_context *pipe = tr_ctx->pipe;
 
-   if (tr_ctx->curr.fs->disabled || tr_ctx->curr.vs->disabled)
-      return;
-
-   trace_context_draw_block(tr_ctx, 1);
-
    trace_dump_call_begin("pipe_context", "draw_arrays");
 
    trace_dump_arg(ptr, pipe);
@@ -169,8 +99,6 @@ trace_context_draw_arrays(struct pipe_context *_pipe,
    pipe->draw_arrays(pipe, mode, start, count);
 
    trace_dump_call_end();
-
-   trace_context_draw_block(tr_ctx, 2);
 }
 
 
@@ -185,11 +113,6 @@ trace_context_draw_elements(struct pipe_context *_pipe,
    struct pipe_context *pipe = tr_ctx->pipe;
    struct pipe_resource *indexBuffer = tr_buf->resource;
 
-   if (tr_ctx->curr.fs->disabled || tr_ctx->curr.vs->disabled)
-      return;
-
-   trace_context_draw_block(tr_ctx, 1);
-
    trace_dump_call_begin("pipe_context", "draw_elements");
 
    trace_dump_arg(ptr, pipe);
@@ -204,8 +127,6 @@ trace_context_draw_elements(struct pipe_context *_pipe,
                        mode, start, count);
 
    trace_dump_call_end();
-
-   trace_context_draw_block(tr_ctx, 2);
 }
 
 
@@ -225,11 +146,6 @@ trace_context_draw_range_elements(struct pipe_context *_pipe,
    struct pipe_context *pipe = tr_ctx->pipe;
    struct pipe_resource *indexBuffer = tr_buf->resource;
 
-   if (tr_ctx->curr.fs->disabled || tr_ctx->curr.vs->disabled)
-      return;
-
-   trace_context_draw_block(tr_ctx, 1);
-
    trace_dump_call_begin("pipe_context", "draw_range_elements");
 
    trace_dump_arg(ptr, pipe);
@@ -248,8 +164,6 @@ trace_context_draw_range_elements(struct pipe_context *_pipe,
                              mode, start, count);
 
    trace_dump_call_end();
-
-   trace_context_draw_block(tr_ctx, 2);
 }
 
 
@@ -634,31 +548,22 @@ trace_context_create_fs_state(struct pipe_context *_pipe,
 
    trace_dump_call_end();
 
-   result = trace_shader_create(tr_ctx, state, result, TRACE_SHADER_FRAGMENT);
-
    return result;
 }
 
 
 static INLINE void
 trace_context_bind_fs_state(struct pipe_context *_pipe,
-                            void *_state)
+                            void *state)
 {
    struct trace_context *tr_ctx = trace_context(_pipe);
-   struct trace_shader *tr_shdr = trace_shader(_state);
    struct pipe_context *pipe = tr_ctx->pipe;
-   void *state = tr_shdr ? tr_shdr->state : NULL;
 
    trace_dump_call_begin("pipe_context", "bind_fs_state");
 
    trace_dump_arg(ptr, pipe);
    trace_dump_arg(ptr, state);
 
-   tr_ctx->curr.fs = tr_shdr;
-
-   if (tr_shdr && tr_shdr->replaced)
-      state = tr_shdr->replaced;
-
    pipe->bind_fs_state(pipe, state);
 
    trace_dump_call_end();
@@ -667,12 +572,10 @@ trace_context_bind_fs_state(struct pipe_context *_pipe,
 
 static INLINE void
 trace_context_delete_fs_state(struct pipe_context *_pipe,
-                              void *_state)
+                              void *state)
 {
    struct trace_context *tr_ctx = trace_context(_pipe);
-   struct trace_shader *tr_shdr = trace_shader(_state);
    struct pipe_context *pipe = tr_ctx->pipe;
-   void *state = tr_shdr->state;
 
    trace_dump_call_begin("pipe_context", "delete_fs_state");
 
@@ -682,8 +585,6 @@ trace_context_delete_fs_state(struct pipe_context *_pipe,
    pipe->delete_fs_state(pipe, state);
 
    trace_dump_call_end();
-
-   trace_shader_destroy(tr_ctx, tr_shdr);
 }
 
 
@@ -706,31 +607,22 @@ trace_context_create_vs_state(struct pipe_context *_pipe,
 
    trace_dump_call_end();
 
-   result = trace_shader_create(tr_ctx, state, result, TRACE_SHADER_VERTEX);
-
    return result;
 }
 
 
 static INLINE void
 trace_context_bind_vs_state(struct pipe_context *_pipe,
-                            void *_state)
+                            void *state)
 {
    struct trace_context *tr_ctx = trace_context(_pipe);
-   struct trace_shader *tr_shdr = trace_shader(_state);
    struct pipe_context *pipe = tr_ctx->pipe;
-   void *state = tr_shdr ? tr_shdr->state : NULL;
 
    trace_dump_call_begin("pipe_context", "bind_vs_state");
 
    trace_dump_arg(ptr, pipe);
    trace_dump_arg(ptr, state);
 
-   tr_ctx->curr.vs = tr_shdr;
-
-   if (tr_shdr && tr_shdr->replaced)
-      state = tr_shdr->replaced;
-
    pipe->bind_vs_state(pipe, state);
 
    trace_dump_call_end();
@@ -739,12 +631,10 @@ trace_context_bind_vs_state(struct pipe_context *_pipe,
 
 static INLINE void
 trace_context_delete_vs_state(struct pipe_context *_pipe,
-                              void *_state)
+                              void *state)
 {
    struct trace_context *tr_ctx = trace_context(_pipe);
-   struct trace_shader *tr_shdr = trace_shader(_state);
    struct pipe_context *pipe = tr_ctx->pipe;
-   void *state = tr_shdr->state;
 
    trace_dump_call_begin("pipe_context", "delete_vs_state");
 
@@ -754,8 +644,6 @@ trace_context_delete_vs_state(struct pipe_context *_pipe,
    pipe->delete_vs_state(pipe, state);
 
    trace_dump_call_end();
-
-   trace_shader_destroy(tr_ctx, tr_shdr);
 }
 
 
@@ -927,18 +815,6 @@ trace_context_set_framebuffer_state(struct pipe_context *_pipe,
    struct pipe_framebuffer_state unwrapped_state;
    unsigned i;
 
-   {
-      tr_ctx->curr.nr_cbufs = state->nr_cbufs;
-      for (i = 0; i < state->nr_cbufs; i++)
-         if (state->cbufs[i])
-            tr_ctx->curr.cbufs[i] = trace_resource(state->cbufs[i]->texture);
-         else
-            tr_ctx->curr.cbufs[i] = NULL;
-      if (state->zsbuf)
-         tr_ctx->curr.zsbuf = trace_resource(state->zsbuf->texture);
-      else
-         tr_ctx->curr.zsbuf = NULL;
-   }
 
    /* Unwrap the input state */
    memcpy(&unwrapped_state, state, sizeof(unwrapped_state));
@@ -1088,10 +964,8 @@ trace_context_set_fragment_sampler_views(struct pipe_context *_pipe,
    struct pipe_sampler_view *unwrapped_views[PIPE_MAX_SAMPLERS];
    unsigned i;
 
-   tr_ctx->curr.num_sampler_views = num;
    for(i = 0; i < num; ++i) {
       tr_view = trace_sampler_view(views[i]);
-      tr_ctx->curr.sampler_views[i] = tr_view;
       unwrapped_views[i] = tr_view ? tr_view->sampler_view : NULL;
    }
    views = unwrapped_views;
@@ -1119,10 +993,8 @@ trace_context_set_vertex_sampler_views(struct pipe_context *_pipe,
    struct pipe_sampler_view *unwrapped_views[PIPE_MAX_VERTEX_SAMPLERS];
    unsigned i;
 
-   tr_ctx->curr.num_vert_sampler_views = num;
    for(i = 0; i < num; ++i) {
       tr_view = trace_sampler_view(views[i]);
-      tr_ctx->curr.vert_sampler_views[i] = tr_view;
       unwrapped_views[i] = tr_view ? tr_view->sampler_view : NULL;
    }
    views = unwrapped_views;
@@ -1293,7 +1165,6 @@ trace_context_flush(struct pipe_context *_pipe,
 static INLINE void
 trace_context_destroy(struct pipe_context *_pipe)
 {
-   struct trace_screen *tr_scr = trace_screen(_pipe->screen);
    struct trace_context *tr_ctx = trace_context(_pipe);
    struct pipe_context *pipe = tr_ctx->pipe;
 
@@ -1301,8 +1172,6 @@ trace_context_destroy(struct pipe_context *_pipe)
    trace_dump_arg(ptr, pipe);
    trace_dump_call_end();
 
-   trace_screen_remove_from_list(tr_scr, contexts, tr_ctx);
-
    pipe->destroy(pipe);
 
    FREE(tr_ctx);
@@ -1535,13 +1404,6 @@ trace_context_create(struct trace_screen *tr_scr,
    tr_ctx->base.winsys = NULL;
    tr_ctx->base.priv = pipe->priv; /* expose wrapped priv data */
    tr_ctx->base.screen = &tr_scr->base;
-   tr_ctx->draw_blocker = debug_get_flags_option("RBUG_BLOCK",
-                                                 rbug_blocker_flags,
-                                                 0);
-   pipe_mutex_init(tr_ctx->draw_mutex);
-   pipe_condvar_init(tr_ctx->draw_cond);
-   pipe_mutex_init(tr_ctx->list_mutex);
-   make_empty_list(&tr_ctx->shaders);
 
    tr_ctx->base.destroy = trace_context_destroy;
    tr_ctx->base.draw_arrays = trace_context_draw_arrays;
@@ -1603,8 +1465,6 @@ trace_context_create(struct trace_screen *tr_scr,
 
    tr_ctx->pipe = pipe;
 
-   trace_screen_add_to_list(tr_scr, contexts, tr_ctx);
-
    return &tr_ctx->base;
 
 error1:
index 1b4121d80a917013afc0802b1a7c419a606f89af..dadbe5611808734d2e3290c4e481badc352aa0d4 100644 (file)
@@ -47,45 +47,6 @@ struct trace_context
    struct pipe_context base;
 
    struct pipe_context *pipe;
-
-   /* current state */
-   struct {
-      struct trace_shader *fs;
-      struct trace_shader *vs;
-
-      struct trace_sampler_view *sampler_views[PIPE_MAX_SAMPLERS];
-      unsigned num_sampler_views;
-
-      struct trace_sampler_view *vert_sampler_views[PIPE_MAX_VERTEX_SAMPLERS];
-      unsigned num_vert_sampler_views;
-
-      unsigned nr_cbufs;
-      struct trace_resource *cbufs[PIPE_MAX_COLOR_BUFS];
-      struct trace_resource *zsbuf;
-   } curr;
-
-   struct {
-      struct trace_shader *fs;
-      struct trace_shader *vs;
-
-      struct trace_sampler_view *sampler_view;
-      struct trace_resource *surf;
-
-      int blocker;
-   } draw_rule;
-   unsigned draw_num_rules;
-   pipe_condvar draw_cond;
-   pipe_mutex draw_mutex;
-   int draw_blocker;
-   int draw_blocked;
-
-   /* for list on screen */
-   struct tr_list list;
-
-   /* list of state objects */
-   pipe_mutex list_mutex;
-   unsigned num_shaders;
-   struct tr_list shaders;
 };
 
 
@@ -101,9 +62,6 @@ struct pipe_context *
 trace_context_create(struct trace_screen *tr_scr,
                      struct pipe_context *pipe);
 
-void
-trace_rbug_notify_draw_blocked(struct trace_context *tr_ctx);
-
 
 #ifdef __cplusplus
 }
index 0dc8cca2648232faa7fa87785b57610a544b00fb..9c7d39201a9bfe5cc197022bc6f7b2d833acdfbc 100644 (file)
@@ -28,6 +28,7 @@
 #include "state_tracker/drm_api.h"
 
 #include "util/u_memory.h"
+#include "rbug/rbug_public.h"
 #include "tr_drm.h"
 #include "tr_screen.h"
 #include "tr_public.h"
@@ -61,7 +62,7 @@ trace_drm_create_screen(struct drm_api *_api, int fd,
    screen = api->create_screen(api, fd, arg);
 
 
-   return trace_screen_create(screen);
+   return trace_screen_create(rbug_screen_create(screen));
 }
 
 static void
@@ -84,7 +85,7 @@ trace_drm_create(struct drm_api *api)
    if (!api)
       goto error;
 
-   if (!trace_enabled())
+   if (!trace_enabled() && !rbug_enabled())
       goto error;
 
    tr_api = CALLOC_STRUCT(trace_drm_api);
index f21f72b0c7958b4710f00df24f689c0a94f6b3bd..74c5e83e9e1686da1a681886ae5525a0218755ce 100644 (file)
@@ -37,7 +37,6 @@
 #include "pipe/p_compiler.h"
 #include "pipe/p_format.h"
 
-struct pipe_buffer;
 struct pipe_resource;
 struct pipe_surface;
 struct pipe_transfer;
index f148a859ff36544c28b4710686df460013f3be5a..1727c2a02069538c54945a6d70197a0daa710ebd 100644 (file)
@@ -136,12 +136,13 @@ void trace_dump_rasterizer_state(const struct pipe_rasterizer_state *state)
 
    trace_dump_member(bool, state, flatshade);
    trace_dump_member(bool, state, light_twoside);
-   trace_dump_member(uint, state, front_winding);
-   trace_dump_member(uint, state, cull_mode);
-   trace_dump_member(uint, state, fill_cw);
-   trace_dump_member(uint, state, fill_ccw);
-   trace_dump_member(bool, state, offset_cw);
-   trace_dump_member(bool, state, offset_ccw);
+   trace_dump_member(uint, state, front_ccw);
+   trace_dump_member(uint, state, cull_face);
+   trace_dump_member(uint, state, fill_front);
+   trace_dump_member(uint, state, fill_back);
+   trace_dump_member(bool, state, offset_point);
+   trace_dump_member(bool, state, offset_line);
+   trace_dump_member(bool, state, offset_tri);
    trace_dump_member(bool, state, scissor);
    trace_dump_member(bool, state, poly_smooth);
    trace_dump_member(bool, state, poly_stipple_enable);
index 62e217097d0639f9e70f0aed1b8b4e9dda0e62b7..aee4937dd4fe519d5656e55be983d91b575baa35 100644 (file)
@@ -38,6 +38,9 @@ struct pipe_context;
 struct pipe_screen *
 trace_screen_create(struct pipe_screen *screen);
 
+boolean
+trace_enabled(void);
+
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/gallium/drivers/trace/tr_rbug.c b/src/gallium/drivers/trace/tr_rbug.c
deleted file mode 100644 (file)
index 3ce1b85..0000000
+++ /dev/null
@@ -1,864 +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 TUNGSTEN GRAPHICS AND/OR ITS SUPPLIERS BE LIABLE FOR
- * ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
- * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
- * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- *
- **************************************************************************/
-
-
-#include "os/os_thread.h"
-#include "util/u_format.h"
-#include "util/u_string.h"
-#include "util/u_inlines.h"
-#include "util/u_memory.h"
-#include "util/u_simple_list.h"
-#include "util/u_network.h"
-#include "os/os_time.h"
-
-#include "tgsi/tgsi_parse.h"
-
-#include "tr_dump.h"
-#include "tr_state.h"
-#include "tr_texture.h"
-
-#include "rbug/rbug.h"
-
-#include <errno.h>
-
-#define U642VOID(x) ((void *)(unsigned long)(x))
-#define VOID2U64(x) ((uint64_t)(unsigned long)(x))
-
-struct trace_rbug
-{
-   struct trace_screen *tr_scr;
-   struct rbug_connection *con;
-   pipe_thread thread;
-   boolean running;
-};
-
-PIPE_THREAD_ROUTINE(trace_rbug_thread, void_tr_rbug);
-
-
-/**********************************************************
- * Helper functions
- */
-
-
-static struct trace_context *
-trace_rbug_get_context_locked(struct trace_screen *tr_scr, rbug_context_t ctx)
-{
-   struct trace_context *tr_ctx = NULL;
-   struct tr_list *ptr;
-
-   foreach(ptr, &tr_scr->contexts) {
-      tr_ctx = (struct trace_context *)((char*)ptr - offsetof(struct trace_context, list));
-      if (ctx == VOID2U64(tr_ctx))
-         break;
-      tr_ctx = NULL;
-   }
-
-   return tr_ctx;
-}
-
-static struct trace_shader *
-trace_rbug_get_shader_locked(struct trace_context *tr_ctx, rbug_shader_t shdr)
-{
-   struct trace_shader *tr_shdr = NULL;
-   struct tr_list *ptr;
-
-   foreach(ptr, &tr_ctx->shaders) {
-      tr_shdr = (struct trace_shader *)((char*)ptr - offsetof(struct trace_shader, list));
-      if (shdr == VOID2U64(tr_shdr))
-         break;
-      tr_shdr = NULL;
-   }
-
-   return tr_shdr;
-}
-
-static void *
-trace_shader_create_locked(struct pipe_context *pipe,
-                           struct trace_shader *tr_shdr,
-                           struct tgsi_token *tokens)
-{
-   void *state = NULL;
-   struct pipe_shader_state pss = { 0 };
-   pss.tokens = tokens;
-
-   if (tr_shdr->type == TRACE_SHADER_FRAGMENT) {
-      state = pipe->create_fs_state(pipe, &pss);
-   } else if (tr_shdr->type == TRACE_SHADER_VERTEX) {
-      state = pipe->create_vs_state(pipe, &pss);
-   } else
-      assert(0);
-
-   return state;
-}
-
-static void
-trace_shader_bind_locked(struct pipe_context *pipe,
-                         struct trace_shader *tr_shdr,
-                         void *state)
-{
-   if (tr_shdr->type == TRACE_SHADER_FRAGMENT) {
-      pipe->bind_fs_state(pipe, state);
-   } else if (tr_shdr->type == TRACE_SHADER_VERTEX) {
-      pipe->bind_vs_state(pipe, state);
-   } else
-      assert(0);
-}
-
-static void
-trace_shader_delete_locked(struct pipe_context *pipe,
-                           struct trace_shader *tr_shdr,
-                           void *state)
-{
-   if (tr_shdr->type == TRACE_SHADER_FRAGMENT) {
-      pipe->delete_fs_state(pipe, state);
-   } else if (tr_shdr->type == TRACE_SHADER_VERTEX) {
-      pipe->delete_vs_state(pipe, state);
-   } else
-      assert(0);
-}
-
-/************************************************
- * Request handler functions
- */
-
-
-static int
-trace_rbug_texture_list(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_resource *tr_tex = NULL;
-   struct tr_list *ptr;
-   rbug_texture_t *texs;
-   int i = 0;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   texs = MALLOC(tr_scr->num_textures * sizeof(rbug_texture_t));
-   foreach(ptr, &tr_scr->textures) {
-      tr_tex = (struct trace_resource *)((char*)ptr - offsetof(struct trace_resource, list));
-      texs[i++] = VOID2U64(tr_tex);
-   }
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   rbug_send_texture_list_reply(tr_rbug->con, serial, texs, i, NULL);
-   FREE(texs);
-
-   return 0;
-}
-
-static int
-trace_rbug_texture_info(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_resource *tr_tex = NULL;
-   struct rbug_proto_texture_info *gpti = (struct rbug_proto_texture_info *)header;
-   struct tr_list *ptr;
-   struct pipe_resource *t;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   foreach(ptr, &tr_scr->textures) {
-      tr_tex = (struct trace_resource *)((char*)ptr - offsetof(struct trace_resource, list));
-      if (gpti->texture == VOID2U64(tr_tex))
-         break;
-      tr_tex = NULL;
-   }
-
-   if (!tr_tex) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   t = tr_tex->resource;
-   rbug_send_texture_info_reply(tr_rbug->con, serial,
-                               t->target, t->format,
-                               &t->width0, 1,
-                               &t->height0, 1,
-                               &t->depth0, 1,
-                               util_format_get_blockwidth(t->format),
-                               util_format_get_blockheight(t->format),
-                               util_format_get_blocksize(t->format),
-                               t->last_level,
-                               t->nr_samples,
-                               t->bind,
-                               NULL);
-
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_texture_read(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_texture_read *gptr = (struct rbug_proto_texture_read *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_resource *tr_tex = NULL;
-   struct tr_list *ptr;
-
-   struct pipe_context *context = tr_scr->private_context;
-   struct pipe_resource *tex;
-   struct pipe_transfer *t;
-
-   void *map;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   foreach(ptr, &tr_scr->textures) {
-      tr_tex = (struct trace_resource *)((char*)ptr - offsetof(struct trace_resource, list));
-      if (gptr->texture == VOID2U64(tr_tex))
-         break;
-      tr_tex = NULL;
-   }
-
-   if (!tr_tex) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   tex = tr_tex->resource;
-   t = pipe_get_transfer(context, tex,
-                                gptr->face, gptr->level, gptr->zslice,
-                                PIPE_TRANSFER_READ,
-                                gptr->x, gptr->y, gptr->w, gptr->h);
-
-   map = context->transfer_map(context, t);
-
-   rbug_send_texture_read_reply(tr_rbug->con, serial,
-                                t->resource->format,
-                                util_format_get_blockwidth(t->resource->format),
-                                util_format_get_blockheight(t->resource->format),
-                                util_format_get_blocksize(t->resource->format),
-                                (uint8_t*)map,
-                                t->stride * util_format_get_nblocksy(t->resource->format,
-                                                                    t->box.height),
-                                t->stride,
-                                NULL);
-
-   context->transfer_unmap(context, t);
-   context->transfer_destroy(context, t);
-
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_context_list(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct tr_list *ptr;
-   struct trace_context *tr_ctx = NULL;
-   rbug_context_t *ctxs;
-   int i = 0;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   ctxs = MALLOC(tr_scr->num_contexts * sizeof(rbug_context_t));
-   foreach(ptr, &tr_scr->contexts) {
-      tr_ctx = (struct trace_context *)((char*)ptr - offsetof(struct trace_context, list));
-      ctxs[i++] = VOID2U64(tr_ctx);
-   }
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   rbug_send_context_list_reply(tr_rbug->con, serial, ctxs, i, NULL);
-   FREE(ctxs);
-
-   return 0;
-}
-
-static int
-trace_rbug_context_info(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_context_info *info = (struct rbug_proto_context_info *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-   rbug_texture_t cbufs[PIPE_MAX_COLOR_BUFS];
-   rbug_texture_t texs[PIPE_MAX_SAMPLERS];
-   int i;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, info->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   /* protect the pipe context */
-   pipe_mutex_lock(tr_ctx->draw_mutex);
-   trace_dump_call_lock();
-
-   for (i = 0; i < tr_ctx->curr.nr_cbufs; i++)
-      cbufs[i] = VOID2U64(tr_ctx->curr.cbufs[i]);
-
-   for (i = 0; i < tr_ctx->curr.num_sampler_views; i++)
-      texs[i] = VOID2U64(tr_ctx->curr.sampler_views[i]);
-
-   rbug_send_context_info_reply(tr_rbug->con, serial,
-                                VOID2U64(tr_ctx->curr.vs), VOID2U64(tr_ctx->curr.fs),
-                                texs, tr_ctx->curr.num_sampler_views,
-                                cbufs, tr_ctx->curr.nr_cbufs,
-                                VOID2U64(tr_ctx->curr.zsbuf),
-                                tr_ctx->draw_blocker, tr_ctx->draw_blocked, NULL);
-
-   trace_dump_call_unlock();
-   pipe_mutex_unlock(tr_ctx->draw_mutex);
-
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_context_draw_block(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_context_draw_block *block = (struct rbug_proto_context_draw_block *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, block->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->draw_mutex);
-   tr_ctx->draw_blocker |= block->block;
-   pipe_mutex_unlock(tr_ctx->draw_mutex);
-
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_context_draw_step(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_context_draw_step *step = (struct rbug_proto_context_draw_step *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, step->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->draw_mutex);
-   if (tr_ctx->draw_blocked & RBUG_BLOCK_RULE) {
-      if (step->step & RBUG_BLOCK_RULE)
-         tr_ctx->draw_blocked &= ~RBUG_BLOCK_MASK;
-   } else {
-      tr_ctx->draw_blocked &= ~step->step;
-   }
-   pipe_mutex_unlock(tr_ctx->draw_mutex);
-
-#ifdef PIPE_THREAD_HAVE_CONDVAR
-   pipe_condvar_broadcast(tr_ctx->draw_cond);
-#endif
-
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_context_draw_unblock(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_context_draw_unblock *unblock = (struct rbug_proto_context_draw_unblock *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, unblock->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->draw_mutex);
-   if (tr_ctx->draw_blocked & RBUG_BLOCK_RULE) {
-      if (unblock->unblock & RBUG_BLOCK_RULE)
-         tr_ctx->draw_blocked &= ~RBUG_BLOCK_MASK;
-   } else {
-      tr_ctx->draw_blocked &= ~unblock->unblock;
-   }
-   tr_ctx->draw_blocker &= ~unblock->unblock;
-   pipe_mutex_unlock(tr_ctx->draw_mutex);
-
-#ifdef PIPE_THREAD_HAVE_CONDVAR
-   pipe_condvar_broadcast(tr_ctx->draw_cond);
-#endif
-
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_context_draw_rule(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_context_draw_rule *rule = (struct rbug_proto_context_draw_rule *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, rule->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->draw_mutex);
-   tr_ctx->draw_rule.vs = U642VOID(rule->vertex);
-   tr_ctx->draw_rule.fs = U642VOID(rule->fragment);
-   tr_ctx->draw_rule.sampler_view = U642VOID(rule->texture);
-   tr_ctx->draw_rule.surf = U642VOID(rule->surface);
-   tr_ctx->draw_rule.blocker = rule->block;
-   tr_ctx->draw_blocker |= RBUG_BLOCK_RULE;
-   pipe_mutex_unlock(tr_ctx->draw_mutex);
-
-#ifdef PIPE_THREAD_HAVE_CONDVAR
-   pipe_condvar_broadcast(tr_ctx->draw_cond);
-#endif
-
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_context_flush(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_context_flush *flush = (struct rbug_proto_context_flush *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, flush->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   /* protect the pipe context */
-   trace_dump_call_lock();
-
-   tr_ctx->pipe->flush(tr_ctx->pipe, flush->flags, NULL);
-
-   trace_dump_call_unlock();
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_shader_list(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_shader_list *list = (struct rbug_proto_shader_list *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-   struct trace_shader *tr_shdr = NULL;
-   struct tr_list *ptr;
-   rbug_shader_t *shdrs;
-   int i = 0;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, list->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->list_mutex);
-   shdrs = MALLOC(tr_ctx->num_shaders * sizeof(rbug_shader_t));
-   foreach(ptr, &tr_ctx->shaders) {
-      tr_shdr = (struct trace_shader *)((char*)ptr - offsetof(struct trace_shader, list));
-      shdrs[i++] = VOID2U64(tr_shdr);
-   }
-
-   pipe_mutex_unlock(tr_ctx->list_mutex);
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   rbug_send_shader_list_reply(tr_rbug->con, serial, shdrs, i, NULL);
-   FREE(shdrs);
-
-   return 0;
-}
-
-static int
-trace_rbug_shader_info(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   struct rbug_proto_shader_info *info = (struct rbug_proto_shader_info *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-   struct trace_shader *tr_shdr = NULL;
-   unsigned original_len;
-   unsigned replaced_len;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, info->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->list_mutex);
-
-   tr_shdr = trace_rbug_get_shader_locked(tr_ctx, info->shader);
-
-   if (!tr_shdr) {
-      pipe_mutex_unlock(tr_ctx->list_mutex);
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   /* just in case */
-   assert(sizeof(struct tgsi_token) == 4);
-
-   original_len = tgsi_num_tokens(tr_shdr->tokens);
-   if (tr_shdr->replaced_tokens)
-      replaced_len = tgsi_num_tokens(tr_shdr->replaced_tokens);
-   else
-      replaced_len = 0;
-
-   rbug_send_shader_info_reply(tr_rbug->con, serial,
-                               (uint32_t*)tr_shdr->tokens, original_len,
-                               (uint32_t*)tr_shdr->replaced_tokens, replaced_len,
-                               tr_shdr->disabled,
-                               NULL);
-
-   pipe_mutex_unlock(tr_ctx->list_mutex);
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_shader_disable(struct trace_rbug *tr_rbug, struct rbug_header *header)
-{
-   struct rbug_proto_shader_disable *dis = (struct rbug_proto_shader_disable *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-   struct trace_shader *tr_shdr = NULL;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, dis->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->list_mutex);
-
-   tr_shdr = trace_rbug_get_shader_locked(tr_ctx, dis->shader);
-
-   if (!tr_shdr) {
-      pipe_mutex_unlock(tr_ctx->list_mutex);
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   tr_shdr->disabled = dis->disable;
-
-   pipe_mutex_unlock(tr_ctx->list_mutex);
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-}
-
-static int
-trace_rbug_shader_replace(struct trace_rbug *tr_rbug, struct rbug_header *header)
-{
-   struct rbug_proto_shader_replace *rep = (struct rbug_proto_shader_replace *)header;
-
-   struct trace_screen *tr_scr = tr_rbug->tr_scr;
-   struct trace_context *tr_ctx = NULL;
-   struct trace_shader *tr_shdr = NULL;
-   struct pipe_context *pipe = NULL;
-   void *state;
-
-   pipe_mutex_lock(tr_scr->list_mutex);
-   tr_ctx = trace_rbug_get_context_locked(tr_scr, rep->context);
-
-   if (!tr_ctx) {
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   pipe_mutex_lock(tr_ctx->list_mutex);
-
-   tr_shdr = trace_rbug_get_shader_locked(tr_ctx, rep->shader);
-
-   if (!tr_shdr) {
-      pipe_mutex_unlock(tr_ctx->list_mutex);
-      pipe_mutex_unlock(tr_scr->list_mutex);
-      return -ESRCH;
-   }
-
-   /* protect the pipe context */
-   trace_dump_call_lock();
-
-   pipe = tr_ctx->pipe;
-
-   /* remove old replaced shader */
-   if (tr_shdr->replaced) {
-      if (tr_ctx->curr.fs == tr_shdr || tr_ctx->curr.vs == tr_shdr)
-         trace_shader_bind_locked(pipe, tr_shdr, tr_shdr->state);
-
-      FREE(tr_shdr->replaced_tokens);
-      trace_shader_delete_locked(pipe, tr_shdr, tr_shdr->replaced);
-      tr_shdr->replaced = NULL;
-      tr_shdr->replaced_tokens = NULL;
-   }
-
-   /* empty inputs means restore old which we did above */
-   if (rep->tokens_len == 0)
-      goto out;
-
-   tr_shdr->replaced_tokens = tgsi_dup_tokens((struct tgsi_token *)rep->tokens);
-   if (!tr_shdr->replaced_tokens)
-      goto err;
-
-   state = trace_shader_create_locked(pipe, tr_shdr, tr_shdr->replaced_tokens);
-   if (!state)
-      goto err;
-
-   /* bind new shader if the shader is currently a bound */
-   if (tr_ctx->curr.fs == tr_shdr || tr_ctx->curr.vs == tr_shdr)
-      trace_shader_bind_locked(pipe, tr_shdr, state);
-
-   /* save state */
-   tr_shdr->replaced = state;
-
-out:
-   trace_dump_call_unlock();
-   pipe_mutex_unlock(tr_ctx->list_mutex);
-   pipe_mutex_unlock(tr_scr->list_mutex);
-
-   return 0;
-
-err:
-   FREE(tr_shdr->replaced_tokens);
-   tr_shdr->replaced = NULL;
-   tr_shdr->replaced_tokens = NULL;
-
-   trace_dump_call_unlock();
-   pipe_mutex_unlock(tr_ctx->list_mutex);
-   pipe_mutex_unlock(tr_scr->list_mutex);
-   return -EINVAL;
-}
-
-static boolean
-trace_rbug_header(struct trace_rbug *tr_rbug, struct rbug_header *header, uint32_t serial)
-{
-   int ret = 0;
-
-   switch(header->opcode) {
-      case RBUG_OP_PING:
-         rbug_send_ping_reply(tr_rbug->con, serial, NULL);
-         break;
-      case RBUG_OP_TEXTURE_LIST:
-         ret = trace_rbug_texture_list(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_TEXTURE_INFO:
-         ret = trace_rbug_texture_info(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_TEXTURE_READ:
-         ret = trace_rbug_texture_read(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_CONTEXT_LIST:
-         ret = trace_rbug_context_list(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_CONTEXT_INFO:
-         ret = trace_rbug_context_info(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_CONTEXT_DRAW_BLOCK:
-         ret = trace_rbug_context_draw_block(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_CONTEXT_DRAW_STEP:
-         ret = trace_rbug_context_draw_step(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_CONTEXT_DRAW_UNBLOCK:
-         ret = trace_rbug_context_draw_unblock(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_CONTEXT_DRAW_RULE:
-         ret = trace_rbug_context_draw_rule(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_CONTEXT_FLUSH:
-         ret = trace_rbug_context_flush(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_SHADER_LIST:
-         ret = trace_rbug_shader_list(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_SHADER_INFO:
-         ret = trace_rbug_shader_info(tr_rbug, header, serial);
-         break;
-      case RBUG_OP_SHADER_DISABLE:
-         ret = trace_rbug_shader_disable(tr_rbug, header);
-         break;
-      case RBUG_OP_SHADER_REPLACE:
-         ret = trace_rbug_shader_replace(tr_rbug, header);
-         break;
-      default:
-         debug_printf("%s - unsupported opcode %u\n", __FUNCTION__, header->opcode);
-         ret = -ENOSYS;
-         break;
-   }
-   rbug_free_header(header);
-
-   if (ret)
-      rbug_send_error_reply(tr_rbug->con, serial, ret, NULL);
-
-   return TRUE;
-}
-
-static void
-trace_rbug_con(struct trace_rbug *tr_rbug)
-{
-   struct rbug_header *header;
-   uint32_t serial;
-
-   debug_printf("%s - connection received\n", __FUNCTION__);
-
-   while(tr_rbug->running) {
-      header = rbug_get_message(tr_rbug->con, &serial);
-      if (!header)
-         break;
-
-      if (!trace_rbug_header(tr_rbug, header, serial))
-         break;
-   }
-
-   debug_printf("%s - connection closed\n", __FUNCTION__);
-
-   rbug_disconnect(tr_rbug->con);
-   tr_rbug->con = NULL;
-}
-
-PIPE_THREAD_ROUTINE(trace_rbug_thread, void_tr_rbug)
-{
-   struct trace_rbug *tr_rbug = void_tr_rbug;
-   uint16_t port = 13370;
-   int s = -1;
-   int c;
-
-   u_socket_init();
-
-   for (;port <= 13379 && s < 0; port++)
-      s = u_socket_listen_on_port(port);
-
-   if (s < 0) {
-      debug_printf("trace_rbug - failed to listen\n");
-      return NULL;
-   }
-
-   u_socket_block(s, false);
-
-   debug_printf("trace_rbug - remote debugging listening on port %u\n", --port);
-
-   while(tr_rbug->running) {
-      os_time_sleep(1);
-
-      c = u_socket_accept(s);
-      if (c < 0)
-         continue;
-
-      u_socket_block(c, true);
-      tr_rbug->con = rbug_from_socket(c);
-
-      trace_rbug_con(tr_rbug);
-
-      u_socket_close(c);
-   }
-
-   u_socket_close(s);
-
-   u_socket_stop();
-
-   return NULL;
-}
-
-/**********************************************************
- *
- */
-
-struct trace_rbug *
-trace_rbug_start(struct trace_screen *tr_scr)
-{
-   struct trace_rbug *tr_rbug = CALLOC_STRUCT(trace_rbug);
-   if (!tr_rbug)
-      return NULL;
-
-   tr_rbug->tr_scr = tr_scr;
-   tr_rbug->running = TRUE;
-   tr_rbug->thread = pipe_thread_create(trace_rbug_thread, tr_rbug);
-
-   return tr_rbug;
-}
-
-void
-trace_rbug_stop(struct trace_rbug *tr_rbug)
-{
-   if (!tr_rbug)
-      return;
-
-   tr_rbug->running = false;
-   pipe_thread_wait(tr_rbug->thread);
-
-   FREE(tr_rbug);
-
-   return;
-}
-
-void
-trace_rbug_notify_draw_blocked(struct trace_context *tr_ctx)
-{
-   struct trace_screen *tr_scr = trace_screen(tr_ctx->base.screen);
-   struct trace_rbug *tr_rbug = tr_scr->rbug;
-
-   if (tr_rbug && tr_rbug->con)
-      rbug_send_context_draw_blocked(tr_rbug->con,
-                                     VOID2U64(tr_ctx), tr_ctx->draw_blocked, NULL);
-}
index ffae6e94d11ee544dbbeb72c80edcb069521dc23..32e519a68a094e0263ef50aa145f74d4605ac94a 100644 (file)
@@ -40,7 +40,6 @@
 
 
 static boolean trace = FALSE;
-static boolean rbug = FALSE;
 
 static const char *
 trace_screen_get_name(struct pipe_screen *_screen)
@@ -86,7 +85,7 @@ trace_screen_get_vendor(struct pipe_screen *_screen)
 
 static int
 trace_screen_get_param(struct pipe_screen *_screen,
-                       int param)
+                       enum pipe_cap param)
 {
    struct trace_screen *tr_scr = trace_screen(_screen);
    struct pipe_screen *screen = tr_scr->screen;
@@ -109,7 +108,7 @@ trace_screen_get_param(struct pipe_screen *_screen,
 
 static float
 trace_screen_get_paramf(struct pipe_screen *_screen,
-                        int param)
+                        enum pipe_cap param)
 {
    struct trace_screen *tr_scr = trace_screen(_screen);
    struct pipe_screen *screen = tr_scr->screen;
@@ -494,9 +493,6 @@ trace_screen_destroy(struct pipe_screen *_screen)
    trace_dump_call_end();
    trace_dump_trace_end();
 
-   if (tr_scr->rbug)
-      trace_rbug_stop(tr_scr->rbug);
-
    screen->destroy(screen);
 
    FREE(tr_scr);
@@ -518,11 +514,6 @@ trace_enabled(void)
       trace = TRUE;
    }
 
-   if (debug_get_bool_option("GALLIUM_RBUG", FALSE)) {
-      trace = TRUE;
-      rbug = TRUE;
-   }
-
    return trace;
 }
 
@@ -551,13 +542,6 @@ trace_screen_create(struct pipe_screen *screen)
 #else
    winsys = screen->winsys;
 #endif
-   pipe_mutex_init(tr_scr->list_mutex);
-   make_empty_list(&tr_scr->buffers);
-   make_empty_list(&tr_scr->contexts);
-   make_empty_list(&tr_scr->textures);
-   make_empty_list(&tr_scr->surfaces);
-   make_empty_list(&tr_scr->transfers);
-
    tr_scr->base.winsys = winsys;
    tr_scr->base.destroy = trace_screen_destroy;
    tr_scr->base.get_name = trace_screen_get_name;
@@ -580,20 +564,12 @@ trace_screen_create(struct pipe_screen *screen)
    tr_scr->base.flush_frontbuffer = trace_screen_flush_frontbuffer;
 
    tr_scr->screen = screen;
-   tr_scr->private_context = screen->context_create(screen, NULL);
-   if (tr_scr->private_context == NULL)
-      goto error3;
 
    trace_dump_ret(ptr, screen);
    trace_dump_call_end();
 
-   if (rbug)
-      tr_scr->rbug = trace_rbug_start(tr_scr);
-
    return &tr_scr->base;
 
-error3:
-   FREE(tr_scr);
 error2:
    trace_dump_ret(ptr, screen);
    trace_dump_call_end();
index 05ff9ef61f1e9820ebb144855bbe6e60a2b2c722..3598ceaa20f9bedb6cff004605827b211ba7060c 100644 (file)
@@ -56,67 +56,17 @@ struct trace_screen
    struct pipe_screen base;
 
    struct pipe_screen *screen;
-   struct pipe_context *private_context;
-
-   /* remote debugger */
-   struct trace_rbug *rbug;
-
-   pipe_mutex list_mutex;
-   int num_buffers;
-   int num_contexts;
-   int num_textures;
-   int num_surfaces;
-   int num_transfers;
-   struct tr_list buffers;
-   struct tr_list contexts;
-   struct tr_list textures;
-   struct tr_list surfaces;
-   struct tr_list transfers;
 };
 
 
-/*
- * tr_rbug.c
- */
-
-
-struct trace_rbug;
-
-struct trace_rbug *
-trace_rbug_start(struct trace_screen *tr_scr);
-
-void
-trace_rbug_stop(struct trace_rbug *tr_rbug);
-
-
 /*
  * tr_screen.c
  */
 
 
-boolean
-trace_enabled(void);
-
 struct trace_screen *
 trace_screen(struct pipe_screen *screen);
 
-#define trace_screen_add_to_list(tr_scr, name, obj) \
-   do {                                             \
-      pipe_mutex_lock(tr_scr->list_mutex);          \
-      insert_at_head(&tr_scr->name, &obj->list);    \
-      tr_scr->num_##name++;                         \
-      pipe_mutex_unlock(tr_scr->list_mutex);        \
-   } while (0)
-
-#define trace_screen_remove_from_list(tr_scr, name, obj) \
-   do {                                                  \
-      pipe_mutex_lock(tr_scr->list_mutex);               \
-      remove_from_list(&obj->list);                      \
-      tr_scr->num_##name--;                              \
-      pipe_mutex_unlock(tr_scr->list_mutex);             \
-   } while (0)
-
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/gallium/drivers/trace/tr_state.c b/src/gallium/drivers/trace/tr_state.c
deleted file mode 100644 (file)
index d8c1164..0000000
+++ /dev/null
@@ -1,66 +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
- * 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
- * VMWARE 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 "tr_state.h"
-
-#include "util/u_memory.h"
-#include "util/u_simple_list.h"
-
-#include "tgsi/tgsi_parse.h"
-
-struct trace_shader * trace_shader_create(struct trace_context *tr_ctx,
-                                          const struct pipe_shader_state *state,
-                                          void *result,
-                                          enum trace_shader_type type)
-{
-   struct trace_shader *tr_shdr = CALLOC_STRUCT(trace_shader);
-
-   tr_shdr->state = result;
-   tr_shdr->type = type;
-   tr_shdr->tokens = tgsi_dup_tokens(state->tokens);
-
-   /* works on context as well */
-   trace_screen_add_to_list(tr_ctx, shaders, tr_shdr);
-
-   return tr_shdr;
-}
-
-void trace_shader_destroy(struct trace_context *tr_ctx,
-                          struct trace_shader *tr_shdr)
-{
-   trace_screen_remove_from_list(tr_ctx, shaders, tr_shdr);
-
-   if (tr_shdr->replaced) {
-      if (tr_shdr->type == TRACE_SHADER_FRAGMENT)
-         tr_ctx->pipe->delete_fs_state(tr_ctx->pipe, tr_shdr->replaced);
-      else if (tr_shdr->type == TRACE_SHADER_VERTEX)
-         tr_ctx->pipe->delete_vs_state(tr_ctx->pipe, tr_shdr->replaced);
-      else
-         assert(0);
-   }
-
-   FREE(tr_shdr->replaced_tokens);
-   FREE(tr_shdr->tokens);
-   FREE(tr_shdr);
-}
diff --git a/src/gallium/drivers/trace/tr_state.h b/src/gallium/drivers/trace/tr_state.h
deleted file mode 100644 (file)
index e2f981d..0000000
+++ /dev/null
@@ -1,68 +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
- * 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
- * VMWARE 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 TR_STATE_H_
-#define TR_STATE_H_
-
-#include "tr_context.h"
-
-struct tgsi_token;
-
-enum trace_shader_type {
-   TRACE_SHADER_FRAGMENT = 0,
-   TRACE_SHADER_VERTEX   = 1,
-   TRACE_SHADER_GEOMETRY = 2
-};
-
-struct trace_shader
-{
-   struct tr_list list;
-
-   enum trace_shader_type type;
-
-   void *state;
-   void *replaced;
-
-   struct tgsi_token *tokens;
-   struct tgsi_token *replaced_tokens;
-
-   boolean disabled;
-};
-
-
-static INLINE struct trace_shader *
-trace_shader(void *state)
-{
-   return (struct trace_shader *)state;
-}
-
-struct trace_shader * trace_shader_create(struct trace_context *tr_ctx,
-                                          const struct pipe_shader_state *state,
-                                          void *result,
-                                          enum trace_shader_type type);
-
-void trace_shader_destroy(struct trace_context *tr_ctx,
-                          struct trace_shader *tr_shdr);
-
-#endif
index 1132dc9272454c2f24b1cca78751b3a0edc7672a..9914b98b39cd17e75cff76e133b180438b895f9d 100644 (file)
@@ -56,8 +56,6 @@ trace_resource_create(struct trace_screen *tr_scr,
    tr_tex->base.screen = &tr_scr->base;
    tr_tex->resource = texture;
 
-   trace_screen_add_to_list(tr_scr, textures, tr_tex);
-
    return &tr_tex->base;
 
 error:
@@ -70,8 +68,6 @@ void
 trace_resource_destroy(struct trace_screen *tr_scr,
                       struct trace_resource *tr_tex)
 {
-   trace_screen_remove_from_list(tr_scr, textures, tr_tex);
-
    pipe_resource_reference(&tr_tex->resource, NULL);
    FREE(tr_tex);
 }
@@ -81,7 +77,6 @@ struct pipe_surface *
 trace_surface_create(struct trace_resource *tr_tex,
                      struct pipe_surface *surface)
 {
-   struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen);
    struct trace_surface *tr_surf;
 
    if(!surface)
@@ -100,8 +95,6 @@ trace_surface_create(struct trace_resource *tr_tex,
    pipe_resource_reference(&tr_surf->base.texture, &tr_tex->base);
    tr_surf->surface = surface;
 
-   trace_screen_add_to_list(tr_scr, surfaces, tr_surf);
-
    return &tr_surf->base;
 
 error:
@@ -113,10 +106,6 @@ error:
 void
 trace_surface_destroy(struct trace_surface *tr_surf)
 {
-   struct trace_screen *tr_scr = trace_screen(tr_surf->base.texture->screen);
-
-   trace_screen_remove_from_list(tr_scr, surfaces, tr_surf);
-
    pipe_resource_reference(&tr_surf->base.texture, NULL);
    pipe_surface_reference(&tr_surf->surface, NULL);
    FREE(tr_surf);
@@ -128,7 +117,6 @@ trace_transfer_create(struct trace_context *tr_ctx,
                      struct trace_resource *tr_tex,
                      struct pipe_transfer *transfer)
 {
-   struct trace_screen *tr_scr = trace_screen(tr_tex->base.screen);
    struct trace_transfer *tr_trans;
 
    if(!transfer)
@@ -148,8 +136,6 @@ trace_transfer_create(struct trace_context *tr_ctx,
    pipe_resource_reference(&tr_trans->base.resource, &tr_tex->base);
    assert(tr_trans->base.resource == &tr_tex->base);
 
-   trace_screen_add_to_list(tr_scr, transfers, tr_trans);
-
    return &tr_trans->base;
 
 error:
@@ -162,12 +148,9 @@ void
 trace_transfer_destroy(struct trace_context *tr_context,
                        struct trace_transfer *tr_trans)
 {
-   struct trace_screen *tr_scr = trace_screen(tr_context->base.screen);
    struct pipe_context *context = tr_context->pipe;
    struct pipe_transfer *transfer = tr_trans->transfer;
 
-   trace_screen_remove_from_list(tr_scr, transfers, tr_trans);
-
    pipe_resource_reference(&tr_trans->base.resource, NULL);
    context->transfer_destroy(context, transfer);
    FREE(tr_trans);
index c5928dde471b75e977863f3512c2b35fdefc17c7..b81702a4fac0792f750bca7ca755317c87c9a5b0 100644 (file)
 #define PIPE_OS_UNIX
 #endif
 
+#if defined(__CYGWIN__)
+#define PIPE_OS_CYGWIN
+#define PIPE_OS_UNIX
+#endif
+
 /*
  * Try to auto-detect the subsystem.
  * 
index a852ad97cab2875e4dc1fb7c4d0250d115787e79..b54a6ef8247d8f0308c4aa6bf2a1dfd3224fe4bb 100644 (file)
@@ -119,11 +119,11 @@ enum pipe_error {
 #define PIPE_POLYGON_MODE_LINE  1
 #define PIPE_POLYGON_MODE_POINT 2
 
-/** Polygon front/back window, also for culling */
-#define PIPE_WINDING_NONE 0
-#define PIPE_WINDING_CW   1
-#define PIPE_WINDING_CCW  2
-#define PIPE_WINDING_BOTH (PIPE_WINDING_CW | PIPE_WINDING_CCW)
+/** Polygon face specification, eg for culling */
+#define PIPE_FACE_NONE           0
+#define PIPE_FACE_FRONT          1
+#define PIPE_FACE_BACK           2
+#define PIPE_FACE_FRONT_AND_BACK (PIPE_FACE_FRONT | PIPE_FACE_BACK)
 
 /** Stencil ops */
 #define PIPE_STENCIL_OP_KEEP       0
@@ -377,7 +377,8 @@ enum pipe_transfer_usage {
 #define PIPE_QUERY_OCCLUSION_COUNTER     0
 #define PIPE_QUERY_PRIMITIVES_GENERATED  1
 #define PIPE_QUERY_PRIMITIVES_EMITTED    2
-#define PIPE_QUERY_TYPES                 3
+#define PIPE_QUERY_TIME_ELAPSED          3
+#define PIPE_QUERY_TYPES                 4
 
 
 /**
@@ -411,46 +412,76 @@ enum pipe_transfer_usage {
  * Implementation capabilities/limits which are queried through
  * pipe_screen::get_param() and pipe_screen::get_paramf().
  */
-#define PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS 1
-#define PIPE_CAP_NPOT_TEXTURES           2
-#define PIPE_CAP_TWO_SIDED_STENCIL       3
-#define PIPE_CAP_GLSL                    4  /* XXX need something better */
-#define PIPE_CAP_DUAL_SOURCE_BLEND       5  
-#define PIPE_CAP_ANISOTROPIC_FILTER      6
-#define PIPE_CAP_POINT_SPRITE            7
-#define PIPE_CAP_MAX_RENDER_TARGETS      8
-#define PIPE_CAP_OCCLUSION_QUERY         9
-#define PIPE_CAP_TEXTURE_SHADOW_MAP      10
-#define PIPE_CAP_MAX_TEXTURE_2D_LEVELS   11
-#define PIPE_CAP_MAX_TEXTURE_3D_LEVELS   12
-#define PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS 13
-#define PIPE_CAP_MAX_LINE_WIDTH          14
-#define PIPE_CAP_MAX_LINE_WIDTH_AA       15
-#define PIPE_CAP_MAX_POINT_WIDTH         16
-#define PIPE_CAP_MAX_POINT_WIDTH_AA      17
-#define PIPE_CAP_MAX_TEXTURE_ANISOTROPY  18
-#define PIPE_CAP_MAX_TEXTURE_LOD_BIAS    19
-#define PIPE_CAP_GUARD_BAND_LEFT         20  /*< float */
-#define PIPE_CAP_GUARD_BAND_TOP          21  /*< float */
-#define PIPE_CAP_GUARD_BAND_RIGHT        22  /*< float */
-#define PIPE_CAP_GUARD_BAND_BOTTOM       23  /*< float */
-#define PIPE_CAP_TEXTURE_MIRROR_CLAMP    24
-#define PIPE_CAP_TEXTURE_MIRROR_REPEAT   25
-#define PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS 26
-#define PIPE_CAP_TGSI_CONT_SUPPORTED     27
-#define PIPE_CAP_BLEND_EQUATION_SEPARATE 28
-#define PIPE_CAP_SM3                     29  /*< Shader Model 3 supported */
-#define PIPE_CAP_MAX_PREDICATE_REGISTERS 30
-#define PIPE_CAP_MAX_COMBINED_SAMPLERS   31  /*< Maximum texture image units accessible from vertex
-                                                 and fragment shaders combined */
-#define PIPE_CAP_MAX_CONST_BUFFERS       32
-#define PIPE_CAP_MAX_CONST_BUFFER_SIZE   33  /*< In bytes */
-#define PIPE_CAP_INDEP_BLEND_ENABLE      34  /*< blend enables and write masks per rendertarget */
-#define PIPE_CAP_INDEP_BLEND_FUNC        35  /*< different blend funcs per rendertarget */
-#define PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT 36
-#define PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT 37
-#define PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER 38
-#define PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER 39
+enum pipe_cap {
+   PIPE_CAP_MAX_TEXTURE_IMAGE_UNITS,
+   PIPE_CAP_NPOT_TEXTURES,
+   PIPE_CAP_TWO_SIDED_STENCIL,
+   PIPE_CAP_GLSL,  /* XXX need something better */
+   PIPE_CAP_DUAL_SOURCE_BLEND,
+   PIPE_CAP_ANISOTROPIC_FILTER,
+   PIPE_CAP_POINT_SPRITE,
+   PIPE_CAP_MAX_RENDER_TARGETS,
+   PIPE_CAP_OCCLUSION_QUERY,
+   PIPE_CAP_TIMER_QUERY,
+   PIPE_CAP_TEXTURE_SHADOW_MAP,
+   PIPE_CAP_MAX_TEXTURE_2D_LEVELS,
+   PIPE_CAP_MAX_TEXTURE_3D_LEVELS,
+   PIPE_CAP_MAX_TEXTURE_CUBE_LEVELS,
+   PIPE_CAP_MAX_LINE_WIDTH,
+   PIPE_CAP_MAX_LINE_WIDTH_AA,
+   PIPE_CAP_MAX_POINT_WIDTH,
+   PIPE_CAP_MAX_POINT_WIDTH_AA,
+   PIPE_CAP_MAX_TEXTURE_ANISOTROPY,
+   PIPE_CAP_MAX_TEXTURE_LOD_BIAS,
+   PIPE_CAP_GUARD_BAND_LEFT,  /*< float */
+   PIPE_CAP_GUARD_BAND_TOP,  /*< float */
+   PIPE_CAP_GUARD_BAND_RIGHT,  /*< float */
+   PIPE_CAP_GUARD_BAND_BOTTOM,  /*< float */
+   PIPE_CAP_TEXTURE_MIRROR_CLAMP,
+   PIPE_CAP_TEXTURE_MIRROR_REPEAT,
+   PIPE_CAP_MAX_VERTEX_TEXTURE_UNITS,
+   PIPE_CAP_TGSI_CONT_SUPPORTED,
+   PIPE_CAP_BLEND_EQUATION_SEPARATE,
+   PIPE_CAP_SM3,  /*< Shader Model, supported */
+   PIPE_CAP_MAX_PREDICATE_REGISTERS,
+   /** Maximum texture image units accessible from vertex and fragment shaders
+    * combined */
+   PIPE_CAP_MAX_COMBINED_SAMPLERS,
+   PIPE_CAP_MAX_CONST_BUFFERS,
+   PIPE_CAP_MAX_CONST_BUFFER_SIZE,  /*< In bytes */
+   /** blend enables and write masks per rendertarget */
+   PIPE_CAP_INDEP_BLEND_ENABLE,
+   /** different blend funcs per rendertarget */
+   PIPE_CAP_INDEP_BLEND_FUNC,
+   PIPE_CAP_TGSI_FS_COORD_ORIGIN_UPPER_LEFT,
+   PIPE_CAP_TGSI_FS_COORD_ORIGIN_LOWER_LEFT,
+   PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_HALF_INTEGER,
+   PIPE_CAP_TGSI_FS_COORD_PIXEL_CENTER_INTEGER,
+
+   /*
+    * Shader limits.
+    */
+   PIPE_CAP_MAX_FS_INSTRUCTIONS,
+   PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS,
+   PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS,
+   PIPE_CAP_MAX_FS_TEX_INDIRECTIONS,
+   PIPE_CAP_MAX_FS_CONTROL_FLOW_DEPTH,
+   PIPE_CAP_MAX_FS_INPUTS,
+   PIPE_CAP_MAX_FS_CONSTS,
+   PIPE_CAP_MAX_FS_TEMPS,
+   PIPE_CAP_MAX_FS_ADDRS,
+   PIPE_CAP_MAX_FS_PREDS,
+   PIPE_CAP_MAX_VS_INSTRUCTIONS,
+   PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS,
+   PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS,
+   PIPE_CAP_MAX_VS_TEX_INDIRECTIONS,
+   PIPE_CAP_MAX_VS_CONTROL_FLOW_DEPTH,
+   PIPE_CAP_MAX_VS_INPUTS,
+   PIPE_CAP_MAX_VS_CONSTS,
+   PIPE_CAP_MAX_VS_TEMPS,
+   PIPE_CAP_MAX_VS_ADDRS,
+   PIPE_CAP_MAX_VS_PREDS
+};
 
 
 /**
index 9cb949a4465bd30661d9de6cf0ce0e6a16dd1b32..21f428ed4af0862b1e1e0bd050188de68d5fc326 100644 (file)
@@ -54,7 +54,6 @@ struct winsys_handle;
 /** Opaque type */
 struct pipe_fence_handle;
 struct pipe_winsys;
-struct pipe_texture;
 struct pipe_resource;
 struct pipe_surface;
 struct pipe_transfer;
@@ -79,13 +78,13 @@ struct pipe_screen {
     * Query an integer-valued capability/parameter/limit
     * \param param  one of PIPE_CAP_x
     */
-   int (*get_param)( struct pipe_screen *, int param );
+   int (*get_param)( struct pipe_screen *, enum pipe_cap param );
 
    /**
     * Query a float-valued capability/parameter/limit
     * \param param  one of PIPE_CAP_x
     */
-   float (*get_paramf)( struct pipe_screen *, int param );
+   float (*get_paramf)( struct pipe_screen *, enum pipe_cap param );
 
    struct pipe_context * (*context_create)( struct pipe_screen *,
                                            void *priv );
index f9ad07d8f87edca4b6fc4f99c54bd5a4fd68ffd5..5255b2003f8d5b0d823af80bcffb31467058b65d 100644 (file)
@@ -79,12 +79,13 @@ struct pipe_rasterizer_state
 {
    unsigned flatshade:1;
    unsigned light_twoside:1;
-   unsigned front_winding:2;  /**< PIPE_WINDING_x */
-   unsigned cull_mode:2;      /**< PIPE_WINDING_x */
-   unsigned fill_cw:2;        /**< PIPE_POLYGON_MODE_x */
-   unsigned fill_ccw:2;       /**< PIPE_POLYGON_MODE_x */
-   unsigned offset_cw:1;
-   unsigned offset_ccw:1;
+   unsigned front_ccw:1;
+   unsigned cull_face:2;      /**< PIPE_FACE_x */
+   unsigned fill_front:2;     /**< PIPE_POLYGON_MODE_x */
+   unsigned fill_back:2;      /**< PIPE_POLYGON_MODE_x */
+   unsigned offset_point:1;
+   unsigned offset_line:1;
+   unsigned offset_tri:1;
    unsigned scissor:1;
    unsigned poly_smooth:1;
    unsigned poly_stipple_enable:1;
index a48c5de5a0598e8f86e80f89d72f358ab195b19f..0d702d909287fc04be31a1e91d50560089543e96 100644 (file)
@@ -9,7 +9,6 @@
 
 struct pipe_screen;
 struct pipe_winsys;
-struct pipe_buffer;
 struct pipe_context;
 struct pipe_resource;
 
index 3d8fdd86fc7552ab3fba1aa27bbf6d8c35f22d7f..8fd0995444dde5f96b7d07d0ad90b777e988ca6b 100644 (file)
@@ -6,7 +6,6 @@
 
 struct pipe_screen;
 struct pipe_winsys;
-struct pipe_buffer;
 struct pipe_context;
 struct pipe_resource;
 
index a58e18e4739b8fba771d58979237ad80a22d01cb..e5b298e03d9ddb47569b8ee44c118ebc2cc2cd26 100644 (file)
 #include "pipe/p_format.h"
 
 struct pipe_screen;
-
-struct pipe_screen *graw_init( void );
+struct pipe_context;
 
 /* Returns a handle to be used with flush_frontbuffer()/present().
  *
  * Query format support with screen::is_format_supported and usage
  * XXX.
  */
-void *graw_create_window( int x,
-                          int y,
-                          unsigned width,
-                          unsigned height,
-                          enum pipe_format format );
+PUBLIC struct pipe_screen *graw_create_window_and_screen( int x,
+                                                          int y,
+                                                          unsigned width,
+                                                          unsigned height,
+                                                          enum pipe_format format,
+                                                          void **handle);
+
+PUBLIC void graw_set_display_func( void (*func)( void ) );
+PUBLIC void graw_main_loop( void );
+
+PUBLIC void *graw_parse_vertex_shader( struct pipe_context *pipe,
+                                       const char *text );
 
-void graw_destroy_window( void *handle );
+PUBLIC void *graw_parse_fragment_shader( struct pipe_context *pipe,
+                                         const char *text );
 
 #endif
index 002d1c6b840a51888c167704c1e509791879fcb2..21f2d639b1424d71ffa9f6c2f029ef3d9b401b6a 100644 (file)
@@ -61,7 +61,7 @@ enum st_texture_type {
    ST_TEXTURE_1D,
    ST_TEXTURE_2D,
    ST_TEXTURE_3D,
-   ST_TEXTURE_RECT,
+   ST_TEXTURE_RECT
 };
 
 /**
@@ -102,7 +102,7 @@ enum st_context_resource_type {
    ST_CONTEXT_RESOURCE_OPENGL_TEXTURE_CUBE_MAP_POSITIVE_Z,
    ST_CONTEXT_RESOURCE_OPENGL_TEXTURE_CUBE_MAP_NEGATIVE_Z,
    ST_CONTEXT_RESOURCE_OPENGL_RENDERBUFFER,
-   ST_CONTEXT_RESOURCE_OPENVG_PARENT_IMAGE,
+   ST_CONTEXT_RESOURCE_OPENVG_PARENT_IMAGE
 };
 
 /**
index d9a973e3c3ef5c35ed40803b7c5b170dc9c51e16..6c9d03fc5de52603853cc74535335b339e776904 100644 (file)
@@ -5,6 +5,7 @@ LIBNAME = dridrm
 
 LIBRARY_INCLUDES = \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/gallium/state_trackers/dri/common \
        -I$(TOP)/src/mesa/drivers/dri/common \
index 8800b655343c1cf9966c46a21a935afc678227d7..965dc95760fbd4f7d6c46877d012122785f57886 100644 (file)
@@ -10,6 +10,7 @@ if env['dri']:
     env.ParseConfig('pkg-config --cflags --libs libdrm')
 
     env.Append(CPPPATH = [
+        '#/src/mapi',
         '#/src/mesa',
        '#/src/gallium/state_trackers/dri/common',
        '#/src/mesa/drivers/dri/common',
index c0ae71451b2a666200d791cb4ebdf02ccac9bfa1..a1dadeba5e6a07faab4654ea11e4c7eeb2195652 100644 (file)
@@ -8,6 +8,7 @@ LIBRARY_DEFINES = -D__NOT_HAVE_DRM_H
 LIBRARY_INCLUDES = \
        -I../dri \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/gallium/state_trackers/dri/common \
        -I$(TOP)/src/mesa/drivers/dri/common \
index 6bb282d1a4cc4ebb961835aa47d3472dc97f57df..0c5194d6edceb0fae623c5c90e029e2c5d5fead3 100644 (file)
@@ -8,6 +8,7 @@ if env['dri']:
     env = env.Clone()
 
     env.Append(CPPPATH = [
+        '#/src/mapi',
         '#/src/mesa',
        '#/src/gallium/state_trackers/dri/common',
        '#/src/mesa/drivers/dri/common',
index 1768241352f0a7c7aedad70b2010baa9cdfa9287..a3c1bb4346952ac46f4c2336495165da7f12e5e8 100644 (file)
@@ -15,6 +15,7 @@ common_OBJECTS = $(common_SOURCES:.c=.o)
 x11_INCLUDES = \
        -I$(TOP)/src/gallium/drivers \
        -I$(TOP)/src/glx \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        $(X11_CFLAGS) \
        $(shell pkg-config --cflags-only-I libdrm)
index 871c33267ae37a86920636bedc76c81a0d8c268e..d63b81a1c59b868a55a9cbf8416b8b4129bbe00c 100644 (file)
@@ -50,8 +50,8 @@ egl_g3d_init_st(_EGLDriver *drv)
    if (gdrv->api_mask)
       return;
 
+   egl_g3d_init_st_apis(gdrv->stapis);
    for (i = 0; i < ST_API_COUNT; i++) {
-      gdrv->stapis[i] = egl_g3d_create_st_api(i);
       if (gdrv->stapis[i])
          gdrv->api_mask |= egl_g3d_st_api_bit(i);
    }
@@ -581,13 +581,8 @@ static void
 egl_g3d_unload(_EGLDriver *drv)
 {
    struct egl_g3d_driver *gdrv = egl_g3d_driver(drv);
-   EGLint i;
-
-   for (i = 0; i < ST_API_COUNT; i++) {
-      if (gdrv->stapis[i])
-         gdrv->stapis[i]->destroy(gdrv->stapis[i]);
-   }
 
+   egl_g3d_destroy_st_apis();
    egl_g3d_destroy_probe(drv, NULL);
    FREE(gdrv);
 }
index 97445478684f1e772fb63f0359c5d36042e3e4cd..1df57d0777490ccc63cd5cf659e44e23f18e9a11 100644 (file)
  */
 
 #include "util/u_memory.h"
+#include "util/u_string.h"
 #include "util/u_inlines.h"
 #include "util/u_dl.h"
+#include "egldriver.h"
 #include "eglimage.h"
 #include "eglmutex.h"
 
@@ -46,42 +48,160 @@ egl_g3d_st_manager(struct st_manager *smapi)
    return (struct egl_g3d_st_manager *) smapi;
 }
 
-struct st_api *
-egl_g3d_create_st_api(enum st_api_type api)
-{
+static struct egl_g3d_st_module {
+   const char *filename;
    struct util_dl_library *lib;
-   const char *proc_name;
-   struct st_api * (*proc)(void) = NULL;
-
-   switch (api) {
-   case ST_API_OPENGL:
-      proc_name = ST_CREATE_OPENGL_SYMBOL;
-      break;
-   case ST_API_OPENGL_ES1:
-      proc_name = ST_CREATE_OPENGL_ES1_SYMBOL;
-      break;
-   case ST_API_OPENGL_ES2:
-      proc_name = ST_CREATE_OPENGL_ES2_SYMBOL;
-      break;
-   case ST_API_OPENVG:
-      proc_name = ST_CREATE_OPENVG_SYMBOL;
-      break;
-   default:
-      assert(!"Unknown API Type\n");
-      return NULL;
+   struct st_api *stapi;
+} egl_g3d_st_modules[ST_API_COUNT];
+
+static EGLBoolean
+egl_g3d_search_path_callback(const char *dir, size_t len, void *callback_data)
+{
+   struct egl_g3d_st_module *stmod =
+      (struct egl_g3d_st_module *) callback_data;
+   char path[1024];
+   int ret;
+
+   ret = util_snprintf(path, sizeof(path),
+         "%.*s/%s", len, dir, stmod->filename);
+   if (ret > 0 && ret < sizeof(path))
+      stmod->lib = util_dl_open(path);
+
+   return !(stmod->lib);
+}
+
+static boolean
+egl_g3d_load_st_module(struct egl_g3d_st_module *stmod,
+                       const char *filename, const char *procname)
+{
+   struct st_api *(*create_api)(void);
+
+   stmod->filename = filename;
+   if (stmod->filename)
+      _eglSearchPathForEach(egl_g3d_search_path_callback, (void *) stmod);
+   else
+      stmod->lib = util_dl_open(NULL);
+
+   if (stmod->lib) {
+      create_api = (struct st_api *(*)(void))
+         util_dl_get_proc_address(stmod->lib, procname);
+      if (create_api)
+         stmod->stapi = create_api();
+
+      if (!stmod->stapi) {
+         util_dl_close(stmod->lib);
+         stmod->lib = NULL;
+      }
    }
 
-   lib = util_dl_open(NULL);
-   if (lib) {
-      proc = util_dl_get_proc_address(lib, proc_name);
-      debug_printf("%s: %s %p\n", __func__, proc_name, proc);
-      util_dl_close(lib);
+   if (stmod->stapi) {
+      return TRUE;
    }
+   else {
+      stmod->filename = NULL;
+      return FALSE;
+   }
+}
 
-   if (!proc)
-      return NULL;
+void
+egl_g3d_init_st_apis(struct st_api *stapis[ST_API_COUNT])
+{
+   const char *skip_checks[ST_API_COUNT], *symbols[ST_API_COUNT];
+   const char *filenames[ST_API_COUNT][4];
+   struct util_dl_library *self;
+   int num_needed = 0, api;
+
+   self = util_dl_open(NULL);
+
+   /* collect the necessary data for loading modules */
+   for (api = 0; api < ST_API_COUNT; api++) {
+      int count = 0;
+
+      switch (api) {
+      case ST_API_OPENGL:
+         skip_checks[api] = "glColor4d";
+         symbols[api] = ST_CREATE_OPENGL_SYMBOL;
+         filenames[api][count++] = "api_GL.so";
+         break;
+      case ST_API_OPENGL_ES1:
+         skip_checks[api] = "glColor4x";
+         symbols[api] = ST_CREATE_OPENGL_ES1_SYMBOL;
+         filenames[api][count++] = "api_GLESv1_CM.so";
+         filenames[api][count++] = "api_GL.so";
+         break;
+      case ST_API_OPENGL_ES2:
+         skip_checks[api] = "glShaderBinary";
+         symbols[api] = ST_CREATE_OPENGL_ES2_SYMBOL;
+         filenames[api][count++] = "api_GLESv2.so";
+         filenames[api][count++] = "api_GL.so";
+         break;
+      case ST_API_OPENVG:
+         skip_checks[api] = "vgClear";
+         symbols[api] = ST_CREATE_OPENVG_SYMBOL;
+         filenames[api][count++]= "api_OpenVG.so";
+         break;
+      default:
+         assert(!"Unknown API Type\n");
+         skip_checks[api] = NULL;
+         symbols[api] = NULL;
+         break;
+      }
+      filenames[api][count++]= NULL;
+      assert(count < Elements(filenames[api]));
+
+      /* heuristicically decide if the module is needed */
+      if (!self || !skip_checks[api] ||
+          util_dl_get_proc_address(self, skip_checks[api])) {
+         /* unset so the module is not skipped */
+         skip_checks[api] = NULL;
+         num_needed++;
+      }
+   }
+   /* mark all moudles needed if we wrongly decided that none is needed */
+   if (!num_needed)
+      memset(skip_checks, 0, sizeof(skip_checks));
+
+   if (self)
+      util_dl_close(self);
+
+   for (api = 0; api < ST_API_COUNT; api++) {
+      struct egl_g3d_st_module *stmod = &egl_g3d_st_modules[api];
+      const char **p;
+
+      /* skip the module */
+      if (skip_checks[api])
+         continue;
+
+      /* try all filenames, including NULL */
+      for (p = filenames[api]; *p; p++) {
+         if (egl_g3d_load_st_module(stmod, *p, symbols[api]))
+            break;
+      }
+      if (!stmod->stapi)
+         egl_g3d_load_st_module(stmod, NULL, symbols[api]);
 
-   return proc();
+      stapis[api] = stmod->stapi;
+   }
+}
+
+void
+egl_g3d_destroy_st_apis(void)
+{
+   int api;
+
+   for (api = 0; api < ST_API_COUNT; api++) {
+      struct egl_g3d_st_module *stmod = &egl_g3d_st_modules[api];
+
+      if (stmod->stapi) {
+         stmod->stapi->destroy(stmod->stapi);
+         stmod->stapi = NULL;
+      }
+      if (stmod->lib) {
+         util_dl_close(stmod->lib);
+         stmod->lib = NULL;
+      }
+      stmod->filename = NULL;
+   }
 }
 
 static boolean
index c82681a22d8d896a30eadc6017bcdfc3385a4628..ee53799b0297a9103abd8272281c7728afe633a6 100644 (file)
 #include "state_tracker/st_api.h"
 #include "egltypedefs.h"
 
-struct st_api *
-egl_g3d_create_st_api(enum st_api_type api);
+void
+egl_g3d_init_st_apis(struct st_api *stapis[ST_API_COUNT]);
+
+void
+egl_g3d_destroy_st_apis(void);
 
 struct st_manager *
 egl_g3d_create_st_manager(_EGLDisplay *dpy);
diff --git a/src/gallium/state_trackers/es/Makefile b/src/gallium/state_trackers/es/Makefile
deleted file mode 100644 (file)
index 7370634..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-# src/gallium/state_trackers/es/Makefile
-
-# Build the ES 1/2 state tracker libraries
-# This consists of core Mesa ES, plus GL/gallium state tracker.
-
-TOP = ../../../..
-include $(TOP)/configs/current
-
-GLES_1_VERSION_MAJOR = 1
-GLES_1_VERSION_MINOR = 1
-GLES_1_VERSION_PATCH = 0
-
-GLES_2_VERSION_MAJOR = 2
-GLES_2_VERSION_MINOR = 0
-GLES_2_VERSION_PATCH = 0
-
-
-# Maybe move these into configs/default:
-GLES_1_LIB = GLESv1_CM
-GLES_1_LIB_NAME = lib$(GLES_1_LIB).so
-GLES_2_LIB = GLESv2
-GLES_2_LIB_NAME = lib$(GLES_2_LIB).so
-
-
-# These two objects indirectly reference all public functions thanks to the use
-# of _glapi_get_proc_address.
-ES1_OBJECTS = st_es1.o
-ES2_OBJECTS = st_es2.o
-
-
-ES1_LIBS = \
-       $(TOP)/src/mesa/es/libes1gallium.a \
-       $(TOP)/src/mesa/es/libes1api.a
-
-ES2_LIBS = \
-       $(TOP)/src/mesa/es/libes2gallium.a \
-       $(TOP)/src/mesa/es/libes2api.a
-
-SYS_LIBS = -lm -pthread
-
-
-INCLUDE_DIRS = \
-       -I$(TOP)/include \
-       -I$(TOP)/src/mesa \
-       -I$(TOP)/src/gallium/include
-
-.c.o:
-       $(CC) -c $(INCLUDE_DIRS) $(DEFINES) $(CFLAGS) $< -o $@
-
-
-# Default: make both GL ES 1.1 and GL ES 2.0 libraries
-default: $(TOP)/$(LIB_DIR)/$(GLES_1_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLES_2_LIB_NAME)
-
-# Make the shared libs
-$(TOP)/$(LIB_DIR)/$(GLES_1_LIB_NAME): $(ES1_OBJECTS) $(ES1_LIBS) $(GALLIUM_AUXILIARIES)
-       $(MKLIB) -o $(GLES_1_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-               -major $(GLES_1_VERSION_MAJOR) \
-               -minor $(GLES_1_VERSION_MINOR) \
-               -patch $(GLES_1_VERSION_PATCH) \
-               -install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \
-               $(ES1_OBJECTS) $(ES1_LIBS) $(GALLIUM_AUXILIARIES) $(SYS_LIBS)
-
-$(TOP)/$(LIB_DIR)/$(GLES_2_LIB_NAME): $(ES2_OBJECTS) $(ES1_LIBS) $(GALLIUM_AUXILIARIES)
-       $(MKLIB) -o $(GLES_2_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-               -major $(GLES_2_VERSION_MAJOR) \
-               -minor $(GLES_2_VERSION_MINOR) \
-               -patch $(GLES_2_VERSION_PATCH) \
-               -install $(TOP)/$(LIB_DIR) $(MKLIB_OPTIONS) \
-               $(ES2_OBJECTS) $(ES2_LIBS) $(GALLIUM_AUXILIARIES) $(SYS_LIBS)
-
-install: default
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GLES
-       $(INSTALL) -m 644 $(TOP)/include/GLES/*.h $(DESTDIR)$(INSTALL_DIR)/include/GLES
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/GLES2
-       $(INSTALL) -m 644 $(TOP)/include/GLES2/*.h $(DESTDIR)$(INSTALL_DIR)/include/GLES2
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
-       $(MINSTALL) $(TOP)/$(LIB_DIR)/libGLESv1* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
-       $(MINSTALL) $(TOP)/$(LIB_DIR)/libGLESv2* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
-
-clean:
-       -rm -f *.o *~
-       -rm -f $(TOP)/$(LIB_DIR)/$(GLES_1_LIB_NAME)* $(TOP)/$(LIB_DIR)/$(GLES_2_LIB_NAME)*
-
-depend:
diff --git a/src/gallium/state_trackers/es/st_es1.c b/src/gallium/state_trackers/es/st_es1.c
deleted file mode 100644 (file)
index 825fdac..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#include "state_tracker/st_gl_api.h"
-
-PUBLIC struct st_api *
-st_api_create_OpenGL_ES1()
-{
-   return st_gl_api_create();
-}
diff --git a/src/gallium/state_trackers/es/st_es2.c b/src/gallium/state_trackers/es/st_es2.c
deleted file mode 100644 (file)
index 5c773aa..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#include "state_tracker/st_gl_api.h"
-
-PUBLIC struct st_api *
-st_api_create_OpenGL_ES2()
-{
-   /* linker magic creates different versions */
-   return st_gl_api_create();
-}
index 35509fd708ba7a818a155915ec7ae03057b0dce7..84cb36ec36727c8e468955bde4dff4a0e85aaa65 100644 (file)
@@ -5,6 +5,7 @@ LIBNAME = xlib
 
 LIBRARY_INCLUDES = \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        $(X11_CFLAGS)
 
index d6c16ad2f52eb9c965f82e04da79ffc3a3a25743..9df351a276940a53117f381b8adfd5c5705568bb 100644 (file)
@@ -9,6 +9,7 @@ if env['platform'] == 'linux' \
     env = env.Clone()
 
     env.Append(CPPPATH = [
+        '#/src/mapi',
         '#/src/mesa',
         '#/src/mesa/main',
     ])
index bd4a85caa0431825f4f6164361125572a6722999..26fcae78eceeecedf112305019b55df11a412075 100644 (file)
@@ -34,7 +34,6 @@
 #include <string.h>
 #include "GL/glx.h"
 #include "glapi/glapi.h"
-#include "pipe/p_compiler.h"
 
 
 struct name_address_pair {
index aac28cacfdea1425f78b49821cd41182f9a2a321..dce24bc17d61901375126ac6e6127a3ad891023b 100644 (file)
@@ -184,8 +184,7 @@ st_context_create(struct st_device *st_dev)
    {
       struct pipe_rasterizer_state rasterizer;
       memset(&rasterizer, 0, sizeof(rasterizer));
-      rasterizer.front_winding = PIPE_WINDING_CW;
-      rasterizer.cull_mode = PIPE_WINDING_NONE;
+      rasterizer.cull_face = PIPE_FACE_NONE;
       cso_set_rasterizer(st_ctx->cso, &rasterizer);
    }
 
index b871990cd9aa83b538a9747a3515a7ce1c4ff292..e0a87151c43f9776d6d259e162daca144120044f 100644 (file)
@@ -3,16 +3,14 @@
 TOP = ../../../..
 include $(TOP)/configs/current
 
-VG_LIB = OpenVG
-VG_LIB_NAME = lib$(VG_LIB).so
+LIBNAME = vega
 
-VG_MAJOR = 1
-VG_MINOR = 0
-VG_TINY = 0
-
-### Lists of source files, included by Makefiles
+LIBRARY_INCLUDES = \
+       -I$(TOP)/include \
+       -I$(TOP)/src/mapi
 
-VG_SOURCES = \
+C_SOURCES = \
+           api.c           \
            api_context.c   \
            api_filters.c   \
            api_images.c    \
@@ -40,55 +38,4 @@ VG_SOURCES = \
            shader.c \
            shaders_cache.c
 
-VG_OBJECTS = $(VG_SOURCES:.c=.o)
-
-VG_LIBS = $(GALLIUM_AUXILIARIES)
-VG_LIB_DEPS = $(EXTRA_LIB_PATH) -lm
-
-### Include directories
-
-INCLUDE_DIRS = \
-       -I$(TOP)/include \
-       -I$(TOP)/src/gallium/include \
-       -I$(TOP)/src/gallium/auxiliary
-
-
-.c.o:
-       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
-
-default: depend $(TOP)/$(LIB_DIR)/$(VG_LIB_NAME)
-
-# Make the OpenVG library
-$(TOP)/$(LIB_DIR)/$(VG_LIB_NAME): $(VG_OBJECTS) $(VG_LIBS)
-       $(MKLIB) -o $(VG_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-               -major $(VG_MAJOR) \
-               -minor $(VG_MINOR) \
-               -patch $(VG_TINY) \
-               -install $(TOP)/$(LIB_DIR) \
-               $(VG_OBJECTS) $(VG_LIBS) $(VG_LIB_DEPS)
-
-######################################################################
-# Generic stuff
-
-depend: $(VG_SOURCES)
-       @ echo "running $(MKDEP)"
-       @ rm -f depend  # workaround oops on gutsy?!?
-       @ touch depend
-       @ $(MKDEP) $(MKDEP_OPTIONS) $(DEFINES) $(INCLUDE_DIRS) $(VG_SOURCES) \
-               > /dev/null 2>/dev/null
-
-install: default
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/include/VG
-       $(INSTALL) -m 644 $(TOP)/include/VG/*.h $(DESTDIR)$(INSTALL_DIR)/include/VG
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
-       $(MINSTALL) $(TOP)/$(LIB_DIR)/libOpenVG* $(DESTDIR)$(INSTALL_DIR)/$(LIB_DIR)
-
-# Emacs tags
-tags:
-       etags `find . -name \*.[ch]` $(TOP)/include/VG/*.h
-
-clean:
-       rm -f $(VG_OBJECTS)
-       rm -f depend depend.bak
-
-sinclude depend
+include ../../Makefile.template
diff --git a/src/gallium/state_trackers/vega/api.c b/src/gallium/state_trackers/vega/api.c
new file mode 100644 (file)
index 0000000..bf1d374
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * 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 "mapi/mapi.h"
+
+#include "api.h"
+
+static const char vega_spec[] =
+   "1"
+#define MAPI_ABI_ENTRY(ret, name, params) \
+   "\0" #name "\0"
+#define MAPI_ALIAS_ENTRY(alias, ret, name, params) \
+   #name "\0"
+#include "vgapi/vgapi_tmp.h"
+   "\0";
+
+static const mapi_proc vega_procs[] = {
+#define MAPI_ABI_ENTRY(ret, name, params) \
+   (mapi_proc) vega ## name,
+#include "vgapi/vgapi_tmp.h"
+};
+
+static void api_init(void)
+{
+   static boolean initialized = FALSE;
+   if (!initialized) {
+      mapi_init(vega_spec);
+      initialized = TRUE;
+   }
+}
+
+struct mapi_table *api_create_dispatch(void)
+{
+   struct mapi_table *tbl;
+
+   api_init();
+
+   tbl = mapi_table_create();
+   if (tbl)
+      mapi_table_fill(tbl, vega_procs);
+
+   return tbl;
+}
+
+void api_destroy_dispatch(struct mapi_table *tbl)
+{
+   mapi_table_destroy(tbl);
+}
+
+void api_make_dispatch_current(const struct mapi_table *tbl)
+{
+   mapi_table_make_current(tbl);
+}
+
+mapi_proc api_get_proc_address(const char *proc_name)
+{
+   if (!proc_name || proc_name[0] != 'v' || proc_name[1] != 'g')
+      return NULL;
+   proc_name += 2;
+
+   api_init();
+   return mapi_get_proc_address(proc_name);
+}
diff --git a/src/gallium/state_trackers/vega/api.h b/src/gallium/state_trackers/vega/api.h
new file mode 100644 (file)
index 0000000..955508d
--- /dev/null
@@ -0,0 +1,51 @@
+/*
+ * 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 API_H
+#define API_H
+
+#include "VG/openvg.h"
+#include "VG/vgext.h"
+#include "vg_manager.h"
+
+/* declare the prototypes */
+#define MAPI_ABI_ENTRY(ret, name, params) \
+   ret VG_API_ENTRY vega ## name params;
+#include "vgapi/vgapi_tmp.h"
+
+struct mapi_table;
+
+struct mapi_table *api_create_dispatch(void);
+
+void api_destroy_dispatch(struct mapi_table *tbl);
+
+void api_make_dispatch_current(const struct mapi_table *tbl);
+
+st_proc_t api_get_proc_address(const char *proc_name);
+
+#endif /* API_H */
index eb2fbe26e7fc9dc1881675df74f869bb2d1924b2..0d04d8e8718696ed3e23b29a6e70eab829222604 100644 (file)
 
 #include "vg_manager.h"
 #include "vg_context.h"
+#include "api.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_screen.h"
 
-VGErrorCode vgGetError(void)
+VGErrorCode vegaGetError(void)
 {
    struct vg_context *ctx = vg_current_context();
    VGErrorCode error = VG_NO_CONTEXT_ERROR;
@@ -46,7 +47,7 @@ VGErrorCode vgGetError(void)
    return error;
 }
 
-void vgFlush(void)
+void vegaFlush(void)
 {
    struct vg_context *ctx = vg_current_context();
    struct pipe_context *pipe;
@@ -60,7 +61,7 @@ void vgFlush(void)
    vg_manager_flush_frontbuffer(ctx);
 }
 
-void vgFinish(void)
+void vegaFinish(void)
 {
    struct vg_context *ctx = vg_current_context();
    struct pipe_fence_handle *fence = NULL;
index b1c08af9382c4b5e52cb8adf2d3399eb17a78c20..144fb8f323d881479f5c39bd7eeab9276bc30847 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "vg_context.h"
 #include "image.h"
+#include "api.h"
 #include "renderer.h"
 #include "shaders_cache.h"
 #include "st_inlines.h"
@@ -361,8 +362,8 @@ static void execute_filter(struct vg_context *ctx,
    pipe_surface_reference(&dst_surf, NULL);
 }
 
-void vgColorMatrix(VGImage dst, VGImage src,
-                   const VGfloat * matrix)
+void vegaColorMatrix(VGImage dst, VGImage src,
+                     const VGfloat * matrix)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *d, *s;
@@ -403,13 +404,13 @@ static VGfloat texture_offset(VGfloat width, VGint kernelSize, VGint current, VG
    return diff / width;
 }
 
-void vgConvolve(VGImage dst, VGImage src,
-                VGint kernelWidth, VGint kernelHeight,
-                VGint shiftX, VGint shiftY,
-                const VGshort * kernel,
-                VGfloat scale,
-                VGfloat bias,
-                VGTilingMode tilingMode)
+void vegaConvolve(VGImage dst, VGImage src,
+                  VGint kernelWidth, VGint kernelHeight,
+                  VGint shiftX, VGint shiftY,
+                  const VGshort * kernel,
+                  VGfloat scale,
+                  VGfloat bias,
+                  VGTilingMode tilingMode)
 {
    struct vg_context *ctx = vg_current_context();
    VGfloat *buffer;
@@ -508,15 +509,15 @@ void vgConvolve(VGImage dst, VGImage src,
    free(buffer);
 }
 
-void vgSeparableConvolve(VGImage dst, VGImage src,
-                         VGint kernelWidth,
-                         VGint kernelHeight,
-                         VGint shiftX, VGint shiftY,
-                         const VGshort * kernelX,
-                         const VGshort * kernelY,
-                         VGfloat scale,
-                         VGfloat bias,
-                         VGTilingMode tilingMode)
+void vegaSeparableConvolve(VGImage dst, VGImage src,
+                           VGint kernelWidth,
+                           VGint kernelHeight,
+                           VGint shiftX, VGint shiftY,
+                           const VGshort * kernelX,
+                           const VGshort * kernelY,
+                           VGfloat scale,
+                           VGfloat bias,
+                           VGTilingMode tilingMode)
 {
    struct vg_context *ctx = vg_current_context();
    VGshort *kernel;
@@ -600,10 +601,10 @@ static void compute_gaussian_kernel(VGfloat *kernel,
    }
 }
 
-void vgGaussianBlur(VGImage dst, VGImage src,
-                    VGfloat stdDeviationX,
-                    VGfloat stdDeviationY,
-                    VGTilingMode tilingMode)
+void vegaGaussianBlur(VGImage dst, VGImage src,
+                      VGfloat stdDeviationX,
+                      VGfloat stdDeviationY,
+                      VGTilingMode tilingMode)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *d, *s;
@@ -699,13 +700,13 @@ void vgGaussianBlur(VGImage dst, VGImage src,
    free(kernel);
 }
 
-void vgLookup(VGImage dst, VGImage src,
-              const VGubyte * redLUT,
-              const VGubyte * greenLUT,
-              const VGubyte * blueLUT,
-              const VGubyte * alphaLUT,
-              VGboolean outputLinear,
-              VGboolean outputPremultiplied)
+void vegaLookup(VGImage dst, VGImage src,
+                const VGubyte * redLUT,
+                const VGubyte * greenLUT,
+                const VGubyte * blueLUT,
+                const VGubyte * alphaLUT,
+                VGboolean outputLinear,
+                VGboolean outputPremultiplied)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *d, *s;
@@ -758,11 +759,11 @@ void vgLookup(VGImage dst, VGImage src,
    pipe_sampler_view_reference(&lut_texture_view, NULL);
 }
 
-void vgLookupSingle(VGImage dst, VGImage src,
-                    const VGuint * lookupTable,
-                    VGImageChannel sourceChannel,
-                    VGboolean outputLinear,
-                    VGboolean outputPremultiplied)
+void vegaLookupSingle(VGImage dst, VGImage src,
+                      const VGuint * lookupTable,
+                      VGImageChannel sourceChannel,
+                      VGboolean outputLinear,
+                      VGboolean outputPremultiplied)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *d, *s;
index 6c7fd3b346c387d1f8ed196c429ec8587cce5b45..547508f815a334488b5ffb38e76c250eea085632 100644 (file)
@@ -32,6 +32,7 @@
 #include "vg_translate.h"
 #include "api_consts.h"
 #include "image.h"
+#include "api.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_screen.h"
@@ -92,9 +93,9 @@ static INLINE VGboolean supported_image_format(VGImageFormat format)
    return VG_FALSE;
 }
 
-VGImage vgCreateImage(VGImageFormat format,
-                      VGint width, VGint height,
-                      VGbitfield allowedQuality)
+VGImage vegaCreateImage(VGImageFormat format,
+                        VGint width, VGint height,
+                        VGbitfield allowedQuality)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -126,7 +127,7 @@ VGImage vgCreateImage(VGImageFormat format,
    return (VGImage)image_create(format, width, height);
 }
 
-void vgDestroyImage(VGImage image)
+void vegaDestroyImage(VGImage image)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *img = (struct vg_image *)image;
@@ -142,9 +143,9 @@ void vgDestroyImage(VGImage image)
    image_destroy(img);
 }
 
-void vgClearImage(VGImage image,
-                  VGint x, VGint y,
-                  VGint width, VGint height)
+void vegaClearImage(VGImage image,
+                    VGint x, VGint y,
+                    VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *img;
@@ -167,12 +168,12 @@ void vgClearImage(VGImage image,
 
 }
 
-void vgImageSubData(VGImage image,
-                    const void * data,
-                    VGint dataStride,
-                    VGImageFormat dataFormat,
-                    VGint x, VGint y,
-                    VGint width, VGint height)
+void vegaImageSubData(VGImage image,
+                      const void * data,
+                      VGint dataStride,
+                      VGImageFormat dataFormat,
+                      VGint x, VGint y,
+                      VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *img;
@@ -195,12 +196,12 @@ void vgImageSubData(VGImage image,
                   x, y, width, height);
 }
 
-void vgGetImageSubData(VGImage image,
-                       void * data,
-                       VGint dataStride,
-                       VGImageFormat dataFormat,
-                       VGint x, VGint y,
-                       VGint width, VGint height)
+void vegaGetImageSubData(VGImage image,
+                         void * data,
+                         VGint dataStride,
+                         VGImageFormat dataFormat,
+                         VGint x, VGint y,
+                         VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *img;
@@ -222,9 +223,9 @@ void vgGetImageSubData(VGImage image,
                       x, y, width, height);
 }
 
-VGImage vgChildImage(VGImage parent,
-                     VGint x, VGint y,
-                     VGint width, VGint height)
+VGImage vegaChildImage(VGImage parent,
+                       VGint x, VGint y,
+                       VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *p;
@@ -252,7 +253,7 @@ VGImage vgChildImage(VGImage parent,
    return (VGImage)image_child_image(p, x, y, width, height);
 }
 
-VGImage vgGetParent(VGImage image)
+VGImage vegaGetParent(VGImage image)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *img;
@@ -269,10 +270,10 @@ VGImage vgGetParent(VGImage image)
       return image;
 }
 
-void vgCopyImage(VGImage dst, VGint dx, VGint dy,
-                 VGImage src, VGint sx, VGint sy,
-                 VGint width, VGint height,
-                 VGboolean dither)
+void vegaCopyImage(VGImage dst, VGint dx, VGint dy,
+                   VGImage src, VGint sx, VGint sy,
+                   VGint width, VGint height,
+                   VGboolean dither)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -291,7 +292,7 @@ void vgCopyImage(VGImage dst, VGint dx, VGint dy,
               width, height, dither);
 }
 
-void vgDrawImage(VGImage image)
+void vegaDrawImage(VGImage image)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -307,9 +308,9 @@ void vgDrawImage(VGImage image)
    image_draw((struct vg_image*)image);
 }
 
-void vgSetPixels(VGint dx, VGint dy,
-                 VGImage src, VGint sx, VGint sy,
-                 VGint width, VGint height)
+void vegaSetPixels(VGint dx, VGint dy,
+                   VGImage src, VGint sx, VGint sy,
+                   VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -327,9 +328,9 @@ void vgSetPixels(VGint dx, VGint dy,
                     height);
 }
 
-void vgGetPixels(VGImage dst, VGint dx, VGint dy,
-                 VGint sx, VGint sy,
-                 VGint width, VGint height)
+void vegaGetPixels(VGImage dst, VGint dx, VGint dy,
+                   VGint sx, VGint sy,
+                   VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_image *img;
@@ -349,10 +350,10 @@ void vgGetPixels(VGImage dst, VGint dx, VGint dy,
                     sx, sy, width, height);
 }
 
-void vgWritePixels(const void * data, VGint dataStride,
-                   VGImageFormat dataFormat,
-                   VGint dx, VGint dy,
-                   VGint width, VGint height)
+void vegaWritePixels(const void * data, VGint dataStride,
+                     VGImageFormat dataFormat,
+                     VGint dx, VGint dy,
+                     VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct pipe_context *pipe = ctx->pipe;
@@ -390,10 +391,10 @@ void vgWritePixels(const void * data, VGint dataStride,
    pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE, NULL);
 }
 
-void vgReadPixels(void * data, VGint dataStride,
-                  VGImageFormat dataFormat,
-                  VGint sx, VGint sy,
-                  VGint width, VGint height)
+void vegaReadPixels(void * data, VGint dataStride,
+                    VGImageFormat dataFormat,
+                    VGint sx, VGint sy,
+                    VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct pipe_context *pipe = ctx->pipe;
@@ -461,9 +462,9 @@ void vgReadPixels(void * data, VGint dataStride,
    }
 }
 
-void vgCopyPixels(VGint dx, VGint dy,
-                  VGint sx, VGint sy,
-                  VGint width, VGint height)
+void vegaCopyPixels(VGint dx, VGint dy,
+                    VGint sx, VGint sy,
+                    VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct pipe_framebuffer_state *fb = &ctx->state.g3d.fb;
index 7c28ea5c87292adb926047a704a86e9850f74564..94c1ff5375f505615abf1d335c09ee2a0b5c2cd4 100644 (file)
@@ -28,6 +28,7 @@
 
 #include "mask.h"
 #include "renderer.h"
+#include "api.h"
 
 #include "vg_context.h"
 #include "pipe/p_context.h"
@@ -37,7 +38,6 @@
 #include "util/u_draw_quad.h"
 #include "util/u_memory.h"
 
-
 #define DISABLE_1_1_MASKING 1
 
 /**
@@ -151,9 +151,9 @@ clear_with_quad(struct vg_context *st, float x0, float y0,
 }
 
 
-void vgMask(VGHandle mask, VGMaskOperation operation,
-            VGint x, VGint y,
-            VGint width, VGint height)
+void vegaMask(VGHandle mask, VGMaskOperation operation,
+              VGint x, VGint y,
+              VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -189,8 +189,8 @@ void vgMask(VGHandle mask, VGMaskOperation operation,
    }
 }
 
-void vgClear(VGint x, VGint y,
-             VGint width, VGint height)
+void vegaClear(VGint x, VGint y,
+               VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct pipe_framebuffer_state *fb;
@@ -225,9 +225,9 @@ void vgClear(VGint x, VGint y,
 #ifdef OPENVG_VERSION_1_1
 
 
-void vgRenderToMask(VGPath path,
-                    VGbitfield paintModes,
-                    VGMaskOperation operation)
+void vegaRenderToMask(VGPath path,
+                      VGbitfield paintModes,
+                      VGMaskOperation operation)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -258,7 +258,7 @@ void vgRenderToMask(VGPath path,
    mask_render_to((struct path *)path, paintModes, operation);
 }
 
-VGMaskLayer vgCreateMaskLayer(VGint width, VGint height)
+VGMaskLayer vegaCreateMaskLayer(VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -272,7 +272,7 @@ VGMaskLayer vgCreateMaskLayer(VGint width, VGint height)
    return (VGMaskLayer)mask_layer_create(width, height);
 }
 
-void vgDestroyMaskLayer(VGMaskLayer maskLayer)
+void vegaDestroyMaskLayer(VGMaskLayer maskLayer)
 {
    struct vg_mask_layer *mask = 0;
    struct vg_context *ctx = vg_current_context();
@@ -290,10 +290,10 @@ void vgDestroyMaskLayer(VGMaskLayer maskLayer)
    mask_layer_destroy(mask);
 }
 
-void vgFillMaskLayer(VGMaskLayer maskLayer,
-                     VGint x, VGint y,
-                     VGint width, VGint height,
-                     VGfloat value)
+void vegaFillMaskLayer(VGMaskLayer maskLayer,
+                       VGint x, VGint y,
+                       VGint width, VGint height,
+                       VGfloat value)
 {
    struct vg_mask_layer *mask = 0;
    struct vg_context *ctx = vg_current_context();
@@ -336,10 +336,10 @@ void vgFillMaskLayer(VGMaskLayer maskLayer,
    mask_layer_fill(mask, x, y, width, height, value);
 }
 
-void vgCopyMask(VGMaskLayer maskLayer,
-                VGint sx, VGint sy,
-                VGint dx, VGint dy,
-                VGint width, VGint height)
+void vegaCopyMask(VGMaskLayer maskLayer,
+                  VGint sx, VGint sy,
+                  VGint dx, VGint dy,
+                  VGint width, VGint height)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_mask_layer *mask = 0;
index 78ba0bc1103082d7f6db87f9a8a4e834cc490fd5..e648549745b941b2813f17dd0473386a218fd481 100644 (file)
 #include "VG/openvg.h"
 
 #include "vg_context.h"
+#include "api.h"
 
 /* Hardware Queries */
-VGHardwareQueryResult vgHardwareQuery(VGHardwareQueryType key,
-                                      VGint setting)
+VGHardwareQueryResult vegaHardwareQuery(VGHardwareQueryType key,
+                                        VGint setting)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -58,7 +59,7 @@ VGHardwareQueryResult vgHardwareQuery(VGHardwareQueryType key,
 }
 
 /* Renderer and Extension Information */
-const VGubyte *vgGetString(VGStringID name)
+const VGubyte *vegaGetString(VGStringID name)
 {
    struct vg_context *ctx = vg_current_context();
    static const VGubyte *vendor = (VGubyte *)"Tungsten Graphics, Inc";
index dd3ac5bdb09f217c0044c4d431b428545167a56b..d88341b04ff41b2e62212d8720773ee4edc9080f 100644 (file)
 #include "vg_context.h"
 #include "paint.h"
 #include "image.h"
+#include "api.h"
 
-VGPaint vgCreatePaint(void)
+VGPaint vegaCreatePaint(void)
 {
    return (VGPaint) paint_create(vg_current_context());
 }
 
-void vgDestroyPaint(VGPaint p)
+void vegaDestroyPaint(VGPaint p)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_paint *paint;
@@ -49,7 +50,7 @@ void vgDestroyPaint(VGPaint p)
    paint_destroy(paint);
 }
 
-void vgSetPaint(VGPaint paint, VGbitfield paintModes)
+void vegaSetPaint(VGPaint paint, VGbitfield paintModes)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -74,7 +75,7 @@ void vgSetPaint(VGPaint paint, VGbitfield paintModes)
    }
 }
 
-VGPaint vgGetPaint(VGPaintMode paintMode)
+VGPaint vegaGetPaint(VGPaintMode paintMode)
 {
    struct vg_context *ctx = vg_current_context();
    VGPaint paint = VG_INVALID_HANDLE;
@@ -95,7 +96,7 @@ VGPaint vgGetPaint(VGPaintMode paintMode)
    return paint;
 }
 
-void vgSetColor(VGPaint paint, VGuint rgba)
+void vegaSetColor(VGPaint paint, VGuint rgba)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -114,7 +115,7 @@ void vgSetColor(VGPaint paint, VGuint rgba)
    }
 }
 
-VGuint vgGetColor(VGPaint paint)
+VGuint vegaGetColor(VGPaint paint)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_paint *p;
@@ -134,7 +135,7 @@ VGuint vgGetColor(VGPaint paint)
    return paint_colori(p);
 }
 
-void vgPaintPattern(VGPaint paint, VGImage pattern)
+void vegaPaintPattern(VGPaint paint, VGImage pattern)
 {
    struct vg_context *ctx = vg_current_context();
 
index db77fd9cb0553898d5d34893423b5004fc768b95..a10b009e6314440728ddbdf0b6e6075ffd982db9 100644 (file)
@@ -32,6 +32,7 @@
 #include "image.h"
 #include "matrix.h"
 #include "api_consts.h"
+#include "api.h"
 
 #include "pipe/p_compiler.h"
 #include "util/u_pointer.h"
@@ -63,7 +64,7 @@ static INLINE VGboolean count_in_bounds(VGParamType type, VGint count)
    }
 }
 
-void vgSetf (VGParamType type, VGfloat value)
+void vegaSetf (VGParamType type, VGfloat value)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_state *state = current_state();
@@ -123,7 +124,7 @@ void vgSetf (VGParamType type, VGfloat value)
    vg_set_error(ctx, error);
 }
 
-void vgSeti (VGParamType type, VGint value)
+void vegaSeti (VGParamType type, VGint value)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_state *state = current_state();
@@ -254,8 +255,8 @@ void vgSeti (VGParamType type, VGint value)
    vg_set_error(ctx, error);
 }
 
-void vgSetfv(VGParamType type, VGint count,
-             const VGfloat * values)
+void vegaSetfv(VGParamType type, VGint count,
+               const VGfloat * values)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_state *state = current_state();
@@ -382,8 +383,8 @@ void vgSetfv(VGParamType type, VGint count,
    vg_set_error(ctx, error);
 }
 
-void vgSetiv(VGParamType type, VGint count,
-             const VGint * values)
+void vegaSetiv(VGParamType type, VGint count,
+               const VGint * values)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_state *state = current_state();
@@ -506,7 +507,7 @@ void vgSetiv(VGParamType type, VGint count,
    }
 }
 
-VGfloat vgGetf(VGParamType type)
+VGfloat vegaGetf(VGParamType type)
 {
    struct vg_context *ctx = vg_current_context();
    const struct vg_state *state = current_state();
@@ -568,7 +569,7 @@ VGfloat vgGetf(VGParamType type)
    return value;
 }
 
-VGint vgGeti(VGParamType type)
+VGint vegaGeti(VGParamType type)
 {
    const struct vg_state *state = current_state();
    struct vg_context *ctx = vg_current_context();
@@ -683,7 +684,7 @@ VGint vgGeti(VGParamType type)
    return value;
 }
 
-VGint vgGetVectorSize(VGParamType type)
+VGint vegaGetVectorSize(VGParamType type)
 {
    struct vg_context *ctx = vg_current_context();
    const struct vg_state *state = current_state();
@@ -757,8 +758,8 @@ VGint vgGetVectorSize(VGParamType type)
    }
 }
 
-void vgGetfv(VGParamType type, VGint count,
-             VGfloat * values)
+void vegaGetfv(VGParamType type, VGint count,
+               VGfloat * values)
 {
    const struct vg_state *state = current_state();
    struct vg_context *ctx = vg_current_context();
@@ -858,8 +859,8 @@ void vgGetfv(VGParamType type, VGint count,
    }
 }
 
-void vgGetiv(VGParamType type, VGint count,
-             VGint * values)
+void vegaGetiv(VGParamType type, VGint count,
+               VGint * values)
 {
    const struct vg_state *state = current_state();
    struct vg_context *ctx = vg_current_context();
@@ -964,9 +965,9 @@ void vgGetiv(VGParamType type, VGint count,
    }
 }
 
-void vgSetParameterf(VGHandle object,
-                     VGint paramType,
-                     VGfloat value)
+void vegaSetParameterf(VGHandle object,
+                       VGint paramType,
+                       VGfloat value)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1018,9 +1019,9 @@ void vgSetParameterf(VGHandle object,
    }
 }
 
-void vgSetParameteri(VGHandle object,
-                     VGint paramType,
-                     VGint value)
+void vegaSetParameteri(VGHandle object,
+                       VGint paramType,
+                       VGint value)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1093,10 +1094,10 @@ void vgSetParameteri(VGHandle object,
    }
 }
 
-void vgSetParameterfv(VGHandle object,
-                      VGint paramType,
-                      VGint count,
-                      const VGfloat * values)
+void vegaSetParameterfv(VGHandle object,
+                        VGint paramType,
+                        VGint count,
+                        const VGfloat * values)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1206,10 +1207,10 @@ void vgSetParameterfv(VGHandle object,
    }
 }
 
-void vgSetParameteriv(VGHandle object,
-                      VGint paramType,
-                      VGint count,
-                      const VGint * values)
+void vegaSetParameteriv(VGHandle object,
+                        VGint paramType,
+                        VGint count,
+                        const VGint * values)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1311,8 +1312,8 @@ void vgSetParameteriv(VGHandle object,
    }
 }
 
-VGint vgGetParameterVectorSize(VGHandle object,
-                               VGint paramType)
+VGint vegaGetParameterVectorSize(VGHandle object,
+                                 VGint paramType)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1367,8 +1368,8 @@ VGint vgGetParameterVectorSize(VGHandle object,
 }
 
 
-VGfloat vgGetParameterf(VGHandle object,
-                        VGint paramType)
+VGfloat vegaGetParameterf(VGHandle object,
+                          VGint paramType)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1424,8 +1425,8 @@ VGfloat vgGetParameterf(VGHandle object,
    return 0;
 }
 
-VGint vgGetParameteri(VGHandle object,
-                      VGint paramType)
+VGint vegaGetParameteri(VGHandle object,
+                        VGint paramType)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1511,10 +1512,10 @@ VGint vgGetParameteri(VGHandle object,
    return 0;
 }
 
-void vgGetParameterfv(VGHandle object,
-                      VGint paramType,
-                      VGint count,
-                      VGfloat * values)
+void vegaGetParameterfv(VGHandle object,
+                        VGint paramType,
+                        VGint count,
+                        VGfloat * values)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
@@ -1598,10 +1599,10 @@ void vgGetParameterfv(VGHandle object,
    }
 }
 
-void vgGetParameteriv(VGHandle object,
-                      VGint paramType,
-                      VGint count,
-                      VGint * values)
+void vegaGetParameteriv(VGHandle object,
+                        VGint paramType,
+                        VGint count,
+                        VGint * values)
 {
    struct vg_context *ctx = vg_current_context();
    void *ptr = (void*)object;
index 58ebb3b60eaf3c24d94be8e68944aeab1ae091cd..6c9a2e8d65822d8304d7014030df2da13cd4371d 100644 (file)
 #include "path.h"
 #include "polygon.h"
 #include "paint.h"
+#include "api.h"
 
 #include "pipe/p_context.h"
 #include "util/u_inlines.h"
 #include "util/u_draw_quad.h"
 
-VGPath vgCreatePath(VGint pathFormat,
-                    VGPathDatatype datatype,
-                    VGfloat scale, VGfloat bias,
-                    VGint segmentCapacityHint,
-                    VGint coordCapacityHint,
-                    VGbitfield capabilities)
+VGPath vegaCreatePath(VGint pathFormat,
+                      VGPathDatatype datatype,
+                      VGfloat scale, VGfloat bias,
+                      VGint segmentCapacityHint,
+                      VGint coordCapacityHint,
+                      VGbitfield capabilities)
 {
    struct vg_context *ctx = vg_current_context();
 
@@ -63,7 +64,7 @@ VGPath vgCreatePath(VGint pathFormat,
                               capabilities);
 }
 
-void vgClearPath(VGPath path, VGbitfield capabilities)
+void vegaClearPath(VGPath path, VGbitfield capabilities)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -77,7 +78,7 @@ void vgClearPath(VGPath path, VGbitfield capabilities)
    path_clear(p, capabilities);
 }
 
-void vgDestroyPath(VGPath p)
+void vegaDestroyPath(VGPath p)
 {
    struct path *path = 0;
    struct vg_context *ctx = vg_current_context();
@@ -91,8 +92,8 @@ void vgDestroyPath(VGPath p)
    path_destroy(path);
 }
 
-void vgRemovePathCapabilities(VGPath path,
-                              VGbitfield capabilities)
+void vegaRemovePathCapabilities(VGPath path,
+                                VGbitfield capabilities)
 {
    struct vg_context *ctx = vg_current_context();
    VGbitfield current;
@@ -109,7 +110,7 @@ void vgRemovePathCapabilities(VGPath path,
                              (~(capabilities & VG_PATH_CAPABILITY_ALL))));
 }
 
-VGbitfield vgGetPathCapabilities(VGPath path)
+VGbitfield vegaGetPathCapabilities(VGPath path)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -122,7 +123,7 @@ VGbitfield vgGetPathCapabilities(VGPath path)
    return path_capabilities(p);
 }
 
-void vgAppendPath(VGPath dstPath, VGPath srcPath)
+void vegaAppendPath(VGPath dstPath, VGPath srcPath)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *src, *dst;
@@ -142,10 +143,10 @@ void vgAppendPath(VGPath dstPath, VGPath srcPath)
    path_append_path(dst, src);
 }
 
-void vgAppendPathData(VGPath dstPath,
-                      VGint numSegments,
-                      const VGubyte * pathSegments,
-                      const void * pathData)
+void vegaAppendPathData(VGPath dstPath,
+                        VGint numSegments,
+                        const VGubyte * pathSegments,
+                        const void * pathData)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -185,10 +186,10 @@ void vgAppendPathData(VGPath dstPath,
    path_append_data(p, numSegments, pathSegments, pathData);
 }
 
-void vgModifyPathCoords(VGPath dstPath,
-                        VGint startIndex,
-                        VGint numSegments,
-                        const void * pathData)
+void vegaModifyPathCoords(VGPath dstPath,
+                          VGint startIndex,
+                          VGint numSegments,
+                          const void * pathData)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -220,7 +221,7 @@ void vgModifyPathCoords(VGPath dstPath,
    path_modify_coords(p, startIndex, numSegments, pathData);
 }
 
-void vgTransformPath(VGPath dstPath, VGPath srcPath)
+void vegaTransformPath(VGPath dstPath, VGPath srcPath)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *src = 0, *dst = 0;
@@ -240,10 +241,10 @@ void vgTransformPath(VGPath dstPath, VGPath srcPath)
    path_transform(dst, src);
 }
 
-VGboolean vgInterpolatePath(VGPath dstPath,
-                            VGPath startPath,
-                            VGPath endPath,
-                            VGfloat amount)
+VGboolean vegaInterpolatePath(VGPath dstPath,
+                              VGPath startPath,
+                              VGPath endPath,
+                              VGfloat amount)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *start = 0, *dst = 0, *end = 0;
@@ -269,9 +270,9 @@ VGboolean vgInterpolatePath(VGPath dstPath,
                            start, end, amount);
 }
 
-VGfloat vgPathLength(VGPath path,
-                     VGint startSegment,
-                     VGint numSegments)
+VGfloat vegaPathLength(VGPath path,
+                       VGint startSegment,
+                       VGint numSegments)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -302,13 +303,13 @@ VGfloat vgPathLength(VGPath path,
    return path_length(p, startSegment, numSegments);
 }
 
-void vgPointAlongPath(VGPath path,
-                      VGint startSegment,
-                      VGint numSegments,
-                      VGfloat distance,
-                      VGfloat * x, VGfloat * y,
-                      VGfloat * tangentX,
-                      VGfloat * tangentY)
+void vegaPointAlongPath(VGPath path,
+                        VGint startSegment,
+                        VGint numSegments,
+                        VGfloat distance,
+                        VGfloat * x, VGfloat * y,
+                        VGfloat * tangentX,
+                        VGfloat * tangentY)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -362,11 +363,11 @@ void vgPointAlongPath(VGPath path,
    }
 }
 
-void vgPathBounds(VGPath path,
-                  VGfloat * minX,
-                  VGfloat * minY,
-                  VGfloat * width,
-                  VGfloat * height)
+void vegaPathBounds(VGPath path,
+                    VGfloat * minX,
+                    VGfloat * minY,
+                    VGfloat * width,
+                    VGfloat * height)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -399,11 +400,11 @@ void vgPathBounds(VGPath path,
    path_bounding_rect(p, minX, minY, width, height);
 }
 
-void vgPathTransformedBounds(VGPath path,
-                             VGfloat * minX,
-                             VGfloat * minY,
-                             VGfloat * width,
-                             VGfloat * height)
+void vegaPathTransformedBounds(VGPath path,
+                               VGfloat * minX,
+                               VGfloat * minY,
+                               VGfloat * width,
+                               VGfloat * height)
 {
    struct vg_context *ctx = vg_current_context();
    struct path *p = 0;
@@ -466,7 +467,7 @@ void vgPathTransformedBounds(VGPath path,
 }
 
 
-void vgDrawPath(VGPath path, VGbitfield paintModes)
+void vegaDrawPath(VGPath path, VGbitfield paintModes)
 {
    struct vg_context *ctx = vg_current_context();
 
index d8411cf3e871a451716121e6ba78351166056110..b35f3be90ab1cb2bc1f561312656e58609dadc25 100644 (file)
@@ -27,6 +27,7 @@
 #include "VG/openvg.h"
 
 #include "vg_context.h"
+#include "api.h"
 
 #include "util/u_memory.h"
 
@@ -39,7 +40,7 @@ struct vg_font {
    VGint num_glyphs;
 };
 
-VGFont vgCreateFont(VGint glyphCapacityHint)
+VGFont vegaCreateFont(VGint glyphCapacityHint)
 {
    struct vg_font *font = 0;
    struct vg_context *ctx = vg_current_context();
@@ -55,7 +56,7 @@ VGFont vgCreateFont(VGint glyphCapacityHint)
    return (VGFont)font;
 }
 
-void vgDestroyFont(VGFont f)
+void vegaDestroyFont(VGFont f)
 {
    struct vg_font *font = (struct vg_font *)f;
    struct vg_context *ctx = vg_current_context();
@@ -69,12 +70,12 @@ void vgDestroyFont(VGFont f)
    /*free(font);*/
 }
 
-void vgSetGlyphToPath(VGFont font,
-                      VGuint glyphIndex,
-                      VGPath path,
-                      VGboolean isHinted,
-                      VGfloat glyphOrigin [2],
-                      VGfloat escapement[2])
+void vegaSetGlyphToPath(VGFont font,
+                        VGuint glyphIndex,
+                        VGPath path,
+                        VGboolean isHinted,
+                        VGfloat glyphOrigin [2],
+                        VGfloat escapement[2])
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_object *pathObj;
@@ -106,11 +107,11 @@ void vgSetGlyphToPath(VGFont font,
    ++f->num_glyphs;
 }
 
-void vgSetGlyphToImage(VGFont font,
-                       VGuint glyphIndex,
-                       VGImage image,
-                       VGfloat glyphOrigin [2],
-                       VGfloat escapement[2])
+void vegaSetGlyphToImage(VGFont font,
+                         VGuint glyphIndex,
+                         VGImage image,
+                         VGfloat glyphOrigin [2],
+                         VGfloat escapement[2])
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_object *img_obj;
@@ -153,8 +154,8 @@ static INLINE VGboolean font_contains_glyph(struct vg_font *font,
    return VG_FALSE;
 }
 
-void vgClearGlyph(VGFont font,
-                  VGuint glyphIndex)
+void vegaClearGlyph(VGFont font,
+                    VGuint glyphIndex)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_font *f;
@@ -184,10 +185,10 @@ void vgClearGlyph(VGFont font,
    }
 }
 
-void vgDrawGlyph(VGFont font,
-                 VGuint glyphIndex,
-                 VGbitfield paintModes,
-                 VGboolean allowAutoHinting)
+void vegaDrawGlyph(VGFont font,
+                   VGuint glyphIndex,
+                   VGbitfield paintModes,
+                   VGboolean allowAutoHinting)
 {
    struct vg_context *ctx = vg_current_context();
    struct vg_font *f;
@@ -211,13 +212,13 @@ void vgDrawGlyph(VGFont font,
    }
 }
 
-void vgDrawGlyphs(VGFont font,
-                  VGint glyphCount,
-                  VGuint *glyphIndices,
-                  VGfloat *adjustments_x,
-                  VGfloat *adjustments_y,
-                  VGbitfield paintModes,
-                  VGboolean allowAutoHinting)
+void vegaDrawGlyphs(VGFont font,
+                    VGint glyphCount,
+                    VGuint *glyphIndices,
+                    VGfloat *adjustments_x,
+                    VGfloat *adjustments_y,
+                    VGbitfield paintModes,
+                    VGboolean allowAutoHinting)
 {
    struct vg_context *ctx = vg_current_context();
    VGint i;
index 763a5ec415c1cf0068e8a844295c806d6c5c14ca..0a40fc69b954133c77216292c587142472717e91 100644 (file)
 #include "vg_context.h"
 
 #include "matrix.h"
+#include "api.h"
 
-void vgLoadIdentity(void)
+void vegaLoadIdentity(void)
 {
    struct vg_context *ctx = vg_current_context();
    struct  matrix *mat = vg_state_matrix(&ctx->state.vg);
    matrix_load_identity(mat);
 }
 
-void vgLoadMatrix(const VGfloat * m)
+void vegaLoadMatrix(const VGfloat * m)
 {
    struct vg_context *ctx = vg_current_context();
    struct  matrix *mat;
@@ -59,7 +60,7 @@ void vgLoadMatrix(const VGfloat * m)
    }
 }
 
-void vgGetMatrix(VGfloat * m)
+void vegaGetMatrix(VGfloat * m)
 {
    struct vg_context *ctx = vg_current_context();
    struct matrix *mat;
@@ -76,7 +77,7 @@ void vgGetMatrix(VGfloat * m)
    memcpy(m, mat->m, sizeof(VGfloat)*9);
 }
 
-void vgMultMatrix(const VGfloat * m)
+void vegaMultMatrix(const VGfloat * m)
 {
    struct vg_context *ctx = vg_current_context();
    struct matrix *dst, src;
@@ -99,28 +100,28 @@ void vgMultMatrix(const VGfloat * m)
 
 }
 
-void vgTranslate(VGfloat tx, VGfloat ty)
+void vegaTranslate(VGfloat tx, VGfloat ty)
 {
    struct vg_context *ctx = vg_current_context();
    struct matrix *dst = vg_state_matrix(&ctx->state.vg);
    matrix_translate(dst, tx, ty);
 }
 
-void vgScale(VGfloat sx, VGfloat sy)
+void vegaScale(VGfloat sx, VGfloat sy)
 {
    struct vg_context *ctx = vg_current_context();
    struct matrix *dst = vg_state_matrix(&ctx->state.vg);
    matrix_scale(dst, sx, sy);
 }
 
-void vgShear(VGfloat shx, VGfloat shy)
+void vegaShear(VGfloat shx, VGfloat shy)
 {
    struct vg_context *ctx = vg_current_context();
    struct matrix *dst = vg_state_matrix(&ctx->state.vg);
    matrix_shear(dst, shx, shy);
 }
 
-void vgRotate(VGfloat angle)
+void vegaRotate(VGfloat angle)
 {
    struct vg_context *ctx = vg_current_context();
    struct matrix *dst = vg_state_matrix(&ctx->state.vg);
index d2b7e489124ad607cf11cf43f40c32eba61af839..e9c8f03137396628efda862e8495f455964257ea 100644 (file)
@@ -379,7 +379,7 @@ void polygon_fill(struct polygon *poly, struct vg_context *ctx)
          dsa.stencil[0].func = PIPE_FUNC_ALWAYS;
          dsa.stencil[0].valuemask = ~0;
 
-         raster.cull_mode = raster.front_winding ^ PIPE_WINDING_BOTH;
+         raster.cull_face = PIPE_FACE_BACK;
          dsa.stencil[0].fail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zfail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_INCR_WRAP;
@@ -389,7 +389,7 @@ void polygon_fill(struct polygon *poly, struct vg_context *ctx)
          cso_set_rasterizer(ctx->cso_context, &raster);
          draw_polygon(ctx, poly);
 
-         raster.cull_mode = raster.front_winding;
+         raster.cull_face = PIPE_FACE_FRONT;
          dsa.stencil[0].fail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zfail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_DECR_WRAP;
@@ -501,7 +501,7 @@ void polygon_array_fill(struct polygon_array *polyarray, struct vg_context *ctx)
          dsa.stencil[0].func = PIPE_FUNC_ALWAYS;
          dsa.stencil[0].valuemask = ~0;
 
-         raster.cull_mode = raster.front_winding ^ PIPE_WINDING_BOTH;
+         raster.cull_face = PIPE_FACE_BACK;
          dsa.stencil[0].fail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zfail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_INCR_WRAP;
@@ -514,7 +514,7 @@ void polygon_array_fill(struct polygon_array *polyarray, struct vg_context *ctx)
             draw_polygon(ctx, poly);
          }
 
-         raster.cull_mode = raster.front_winding;
+         raster.cull_face = PIPE_FACE_FRONT;
          dsa.stencil[0].fail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zfail_op = PIPE_STENCIL_OP_KEEP;
          dsa.stencil[0].zpass_op = PIPE_STENCIL_OP_DECR_WRAP;
diff --git a/src/gallium/state_trackers/vega/vg_api.h b/src/gallium/state_trackers/vega/vg_api.h
new file mode 100644 (file)
index 0000000..ce2a0d6
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * 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 VG_API_H
+#define VG_API_H
+
+struct st_api;
+
+const struct st_api *
+vg_api_get(void);
+
+#endif /* VG_API_H */
index b55a2b57bed8411c58ca6c4ec95e9f79c9d3d6b7..f02db8949df3884307fac872545a98ab83200485 100644 (file)
@@ -33,6 +33,7 @@
 #include "asm_util.h"
 #include "st_inlines.h"
 #include "vg_manager.h"
+#include "api.h"
 
 #include "pipe/p_context.h"
 #include "util/u_inlines.h"
@@ -67,6 +68,7 @@ static void init_clear(struct vg_context *st)
 void vg_set_current_context(struct vg_context *ctx)
 {
    _vg_context = ctx;
+   api_make_dispatch_current((ctx) ? ctx->dispatch : NULL);
 }
 
 struct vg_context * vg_create_context(struct pipe_context *pipe,
@@ -80,6 +82,8 @@ struct vg_context * vg_create_context(struct pipe_context *pipe,
 
    ctx->pipe = pipe;
 
+   ctx->dispatch = api_create_dispatch();
+
    vg_init_state(&ctx->state.vg);
    ctx->state.dirty = ALL_DIRTY;
 
@@ -185,6 +189,8 @@ void vg_destroy_context(struct vg_context *ctx)
    cso_hash_delete(ctx->owned_objects[VG_OBJECT_FONT]);
    cso_hash_delete(ctx->owned_objects[VG_OBJECT_PATH]);
 
+   api_destroy_dispatch(ctx->dispatch);
+
    free(ctx);
 }
 
index dac67192a54eb3b4ad183383a988285a4651e1ce..7b59ad512a0ecc19f2498b79a071b3504686c3b4 100644 (file)
@@ -42,6 +42,7 @@ struct renderer;
 struct shaders_cache;
 struct shader;
 struct vg_shader;
+struct mapi_table;
 
 struct st_renderbuffer {
    enum pipe_format   format;
@@ -90,6 +91,7 @@ enum dirty_state {
 struct vg_context
 {
    struct st_context_iface iface;
+   struct mapi_table *dispatch;
 
    struct pipe_context *pipe;
 
index 8a62a191207280eadb0183fb70360e12ffbdd8ae..3b04816df04dfc8533040b92aa88e5356307e799 100644 (file)
 #include "util/u_format.h"
 #include "util/u_sampler.h"
 
+#include "vg_api.h"
 #include "vg_manager.h"
 #include "vg_context.h"
 #include "image.h"
 #include "mask.h"
+#include "api.h"
 
 static struct pipe_resource *
 create_texture(struct pipe_context *pipe, enum pipe_format format,
@@ -526,17 +528,15 @@ vg_api_is_visual_supported(struct st_api *stapi,
 static st_proc_t
 vg_api_get_proc_address(struct st_api *stapi, const char *procname)
 {
-   /* TODO */
-   return (st_proc_t) NULL;
+   return api_get_proc_address(procname);
 }
 
 static void
 vg_api_destroy(struct st_api *stapi)
 {
-   free(stapi);
 }
 
-struct st_api st_vg_api = {
+static const struct st_api vg_api = {
    vg_api_destroy,
    vg_api_get_proc_address,
    vg_api_is_visual_supported,
@@ -545,8 +545,8 @@ struct st_api st_vg_api = {
    vg_api_get_current,
 };
 
-struct st_api *
-st_api_create_OpenVG(void)
+const struct st_api *
+vg_api_get(void)
 {
-   return &st_vg_api;
+   return &vg_api;
 }
index f59f3a9638a71fc3bc75593a4aac74b848b21793..0f580b859c672aed37f22f1d54fc85f8e7a1971e 100644 (file)
@@ -7,6 +7,7 @@ if env['platform'] in ['windows']:
     env = env.Clone()
      
     env.Append(CPPPATH = [
+       '#src/mapi',
        '#src/mesa',
        '.',
     ])
index 5d0b6613ac75e02f3180f76a5004416a105adf2f..0b598dab6e3f1634fc4c170fc9deb9e20923536f 100644 (file)
@@ -11,13 +11,15 @@ if 'xorg' in env['statetrackers']:
        '#/src/mesa',
     ])
 
-    env.ParseConfig('pkg-config --cflags --libs xorg-server')
+    env.ParseConfig('pkg-config --cflags --libs libdrm xorg-server')
 
     conf = env.Configure()
 
     if conf.CheckHeader('X11/extensions/dpmsconst.h'):
         env.Append(CPPDEFINES = [('HAVE_XEXTPROTO_71', '1')])
 
+    conf.Finish()
+
     st_xorg = env.ConvenienceLibrary(
        target = 'st_xorg',
        source = [ 'xorg_composite.c',
index 669bd9edcf01de0b76828aca82e1e1bbbaead75a..f9022a9f934bdb33cc93957ee06bd5aca5847bb2 100644 (file)
@@ -90,11 +90,10 @@ crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
     xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(crtc->scrn);
     modesettingPtr ms = modesettingPTR(crtc->scrn);
     xf86OutputPtr output = NULL;
-    drmModeConnectorPtr drm_connector;
     struct crtc_private *crtcp = crtc->driver_private;
     drmModeCrtcPtr drm_crtc = crtcp->drm_crtc;
     drmModeModeInfo drm_mode;
-    int i, ret;
+    int i, ret, connector_id;
 
     for (i = 0; i < config->num_output; output = NULL, i++) {
        output = config->output[i];
@@ -106,7 +105,7 @@ crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
     if (!output)
        return FALSE;
 
-    drm_connector = output->driver_private;
+    connector_id = xorg_output_get_id(output);
 
     drm_mode.clock = mode->Clock;
     drm_mode.hdisplay = mode->HDisplay;
@@ -127,7 +126,7 @@ crtc_set_mode_major(xf86CrtcPtr crtc, DisplayModePtr mode,
     drm_mode.name[DRM_DISPLAY_MODE_LEN - 1] = '\0';
 
     ret = drmModeSetCrtc(ms->fd, drm_crtc->crtc_id, ms->fb_id, x, y,
-                        &drm_connector->connector_id, 1, &drm_mode);
+                        &connector_id, 1, &drm_mode);
 
     if (ret)
        return FALSE;
index 35741f8684280b344aa38e9f32553ddbf609502c..e719644d340c5ab3ff226b172789f8df176d3f7e 100644 (file)
@@ -403,7 +403,7 @@ xorg_dri2_init(ScreenPtr pScreen)
     }
 #endif
 
-    dri2info.version = DRI2INFOREC_VERSION;
+    dri2info.version = min(DRI2INFOREC_VERSION, 3);
     dri2info.fd = ms->fd;
 
     dri2info.driverName = pScrn->driverName;
index 3687ee0db4e399405a239d25f20f493ae748a650..44520b81b663a52d0d2f8583be254fc60bf1bfd7 100644 (file)
@@ -141,8 +141,6 @@ xorg_tracker_have_modesetting(ScrnInfoPtr pScrn, struct pci_device *device)
 
 static Bool drv_init_front_buffer_functions(ScrnInfoPtr pScrn);
 static Bool drv_close_screen(int scrnIndex, ScreenPtr pScreen);
-static Bool drv_save_hw_state(ScrnInfoPtr pScrn);
-static Bool drv_restore_hw_state(ScrnInfoPtr pScrn);
 
 
 /*
@@ -336,17 +334,9 @@ static Bool
 drv_close_resource_management(ScrnInfoPtr pScrn)
 {
     modesettingPtr ms = modesettingPTR(pScrn);
-    int i;
 
     if (ms->screen) {
        assert(ms->ctx == NULL);
-
-       for (i = 0; i < XORG_NR_FENCES; i++) {
-           if (ms->fence[i]) {
-               ms->screen->fence_finish(ms->screen, ms->fence[i], 0);
-               ms->screen->fence_reference(ms->screen, &ms->fence[i], NULL);
-           }
-       }
        ms->screen->destroy(ms->screen);
     }
     ms->screen = NULL;
@@ -359,6 +349,22 @@ drv_close_resource_management(ScrnInfoPtr pScrn)
     return TRUE;
 }
 
+static void
+drv_cleanup_fences(ScrnInfoPtr pScrn)
+{
+    modesettingPtr ms = modesettingPTR(pScrn);
+    int i;
+
+    assert(ms->screen);
+
+    for (i = 0; i < XORG_NR_FENCES; i++) {
+       if (ms->fence[i]) {
+           ms->screen->fence_finish(ms->screen, ms->fence[i], 0);
+           ms->screen->fence_reference(ms->screen, &ms->fence[i], NULL);
+       }
+    }
+}
+
 static Bool
 drv_pre_init(ScrnInfoPtr pScrn, int flags)
 {
@@ -388,7 +394,6 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags)
        return FALSE;
 
     ms = modesettingPTR(pScrn);
-    ms->SaveGeneration = -1;
     ms->pEnt = pEnt;
     ms->cust = cust;
 
@@ -471,19 +476,14 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags)
        ms->SWCursor = TRUE;
     }
 
-    drv_save_hw_state(pScrn);
-
     xorg_crtc_init(pScrn);
     xorg_output_init(pScrn);
 
     if (!xf86InitialConfiguration(pScrn, TRUE)) {
        xf86DrvMsg(pScrn->scrnIndex, X_ERROR, "No valid modes.\n");
-       drv_restore_hw_state(pScrn);
        return FALSE;
     }
 
-    drv_restore_hw_state(pScrn);
-
     /*
      * If the driver can do gamma correction, it should call xf86SetGamma() here.
      */
@@ -521,22 +521,6 @@ drv_pre_init(ScrnInfoPtr pScrn, int flags)
     return TRUE;
 }
 
-static Bool
-drv_save_hw_state(ScrnInfoPtr pScrn)
-{
-    /*xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);*/
-
-    return TRUE;
-}
-
-static Bool
-drv_restore_hw_state(ScrnInfoPtr pScrn)
-{
-    /*xf86CrtcConfigPtr config = XF86_CRTC_CONFIG_PTR(pScrn);*/
-
-    return TRUE;
-}
-
 static void drv_block_handler(int i, pointer blockData, pointer pTimeout,
                               pointer pReadmask)
 {
@@ -848,7 +832,9 @@ drv_leave_vt(int scrnIndex, int flags)
     drmModeRmFB(ms->fd, ms->fb_id);
     ms->fb_id = -1;
 
-    drv_restore_hw_state(pScrn);
+    /* idle hardware */
+    if (!ms->kms)
+       drv_cleanup_fences(pScrn);
 
     if (drmDropMaster(ms->fd))
        xf86DrvMsg(pScrn->scrnIndex, X_WARNING,
@@ -878,15 +864,6 @@ drv_enter_vt(int scrnIndex, int flags)
        }
     }
 
-    /*
-     * Only save state once per server generation since that's what most
-     * drivers do.  Could change this to save state at each VT enter.
-     */
-    if (ms->SaveGeneration != serverGeneration) {
-       ms->SaveGeneration = serverGeneration;
-       drv_save_hw_state(pScrn);
-    }
-
     if (!ms->create_front_buffer(pScrn))
        return FALSE;
 
@@ -917,10 +894,6 @@ drv_close_screen(int scrnIndex, ScreenPtr pScreen)
     modesettingPtr ms = modesettingPTR(pScrn);
     CustomizerPtr cust = ms->cust;
 
-    if (pScrn->vtSema) {
-       drv_leave_vt(scrnIndex, 0);
-    }
-
     if (ms->cursor) {
        FreeCursor(ms->cursor, None);
        ms->cursor = NULL;
@@ -952,6 +925,11 @@ drv_close_screen(int scrnIndex, ScreenPtr pScreen)
        xorg_exa_close(pScrn);
     ms->exa = NULL;
 
+    /* calls drop master make sure we don't talk to 3D HW after that */
+    if (pScrn->vtSema) {
+       drv_leave_vt(scrnIndex, 0);
+    }
+
     drv_close_resource_management(pScrn);
 
     drv_close_drm(pScrn);
index 6657f7391b276a918a967f9e89f3b327d060cdad..ee40bc8ccbd363faa35fff7f809ca13e5cba1bfd 100644 (file)
@@ -968,6 +968,8 @@ xorg_exa_close(ScrnInfoPtr pScrn)
 
    renderer_destroy(exa->renderer);
 
+   xorg_exa_finish(exa);
+
    if (exa->pipe)
       exa->pipe->destroy(exa->pipe);
    exa->pipe = NULL;
index 13c3fb97e3bd8b1581b5ce290cbd15e781f5e6f3..056098f76b41f815807cf10ffdc72efc75fdce51 100644 (file)
 
 #include "xorg_tracker.h"
 
+struct output_private
+{
+    drmModeConnectorPtr drm_connector;
+
+    int c;
+};
+
 static char *output_enum_list[] = {
     "Unknown",
     "VGA",
@@ -82,22 +89,38 @@ output_dpms(xf86OutputPtr output, int mode)
 static xf86OutputStatus
 output_detect(xf86OutputPtr output)
 {
-    drmModeConnectorPtr drm_connector = output->driver_private;
+    modesettingPtr ms = modesettingPTR(output->scrn);
+    struct output_private *priv = output->driver_private;
+    drmModeConnectorPtr drm_connector;
+    xf86OutputStatus status;
+
+    drm_connector = drmModeGetConnector(ms->fd, priv->drm_connector->connector_id);
+    if (drm_connector) {
+       drmModeFreeConnector(priv->drm_connector);
+       priv->drm_connector = drm_connector;
+    } else {
+       drm_connector = priv->drm_connector;
+    }
 
     switch (drm_connector->connection) {
     case DRM_MODE_CONNECTED:
-       return XF86OutputStatusConnected;
+       status = XF86OutputStatusConnected;
+       break;
     case DRM_MODE_DISCONNECTED:
-       return XF86OutputStatusDisconnected;
+       status = XF86OutputStatusDisconnected;
+       break;
     default:
-       return XF86OutputStatusUnknown;
+       status = XF86OutputStatusUnknown;
     }
+
+    return status;
 }
 
 static DisplayModePtr
 output_get_modes(xf86OutputPtr output)
 {
-    drmModeConnectorPtr drm_connector = output->driver_private;
+    struct output_private *priv = output->driver_private;
+    drmModeConnectorPtr drm_connector = priv->drm_connector;
     drmModeModeInfoPtr drm_mode = NULL;
     DisplayModePtr modes = NULL, mode = NULL;
     int i;
@@ -161,7 +184,10 @@ output_get_property(xf86OutputPtr output, Atom property)
 static void
 output_destroy(xf86OutputPtr output)
 {
-    drmModeFreeConnector(output->driver_private);
+    struct output_private *priv = output->driver_private;
+    drmModeFreeConnector(priv->drm_connector);
+    xfree(priv);
+    output->driver_private = NULL;
 }
 
 static const xf86OutputFuncsRec output_funcs = {
@@ -188,6 +214,7 @@ xorg_output_init(ScrnInfoPtr pScrn)
     drmModeResPtr res;
     drmModeConnectorPtr drm_connector = NULL;
     drmModeEncoderPtr drm_encoder = NULL;
+    struct output_private *priv;
     char name[32];
     int c, v, p;
 
@@ -226,9 +253,16 @@ xorg_output_init(ScrnInfoPtr pScrn)
                 drm_connector->connector_type_id);
 
 
+       priv = xcalloc(sizeof(*priv), 1);
+       if (!priv) {
+           continue;
+       }
+
        output = xf86OutputCreate(pScrn, &output_funcs, name);
-       if (!output)
+       if (!output) {
+           xfree(priv);
            continue;
+       }
 
        drm_encoder = drmModeGetEncoder(ms->fd, drm_connector->encoders[0]);
        if (drm_encoder) {
@@ -238,7 +272,9 @@ xorg_output_init(ScrnInfoPtr pScrn)
            output->possible_crtcs = 0;
            output->possible_clones = 0;
        }
-       output->driver_private = drm_connector;
+       priv->c = c;
+       priv->drm_connector = drm_connector;
+       output->driver_private = priv;
        output->subpixel_order = SubPixelHorizontalRGB;
        output->interlaceAllowed = FALSE;
        output->doubleScanAllowed = FALSE;
@@ -248,4 +284,11 @@ xorg_output_init(ScrnInfoPtr pScrn)
     drmModeFreeResources(res);
 }
 
+unsigned
+xorg_output_get_id(xf86OutputPtr output)
+{
+    struct output_private *priv = output->driver_private;
+    return priv->drm_connector->connector_id;
+}
+
 /* vim: set sw=4 ts=8 sts=4: */
index 1576e5ea01bb50ab8b5da8c38982c36f12ac557a..e5def3e2edd5a5b7e2b12d850674e6a00eafe2d7 100644 (file)
@@ -7,7 +7,6 @@
 #include "util/u_draw_quad.h"
 #include "util/u_math.h"
 #include "util/u_memory.h"
-#include "util/u_rect.h"
 #include "util/u_sampler.h"
 #include "util/u_surface.h"
 
index cb6773424a827e7a0819057b19657cdccb2c685d..65fbc3234ba70a013cb5bb74c805342d62675b95 100644 (file)
@@ -96,8 +96,6 @@ typedef struct _modesettingRec
     /* Broken-out options. */
     OptionInfoPtr Options;
 
-    unsigned int SaveGeneration;
-
     void (*blockHandler)(int, pointer, pointer, pointer);
     struct pipe_fence_handle *fence[XORG_NR_FENCES];
 
@@ -192,6 +190,9 @@ xorg_crtc_cursor_destroy(xf86CrtcPtr crtc);
 void
 xorg_output_init(ScrnInfoPtr pScrn);
 
+unsigned
+xorg_output_get_id(xf86OutputPtr output);
+
 
 /***********************************************************************
  * xorg_xv.c
index 3cbaf615e2f7b299fb0e3ad87d3d25700fdf2566..3eff07538fe4024045d899f20ea7a623cb13f88b 100644 (file)
@@ -1,7 +1,6 @@
 # -*-makefile-*-
 
 ifeq ($(MESA_LLVM),1)
-DRIVER_DEFINES += -DGALLIUM_LLVMPIPE
 PIPE_DRIVERS += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a
 LDFLAGS += $(LLVM_LDFLAGS)
 LD = g++
@@ -42,13 +41,13 @@ SHARED_INCLUDES = \
        -Iserver \
        -I$(TOP)/include \
        -I$(TOP)/include/GL/internal \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/gallium/include \
        -I$(TOP)/src/gallium/auxiliary \
        -I$(TOP)/src/gallium/drivers \
        -I$(TOP)/src/gallium/winsys \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/mesa/main \
-       -I$(TOP)/src/mesa/glapi \
        -I$(TOP)/src/mesa/math \
        -I$(TOP)/src/mesa/transform \
        -I$(TOP)/src/mesa/shader \
index 9265e2eb7bc8da6d8d08fdea7daba6868c6f2a9f..4f8641e056169dc004f3433e134b121dd587f831 100644 (file)
@@ -19,10 +19,17 @@ x11_ST = $(TOP)/src/gallium/state_trackers/egl/libeglx11.a \
         $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a \
         $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
         $(TOP)/src/gallium/drivers/identity/libidentity.a \
-        $(TOP)/src/gallium/drivers/trace/libtrace.a
+        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+        $(TOP)/src/gallium/drivers/rbug/librbug.a
 
 x11_LIBS = $(common_LIBS) -lX11 -lXext -lXfixes
 
+ifeq ($(MESA_LLVM),1)
+x11_ST += $(TOP)/src/gallium/drivers/llvmpipe/libllvmpipe.a
+x11_LIBS += $(LLVM_LIBS)
+LDFLAGS += $(LLVM_LDFLAGS)
+endif
+
 kms_ST = $(TOP)/src/gallium/state_trackers/egl/libeglkms.a
 kms_LIBS = $(common_LIBS)
 
@@ -36,19 +43,20 @@ kms_LIBS = $(common_LIBS)
 
 EGL_DISPLAY_DRIVERS = $(foreach dpy, $(EGL_DISPLAYS), egl_$(dpy)_$(EGL_DRIVER_NAME).so)
 
-EGL_DISPLAY_LIBS = $(foreach drv, $(EGL_DISPLAY_DRIVERS), $(TOP)/$(LIB_DIR)/$(drv))
+EGL_DISPLAY_LIBS = $(foreach drv, $(EGL_DISPLAY_DRIVERS), $(TOP)/$(LIB_DIR)/egl/$(drv))
 
 default: $(EGL_DISPLAY_LIBS)
 
-$(EGL_DISPLAY_LIBS): $(TOP)/$(LIB_DIR)/%.so: %.so
-       $(INSTALL) $< $(TOP)/$(LIB_DIR)
+$(EGL_DISPLAY_LIBS): $(TOP)/$(LIB_DIR)/egl/%.so: %.so
+       @$(INSTALL) -d $(TOP)/$(LIB_DIR)/egl
+       $(INSTALL) $< $(TOP)/$(LIB_DIR)/egl
 
 define mklib-egl
 $(MKLIB) -o $@ -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
        $(MKLIB_OPTIONS) $(EGL_DRIVER_OBJECTS) \
        -Wl,--start-group $($(1)_ST) $(EGL_DRIVER_PIPES) \
        $(GALLIUM_AUXILIARIES) -Wl,--end-group \
-       $($(1)_LIBS) $(EGL_DRIVER_LIBS)
+       $($(1)_LIBS) $(EGL_DRIVER_LIBS) -L$(TOP)/$(LIB_DIR) -l$(EGL_LIB)
 endef
 
 egl_x11_$(EGL_DRIVER_NAME).so: $(EGL_DRIVER_OBJECTS) $(x11_ST) $(EGL_DRIVER_PIPES) $(GALLIUM_AUXILIARIES) Makefile
index 1292d4f619334037543ae834e76aecc552fde0a8..9077cbf6a45b5400b083c303cd120e5c8b038a3a 100644 (file)
@@ -1,5 +1,8 @@
+import os
 Import('*')
        
+# Compatibility with old build scripts:
+#
 if 'xlib' in env['winsys']:
        SConscript([
                'libgl-xlib/SConscript',
@@ -10,10 +13,10 @@ if 'gdi' in env['winsys']:
                'libgl-gdi/SConscript',
        ])
 
-if 'graw-xlib' in env['winsys']:
-       SConscript([
-               'graw-xlib/SConscript',
-       ])
+if not 'graw-xlib' in env['targets'] and not env['msvc']:
+        # XXX: disable until MSVC can link correctly
+        SConscript('graw-null/SConscript')
+
 
 if env['dri']:
        SConscript([
@@ -25,3 +28,13 @@ if 'xorg' in env['statetrackers']:
                SConscript([
                        'xorg-vmwgfx/SConscript',
                ])
+
+# Ideally all non-target directories would produce convenience
+# libraries, and the actual shared libraries and other installables
+# would be finally assembled in the targets subtree:
+#
+for target in env['targets']:
+    SConscript(os.path.join(target, 'SConscript'))
+
+
+
index 28fbe02ab8d57092c3bc3d4e3044ae86d5daaedf..4bbb16c227244db1e00fd4cfb082555461bb35c2 100644 (file)
@@ -9,6 +9,7 @@ drienv.Replace(CPPPATH = [
        '#src/mesa/drivers/dri/common',
        '#include',
        '#include/GL/internal',
+       '#src/mapi',
        '#src/gallium/include',
        '#src/gallium/auxiliary',
        '#src/gallium/drivers',
index 50a8e11e17c8ae23ba1517157a766313856e3a09..fdcfd08c2275ad44d48867e8ad2b8fa2aba570a2 100644 (file)
@@ -7,6 +7,7 @@ PIPE_DRIVERS = \
        $(TOP)/src/gallium/state_trackers/dri/drm/libdridrm.a \
        $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
        $(TOP)/src/gallium/drivers/identity/libidentity.a \
        $(TOP)/src/gallium/drivers/i915/libi915.a
index 2fcc8028f12e7542d597e546dbad41add9a23bae..65c423988755d4d93acc8629f78bde9aeaa6d842 100644 (file)
@@ -13,6 +13,7 @@ env.Prepend(LIBS = [
     i915drm,
     i915,
     trace,
+    rbug,
     mesa,
     glsl,
     gallium,
index e267ba3a0232dc0c63d8ef5113a62a3ebb060253..13987c643e20393ca6ce03e7612607aa78f22f67 100644 (file)
@@ -7,6 +7,7 @@ PIPE_DRIVERS = \
        $(TOP)/src/gallium/state_trackers/dri/drm/libdridrm.a \
        $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/winsys/sw/drm/libswdrm.a \
        $(TOP)/src/gallium/winsys/sw/wrapper/libwsw.a \
        $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
index eb9e6cd172ab15e86eef439fa710c59c95c64935..13ac5a2d8ea6f058b3fb938c22ab758f47fd416c 100644 (file)
@@ -11,8 +11,11 @@ env.ParseConfig('pkg-config --cflags --libs libdrm_intel')
 env.Prepend(LIBS = [
     st_dri,
     i965drm,
+    ws_drm,
+    ws_wrapper,
     i965,
     trace,
+    rbug,
     mesa,
     glsl,
     gallium,
index 66dd392b68bdd0f3353ad411e25b092e1fdd4a1e..8ef24c08215ff85af6e391f6dec9f743c6ebe201 100644 (file)
@@ -8,6 +8,7 @@ PIPE_DRIVERS = \
        $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \
        $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/r300/libr300.a
 
 C_SOURCES = \
index d926c2728897e9f99e2b6fcd809966cf41ae884d..4c6cfb84ebade0ed5b80dd5658ee0aa373dd4573 100644 (file)
@@ -13,6 +13,7 @@ env.Prepend(LIBS = [
     radeonwinsys,
     r300,
     trace,
+    rbug,
     mesa,
     glsl,
     gallium,
index 3db9781c209023911f434ce88878481a64b4047c..0a53eb56c455c8283d30b5b7ab81d679eb766860 100644 (file)
@@ -9,7 +9,8 @@ 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/trace/libtrace.a
+       $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a
 
 SWRAST_COMMON_GALLIUM_SOURCES = \
        $(TOP)/src/mesa/drivers/dri/common/utils.c \
index 77f44384d062e1dbbabdea7631dbd7e09832eb2b..679afab41c7bc049251740079370248dbab052e7 100644 (file)
@@ -10,6 +10,7 @@ env.Prepend(LIBS = [
     st_drisw,
     ws_dri,
     trace,
+    rbug,
     mesa,
     glsl,
     gallium,
index 4b002e828fa3c4cd7d3592b5ed3118c687425c16..b5b679f3c7c9e558093b9d24e9d8180ac9fdc2b7 100644 (file)
@@ -7,6 +7,7 @@ PIPE_DRIVERS = \
        $(TOP)/src/gallium/state_trackers/dri/drm/libdridrm.a \
        $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/svga/libsvga.a
 
 C_SOURCES = \
index 6a1f8827bc38f323810f0a5b5b2f6dd3a5b7b1f0..09a0c254c304e651f36190e9a757e2fcdd4fe6e7 100644 (file)
@@ -11,6 +11,7 @@ env.Prepend(LIBS = [
     svgadrm,
     svga,
     trace,
+    rbug,
     mesa,
     glsl,
     gallium,
diff --git a/src/gallium/targets/egl-apis/Makefile b/src/gallium/targets/egl-apis/Makefile
new file mode 100644 (file)
index 0000000..88915bf
--- /dev/null
@@ -0,0 +1,77 @@
+# src/gallium/targets/egl-apis
+
+TOP = ../../../..
+include $(TOP)/configs/current
+
+OUTPUT_PREFIX := api_
+OUTPUT_PATH := $(TOP)/$(LIB_DIR)/egl
+
+OUTPUTS := $(addsuffix .so, $(EGL_CLIENT_APIS))
+OUTPUTS := $(addprefix $(OUTPUT_PATH)/$(OUTPUT_PREFIX), $(OUTPUTS))
+
+# include dirs
+GL_INCLUDES := -I$(TOP)/src/mesa -I$(TOP)/src/gallium/include
+GLESv1_CM_INCLUDES := $(GL_INCLUDES)
+GLESv2_INCLUDES := $(GL_INCLUDES)
+OpenVG_INCLUDES := -I$(TOP)/src/gallium/state_trackers/vega -I$(TOP)/src/gallium/include
+
+# system libs
+GL_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GL_LIB)
+GLESv1_CM_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv1_CM_LIB)
+GLESv2_SYS := -lpthread -lm -L$(TOP)/$(LIB_DIR) -l$(GLESv2_LIB)
+OpenVG_SYS := -lm -L$(TOP)/$(LIB_DIR) -l$(VG_LIB)
+
+# $(LLVM_LIBS) will be discarded except for OpenGL, which creates a private
+# draw context for selection/feedback mode.
+ifeq ($(MESA_LLVM),1)
+GL_SYS += $(LLVM_LIBS)
+GLESv1_CM_SYS += $(LLVM_LIBS)
+GLESv2_SYS += $(LLVM_LIBS)
+OpenVG_SYS += $(LLVM_LIBS)
+LDFLAGS += $(LLVM_LDFLAGS)
+endif
+
+# project libs
+GL_LIBS := $(TOP)/src/mesa/libmesagallium.a
+GLESv1_CM_LIBS := $(TOP)/src/mesa/libes1gallium.a
+GLESv2_LIBS := $(TOP)/src/mesa/libes2gallium.a
+OpenVG_LIBS := $(TOP)/src/gallium/state_trackers/vega/libvega.a
+
+# objects
+GL_OBJECTS := api_GL.o
+GLESv1_CM_OBJECTS := api_GLESv1_CM.o
+GLESv2_OBJECTS := api_GLESv2.o
+OpenVG_OBJECTS := api_OpenVG.o
+
+default: $(OUTPUTS)
+
+api_%.o: api_%.c
+       $(CC) -c -o $@ $< $($*_INCLUDES) $(DEFINES) $(CFLAGS)
+
+define mklib
+$(MKLIB) -o $(notdir $@) -noprefix -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+       -install $(OUTPUT_PATH) $(MKLIB_OPTIONS) \
+       $($(1)_OBJECTS) $($(1)_LIBS) $(GALLIUM_AUXILIARIES) $($(1)_SYS)
+endef
+
+$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GL_LIB).so: $(GL_OBJECTS) $(GL_LIBS)
+       $(call mklib,GL)
+
+$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GLESv1_CM_LIB).so: $(GLESv1_CM_OBJECTS) $(GLESv1_CM_LIBS)
+       $(call mklib,GLESv1_CM)
+
+$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(GLESv2_LIB).so: $(GLESv2_OBJECTS) $(GLESv2_LIBS)
+       $(call mklib,GLESv2)
+
+$(OUTPUT_PATH)/$(OUTPUT_PREFIX)$(VG_LIB).so: $(OpenVG_OBJECTS) $(OpenVG_LIBS)
+       $(call mklib,OpenVG)
+
+install: $(OUTPUTS)
+       $(INSTALL) -d $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR)
+       for out in $(OUTPUTS); do \
+               $(MINSTALL) -m 755 "$$out" $(DESTDIR)$(EGL_DRIVER_INSTALL_DIR); \
+       done
+
+clean:
+       -rm -f $(OUTPUTS)
+       -rm -f *.o
diff --git a/src/gallium/targets/egl-apis/api_GL.c b/src/gallium/targets/egl-apis/api_GL.c
new file mode 100644 (file)
index 0000000..6d17274
--- /dev/null
@@ -0,0 +1,7 @@
+#include "state_tracker/st_gl_api.h"
+
+PUBLIC struct st_api *
+st_api_create_OpenGL()
+{
+   return st_gl_api_create();
+}
diff --git a/src/gallium/targets/egl-apis/api_GLESv1_CM.c b/src/gallium/targets/egl-apis/api_GLESv1_CM.c
new file mode 100644 (file)
index 0000000..825fdac
--- /dev/null
@@ -0,0 +1,7 @@
+#include "state_tracker/st_gl_api.h"
+
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES1()
+{
+   return st_gl_api_create();
+}
diff --git a/src/gallium/targets/egl-apis/api_GLESv2.c b/src/gallium/targets/egl-apis/api_GLESv2.c
new file mode 100644 (file)
index 0000000..5c773aa
--- /dev/null
@@ -0,0 +1,8 @@
+#include "state_tracker/st_gl_api.h"
+
+PUBLIC struct st_api *
+st_api_create_OpenGL_ES2()
+{
+   /* linker magic creates different versions */
+   return st_gl_api_create();
+}
diff --git a/src/gallium/targets/egl-apis/api_OpenVG.c b/src/gallium/targets/egl-apis/api_OpenVG.c
new file mode 100644 (file)
index 0000000..f85ebea
--- /dev/null
@@ -0,0 +1,8 @@
+#include "state_tracker/st_api.h"
+#include "vg_api.h"
+
+PUBLIC struct st_api *
+st_api_create_OpenVG()
+{
+   return (struct st_api *) vg_api_get();
+}
index 02258fb69a44265d2410607f002ce4c411e57e82..a4b41842ff75d9700d2027e37187f3b67656b500 100644 (file)
@@ -8,6 +8,7 @@ EGL_DRIVER_LIBS = -ldrm_intel
 EGL_DRIVER_PIPES = \
        $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/i915/libi915.a
 
 include ../Makefile.egl
index fad56ef55544305ff62cae29dfd89b1a54cf59be..d4730824a5b2e55e827c72823e991a49caa1a5e5 100644 (file)
@@ -8,6 +8,7 @@ EGL_DRIVER_LIBS = -ldrm_intel
 EGL_DRIVER_PIPES = \
        $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/i965/libi965.a \
        $(TOP)/src/gallium/winsys/sw/drm/libswdrm.a \
        $(TOP)/src/gallium/winsys/sw/wrapper/libwsw.a \
index 8daadb59791295bd8f411edd8bad425fdefab775..8fcca2682655c6ca910114280ff08f41743c571f 100644 (file)
@@ -8,6 +8,7 @@ EGL_DRIVER_LIBS = -ldrm_radeon
 EGL_DRIVER_PIPES = \
        $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/r300/libr300.a
 
 include ../Makefile.egl
index 5f9385f42b093e23ba8ef6a61a7c202d8f02474e..a9f6874b98120d6911ac9a7abbd317aabd8f2e85 100644 (file)
@@ -8,6 +8,7 @@ EGL_DRIVER_LIBS =
 EGL_DRIVER_PIPES = \
        $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/svga/libsvga.a
 
 include ../Makefile.egl
diff --git a/src/gallium/targets/graw-null/SConscript b/src/gallium/targets/graw-null/SConscript
new file mode 100644 (file)
index 0000000..106dcd9
--- /dev/null
@@ -0,0 +1,57 @@
+#######################################################################
+# SConscript for xlib winsys
+
+Import('*')
+
+env = env.Clone()
+
+env.Prepend(LIBS = [
+    ws_null,
+    trace,
+    rbug,
+    identity,
+#    gallium,
+])
+
+env.Append(CPPPATH = [
+    '#src/gallium/drivers',
+])
+
+if env['platform'] == 'windows':
+    # For trace
+    env.Append(LIBS = [
+        'ws2_32',
+    ])
+
+sources = [
+    'graw_null.c',
+]
+
+if True:
+    env.Append(CPPDEFINES = 'GALLIUM_SOFTPIPE')
+    env.Prepend(LIBS = [softpipe])
+
+if env['llvm']:
+    env.Append(CPPDEFINES = 'GALLIUM_LLVMPIPE')
+    env.Tool('udis86')
+    env.Prepend(LIBS = [llvmpipe])
+
+# Need this for trace, identity drivers referenced by
+# gallium_wrap_screen().
+#
+env.Prepend(LIBS = [gallium])
+
+# TODO: write a wrapper function http://www.scons.org/wiki/WrapperFunctions
+graw = env.SharedLibrary(
+    target ='graw',
+    source = sources,
+)
+
+env.InstallSharedLibrary(graw, version=(1, 0))
+
+if env['platform'] == 'windows':
+    graw = env.FindIxes(graw, 'LIBPREFIX', 'LIBSUFFIX')
+else:
+    graw = env.FindIxes(graw, 'SHLIBPREFIX', 'SHLIBSUFFIX')
+
+Export('graw')
diff --git a/src/gallium/targets/graw-null/graw_null.c b/src/gallium/targets/graw-null/graw_null.c
new file mode 100644 (file)
index 0000000..6965f58
--- /dev/null
@@ -0,0 +1,81 @@
+#include "pipe/p_compiler.h"
+#include "util/u_debug.h"
+#include "util/u_memory.h"
+#include "target-helpers/wrap_screen.h"
+#include "sw/null/null_sw_winsys.h"
+
+#ifdef GALLIUM_SOFTPIPE
+#include "softpipe/sp_public.h"
+#endif
+
+#ifdef GALLIUM_LLVMPIPE
+#include "llvmpipe/lp_public.h"
+#endif
+
+/* Haven't figured out a decent way to build the helper code yet -
+ * #include it here temporarily.
+ */
+#include "sw/sw_public.h"
+#include "sw/sw.c"
+
+#include <stdio.h>
+
+
+struct pipe_screen *
+graw_init( void )
+{
+   const char *default_driver;
+   const char *driver;
+   struct pipe_screen *screen = NULL;
+   struct sw_winsys *winsys = NULL;
+
+   /* Create the underlying winsys, which performs presents to Xlib
+    * drawables:
+    */
+   winsys = null_sw_create();
+   if (winsys == NULL)
+      return NULL;
+
+#if defined(GALLIUM_LLVMPIPE)
+   default_driver = "llvmpipe";
+#elif defined(GALLIUM_SOFTPIPE)
+   default_driver = "softpipe";
+#else
+   default_driver = "";
+#endif
+
+   driver = debug_get_option("GALLIUM_DRIVER", default_driver);
+
+#if defined(GALLIUM_LLVMPIPE)
+   if (screen == NULL && strcmp(driver, "llvmpipe") == 0)
+      screen = llvmpipe_create_screen( winsys );
+#endif
+
+#if defined(GALLIUM_SOFTPIPE)
+   if (screen == NULL)
+      screen = softpipe_create_screen( winsys );
+#endif
+
+   /* Inject any wrapping layers we want to here:
+    */
+   return gallium_wrap_screen( screen );
+}
+
+
+void *
+graw_create_window( int x,
+                    int y,
+                    unsigned width,
+                    unsigned height,
+                    enum pipe_format format )
+{
+   static int dummy;
+   return &dummy;
+}
+
+
+void
+graw_destroy_window( void *window )
+{
+}
+
index 979252b22d7301498b7b3dbac6e014996159d424..40332fa4e147c6b12e70c83fafeb05dc6421c41a 100644 (file)
@@ -8,9 +8,12 @@ if env['platform'] != 'linux':
 
 env = env.Clone()
 
+env.Tool('x11')
+
 env.Prepend(LIBS = [
     ws_xlib,
     trace,
+    rbug,
     identity,
 #    gallium,
 ])
@@ -22,6 +25,7 @@ env.Append(CPPPATH = [
 
 sources = [
     'graw_xlib.c',
+    'graw_util.c',
 ]
 
 if True:
diff --git a/src/gallium/targets/graw-xlib/graw.h b/src/gallium/targets/graw-xlib/graw.h
deleted file mode 100644 (file)
index a58e18e..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#ifndef GALLIUM_RAW_H
-#define GALLIUM_RAW_H
-
-/* This is an API for exercising gallium functionality in a
- * platform-neutral fashion.  Whatever platform integration is
- * necessary to implement this interface is orchestrated by the
- * individual target building this entity.
- *
- * For instance, the graw-xlib target includes code to implent these
- * interfaces on top of the X window system.
- *
- * Programs using this interface may additionally benefit from some of
- * the utilities currently in the libgallium.a library, especially
- * those for parsing text representations of TGSI shaders.
- */
-
-#include "pipe/p_format.h"
-
-struct pipe_screen;
-
-struct pipe_screen *graw_init( void );
-
-/* Returns a handle to be used with flush_frontbuffer()/present().
- *
- * Query format support with screen::is_format_supported and usage
- * XXX.
- */
-void *graw_create_window( int x,
-                          int y,
-                          unsigned width,
-                          unsigned height,
-                          enum pipe_format format );
-
-void graw_destroy_window( void *handle );
-
-#endif
diff --git a/src/gallium/targets/graw-xlib/graw_util.c b/src/gallium/targets/graw-xlib/graw_util.c
new file mode 100644 (file)
index 0000000..147532c
--- /dev/null
@@ -0,0 +1,36 @@
+
+#include "pipe/p_compiler.h"
+#include "pipe/p_context.h"
+#include "tgsi/tgsi_text.h"
+#include "util/u_memory.h"
+#include "state_tracker/graw.h"
+
+
+/* Helper functions.  These are the same for all graw implementations.
+ */
+void *graw_parse_vertex_shader(struct pipe_context *pipe,
+                               const char *text)
+{
+   struct tgsi_token tokens[1024];
+   struct pipe_shader_state state;
+
+   if (!tgsi_text_translate(text, tokens, Elements(tokens)))
+      return NULL;
+
+   state.tokens = tokens;
+   return pipe->create_vs_state(pipe, &state);
+}
+
+void *graw_parse_fragment_shader(struct pipe_context *pipe,
+                                 const char *text)
+{
+   struct tgsi_token tokens[1024];
+   struct pipe_shader_state state;
+
+   if (!tgsi_text_translate(text, tokens, Elements(tokens)))
+      return NULL;
+
+   state.tokens = tokens;
+   return pipe->create_fs_state(pipe, &state);
+}
+
index fb8ef9d78b67b3205f5aa784d846644d36ebec17..41120ba3c70f1b78ffba2eee73f9064fee811b69 100644 (file)
@@ -1,4 +1,5 @@
 #include "pipe/p_compiler.h"
+#include "pipe/p_context.h"
 #include "util/u_debug.h"
 #include "util/u_memory.h"
 #include "target-helpers/wrap_screen.h"
@@ -18,7 +19,7 @@
 #include "sw/sw_public.h"
 #include "sw/sw.c"
 
-#include "graw.h"
+#include "state_tracker/graw.h"
 
 #include <X11/Xlib.h>
 #include <X11/Xlibint.h>
 
 static struct {
    Display *display;
+   void (*draw)(void);
 } graw;
 
 
-struct pipe_screen *
-graw_init( void )
+static struct pipe_screen *
+graw_create_screen( void )
 {
    const char *default_driver;
    const char *driver;
    struct pipe_screen *screen = NULL;
    struct sw_winsys *winsys = NULL;
 
-   graw.display = XOpenDisplay(NULL);
-   if (graw.display == NULL)
-      return NULL;
-
    /* Create the underlying winsys, which performs presents to Xlib
     * drawables:
     */
@@ -78,14 +76,16 @@ graw_init( void )
  
 
 
-void *
-graw_create_window( int x,
-                    int y,
-                    unsigned width,
-                    unsigned height,
-                    enum pipe_format format )
+struct pipe_screen *
+graw_create_window_and_screen( int x,
+                               int y,
+                               unsigned width,
+                               unsigned height,
+                               enum pipe_format format,
+                               void **handle)
 {
-   struct xlib_drawable *handle = NULL;
+   struct pipe_screen *screen = NULL;
+   struct xlib_drawable *xlib_handle = NULL;
    XSetWindowAttributes attr;
    Window root;
    Window win = 0;
@@ -94,6 +94,9 @@ graw_create_window( int x,
    int n;
    int scrnum;
 
+   graw.display = XOpenDisplay(NULL);
+   if (graw.display == NULL)
+      return NULL;
 
    scrnum = DefaultScreen( graw.display );
    root = RootWindow( graw.display, scrnum );
@@ -105,8 +108,8 @@ graw_create_window( int x,
    if (graw.display == NULL)
       goto fail;
 
-   handle = CALLOC_STRUCT(xlib_drawable);
-   if (handle == NULL)
+   xlib_handle = CALLOC_STRUCT(xlib_drawable);
+   if (xlib_handle == NULL)
       goto fail;
 
 
@@ -148,7 +151,6 @@ graw_create_window( int x,
                               None, (char **)NULL, 0, &sizehints);
    }
 
-   XFree(visinfo);
    XMapWindow(graw.display, win);
    while (1) {
       XEvent e;
@@ -158,14 +160,27 @@ graw_create_window( int x,
       }
    }
    
-   handle->visual = visinfo->visual;
-   handle->drawable = (Drawable)win;
-   handle->depth = visinfo->depth;
-   return (void *)handle;
+   xlib_handle->visual = visinfo->visual;
+   xlib_handle->drawable = (Drawable)win;
+   xlib_handle->depth = visinfo->depth;
+   *handle = (void *)xlib_handle;
+
+   screen = graw_create_screen();
+   if (screen == NULL)
+      goto fail;
 
-fail:
-   FREE(handle);
    XFree(visinfo);
+   return screen;
+
+fail:
+   if (screen)
+      screen->destroy(screen);
+
+   if (xlib_handle)
+      FREE(xlib_handle);
+
+   if (visinfo)
+      XFree(visinfo);
 
    if (win)
       XDestroyWindow(graw.display, win);
@@ -174,8 +189,19 @@ fail:
 }
 
 
+void 
+graw_set_display_func( void (*draw)( void ) )
+{
+   graw.draw = draw;
+}
+
 void
-graw_destroy_window( void *xlib_drawable )
+graw_main_loop( void )
 {
+   int i;
+   for (i = 0; i < 10; i++) {
+      graw.draw();
+      sleep(1);
+   }
 }
 
index 2a55c7a5776ceada43f3c260a876068cb7cfd54e..144084f74f838cbda095da3ccee3243dde9e479e 100644 (file)
@@ -35,7 +35,7 @@ if env['platform'] == 'windows':
     else:
         sources += ['#src/gallium/state_trackers/wgl/opengl32.def']
         
-    drivers += [trace]
+    drivers += [trace, rbug]
 
     env['no_import_lib'] = 1
 
index add3a273945668713dc8e92abd02ebf8ac5a0db7..b173ceb994ab4e9b260e7dc888c8cf690afa13b8 100644 (file)
@@ -15,6 +15,7 @@ GL_TINY = 0$(MESA_MAJOR)0$(MESA_MINOR)0$(MESA_TINY)
 
 INCLUDE_DIRS = \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/mesa/main \
        -I$(TOP)/src/gallium/include \
@@ -41,8 +42,9 @@ LIBS = \
        $(TOP)/src/gallium/state_trackers/glx/xlib/libxlib.a \
        $(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/identity/libidentity.a \
-       $(TOP)/src/mesa/libglapi.a \
+       $(TOP)/src/mapi/glapi/libglapi.a \
        $(TOP)/src/mesa/libmesagallium.a \
        $(GALLIUM_AUXILIARIES) \
        $(CELL_SPU_LIB) \
index 63e4531263a691988a885ce233ce17f212c5905b..78703fd096d295d853e52a0b6277b7311179f694 100644 (file)
@@ -17,6 +17,7 @@ if env['dri']:
 env = env.Clone()
 
 env.Append(CPPPATH = [
+    '#/src/mapi',
     '#/src/mesa',
     '#/src/mesa/main',
     '#src/gallium/state_trackers/glx/xlib',
@@ -28,6 +29,7 @@ env.Prepend(LIBS = [
     st_xlib,
     ws_xlib,
     trace,
+    rbug,
     identity,
     glapi,
     mesa,
index 52a9e97b409bf5b536b3b992fb09f728d0d7e227..2f2439c6d42753ffff2495b809fd60dfa0effc60 100644 (file)
@@ -20,6 +20,7 @@ LIBS = \
        $(TOP)/src/gallium/winsys/i915/drm/libi915drm.a \
        $(TOP)/src/gallium/drivers/i915/libi915.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
        $(GALLIUM_AUXILIARIES)
 
index 104a1434a84ab7a05b2f31d32eb73f648813ae46..0aab30ff3c6de025805defb37a58b2b81be2baa7 100644 (file)
@@ -20,6 +20,7 @@ LIBS = \
        $(TOP)/src/gallium/winsys/i965/drm/libi965drm.a \
        $(TOP)/src/gallium/drivers/i965/libi965.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
        $(GALLIUM_AUXILIARIES)
 
index cd32914c0d3527664c6cd68f847628c9889996f5..85aa711a4f3d058c1bd099e2c9bed34e8e5a98d3 100644 (file)
@@ -20,6 +20,7 @@ LIBS = \
        $(TOP)/src/gallium/winsys/radeon/drm/libradeonwinsys.a \
        $(TOP)/src/gallium/drivers/r300/libr300.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/softpipe/libsoftpipe.a \
        $(GALLIUM_AUXILIARIES)
 
index 12bc307ef9baf2c12cea3b8097d1457139ed7b5d..e334d889957e47091efc01b660d92a5a570adccf 100644 (file)
@@ -22,6 +22,7 @@ LIBS = \
        $(TOP)/src/gallium/state_trackers/xorg/libxorgtracker.a \
        $(TOP)/src/gallium/winsys/svga/drm/libsvgadrm.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
+       $(TOP)/src/gallium/drivers/rbug/librbug.a \
        $(TOP)/src/gallium/drivers/svga/libsvga.a \
        $(GALLIUM_AUXILIARIES)
 
index b63ab99e050a8575a9778649ee260596bec703b1..d5edbebae8721447acc0d1d639662abbbe7cf7c5 100644 (file)
@@ -39,6 +39,7 @@ if env['platform'] == 'linux':
 
        env.Prepend(LIBS = [
                trace,
+               rbug,
                st_xorg,
                svgadrm,
                svga,
diff --git a/src/gallium/tests/graw/SConscript b/src/gallium/tests/graw/SConscript
new file mode 100644 (file)
index 0000000..7eab973
--- /dev/null
@@ -0,0 +1,25 @@
+Import('*')
+
+try:
+    graw
+except NameError:
+    print 'warning: graw library not avaiable: skipping build of graw test'
+    Return()
+
+env = env.Clone()
+
+env.Prepend(LIBPATH = [graw.dir])
+env.Prepend(LIBS = ['graw'])
+
+progs = [
+    'clear',
+    'tri',
+    'quad-tex',
+]
+
+for prog in progs:
+    env.Program(
+        target = prog,
+        source = prog + '.c',
+    )
+
diff --git a/src/gallium/tests/graw/clear.c b/src/gallium/tests/graw/clear.c
new file mode 100644 (file)
index 0000000..28c986e
--- /dev/null
@@ -0,0 +1,116 @@
+/* Display a cleared blue window.  This demo has no dependencies on
+ * any utility code, just the graw interface and gallium.
+ */
+
+#include "state_tracker/graw.h"
+#include "pipe/p_screen.h"
+#include "pipe/p_context.h"
+#include "pipe/p_state.h"
+#include "pipe/p_defines.h"
+
+#include "util/u_debug.h"       /* debug_dump_surface_bmp() */
+#include "os/os_time.h"       /* os_time_sleep() */
+
+enum pipe_format formats[] = {
+   PIPE_FORMAT_R8G8B8A8_UNORM,
+   PIPE_FORMAT_B8G8R8A8_UNORM,
+   PIPE_FORMAT_NONE
+};
+
+static const int WIDTH = 300;
+static const int HEIGHT = 300;
+
+struct pipe_screen *screen;
+struct pipe_context *ctx;
+struct pipe_surface *surf;
+static void *window = NULL;
+
+static void draw( void )
+{
+   float clear_color[4] = {1,0,1,1};
+
+   ctx->clear(ctx, PIPE_CLEAR_COLOR, clear_color, 0, 0);
+   ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL);
+
+#if 0
+   /* At the moment, libgraw leaks out/makes available some of the
+    * symbols from gallium/auxiliary, including these debug helpers.
+    * Will eventually want to bless some of these paths, and lock the
+    * others down so they aren't accessible from test programs.
+    *
+    * This currently just happens to work on debug builds - a release
+    * build will probably fail to link here:
+    */
+   debug_dump_surface_bmp(ctx, "result.bmp", surf);
+#endif
+
+   screen->flush_frontbuffer(screen, surf, window);
+}
+
+static void init( void )
+{
+   struct pipe_framebuffer_state fb;
+   struct pipe_resource *tex, templat;
+   int i;
+
+   /* It's hard to say whether window or screen should be created
+    * first.  Different environments would prefer one or the other.
+    *
+    * Also, no easy way of querying supported formats if the screen
+    * cannot be created first.
+    */
+   for (i = 0; 
+        window == NULL && formats[i] != PIPE_FORMAT_NONE;
+        i++) {
+      
+      screen = graw_create_window_and_screen(0,0,300,300,
+                                             formats[i],
+                                             &window);
+   }
+   if (window == NULL)
+      exit(2);
+   
+   ctx = screen->context_create(screen, NULL);
+   if (ctx == NULL)
+      exit(3);
+
+   templat.target = PIPE_TEXTURE_2D;
+   templat.format = formats[i];
+   templat.width0 = WIDTH;
+   templat.height0 = HEIGHT;
+   templat.depth0 = 1;
+   templat.last_level = 0;
+   templat.nr_samples = 1;
+   templat.bind = (PIPE_BIND_RENDER_TARGET |
+                   PIPE_BIND_DISPLAY_TARGET);
+   
+   tex = screen->resource_create(screen,
+                                 &templat);
+   if (tex == NULL)
+      exit(4);
+
+   surf = screen->get_tex_surface(screen, tex, 0, 0, 0,
+                                  PIPE_BIND_RENDER_TARGET |
+                                  PIPE_BIND_DISPLAY_TARGET);
+   if (surf == NULL)
+      exit(5);
+
+   memset(&fb, 0, sizeof fb);
+   fb.nr_cbufs = 1;
+   fb.width = WIDTH;
+   fb.height = HEIGHT;
+   fb.cbufs[0] = surf;
+
+   ctx->set_framebuffer_state(ctx, &fb);
+}
+
+
+
+int main( int argc, char *argv[] )
+{
+   init();
+
+   graw_set_display_func( draw );
+   graw_main_loop();
+   return 0;
+}
diff --git a/src/gallium/tests/graw/quad-tex.c b/src/gallium/tests/graw/quad-tex.c
new file mode 100644 (file)
index 0000000..225cbfc
--- /dev/null
@@ -0,0 +1,403 @@
+/* Display a cleared blue window.  This demo has no dependencies on
+ * any utility code, just the graw interface and gallium.
+ */
+
+#include "state_tracker/graw.h"
+#include "pipe/p_screen.h"
+#include "pipe/p_context.h"
+#include "pipe/p_shader_tokens.h"
+#include "pipe/p_state.h"
+#include "pipe/p_defines.h"
+#include <unistd.h>             /* for sleep() */
+
+#include "util/u_debug.h"       /* debug_dump_surface_bmp() */
+#include "util/u_inlines.h"
+#include "util/u_memory.h"      /* Offset() */
+#include "util/u_box.h"    
+
+enum pipe_format formats[] = {
+   PIPE_FORMAT_R8G8B8A8_UNORM,
+   PIPE_FORMAT_B8G8R8A8_UNORM,
+   PIPE_FORMAT_NONE
+};
+
+static const int WIDTH = 300;
+static const int HEIGHT = 300;
+
+static struct pipe_screen *screen = NULL;
+static struct pipe_context *ctx = NULL;
+static struct pipe_resource *rttex = NULL;
+static struct pipe_resource *samptex = NULL;
+static struct pipe_surface *surf = NULL;
+static struct pipe_sampler_view *sv = NULL;
+static void *sampler = NULL;
+static void *window = NULL;
+
+struct vertex {
+   float position[4];
+   float color[4];
+};
+
+static struct vertex vertices[] =
+{
+   { { 0.9, -0.9, 0.0, 1.0 },
+     { 1, 0, 0, 1 } },
+
+   { { 0.9,  0.9, 0.0, 1.0 },
+     { 1, 1, 0, 1 } },
+
+   { {-0.9,  0.9, 0.0, 1.0 },
+     { 0, 1, 0, 1 } },
+
+   { {-0.9,  -0.9, 0.0, 1.0 },
+     { 0, 0, 0, 1 } },
+};
+
+
+
+
+static void set_viewport( float x, float y,
+                          float width, float height,
+                          float near, float far)
+{
+   float z = far;
+   float half_width = (float)width / 2.0f;
+   float half_height = (float)height / 2.0f;
+   float half_depth = ((float)far - (float)near) / 2.0f;
+   struct pipe_viewport_state vp;
+
+   vp.scale[0] = half_width;
+   vp.scale[1] = half_height;
+   vp.scale[2] = half_depth;
+   vp.scale[3] = 1.0f;
+
+   vp.translate[0] = half_width + x;
+   vp.translate[1] = half_height + y;
+   vp.translate[2] = half_depth + z;
+   vp.translate[3] = 0.0f;
+
+   ctx->set_viewport_state( ctx, &vp );
+}
+
+static void set_vertices( void )
+{
+   struct pipe_vertex_element ve[2];
+   struct pipe_vertex_buffer vbuf;
+   void *handle;
+
+   memset(ve, 0, sizeof ve);
+
+   ve[0].src_offset = Offset(struct vertex, position);
+   ve[0].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
+   ve[1].src_offset = Offset(struct vertex, color);
+   ve[1].src_format = PIPE_FORMAT_R32G32B32A32_FLOAT;
+
+   handle = ctx->create_vertex_elements_state(ctx, 2, ve);
+   ctx->bind_vertex_elements_state(ctx, handle);
+
+
+   vbuf.stride = sizeof( struct vertex );
+   vbuf.max_index = sizeof(vertices) / vbuf.stride;
+   vbuf.buffer_offset = 0;
+   vbuf.buffer = screen->user_buffer_create(screen,
+                                            vertices,
+                                            sizeof(vertices),
+                                            PIPE_BIND_VERTEX_BUFFER);
+
+   ctx->set_vertex_buffers(ctx, 1, &vbuf);
+}
+
+static void set_vertex_shader( void )
+{
+   void *handle;
+   const char *text =
+      "VERT\n"
+      "DCL IN[0]\n"
+      "DCL IN[1]\n"
+      "DCL OUT[0], POSITION\n"
+      "DCL OUT[1], GENERIC[0]\n"
+      "  0: MOV OUT[1], IN[1]\n"
+      "  1: MOV OUT[0], IN[0]\n"
+      "  2: END\n";
+
+   handle = graw_parse_vertex_shader(ctx, text);
+   ctx->bind_vs_state(ctx, handle);
+}
+
+static void set_fragment_shader( void )
+{
+   void *handle;
+   const char *text =
+      "FRAG\n"
+      "DCL IN[0], GENERIC[0], PERSPECTIVE\n"
+      "DCL OUT[0], COLOR\n"
+      "DCL TEMP[0]\n"
+      "DCL SAMP[0]\n"
+      "  0: TXP TEMP[0], IN[0], SAMP[0], 2D\n"
+      "  1: MOV OUT[0], TEMP[0]\n"
+      "  2: END\n";
+
+   handle = graw_parse_fragment_shader(ctx, text);
+   ctx->bind_fs_state(ctx, handle);
+}
+
+
+static void draw( void )
+{
+   float clear_color[4] = {.5,.5,.5,1};
+
+   ctx->clear(ctx, PIPE_CLEAR_COLOR, clear_color, 0, 0);
+   ctx->draw_arrays(ctx, PIPE_PRIM_QUADS, 0, 4);
+   ctx->flush(ctx, PIPE_FLUSH_RENDER_CACHE, NULL);
+
+#if 0
+   /* At the moment, libgraw leaks out/makes available some of the
+    * symbols from gallium/auxiliary, including these debug helpers.
+    * Will eventually want to bless some of these paths, and lock the
+    * others down so they aren't accessible from test programs.
+    *
+    * This currently just happens to work on debug builds - a release
+    * build will probably fail to link here:
+    */
+   debug_dump_surface_bmp(ctx, "result.bmp", surf);
+#endif
+
+   screen->flush_frontbuffer(screen, surf, window);
+}
+
+#define SIZE 16
+
+static void init_tex( void )
+{ 
+   struct pipe_sampler_view sv_template;
+   struct pipe_sampler_state sampler_desc;
+   struct pipe_resource templat;
+   struct pipe_box box;
+   ubyte tex2d[SIZE][SIZE][4];
+   int s, t;
+
+#if (SIZE != 2)
+   for (s = 0; s < SIZE; s++) {
+      for (t = 0; t < SIZE; t++) {
+         if (0) {
+            int x = (s ^ t) & 1;
+           tex2d[t][s][0] = (x) ? 0 : 63;
+           tex2d[t][s][1] = (x) ? 0 : 128;
+           tex2d[t][s][2] = 0;
+           tex2d[t][s][3] = 0xff;
+         }
+         else {
+            int x = ((s ^ t) >> 2) & 1;
+           tex2d[t][s][0] = s*255/(SIZE-1);
+           tex2d[t][s][1] = t*255/(SIZE-1);
+           tex2d[t][s][2] = (x) ? 0 : 128;
+           tex2d[t][s][3] = 0xff;
+         }
+      }
+   }
+#else
+   tex2d[0][0][0] = 0;
+   tex2d[0][0][1] = 255;
+   tex2d[0][0][2] = 255;
+   tex2d[0][0][3] = 0;
+
+   tex2d[0][1][0] = 0;
+   tex2d[0][1][1] = 0;
+   tex2d[0][1][2] = 255;
+   tex2d[0][1][3] = 255;
+
+   tex2d[1][0][0] = 255;
+   tex2d[1][0][1] = 255;
+   tex2d[1][0][2] = 0;
+   tex2d[1][0][3] = 255;
+
+   tex2d[1][1][0] = 255;
+   tex2d[1][1][1] = 0;
+   tex2d[1][1][2] = 0;
+   tex2d[1][1][3] = 255;
+#endif
+
+   templat.target = PIPE_TEXTURE_2D;
+   templat.format = PIPE_FORMAT_B8G8R8A8_UNORM;
+   templat.width0 = SIZE;
+   templat.height0 = SIZE;
+   templat.depth0 = 1;
+   templat.last_level = 0;
+   templat.nr_samples = 1;
+   templat.bind = PIPE_BIND_SAMPLER_VIEW;
+
+   
+   samptex = screen->resource_create(screen,
+                                 &templat);
+   if (samptex == NULL)
+      exit(4);
+
+   u_box_2d(0,0,SIZE,SIZE, &box);
+
+   ctx->transfer_inline_write(ctx,
+                              samptex,
+                              u_subresource(0,0),
+                              PIPE_TRANSFER_WRITE,
+                              &box,
+                              tex2d,
+                              sizeof tex2d[0],
+                              sizeof tex2d);
+
+   /* Possibly read back & compare against original data:
+    */
+   if (0)
+   {
+      struct pipe_transfer *t;
+      uint32_t *ptr;
+      t = pipe_get_transfer(ctx, samptex,
+                            0, 0, 0, /* face, level, zslice */
+                            PIPE_TRANSFER_READ,
+                            0, 0, SIZE, SIZE); /* x, y, width, height */
+
+      ptr = ctx->transfer_map(ctx, t);
+
+      if (memcmp(ptr, tex2d, sizeof tex2d) != 0) {
+         assert(0);
+         exit(9);
+      }
+
+      ctx->transfer_unmap(ctx, t);
+
+      ctx->transfer_destroy(ctx, t);
+   }
+
+   memset(&sv_template, 0, sizeof sv_template);
+   sv_template.format = samptex->format;
+   sv_template.texture = samptex;
+   sv_template.first_level = 0;
+   sv_template.last_level = 0;
+   sv_template.swizzle_r = 0;
+   sv_template.swizzle_g = 1;
+   sv_template.swizzle_b = 2;
+   sv_template.swizzle_a = 3;
+   sv = ctx->create_sampler_view(ctx, samptex, &sv_template);
+   if (sv == NULL)
+      exit(5);
+
+   ctx->set_fragment_sampler_views(ctx, 1, &sv);
+   
+
+   memset(&sampler_desc, 0, sizeof sampler_desc);
+   sampler_desc.wrap_s = PIPE_TEX_WRAP_REPEAT;
+   sampler_desc.wrap_t = PIPE_TEX_WRAP_REPEAT;
+   sampler_desc.wrap_r = PIPE_TEX_WRAP_REPEAT;
+   sampler_desc.min_img_filter = PIPE_TEX_FILTER_NEAREST;
+   sampler_desc.min_mip_filter = PIPE_TEX_MIPFILTER_NONE;
+   sampler_desc.mag_img_filter = PIPE_TEX_FILTER_NEAREST;
+   sampler_desc.compare_mode = PIPE_TEX_COMPARE_NONE;
+   sampler_desc.compare_func = 0;
+   sampler_desc.normalized_coords = 1;
+   sampler_desc.max_anisotropy = 0;
+   
+   sampler = ctx->create_sampler_state(ctx, &sampler_desc);
+   if (sampler == NULL)
+      exit(6);
+
+   ctx->bind_fragment_sampler_states(ctx, 1, &sampler);
+   
+}
+
+static void init( void )
+{
+   struct pipe_framebuffer_state fb;
+   struct pipe_resource templat;
+   int i;
+
+   /* It's hard to say whether window or screen should be created
+    * first.  Different environments would prefer one or the other.
+    *
+    * Also, no easy way of querying supported formats if the screen
+    * cannot be created first.
+    */
+   for (i = 0; 
+        window == NULL && formats[i] != PIPE_FORMAT_NONE;
+        i++) {
+      
+      screen = graw_create_window_and_screen(0,0,300,300,
+                                             formats[i],
+                                             &window);
+   }
+   
+   ctx = screen->context_create(screen, NULL);
+   if (ctx == NULL)
+      exit(3);
+
+   templat.target = PIPE_TEXTURE_2D;
+   templat.format = formats[i];
+   templat.width0 = WIDTH;
+   templat.height0 = HEIGHT;
+   templat.depth0 = 1;
+   templat.last_level = 0;
+   templat.nr_samples = 1;
+   templat.bind = (PIPE_BIND_RENDER_TARGET |
+                   PIPE_BIND_DISPLAY_TARGET);
+   
+   rttex = screen->resource_create(screen,
+                                 &templat);
+   if (rttex == NULL)
+      exit(4);
+
+   surf = screen->get_tex_surface(screen, rttex, 0, 0, 0,
+                                  PIPE_BIND_RENDER_TARGET |
+                                  PIPE_BIND_DISPLAY_TARGET);
+   if (surf == NULL)
+      exit(5);
+
+   memset(&fb, 0, sizeof fb);
+   fb.nr_cbufs = 1;
+   fb.width = WIDTH;
+   fb.height = HEIGHT;
+   fb.cbufs[0] = surf;
+
+   ctx->set_framebuffer_state(ctx, &fb);
+   
+   {
+      struct pipe_blend_state blend;
+      void *handle;
+      memset(&blend, 0, sizeof blend);
+      blend.rt[0].colormask = PIPE_MASK_RGBA;
+      handle = ctx->create_blend_state(ctx, &blend);
+      ctx->bind_blend_state(ctx, handle);
+   }
+
+   {
+      struct pipe_depth_stencil_alpha_state depthstencil;
+      void *handle;
+      memset(&depthstencil, 0, sizeof depthstencil);
+      handle = ctx->create_depth_stencil_alpha_state(ctx, &depthstencil);
+      ctx->bind_depth_stencil_alpha_state(ctx, handle);
+   }
+
+   {
+      struct pipe_rasterizer_state rasterizer;
+      void *handle;
+      memset(&rasterizer, 0, sizeof rasterizer);
+      rasterizer.cull_face = PIPE_FACE_NONE;
+      rasterizer.gl_rasterization_rules = 1;
+      handle = ctx->create_rasterizer_state(ctx, &rasterizer);
+      ctx->bind_rasterizer_state(ctx, handle);
+   }
+
+   set_viewport(0, 0, WIDTH, HEIGHT, 30, 1000);
+
+   init_tex();
+
+   set_vertices();
+   set_vertex_shader();
+   set_fragment_shader();
+}
+
+
+int main( int argc, char *argv[] )
+{
+   init();
+
+   graw_set_display_func( draw );
+   graw_main_loop();
+   return 0;
+}
diff --git a/src/gallium/tests/raw/SConscript b/src/gallium/tests/raw/SConscript
deleted file mode 100644 (file)
index 073b979..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-Import('*')
-
-env = env.Clone()
-
-env.Prepend(LIBPATH = [graw.dir])
-env.Prepend(LIBS = [graw.name])
-
-progs = [
-    'clear'
-]
-
-for prog in progs:
-    env.Program(
-        target = prog,
-        source = prog + '.c',
-    )
-
diff --git a/src/gallium/tests/raw/clear.c b/src/gallium/tests/raw/clear.c
deleted file mode 100644 (file)
index 706e3be..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Display a cleared blue window.  This demo has no dependencies on
- * any utility code, just the graw interface and gallium.
- */
-
-#include "state_tracker/graw.h"
-#include "pipe/p_screen.h"
-#include "pipe/p_context.h"
-#include "pipe/p_state.h"
-#include "pipe/p_defines.h"
-#include <unistd.h>             /* for sleep() */
-
-#include "util/u_debug.h"       /* debug_dump_surface_bmp() */
-
-enum pipe_format formats[] = {
-   PIPE_FORMAT_R8G8B8A8_UNORM,
-   PIPE_FORMAT_B8G8R8A8_UNORM,
-   PIPE_FORMAT_NONE
-};
-
-static const int WIDTH = 300;
-static const int HEIGHT = 300;
-
-int main( int argc, char *argv[] )
-{
-   struct pipe_screen *screen;
-   struct pipe_context *pipe;
-   struct pipe_surface *surf;
-   struct pipe_framebuffer_state fb;
-   struct pipe_texture *tex, templat;
-   void *window = NULL;
-   float clear_color[4] = {1,0,1,1};
-   int i;
-
-   screen = graw_init();
-   if (screen == NULL)
-      exit(1);
-
-   for (i = 0; 
-        window == NULL && formats[i] != PIPE_FORMAT_NONE;
-        i++) {
-      
-      window = graw_create_window(0,0,300,300, formats[i]);
-   }
-   
-   if (window == NULL)
-      exit(2);
-   
-   pipe = screen->context_create(screen, NULL);
-   if (pipe == NULL)
-      exit(3);
-
-   templat.target = PIPE_TEXTURE_2D;
-   templat.format = formats[i];
-   templat.width0 = WIDTH;
-   templat.height0 = HEIGHT;
-   templat.depth0 = 1;
-   templat.last_level = 0;
-   templat.nr_samples = 1;
-   templat.bind = (PIPE_BIND_RENDER_TARGET |
-                        PIPE_BIND_DISPLAY_TARGET);
-   
-   tex = screen->resource_create(screen,
-                                &templat);
-   if (tex == NULL)
-      exit(4);
-
-   surf = screen->get_tex_surface(screen, tex, 0, 0, 0,
-                                  PIPE_BIND_RENDER_TARGET |
-                                  PIPE_BIND_DISPLAY_TARGET);
-   if (surf == NULL)
-      exit(5);
-
-   memset(&fb, 0, sizeof fb);
-   fb.nr_cbufs = 1;
-   fb.width = WIDTH;
-   fb.height = HEIGHT;
-   fb.cbufs[0] = surf;
-
-   pipe->set_framebuffer_state(pipe, &fb);
-   pipe->clear(pipe, PIPE_CLEAR_COLOR, clear_color, 0, 0);
-   pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE, NULL);
-
-   /* At the moment, libgraw includes/makes available all the symbols
-    * from gallium/auxiliary, including these debug helpers.  Will
-    * eventually want to bless some of these paths, and lock the
-    * others down so they aren't accessible from test programs.
-    */
-   if (0)
-      debug_dump_surface_bmp(pipe, "result.bmp", surf);
-
-   screen->flush_frontbuffer(screen, surf, window);
-
-   sleep(100);
-   return 0;
-}
index 522ff3cb42de8ec20c97b6cff26f51e3fa71901d..93f24876cbb9099bb06ebee16ded82bd932c9f47 100644 (file)
@@ -201,8 +201,7 @@ static void init_prog(struct program *p)
 
        /* rasterizer */
        memset(&p->rasterizer, 0, sizeof(p->rasterizer));
-       p->rasterizer.front_winding = PIPE_WINDING_CW;
-       p->rasterizer.cull_mode = PIPE_WINDING_NONE;
+       p->rasterizer.cull_face = PIPE_FACE_NONE;
        p->rasterizer.gl_rasterization_rules = 1;
 
        /* sampler */
index 48305240a4b8d920ecebff69d379121216588407..7823c27727dab987b44c42ee5fc8dc11708f3dc8 100644 (file)
@@ -151,8 +151,7 @@ static void init_prog(struct program *p)
 
        /* rasterizer */
        memset(&p->rasterizer, 0, sizeof(p->rasterizer));
-       p->rasterizer.front_winding = PIPE_WINDING_CW;
-       p->rasterizer.cull_mode = PIPE_WINDING_NONE;
+       p->rasterizer.cull_face = PIPE_FACE_NONE;
        p->rasterizer.gl_rasterization_rules = 1;
 
        /* drawing destination */
index 2013ee97c1c37751b66a5d5efd4c877dc79f1b93..330b1ab834ceaf113e48715c918fda170fd0247f 100644 (file)
@@ -1,5 +1,10 @@
 Import('*')
 
+
+SConscript([
+       'sw/wrapper/SConscript',
+])
+
 if 'xlib' in env['winsys']:
        SConscript([
                'sw/xlib/SConscript',
@@ -12,6 +17,7 @@ if 'gdi' in env['winsys']:
 
 if env['dri']:
        SConscript([
+               'sw/drm/SConscript',
                'sw/dri/SConscript',
        ])
 
index 33a17496b2b188a407a430e63f67e903ede9d445..fb5e50ce810c386c39d78790d01a84eb384ca7f3 100644 (file)
@@ -463,7 +463,7 @@ i965_libdrm_bo_flush_range(struct brw_winsys_buffer *buffer,
       brw_dump_data( idws->id,
                     buf->data_type,
                     buf->bo->offset + offset, 
-                    buf->bo->virtual + offset, 
+                    (char*)buf->bo->virtual + offset, 
                     length );
 }
 
index 3730db6997ed533ba6d79ee4f0537f19c321b064..cc8249395c53bfce5b47ef8a3a3f1fe60b90a5c5 100644 (file)
@@ -38,7 +38,7 @@ LIBS = \
        $(TOP)/src/gallium/drivers/i965/libi965.a \
        $(TOP)/src/gallium/drivers/trace/libtrace.a \
        $(TOP)/src/gallium/state_trackers/glx/xlib/libxlib.a \
-       $(TOP)/src/mesa/libglapi.a \
+       $(TOP)/src/mapi/glapi/libglapi.a \
        $(TOP)/src/mesa/libmesagallium.a \
        $(GALLIUM_AUXILIARIES) 
 
index b48b6358e01a4dec2000805ba5d1155dcf3bf84f..b9ecf9ded071e9c80265f2ad93e16cb701297642 100644 (file)
@@ -88,4 +88,7 @@ boolean radeon_drm_bufmgr_get_handle(struct pb_buffer *_buf,
 
 boolean radeon_drm_bufmgr_is_buffer_referenced(struct pb_buffer *_buf,
                                                enum r300_reference_domain domain);
+
+void radeon_drm_bufmgr_wait(struct pb_buffer *_buf);
+
 #endif
index b8366498922803844b3d895e23242e8caf5e1ee1..a05205da8861fc4e76290e5ebcae62cbdac8be18 100644 (file)
@@ -419,3 +419,10 @@ void radeon_drm_bufmgr_flush_maps(struct pb_manager *_mgr)
 
     make_empty_list(&mgr->buffer_map_list);
 }
+
+void radeon_drm_bufmgr_wait(struct pb_buffer *_buf)
+{
+    struct radeon_drm_buffer *buf = get_drm_buffer(_buf);
+
+    radeon_bo_wait(buf->bo);
+}
index fb779e4033b37c8e93b865738973cc39f2a40f3d..e188f7e7ccd50271f34300c7dadb2c73ebc4d96f 100644 (file)
@@ -86,7 +86,7 @@ static void *radeon_r300_winsys_buffer_map(struct r300_winsys_screen *ws,
                                           unsigned usage)
 {
     struct pb_buffer *_buf = radeon_pb_buffer(buf);
-    
+
     return pb_map(_buf, usage);
 }
 
@@ -98,6 +98,13 @@ static void radeon_r300_winsys_buffer_unmap(struct r300_winsys_screen *ws,
     pb_unmap(_buf);
 }
 
+static void radeon_r300_winsys_buffer_wait(struct r300_winsys_screen *ws,
+                                           struct r300_winsys_buffer *buf)
+{
+    struct pb_buffer *_buf = radeon_pb_buffer(buf);
+    radeon_drm_bufmgr_wait(_buf);
+}
+
 static void radeon_r300_winsys_buffer_reference(struct r300_winsys_screen *rws,
                                                struct r300_winsys_buffer **pdst,
                                                struct r300_winsys_buffer *src)
@@ -343,6 +350,7 @@ radeon_setup_winsys(int fd, struct radeon_libdrm_winsys* ws)
     ws->base.buffer_get_tiling = radeon_r300_winsys_buffer_get_tiling;
     ws->base.buffer_map = radeon_r300_winsys_buffer_map;
     ws->base.buffer_unmap = radeon_r300_winsys_buffer_unmap;
+    ws->base.buffer_wait = radeon_r300_winsys_buffer_wait;
     ws->base.buffer_reference = radeon_r300_winsys_buffer_reference;
     ws->base.buffer_from_handle = radeon_r300_winsys_buffer_from_handle;
     ws->base.buffer_get_handle = radeon_r300_winsys_buffer_get_handle;
index edaf9458bee66307440b60d696f31c1f2060f992..3ad4c725727bce4c0ec0edc02d578b19bc488edf 100644 (file)
@@ -2,6 +2,8 @@ Import('*')
 
 env = env.Clone()
 
+env.ParseConfig('pkg-config --cflags libdrm')
+
 if env['gcc']:
        env.Append(CCFLAGS = ['-fvisibility=hidden'])
        env.Append(CPPDEFINES = [
diff --git a/src/gallium/winsys/sw/drm/SConscript b/src/gallium/winsys/sw/drm/SConscript
new file mode 100644 (file)
index 0000000..15a2e05
--- /dev/null
@@ -0,0 +1,21 @@
+#######################################################################
+# SConscript for xlib winsys
+
+
+Import('*')
+
+env = env.Clone()
+
+env.Append(CPPPATH = [
+    '#/src/gallium/include',
+    '#/src/gallium/auxiliary',
+    '#/src/gallium/drivers',
+])
+
+ws_drm = env.ConvenienceLibrary(
+    target = 'ws_drm',
+    source = [
+       'sw_drm_api.c',
+    ]
+)
+Export('ws_drm')
diff --git a/src/gallium/winsys/sw/wrapper/SConscript b/src/gallium/winsys/sw/wrapper/SConscript
new file mode 100644 (file)
index 0000000..4c60488
--- /dev/null
@@ -0,0 +1,21 @@
+#######################################################################
+# SConscript for xlib winsys
+
+
+Import('*')
+
+env = env.Clone()
+
+env.Append(CPPPATH = [
+    '#/src/gallium/include',
+    '#/src/gallium/auxiliary',
+    '#/src/gallium/drivers',
+])
+
+ws_wrapper = env.ConvenienceLibrary(
+    target = 'ws_wrapper',
+    source = [
+       'wrapper_sw_winsys.c',
+    ]
+)
+Export('ws_wrapper')
index d4d4270eb864ab91b9522715de823e8218c77dc4..b997abda9b0724dd8f394d79fd844b55893f5ed9 100644 (file)
@@ -145,6 +145,7 @@ wsw_dt_create(struct sw_winsys *ws,
     * XXX Why don't we just get the template.
     */
    memset(&templ, 0, sizeof(templ));
+   templ.target = PIPE_TEXTURE_2D;
    templ.width0 = width;
    templ.height0 = height;
    templ.format = format;
@@ -175,6 +176,18 @@ wsw_dt_from_handle(struct sw_winsys *ws,
    return wsw_dt_wrap_texture(wsw, tex, stride);
 }
 
+static boolean
+wsw_dt_get_handle(struct sw_winsys *ws,
+                  struct sw_displaytarget *dt,
+                  struct winsys_handle *whandle)
+{
+   struct wrapper_sw_winsys *wsw = wrapper_sw_winsys(ws);
+   struct wrapper_sw_displaytarget *wdt = wrapper_sw_displaytarget(dt);
+   struct pipe_resource *tex = wdt->tex;
+
+   return wsw->screen->resource_get_handle(wsw->screen, tex, whandle);
+}
+
 static void *
 wsw_dt_map(struct sw_winsys *ws,
            struct sw_displaytarget *dt,
@@ -267,6 +280,7 @@ wrapper_sw_winsys_warp_pipe_screen(struct pipe_screen *screen)
 
    wsw->base.displaytarget_create = wsw_dt_create;
    wsw->base.displaytarget_from_handle = wsw_dt_from_handle;
+   wsw->base.displaytarget_get_handle = wsw_dt_get_handle;
    wsw->base.displaytarget_map = wsw_dt_map;
    wsw->base.displaytarget_unmap = wsw_dt_unmap;
    wsw->base.displaytarget_destroy = wsw_dt_destroy;
diff --git a/src/gles/Makefile b/src/gles/Makefile
deleted file mode 100644 (file)
index d023c14..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-TOP = ../..
-MESA = $(TOP)/src/mesa
-include $(TOP)/configs/current
-include $(MESA)/sources.mak
-
-GLESv1_CM_ASM := $(addprefix $(MESA)/es/glapi/glapi-es1/,$(GLAPI_ASM_SOURCES))
-GLESv2_ASM := $(addprefix $(MESA)/es/glapi/glapi-es2/,$(GLAPI_ASM_SOURCES))
-API_SOURCES := $(addprefix $(MESA)/,$(GLAPI_SOURCES))
-
-$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : PREFIX = es1
-$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : NAME = GLESv1_CM
-
-$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : PREFIX = es2
-$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : NAME = GLESv2
-
-INCLUDES = -I$(TOP)/include -I$(MESA)/es/glapi/glapi-$(PREFIX) -I$(MESA)
-
-OBJECTS = \
-       $(notdir $(GLAPI_ASM_SOURCES:%.S=%.o)) \
-       $(notdir $(GLAPI_SOURCES:%.c=%.o))
-
-GLESv1_CM_OBJECTS = $(addprefix es1-,$(OBJECTS))
-GLESv2_OBJECTS = $(addprefix es2-,$(OBJECTS))
-
-es1-%.o: $(dir $(GLESv1_CM_ASM))%.S
-       $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
-es1-%.o: $(MESA)/glapi/%.c
-       $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
-
-es2-%.o: $(dir $(GLESv2_ASM))%.S
-       $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
-es2-%.o: $(MESA)/glapi/%.c
-       $(CC) -c $(CFLAGS) $(INCLUDES) -o $@ $<
-
-default: depend \
-       $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) \
-       $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME)
-
-$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) : $(GLESv1_CM_OBJECTS)
-$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : $(GLESv2_OBJECTS)
-
-$(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) \
-$(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME) : Makefile
-       $(MKLIB) -o $($(NAME)_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
-               -major 1 -minor 2 $(MKLIB_OPTIONS) \
-               -install $(TOP)/$(LIB_DIR) -id \
-               $(INSTALL_LIB_DIR)/lib$($(NAME)_LIB).1.dylib \
-               $($(NAME)_LIB_DEPS) $($(NAME)_OBJECTS)
-
-depend: Makefile
-       rm -f depend
-       touch depend
-       $(MKDEP) $(MKDEP_OPTIONS) $(INCLUDES) $(API_SOURCES) \
-               $(ES1_API_ASM)  $(ES2_API_ASM)
-
-# Emacs tags
-tags:
-       etags `find . -name \*.[ch]` `find $(TOP)/include`
-
-install: $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_NAME) $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_NAME)
-       $(MAKE) -C $(TOP)/src/mesa install-es2 install-es1
-
-# Remove .o and backup files
-clean:
-       -rm -f $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_GLOB)
-       -rm -f $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_GLOB)
-       -rm -f *.o *~
-       -rm -f depend depend.bak
-
--include depend
index 624222f9fb1dbafcce9c83615d8b6706e3c227dd..987236b7d30f9e55fcaf110a729725d6f0d060d6 100644 (file)
@@ -525,6 +525,12 @@ PFNGLFRAMEBUFFERTEXTUREPROC __glewFramebufferTexture = NULL;
 PFNGLGETBUFFERPARAMETERI64VPROC __glewGetBufferParameteri64v = NULL;
 PFNGLGETINTEGER64I_VPROC __glewGetInteger64i_v = NULL;
 
+PFNGLBLENDEQUATIONSEPARATEIPROC __glewBlendEquationSeparatei = NULL;
+PFNGLBLENDEQUATIONIPROC __glewBlendEquationi = NULL;
+PFNGLBLENDFUNCSEPARATEIPROC __glewBlendFuncSeparatei = NULL;
+PFNGLBLENDFUNCIPROC __glewBlendFunci = NULL;
+PFNGLMINSAMPLESHADINGPROC __glewMinSampleShading = NULL;
+
 PFNGLTBUFFERMASK3DFXPROC __glewTbufferMask3DFX = NULL;
 
 PFNGLBLENDEQUATIONINDEXEDAMDPROC __glewBlendEquationIndexedAMD = NULL;
@@ -589,6 +595,9 @@ PFNGLMAPVERTEXATTRIB1FAPPLEPROC __glewMapVertexAttrib1fAPPLE = NULL;
 PFNGLMAPVERTEXATTRIB2DAPPLEPROC __glewMapVertexAttrib2dAPPLE = NULL;
 PFNGLMAPVERTEXATTRIB2FAPPLEPROC __glewMapVertexAttrib2fAPPLE = NULL;
 
+PFNGLBINDFRAGDATALOCATIONINDEXEDPROC __glewBindFragDataLocationIndexed = NULL;
+PFNGLGETFRAGDATAINDEXPROC __glewGetFragDataIndex = NULL;
+
 PFNGLCLAMPCOLORARBPROC __glewClampColorARB = NULL;
 
 PFNGLCOPYBUFFERSUBDATAPROC __glewCopyBufferSubData = NULL;
@@ -605,6 +614,9 @@ PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC __glewDrawElementsInstancedBaseVertex =
 PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC __glewDrawRangeElementsBaseVertex = NULL;
 PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC __glewMultiDrawElementsBaseVertex = NULL;
 
+PFNGLDRAWARRAYSINDIRECTPROC __glewDrawArraysIndirect = NULL;
+PFNGLDRAWELEMENTSINDIRECTPROC __glewDrawElementsIndirect = NULL;
+
 PFNGLDRAWARRAYSINSTANCEDARBPROC __glewDrawArraysInstancedARB = NULL;
 PFNGLDRAWELEMENTSINSTANCEDARBPROC __glewDrawElementsInstancedARB = NULL;
 
@@ -731,6 +743,21 @@ PFNGLPROVOKINGVERTEXPROC __glewProvokingVertex = NULL;
 
 PFNGLMINSAMPLESHADINGARBPROC __glewMinSampleShadingARB = NULL;
 
+PFNGLBINDSAMPLERPROC __glewBindSampler = NULL;
+PFNGLDELETESAMPLERSPROC __glewDeleteSamplers = NULL;
+PFNGLGENSAMPLERSPROC __glewGenSamplers = NULL;
+PFNGLGETSAMPLERPARAMETERIIVPROC __glewGetSamplerParameterIiv = NULL;
+PFNGLGETSAMPLERPARAMETERIUIVPROC __glewGetSamplerParameterIuiv = NULL;
+PFNGLGETSAMPLERPARAMETERFVPROC __glewGetSamplerParameterfv = NULL;
+PFNGLGETSAMPLERPARAMETERIVPROC __glewGetSamplerParameteriv = NULL;
+PFNGLISSAMPLERPROC __glewIsSampler = NULL;
+PFNGLSAMPLERPARAMETERIIVPROC __glewSamplerParameterIiv = NULL;
+PFNGLSAMPLERPARAMETERIUIVPROC __glewSamplerParameterIuiv = NULL;
+PFNGLSAMPLERPARAMETERFPROC __glewSamplerParameterf = NULL;
+PFNGLSAMPLERPARAMETERFVPROC __glewSamplerParameterfv = NULL;
+PFNGLSAMPLERPARAMETERIPROC __glewSamplerParameteri = NULL;
+PFNGLSAMPLERPARAMETERIVPROC __glewSamplerParameteriv = NULL;
+
 PFNGLATTACHOBJECTARBPROC __glewAttachObjectARB = NULL;
 PFNGLCOMPILESHADERARBPROC __glewCompileShaderARB = NULL;
 PFNGLCREATEPROGRAMOBJECTARBPROC __glewCreateProgramObjectARB = NULL;
@@ -771,6 +798,22 @@ PFNGLUNIFORMMATRIX4FVARBPROC __glewUniformMatrix4fvARB = NULL;
 PFNGLUSEPROGRAMOBJECTARBPROC __glewUseProgramObjectARB = NULL;
 PFNGLVALIDATEPROGRAMARBPROC __glewValidateProgramARB = NULL;
 
+PFNGLGETACTIVESUBROUTINENAMEPROC __glewGetActiveSubroutineName = NULL;
+PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC __glewGetActiveSubroutineUniformName = NULL;
+PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC __glewGetActiveSubroutineUniformiv = NULL;
+PFNGLGETPROGRAMSTAGEIVPROC __glewGetProgramStageiv = NULL;
+PFNGLGETSUBROUTINEINDEXPROC __glewGetSubroutineIndex = NULL;
+PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC __glewGetSubroutineUniformLocation = NULL;
+PFNGLGETUNIFORMSUBROUTINEUIVPROC __glewGetUniformSubroutineuiv = NULL;
+PFNGLUNIFORMSUBROUTINESUIVPROC __glewUniformSubroutinesuiv = NULL;
+
+PFNGLCOMPILESHADERINCLUDEARBPROC __glewCompileShaderIncludeARB = NULL;
+PFNGLDELETENAMEDSTRINGARBPROC __glewDeleteNamedStringARB = NULL;
+PFNGLGETNAMEDSTRINGARBPROC __glewGetNamedStringARB = NULL;
+PFNGLGETNAMEDSTRINGIVARBPROC __glewGetNamedStringivARB = NULL;
+PFNGLISNAMEDSTRINGARBPROC __glewIsNamedStringARB = NULL;
+PFNGLNAMEDSTRINGARBPROC __glewNamedStringARB = NULL;
+
 PFNGLCLIENTWAITSYNCPROC __glewClientWaitSync = NULL;
 PFNGLDELETESYNCPROC __glewDeleteSync = NULL;
 PFNGLFENCESYNCPROC __glewFenceSync = NULL;
@@ -779,6 +822,9 @@ PFNGLGETSYNCIVPROC __glewGetSynciv = NULL;
 PFNGLISSYNCPROC __glewIsSync = NULL;
 PFNGLWAITSYNCPROC __glewWaitSync = NULL;
 
+PFNGLPATCHPARAMETERFVPROC __glewPatchParameterfv = NULL;
+PFNGLPATCHPARAMETERIPROC __glewPatchParameteri = NULL;
+
 PFNGLTEXBUFFERARBPROC __glewTexBufferARB = NULL;
 
 PFNGLCOMPRESSEDTEXIMAGE1DARBPROC __glewCompressedTexImage1DARB = NULL;
@@ -794,6 +840,23 @@ PFNGLSAMPLEMASKIPROC __glewSampleMaski = NULL;
 PFNGLTEXIMAGE2DMULTISAMPLEPROC __glewTexImage2DMultisample = NULL;
 PFNGLTEXIMAGE3DMULTISAMPLEPROC __glewTexImage3DMultisample = NULL;
 
+PFNGLGETQUERYOBJECTI64VPROC __glewGetQueryObjecti64v = NULL;
+PFNGLGETQUERYOBJECTUI64VPROC __glewGetQueryObjectui64v = NULL;
+PFNGLQUERYCOUNTERPROC __glewQueryCounter = NULL;
+
+PFNGLBINDTRANSFORMFEEDBACKPROC __glewBindTransformFeedback = NULL;
+PFNGLDELETETRANSFORMFEEDBACKSPROC __glewDeleteTransformFeedbacks = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKPROC __glewDrawTransformFeedback = NULL;
+PFNGLGENTRANSFORMFEEDBACKSPROC __glewGenTransformFeedbacks = NULL;
+PFNGLISTRANSFORMFEEDBACKPROC __glewIsTransformFeedback = NULL;
+PFNGLPAUSETRANSFORMFEEDBACKPROC __glewPauseTransformFeedback = NULL;
+PFNGLRESUMETRANSFORMFEEDBACKPROC __glewResumeTransformFeedback = NULL;
+
+PFNGLBEGINQUERYINDEXEDPROC __glewBeginQueryIndexed = NULL;
+PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC __glewDrawTransformFeedbackStream = NULL;
+PFNGLENDQUERYINDEXEDPROC __glewEndQueryIndexed = NULL;
+PFNGLGETQUERYINDEXEDIVPROC __glewGetQueryIndexediv = NULL;
+
 PFNGLLOADTRANSPOSEMATRIXDARBPROC __glewLoadTransposeMatrixdARB = NULL;
 PFNGLLOADTRANSPOSEMATRIXFARBPROC __glewLoadTransposeMatrixfARB = NULL;
 PFNGLMULTTRANSPOSEMATRIXDARBPROC __glewMultTransposeMatrixdARB = NULL;
@@ -905,6 +968,45 @@ PFNGLBINDATTRIBLOCATIONARBPROC __glewBindAttribLocationARB = NULL;
 PFNGLGETACTIVEATTRIBARBPROC __glewGetActiveAttribARB = NULL;
 PFNGLGETATTRIBLOCATIONARBPROC __glewGetAttribLocationARB = NULL;
 
+PFNGLCOLORP3UIPROC __glewColorP3ui = NULL;
+PFNGLCOLORP3UIVPROC __glewColorP3uiv = NULL;
+PFNGLCOLORP4UIPROC __glewColorP4ui = NULL;
+PFNGLCOLORP4UIVPROC __glewColorP4uiv = NULL;
+PFNGLMULTITEXCOORDP1UIPROC __glewMultiTexCoordP1ui = NULL;
+PFNGLMULTITEXCOORDP1UIVPROC __glewMultiTexCoordP1uiv = NULL;
+PFNGLMULTITEXCOORDP2UIPROC __glewMultiTexCoordP2ui = NULL;
+PFNGLMULTITEXCOORDP2UIVPROC __glewMultiTexCoordP2uiv = NULL;
+PFNGLMULTITEXCOORDP3UIPROC __glewMultiTexCoordP3ui = NULL;
+PFNGLMULTITEXCOORDP3UIVPROC __glewMultiTexCoordP3uiv = NULL;
+PFNGLMULTITEXCOORDP4UIPROC __glewMultiTexCoordP4ui = NULL;
+PFNGLMULTITEXCOORDP4UIVPROC __glewMultiTexCoordP4uiv = NULL;
+PFNGLNORMALP3UIPROC __glewNormalP3ui = NULL;
+PFNGLNORMALP3UIVPROC __glewNormalP3uiv = NULL;
+PFNGLSECONDARYCOLORP3UIPROC __glewSecondaryColorP3ui = NULL;
+PFNGLSECONDARYCOLORP3UIVPROC __glewSecondaryColorP3uiv = NULL;
+PFNGLTEXCOORDP1UIPROC __glewTexCoordP1ui = NULL;
+PFNGLTEXCOORDP1UIVPROC __glewTexCoordP1uiv = NULL;
+PFNGLTEXCOORDP2UIPROC __glewTexCoordP2ui = NULL;
+PFNGLTEXCOORDP2UIVPROC __glewTexCoordP2uiv = NULL;
+PFNGLTEXCOORDP3UIPROC __glewTexCoordP3ui = NULL;
+PFNGLTEXCOORDP3UIVPROC __glewTexCoordP3uiv = NULL;
+PFNGLTEXCOORDP4UIPROC __glewTexCoordP4ui = NULL;
+PFNGLTEXCOORDP4UIVPROC __glewTexCoordP4uiv = NULL;
+PFNGLVERTEXATTRIBP1UIPROC __glewVertexAttribP1ui = NULL;
+PFNGLVERTEXATTRIBP1UIVPROC __glewVertexAttribP1uiv = NULL;
+PFNGLVERTEXATTRIBP2UIPROC __glewVertexAttribP2ui = NULL;
+PFNGLVERTEXATTRIBP2UIVPROC __glewVertexAttribP2uiv = NULL;
+PFNGLVERTEXATTRIBP3UIPROC __glewVertexAttribP3ui = NULL;
+PFNGLVERTEXATTRIBP3UIVPROC __glewVertexAttribP3uiv = NULL;
+PFNGLVERTEXATTRIBP4UIPROC __glewVertexAttribP4ui = NULL;
+PFNGLVERTEXATTRIBP4UIVPROC __glewVertexAttribP4uiv = NULL;
+PFNGLVERTEXP2UIPROC __glewVertexP2ui = NULL;
+PFNGLVERTEXP2UIVPROC __glewVertexP2uiv = NULL;
+PFNGLVERTEXP3UIPROC __glewVertexP3ui = NULL;
+PFNGLVERTEXP3UIVPROC __glewVertexP3uiv = NULL;
+PFNGLVERTEXP4UIPROC __glewVertexP4ui = NULL;
+PFNGLVERTEXP4UIVPROC __glewVertexP4uiv = NULL;
+
 PFNGLWINDOWPOS2DARBPROC __glewWindowPos2dARB = NULL;
 PFNGLWINDOWPOS2DVARBPROC __glewWindowPos2dvARB = NULL;
 PFNGLWINDOWPOS2FARBPROC __glewWindowPos2fARB = NULL;
@@ -1443,6 +1545,9 @@ PFNGLACTIVEPROGRAMEXTPROC __glewActiveProgramEXT = NULL;
 PFNGLCREATESHADERPROGRAMEXTPROC __glewCreateShaderProgramEXT = NULL;
 PFNGLUSESHADERPROGRAMEXTPROC __glewUseShaderProgramEXT = NULL;
 
+PFNGLBINDIMAGETEXTUREEXTPROC __glewBindImageTextureEXT = NULL;
+PFNGLMEMORYBARRIEREXTPROC __glewMemoryBarrierEXT = NULL;
+
 PFNGLACTIVESTENCILFACEEXTPROC __glewActiveStencilFaceEXT = NULL;
 
 PFNGLTEXSUBIMAGE1DEXTPROC __glewTexSubImage1DEXT = NULL;
@@ -1490,6 +1595,18 @@ PFNGLNORMALPOINTEREXTPROC __glewNormalPointerEXT = NULL;
 PFNGLTEXCOORDPOINTEREXTPROC __glewTexCoordPointerEXT = NULL;
 PFNGLVERTEXPOINTEREXTPROC __glewVertexPointerEXT = NULL;
 
+PFNGLGETVERTEXATTRIBLDVEXTPROC __glewGetVertexAttribLdvEXT = NULL;
+PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC __glewVertexArrayVertexAttribLOffsetEXT = NULL;
+PFNGLVERTEXATTRIBL1DEXTPROC __glewVertexAttribL1dEXT = NULL;
+PFNGLVERTEXATTRIBL1DVEXTPROC __glewVertexAttribL1dvEXT = NULL;
+PFNGLVERTEXATTRIBL2DEXTPROC __glewVertexAttribL2dEXT = NULL;
+PFNGLVERTEXATTRIBL2DVEXTPROC __glewVertexAttribL2dvEXT = NULL;
+PFNGLVERTEXATTRIBL3DEXTPROC __glewVertexAttribL3dEXT = NULL;
+PFNGLVERTEXATTRIBL3DVEXTPROC __glewVertexAttribL3dvEXT = NULL;
+PFNGLVERTEXATTRIBL4DEXTPROC __glewVertexAttribL4dEXT = NULL;
+PFNGLVERTEXATTRIBL4DVEXTPROC __glewVertexAttribL4dvEXT = NULL;
+PFNGLVERTEXATTRIBLPOINTEREXTPROC __glewVertexAttribLPointerEXT = NULL;
+
 PFNGLBEGINVERTEXSHADEREXTPROC __glewBeginVertexShaderEXT = NULL;
 PFNGLBINDLIGHTPARAMETEREXTPROC __glewBindLightParameterEXT = NULL;
 PFNGLBINDMATERIALPARAMETEREXTPROC __glewBindMaterialParameterEXT = NULL;
@@ -1656,6 +1773,41 @@ PFNGLPROGRAMLOCALPARAMETERI4UIVNVPROC __glewProgramLocalParameterI4uivNV = NULL;
 PFNGLPROGRAMLOCALPARAMETERSI4IVNVPROC __glewProgramLocalParametersI4ivNV = NULL;
 PFNGLPROGRAMLOCALPARAMETERSI4UIVNVPROC __glewProgramLocalParametersI4uivNV = NULL;
 
+PFNGLGETUNIFORMI64VNVPROC __glewGetUniformi64vNV = NULL;
+PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV = NULL;
+PFNGLPROGRAMUNIFORM1I64NVPROC __glewProgramUniform1i64NV = NULL;
+PFNGLPROGRAMUNIFORM1I64VNVPROC __glewProgramUniform1i64vNV = NULL;
+PFNGLPROGRAMUNIFORM1UI64NVPROC __glewProgramUniform1ui64NV = NULL;
+PFNGLPROGRAMUNIFORM1UI64VNVPROC __glewProgramUniform1ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM2I64NVPROC __glewProgramUniform2i64NV = NULL;
+PFNGLPROGRAMUNIFORM2I64VNVPROC __glewProgramUniform2i64vNV = NULL;
+PFNGLPROGRAMUNIFORM2UI64NVPROC __glewProgramUniform2ui64NV = NULL;
+PFNGLPROGRAMUNIFORM2UI64VNVPROC __glewProgramUniform2ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM3I64NVPROC __glewProgramUniform3i64NV = NULL;
+PFNGLPROGRAMUNIFORM3I64VNVPROC __glewProgramUniform3i64vNV = NULL;
+PFNGLPROGRAMUNIFORM3UI64NVPROC __glewProgramUniform3ui64NV = NULL;
+PFNGLPROGRAMUNIFORM3UI64VNVPROC __glewProgramUniform3ui64vNV = NULL;
+PFNGLPROGRAMUNIFORM4I64NVPROC __glewProgramUniform4i64NV = NULL;
+PFNGLPROGRAMUNIFORM4I64VNVPROC __glewProgramUniform4i64vNV = NULL;
+PFNGLPROGRAMUNIFORM4UI64NVPROC __glewProgramUniform4ui64NV = NULL;
+PFNGLPROGRAMUNIFORM4UI64VNVPROC __glewProgramUniform4ui64vNV = NULL;
+PFNGLUNIFORM1I64NVPROC __glewUniform1i64NV = NULL;
+PFNGLUNIFORM1I64VNVPROC __glewUniform1i64vNV = NULL;
+PFNGLUNIFORM1UI64NVPROC __glewUniform1ui64NV = NULL;
+PFNGLUNIFORM1UI64VNVPROC __glewUniform1ui64vNV = NULL;
+PFNGLUNIFORM2I64NVPROC __glewUniform2i64NV = NULL;
+PFNGLUNIFORM2I64VNVPROC __glewUniform2i64vNV = NULL;
+PFNGLUNIFORM2UI64NVPROC __glewUniform2ui64NV = NULL;
+PFNGLUNIFORM2UI64VNVPROC __glewUniform2ui64vNV = NULL;
+PFNGLUNIFORM3I64NVPROC __glewUniform3i64NV = NULL;
+PFNGLUNIFORM3I64VNVPROC __glewUniform3i64vNV = NULL;
+PFNGLUNIFORM3UI64NVPROC __glewUniform3ui64NV = NULL;
+PFNGLUNIFORM3UI64VNVPROC __glewUniform3ui64vNV = NULL;
+PFNGLUNIFORM4I64NVPROC __glewUniform4i64NV = NULL;
+PFNGLUNIFORM4I64VNVPROC __glewUniform4i64vNV = NULL;
+PFNGLUNIFORM4UI64NVPROC __glewUniform4ui64NV = NULL;
+PFNGLUNIFORM4UI64VNVPROC __glewUniform4ui64vNV = NULL;
+
 PFNGLCOLOR3HNVPROC __glewColor3hNV = NULL;
 PFNGLCOLOR3HVNVPROC __glewColor3hvNV = NULL;
 PFNGLCOLOR4HNVPROC __glewColor4hNV = NULL;
@@ -1751,7 +1903,6 @@ PFNGLGETCOMBINERSTAGEPARAMETERFVNVPROC __glewGetCombinerStageParameterfvNV = NUL
 PFNGLGETBUFFERPARAMETERUI64VNVPROC __glewGetBufferParameterui64vNV = NULL;
 PFNGLGETINTEGERUI64VNVPROC __glewGetIntegerui64vNV = NULL;
 PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC __glewGetNamedBufferParameterui64vNV = NULL;
-PFNGLGETUNIFORMUI64VNVPROC __glewGetUniformui64vNV = NULL;
 PFNGLISBUFFERRESIDENTNVPROC __glewIsBufferResidentNV = NULL;
 PFNGLISNAMEDBUFFERRESIDENTNVPROC __glewIsNamedBufferResidentNV = NULL;
 PFNGLMAKEBUFFERNONRESIDENTNVPROC __glewMakeBufferNonResidentNV = NULL;
@@ -1788,6 +1939,26 @@ PFNGLRESUMETRANSFORMFEEDBACKNVPROC __glewResumeTransformFeedbackNV = NULL;
 PFNGLFLUSHVERTEXARRAYRANGENVPROC __glewFlushVertexArrayRangeNV = NULL;
 PFNGLVERTEXARRAYRANGENVPROC __glewVertexArrayRangeNV = NULL;
 
+PFNGLGETVERTEXATTRIBLI64VNVPROC __glewGetVertexAttribLi64vNV = NULL;
+PFNGLGETVERTEXATTRIBLUI64VNVPROC __glewGetVertexAttribLui64vNV = NULL;
+PFNGLVERTEXATTRIBL1I64NVPROC __glewVertexAttribL1i64NV = NULL;
+PFNGLVERTEXATTRIBL1I64VNVPROC __glewVertexAttribL1i64vNV = NULL;
+PFNGLVERTEXATTRIBL1UI64NVPROC __glewVertexAttribL1ui64NV = NULL;
+PFNGLVERTEXATTRIBL1UI64VNVPROC __glewVertexAttribL1ui64vNV = NULL;
+PFNGLVERTEXATTRIBL2I64NVPROC __glewVertexAttribL2i64NV = NULL;
+PFNGLVERTEXATTRIBL2I64VNVPROC __glewVertexAttribL2i64vNV = NULL;
+PFNGLVERTEXATTRIBL2UI64NVPROC __glewVertexAttribL2ui64NV = NULL;
+PFNGLVERTEXATTRIBL2UI64VNVPROC __glewVertexAttribL2ui64vNV = NULL;
+PFNGLVERTEXATTRIBL3I64NVPROC __glewVertexAttribL3i64NV = NULL;
+PFNGLVERTEXATTRIBL3I64VNVPROC __glewVertexAttribL3i64vNV = NULL;
+PFNGLVERTEXATTRIBL3UI64NVPROC __glewVertexAttribL3ui64NV = NULL;
+PFNGLVERTEXATTRIBL3UI64VNVPROC __glewVertexAttribL3ui64vNV = NULL;
+PFNGLVERTEXATTRIBL4I64NVPROC __glewVertexAttribL4i64NV = NULL;
+PFNGLVERTEXATTRIBL4I64VNVPROC __glewVertexAttribL4i64vNV = NULL;
+PFNGLVERTEXATTRIBL4UI64NVPROC __glewVertexAttribL4ui64NV = NULL;
+PFNGLVERTEXATTRIBL4UI64VNVPROC __glewVertexAttribL4ui64vNV = NULL;
+PFNGLVERTEXATTRIBLFORMATNVPROC __glewVertexAttribLFormatNV = NULL;
+
 PFNGLBUFFERADDRESSRANGENVPROC __glewBufferAddressRangeNV = NULL;
 PFNGLCOLORFORMATNVPROC __glewColorFormatNV = NULL;
 PFNGLEDGEFLAGFORMATNVPROC __glewEdgeFlagFormatNV = NULL;
@@ -2019,11 +2190,16 @@ GLboolean __GLEW_VERSION_2_1 = GL_FALSE;
 GLboolean __GLEW_VERSION_3_0 = GL_FALSE;
 GLboolean __GLEW_VERSION_3_1 = GL_FALSE;
 GLboolean __GLEW_VERSION_3_2 = GL_FALSE;
+GLboolean __GLEW_VERSION_3_3 = GL_FALSE;
+GLboolean __GLEW_VERSION_4_0 = GL_FALSE;
 GLboolean __GLEW_3DFX_multisample = GL_FALSE;
 GLboolean __GLEW_3DFX_tbuffer = GL_FALSE;
 GLboolean __GLEW_3DFX_texture_compression_FXT1 = GL_FALSE;
+GLboolean __GLEW_AMD_conservative_depth = GL_FALSE;
 GLboolean __GLEW_AMD_draw_buffers_blend = GL_FALSE;
 GLboolean __GLEW_AMD_performance_monitor = GL_FALSE;
+GLboolean __GLEW_AMD_seamless_cubemap_per_texture = GL_FALSE;
+GLboolean __GLEW_AMD_shader_stencil_export = GL_FALSE;
 GLboolean __GLEW_AMD_texture_texture4 = GL_FALSE;
 GLboolean __GLEW_AMD_vertex_shader_tessellator = GL_FALSE;
 GLboolean __GLEW_APPLE_aux_depth_stencil = GL_FALSE;
@@ -2043,6 +2219,7 @@ GLboolean __GLEW_APPLE_vertex_array_object = GL_FALSE;
 GLboolean __GLEW_APPLE_vertex_array_range = GL_FALSE;
 GLboolean __GLEW_APPLE_vertex_program_evaluators = GL_FALSE;
 GLboolean __GLEW_APPLE_ycbcr_422 = GL_FALSE;
+GLboolean __GLEW_ARB_blend_func_extended = GL_FALSE;
 GLboolean __GLEW_ARB_color_buffer_float = GL_FALSE;
 GLboolean __GLEW_ARB_compatibility = GL_FALSE;
 GLboolean __GLEW_ARB_copy_buffer = GL_FALSE;
@@ -2052,7 +2229,9 @@ GLboolean __GLEW_ARB_depth_texture = GL_FALSE;
 GLboolean __GLEW_ARB_draw_buffers = GL_FALSE;
 GLboolean __GLEW_ARB_draw_buffers_blend = GL_FALSE;
 GLboolean __GLEW_ARB_draw_elements_base_vertex = GL_FALSE;
+GLboolean __GLEW_ARB_draw_indirect = GL_FALSE;
 GLboolean __GLEW_ARB_draw_instanced = GL_FALSE;
+GLboolean __GLEW_ARB_explicit_attrib_location = GL_FALSE;
 GLboolean __GLEW_ARB_fragment_coord_conventions = GL_FALSE;
 GLboolean __GLEW_ARB_fragment_program = GL_FALSE;
 GLboolean __GLEW_ARB_fragment_program_shadow = GL_FALSE;
@@ -2060,6 +2239,8 @@ GLboolean __GLEW_ARB_fragment_shader = GL_FALSE;
 GLboolean __GLEW_ARB_framebuffer_object = GL_FALSE;
 GLboolean __GLEW_ARB_framebuffer_sRGB = GL_FALSE;
 GLboolean __GLEW_ARB_geometry_shader4 = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader5 = GL_FALSE;
+GLboolean __GLEW_ARB_gpu_shader_fp64 = GL_FALSE;
 GLboolean __GLEW_ARB_half_float_pixel = GL_FALSE;
 GLboolean __GLEW_ARB_half_float_vertex = GL_FALSE;
 GLboolean __GLEW_ARB_imaging = GL_FALSE;
@@ -2069,21 +2250,29 @@ GLboolean __GLEW_ARB_matrix_palette = GL_FALSE;
 GLboolean __GLEW_ARB_multisample = GL_FALSE;
 GLboolean __GLEW_ARB_multitexture = GL_FALSE;
 GLboolean __GLEW_ARB_occlusion_query = GL_FALSE;
+GLboolean __GLEW_ARB_occlusion_query2 = GL_FALSE;
 GLboolean __GLEW_ARB_pixel_buffer_object = GL_FALSE;
 GLboolean __GLEW_ARB_point_parameters = GL_FALSE;
 GLboolean __GLEW_ARB_point_sprite = GL_FALSE;
 GLboolean __GLEW_ARB_provoking_vertex = GL_FALSE;
 GLboolean __GLEW_ARB_sample_shading = GL_FALSE;
+GLboolean __GLEW_ARB_sampler_objects = GL_FALSE;
 GLboolean __GLEW_ARB_seamless_cube_map = GL_FALSE;
+GLboolean __GLEW_ARB_shader_bit_encoding = GL_FALSE;
 GLboolean __GLEW_ARB_shader_objects = GL_FALSE;
+GLboolean __GLEW_ARB_shader_subroutine = GL_FALSE;
 GLboolean __GLEW_ARB_shader_texture_lod = GL_FALSE;
 GLboolean __GLEW_ARB_shading_language_100 = GL_FALSE;
+GLboolean __GLEW_ARB_shading_language_include = GL_FALSE;
 GLboolean __GLEW_ARB_shadow = GL_FALSE;
 GLboolean __GLEW_ARB_shadow_ambient = GL_FALSE;
 GLboolean __GLEW_ARB_sync = GL_FALSE;
+GLboolean __GLEW_ARB_tessellation_shader = GL_FALSE;
 GLboolean __GLEW_ARB_texture_border_clamp = GL_FALSE;
 GLboolean __GLEW_ARB_texture_buffer_object = GL_FALSE;
+GLboolean __GLEW_ARB_texture_buffer_object_rgb32 = GL_FALSE;
 GLboolean __GLEW_ARB_texture_compression = GL_FALSE;
+GLboolean __GLEW_ARB_texture_compression_bptc = GL_FALSE;
 GLboolean __GLEW_ARB_texture_compression_rgtc = GL_FALSE;
 GLboolean __GLEW_ARB_texture_cube_map = GL_FALSE;
 GLboolean __GLEW_ARB_texture_cube_map_array = GL_FALSE;
@@ -2099,6 +2288,11 @@ GLboolean __GLEW_ARB_texture_non_power_of_two = GL_FALSE;
 GLboolean __GLEW_ARB_texture_query_lod = GL_FALSE;
 GLboolean __GLEW_ARB_texture_rectangle = GL_FALSE;
 GLboolean __GLEW_ARB_texture_rg = GL_FALSE;
+GLboolean __GLEW_ARB_texture_rgb10_a2ui = GL_FALSE;
+GLboolean __GLEW_ARB_texture_swizzle = GL_FALSE;
+GLboolean __GLEW_ARB_timer_query = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback2 = GL_FALSE;
+GLboolean __GLEW_ARB_transform_feedback3 = GL_FALSE;
 GLboolean __GLEW_ARB_transpose_matrix = GL_FALSE;
 GLboolean __GLEW_ARB_uniform_buffer_object = GL_FALSE;
 GLboolean __GLEW_ARB_vertex_array_bgra = GL_FALSE;
@@ -2107,6 +2301,7 @@ GLboolean __GLEW_ARB_vertex_blend = GL_FALSE;
 GLboolean __GLEW_ARB_vertex_buffer_object = GL_FALSE;
 GLboolean __GLEW_ARB_vertex_program = GL_FALSE;
 GLboolean __GLEW_ARB_vertex_shader = GL_FALSE;
+GLboolean __GLEW_ARB_vertex_type_2_10_10_10_rev = GL_FALSE;
 GLboolean __GLEW_ARB_window_pos = GL_FALSE;
 GLboolean __GLEW_ATIX_point_sprites = GL_FALSE;
 GLboolean __GLEW_ATIX_texture_env_combine3 = GL_FALSE;
@@ -2186,6 +2381,7 @@ GLboolean __GLEW_EXT_scene_marker = GL_FALSE;
 GLboolean __GLEW_EXT_secondary_color = GL_FALSE;
 GLboolean __GLEW_EXT_separate_shader_objects = GL_FALSE;
 GLboolean __GLEW_EXT_separate_specular_color = GL_FALSE;
+GLboolean __GLEW_EXT_shader_image_load_store = GL_FALSE;
 GLboolean __GLEW_EXT_shadow_funcs = GL_FALSE;
 GLboolean __GLEW_EXT_shared_texture_palette = GL_FALSE;
 GLboolean __GLEW_EXT_stencil_clear_tag = GL_FALSE;
@@ -2221,6 +2417,7 @@ GLboolean __GLEW_EXT_timer_query = GL_FALSE;
 GLboolean __GLEW_EXT_transform_feedback = GL_FALSE;
 GLboolean __GLEW_EXT_vertex_array = GL_FALSE;
 GLboolean __GLEW_EXT_vertex_array_bgra = GL_FALSE;
+GLboolean __GLEW_EXT_vertex_attrib_64bit = GL_FALSE;
 GLboolean __GLEW_EXT_vertex_shader = GL_FALSE;
 GLboolean __GLEW_EXT_vertex_weighting = GL_FALSE;
 GLboolean __GLEW_GREMEDY_frame_terminator = GL_FALSE;
@@ -2265,6 +2462,9 @@ GLboolean __GLEW_NV_framebuffer_multisample_coverage = GL_FALSE;
 GLboolean __GLEW_NV_geometry_program4 = GL_FALSE;
 GLboolean __GLEW_NV_geometry_shader4 = GL_FALSE;
 GLboolean __GLEW_NV_gpu_program4 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program5 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_program_fp64 = GL_FALSE;
+GLboolean __GLEW_NV_gpu_shader5 = GL_FALSE;
 GLboolean __GLEW_NV_half_float = GL_FALSE;
 GLboolean __GLEW_NV_light_max_exponent = GL_FALSE;
 GLboolean __GLEW_NV_multisample_filter_hint = GL_FALSE;
@@ -2279,6 +2479,7 @@ GLboolean __GLEW_NV_primitive_restart = GL_FALSE;
 GLboolean __GLEW_NV_register_combiners = GL_FALSE;
 GLboolean __GLEW_NV_register_combiners2 = GL_FALSE;
 GLboolean __GLEW_NV_shader_buffer_load = GL_FALSE;
+GLboolean __GLEW_NV_tessellation_program5 = GL_FALSE;
 GLboolean __GLEW_NV_texgen_emboss = GL_FALSE;
 GLboolean __GLEW_NV_texgen_reflection = GL_FALSE;
 GLboolean __GLEW_NV_texture_barrier = GL_FALSE;
@@ -2293,6 +2494,7 @@ GLboolean __GLEW_NV_transform_feedback = GL_FALSE;
 GLboolean __GLEW_NV_transform_feedback2 = GL_FALSE;
 GLboolean __GLEW_NV_vertex_array_range = GL_FALSE;
 GLboolean __GLEW_NV_vertex_array_range2 = GL_FALSE;
+GLboolean __GLEW_NV_vertex_attrib_integer_64bit = GL_FALSE;
 GLboolean __GLEW_NV_vertex_buffer_unified_memory = GL_FALSE;
 GLboolean __GLEW_NV_vertex_program = GL_FALSE;
 GLboolean __GLEW_NV_vertex_program1_1 = GL_FALSE;
@@ -2759,6 +2961,27 @@ static GLboolean _glewInit_GL_VERSION_3_2 (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_VERSION_3_2 */
 
+#ifdef GL_VERSION_3_3
+
+#endif /* GL_VERSION_3_3 */
+
+#ifdef GL_VERSION_4_0
+
+static GLboolean _glewInit_GL_VERSION_4_0 (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glBlendEquationSeparatei = (PFNGLBLENDEQUATIONSEPARATEIPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationSeparatei")) == NULL) || r;
+  r = ((glBlendEquationi = (PFNGLBLENDEQUATIONIPROC)glewGetProcAddress((const GLubyte*)"glBlendEquationi")) == NULL) || r;
+  r = ((glBlendFuncSeparatei = (PFNGLBLENDFUNCSEPARATEIPROC)glewGetProcAddress((const GLubyte*)"glBlendFuncSeparatei")) == NULL) || r;
+  r = ((glBlendFunci = (PFNGLBLENDFUNCIPROC)glewGetProcAddress((const GLubyte*)"glBlendFunci")) == NULL) || r;
+  r = ((glMinSampleShading = (PFNGLMINSAMPLESHADINGPROC)glewGetProcAddress((const GLubyte*)"glMinSampleShading")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_VERSION_4_0 */
+
 #ifdef GL_3DFX_multisample
 
 #endif /* GL_3DFX_multisample */
@@ -2780,6 +3003,10 @@ static GLboolean _glewInit_GL_3DFX_tbuffer (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_3DFX_texture_compression_FXT1 */
 
+#ifdef GL_AMD_conservative_depth
+
+#endif /* GL_AMD_conservative_depth */
+
 #ifdef GL_AMD_draw_buffers_blend
 
 static GLboolean _glewInit_GL_AMD_draw_buffers_blend (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -2819,6 +3046,14 @@ static GLboolean _glewInit_GL_AMD_performance_monitor (GLEW_CONTEXT_ARG_DEF_INIT
 
 #endif /* GL_AMD_performance_monitor */
 
+#ifdef GL_AMD_seamless_cubemap_per_texture
+
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+
+#ifdef GL_AMD_shader_stencil_export
+
+#endif /* GL_AMD_shader_stencil_export */
+
 #ifdef GL_AMD_texture_texture4
 
 #endif /* GL_AMD_texture_texture4 */
@@ -3003,6 +3238,20 @@ static GLboolean _glewInit_GL_APPLE_vertex_program_evaluators (GLEW_CONTEXT_ARG_
 
 #endif /* GL_APPLE_ycbcr_422 */
 
+#ifdef GL_ARB_blend_func_extended
+
+static GLboolean _glewInit_GL_ARB_blend_func_extended (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glBindFragDataLocationIndexed = (PFNGLBINDFRAGDATALOCATIONINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glBindFragDataLocationIndexed")) == NULL) || r;
+  r = ((glGetFragDataIndex = (PFNGLGETFRAGDATAINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetFragDataIndex")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_blend_func_extended */
+
 #ifdef GL_ARB_color_buffer_float
 
 static GLboolean _glewInit_GL_ARB_color_buffer_float (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -3090,6 +3339,20 @@ static GLboolean _glewInit_GL_ARB_draw_elements_base_vertex (GLEW_CONTEXT_ARG_DE
 
 #endif /* GL_ARB_draw_elements_base_vertex */
 
+#ifdef GL_ARB_draw_indirect
+
+static GLboolean _glewInit_GL_ARB_draw_indirect (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glDrawArraysIndirect = (PFNGLDRAWARRAYSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDrawArraysIndirect")) == NULL) || r;
+  r = ((glDrawElementsIndirect = (PFNGLDRAWELEMENTSINDIRECTPROC)glewGetProcAddress((const GLubyte*)"glDrawElementsIndirect")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_draw_indirect */
+
 #ifdef GL_ARB_draw_instanced
 
 static GLboolean _glewInit_GL_ARB_draw_instanced (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -3104,6 +3367,10 @@ static GLboolean _glewInit_GL_ARB_draw_instanced (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_draw_instanced */
 
+#ifdef GL_ARB_explicit_attrib_location
+
+#endif /* GL_ARB_explicit_attrib_location */
+
 #ifdef GL_ARB_fragment_coord_conventions
 
 #endif /* GL_ARB_fragment_coord_conventions */
@@ -3172,6 +3439,14 @@ static GLboolean _glewInit_GL_ARB_geometry_shader4 (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_geometry_shader4 */
 
+#ifdef GL_ARB_gpu_shader5
+
+#endif /* GL_ARB_gpu_shader5 */
+
+#ifdef GL_ARB_gpu_shader_fp64
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
 #ifdef GL_ARB_half_float_pixel
 
 #endif /* GL_ARB_half_float_pixel */
@@ -3348,6 +3623,10 @@ static GLboolean _glewInit_GL_ARB_occlusion_query (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_occlusion_query */
 
+#ifdef GL_ARB_occlusion_query2
+
+#endif /* GL_ARB_occlusion_query2 */
+
 #ifdef GL_ARB_pixel_buffer_object
 
 #endif /* GL_ARB_pixel_buffer_object */
@@ -3396,10 +3675,40 @@ static GLboolean _glewInit_GL_ARB_sample_shading (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_sample_shading */
 
+#ifdef GL_ARB_sampler_objects
+
+static GLboolean _glewInit_GL_ARB_sampler_objects (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glBindSampler = (PFNGLBINDSAMPLERPROC)glewGetProcAddress((const GLubyte*)"glBindSampler")) == NULL) || r;
+  r = ((glDeleteSamplers = (PFNGLDELETESAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glDeleteSamplers")) == NULL) || r;
+  r = ((glGenSamplers = (PFNGLGENSAMPLERSPROC)glewGetProcAddress((const GLubyte*)"glGenSamplers")) == NULL) || r;
+  r = ((glGetSamplerParameterIiv = (PFNGLGETSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIiv")) == NULL) || r;
+  r = ((glGetSamplerParameterIuiv = (PFNGLGETSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterIuiv")) == NULL) || r;
+  r = ((glGetSamplerParameterfv = (PFNGLGETSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameterfv")) == NULL) || r;
+  r = ((glGetSamplerParameteriv = (PFNGLGETSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glGetSamplerParameteriv")) == NULL) || r;
+  r = ((glIsSampler = (PFNGLISSAMPLERPROC)glewGetProcAddress((const GLubyte*)"glIsSampler")) == NULL) || r;
+  r = ((glSamplerParameterIiv = (PFNGLSAMPLERPARAMETERIIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIiv")) == NULL) || r;
+  r = ((glSamplerParameterIuiv = (PFNGLSAMPLERPARAMETERIUIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterIuiv")) == NULL) || r;
+  r = ((glSamplerParameterf = (PFNGLSAMPLERPARAMETERFPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterf")) == NULL) || r;
+  r = ((glSamplerParameterfv = (PFNGLSAMPLERPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameterfv")) == NULL) || r;
+  r = ((glSamplerParameteri = (PFNGLSAMPLERPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameteri")) == NULL) || r;
+  r = ((glSamplerParameteriv = (PFNGLSAMPLERPARAMETERIVPROC)glewGetProcAddress((const GLubyte*)"glSamplerParameteriv")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_sampler_objects */
+
 #ifdef GL_ARB_seamless_cube_map
 
 #endif /* GL_ARB_seamless_cube_map */
 
+#ifdef GL_ARB_shader_bit_encoding
+
+#endif /* GL_ARB_shader_bit_encoding */
+
 #ifdef GL_ARB_shader_objects
 
 static GLboolean _glewInit_GL_ARB_shader_objects (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -3451,6 +3760,26 @@ static GLboolean _glewInit_GL_ARB_shader_objects (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_shader_objects */
 
+#ifdef GL_ARB_shader_subroutine
+
+static GLboolean _glewInit_GL_ARB_shader_subroutine (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glGetActiveSubroutineName = (PFNGLGETACTIVESUBROUTINENAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineName")) == NULL) || r;
+  r = ((glGetActiveSubroutineUniformName = (PFNGLGETACTIVESUBROUTINEUNIFORMNAMEPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineUniformName")) == NULL) || r;
+  r = ((glGetActiveSubroutineUniformiv = (PFNGLGETACTIVESUBROUTINEUNIFORMIVPROC)glewGetProcAddress((const GLubyte*)"glGetActiveSubroutineUniformiv")) == NULL) || r;
+  r = ((glGetProgramStageiv = (PFNGLGETPROGRAMSTAGEIVPROC)glewGetProcAddress((const GLubyte*)"glGetProgramStageiv")) == NULL) || r;
+  r = ((glGetSubroutineIndex = (PFNGLGETSUBROUTINEINDEXPROC)glewGetProcAddress((const GLubyte*)"glGetSubroutineIndex")) == NULL) || r;
+  r = ((glGetSubroutineUniformLocation = (PFNGLGETSUBROUTINEUNIFORMLOCATIONPROC)glewGetProcAddress((const GLubyte*)"glGetSubroutineUniformLocation")) == NULL) || r;
+  r = ((glGetUniformSubroutineuiv = (PFNGLGETUNIFORMSUBROUTINEUIVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformSubroutineuiv")) == NULL) || r;
+  r = ((glUniformSubroutinesuiv = (PFNGLUNIFORMSUBROUTINESUIVPROC)glewGetProcAddress((const GLubyte*)"glUniformSubroutinesuiv")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_shader_subroutine */
+
 #ifdef GL_ARB_shader_texture_lod
 
 #endif /* GL_ARB_shader_texture_lod */
@@ -3459,6 +3788,24 @@ static GLboolean _glewInit_GL_ARB_shader_objects (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_shading_language_100 */
 
+#ifdef GL_ARB_shading_language_include
+
+static GLboolean _glewInit_GL_ARB_shading_language_include (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glCompileShaderIncludeARB = (PFNGLCOMPILESHADERINCLUDEARBPROC)glewGetProcAddress((const GLubyte*)"glCompileShaderIncludeARB")) == NULL) || r;
+  r = ((glDeleteNamedStringARB = (PFNGLDELETENAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glDeleteNamedStringARB")) == NULL) || r;
+  r = ((glGetNamedStringARB = (PFNGLGETNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glGetNamedStringARB")) == NULL) || r;
+  r = ((glGetNamedStringivARB = (PFNGLGETNAMEDSTRINGIVARBPROC)glewGetProcAddress((const GLubyte*)"glGetNamedStringivARB")) == NULL) || r;
+  r = ((glIsNamedStringARB = (PFNGLISNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glIsNamedStringARB")) == NULL) || r;
+  r = ((glNamedStringARB = (PFNGLNAMEDSTRINGARBPROC)glewGetProcAddress((const GLubyte*)"glNamedStringARB")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_shading_language_include */
+
 #ifdef GL_ARB_shadow
 
 #endif /* GL_ARB_shadow */
@@ -3486,6 +3833,20 @@ static GLboolean _glewInit_GL_ARB_sync (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_sync */
 
+#ifdef GL_ARB_tessellation_shader
+
+static GLboolean _glewInit_GL_ARB_tessellation_shader (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glPatchParameterfv = (PFNGLPATCHPARAMETERFVPROC)glewGetProcAddress((const GLubyte*)"glPatchParameterfv")) == NULL) || r;
+  r = ((glPatchParameteri = (PFNGLPATCHPARAMETERIPROC)glewGetProcAddress((const GLubyte*)"glPatchParameteri")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_tessellation_shader */
+
 #ifdef GL_ARB_texture_border_clamp
 
 #endif /* GL_ARB_texture_border_clamp */
@@ -3503,6 +3864,10 @@ static GLboolean _glewInit_GL_ARB_texture_buffer_object (GLEW_CONTEXT_ARG_DEF_IN
 
 #endif /* GL_ARB_texture_buffer_object */
 
+#ifdef GL_ARB_texture_buffer_object_rgb32
+
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
 #ifdef GL_ARB_texture_compression
 
 static GLboolean _glewInit_GL_ARB_texture_compression (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -3522,6 +3887,10 @@ static GLboolean _glewInit_GL_ARB_texture_compression (GLEW_CONTEXT_ARG_DEF_INIT
 
 #endif /* GL_ARB_texture_compression */
 
+#ifdef GL_ARB_texture_compression_bptc
+
+#endif /* GL_ARB_texture_compression_bptc */
+
 #ifdef GL_ARB_texture_compression_rgtc
 
 #endif /* GL_ARB_texture_compression_rgtc */
@@ -3594,6 +3963,64 @@ static GLboolean _glewInit_GL_ARB_texture_multisample (GLEW_CONTEXT_ARG_DEF_INIT
 
 #endif /* GL_ARB_texture_rg */
 
+#ifdef GL_ARB_texture_rgb10_a2ui
+
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+#ifdef GL_ARB_texture_swizzle
+
+#endif /* GL_ARB_texture_swizzle */
+
+#ifdef GL_ARB_timer_query
+
+static GLboolean _glewInit_GL_ARB_timer_query (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glGetQueryObjecti64v = (PFNGLGETQUERYOBJECTI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjecti64v")) == NULL) || r;
+  r = ((glGetQueryObjectui64v = (PFNGLGETQUERYOBJECTUI64VPROC)glewGetProcAddress((const GLubyte*)"glGetQueryObjectui64v")) == NULL) || r;
+  r = ((glQueryCounter = (PFNGLQUERYCOUNTERPROC)glewGetProcAddress((const GLubyte*)"glQueryCounter")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_timer_query */
+
+#ifdef GL_ARB_transform_feedback2
+
+static GLboolean _glewInit_GL_ARB_transform_feedback2 (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glBindTransformFeedback = (PFNGLBINDTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glBindTransformFeedback")) == NULL) || r;
+  r = ((glDeleteTransformFeedbacks = (PFNGLDELETETRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glDeleteTransformFeedbacks")) == NULL) || r;
+  r = ((glDrawTransformFeedback = (PFNGLDRAWTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedback")) == NULL) || r;
+  r = ((glGenTransformFeedbacks = (PFNGLGENTRANSFORMFEEDBACKSPROC)glewGetProcAddress((const GLubyte*)"glGenTransformFeedbacks")) == NULL) || r;
+  r = ((glIsTransformFeedback = (PFNGLISTRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glIsTransformFeedback")) == NULL) || r;
+  r = ((glPauseTransformFeedback = (PFNGLPAUSETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glPauseTransformFeedback")) == NULL) || r;
+  r = ((glResumeTransformFeedback = (PFNGLRESUMETRANSFORMFEEDBACKPROC)glewGetProcAddress((const GLubyte*)"glResumeTransformFeedback")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_transform_feedback2 */
+
+#ifdef GL_ARB_transform_feedback3
+
+static GLboolean _glewInit_GL_ARB_transform_feedback3 (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glBeginQueryIndexed = (PFNGLBEGINQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glBeginQueryIndexed")) == NULL) || r;
+  r = ((glDrawTransformFeedbackStream = (PFNGLDRAWTRANSFORMFEEDBACKSTREAMPROC)glewGetProcAddress((const GLubyte*)"glDrawTransformFeedbackStream")) == NULL) || r;
+  r = ((glEndQueryIndexed = (PFNGLENDQUERYINDEXEDPROC)glewGetProcAddress((const GLubyte*)"glEndQueryIndexed")) == NULL) || r;
+  r = ((glGetQueryIndexediv = (PFNGLGETQUERYINDEXEDIVPROC)glewGetProcAddress((const GLubyte*)"glGetQueryIndexediv")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_transform_feedback3 */
+
 #ifdef GL_ARB_transpose_matrix
 
 static GLboolean _glewInit_GL_ARB_transpose_matrix (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -3786,6 +4213,56 @@ static GLboolean _glewInit_GL_ARB_vertex_shader (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_ARB_vertex_shader */
 
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+
+static GLboolean _glewInit_GL_ARB_vertex_type_2_10_10_10_rev (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glColorP3ui = (PFNGLCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)"glColorP3ui")) == NULL) || r;
+  r = ((glColorP3uiv = (PFNGLCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)"glColorP3uiv")) == NULL) || r;
+  r = ((glColorP4ui = (PFNGLCOLORP4UIPROC)glewGetProcAddress((const GLubyte*)"glColorP4ui")) == NULL) || r;
+  r = ((glColorP4uiv = (PFNGLCOLORP4UIVPROC)glewGetProcAddress((const GLubyte*)"glColorP4uiv")) == NULL) || r;
+  r = ((glMultiTexCoordP1ui = (PFNGLMULTITEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP1ui")) == NULL) || r;
+  r = ((glMultiTexCoordP1uiv = (PFNGLMULTITEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP1uiv")) == NULL) || r;
+  r = ((glMultiTexCoordP2ui = (PFNGLMULTITEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP2ui")) == NULL) || r;
+  r = ((glMultiTexCoordP2uiv = (PFNGLMULTITEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP2uiv")) == NULL) || r;
+  r = ((glMultiTexCoordP3ui = (PFNGLMULTITEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP3ui")) == NULL) || r;
+  r = ((glMultiTexCoordP3uiv = (PFNGLMULTITEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP3uiv")) == NULL) || r;
+  r = ((glMultiTexCoordP4ui = (PFNGLMULTITEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP4ui")) == NULL) || r;
+  r = ((glMultiTexCoordP4uiv = (PFNGLMULTITEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)"glMultiTexCoordP4uiv")) == NULL) || r;
+  r = ((glNormalP3ui = (PFNGLNORMALP3UIPROC)glewGetProcAddress((const GLubyte*)"glNormalP3ui")) == NULL) || r;
+  r = ((glNormalP3uiv = (PFNGLNORMALP3UIVPROC)glewGetProcAddress((const GLubyte*)"glNormalP3uiv")) == NULL) || r;
+  r = ((glSecondaryColorP3ui = (PFNGLSECONDARYCOLORP3UIPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorP3ui")) == NULL) || r;
+  r = ((glSecondaryColorP3uiv = (PFNGLSECONDARYCOLORP3UIVPROC)glewGetProcAddress((const GLubyte*)"glSecondaryColorP3uiv")) == NULL) || r;
+  r = ((glTexCoordP1ui = (PFNGLTEXCOORDP1UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP1ui")) == NULL) || r;
+  r = ((glTexCoordP1uiv = (PFNGLTEXCOORDP1UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP1uiv")) == NULL) || r;
+  r = ((glTexCoordP2ui = (PFNGLTEXCOORDP2UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP2ui")) == NULL) || r;
+  r = ((glTexCoordP2uiv = (PFNGLTEXCOORDP2UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP2uiv")) == NULL) || r;
+  r = ((glTexCoordP3ui = (PFNGLTEXCOORDP3UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP3ui")) == NULL) || r;
+  r = ((glTexCoordP3uiv = (PFNGLTEXCOORDP3UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP3uiv")) == NULL) || r;
+  r = ((glTexCoordP4ui = (PFNGLTEXCOORDP4UIPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP4ui")) == NULL) || r;
+  r = ((glTexCoordP4uiv = (PFNGLTEXCOORDP4UIVPROC)glewGetProcAddress((const GLubyte*)"glTexCoordP4uiv")) == NULL) || r;
+  r = ((glVertexAttribP1ui = (PFNGLVERTEXATTRIBP1UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP1ui")) == NULL) || r;
+  r = ((glVertexAttribP1uiv = (PFNGLVERTEXATTRIBP1UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP1uiv")) == NULL) || r;
+  r = ((glVertexAttribP2ui = (PFNGLVERTEXATTRIBP2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP2ui")) == NULL) || r;
+  r = ((glVertexAttribP2uiv = (PFNGLVERTEXATTRIBP2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP2uiv")) == NULL) || r;
+  r = ((glVertexAttribP3ui = (PFNGLVERTEXATTRIBP3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP3ui")) == NULL) || r;
+  r = ((glVertexAttribP3uiv = (PFNGLVERTEXATTRIBP3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP3uiv")) == NULL) || r;
+  r = ((glVertexAttribP4ui = (PFNGLVERTEXATTRIBP4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP4ui")) == NULL) || r;
+  r = ((glVertexAttribP4uiv = (PFNGLVERTEXATTRIBP4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribP4uiv")) == NULL) || r;
+  r = ((glVertexP2ui = (PFNGLVERTEXP2UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP2ui")) == NULL) || r;
+  r = ((glVertexP2uiv = (PFNGLVERTEXP2UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP2uiv")) == NULL) || r;
+  r = ((glVertexP3ui = (PFNGLVERTEXP3UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP3ui")) == NULL) || r;
+  r = ((glVertexP3uiv = (PFNGLVERTEXP3UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP3uiv")) == NULL) || r;
+  r = ((glVertexP4ui = (PFNGLVERTEXP4UIPROC)glewGetProcAddress((const GLubyte*)"glVertexP4ui")) == NULL) || r;
+  r = ((glVertexP4uiv = (PFNGLVERTEXP4UIVPROC)glewGetProcAddress((const GLubyte*)"glVertexP4uiv")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
 #ifdef GL_ARB_window_pos
 
 static GLboolean _glewInit_GL_ARB_window_pos (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -4983,6 +5460,20 @@ static GLboolean _glewInit_GL_EXT_separate_shader_objects (GLEW_CONTEXT_ARG_DEF_
 
 #endif /* GL_EXT_separate_specular_color */
 
+#ifdef GL_EXT_shader_image_load_store
+
+static GLboolean _glewInit_GL_EXT_shader_image_load_store (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glBindImageTextureEXT = (PFNGLBINDIMAGETEXTUREEXTPROC)glewGetProcAddress((const GLubyte*)"glBindImageTextureEXT")) == NULL) || r;
+  r = ((glMemoryBarrierEXT = (PFNGLMEMORYBARRIEREXTPROC)glewGetProcAddress((const GLubyte*)"glMemoryBarrierEXT")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_EXT_shader_image_load_store */
+
 #ifdef GL_EXT_shadow_funcs
 
 #endif /* GL_EXT_shadow_funcs */
@@ -5240,6 +5731,29 @@ static GLboolean _glewInit_GL_EXT_vertex_array (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_EXT_vertex_array_bgra */
 
+#ifdef GL_EXT_vertex_attrib_64bit
+
+static GLboolean _glewInit_GL_EXT_vertex_attrib_64bit (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glGetVertexAttribLdvEXT = (PFNGLGETVERTEXATTRIBLDVEXTPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLdvEXT")) == NULL) || r;
+  r = ((glVertexArrayVertexAttribLOffsetEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLOFFSETEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexArrayVertexAttribLOffsetEXT")) == NULL) || r;
+  r = ((glVertexAttribL1dEXT = (PFNGLVERTEXATTRIBL1DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dEXT")) == NULL) || r;
+  r = ((glVertexAttribL1dvEXT = (PFNGLVERTEXATTRIBL1DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1dvEXT")) == NULL) || r;
+  r = ((glVertexAttribL2dEXT = (PFNGLVERTEXATTRIBL2DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dEXT")) == NULL) || r;
+  r = ((glVertexAttribL2dvEXT = (PFNGLVERTEXATTRIBL2DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2dvEXT")) == NULL) || r;
+  r = ((glVertexAttribL3dEXT = (PFNGLVERTEXATTRIBL3DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dEXT")) == NULL) || r;
+  r = ((glVertexAttribL3dvEXT = (PFNGLVERTEXATTRIBL3DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3dvEXT")) == NULL) || r;
+  r = ((glVertexAttribL4dEXT = (PFNGLVERTEXATTRIBL4DEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dEXT")) == NULL) || r;
+  r = ((glVertexAttribL4dvEXT = (PFNGLVERTEXATTRIBL4DVEXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4dvEXT")) == NULL) || r;
+  r = ((glVertexAttribLPointerEXT = (PFNGLVERTEXATTRIBLPOINTEREXTPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLPointerEXT")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
 #ifdef GL_EXT_vertex_shader
 
 static GLboolean _glewInit_GL_EXT_vertex_shader (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -5736,6 +6250,60 @@ static GLboolean _glewInit_GL_NV_gpu_program4 (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_NV_gpu_program4 */
 
+#ifdef GL_NV_gpu_program5
+
+#endif /* GL_NV_gpu_program5 */
+
+#ifdef GL_NV_gpu_program_fp64
+
+#endif /* GL_NV_gpu_program_fp64 */
+
+#ifdef GL_NV_gpu_shader5
+
+static GLboolean _glewInit_GL_NV_gpu_shader5 (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glGetUniformi64vNV = (PFNGLGETUNIFORMI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformi64vNV")) == NULL) || r;
+  r = ((glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformui64vNV")) == NULL) || r;
+  r = ((glProgramUniform1i64NV = (PFNGLPROGRAMUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64NV")) == NULL) || r;
+  r = ((glProgramUniform1i64vNV = (PFNGLPROGRAMUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1i64vNV")) == NULL) || r;
+  r = ((glProgramUniform1ui64NV = (PFNGLPROGRAMUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64NV")) == NULL) || r;
+  r = ((glProgramUniform1ui64vNV = (PFNGLPROGRAMUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform1ui64vNV")) == NULL) || r;
+  r = ((glProgramUniform2i64NV = (PFNGLPROGRAMUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64NV")) == NULL) || r;
+  r = ((glProgramUniform2i64vNV = (PFNGLPROGRAMUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2i64vNV")) == NULL) || r;
+  r = ((glProgramUniform2ui64NV = (PFNGLPROGRAMUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64NV")) == NULL) || r;
+  r = ((glProgramUniform2ui64vNV = (PFNGLPROGRAMUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform2ui64vNV")) == NULL) || r;
+  r = ((glProgramUniform3i64NV = (PFNGLPROGRAMUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64NV")) == NULL) || r;
+  r = ((glProgramUniform3i64vNV = (PFNGLPROGRAMUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3i64vNV")) == NULL) || r;
+  r = ((glProgramUniform3ui64NV = (PFNGLPROGRAMUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64NV")) == NULL) || r;
+  r = ((glProgramUniform3ui64vNV = (PFNGLPROGRAMUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform3ui64vNV")) == NULL) || r;
+  r = ((glProgramUniform4i64NV = (PFNGLPROGRAMUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64NV")) == NULL) || r;
+  r = ((glProgramUniform4i64vNV = (PFNGLPROGRAMUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4i64vNV")) == NULL) || r;
+  r = ((glProgramUniform4ui64NV = (PFNGLPROGRAMUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64NV")) == NULL) || r;
+  r = ((glProgramUniform4ui64vNV = (PFNGLPROGRAMUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glProgramUniform4ui64vNV")) == NULL) || r;
+  r = ((glUniform1i64NV = (PFNGLUNIFORM1I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64NV")) == NULL) || r;
+  r = ((glUniform1i64vNV = (PFNGLUNIFORM1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform1i64vNV")) == NULL) || r;
+  r = ((glUniform1ui64NV = (PFNGLUNIFORM1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64NV")) == NULL) || r;
+  r = ((glUniform1ui64vNV = (PFNGLUNIFORM1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform1ui64vNV")) == NULL) || r;
+  r = ((glUniform2i64NV = (PFNGLUNIFORM2I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64NV")) == NULL) || r;
+  r = ((glUniform2i64vNV = (PFNGLUNIFORM2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform2i64vNV")) == NULL) || r;
+  r = ((glUniform2ui64NV = (PFNGLUNIFORM2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64NV")) == NULL) || r;
+  r = ((glUniform2ui64vNV = (PFNGLUNIFORM2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform2ui64vNV")) == NULL) || r;
+  r = ((glUniform3i64NV = (PFNGLUNIFORM3I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64NV")) == NULL) || r;
+  r = ((glUniform3i64vNV = (PFNGLUNIFORM3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform3i64vNV")) == NULL) || r;
+  r = ((glUniform3ui64NV = (PFNGLUNIFORM3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64NV")) == NULL) || r;
+  r = ((glUniform3ui64vNV = (PFNGLUNIFORM3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform3ui64vNV")) == NULL) || r;
+  r = ((glUniform4i64NV = (PFNGLUNIFORM4I64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64NV")) == NULL) || r;
+  r = ((glUniform4i64vNV = (PFNGLUNIFORM4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform4i64vNV")) == NULL) || r;
+  r = ((glUniform4ui64NV = (PFNGLUNIFORM4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64NV")) == NULL) || r;
+  r = ((glUniform4ui64vNV = (PFNGLUNIFORM4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glUniform4ui64vNV")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_NV_gpu_shader5 */
+
 #ifdef GL_NV_half_float
 
 static GLboolean _glewInit_GL_NV_half_float (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -5952,7 +6520,6 @@ static GLboolean _glewInit_GL_NV_shader_buffer_load (GLEW_CONTEXT_ARG_DEF_INIT)
   r = ((glGetBufferParameterui64vNV = (PFNGLGETBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetBufferParameterui64vNV")) == NULL) || r;
   r = ((glGetIntegerui64vNV = (PFNGLGETINTEGERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetIntegerui64vNV")) == NULL) || r;
   r = ((glGetNamedBufferParameterui64vNV = (PFNGLGETNAMEDBUFFERPARAMETERUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetNamedBufferParameterui64vNV")) == NULL) || r;
-  r = ((glGetUniformui64vNV = (PFNGLGETUNIFORMUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetUniformui64vNV")) == NULL) || r;
   r = ((glIsBufferResidentNV = (PFNGLISBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsBufferResidentNV")) == NULL) || r;
   r = ((glIsNamedBufferResidentNV = (PFNGLISNAMEDBUFFERRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glIsNamedBufferResidentNV")) == NULL) || r;
   r = ((glMakeBufferNonResidentNV = (PFNGLMAKEBUFFERNONRESIDENTNVPROC)glewGetProcAddress((const GLubyte*)"glMakeBufferNonResidentNV")) == NULL) || r;
@@ -5969,6 +6536,10 @@ static GLboolean _glewInit_GL_NV_shader_buffer_load (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_NV_shader_buffer_load */
 
+#ifdef GL_NV_tessellation_program5
+
+#endif /* GL_NV_tessellation_program5 */
+
 #ifdef GL_NV_texgen_emboss
 
 #endif /* GL_NV_texgen_emboss */
@@ -6078,6 +6649,37 @@ static GLboolean _glewInit_GL_NV_vertex_array_range (GLEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GL_NV_vertex_array_range2 */
 
+#ifdef GL_NV_vertex_attrib_integer_64bit
+
+static GLboolean _glewInit_GL_NV_vertex_attrib_integer_64bit (GLEW_CONTEXT_ARG_DEF_INIT)
+{
+  GLboolean r = GL_FALSE;
+
+  r = ((glGetVertexAttribLi64vNV = (PFNGLGETVERTEXATTRIBLI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLi64vNV")) == NULL) || r;
+  r = ((glGetVertexAttribLui64vNV = (PFNGLGETVERTEXATTRIBLUI64VNVPROC)glewGetProcAddress((const GLubyte*)"glGetVertexAttribLui64vNV")) == NULL) || r;
+  r = ((glVertexAttribL1i64NV = (PFNGLVERTEXATTRIBL1I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1i64NV")) == NULL) || r;
+  r = ((glVertexAttribL1i64vNV = (PFNGLVERTEXATTRIBL1I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1i64vNV")) == NULL) || r;
+  r = ((glVertexAttribL1ui64NV = (PFNGLVERTEXATTRIBL1UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64NV")) == NULL) || r;
+  r = ((glVertexAttribL1ui64vNV = (PFNGLVERTEXATTRIBL1UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL1ui64vNV")) == NULL) || r;
+  r = ((glVertexAttribL2i64NV = (PFNGLVERTEXATTRIBL2I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2i64NV")) == NULL) || r;
+  r = ((glVertexAttribL2i64vNV = (PFNGLVERTEXATTRIBL2I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2i64vNV")) == NULL) || r;
+  r = ((glVertexAttribL2ui64NV = (PFNGLVERTEXATTRIBL2UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2ui64NV")) == NULL) || r;
+  r = ((glVertexAttribL2ui64vNV = (PFNGLVERTEXATTRIBL2UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL2ui64vNV")) == NULL) || r;
+  r = ((glVertexAttribL3i64NV = (PFNGLVERTEXATTRIBL3I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3i64NV")) == NULL) || r;
+  r = ((glVertexAttribL3i64vNV = (PFNGLVERTEXATTRIBL3I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3i64vNV")) == NULL) || r;
+  r = ((glVertexAttribL3ui64NV = (PFNGLVERTEXATTRIBL3UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3ui64NV")) == NULL) || r;
+  r = ((glVertexAttribL3ui64vNV = (PFNGLVERTEXATTRIBL3UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL3ui64vNV")) == NULL) || r;
+  r = ((glVertexAttribL4i64NV = (PFNGLVERTEXATTRIBL4I64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4i64NV")) == NULL) || r;
+  r = ((glVertexAttribL4i64vNV = (PFNGLVERTEXATTRIBL4I64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4i64vNV")) == NULL) || r;
+  r = ((glVertexAttribL4ui64NV = (PFNGLVERTEXATTRIBL4UI64NVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4ui64NV")) == NULL) || r;
+  r = ((glVertexAttribL4ui64vNV = (PFNGLVERTEXATTRIBL4UI64VNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribL4ui64vNV")) == NULL) || r;
+  r = ((glVertexAttribLFormatNV = (PFNGLVERTEXATTRIBLFORMATNVPROC)glewGetProcAddress((const GLubyte*)"glVertexAttribLFormatNV")) == NULL) || r;
+
+  return r;
+}
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
 #ifdef GL_NV_vertex_buffer_unified_memory
 
 static GLboolean _glewInit_GL_NV_vertex_buffer_unified_memory (GLEW_CONTEXT_ARG_DEF_INIT)
@@ -6838,7 +7440,11 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   }
   else
   {
-    CONST_CAST(GLEW_VERSION_3_0) =                                ( major >= 3               ) ? GL_TRUE : GL_FALSE;
+    CONST_CAST(GLEW_VERSION_4_0) = ( major > 4 )               || ( major == 4               ) ? GL_TRUE : GL_FALSE;
+    CONST_CAST(GLEW_VERSION_3_3) = GLEW_VERSION_4_0 == GL_TRUE || ( major == 3 && minor >= 3 ) ? GL_TRUE : GL_FALSE;
+    CONST_CAST(GLEW_VERSION_3_2) = GLEW_VERSION_3_3 == GL_TRUE || ( major == 3 && minor >= 2 ) ? GL_TRUE : GL_FALSE;
+    CONST_CAST(GLEW_VERSION_3_1) = GLEW_VERSION_3_2 == GL_TRUE || ( major == 3 && minor >= 1 ) ? GL_TRUE : GL_FALSE;
+    CONST_CAST(GLEW_VERSION_3_0) = GLEW_VERSION_3_1 == GL_TRUE || ( major == 3               ) ? GL_TRUE : GL_FALSE;
     CONST_CAST(GLEW_VERSION_2_1) = GLEW_VERSION_3_0 == GL_TRUE || ( major == 2 && minor >= 1 ) ? GL_TRUE : GL_FALSE;    
     CONST_CAST(GLEW_VERSION_2_0) = GLEW_VERSION_2_1 == GL_TRUE || ( major == 2               ) ? GL_TRUE : GL_FALSE;
     CONST_CAST(GLEW_VERSION_1_5) = GLEW_VERSION_2_0 == GL_TRUE || ( major == 1 && minor >= 5 ) ? GL_TRUE : GL_FALSE;
@@ -6875,6 +7481,11 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GL_VERSION_3_2
   if (glewExperimental || GLEW_VERSION_3_2) CONST_CAST(GLEW_VERSION_3_2) = !_glewInit_GL_VERSION_3_2(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_VERSION_3_2 */
+#ifdef GL_VERSION_3_3
+#endif /* GL_VERSION_3_3 */
+#ifdef GL_VERSION_4_0
+  if (glewExperimental || GLEW_VERSION_4_0) CONST_CAST(GLEW_VERSION_4_0) = !_glewInit_GL_VERSION_4_0(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_VERSION_4_0 */
 #ifdef GL_3DFX_multisample
   CONST_CAST(GLEW_3DFX_multisample) = glewGetExtension("GL_3DFX_multisample");
 #endif /* GL_3DFX_multisample */
@@ -6885,6 +7496,9 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GL_3DFX_texture_compression_FXT1
   CONST_CAST(GLEW_3DFX_texture_compression_FXT1) = glewGetExtension("GL_3DFX_texture_compression_FXT1");
 #endif /* GL_3DFX_texture_compression_FXT1 */
+#ifdef GL_AMD_conservative_depth
+  CONST_CAST(GLEW_AMD_conservative_depth) = glewGetExtension("GL_AMD_conservative_depth");
+#endif /* GL_AMD_conservative_depth */
 #ifdef GL_AMD_draw_buffers_blend
   CONST_CAST(GLEW_AMD_draw_buffers_blend) = glewGetExtension("GL_AMD_draw_buffers_blend");
   if (glewExperimental || GLEW_AMD_draw_buffers_blend) CONST_CAST(GLEW_AMD_draw_buffers_blend) = !_glewInit_GL_AMD_draw_buffers_blend(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -6893,6 +7507,12 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_AMD_performance_monitor) = glewGetExtension("GL_AMD_performance_monitor");
   if (glewExperimental || GLEW_AMD_performance_monitor) CONST_CAST(GLEW_AMD_performance_monitor) = !_glewInit_GL_AMD_performance_monitor(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_AMD_performance_monitor */
+#ifdef GL_AMD_seamless_cubemap_per_texture
+  CONST_CAST(GLEW_AMD_seamless_cubemap_per_texture) = glewGetExtension("GL_AMD_seamless_cubemap_per_texture");
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+#ifdef GL_AMD_shader_stencil_export
+  CONST_CAST(GLEW_AMD_shader_stencil_export) = glewGetExtension("GL_AMD_shader_stencil_export");
+#endif /* GL_AMD_shader_stencil_export */
 #ifdef GL_AMD_texture_texture4
   CONST_CAST(GLEW_AMD_texture_texture4) = glewGetExtension("GL_AMD_texture_texture4");
 #endif /* GL_AMD_texture_texture4 */
@@ -6959,6 +7579,10 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GL_APPLE_ycbcr_422
   CONST_CAST(GLEW_APPLE_ycbcr_422) = glewGetExtension("GL_APPLE_ycbcr_422");
 #endif /* GL_APPLE_ycbcr_422 */
+#ifdef GL_ARB_blend_func_extended
+  CONST_CAST(GLEW_ARB_blend_func_extended) = glewGetExtension("GL_ARB_blend_func_extended");
+  if (glewExperimental || GLEW_ARB_blend_func_extended) CONST_CAST(GLEW_ARB_blend_func_extended) = !_glewInit_GL_ARB_blend_func_extended(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_blend_func_extended */
 #ifdef GL_ARB_color_buffer_float
   CONST_CAST(GLEW_ARB_color_buffer_float) = glewGetExtension("GL_ARB_color_buffer_float");
   if (glewExperimental || GLEW_ARB_color_buffer_float) CONST_CAST(GLEW_ARB_color_buffer_float) = !_glewInit_GL_ARB_color_buffer_float(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -6991,10 +7615,17 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_ARB_draw_elements_base_vertex) = glewGetExtension("GL_ARB_draw_elements_base_vertex");
   if (glewExperimental || GLEW_ARB_draw_elements_base_vertex) CONST_CAST(GLEW_ARB_draw_elements_base_vertex) = !_glewInit_GL_ARB_draw_elements_base_vertex(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_draw_elements_base_vertex */
+#ifdef GL_ARB_draw_indirect
+  CONST_CAST(GLEW_ARB_draw_indirect) = glewGetExtension("GL_ARB_draw_indirect");
+  if (glewExperimental || GLEW_ARB_draw_indirect) CONST_CAST(GLEW_ARB_draw_indirect) = !_glewInit_GL_ARB_draw_indirect(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_draw_indirect */
 #ifdef GL_ARB_draw_instanced
   CONST_CAST(GLEW_ARB_draw_instanced) = glewGetExtension("GL_ARB_draw_instanced");
   if (glewExperimental || GLEW_ARB_draw_instanced) CONST_CAST(GLEW_ARB_draw_instanced) = !_glewInit_GL_ARB_draw_instanced(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_draw_instanced */
+#ifdef GL_ARB_explicit_attrib_location
+  CONST_CAST(GLEW_ARB_explicit_attrib_location) = glewGetExtension("GL_ARB_explicit_attrib_location");
+#endif /* GL_ARB_explicit_attrib_location */
 #ifdef GL_ARB_fragment_coord_conventions
   CONST_CAST(GLEW_ARB_fragment_coord_conventions) = glewGetExtension("GL_ARB_fragment_coord_conventions");
 #endif /* GL_ARB_fragment_coord_conventions */
@@ -7018,6 +7649,12 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_ARB_geometry_shader4) = glewGetExtension("GL_ARB_geometry_shader4");
   if (glewExperimental || GLEW_ARB_geometry_shader4) CONST_CAST(GLEW_ARB_geometry_shader4) = !_glewInit_GL_ARB_geometry_shader4(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_geometry_shader4 */
+#ifdef GL_ARB_gpu_shader5
+  CONST_CAST(GLEW_ARB_gpu_shader5) = glewGetExtension("GL_ARB_gpu_shader5");
+#endif /* GL_ARB_gpu_shader5 */
+#ifdef GL_ARB_gpu_shader_fp64
+  CONST_CAST(GLEW_ARB_gpu_shader_fp64) = glewGetExtension("GL_ARB_gpu_shader_fp64");
+#endif /* GL_ARB_gpu_shader_fp64 */
 #ifdef GL_ARB_half_float_pixel
   CONST_CAST(GLEW_ARB_half_float_pixel) = glewGetExtension("GL_ARB_half_float_pixel");
 #endif /* GL_ARB_half_float_pixel */
@@ -7052,6 +7689,9 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_ARB_occlusion_query) = glewGetExtension("GL_ARB_occlusion_query");
   if (glewExperimental || GLEW_ARB_occlusion_query) CONST_CAST(GLEW_ARB_occlusion_query) = !_glewInit_GL_ARB_occlusion_query(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_occlusion_query */
+#ifdef GL_ARB_occlusion_query2
+  CONST_CAST(GLEW_ARB_occlusion_query2) = glewGetExtension("GL_ARB_occlusion_query2");
+#endif /* GL_ARB_occlusion_query2 */
 #ifdef GL_ARB_pixel_buffer_object
   CONST_CAST(GLEW_ARB_pixel_buffer_object) = glewGetExtension("GL_ARB_pixel_buffer_object");
 #endif /* GL_ARB_pixel_buffer_object */
@@ -7070,19 +7710,34 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_ARB_sample_shading) = glewGetExtension("GL_ARB_sample_shading");
   if (glewExperimental || GLEW_ARB_sample_shading) CONST_CAST(GLEW_ARB_sample_shading) = !_glewInit_GL_ARB_sample_shading(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_sample_shading */
+#ifdef GL_ARB_sampler_objects
+  CONST_CAST(GLEW_ARB_sampler_objects) = glewGetExtension("GL_ARB_sampler_objects");
+  if (glewExperimental || GLEW_ARB_sampler_objects) CONST_CAST(GLEW_ARB_sampler_objects) = !_glewInit_GL_ARB_sampler_objects(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_sampler_objects */
 #ifdef GL_ARB_seamless_cube_map
   CONST_CAST(GLEW_ARB_seamless_cube_map) = glewGetExtension("GL_ARB_seamless_cube_map");
 #endif /* GL_ARB_seamless_cube_map */
+#ifdef GL_ARB_shader_bit_encoding
+  CONST_CAST(GLEW_ARB_shader_bit_encoding) = glewGetExtension("GL_ARB_shader_bit_encoding");
+#endif /* GL_ARB_shader_bit_encoding */
 #ifdef GL_ARB_shader_objects
   CONST_CAST(GLEW_ARB_shader_objects) = glewGetExtension("GL_ARB_shader_objects");
   if (glewExperimental || GLEW_ARB_shader_objects) CONST_CAST(GLEW_ARB_shader_objects) = !_glewInit_GL_ARB_shader_objects(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_shader_objects */
+#ifdef GL_ARB_shader_subroutine
+  CONST_CAST(GLEW_ARB_shader_subroutine) = glewGetExtension("GL_ARB_shader_subroutine");
+  if (glewExperimental || GLEW_ARB_shader_subroutine) CONST_CAST(GLEW_ARB_shader_subroutine) = !_glewInit_GL_ARB_shader_subroutine(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_shader_subroutine */
 #ifdef GL_ARB_shader_texture_lod
   CONST_CAST(GLEW_ARB_shader_texture_lod) = glewGetExtension("GL_ARB_shader_texture_lod");
 #endif /* GL_ARB_shader_texture_lod */
 #ifdef GL_ARB_shading_language_100
   CONST_CAST(GLEW_ARB_shading_language_100) = glewGetExtension("GL_ARB_shading_language_100");
 #endif /* GL_ARB_shading_language_100 */
+#ifdef GL_ARB_shading_language_include
+  CONST_CAST(GLEW_ARB_shading_language_include) = glewGetExtension("GL_ARB_shading_language_include");
+  if (glewExperimental || GLEW_ARB_shading_language_include) CONST_CAST(GLEW_ARB_shading_language_include) = !_glewInit_GL_ARB_shading_language_include(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_shading_language_include */
 #ifdef GL_ARB_shadow
   CONST_CAST(GLEW_ARB_shadow) = glewGetExtension("GL_ARB_shadow");
 #endif /* GL_ARB_shadow */
@@ -7093,6 +7748,10 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_ARB_sync) = glewGetExtension("GL_ARB_sync");
   if (glewExperimental || GLEW_ARB_sync) CONST_CAST(GLEW_ARB_sync) = !_glewInit_GL_ARB_sync(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_sync */
+#ifdef GL_ARB_tessellation_shader
+  CONST_CAST(GLEW_ARB_tessellation_shader) = glewGetExtension("GL_ARB_tessellation_shader");
+  if (glewExperimental || GLEW_ARB_tessellation_shader) CONST_CAST(GLEW_ARB_tessellation_shader) = !_glewInit_GL_ARB_tessellation_shader(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_tessellation_shader */
 #ifdef GL_ARB_texture_border_clamp
   CONST_CAST(GLEW_ARB_texture_border_clamp) = glewGetExtension("GL_ARB_texture_border_clamp");
 #endif /* GL_ARB_texture_border_clamp */
@@ -7100,10 +7759,16 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_ARB_texture_buffer_object) = glewGetExtension("GL_ARB_texture_buffer_object");
   if (glewExperimental || GLEW_ARB_texture_buffer_object) CONST_CAST(GLEW_ARB_texture_buffer_object) = !_glewInit_GL_ARB_texture_buffer_object(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_texture_buffer_object */
+#ifdef GL_ARB_texture_buffer_object_rgb32
+  CONST_CAST(GLEW_ARB_texture_buffer_object_rgb32) = glewGetExtension("GL_ARB_texture_buffer_object_rgb32");
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
 #ifdef GL_ARB_texture_compression
   CONST_CAST(GLEW_ARB_texture_compression) = glewGetExtension("GL_ARB_texture_compression");
   if (glewExperimental || GLEW_ARB_texture_compression) CONST_CAST(GLEW_ARB_texture_compression) = !_glewInit_GL_ARB_texture_compression(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_texture_compression */
+#ifdef GL_ARB_texture_compression_bptc
+  CONST_CAST(GLEW_ARB_texture_compression_bptc) = glewGetExtension("GL_ARB_texture_compression_bptc");
+#endif /* GL_ARB_texture_compression_bptc */
 #ifdef GL_ARB_texture_compression_rgtc
   CONST_CAST(GLEW_ARB_texture_compression_rgtc) = glewGetExtension("GL_ARB_texture_compression_rgtc");
 #endif /* GL_ARB_texture_compression_rgtc */
@@ -7150,6 +7815,24 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GL_ARB_texture_rg
   CONST_CAST(GLEW_ARB_texture_rg) = glewGetExtension("GL_ARB_texture_rg");
 #endif /* GL_ARB_texture_rg */
+#ifdef GL_ARB_texture_rgb10_a2ui
+  CONST_CAST(GLEW_ARB_texture_rgb10_a2ui) = glewGetExtension("GL_ARB_texture_rgb10_a2ui");
+#endif /* GL_ARB_texture_rgb10_a2ui */
+#ifdef GL_ARB_texture_swizzle
+  CONST_CAST(GLEW_ARB_texture_swizzle) = glewGetExtension("GL_ARB_texture_swizzle");
+#endif /* GL_ARB_texture_swizzle */
+#ifdef GL_ARB_timer_query
+  CONST_CAST(GLEW_ARB_timer_query) = glewGetExtension("GL_ARB_timer_query");
+  if (glewExperimental || GLEW_ARB_timer_query) CONST_CAST(GLEW_ARB_timer_query) = !_glewInit_GL_ARB_timer_query(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_timer_query */
+#ifdef GL_ARB_transform_feedback2
+  CONST_CAST(GLEW_ARB_transform_feedback2) = glewGetExtension("GL_ARB_transform_feedback2");
+  if (glewExperimental || GLEW_ARB_transform_feedback2) CONST_CAST(GLEW_ARB_transform_feedback2) = !_glewInit_GL_ARB_transform_feedback2(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_transform_feedback2 */
+#ifdef GL_ARB_transform_feedback3
+  CONST_CAST(GLEW_ARB_transform_feedback3) = glewGetExtension("GL_ARB_transform_feedback3");
+  if (glewExperimental || GLEW_ARB_transform_feedback3) CONST_CAST(GLEW_ARB_transform_feedback3) = !_glewInit_GL_ARB_transform_feedback3(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_transform_feedback3 */
 #ifdef GL_ARB_transpose_matrix
   CONST_CAST(GLEW_ARB_transpose_matrix) = glewGetExtension("GL_ARB_transpose_matrix");
   if (glewExperimental || GLEW_ARB_transpose_matrix) CONST_CAST(GLEW_ARB_transpose_matrix) = !_glewInit_GL_ARB_transpose_matrix(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -7181,6 +7864,10 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_ARB_vertex_shader) = glewGetExtension("GL_ARB_vertex_shader");
   if (glewExperimental || GLEW_ARB_vertex_shader) CONST_CAST(GLEW_ARB_vertex_shader) = !_glewInit_GL_ARB_vertex_shader(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_ARB_vertex_shader */
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+  CONST_CAST(GLEW_ARB_vertex_type_2_10_10_10_rev) = glewGetExtension("GL_ARB_vertex_type_2_10_10_10_rev");
+  if (glewExperimental || GLEW_ARB_vertex_type_2_10_10_10_rev) CONST_CAST(GLEW_ARB_vertex_type_2_10_10_10_rev) = !_glewInit_GL_ARB_vertex_type_2_10_10_10_rev(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
 #ifdef GL_ARB_window_pos
   CONST_CAST(GLEW_ARB_window_pos) = glewGetExtension("GL_ARB_window_pos");
   if (glewExperimental || GLEW_ARB_window_pos) CONST_CAST(GLEW_ARB_window_pos) = !_glewInit_GL_ARB_window_pos(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -7467,6 +8154,10 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GL_EXT_separate_specular_color
   CONST_CAST(GLEW_EXT_separate_specular_color) = glewGetExtension("GL_EXT_separate_specular_color");
 #endif /* GL_EXT_separate_specular_color */
+#ifdef GL_EXT_shader_image_load_store
+  CONST_CAST(GLEW_EXT_shader_image_load_store) = glewGetExtension("GL_EXT_shader_image_load_store");
+  if (glewExperimental || GLEW_EXT_shader_image_load_store) CONST_CAST(GLEW_EXT_shader_image_load_store) = !_glewInit_GL_EXT_shader_image_load_store(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_EXT_shader_image_load_store */
 #ifdef GL_EXT_shadow_funcs
   CONST_CAST(GLEW_EXT_shadow_funcs) = glewGetExtension("GL_EXT_shadow_funcs");
 #endif /* GL_EXT_shadow_funcs */
@@ -7582,6 +8273,10 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GL_EXT_vertex_array_bgra
   CONST_CAST(GLEW_EXT_vertex_array_bgra) = glewGetExtension("GL_EXT_vertex_array_bgra");
 #endif /* GL_EXT_vertex_array_bgra */
+#ifdef GL_EXT_vertex_attrib_64bit
+  CONST_CAST(GLEW_EXT_vertex_attrib_64bit) = glewGetExtension("GL_EXT_vertex_attrib_64bit");
+  if (glewExperimental || GLEW_EXT_vertex_attrib_64bit) CONST_CAST(GLEW_EXT_vertex_attrib_64bit) = !_glewInit_GL_EXT_vertex_attrib_64bit(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_EXT_vertex_attrib_64bit */
 #ifdef GL_EXT_vertex_shader
   CONST_CAST(GLEW_EXT_vertex_shader) = glewGetExtension("GL_EXT_vertex_shader");
   if (glewExperimental || GLEW_EXT_vertex_shader) CONST_CAST(GLEW_EXT_vertex_shader) = !_glewInit_GL_EXT_vertex_shader(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -7716,7 +8411,7 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_NV_fragment_program2) = glewGetExtension("GL_NV_fragment_program2");
 #endif /* GL_NV_fragment_program2 */
 #ifdef GL_NV_fragment_program4
-  CONST_CAST(GLEW_NV_fragment_program4) = glewGetExtension("GL_NV_fragment_program4");
+  CONST_CAST(GLEW_NV_fragment_program4) = glewGetExtension("GL_NV_gpu_program4");
 #endif /* GL_NV_fragment_program4 */
 #ifdef GL_NV_fragment_program_option
   CONST_CAST(GLEW_NV_fragment_program_option) = glewGetExtension("GL_NV_fragment_program_option");
@@ -7726,7 +8421,7 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   if (glewExperimental || GLEW_NV_framebuffer_multisample_coverage) CONST_CAST(GLEW_NV_framebuffer_multisample_coverage) = !_glewInit_GL_NV_framebuffer_multisample_coverage(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_NV_framebuffer_multisample_coverage */
 #ifdef GL_NV_geometry_program4
-  CONST_CAST(GLEW_NV_geometry_program4) = glewGetExtension("GL_NV_geometry_program4");
+  CONST_CAST(GLEW_NV_geometry_program4) = glewGetExtension("GL_NV_gpu_program4");
   if (glewExperimental || GLEW_NV_geometry_program4) CONST_CAST(GLEW_NV_geometry_program4) = !_glewInit_GL_NV_geometry_program4(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_NV_geometry_program4 */
 #ifdef GL_NV_geometry_shader4
@@ -7736,6 +8431,16 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_NV_gpu_program4) = glewGetExtension("GL_NV_gpu_program4");
   if (glewExperimental || GLEW_NV_gpu_program4) CONST_CAST(GLEW_NV_gpu_program4) = !_glewInit_GL_NV_gpu_program4(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_NV_gpu_program4 */
+#ifdef GL_NV_gpu_program5
+  CONST_CAST(GLEW_NV_gpu_program5) = glewGetExtension("GL_NV_gpu_program5");
+#endif /* GL_NV_gpu_program5 */
+#ifdef GL_NV_gpu_program_fp64
+  CONST_CAST(GLEW_NV_gpu_program_fp64) = glewGetExtension("GL_NV_gpu_program_fp64");
+#endif /* GL_NV_gpu_program_fp64 */
+#ifdef GL_NV_gpu_shader5
+  CONST_CAST(GLEW_NV_gpu_shader5) = glewGetExtension("GL_NV_gpu_shader5");
+  if (glewExperimental || GLEW_NV_gpu_shader5) CONST_CAST(GLEW_NV_gpu_shader5) = !_glewInit_GL_NV_gpu_shader5(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_NV_gpu_shader5 */
 #ifdef GL_NV_half_float
   CONST_CAST(GLEW_NV_half_float) = glewGetExtension("GL_NV_half_float");
   if (glewExperimental || GLEW_NV_half_float) CONST_CAST(GLEW_NV_half_float) = !_glewInit_GL_NV_half_float(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -7788,6 +8493,9 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_NV_shader_buffer_load) = glewGetExtension("GL_NV_shader_buffer_load");
   if (glewExperimental || GLEW_NV_shader_buffer_load) CONST_CAST(GLEW_NV_shader_buffer_load) = !_glewInit_GL_NV_shader_buffer_load(GLEW_CONTEXT_ARG_VAR_INIT);
 #endif /* GL_NV_shader_buffer_load */
+#ifdef GL_NV_tessellation_program5
+  CONST_CAST(GLEW_NV_tessellation_program5) = glewGetExtension("GL_NV_gpu_program5");
+#endif /* GL_NV_tessellation_program5 */
 #ifdef GL_NV_texgen_emboss
   CONST_CAST(GLEW_NV_texgen_emboss) = glewGetExtension("GL_NV_texgen_emboss");
 #endif /* GL_NV_texgen_emboss */
@@ -7834,6 +8542,10 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GL_NV_vertex_array_range2
   CONST_CAST(GLEW_NV_vertex_array_range2) = glewGetExtension("GL_NV_vertex_array_range2");
 #endif /* GL_NV_vertex_array_range2 */
+#ifdef GL_NV_vertex_attrib_integer_64bit
+  CONST_CAST(GLEW_NV_vertex_attrib_integer_64bit) = glewGetExtension("GL_NV_vertex_attrib_integer_64bit");
+  if (glewExperimental || GLEW_NV_vertex_attrib_integer_64bit) CONST_CAST(GLEW_NV_vertex_attrib_integer_64bit) = !_glewInit_GL_NV_vertex_attrib_integer_64bit(GLEW_CONTEXT_ARG_VAR_INIT);
+#endif /* GL_NV_vertex_attrib_integer_64bit */
 #ifdef GL_NV_vertex_buffer_unified_memory
   CONST_CAST(GLEW_NV_vertex_buffer_unified_memory) = glewGetExtension("GL_NV_vertex_buffer_unified_memory");
   if (glewExperimental || GLEW_NV_vertex_buffer_unified_memory) CONST_CAST(GLEW_NV_vertex_buffer_unified_memory) = !_glewInit_GL_NV_vertex_buffer_unified_memory(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -7855,7 +8567,7 @@ GLenum glewContextInit (GLEW_CONTEXT_ARG_DEF_LIST)
   CONST_CAST(GLEW_NV_vertex_program3) = glewGetExtension("GL_NV_vertex_program3");
 #endif /* GL_NV_vertex_program3 */
 #ifdef GL_NV_vertex_program4
-  CONST_CAST(GLEW_NV_vertex_program4) = glewGetExtension("GL_NV_vertex_program4");
+  CONST_CAST(GLEW_NV_vertex_program4) = glewGetExtension("GL_NV_gpu_program4");
 #endif /* GL_NV_vertex_program4 */
 #ifdef GL_OES_byte_coordinates
   CONST_CAST(GLEW_OES_byte_coordinates) = glewGetExtension("GL_OES_byte_coordinates");
@@ -9110,6 +9822,7 @@ GLboolean __GLXEW_ARB_fbconfig_float = GL_FALSE;
 GLboolean __GLXEW_ARB_framebuffer_sRGB = GL_FALSE;
 GLboolean __GLXEW_ARB_get_proc_address = GL_FALSE;
 GLboolean __GLXEW_ARB_multisample = GL_FALSE;
+GLboolean __GLXEW_ARB_vertex_buffer_object = GL_FALSE;
 GLboolean __GLXEW_ATI_pixel_format_float = GL_FALSE;
 GLboolean __GLXEW_ATI_render_texture = GL_FALSE;
 GLboolean __GLXEW_EXT_fbconfig_packed_float = GL_FALSE;
@@ -9120,6 +9833,7 @@ GLboolean __GLXEW_EXT_swap_control = GL_FALSE;
 GLboolean __GLXEW_EXT_texture_from_pixmap = GL_FALSE;
 GLboolean __GLXEW_EXT_visual_info = GL_FALSE;
 GLboolean __GLXEW_EXT_visual_rating = GL_FALSE;
+GLboolean __GLXEW_INTEL_swap_event = GL_FALSE;
 GLboolean __GLXEW_MESA_agp_offset = GL_FALSE;
 GLboolean __GLXEW_MESA_copy_sub_buffer = GL_FALSE;
 GLboolean __GLXEW_MESA_pixmap_colormap = GL_FALSE;
@@ -9238,6 +9952,10 @@ static GLboolean _glewInit_GLX_ARB_create_context (GLXEW_CONTEXT_ARG_DEF_INIT)
 
 #endif /* GLX_ARB_multisample */
 
+#ifdef GLX_ARB_vertex_buffer_object
+
+#endif /* GLX_ARB_vertex_buffer_object */
+
 #ifdef GLX_ATI_pixel_format_float
 
 #endif /* GLX_ATI_pixel_format_float */
@@ -9320,6 +10038,10 @@ static GLboolean _glewInit_GLX_EXT_texture_from_pixmap (GLXEW_CONTEXT_ARG_DEF_IN
 
 #endif /* GLX_EXT_visual_rating */
 
+#ifdef GLX_INTEL_swap_event
+
+#endif /* GLX_INTEL_swap_event */
+
 #ifdef GLX_MESA_agp_offset
 
 static GLboolean _glewInit_GLX_MESA_agp_offset (GLXEW_CONTEXT_ARG_DEF_INIT)
@@ -9765,6 +10487,9 @@ GLenum glxewContextInit (GLXEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GLX_ARB_multisample
   CONST_CAST(GLXEW_ARB_multisample) = glxewGetExtension("GLX_ARB_multisample");
 #endif /* GLX_ARB_multisample */
+#ifdef GLX_ARB_vertex_buffer_object
+  CONST_CAST(GLXEW_ARB_vertex_buffer_object) = glxewGetExtension("GLX_ARB_vertex_buffer_object");
+#endif /* GLX_ARB_vertex_buffer_object */
 #ifdef GLX_ATI_pixel_format_float
   CONST_CAST(GLXEW_ATI_pixel_format_float) = glxewGetExtension("GLX_ATI_pixel_format_float");
 #endif /* GLX_ATI_pixel_format_float */
@@ -9799,6 +10524,9 @@ GLenum glxewContextInit (GLXEW_CONTEXT_ARG_DEF_LIST)
 #ifdef GLX_EXT_visual_rating
   CONST_CAST(GLXEW_EXT_visual_rating) = glxewGetExtension("GLX_EXT_visual_rating");
 #endif /* GLX_EXT_visual_rating */
+#ifdef GLX_INTEL_swap_event
+  CONST_CAST(GLXEW_INTEL_swap_event) = glxewGetExtension("GLX_INTEL_swap_event");
+#endif /* GLX_INTEL_swap_event */
 #ifdef GLX_MESA_agp_offset
   CONST_CAST(GLXEW_MESA_agp_offset) = glxewGetExtension("GLX_MESA_agp_offset");
   if (glewExperimental || GLXEW_MESA_agp_offset) CONST_CAST(GLXEW_MESA_agp_offset) = !_glewInit_GLX_MESA_agp_offset(GLEW_CONTEXT_ARG_VAR_INIT);
@@ -9940,10 +10668,10 @@ const GLubyte* glewGetString (GLenum name)
   static const GLubyte* _glewString[] =
   {
     (const GLubyte*)NULL,
-    (const GLubyte*)"1.5.2",
+    (const GLubyte*)"1.5.4",
     (const GLubyte*)"1",
     (const GLubyte*)"5",
-    (const GLubyte*)"2"
+    (const GLubyte*)"4"
   };
   const int max_string = sizeof(_glewString)/sizeof(*_glewString) - 1;
   return _glewString[(int)name > max_string ? 0 : (int)name];
@@ -10052,6 +10780,20 @@ GLboolean glewIsSupported (const char* name)
           ret = GLEW_VERSION_3_2;
           continue;
         }
+#endif
+#ifdef GL_VERSION_3_3
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"3_3", 3))
+        {
+          ret = GLEW_VERSION_3_3;
+          continue;
+        }
+#endif
+#ifdef GL_VERSION_4_0
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"4_0", 3))
+        {
+          ret = GLEW_VERSION_4_0;
+          continue;
+        }
 #endif
       }
       if (_glewStrSame2(&pos, &len, (const GLubyte*)"3DFX_", 5))
@@ -10080,6 +10822,13 @@ GLboolean glewIsSupported (const char* name)
       }
       if (_glewStrSame2(&pos, &len, (const GLubyte*)"AMD_", 4))
       {
+#ifdef GL_AMD_conservative_depth
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"conservative_depth", 18))
+        {
+          ret = GLEW_AMD_conservative_depth;
+          continue;
+        }
+#endif
 #ifdef GL_AMD_draw_buffers_blend
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_buffers_blend", 18))
         {
@@ -10094,6 +10843,20 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_AMD_seamless_cubemap_per_texture
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cubemap_per_texture", 28))
+        {
+          ret = GLEW_AMD_seamless_cubemap_per_texture;
+          continue;
+        }
+#endif
+#ifdef GL_AMD_shader_stencil_export
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_stencil_export", 21))
+        {
+          ret = GLEW_AMD_shader_stencil_export;
+          continue;
+        }
+#endif
 #ifdef GL_AMD_texture_texture4
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_texture4", 16))
         {
@@ -10233,6 +10996,13 @@ GLboolean glewIsSupported (const char* name)
       }
       if (_glewStrSame2(&pos, &len, (const GLubyte*)"ARB_", 4))
       {
+#ifdef GL_ARB_blend_func_extended
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"blend_func_extended", 19))
+        {
+          ret = GLEW_ARB_blend_func_extended;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_color_buffer_float
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"color_buffer_float", 18))
         {
@@ -10296,6 +11066,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_draw_indirect
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_indirect", 13))
+        {
+          ret = GLEW_ARB_draw_indirect;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_draw_instanced
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"draw_instanced", 14))
         {
@@ -10303,6 +11080,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_explicit_attrib_location
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"explicit_attrib_location", 24))
+        {
+          ret = GLEW_ARB_explicit_attrib_location;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_fragment_coord_conventions
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"fragment_coord_conventions", 26))
         {
@@ -10352,6 +11136,20 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_gpu_shader5
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+        {
+          ret = GLEW_ARB_gpu_shader5;
+          continue;
+        }
+#endif
+#ifdef GL_ARB_gpu_shader_fp64
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader_fp64", 15))
+        {
+          ret = GLEW_ARB_gpu_shader_fp64;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_half_float_pixel
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float_pixel", 16))
         {
@@ -10415,6 +11213,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_occlusion_query2
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"occlusion_query2", 16))
+        {
+          ret = GLEW_ARB_occlusion_query2;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_pixel_buffer_object
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"pixel_buffer_object", 19))
         {
@@ -10450,6 +11255,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_sampler_objects
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"sampler_objects", 15))
+        {
+          ret = GLEW_ARB_sampler_objects;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_seamless_cube_map
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"seamless_cube_map", 17))
         {
@@ -10457,6 +11269,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_shader_bit_encoding
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_bit_encoding", 19))
+        {
+          ret = GLEW_ARB_shader_bit_encoding;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_shader_objects
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_objects", 14))
         {
@@ -10464,6 +11283,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_shader_subroutine
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_subroutine", 17))
+        {
+          ret = GLEW_ARB_shader_subroutine;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_shader_texture_lod
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_texture_lod", 18))
         {
@@ -10478,6 +11304,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_shading_language_include
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"shading_language_include", 24))
+        {
+          ret = GLEW_ARB_shading_language_include;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_shadow
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow", 6))
         {
@@ -10499,6 +11332,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_tessellation_shader
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_shader", 19))
+        {
+          ret = GLEW_ARB_tessellation_shader;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_texture_border_clamp
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_border_clamp", 20))
         {
@@ -10513,6 +11353,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_texture_buffer_object_rgb32
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_buffer_object_rgb32", 27))
+        {
+          ret = GLEW_ARB_texture_buffer_object_rgb32;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_texture_compression
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression", 19))
         {
@@ -10520,6 +11367,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_texture_compression_bptc
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_bptc", 24))
+        {
+          ret = GLEW_ARB_texture_compression_bptc;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_texture_compression_rgtc
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_compression_rgtc", 24))
         {
@@ -10625,6 +11479,41 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_texture_rgb10_a2ui
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_rgb10_a2ui", 18))
+        {
+          ret = GLEW_ARB_texture_rgb10_a2ui;
+          continue;
+        }
+#endif
+#ifdef GL_ARB_texture_swizzle
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"texture_swizzle", 15))
+        {
+          ret = GLEW_ARB_texture_swizzle;
+          continue;
+        }
+#endif
+#ifdef GL_ARB_timer_query
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"timer_query", 11))
+        {
+          ret = GLEW_ARB_timer_query;
+          continue;
+        }
+#endif
+#ifdef GL_ARB_transform_feedback2
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback2", 19))
+        {
+          ret = GLEW_ARB_transform_feedback2;
+          continue;
+        }
+#endif
+#ifdef GL_ARB_transform_feedback3
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"transform_feedback3", 19))
+        {
+          ret = GLEW_ARB_transform_feedback3;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_transpose_matrix
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"transpose_matrix", 16))
         {
@@ -10681,6 +11570,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_type_2_10_10_10_rev", 26))
+        {
+          ret = GLEW_ARB_vertex_type_2_10_10_10_rev;
+          continue;
+        }
+#endif
 #ifdef GL_ARB_window_pos
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"window_pos", 10))
         {
@@ -11243,6 +12139,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_EXT_shader_image_load_store
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"shader_image_load_store", 23))
+        {
+          ret = GLEW_EXT_shader_image_load_store;
+          continue;
+        }
+#endif
 #ifdef GL_EXT_shadow_funcs
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"shadow_funcs", 12))
         {
@@ -11488,6 +12391,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_EXT_vertex_attrib_64bit
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_64bit", 19))
+        {
+          ret = GLEW_EXT_vertex_attrib_64bit;
+          continue;
+        }
+#endif
 #ifdef GL_EXT_vertex_shader
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_shader", 13))
         {
@@ -11823,6 +12733,27 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_NV_gpu_program5
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program5", 12))
+        {
+          ret = GLEW_NV_gpu_program5;
+          continue;
+        }
+#endif
+#ifdef GL_NV_gpu_program_fp64
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_program_fp64", 16))
+        {
+          ret = GLEW_NV_gpu_program_fp64;
+          continue;
+        }
+#endif
+#ifdef GL_NV_gpu_shader5
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"gpu_shader5", 11))
+        {
+          ret = GLEW_NV_gpu_shader5;
+          continue;
+        }
+#endif
 #ifdef GL_NV_half_float
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"half_float", 10))
         {
@@ -11921,6 +12852,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_NV_tessellation_program5
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"tessellation_program5", 21))
+        {
+          ret = GLEW_NV_tessellation_program5;
+          continue;
+        }
+#endif
 #ifdef GL_NV_texgen_emboss
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"texgen_emboss", 13))
         {
@@ -12019,6 +12957,13 @@ GLboolean glewIsSupported (const char* name)
           continue;
         }
 #endif
+#ifdef GL_NV_vertex_attrib_integer_64bit
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_attrib_integer_64bit", 27))
+        {
+          ret = GLEW_NV_vertex_attrib_integer_64bit;
+          continue;
+        }
+#endif
 #ifdef GL_NV_vertex_buffer_unified_memory
         if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_unified_memory", 28))
         {
@@ -13039,6 +13984,13 @@ GLboolean glxewIsSupported (const char* name)
           ret = GLXEW_ARB_multisample;
           continue;
         }
+#endif
+#ifdef GLX_ARB_vertex_buffer_object
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"vertex_buffer_object", 20))
+        {
+          ret = GLXEW_ARB_vertex_buffer_object;
+          continue;
+        }
 #endif
       }
       if (_glewStrSame2(&pos, &len, (const GLubyte*)"ATI_", 4))
@@ -13115,6 +14067,16 @@ GLboolean glxewIsSupported (const char* name)
           ret = GLXEW_EXT_visual_rating;
           continue;
         }
+#endif
+      }
+      if (_glewStrSame2(&pos, &len, (const GLubyte*)"INTEL_", 6))
+      {
+#ifdef GLX_INTEL_swap_event
+        if (_glewStrSame3(&pos, &len, (const GLubyte*)"swap_event", 10))
+        {
+          ret = GLXEW_INTEL_swap_event;
+          continue;
+        }
 #endif
       }
       if (_glewStrSame2(&pos, &len, (const GLubyte*)"MESA_", 5))
index 6847cbb865261c21df654b0dc86558c41cdf0932..abfe1fa29997d89fbb44a37fd1259df613798cbb 100644 (file)
@@ -473,6 +473,30 @@ static void _glewInfo_GL_VERSION_3_2 (void)
 
 #endif /* GL_VERSION_3_2 */
 
+#ifdef GL_VERSION_3_3
+
+static void _glewInfo_GL_VERSION_3_3 (void)
+{
+  glewPrintExt("GL_VERSION_3_3", GLEW_VERSION_3_3, GLEW_VERSION_3_3, GLEW_VERSION_3_3);
+}
+
+#endif /* GL_VERSION_3_3 */
+
+#ifdef GL_VERSION_4_0
+
+static void _glewInfo_GL_VERSION_4_0 (void)
+{
+  glewPrintExt("GL_VERSION_4_0", GLEW_VERSION_4_0, GLEW_VERSION_4_0, GLEW_VERSION_4_0);
+
+  glewInfoFunc("glBlendEquationSeparatei", glBlendEquationSeparatei == NULL);
+  glewInfoFunc("glBlendEquationi", glBlendEquationi == NULL);
+  glewInfoFunc("glBlendFuncSeparatei", glBlendFuncSeparatei == NULL);
+  glewInfoFunc("glBlendFunci", glBlendFunci == NULL);
+  glewInfoFunc("glMinSampleShading", glMinSampleShading == NULL);
+}
+
+#endif /* GL_VERSION_4_0 */
+
 #ifdef GL_3DFX_multisample
 
 static void _glewInfo_GL_3DFX_multisample (void)
@@ -502,6 +526,15 @@ static void _glewInfo_GL_3DFX_texture_compression_FXT1 (void)
 
 #endif /* GL_3DFX_texture_compression_FXT1 */
 
+#ifdef GL_AMD_conservative_depth
+
+static void _glewInfo_GL_AMD_conservative_depth (void)
+{
+  glewPrintExt("GL_AMD_conservative_depth", GLEW_AMD_conservative_depth, glewIsSupported("GL_AMD_conservative_depth"), glewGetExtension("GL_AMD_conservative_depth"));
+}
+
+#endif /* GL_AMD_conservative_depth */
+
 #ifdef GL_AMD_draw_buffers_blend
 
 static void _glewInfo_GL_AMD_draw_buffers_blend (void)
@@ -537,6 +570,24 @@ static void _glewInfo_GL_AMD_performance_monitor (void)
 
 #endif /* GL_AMD_performance_monitor */
 
+#ifdef GL_AMD_seamless_cubemap_per_texture
+
+static void _glewInfo_GL_AMD_seamless_cubemap_per_texture (void)
+{
+  glewPrintExt("GL_AMD_seamless_cubemap_per_texture", GLEW_AMD_seamless_cubemap_per_texture, glewIsSupported("GL_AMD_seamless_cubemap_per_texture"), glewGetExtension("GL_AMD_seamless_cubemap_per_texture"));
+}
+
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+
+#ifdef GL_AMD_shader_stencil_export
+
+static void _glewInfo_GL_AMD_shader_stencil_export (void)
+{
+  glewPrintExt("GL_AMD_shader_stencil_export", GLEW_AMD_shader_stencil_export, glewIsSupported("GL_AMD_shader_stencil_export"), glewGetExtension("GL_AMD_shader_stencil_export"));
+}
+
+#endif /* GL_AMD_shader_stencil_export */
+
 #ifdef GL_AMD_texture_texture4
 
 static void _glewInfo_GL_AMD_texture_texture4 (void)
@@ -753,6 +804,18 @@ static void _glewInfo_GL_APPLE_ycbcr_422 (void)
 
 #endif /* GL_APPLE_ycbcr_422 */
 
+#ifdef GL_ARB_blend_func_extended
+
+static void _glewInfo_GL_ARB_blend_func_extended (void)
+{
+  glewPrintExt("GL_ARB_blend_func_extended", GLEW_ARB_blend_func_extended, glewIsSupported("GL_ARB_blend_func_extended"), glewGetExtension("GL_ARB_blend_func_extended"));
+
+  glewInfoFunc("glBindFragDataLocationIndexed", glBindFragDataLocationIndexed == NULL);
+  glewInfoFunc("glGetFragDataIndex", glGetFragDataIndex == NULL);
+}
+
+#endif /* GL_ARB_blend_func_extended */
+
 #ifdef GL_ARB_color_buffer_float
 
 static void _glewInfo_GL_ARB_color_buffer_float (void)
@@ -850,6 +913,18 @@ static void _glewInfo_GL_ARB_draw_elements_base_vertex (void)
 
 #endif /* GL_ARB_draw_elements_base_vertex */
 
+#ifdef GL_ARB_draw_indirect
+
+static void _glewInfo_GL_ARB_draw_indirect (void)
+{
+  glewPrintExt("GL_ARB_draw_indirect", GLEW_ARB_draw_indirect, glewIsSupported("GL_ARB_draw_indirect"), glewGetExtension("GL_ARB_draw_indirect"));
+
+  glewInfoFunc("glDrawArraysIndirect", glDrawArraysIndirect == NULL);
+  glewInfoFunc("glDrawElementsIndirect", glDrawElementsIndirect == NULL);
+}
+
+#endif /* GL_ARB_draw_indirect */
+
 #ifdef GL_ARB_draw_instanced
 
 static void _glewInfo_GL_ARB_draw_instanced (void)
@@ -862,6 +937,15 @@ static void _glewInfo_GL_ARB_draw_instanced (void)
 
 #endif /* GL_ARB_draw_instanced */
 
+#ifdef GL_ARB_explicit_attrib_location
+
+static void _glewInfo_GL_ARB_explicit_attrib_location (void)
+{
+  glewPrintExt("GL_ARB_explicit_attrib_location", GLEW_ARB_explicit_attrib_location, glewIsSupported("GL_ARB_explicit_attrib_location"), glewGetExtension("GL_ARB_explicit_attrib_location"));
+}
+
+#endif /* GL_ARB_explicit_attrib_location */
+
 #ifdef GL_ARB_fragment_coord_conventions
 
 static void _glewInfo_GL_ARB_fragment_coord_conventions (void)
@@ -951,6 +1035,24 @@ static void _glewInfo_GL_ARB_geometry_shader4 (void)
 
 #endif /* GL_ARB_geometry_shader4 */
 
+#ifdef GL_ARB_gpu_shader5
+
+static void _glewInfo_GL_ARB_gpu_shader5 (void)
+{
+  glewPrintExt("GL_ARB_gpu_shader5", GLEW_ARB_gpu_shader5, glewIsSupported("GL_ARB_gpu_shader5"), glewGetExtension("GL_ARB_gpu_shader5"));
+}
+
+#endif /* GL_ARB_gpu_shader5 */
+
+#ifdef GL_ARB_gpu_shader_fp64
+
+static void _glewInfo_GL_ARB_gpu_shader_fp64 (void)
+{
+  glewPrintExt("GL_ARB_gpu_shader_fp64", GLEW_ARB_gpu_shader_fp64, glewIsSupported("GL_ARB_gpu_shader_fp64"), glewGetExtension("GL_ARB_gpu_shader_fp64"));
+}
+
+#endif /* GL_ARB_gpu_shader_fp64 */
+
 #ifdef GL_ARB_half_float_pixel
 
 static void _glewInfo_GL_ARB_half_float_pixel (void)
@@ -1123,6 +1225,15 @@ static void _glewInfo_GL_ARB_occlusion_query (void)
 
 #endif /* GL_ARB_occlusion_query */
 
+#ifdef GL_ARB_occlusion_query2
+
+static void _glewInfo_GL_ARB_occlusion_query2 (void)
+{
+  glewPrintExt("GL_ARB_occlusion_query2", GLEW_ARB_occlusion_query2, glewIsSupported("GL_ARB_occlusion_query2"), glewGetExtension("GL_ARB_occlusion_query2"));
+}
+
+#endif /* GL_ARB_occlusion_query2 */
+
 #ifdef GL_ARB_pixel_buffer_object
 
 static void _glewInfo_GL_ARB_pixel_buffer_object (void)
@@ -1175,6 +1286,30 @@ static void _glewInfo_GL_ARB_sample_shading (void)
 
 #endif /* GL_ARB_sample_shading */
 
+#ifdef GL_ARB_sampler_objects
+
+static void _glewInfo_GL_ARB_sampler_objects (void)
+{
+  glewPrintExt("GL_ARB_sampler_objects", GLEW_ARB_sampler_objects, glewIsSupported("GL_ARB_sampler_objects"), glewGetExtension("GL_ARB_sampler_objects"));
+
+  glewInfoFunc("glBindSampler", glBindSampler == NULL);
+  glewInfoFunc("glDeleteSamplers", glDeleteSamplers == NULL);
+  glewInfoFunc("glGenSamplers", glGenSamplers == NULL);
+  glewInfoFunc("glGetSamplerParameterIiv", glGetSamplerParameterIiv == NULL);
+  glewInfoFunc("glGetSamplerParameterIuiv", glGetSamplerParameterIuiv == NULL);
+  glewInfoFunc("glGetSamplerParameterfv", glGetSamplerParameterfv == NULL);
+  glewInfoFunc("glGetSamplerParameteriv", glGetSamplerParameteriv == NULL);
+  glewInfoFunc("glIsSampler", glIsSampler == NULL);
+  glewInfoFunc("glSamplerParameterIiv", glSamplerParameterIiv == NULL);
+  glewInfoFunc("glSamplerParameterIuiv", glSamplerParameterIuiv == NULL);
+  glewInfoFunc("glSamplerParameterf", glSamplerParameterf == NULL);
+  glewInfoFunc("glSamplerParameterfv", glSamplerParameterfv == NULL);
+  glewInfoFunc("glSamplerParameteri", glSamplerParameteri == NULL);
+  glewInfoFunc("glSamplerParameteriv", glSamplerParameteriv == NULL);
+}
+
+#endif /* GL_ARB_sampler_objects */
+
 #ifdef GL_ARB_seamless_cube_map
 
 static void _glewInfo_GL_ARB_seamless_cube_map (void)
@@ -1184,6 +1319,15 @@ static void _glewInfo_GL_ARB_seamless_cube_map (void)
 
 #endif /* GL_ARB_seamless_cube_map */
 
+#ifdef GL_ARB_shader_bit_encoding
+
+static void _glewInfo_GL_ARB_shader_bit_encoding (void)
+{
+  glewPrintExt("GL_ARB_shader_bit_encoding", GLEW_ARB_shader_bit_encoding, glewIsSupported("GL_ARB_shader_bit_encoding"), glewGetExtension("GL_ARB_shader_bit_encoding"));
+}
+
+#endif /* GL_ARB_shader_bit_encoding */
+
 #ifdef GL_ARB_shader_objects
 
 static void _glewInfo_GL_ARB_shader_objects (void)
@@ -1233,6 +1377,24 @@ static void _glewInfo_GL_ARB_shader_objects (void)
 
 #endif /* GL_ARB_shader_objects */
 
+#ifdef GL_ARB_shader_subroutine
+
+static void _glewInfo_GL_ARB_shader_subroutine (void)
+{
+  glewPrintExt("GL_ARB_shader_subroutine", GLEW_ARB_shader_subroutine, glewIsSupported("GL_ARB_shader_subroutine"), glewGetExtension("GL_ARB_shader_subroutine"));
+
+  glewInfoFunc("glGetActiveSubroutineName", glGetActiveSubroutineName == NULL);
+  glewInfoFunc("glGetActiveSubroutineUniformName", glGetActiveSubroutineUniformName == NULL);
+  glewInfoFunc("glGetActiveSubroutineUniformiv", glGetActiveSubroutineUniformiv == NULL);
+  glewInfoFunc("glGetProgramStageiv", glGetProgramStageiv == NULL);
+  glewInfoFunc("glGetSubroutineIndex", glGetSubroutineIndex == NULL);
+  glewInfoFunc("glGetSubroutineUniformLocation", glGetSubroutineUniformLocation == NULL);
+  glewInfoFunc("glGetUniformSubroutineuiv", glGetUniformSubroutineuiv == NULL);
+  glewInfoFunc("glUniformSubroutinesuiv", glUniformSubroutinesuiv == NULL);
+}
+
+#endif /* GL_ARB_shader_subroutine */
+
 #ifdef GL_ARB_shader_texture_lod
 
 static void _glewInfo_GL_ARB_shader_texture_lod (void)
@@ -1251,6 +1413,22 @@ static void _glewInfo_GL_ARB_shading_language_100 (void)
 
 #endif /* GL_ARB_shading_language_100 */
 
+#ifdef GL_ARB_shading_language_include
+
+static void _glewInfo_GL_ARB_shading_language_include (void)
+{
+  glewPrintExt("GL_ARB_shading_language_include", GLEW_ARB_shading_language_include, glewIsSupported("GL_ARB_shading_language_include"), glewGetExtension("GL_ARB_shading_language_include"));
+
+  glewInfoFunc("glCompileShaderIncludeARB", glCompileShaderIncludeARB == NULL);
+  glewInfoFunc("glDeleteNamedStringARB", glDeleteNamedStringARB == NULL);
+  glewInfoFunc("glGetNamedStringARB", glGetNamedStringARB == NULL);
+  glewInfoFunc("glGetNamedStringivARB", glGetNamedStringivARB == NULL);
+  glewInfoFunc("glIsNamedStringARB", glIsNamedStringARB == NULL);
+  glewInfoFunc("glNamedStringARB", glNamedStringARB == NULL);
+}
+
+#endif /* GL_ARB_shading_language_include */
+
 #ifdef GL_ARB_shadow
 
 static void _glewInfo_GL_ARB_shadow (void)
@@ -1286,6 +1464,18 @@ static void _glewInfo_GL_ARB_sync (void)
 
 #endif /* GL_ARB_sync */
 
+#ifdef GL_ARB_tessellation_shader
+
+static void _glewInfo_GL_ARB_tessellation_shader (void)
+{
+  glewPrintExt("GL_ARB_tessellation_shader", GLEW_ARB_tessellation_shader, glewIsSupported("GL_ARB_tessellation_shader"), glewGetExtension("GL_ARB_tessellation_shader"));
+
+  glewInfoFunc("glPatchParameterfv", glPatchParameterfv == NULL);
+  glewInfoFunc("glPatchParameteri", glPatchParameteri == NULL);
+}
+
+#endif /* GL_ARB_tessellation_shader */
+
 #ifdef GL_ARB_texture_border_clamp
 
 static void _glewInfo_GL_ARB_texture_border_clamp (void)
@@ -1306,6 +1496,15 @@ static void _glewInfo_GL_ARB_texture_buffer_object (void)
 
 #endif /* GL_ARB_texture_buffer_object */
 
+#ifdef GL_ARB_texture_buffer_object_rgb32
+
+static void _glewInfo_GL_ARB_texture_buffer_object_rgb32 (void)
+{
+  glewPrintExt("GL_ARB_texture_buffer_object_rgb32", GLEW_ARB_texture_buffer_object_rgb32, glewIsSupported("GL_ARB_texture_buffer_object_rgb32"), glewGetExtension("GL_ARB_texture_buffer_object_rgb32"));
+}
+
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
+
 #ifdef GL_ARB_texture_compression
 
 static void _glewInfo_GL_ARB_texture_compression (void)
@@ -1323,6 +1522,15 @@ static void _glewInfo_GL_ARB_texture_compression (void)
 
 #endif /* GL_ARB_texture_compression */
 
+#ifdef GL_ARB_texture_compression_bptc
+
+static void _glewInfo_GL_ARB_texture_compression_bptc (void)
+{
+  glewPrintExt("GL_ARB_texture_compression_bptc", GLEW_ARB_texture_compression_bptc, glewIsSupported("GL_ARB_texture_compression_bptc"), glewGetExtension("GL_ARB_texture_compression_bptc"));
+}
+
+#endif /* GL_ARB_texture_compression_bptc */
+
 #ifdef GL_ARB_texture_compression_rgtc
 
 static void _glewInfo_GL_ARB_texture_compression_rgtc (void)
@@ -1463,6 +1671,68 @@ static void _glewInfo_GL_ARB_texture_rg (void)
 
 #endif /* GL_ARB_texture_rg */
 
+#ifdef GL_ARB_texture_rgb10_a2ui
+
+static void _glewInfo_GL_ARB_texture_rgb10_a2ui (void)
+{
+  glewPrintExt("GL_ARB_texture_rgb10_a2ui", GLEW_ARB_texture_rgb10_a2ui, glewIsSupported("GL_ARB_texture_rgb10_a2ui"), glewGetExtension("GL_ARB_texture_rgb10_a2ui"));
+}
+
+#endif /* GL_ARB_texture_rgb10_a2ui */
+
+#ifdef GL_ARB_texture_swizzle
+
+static void _glewInfo_GL_ARB_texture_swizzle (void)
+{
+  glewPrintExt("GL_ARB_texture_swizzle", GLEW_ARB_texture_swizzle, glewIsSupported("GL_ARB_texture_swizzle"), glewGetExtension("GL_ARB_texture_swizzle"));
+}
+
+#endif /* GL_ARB_texture_swizzle */
+
+#ifdef GL_ARB_timer_query
+
+static void _glewInfo_GL_ARB_timer_query (void)
+{
+  glewPrintExt("GL_ARB_timer_query", GLEW_ARB_timer_query, glewIsSupported("GL_ARB_timer_query"), glewGetExtension("GL_ARB_timer_query"));
+
+  glewInfoFunc("glGetQueryObjecti64v", glGetQueryObjecti64v == NULL);
+  glewInfoFunc("glGetQueryObjectui64v", glGetQueryObjectui64v == NULL);
+  glewInfoFunc("glQueryCounter", glQueryCounter == NULL);
+}
+
+#endif /* GL_ARB_timer_query */
+
+#ifdef GL_ARB_transform_feedback2
+
+static void _glewInfo_GL_ARB_transform_feedback2 (void)
+{
+  glewPrintExt("GL_ARB_transform_feedback2", GLEW_ARB_transform_feedback2, glewIsSupported("GL_ARB_transform_feedback2"), glewGetExtension("GL_ARB_transform_feedback2"));
+
+  glewInfoFunc("glBindTransformFeedback", glBindTransformFeedback == NULL);
+  glewInfoFunc("glDeleteTransformFeedbacks", glDeleteTransformFeedbacks == NULL);
+  glewInfoFunc("glDrawTransformFeedback", glDrawTransformFeedback == NULL);
+  glewInfoFunc("glGenTransformFeedbacks", glGenTransformFeedbacks == NULL);
+  glewInfoFunc("glIsTransformFeedback", glIsTransformFeedback == NULL);
+  glewInfoFunc("glPauseTransformFeedback", glPauseTransformFeedback == NULL);
+  glewInfoFunc("glResumeTransformFeedback", glResumeTransformFeedback == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback2 */
+
+#ifdef GL_ARB_transform_feedback3
+
+static void _glewInfo_GL_ARB_transform_feedback3 (void)
+{
+  glewPrintExt("GL_ARB_transform_feedback3", GLEW_ARB_transform_feedback3, glewIsSupported("GL_ARB_transform_feedback3"), glewGetExtension("GL_ARB_transform_feedback3"));
+
+  glewInfoFunc("glBeginQueryIndexed", glBeginQueryIndexed == NULL);
+  glewInfoFunc("glDrawTransformFeedbackStream", glDrawTransformFeedbackStream == NULL);
+  glewInfoFunc("glEndQueryIndexed", glEndQueryIndexed == NULL);
+  glewInfoFunc("glGetQueryIndexediv", glGetQueryIndexediv == NULL);
+}
+
+#endif /* GL_ARB_transform_feedback3 */
+
 #ifdef GL_ARB_transpose_matrix
 
 static void _glewInfo_GL_ARB_transpose_matrix (void)
@@ -1646,6 +1916,54 @@ static void _glewInfo_GL_ARB_vertex_shader (void)
 
 #endif /* GL_ARB_vertex_shader */
 
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+
+static void _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev (void)
+{
+  glewPrintExt("GL_ARB_vertex_type_2_10_10_10_rev", GLEW_ARB_vertex_type_2_10_10_10_rev, glewIsSupported("GL_ARB_vertex_type_2_10_10_10_rev"), glewGetExtension("GL_ARB_vertex_type_2_10_10_10_rev"));
+
+  glewInfoFunc("glColorP3ui", glColorP3ui == NULL);
+  glewInfoFunc("glColorP3uiv", glColorP3uiv == NULL);
+  glewInfoFunc("glColorP4ui", glColorP4ui == NULL);
+  glewInfoFunc("glColorP4uiv", glColorP4uiv == NULL);
+  glewInfoFunc("glMultiTexCoordP1ui", glMultiTexCoordP1ui == NULL);
+  glewInfoFunc("glMultiTexCoordP1uiv", glMultiTexCoordP1uiv == NULL);
+  glewInfoFunc("glMultiTexCoordP2ui", glMultiTexCoordP2ui == NULL);
+  glewInfoFunc("glMultiTexCoordP2uiv", glMultiTexCoordP2uiv == NULL);
+  glewInfoFunc("glMultiTexCoordP3ui", glMultiTexCoordP3ui == NULL);
+  glewInfoFunc("glMultiTexCoordP3uiv", glMultiTexCoordP3uiv == NULL);
+  glewInfoFunc("glMultiTexCoordP4ui", glMultiTexCoordP4ui == NULL);
+  glewInfoFunc("glMultiTexCoordP4uiv", glMultiTexCoordP4uiv == NULL);
+  glewInfoFunc("glNormalP3ui", glNormalP3ui == NULL);
+  glewInfoFunc("glNormalP3uiv", glNormalP3uiv == NULL);
+  glewInfoFunc("glSecondaryColorP3ui", glSecondaryColorP3ui == NULL);
+  glewInfoFunc("glSecondaryColorP3uiv", glSecondaryColorP3uiv == NULL);
+  glewInfoFunc("glTexCoordP1ui", glTexCoordP1ui == NULL);
+  glewInfoFunc("glTexCoordP1uiv", glTexCoordP1uiv == NULL);
+  glewInfoFunc("glTexCoordP2ui", glTexCoordP2ui == NULL);
+  glewInfoFunc("glTexCoordP2uiv", glTexCoordP2uiv == NULL);
+  glewInfoFunc("glTexCoordP3ui", glTexCoordP3ui == NULL);
+  glewInfoFunc("glTexCoordP3uiv", glTexCoordP3uiv == NULL);
+  glewInfoFunc("glTexCoordP4ui", glTexCoordP4ui == NULL);
+  glewInfoFunc("glTexCoordP4uiv", glTexCoordP4uiv == NULL);
+  glewInfoFunc("glVertexAttribP1ui", glVertexAttribP1ui == NULL);
+  glewInfoFunc("glVertexAttribP1uiv", glVertexAttribP1uiv == NULL);
+  glewInfoFunc("glVertexAttribP2ui", glVertexAttribP2ui == NULL);
+  glewInfoFunc("glVertexAttribP2uiv", glVertexAttribP2uiv == NULL);
+  glewInfoFunc("glVertexAttribP3ui", glVertexAttribP3ui == NULL);
+  glewInfoFunc("glVertexAttribP3uiv", glVertexAttribP3uiv == NULL);
+  glewInfoFunc("glVertexAttribP4ui", glVertexAttribP4ui == NULL);
+  glewInfoFunc("glVertexAttribP4uiv", glVertexAttribP4uiv == NULL);
+  glewInfoFunc("glVertexP2ui", glVertexP2ui == NULL);
+  glewInfoFunc("glVertexP2uiv", glVertexP2uiv == NULL);
+  glewInfoFunc("glVertexP3ui", glVertexP3ui == NULL);
+  glewInfoFunc("glVertexP3uiv", glVertexP3uiv == NULL);
+  glewInfoFunc("glVertexP4ui", glVertexP4ui == NULL);
+  glewInfoFunc("glVertexP4uiv", glVertexP4uiv == NULL);
+}
+
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
+
 #ifdef GL_ARB_window_pos
 
 static void _glewInfo_GL_ARB_window_pos (void)
@@ -2895,6 +3213,18 @@ static void _glewInfo_GL_EXT_separate_specular_color (void)
 
 #endif /* GL_EXT_separate_specular_color */
 
+#ifdef GL_EXT_shader_image_load_store
+
+static void _glewInfo_GL_EXT_shader_image_load_store (void)
+{
+  glewPrintExt("GL_EXT_shader_image_load_store", GLEW_EXT_shader_image_load_store, glewIsSupported("GL_EXT_shader_image_load_store"), glewGetExtension("GL_EXT_shader_image_load_store"));
+
+  glewInfoFunc("glBindImageTextureEXT", glBindImageTextureEXT == NULL);
+  glewInfoFunc("glMemoryBarrierEXT", glMemoryBarrierEXT == NULL);
+}
+
+#endif /* GL_EXT_shader_image_load_store */
+
 #ifdef GL_EXT_shadow_funcs
 
 static void _glewInfo_GL_EXT_shadow_funcs (void)
@@ -3257,6 +3587,27 @@ static void _glewInfo_GL_EXT_vertex_array_bgra (void)
 
 #endif /* GL_EXT_vertex_array_bgra */
 
+#ifdef GL_EXT_vertex_attrib_64bit
+
+static void _glewInfo_GL_EXT_vertex_attrib_64bit (void)
+{
+  glewPrintExt("GL_EXT_vertex_attrib_64bit", GLEW_EXT_vertex_attrib_64bit, glewIsSupported("GL_EXT_vertex_attrib_64bit"), glewGetExtension("GL_EXT_vertex_attrib_64bit"));
+
+  glewInfoFunc("glGetVertexAttribLdvEXT", glGetVertexAttribLdvEXT == NULL);
+  glewInfoFunc("glVertexArrayVertexAttribLOffsetEXT", glVertexArrayVertexAttribLOffsetEXT == NULL);
+  glewInfoFunc("glVertexAttribL1dEXT", glVertexAttribL1dEXT == NULL);
+  glewInfoFunc("glVertexAttribL1dvEXT", glVertexAttribL1dvEXT == NULL);
+  glewInfoFunc("glVertexAttribL2dEXT", glVertexAttribL2dEXT == NULL);
+  glewInfoFunc("glVertexAttribL2dvEXT", glVertexAttribL2dvEXT == NULL);
+  glewInfoFunc("glVertexAttribL3dEXT", glVertexAttribL3dEXT == NULL);
+  glewInfoFunc("glVertexAttribL3dvEXT", glVertexAttribL3dvEXT == NULL);
+  glewInfoFunc("glVertexAttribL4dEXT", glVertexAttribL4dEXT == NULL);
+  glewInfoFunc("glVertexAttribL4dvEXT", glVertexAttribL4dvEXT == NULL);
+  glewInfoFunc("glVertexAttribLPointerEXT", glVertexAttribLPointerEXT == NULL);
+}
+
+#endif /* GL_EXT_vertex_attrib_64bit */
+
 #ifdef GL_EXT_vertex_shader
 
 static void _glewInfo_GL_EXT_vertex_shader (void)
@@ -3752,7 +4103,7 @@ static void _glewInfo_GL_NV_fragment_program2 (void)
 
 static void _glewInfo_GL_NV_fragment_program4 (void)
 {
-  glewPrintExt("GL_NV_fragment_program4", GLEW_NV_fragment_program4, glewIsSupported("GL_NV_fragment_program4"), glewGetExtension("GL_NV_fragment_program4"));
+  glewPrintExt("GL_NV_fragment_program4", GLEW_NV_fragment_program4, glewIsSupported("GL_NV_fragment_program4"), glewGetExtension("GL_NV_gpu_program4"));
 }
 
 #endif /* GL_NV_fragment_program4 */
@@ -3781,7 +4132,7 @@ static void _glewInfo_GL_NV_framebuffer_multisample_coverage (void)
 
 static void _glewInfo_GL_NV_geometry_program4 (void)
 {
-  glewPrintExt("GL_NV_geometry_program4", GLEW_NV_geometry_program4, glewIsSupported("GL_NV_geometry_program4"), glewGetExtension("GL_NV_geometry_program4"));
+  glewPrintExt("GL_NV_geometry_program4", GLEW_NV_geometry_program4, glewIsSupported("GL_NV_geometry_program4"), glewGetExtension("GL_NV_gpu_program4"));
 
   glewInfoFunc("glProgramVertexLimitNV", glProgramVertexLimitNV == NULL);
 }
@@ -3819,6 +4170,68 @@ static void _glewInfo_GL_NV_gpu_program4 (void)
 
 #endif /* GL_NV_gpu_program4 */
 
+#ifdef GL_NV_gpu_program5
+
+static void _glewInfo_GL_NV_gpu_program5 (void)
+{
+  glewPrintExt("GL_NV_gpu_program5", GLEW_NV_gpu_program5, glewIsSupported("GL_NV_gpu_program5"), glewGetExtension("GL_NV_gpu_program5"));
+}
+
+#endif /* GL_NV_gpu_program5 */
+
+#ifdef GL_NV_gpu_program_fp64
+
+static void _glewInfo_GL_NV_gpu_program_fp64 (void)
+{
+  glewPrintExt("GL_NV_gpu_program_fp64", GLEW_NV_gpu_program_fp64, glewIsSupported("GL_NV_gpu_program_fp64"), glewGetExtension("GL_NV_gpu_program_fp64"));
+}
+
+#endif /* GL_NV_gpu_program_fp64 */
+
+#ifdef GL_NV_gpu_shader5
+
+static void _glewInfo_GL_NV_gpu_shader5 (void)
+{
+  glewPrintExt("GL_NV_gpu_shader5", GLEW_NV_gpu_shader5, glewIsSupported("GL_NV_gpu_shader5"), glewGetExtension("GL_NV_gpu_shader5"));
+
+  glewInfoFunc("glGetUniformi64vNV", glGetUniformi64vNV == NULL);
+  glewInfoFunc("glGetUniformui64vNV", glGetUniformui64vNV == NULL);
+  glewInfoFunc("glProgramUniform1i64NV", glProgramUniform1i64NV == NULL);
+  glewInfoFunc("glProgramUniform1i64vNV", glProgramUniform1i64vNV == NULL);
+  glewInfoFunc("glProgramUniform1ui64NV", glProgramUniform1ui64NV == NULL);
+  glewInfoFunc("glProgramUniform1ui64vNV", glProgramUniform1ui64vNV == NULL);
+  glewInfoFunc("glProgramUniform2i64NV", glProgramUniform2i64NV == NULL);
+  glewInfoFunc("glProgramUniform2i64vNV", glProgramUniform2i64vNV == NULL);
+  glewInfoFunc("glProgramUniform2ui64NV", glProgramUniform2ui64NV == NULL);
+  glewInfoFunc("glProgramUniform2ui64vNV", glProgramUniform2ui64vNV == NULL);
+  glewInfoFunc("glProgramUniform3i64NV", glProgramUniform3i64NV == NULL);
+  glewInfoFunc("glProgramUniform3i64vNV", glProgramUniform3i64vNV == NULL);
+  glewInfoFunc("glProgramUniform3ui64NV", glProgramUniform3ui64NV == NULL);
+  glewInfoFunc("glProgramUniform3ui64vNV", glProgramUniform3ui64vNV == NULL);
+  glewInfoFunc("glProgramUniform4i64NV", glProgramUniform4i64NV == NULL);
+  glewInfoFunc("glProgramUniform4i64vNV", glProgramUniform4i64vNV == NULL);
+  glewInfoFunc("glProgramUniform4ui64NV", glProgramUniform4ui64NV == NULL);
+  glewInfoFunc("glProgramUniform4ui64vNV", glProgramUniform4ui64vNV == NULL);
+  glewInfoFunc("glUniform1i64NV", glUniform1i64NV == NULL);
+  glewInfoFunc("glUniform1i64vNV", glUniform1i64vNV == NULL);
+  glewInfoFunc("glUniform1ui64NV", glUniform1ui64NV == NULL);
+  glewInfoFunc("glUniform1ui64vNV", glUniform1ui64vNV == NULL);
+  glewInfoFunc("glUniform2i64NV", glUniform2i64NV == NULL);
+  glewInfoFunc("glUniform2i64vNV", glUniform2i64vNV == NULL);
+  glewInfoFunc("glUniform2ui64NV", glUniform2ui64NV == NULL);
+  glewInfoFunc("glUniform2ui64vNV", glUniform2ui64vNV == NULL);
+  glewInfoFunc("glUniform3i64NV", glUniform3i64NV == NULL);
+  glewInfoFunc("glUniform3i64vNV", glUniform3i64vNV == NULL);
+  glewInfoFunc("glUniform3ui64NV", glUniform3ui64NV == NULL);
+  glewInfoFunc("glUniform3ui64vNV", glUniform3ui64vNV == NULL);
+  glewInfoFunc("glUniform4i64NV", glUniform4i64NV == NULL);
+  glewInfoFunc("glUniform4i64vNV", glUniform4i64vNV == NULL);
+  glewInfoFunc("glUniform4ui64NV", glUniform4ui64NV == NULL);
+  glewInfoFunc("glUniform4ui64vNV", glUniform4ui64vNV == NULL);
+}
+
+#endif /* GL_NV_gpu_shader5 */
+
 #ifdef GL_NV_half_float
 
 static void _glewInfo_GL_NV_half_float (void)
@@ -4037,7 +4450,6 @@ static void _glewInfo_GL_NV_shader_buffer_load (void)
   glewInfoFunc("glGetBufferParameterui64vNV", glGetBufferParameterui64vNV == NULL);
   glewInfoFunc("glGetIntegerui64vNV", glGetIntegerui64vNV == NULL);
   glewInfoFunc("glGetNamedBufferParameterui64vNV", glGetNamedBufferParameterui64vNV == NULL);
-  glewInfoFunc("glGetUniformui64vNV", glGetUniformui64vNV == NULL);
   glewInfoFunc("glIsBufferResidentNV", glIsBufferResidentNV == NULL);
   glewInfoFunc("glIsNamedBufferResidentNV", glIsNamedBufferResidentNV == NULL);
   glewInfoFunc("glMakeBufferNonResidentNV", glMakeBufferNonResidentNV == NULL);
@@ -4052,6 +4464,15 @@ static void _glewInfo_GL_NV_shader_buffer_load (void)
 
 #endif /* GL_NV_shader_buffer_load */
 
+#ifdef GL_NV_tessellation_program5
+
+static void _glewInfo_GL_NV_tessellation_program5 (void)
+{
+  glewPrintExt("GL_NV_tessellation_program5", GLEW_NV_tessellation_program5, glewIsSupported("GL_NV_tessellation_program5"), glewGetExtension("GL_NV_gpu_program5"));
+}
+
+#endif /* GL_NV_tessellation_program5 */
+
 #ifdef GL_NV_texgen_emboss
 
 static void _glewInfo_GL_NV_texgen_emboss (void)
@@ -4203,6 +4624,35 @@ static void _glewInfo_GL_NV_vertex_array_range2 (void)
 
 #endif /* GL_NV_vertex_array_range2 */
 
+#ifdef GL_NV_vertex_attrib_integer_64bit
+
+static void _glewInfo_GL_NV_vertex_attrib_integer_64bit (void)
+{
+  glewPrintExt("GL_NV_vertex_attrib_integer_64bit", GLEW_NV_vertex_attrib_integer_64bit, glewIsSupported("GL_NV_vertex_attrib_integer_64bit"), glewGetExtension("GL_NV_vertex_attrib_integer_64bit"));
+
+  glewInfoFunc("glGetVertexAttribLi64vNV", glGetVertexAttribLi64vNV == NULL);
+  glewInfoFunc("glGetVertexAttribLui64vNV", glGetVertexAttribLui64vNV == NULL);
+  glewInfoFunc("glVertexAttribL1i64NV", glVertexAttribL1i64NV == NULL);
+  glewInfoFunc("glVertexAttribL1i64vNV", glVertexAttribL1i64vNV == NULL);
+  glewInfoFunc("glVertexAttribL1ui64NV", glVertexAttribL1ui64NV == NULL);
+  glewInfoFunc("glVertexAttribL1ui64vNV", glVertexAttribL1ui64vNV == NULL);
+  glewInfoFunc("glVertexAttribL2i64NV", glVertexAttribL2i64NV == NULL);
+  glewInfoFunc("glVertexAttribL2i64vNV", glVertexAttribL2i64vNV == NULL);
+  glewInfoFunc("glVertexAttribL2ui64NV", glVertexAttribL2ui64NV == NULL);
+  glewInfoFunc("glVertexAttribL2ui64vNV", glVertexAttribL2ui64vNV == NULL);
+  glewInfoFunc("glVertexAttribL3i64NV", glVertexAttribL3i64NV == NULL);
+  glewInfoFunc("glVertexAttribL3i64vNV", glVertexAttribL3i64vNV == NULL);
+  glewInfoFunc("glVertexAttribL3ui64NV", glVertexAttribL3ui64NV == NULL);
+  glewInfoFunc("glVertexAttribL3ui64vNV", glVertexAttribL3ui64vNV == NULL);
+  glewInfoFunc("glVertexAttribL4i64NV", glVertexAttribL4i64NV == NULL);
+  glewInfoFunc("glVertexAttribL4i64vNV", glVertexAttribL4i64vNV == NULL);
+  glewInfoFunc("glVertexAttribL4ui64NV", glVertexAttribL4ui64NV == NULL);
+  glewInfoFunc("glVertexAttribL4ui64vNV", glVertexAttribL4ui64vNV == NULL);
+  glewInfoFunc("glVertexAttribLFormatNV", glVertexAttribLFormatNV == NULL);
+}
+
+#endif /* GL_NV_vertex_attrib_integer_64bit */
+
 #ifdef GL_NV_vertex_buffer_unified_memory
 
 static void _glewInfo_GL_NV_vertex_buffer_unified_memory (void)
@@ -4339,7 +4789,7 @@ static void _glewInfo_GL_NV_vertex_program3 (void)
 
 static void _glewInfo_GL_NV_vertex_program4 (void)
 {
-  glewPrintExt("GL_NV_vertex_program4", GLEW_NV_vertex_program4, glewIsSupported("GL_NV_vertex_program4"), glewGetExtension("GL_NV_vertex_program4"));
+  glewPrintExt("GL_NV_vertex_program4", GLEW_NV_vertex_program4, glewIsSupported("GL_NV_vertex_program4"), glewGetExtension("GL_NV_gpu_program4"));
 }
 
 #endif /* GL_NV_vertex_program4 */
@@ -5749,6 +6199,15 @@ static void _glewInfo_GLX_ARB_multisample (void)
 
 #endif /* GLX_ARB_multisample */
 
+#ifdef GLX_ARB_vertex_buffer_object
+
+static void _glewInfo_GLX_ARB_vertex_buffer_object (void)
+{
+  glewPrintExt("GLX_ARB_vertex_buffer_object", GLXEW_ARB_vertex_buffer_object, glxewIsSupported("GLX_ARB_vertex_buffer_object"), glxewGetExtension("GLX_ARB_vertex_buffer_object"));
+}
+
+#endif /* GLX_ARB_vertex_buffer_object */
+
 #ifdef GLX_ATI_pixel_format_float
 
 static void _glewInfo_GLX_ATI_pixel_format_float (void)
@@ -5853,6 +6312,15 @@ static void _glewInfo_GLX_EXT_visual_rating (void)
 
 #endif /* GLX_EXT_visual_rating */
 
+#ifdef GLX_INTEL_swap_event
+
+static void _glewInfo_GLX_INTEL_swap_event (void)
+{
+  glewPrintExt("GLX_INTEL_swap_event", GLXEW_INTEL_swap_event, glxewIsSupported("GLX_INTEL_swap_event"), glxewGetExtension("GLX_INTEL_swap_event"));
+}
+
+#endif /* GLX_INTEL_swap_event */
+
 #ifdef GLX_MESA_agp_offset
 
 static void _glewInfo_GLX_MESA_agp_offset (void)
@@ -6246,6 +6714,12 @@ static void glewInfo (void)
 #ifdef GL_VERSION_3_2
   _glewInfo_GL_VERSION_3_2();
 #endif /* GL_VERSION_3_2 */
+#ifdef GL_VERSION_3_3
+  _glewInfo_GL_VERSION_3_3();
+#endif /* GL_VERSION_3_3 */
+#ifdef GL_VERSION_4_0
+  _glewInfo_GL_VERSION_4_0();
+#endif /* GL_VERSION_4_0 */
 #ifdef GL_3DFX_multisample
   _glewInfo_GL_3DFX_multisample();
 #endif /* GL_3DFX_multisample */
@@ -6255,12 +6729,21 @@ static void glewInfo (void)
 #ifdef GL_3DFX_texture_compression_FXT1
   _glewInfo_GL_3DFX_texture_compression_FXT1();
 #endif /* GL_3DFX_texture_compression_FXT1 */
+#ifdef GL_AMD_conservative_depth
+  _glewInfo_GL_AMD_conservative_depth();
+#endif /* GL_AMD_conservative_depth */
 #ifdef GL_AMD_draw_buffers_blend
   _glewInfo_GL_AMD_draw_buffers_blend();
 #endif /* GL_AMD_draw_buffers_blend */
 #ifdef GL_AMD_performance_monitor
   _glewInfo_GL_AMD_performance_monitor();
 #endif /* GL_AMD_performance_monitor */
+#ifdef GL_AMD_seamless_cubemap_per_texture
+  _glewInfo_GL_AMD_seamless_cubemap_per_texture();
+#endif /* GL_AMD_seamless_cubemap_per_texture */
+#ifdef GL_AMD_shader_stencil_export
+  _glewInfo_GL_AMD_shader_stencil_export();
+#endif /* GL_AMD_shader_stencil_export */
 #ifdef GL_AMD_texture_texture4
   _glewInfo_GL_AMD_texture_texture4();
 #endif /* GL_AMD_texture_texture4 */
@@ -6318,6 +6801,9 @@ static void glewInfo (void)
 #ifdef GL_APPLE_ycbcr_422
   _glewInfo_GL_APPLE_ycbcr_422();
 #endif /* GL_APPLE_ycbcr_422 */
+#ifdef GL_ARB_blend_func_extended
+  _glewInfo_GL_ARB_blend_func_extended();
+#endif /* GL_ARB_blend_func_extended */
 #ifdef GL_ARB_color_buffer_float
   _glewInfo_GL_ARB_color_buffer_float();
 #endif /* GL_ARB_color_buffer_float */
@@ -6345,9 +6831,15 @@ static void glewInfo (void)
 #ifdef GL_ARB_draw_elements_base_vertex
   _glewInfo_GL_ARB_draw_elements_base_vertex();
 #endif /* GL_ARB_draw_elements_base_vertex */
+#ifdef GL_ARB_draw_indirect
+  _glewInfo_GL_ARB_draw_indirect();
+#endif /* GL_ARB_draw_indirect */
 #ifdef GL_ARB_draw_instanced
   _glewInfo_GL_ARB_draw_instanced();
 #endif /* GL_ARB_draw_instanced */
+#ifdef GL_ARB_explicit_attrib_location
+  _glewInfo_GL_ARB_explicit_attrib_location();
+#endif /* GL_ARB_explicit_attrib_location */
 #ifdef GL_ARB_fragment_coord_conventions
   _glewInfo_GL_ARB_fragment_coord_conventions();
 #endif /* GL_ARB_fragment_coord_conventions */
@@ -6369,6 +6861,12 @@ static void glewInfo (void)
 #ifdef GL_ARB_geometry_shader4
   _glewInfo_GL_ARB_geometry_shader4();
 #endif /* GL_ARB_geometry_shader4 */
+#ifdef GL_ARB_gpu_shader5
+  _glewInfo_GL_ARB_gpu_shader5();
+#endif /* GL_ARB_gpu_shader5 */
+#ifdef GL_ARB_gpu_shader_fp64
+  _glewInfo_GL_ARB_gpu_shader_fp64();
+#endif /* GL_ARB_gpu_shader_fp64 */
 #ifdef GL_ARB_half_float_pixel
   _glewInfo_GL_ARB_half_float_pixel();
 #endif /* GL_ARB_half_float_pixel */
@@ -6396,6 +6894,9 @@ static void glewInfo (void)
 #ifdef GL_ARB_occlusion_query
   _glewInfo_GL_ARB_occlusion_query();
 #endif /* GL_ARB_occlusion_query */
+#ifdef GL_ARB_occlusion_query2
+  _glewInfo_GL_ARB_occlusion_query2();
+#endif /* GL_ARB_occlusion_query2 */
 #ifdef GL_ARB_pixel_buffer_object
   _glewInfo_GL_ARB_pixel_buffer_object();
 #endif /* GL_ARB_pixel_buffer_object */
@@ -6411,18 +6912,30 @@ static void glewInfo (void)
 #ifdef GL_ARB_sample_shading
   _glewInfo_GL_ARB_sample_shading();
 #endif /* GL_ARB_sample_shading */
+#ifdef GL_ARB_sampler_objects
+  _glewInfo_GL_ARB_sampler_objects();
+#endif /* GL_ARB_sampler_objects */
 #ifdef GL_ARB_seamless_cube_map
   _glewInfo_GL_ARB_seamless_cube_map();
 #endif /* GL_ARB_seamless_cube_map */
+#ifdef GL_ARB_shader_bit_encoding
+  _glewInfo_GL_ARB_shader_bit_encoding();
+#endif /* GL_ARB_shader_bit_encoding */
 #ifdef GL_ARB_shader_objects
   _glewInfo_GL_ARB_shader_objects();
 #endif /* GL_ARB_shader_objects */
+#ifdef GL_ARB_shader_subroutine
+  _glewInfo_GL_ARB_shader_subroutine();
+#endif /* GL_ARB_shader_subroutine */
 #ifdef GL_ARB_shader_texture_lod
   _glewInfo_GL_ARB_shader_texture_lod();
 #endif /* GL_ARB_shader_texture_lod */
 #ifdef GL_ARB_shading_language_100
   _glewInfo_GL_ARB_shading_language_100();
 #endif /* GL_ARB_shading_language_100 */
+#ifdef GL_ARB_shading_language_include
+  _glewInfo_GL_ARB_shading_language_include();
+#endif /* GL_ARB_shading_language_include */
 #ifdef GL_ARB_shadow
   _glewInfo_GL_ARB_shadow();
 #endif /* GL_ARB_shadow */
@@ -6432,15 +6945,24 @@ static void glewInfo (void)
 #ifdef GL_ARB_sync
   _glewInfo_GL_ARB_sync();
 #endif /* GL_ARB_sync */
+#ifdef GL_ARB_tessellation_shader
+  _glewInfo_GL_ARB_tessellation_shader();
+#endif /* GL_ARB_tessellation_shader */
 #ifdef GL_ARB_texture_border_clamp
   _glewInfo_GL_ARB_texture_border_clamp();
 #endif /* GL_ARB_texture_border_clamp */
 #ifdef GL_ARB_texture_buffer_object
   _glewInfo_GL_ARB_texture_buffer_object();
 #endif /* GL_ARB_texture_buffer_object */
+#ifdef GL_ARB_texture_buffer_object_rgb32
+  _glewInfo_GL_ARB_texture_buffer_object_rgb32();
+#endif /* GL_ARB_texture_buffer_object_rgb32 */
 #ifdef GL_ARB_texture_compression
   _glewInfo_GL_ARB_texture_compression();
 #endif /* GL_ARB_texture_compression */
+#ifdef GL_ARB_texture_compression_bptc
+  _glewInfo_GL_ARB_texture_compression_bptc();
+#endif /* GL_ARB_texture_compression_bptc */
 #ifdef GL_ARB_texture_compression_rgtc
   _glewInfo_GL_ARB_texture_compression_rgtc();
 #endif /* GL_ARB_texture_compression_rgtc */
@@ -6486,6 +7008,21 @@ static void glewInfo (void)
 #ifdef GL_ARB_texture_rg
   _glewInfo_GL_ARB_texture_rg();
 #endif /* GL_ARB_texture_rg */
+#ifdef GL_ARB_texture_rgb10_a2ui
+  _glewInfo_GL_ARB_texture_rgb10_a2ui();
+#endif /* GL_ARB_texture_rgb10_a2ui */
+#ifdef GL_ARB_texture_swizzle
+  _glewInfo_GL_ARB_texture_swizzle();
+#endif /* GL_ARB_texture_swizzle */
+#ifdef GL_ARB_timer_query
+  _glewInfo_GL_ARB_timer_query();
+#endif /* GL_ARB_timer_query */
+#ifdef GL_ARB_transform_feedback2
+  _glewInfo_GL_ARB_transform_feedback2();
+#endif /* GL_ARB_transform_feedback2 */
+#ifdef GL_ARB_transform_feedback3
+  _glewInfo_GL_ARB_transform_feedback3();
+#endif /* GL_ARB_transform_feedback3 */
 #ifdef GL_ARB_transpose_matrix
   _glewInfo_GL_ARB_transpose_matrix();
 #endif /* GL_ARB_transpose_matrix */
@@ -6510,6 +7047,9 @@ static void glewInfo (void)
 #ifdef GL_ARB_vertex_shader
   _glewInfo_GL_ARB_vertex_shader();
 #endif /* GL_ARB_vertex_shader */
+#ifdef GL_ARB_vertex_type_2_10_10_10_rev
+  _glewInfo_GL_ARB_vertex_type_2_10_10_10_rev();
+#endif /* GL_ARB_vertex_type_2_10_10_10_rev */
 #ifdef GL_ARB_window_pos
   _glewInfo_GL_ARB_window_pos();
 #endif /* GL_ARB_window_pos */
@@ -6747,6 +7287,9 @@ static void glewInfo (void)
 #ifdef GL_EXT_separate_specular_color
   _glewInfo_GL_EXT_separate_specular_color();
 #endif /* GL_EXT_separate_specular_color */
+#ifdef GL_EXT_shader_image_load_store
+  _glewInfo_GL_EXT_shader_image_load_store();
+#endif /* GL_EXT_shader_image_load_store */
 #ifdef GL_EXT_shadow_funcs
   _glewInfo_GL_EXT_shadow_funcs();
 #endif /* GL_EXT_shadow_funcs */
@@ -6852,6 +7395,9 @@ static void glewInfo (void)
 #ifdef GL_EXT_vertex_array_bgra
   _glewInfo_GL_EXT_vertex_array_bgra();
 #endif /* GL_EXT_vertex_array_bgra */
+#ifdef GL_EXT_vertex_attrib_64bit
+  _glewInfo_GL_EXT_vertex_attrib_64bit();
+#endif /* GL_EXT_vertex_attrib_64bit */
 #ifdef GL_EXT_vertex_shader
   _glewInfo_GL_EXT_vertex_shader();
 #endif /* GL_EXT_vertex_shader */
@@ -6984,6 +7530,15 @@ static void glewInfo (void)
 #ifdef GL_NV_gpu_program4
   _glewInfo_GL_NV_gpu_program4();
 #endif /* GL_NV_gpu_program4 */
+#ifdef GL_NV_gpu_program5
+  _glewInfo_GL_NV_gpu_program5();
+#endif /* GL_NV_gpu_program5 */
+#ifdef GL_NV_gpu_program_fp64
+  _glewInfo_GL_NV_gpu_program_fp64();
+#endif /* GL_NV_gpu_program_fp64 */
+#ifdef GL_NV_gpu_shader5
+  _glewInfo_GL_NV_gpu_shader5();
+#endif /* GL_NV_gpu_shader5 */
 #ifdef GL_NV_half_float
   _glewInfo_GL_NV_half_float();
 #endif /* GL_NV_half_float */
@@ -7026,6 +7581,9 @@ static void glewInfo (void)
 #ifdef GL_NV_shader_buffer_load
   _glewInfo_GL_NV_shader_buffer_load();
 #endif /* GL_NV_shader_buffer_load */
+#ifdef GL_NV_tessellation_program5
+  _glewInfo_GL_NV_tessellation_program5();
+#endif /* GL_NV_tessellation_program5 */
 #ifdef GL_NV_texgen_emboss
   _glewInfo_GL_NV_texgen_emboss();
 #endif /* GL_NV_texgen_emboss */
@@ -7068,6 +7626,9 @@ static void glewInfo (void)
 #ifdef GL_NV_vertex_array_range2
   _glewInfo_GL_NV_vertex_array_range2();
 #endif /* GL_NV_vertex_array_range2 */
+#ifdef GL_NV_vertex_attrib_integer_64bit
+  _glewInfo_GL_NV_vertex_attrib_integer_64bit();
+#endif /* GL_NV_vertex_attrib_integer_64bit */
 #ifdef GL_NV_vertex_buffer_unified_memory
   _glewInfo_GL_NV_vertex_buffer_unified_memory();
 #endif /* GL_NV_vertex_buffer_unified_memory */
@@ -7472,6 +8033,9 @@ static void glxewInfo ()
 #ifdef GLX_ARB_multisample
   _glewInfo_GLX_ARB_multisample();
 #endif /* GLX_ARB_multisample */
+#ifdef GLX_ARB_vertex_buffer_object
+  _glewInfo_GLX_ARB_vertex_buffer_object();
+#endif /* GLX_ARB_vertex_buffer_object */
 #ifdef GLX_ATI_pixel_format_float
   _glewInfo_GLX_ATI_pixel_format_float();
 #endif /* GLX_ATI_pixel_format_float */
@@ -7502,6 +8066,9 @@ static void glxewInfo ()
 #ifdef GLX_EXT_visual_rating
   _glewInfo_GLX_EXT_visual_rating();
 #endif /* GLX_EXT_visual_rating */
+#ifdef GLX_INTEL_swap_event
+  _glewInfo_GLX_INTEL_swap_event();
+#endif /* GLX_INTEL_swap_event */
 #ifdef GLX_MESA_agp_offset
   _glewInfo_GLX_MESA_agp_offset();
 #endif /* GLX_MESA_agp_offset */
index c6ebc49828bfa55eac47f488ed4512e91731a276..48d901fb894f0f6244c257001726b1e78095411d 100644 (file)
@@ -39,7 +39,7 @@ SOURCES = \
          dri2_glx.c \
          dri2.c
 
-GLAPI_LIB = $(TOP)/src/mesa/libglapi.a
+GLAPI_LIB = $(TOP)/src/mapi/glapi/libglapi.a
 
 OBJECTS = $(SOURCES:.c=.o)
 
@@ -47,7 +47,8 @@ INCLUDES = -I. \
        -I$(TOP)/include \
        -I$(TOP)/include/GL/internal \
        -I$(TOP)/src/mesa \
-       -I$(TOP)/src/mesa/glapi \
+       -I$(TOP)/src/mapi \
+       -I$(TOP)/src/mapi/glapi \
        $(LIBDRM_CFLAGS) \
        $(DRI2PROTO_CFLAGS) \
        $(X11_INCLUDES)
@@ -73,7 +74,7 @@ $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME): $(OBJECTS) $(GLAPI_LIB) Makefile
                $(GL_LIB_DEPS) $(OBJECTS) $(GLAPI_LIB)
 
 $(GLAPI_LIB):
-       @$(MAKE) -C $(TOP)/src/mesa libglapi.a
+       @$(MAKE) -C $(TOP)/src/mapi/glapi
 
 depend: $(SOURCES) Makefile
        rm -f depend
index 279f7aded9dd68e5c6fa0e802856f150dee597af..fd47b3d39c24507e0377e21ac566cfab73fa4d7c 100644 (file)
@@ -65,7 +65,8 @@ INCLUDES = -I. -Iinclude -I..\
        -I$(TOP)/include \
        -I$(TOP)/include/GL/internal \
        -I$(TOP)/src/mesa \
-       -I$(TOP)/src/mesa/glapi \
+       -I$(TOP)/src/mapi \
+       -I$(TOP)/src/mapi/glapi \
        $(LIBDRM_CFLAGS) \
        $(DRI2PROTO_CFLAGS) \
        $(X11_INCLUDES)
index 6058c721da7a8efe6cb201a578b0f918d92a226b..45959915b4b40c69259e182cf6242d9a27ff9294 100644 (file)
@@ -73,6 +73,8 @@ struct __GLXDRIdisplayPrivateRec
    int driPatch;
    int swapAvailable;
    int invalidateAvailable;
+
+   const __DRIextension *loader_extensions[4];
 };
 
 struct __GLXDRIcontextPrivateRec
@@ -544,17 +546,11 @@ static const __DRIdri2LoaderExtension dri2LoaderExtension_old = {
    NULL,
 };
 
-static const __DRIextension *loader_extensions[] = {
-   &dri2LoaderExtension.base,
-   &systemTimeExtension.base,
-   NULL
-};
-
-static const __DRIextension *loader_extensions_old[] = {
-   &dri2LoaderExtension_old.base,
-   &systemTimeExtension.base,
-   NULL
+#ifdef __DRI_USE_INVALIDATE
+static const __DRIuseInvalidateExtension dri2UseInvalidate = {
+   { __DRI_USE_INVALIDATE, __DRI_USE_INVALIDATE_VERSION }
 };
+#endif
 
 _X_HIDDEN void
 dri2InvalidateBuffers(Display *dpy, XID drawable)
@@ -630,13 +626,14 @@ dri2CreateScreen(__GLXscreenConfigs * psc, int screen,
       goto handle_error;
    }
 
+   
    /* If the server does not support the protocol for
     * DRI2GetBuffersWithFormat, don't supply that interface to the driver.
     */
    psc->__driScreen =
-      psc->dri2->createNewScreen(screen, psc->fd, ((pdp->driMinor < 1)
-                                                  ? loader_extensions_old
-                                                  : loader_extensions),
+      psc->dri2->createNewScreen(screen, psc->fd,
+                                (const __DRIextension **)
+                                &pdp->loader_extensions[0],
                                 &driver_configs, psc);
 
    if (psc->__driScreen == NULL) {
@@ -718,7 +715,7 @@ _X_HIDDEN __GLXDRIdisplay *
 dri2CreateDisplay(Display * dpy)
 {
    __GLXDRIdisplayPrivate *pdp;
-   int eventBase, errorBase;
+   int eventBase, errorBase, i;
 
    if (!DRI2QueryExtension(dpy, &eventBase, &errorBase))
       return NULL;
@@ -739,6 +736,19 @@ dri2CreateDisplay(Display * dpy)
    pdp->base.destroyDisplay = dri2DestroyDisplay;
    pdp->base.createScreen = dri2CreateScreen;
 
+   i = 0;
+   if (pdp->driMinor < 1)
+      pdp->loader_extensions[i++] = &dri2LoaderExtension_old.base;
+   else
+      pdp->loader_extensions[i++] = &dri2LoaderExtension.base;
+   
+   pdp->loader_extensions[i++] = &systemTimeExtension.base;
+
+#ifdef __DRI_USE_INVALIDATE
+   pdp->loader_extensions[i++] = &dri2UseInvalidate.base;
+#endif
+   pdp->loader_extensions[i++] = NULL;
+
    return &pdp->base;
 }
 
index 926be1014a8a2a2b171cbf2328e846d4bbea55a0..34fbecf95634d75b8f786033d7cba3302a48f300 100644 (file)
@@ -887,9 +887,6 @@ 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;
@@ -925,7 +922,6 @@ __glXIsDirect(Display * dpy, GLXContextID contextID)
 
    return reply.isDirect;
 #endif /* USE_XCB */
-#endif /* GLX_USE_APPLEGL */
 }
 
 /**
@@ -943,7 +939,11 @@ glXIsDirect(Display * dpy, GLXContext gc)
    else if (GC_IS_DIRECT(gc)) {
       return GL_TRUE;
    }
+#ifdef GLX_USE_APPLEGL  /* TODO: indirect on darwin */
+      return GL_FALSE;
+#else
    return __glXIsDirect(dpy, gc->xid);
+#endif
 }
 
 PUBLIC GLXPixmap
@@ -1766,6 +1766,15 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
         unsigned i;
 
          _XRead(dpy, (char *) propList, nPropListBytes);
+
+        /* Look up screen first so we can look up visuals/fbconfigs later */
+         pProp = propList;
+         for (i = 0; i < numValues; i++, pProp += 2)
+            if (pProp[0] == GLX_SCREEN) {
+                ctx->screen = pProp[1];
+                ctx->psc = GetGLXScreenConfigs(dpy, ctx->screen);
+            }
+
          pProp = propList;
          for (i = 0; i < numValues; i++) {
             switch (*pProp++) {
@@ -1776,9 +1785,6 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
                ctx->mode =
                   _gl_context_modes_find_visual(ctx->psc->visuals, *pProp++);
                break;
-            case GLX_SCREEN:
-               ctx->screen = *pProp++;
-               break;
             case GLX_FBCONFIG_ID:
                ctx->mode =
                   _gl_context_modes_find_fbconfig(ctx->psc->configs,
@@ -1787,6 +1793,7 @@ static int __glXQueryContextInfo(Display * dpy, GLXContext ctx)
             case GLX_RENDER_TYPE:
                ctx->renderType = *pProp++;
                break;
+            case GLX_SCREEN:
             default:
                pProp++;
                continue;
diff --git a/src/mapi/es1api/Makefile b/src/mapi/es1api/Makefile
new file mode 100644 (file)
index 0000000..576ac5a
--- /dev/null
@@ -0,0 +1,144 @@
+# src/mapi/es1api/Makefile
+
+TOP := ../../..
+include $(TOP)/configs/current
+
+# this Makefile can build both OpenGL ES 1.1 and 2.0
+ifeq ($(ES),)
+ES := es1
+
+GLES_HEADER := GLES
+GLES_PC := glesv1_cm.pc
+
+GLES_LIB := $(GLESv1_CM_LIB)
+GLES_LIB_NAME := $(GLESv1_CM_LIB_NAME)
+GLES_LIB_GLOB := $(GLESv1_CM_LIB_GLOB)
+GLES_LIB_DEPS := $(GLESv1_CM_LIB_DEPS)
+GLES_LIB_MAJOR := 1
+GLES_LIB_MINOR := 1
+GLES_LIB_PATCH := 0
+else
+GLES_HEADER := GLES2
+GLES_PC := glesv2.pc
+
+GLES_LIB := $(GLESv2_LIB)
+GLES_LIB_NAME := $(GLESv2_LIB_NAME)
+GLES_LIB_GLOB := $(GLESv2_LIB_GLOB)
+GLES_LIB_DEPS := $(GLESv2_LIB_DEPS)
+GLES_LIB_MAJOR := 2
+GLES_LIB_MINOR := 0
+GLES_LIB_PATCH := 0
+endif
+
+ESAPI = $(ES)api
+
+GLAPI := $(TOP)/src/mapi/glapi
+MAPI := $(TOP)/src/mapi/mapi
+# directory for generated sources/headers
+GEN := glapi
+
+include $(GLAPI)/sources.mak
+GLAPI_OBJECTS := $(GLAPI_SOURCES:.c=.o)
+GLAPI_SOURCES := $(addprefix $(GLAPI)/, $(GLAPI_SOURCES))
+GLAPI_ASM_OBJECTS := $(GLAPI_ASM_SOURCES:.S=.o)
+GLAPI_ASM_SOURCES := $(addprefix $(GEN)/, $(GLAPI_ASM_SOURCES))
+
+include $(MAPI)/sources.mak
+MAPI_GLAPI_OBJECTS := $(MAPI_GLAPI_SOURCES:.c=.o)
+MAPI_GLAPI_SOURCES := $(addprefix $(MAPI)/, $(MAPI_GLAPI_SOURCES))
+
+ESAPI_OBJECTS = $(GLAPI_OBJECTS) $(GLAPI_ASM_OBJECTS) $(MAPI_GLAPI_OBJECTS)
+
+INCLUDE_DIRS = \
+       -I$(TOP)/include \
+       -I$(TOP)/src/mapi/$(ESAPI) \
+       -I$(TOP)/src/mapi \
+       -I$(TOP)/src/mesa
+
+.PHONY: default
+default: depend $(TOP)/$(LIB_DIR)/$(GLES_LIB_NAME)
+
+$(TOP)/$(LIB_DIR)/$(GLES_LIB_NAME): $(ESAPI_OBJECTS)
+       $(MKLIB) -o $(GLES_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+               -major $(GLES_LIB_MAJOR) \
+               -minor $(GLES_LIB_MINOR) \
+               -patch $(GLES_LIB_PATCH) \
+               -id $(INSTALL_LIB_DIR)/lib$(GLES_LIB).$(GLES_LIB_MAJOR).dylib \
+               $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \
+               $(ESAPI_OBJECTS) $(GLES_LIB_DEPS)
+
+# not used, but kept for completeness
+lib$(ESAPI).a: $(ESAPI_OBJECTS)
+       @$(MKLIB) -o $(ESAPI) -static $(ESAPI_OBJECTS)
+
+$(GLAPI_OBJECTS): %.o: $(GLAPI)/%.c
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+
+$(GLAPI_ASM_OBJECTS): %.o: $(GEN)/%.S
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+
+$(MAPI_GLAPI_OBJECTS): %.o: $(MAPI)/%.c
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) -DMAPI_GLAPI_CURRENT $< -o $@
+
+$(GLAPI_SOURCES) $(GLAPI_ASM_SOURCES): | glapi-stamp
+
+glapi-stamp:
+       @# generate sources/headers
+       @$(MAKE) -C $(GLAPI)/gen-es $(ES)
+       @touch $@
+
+.PHONY: clean
+clean:
+       -rm -f $(GLES_PC)
+       -rm -f $(TOP)/$(LIB_DIR)/$(GLES_LIB_NAME)
+       -rm -f lib$(ESAPI).a
+       -rm -f $(ESAPI_OBJECTS)
+       -rm -f depend depend.bak
+       -rm -f glapi-stamp
+       @# clean generated sources/headers
+       @$(MAKE) -C $(GLAPI)/gen-es clean-$(ES)
+
+pcedit = \
+       -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
+       -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
+       -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
+       -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
+
+pcedit-es1 = \
+       $(pcedit) \
+       -e 's,@GLESv1_CM_PC_REQ_PRIV@,$(GLESv1_CM_PC_REQ_PRIV),' \
+       -e 's,@GLESv1_CM_PC_LIB_PRIV@,$(GLESv1_CM_PC_LIB_PRIV),' \
+       -e 's,@GLESv1_CM_PC_CFLAGS@,$(GLESv1_CM_PC_CFLAGS),' \
+       -e 's,@GLESv1_CM_LIB@,$(GLESv1_CM_LIB),'
+
+pcedit-es2 = \
+       $(pcedit) \
+       -e 's,@GLESv2_PC_REQ_PRIV@,$(GLESv2_PC_REQ_PRIV),' \
+       -e 's,@GLESv2_PC_LIB_PRIV@,$(GLESv2_PC_LIB_PRIV),' \
+       -e 's,@GLESv2_PC_CFLAGS@,$(GLESv2_PC_CFLAGS),' \
+       -e 's,@GLESv2_LIB@,$(GLESv2_LIB),'
+
+$(GLES_PC): $(GLES_PC).in
+       @sed $(pcedit-$(ES)) $< > $@
+
+install-headers:
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/$(GLES_HEADER)
+       $(INSTALL) -m 644 $(TOP)/include/$(GLES_HEADER)/*.h \
+               $(DESTDIR)$(INSTALL_INC_DIR)/$(GLES_HEADER)
+
+install-pc: $(GLES_PC)
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+       $(INSTALL) -m 644 $(GLES_PC) $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+
+install: default install-headers install-pc
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
+       $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLES_LIB_GLOB) \
+               $(DESTDIR)$(INSTALL_LIB_DIR)
+
+depend: $(GLAPI_SOURCES) $(MAPI_GLAPI_SOURCES)
+       @echo "running $(MKDEP)"
+       @touch depend
+       @$(MKDEP) $(MKDEP_OPTIONS) -f- $(DEFINES) $(INCLUDE_DIRS) \
+               -DMAPI_GLAPI_CURRENT $(GLAPI_SOURCES) $(MAPI_GLAPI_SOURCES) \
+               2>/dev/null | sed -e 's,^$(GLAPI)/,,' -e 's,^$(MAPI)/,,' \
+               > depend
diff --git a/src/mapi/es1api/glesv1_cm.pc.in b/src/mapi/es1api/glesv1_cm.pc.in
new file mode 100644 (file)
index 0000000..291f5ab
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@INSTALL_DIR@
+exec_prefix=${prefix}
+libdir=@INSTALL_LIB_DIR@
+includedir=@INSTALL_INC_DIR@
+
+Name: glesv1_cm
+Description: Mesa OpenGL ES 1.1 CM library
+Requires.private: @GLESv1_CM_PC_REQ_PRIV@
+Version: @VERSION@
+Libs: -L${libdir} -l@GLESv1_CM_LIB@
+Libs.private: @GLESv1_CM_PC_LIB_PRIV@
+Cflags: -I${includedir} @GLESv1_CM_PC_CFLAGS@
diff --git a/src/mapi/es2api/Makefile b/src/mapi/es2api/Makefile
new file mode 100644 (file)
index 0000000..21816a6
--- /dev/null
@@ -0,0 +1,3 @@
+# src/mapi/es2api/Makefile
+ES := es2
+include ../es1api/Makefile
diff --git a/src/mapi/es2api/glesv2.pc.in b/src/mapi/es2api/glesv2.pc.in
new file mode 100644 (file)
index 0000000..3b747cb
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@INSTALL_DIR@
+exec_prefix=${prefix}
+libdir=@INSTALL_LIB_DIR@
+includedir=@INSTALL_INC_DIR@
+
+Name: glesv2
+Description: Mesa OpenGL ES 2.0 library
+Requires.private: @GLESv2_PC_REQ_PRIV@
+Version: @VERSION@
+Libs: -L${libdir} -l@GLESv2_LIB@
+Libs.private: @GLESv2_PC_LIB_PRIV@
+Cflags: -I${includedir} @GLESv2_PC_CFLAGS@
diff --git a/src/mapi/glapi/.gitignore b/src/mapi/glapi/.gitignore
new file mode 100644 (file)
index 0000000..e706bc2
--- /dev/null
@@ -0,0 +1,11 @@
+.cvsignore
+glX_proto_common.pyo
+glX_proto_common.pyc
+typeexpr.pyo
+typeexpr.pyc
+license.pyo
+license.pyc
+gl_XML.pyo
+gl_XML.pyc
+glX_XML.pyo
+glX_XML.pyc
diff --git a/src/mapi/glapi/Makefile b/src/mapi/glapi/Makefile
new file mode 100644 (file)
index 0000000..ca9381d
--- /dev/null
@@ -0,0 +1,53 @@
+# src/mapi/glapi/Makefile
+
+TOP = ../../..
+include $(TOP)/configs/current
+
+TARGET = glapi
+
+MAPI = $(TOP)/src/mapi/mapi
+
+include sources.mak
+GLAPI_OBJECTS = $(GLAPI_SOURCES:.c=.o)
+GLAPI_ASM_OBJECTS = $(GLAPI_ASM_SOURCES:.S=.o)
+
+include $(MAPI)/sources.mak
+MAPI_GLAPI_OBJECTS := $(MAPI_GLAPI_SOURCES:.c=.o)
+MAPI_GLAPI_SOURCES := $(addprefix $(MAPI)/, $(MAPI_GLAPI_SOURCES))
+
+TARGET_OBJECTS = $(GLAPI_OBJECTS) $(GLAPI_ASM_OBJECTS) $(MAPI_GLAPI_OBJECTS)
+
+INCLUDE_DIRS = \
+       -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
+       -I$(TOP)/src/mesa
+
+default: depend lib$(TARGET).a
+
+lib$(TARGET).a: $(TARGET_OBJECTS)
+       @$(MKLIB) -o $(TARGET) -static $(TARGET_OBJECTS)
+
+$(GLAPI_OBJECTS): %.o: %.c
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+
+$(GLAPI_ASM_OBJECTS): %.o: %.S
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+
+$(MAPI_GLAPI_OBJECTS): %.o: $(MAPI)/%.c
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) -DMAPI_GLAPI_CURRENT $< -o $@
+
+install:
+
+clean:
+       -rm -f $(TARGET_OBJECTS)
+       -rm -f lib$(TARGET).a
+       -rm -f depend depend.bak
+
+depend: $(GLAPI_SOURCES) $(MAPI_GLAPI_SOURCES)
+       @ echo "running $(MKDEP)"
+       @ touch depend
+       @$(MKDEP) $(MKDEP_OPTIONS) -f- $(DEFINES) $(INCLUDE_DIRS) \
+               -DMAPI_GLAPI_CURRENT $(GLAPI_SOURCES) $(MAPI_GLAPI_SOURCES) \
+               2>/dev/null | sed -e 's,^$(MAPI)/,,' > depend
+
+-include depend
diff --git a/src/mapi/glapi/SConscript b/src/mapi/glapi/SConscript
new file mode 100644 (file)
index 0000000..15c0825
--- /dev/null
@@ -0,0 +1,72 @@
+#######################################################################
+# SConscript for Mesa
+
+
+Import('*')
+
+if env['platform'] != 'winddk':
+
+       env = env.Clone()
+       
+       env.Append(CPPDEFINES = [
+               'MAPI_GLAPI_CURRENT',
+       ])
+
+       env.Append(CPPPATH = [
+               '#/src/mapi',
+               '#/src/mesa',
+       ])
+       
+       glapi_sources = [
+               'glapi_dispatch.c',
+               'glapi_entrypoint.c',
+               'glapi_getproc.c',
+               'glapi_nop.c',
+               'glthread.c',
+       ]
+       
+       glapi_sources += [
+               '../mapi/u_current.c',
+               '../mapi/u_execmem.c',
+               '../mapi/u_thread.c',
+       ]
+
+       #
+       # Assembly sources
+       #
+       if gcc and env['machine'] == 'x86':
+               env.Append(CPPDEFINES = [
+                       'USE_X86_ASM', 
+                       'USE_MMX_ASM',
+                       'USE_3DNOW_ASM',
+                       'USE_SSE_ASM',
+               ])
+               glapi_sources += [
+                       'glapi_x86.S',
+               ]
+       elif gcc and env['machine'] == 'x86_64':
+               env.Append(CPPDEFINES = [
+                       'USE_X86_64_ASM', 
+               ])
+               glapi_sources += [
+                       'glapi_x86-64.S'
+               ]
+       elif gcc and env['machine'] == 'ppc':
+               env.Append(CPPDEFINES = [
+                       'USE_PPC_ASM', 
+                       'USE_VMX_ASM', 
+               ])
+               glapi_sources += [
+               ]
+       elif gcc and env['machine'] == 'sparc':
+               glapi_sources += [
+                       'glapi_sparc.S'
+               ]
+       else:
+               pass
+       
+       glapi = env.ConvenienceLibrary(
+               target = 'glapi',
+               source = glapi_sources,
+       )
+       Export('glapi')
diff --git a/src/mapi/glapi/gen-es/Makefile b/src/mapi/glapi/gen-es/Makefile
new file mode 100644 (file)
index 0000000..bda8e9e
--- /dev/null
@@ -0,0 +1,96 @@
+TOP = ../../../..
+GLAPI = ../gen
+include $(TOP)/configs/current
+
+OUTPUTS :=                     \
+       glapi/glapidispatch.h   \
+       glapi/glapioffsets.h    \
+       glapi/glapitable.h      \
+       glapi/glapitemp.h       \
+       glapi/glprocs.h         \
+       glapi/glapi_sparc.S     \
+       glapi/glapi_x86-64.S    \
+       glapi/glapi_x86.S       \
+       main/remap_helper.h
+
+COMMON = gl_XML.py glX_XML.py license.py typeexpr.py
+COMMON := $(addprefix $(GLAPI)/, $(COMMON))
+
+ES1_APIXML := es1_API.xml
+ES2_APIXML := es2_API.xml
+ES1_OUTPUT_DIR := $(TOP)/src/mapi/es1api
+ES2_OUTPUT_DIR := $(TOP)/src/mapi/es2api
+
+ES1_DEPS = $(ES1_APIXML) base1_API.xml es1_EXT.xml es_EXT.xml \
+          es1_COMPAT.xml es_COMPAT.xml
+ES2_DEPS = $(ES2_APIXML) base2_API.xml es2_EXT.xml es_EXT.xml \
+          es2_COMPAT.xml es_COMPAT.xml
+
+ES1_OUTPUTS := $(addprefix $(ES1_OUTPUT_DIR)/, $(OUTPUTS))
+ES2_OUTPUTS := $(addprefix $(ES2_OUTPUT_DIR)/, $(OUTPUTS))
+
+all: es1 es2
+
+es1: $(ES1_OUTPUTS)
+es2: $(ES2_OUTPUTS)
+
+$(ES1_OUTPUTS): APIXML := $(ES1_APIXML)
+$(ES2_OUTPUTS): APIXML := $(ES2_APIXML)
+$(ES1_OUTPUTS): $(ES1_DEPS)
+$(ES2_OUTPUTS): $(ES2_DEPS)
+
+define gen-glapi
+       @mkdir -p $(dir $@)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) $(1) > $@
+endef
+
+%/glapidispatch.h: $(GLAPI)/gl_table.py $(COMMON)
+       $(call gen-glapi,-c -m remap_table)
+
+%/glapioffsets.h: $(GLAPI)/gl_offsets.py $(COMMON)
+       $(call gen-glapi,-c)
+
+%/glapitable.h: $(GLAPI)/gl_table.py $(COMMON)
+       $(call gen-glapi,-c)
+
+%/glapitemp.h: $(GLAPI)/gl_apitemp.py $(COMMON)
+       $(call gen-glapi,-c)
+
+%/glprocs.h: $(GLAPI)/gl_procs.py $(COMMON)
+       $(call gen-glapi,-c)
+
+%/glapi_sparc.S: $(GLAPI)/gl_SPARC_asm.py $(COMMON)
+       $(call gen-glapi)
+
+%/glapi_x86-64.S: $(GLAPI)/gl_x86-64_asm.py $(COMMON)
+       $(call gen-glapi)
+
+%/glapi_x86.S: $(GLAPI)/gl_x86_asm.py $(COMMON)
+       $(call gen-glapi)
+
+%/main/remap_helper.h: $(GLAPI)/remap_helper.py $(COMMON)
+       $(call gen-glapi)
+
+verify_xml:
+       @if [ ! -f gl.h ]; then \
+               echo "Please copy gl.h and gl2.h to this directory"; \
+               exit 1; \
+       fi
+       @echo "Verifying that es1_API.xml covers OpenGL ES 1.1..."
+       @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl.h > tmp.xml
+       @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es1_API.xml
+       @echo "Verifying that es2_API.xml covers OpenGL ES 2.0..."
+       @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl2.h > tmp.xml
+       @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es2_API.xml
+       @rm -f tmp.xml
+
+clean-es1:
+       -rm -rf $(ES1_OUTPUT_DIR)/glapi
+       -rm -rf $(ES1_OUTPUT_DIR)/main
+
+clean-es2:
+       -rm -rf $(ES2_OUTPUT_DIR)/glapi
+       -rm -rf $(ES2_OUTPUT_DIR)/main
+
+clean: clean-es1 clean-es2
+       -rm -f *~ *.pyc *.pyo
diff --git a/src/mapi/glapi/gen-es/base1_API.xml b/src/mapi/glapi/gen-es/base1_API.xml
new file mode 100644 (file)
index 0000000..720be25
--- /dev/null
@@ -0,0 +1,744 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<!-- OpenGL and OpenGL ES 1.x APIs
+     This file defines the base categories that can be shared by all APIs.
+     They are defined in an incremental fashion.
+-->
+
+<OpenGLAPI>
+
+<!-- base subset of OpenGL 1.0 -->
+<category name="base1.0">
+    <enum name="FALSE"                                    value="0x0"/>
+    <enum name="TRUE"                                     value="0x1"/>
+    <enum name="ZERO"                                     value="0x0"/>
+    <enum name="ONE"                                      value="0x1"/>
+    <enum name="NO_ERROR"                                 value="0x0"/>
+
+    <enum name="POINTS"                                   value="0x0000"/>
+    <enum name="LINES"                                    value="0x0001"/>
+    <enum name="LINE_LOOP"                                value="0x0002"/>
+    <enum name="LINE_STRIP"                               value="0x0003"/>
+    <enum name="TRIANGLES"                                value="0x0004"/>
+    <enum name="TRIANGLE_STRIP"                           value="0x0005"/>
+    <enum name="TRIANGLE_FAN"                             value="0x0006"/>
+    <enum name="NEVER"                                    value="0x0200"/>
+    <enum name="LESS"                                     value="0x0201"/>
+    <enum name="EQUAL"                                    value="0x0202"/>
+    <enum name="LEQUAL"                                   value="0x0203"/>
+    <enum name="GREATER"                                  value="0x0204"/>
+    <enum name="NOTEQUAL"                                 value="0x0205"/>
+    <enum name="GEQUAL"                                   value="0x0206"/>
+    <enum name="ALWAYS"                                   value="0x0207"/>
+    <enum name="SRC_COLOR"                                value="0x0300"/>
+    <enum name="ONE_MINUS_SRC_COLOR"                      value="0x0301"/>
+    <enum name="SRC_ALPHA"                                value="0x0302"/>
+    <enum name="ONE_MINUS_SRC_ALPHA"                      value="0x0303"/>
+    <enum name="DST_ALPHA"                                value="0x0304"/>
+    <enum name="ONE_MINUS_DST_ALPHA"                      value="0x0305"/>
+    <enum name="DST_COLOR"                                value="0x0306"/>
+    <enum name="ONE_MINUS_DST_COLOR"                      value="0x0307"/>
+    <enum name="SRC_ALPHA_SATURATE"                       value="0x0308"/>
+    <enum name="FRONT"                                    value="0x0404"/>
+    <enum name="BACK"                                     value="0x0405"/>
+    <enum name="FRONT_AND_BACK"                           value="0x0408"/>
+    <enum name="INVALID_ENUM"                             value="0x0500"/>
+    <enum name="INVALID_VALUE"                            value="0x0501"/>
+    <enum name="INVALID_OPERATION"                        value="0x0502"/>
+    <enum name="OUT_OF_MEMORY"                            value="0x0505"/>
+    <enum name="CW"                                       value="0x0900"/>
+    <enum name="CCW"                                      value="0x0901"/>
+    <enum name="CULL_FACE"                     count="1"  value="0x0B44">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_TEST"                    count="1"  value="0x0B71">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_TEST"                  count="1"  value="0x0B90">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DITHER"                        count="1"  value="0x0BD0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND"                         count="1"  value="0x0BE2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SCISSOR_TEST"                  count="1"  value="0x0C11">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_ALIGNMENT"              count="1"  value="0x0CF5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_ALIGNMENT"                count="1"  value="0x0D05">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_SIZE"              count="1"  value="0x0D33">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_VIEWPORT_DIMS"             count="2"  value="0x0D3A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SUBPIXEL_BITS"                 count="1"  value="0x0D50">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RED_BITS"                      count="1"  value="0x0D52">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="GREEN_BITS"                    count="1"  value="0x0D53">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLUE_BITS"                     count="1"  value="0x0D54">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_BITS"                    count="1"  value="0x0D55">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_BITS"                    count="1"  value="0x0D56">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BITS"                  count="1"  value="0x0D57">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_2D"                    count="1"  value="0x0DE1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DONT_CARE"                                value="0x1100"/>
+    <enum name="FASTEST"                                  value="0x1101"/>
+    <enum name="NICEST"                                   value="0x1102"/>
+    <enum name="BYTE"                          count="1"  value="0x1400">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="UNSIGNED_BYTE"                 count="1"  value="0x1401">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="SHORT"                         count="2"  value="0x1402">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="UNSIGNED_SHORT"                count="2"  value="0x1403">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="FLOAT"                         count="4"  value="0x1406">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="INVERT"                                   value="0x150A"/>
+    <enum name="TEXTURE"                                  value="0x1702"/>
+    <enum name="ALPHA"                                    value="0x1906"/>
+    <enum name="RGB"                                      value="0x1907"/>
+    <enum name="RGBA"                                     value="0x1908"/>
+    <enum name="LUMINANCE"                                value="0x1909"/>
+    <enum name="LUMINANCE_ALPHA"                          value="0x190A"/>
+    <enum name="KEEP"                                     value="0x1E00"/>
+    <enum name="REPLACE"                                  value="0x1E01"/>
+    <enum name="INCR"                                     value="0x1E02"/>
+    <enum name="DECR"                                     value="0x1E03"/>
+    <enum name="VENDOR"                                   value="0x1F00"/>
+    <enum name="RENDERER"                                 value="0x1F01"/>
+    <enum name="VERSION"                                  value="0x1F02"/>
+    <enum name="EXTENSIONS"                               value="0x1F03"/>
+    <enum name="NEAREST"                                  value="0x2600"/>
+    <enum name="LINEAR"                                   value="0x2601"/>
+    <enum name="NEAREST_MIPMAP_NEAREST"                   value="0x2700"/>
+    <enum name="LINEAR_MIPMAP_NEAREST"                    value="0x2701"/>
+    <enum name="NEAREST_MIPMAP_LINEAR"                    value="0x2702"/>
+    <enum name="LINEAR_MIPMAP_LINEAR"                     value="0x2703"/>
+    <enum name="TEXTURE_MAG_FILTER"            count="1"  value="0x2800">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MIN_FILTER"            count="1"  value="0x2801">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_WRAP_S"                count="1"  value="0x2802">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_WRAP_T"                count="1"  value="0x2803">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="REPEAT"                                   value="0x2901"/>
+
+    <enum name="DEPTH_BUFFER_BIT"                         value="0x00000100"/>
+    <enum name="STENCIL_BUFFER_BIT"                       value="0x00000400"/>
+    <enum name="COLOR_BUFFER_BIT"                         value="0x00004000"/>
+
+    <type name="float"   size="4"  float="true"    glx_name="FLOAT32"/>
+    <type name="clampf"  size="4"  float="true"    glx_name="FLOAT32"/>
+
+    <type name="int"     size="4"                  glx_name="CARD32"/>
+    <type name="uint"    size="4"  unsigned="true" glx_name="CARD32"/>
+    <type name="sizei"   size="4"                  glx_name="CARD32"/>
+    <type name="enum"    size="4"  unsigned="true" glx_name="ENUM"/>
+    <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
+
+    <type name="short"   size="2"                  glx_name="CARD16"/>
+    <type name="ushort"  size="2"  unsigned="true" glx_name="CARD16"/>
+
+    <type name="byte"    size="1"                  glx_name="CARD8"/>
+    <type name="ubyte"   size="1"  unsigned="true" glx_name="CARD8"/>
+    <type name="boolean" size="1"  unsigned="true" glx_name="CARD8"/>
+
+    <type name="void"    size="1"/>
+
+    <function name="BlendFunc" offset="241">
+        <param name="sfactor" type="GLenum"/>
+        <param name="dfactor" type="GLenum"/>
+        <glx rop="160"/>
+    </function>
+
+    <function name="Clear" offset="203">
+        <param name="mask" type="GLbitfield"/>
+        <glx rop="127"/>
+    </function>
+
+    <function name="ClearColor" offset="206">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+        <glx rop="130"/>
+    </function>
+
+    <function name="ClearStencil" offset="207">
+        <param name="s" type="GLint"/>
+        <glx rop="131"/>
+    </function>
+
+    <function name="ColorMask" offset="210">
+        <param name="red" type="GLboolean"/>
+        <param name="green" type="GLboolean"/>
+        <param name="blue" type="GLboolean"/>
+        <param name="alpha" type="GLboolean"/>
+        <glx rop="134"/>
+    </function>
+
+    <function name="CullFace" offset="152">
+        <param name="mode" type="GLenum"/>
+        <glx rop="79"/>
+    </function>
+
+    <function name="DepthFunc" offset="245">
+        <param name="func" type="GLenum"/>
+        <glx rop="164"/>
+    </function>
+
+    <function name="DepthMask" offset="211">
+        <param name="flag" type="GLboolean"/>
+        <glx rop="135"/>
+    </function>
+
+    <function name="Disable" offset="214">
+        <param name="cap" type="GLenum"/>
+        <glx rop="138" handcode="client"/>
+    </function>
+
+    <function name="Enable" offset="215">
+        <param name="cap" type="GLenum"/>
+        <glx rop="139" handcode="client"/>
+    </function>
+
+    <function name="Finish" offset="216">
+        <glx sop="108" handcode="true"/>
+    </function>
+
+    <function name="Flush" offset="217">
+        <glx sop="142" handcode="true"/>
+    </function>
+
+    <function name="FrontFace" offset="157">
+        <param name="mode" type="GLenum"/>
+        <glx rop="84"/>
+    </function>
+
+    <function name="GetError" offset="261">
+        <return type="GLenum"/>
+        <glx sop="115" handcode="client"/>
+    </function>
+
+    <function name="GetIntegerv" offset="263">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="117" handcode="client"/>
+    </function>
+
+    <function name="GetString" offset="275">
+        <param name="name" type="GLenum"/>
+        <return type="const GLubyte *"/>
+        <glx sop="129" handcode="true"/>
+    </function>
+
+    <function name="Hint" offset="158">
+        <param name="target" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx rop="85"/>
+    </function>
+
+    <function name="LineWidth" offset="168">
+        <param name="width" type="GLfloat"/>
+        <glx rop="95"/>
+    </function>
+
+    <function name="PixelStorei" offset="250">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx sop="110" handcode="client"/>
+    </function>
+
+    <function name="ReadPixels" offset="256">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="GLvoid *" output="true"  img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
+        <glx sop="111"/>
+    </function>
+
+    <function name="Scissor" offset="176">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="103"/>
+    </function>
+
+    <function name="StencilFunc" offset="243">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLint"/>
+        <param name="mask" type="GLuint"/>
+        <glx rop="162"/>
+    </function>
+
+    <function name="StencilMask" offset="209">
+        <param name="mask" type="GLuint"/>
+        <glx rop="133"/>
+    </function>
+
+    <function name="StencilOp" offset="244">
+        <param name="fail" type="GLenum"/>
+        <param name="zfail" type="GLenum"/>
+        <param name="zpass" type="GLenum"/>
+        <glx rop="163"/>
+    </function>
+
+    <function name="TexParameterf" offset="178">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="105"/>
+    </function>
+
+    <function name="Viewport" offset="305">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="191"/>
+    </function>
+
+    <!-- these are not in OpenGL ES 1.0 -->
+    <enum name="LINE_WIDTH"                    count="1"  value="0x0B21">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CULL_FACE_MODE"                count="1"  value="0x0B45">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FRONT_FACE"                    count="1"  value="0x0B46">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_RANGE"                   count="2"  value="0x0B70">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_WRITEMASK"               count="1"  value="0x0B72">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_CLEAR_VALUE"             count="1"  value="0x0B73">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_FUNC"                    count="1"  value="0x0B74">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_CLEAR_VALUE"           count="1"  value="0x0B91">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_FUNC"                  count="1"  value="0x0B92">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_VALUE_MASK"            count="1"  value="0x0B93">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_FAIL"                  count="1"  value="0x0B94">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_PASS_DEPTH_FAIL"       count="1"  value="0x0B95">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_PASS_DEPTH_PASS"       count="1"  value="0x0B96">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_REF"                   count="1"  value="0x0B97">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_WRITEMASK"             count="1"  value="0x0B98">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VIEWPORT"                      count="4"  value="0x0BA2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SCISSOR_BOX"                   count="4"  value="0x0C10">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_CLEAR_VALUE"             count="4"  value="0x0C22">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_WRITEMASK"               count="4"  value="0x0C23">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="TexParameterfv" offset="179">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="106"/>
+    </function>
+
+    <function name="TexParameteri" offset="180">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="107"/>
+    </function>
+
+    <function name="TexParameteriv" offset="181">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="108"/>
+    </function>
+
+    <function name="GetBooleanv" offset="258">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
+        <glx sop="112" handcode="client"/>
+    </function>
+
+    <function name="GetFloatv" offset="262">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="116" handcode="client"/>
+    </function>
+
+    <function name="GetTexParameterfv" offset="282">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="136"/>
+    </function>
+
+    <function name="GetTexParameteriv" offset="283">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="137"/>
+    </function>
+
+    <function name="IsEnabled" offset="286">
+        <param name="cap" type="GLenum"/>
+        <return type="GLboolean"/>
+        <glx sop="140" handcode="client"/>
+    </function>
+</category>
+
+<!-- base subset of OpenGL 1.1 -->
+<category name="base1.1">
+    <enum name="POLYGON_OFFSET_FILL"                      value="0x8037"/>
+
+    <function name="BindTexture" offset="307">
+        <param name="target" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <glx rop="4117"/>
+    </function>
+
+    <function name="CopyTexImage2D" offset="324">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <glx rop="4120"/>
+    </function>
+
+    <function name="CopyTexSubImage2D" offset="326">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4122"/>
+    </function>
+
+    <function name="DeleteTextures" offset="327">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <glx sop="144"/>
+    </function>
+
+    <function name="DrawArrays" offset="310">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <glx rop="193" handcode="true"/>
+    </function>
+
+    <function name="DrawElements" offset="311">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="GenTextures" offset="328">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="GLuint *" output="true" count="n"/>
+        <glx sop="145" always_array="true"/>
+    </function>
+
+    <function name="PolygonOffset" offset="319">
+        <param name="factor" type="GLfloat"/>
+        <param name="units" type="GLfloat"/>
+        <glx rop="192"/>
+    </function>
+
+    <function name="TexSubImage2D" offset="333">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4100" large="true"/>
+    </function>
+
+    <!-- these are not in OpenGL ES 1.0 -->
+    <enum name="POLYGON_OFFSET_UNITS"          count="1"  value="0x2A00">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_OFFSET_FACTOR"         count="1"  value="0x8038">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_2D"            count="1"  value="0x8069">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="IsTexture" offset="330">
+        <param name="texture" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx sop="146"/>
+    </function>
+</category>
+
+<!-- base subset of OpenGL 1.2 -->
+<category name="base1.2">
+    <enum name="UNSIGNED_SHORT_4_4_4_4"                   value="0x8033"/>
+    <enum name="UNSIGNED_SHORT_5_5_5_1"                   value="0x8034"/>
+    <enum name="CLAMP_TO_EDGE"                            value="0x812F"/>
+    <enum name="UNSIGNED_SHORT_5_6_5"                     value="0x8363"/>
+    <enum name="ALIASED_POINT_SIZE_RANGE"      count="2"  value="0x846D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALIASED_LINE_WIDTH_RANGE"      count="2"  value="0x846E">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<!-- base subset of OpenGL 1.3 -->
+<category name="base1.3">
+    <enum name="SAMPLE_ALPHA_TO_COVERAGE"      count="1"  value="0x809E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE"               count="1"  value="0x80A0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE0"                                 value="0x84C0"/>
+    <enum name="TEXTURE1"                                 value="0x84C1"/>
+    <enum name="TEXTURE2"                                 value="0x84C2"/>
+    <enum name="TEXTURE3"                                 value="0x84C3"/>
+    <enum name="TEXTURE4"                                 value="0x84C4"/>
+    <enum name="TEXTURE5"                                 value="0x84C5"/>
+    <enum name="TEXTURE6"                                 value="0x84C6"/>
+    <enum name="TEXTURE7"                                 value="0x84C7"/>
+    <enum name="TEXTURE8"                                 value="0x84C8"/>
+    <enum name="TEXTURE9"                                 value="0x84C9"/>
+    <enum name="TEXTURE10"                                value="0x84CA"/>
+    <enum name="TEXTURE11"                                value="0x84CB"/>
+    <enum name="TEXTURE12"                                value="0x84CC"/>
+    <enum name="TEXTURE13"                                value="0x84CD"/>
+    <enum name="TEXTURE14"                                value="0x84CE"/>
+    <enum name="TEXTURE15"                                value="0x84CF"/>
+    <enum name="TEXTURE16"                                value="0x84D0"/>
+    <enum name="TEXTURE17"                                value="0x84D1"/>
+    <enum name="TEXTURE18"                                value="0x84D2"/>
+    <enum name="TEXTURE19"                                value="0x84D3"/>
+    <enum name="TEXTURE20"                                value="0x84D4"/>
+    <enum name="TEXTURE21"                                value="0x84D5"/>
+    <enum name="TEXTURE22"                                value="0x84D6"/>
+    <enum name="TEXTURE23"                                value="0x84D7"/>
+    <enum name="TEXTURE24"                                value="0x84D8"/>
+    <enum name="TEXTURE25"                                value="0x84D9"/>
+    <enum name="TEXTURE26"                                value="0x84DA"/>
+    <enum name="TEXTURE27"                                value="0x84DB"/>
+    <enum name="TEXTURE28"                                value="0x84DC"/>
+    <enum name="TEXTURE29"                                value="0x84DD"/>
+    <enum name="TEXTURE30"                                value="0x84DE"/>
+    <enum name="TEXTURE31"                                value="0x84DF"/>
+    <enum name="NUM_COMPRESSED_TEXTURE_FORMATS" count="1" value="0x86A2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COMPRESSED_TEXTURE_FORMATS"    count="-1"  value="0x86A3">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="ActiveTexture" offset="374">
+        <param name="texture" type="GLenum"/>
+        <glx rop="197"/>
+    </function>
+
+    <function name="CompressedTexImage2D" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="215" handcode="client"/>
+    </function>
+
+    <function name="CompressedTexSubImage2D" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="218" handcode="client"/>
+    </function>
+
+    <function name="SampleCoverage" offset="assign">
+        <param name="value" type="GLclampf"/>
+        <param name="invert" type="GLboolean"/>
+        <glx rop="229"/>
+    </function>
+
+    <!-- these are not in OpenGL ES 1.0 -->
+    <enum name="SAMPLE_BUFFERS"                count="1"  value="0x80A8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLES"                       count="1"  value="0x80A9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE_VALUE"         count="1"  value="0x80AA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE_INVERT"        count="1"  value="0x80AB">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACTIVE_TEXTURE"                count="1"  value="0x84E0">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<!-- base subset of OpenGL 1.4 -->
+<category name="base1.4">
+    <enum name="GENERATE_MIPMAP_HINT"                     value="0x8192"/>
+</category>
+
+<!-- base subset of OpenGL 1.5 -->
+<category name="base1.5">
+    <enum name="BUFFER_SIZE"                              value="0x8764"/>
+    <enum name="BUFFER_USAGE"                             value="0x8765"/>
+    <enum name="ARRAY_BUFFER"                             value="0x8892"/>
+    <enum name="ELEMENT_ARRAY_BUFFER"                     value="0x8893"/>
+    <enum name="ARRAY_BUFFER_BINDING"                     value="0x8894"/>
+    <enum name="ELEMENT_ARRAY_BUFFER_BINDING"             value="0x8895"/>
+    <enum name="STATIC_DRAW"                              value="0x88E4"/>
+    <enum name="DYNAMIC_DRAW"                             value="0x88E8"/>
+
+    <type name="intptr"   size="4"                  glx_name="CARD32"/>
+    <type name="sizeiptr" size="4"                  glx_name="CARD32"/>
+
+    <function name="BindBuffer" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="buffer" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="BufferData" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="size" type="GLsizeiptr" counter="true"/>
+        <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/>
+        <param name="usage" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="BufferSubData" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptr"/>
+        <param name="size" type="GLsizeiptr" counter="true"/>
+        <param name="data" type="const GLvoid *" count="size"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DeleteBuffers" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="buffer" type="const GLuint *" count="n"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GenBuffers" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="buffer" type="GLuint *" output="true" count="n"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetBufferParameteriv" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="IsBuffer" offset="assign">
+        <param name="buffer" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/base2_API.xml b/src/mapi/glapi/gen-es/base2_API.xml
new file mode 100644 (file)
index 0000000..b59ef62
--- /dev/null
@@ -0,0 +1,533 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<!-- OpenGL and OpenGL ES 2.x APIs -->
+
+<OpenGLAPI>
+
+<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<!-- base subset of OpenGL 2.0 -->
+<category name="base2.0">
+    <enum name="BLEND_EQUATION_RGB"            count="1"  value="0x8009"> <!-- same as BLEND_EQUATION -->
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_ENABLED"   count="1"  value="0x8622">
+        <size name="GetVertexAttribdv" mode="get"/>
+        <size name="GetVertexAttribfv" mode="get"/>
+        <size name="GetVertexAttribiv" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_SIZE"      count="1"  value="0x8623">
+        <size name="GetVertexAttribdv" mode="get"/>
+        <size name="GetVertexAttribfv" mode="get"/>
+        <size name="GetVertexAttribiv" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_STRIDE"     count="1" value="0x8624">
+        <size name="GetVertexAttribdv" mode="get"/>
+        <size name="GetVertexAttribfv" mode="get"/>
+        <size name="GetVertexAttribiv" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_TYPE"      count="1"  value="0x8625">
+        <size name="GetVertexAttribdv" mode="get"/>
+        <size name="GetVertexAttribfv" mode="get"/>
+        <size name="GetVertexAttribiv" mode="get"/>
+    </enum>
+    <enum name="CURRENT_VERTEX_ATTRIB"         count="1"  value="0x8626">
+        <size name="GetVertexAttribdv" mode="get"/>
+        <size name="GetVertexAttribfv" mode="get"/>
+        <size name="GetVertexAttribiv" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_POINTER"              value="0x8645"/>
+    <enum name="STENCIL_BACK_FUNC"             count="1"  value="0x8800">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BACK_FAIL"             count="1"  value="0x8801">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BACK_PASS_DEPTH_FAIL"  count="1"  value="0x8802">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BACK_PASS_DEPTH_PASS"  count="1"  value="0x8803">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_EQUATION_ALPHA"          count="1"  value="0x883D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_VERTEX_ATTRIBS"            count="1"  value="0x8869">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED"           value="0x886A"/>
+    <enum name="MAX_TEXTURE_IMAGE_UNITS"       count="1"  value="0x8872">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FRAGMENT_SHADER"                          value="0x8B30"/>
+    <enum name="VERTEX_SHADER"                            value="0x8B31"/>
+    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS"           value="0x8B4C"/>
+    <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS"         value="0x8B4D"/>
+    <enum name="SHADER_TYPE"                              value="0x8B4F"/>
+    <enum name="FLOAT_VEC2"                               value="0x8B50"/>
+    <enum name="FLOAT_VEC3"                               value="0x8B51"/>
+    <enum name="FLOAT_VEC4"                               value="0x8B52"/>
+    <enum name="INT_VEC2"                                 value="0x8B53"/>
+    <enum name="INT_VEC3"                                 value="0x8B54"/>
+    <enum name="INT_VEC4"                                 value="0x8B55"/>
+    <enum name="BOOL"                                     value="0x8B56"/>
+    <enum name="BOOL_VEC2"                                value="0x8B57"/>
+    <enum name="BOOL_VEC3"                                value="0x8B58"/>
+    <enum name="BOOL_VEC4"                                value="0x8B59"/>
+    <enum name="FLOAT_MAT2"                               value="0x8B5A"/>
+    <enum name="FLOAT_MAT3"                               value="0x8B5B"/>
+    <enum name="FLOAT_MAT4"                               value="0x8B5C"/>
+    <enum name="SAMPLER_2D"                               value="0x8B5E"/>
+    <enum name="SAMPLER_CUBE"                             value="0x8B60"/>
+    <enum name="DELETE_STATUS"                            value="0x8B80"/>
+    <enum name="COMPILE_STATUS"                           value="0x8B81"/>
+    <enum name="LINK_STATUS"                              value="0x8B82"/>
+    <enum name="VALIDATE_STATUS"                          value="0x8B83"/>
+    <enum name="INFO_LOG_LENGTH"                          value="0x8B84"/>
+    <enum name="ATTACHED_SHADERS"                         value="0x8B85"/>
+    <enum name="ACTIVE_UNIFORMS"                          value="0x8B86"/>
+    <enum name="ACTIVE_UNIFORM_MAX_LENGTH"                value="0x8B87"/>
+    <enum name="SHADER_SOURCE_LENGTH"                     value="0x8B88"/>
+    <enum name="ACTIVE_ATTRIBUTES"                        value="0x8B89"/>
+    <enum name="ACTIVE_ATTRIBUTE_MAX_LENGTH"              value="0x8B8A"/>
+    <enum name="SHADING_LANGUAGE_VERSION"                 value="0x8B8C"/>
+    <enum name="CURRENT_PROGRAM"                          value="0x8B8D"/>
+    <enum name="STENCIL_BACK_REF"                         value="0x8CA3"/>
+    <enum name="STENCIL_BACK_VALUE_MASK"                  value="0x8CA4"/>
+    <enum name="STENCIL_BACK_WRITEMASK"                   value="0x8CA5"/>
+
+    <type name="char"    size="1"                  glx_name="CARD8"/>
+
+    <function name="AttachShader" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="shader" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="BindAttribLocation" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="index" type="GLuint"/>
+        <param name="name" type="const GLchar *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="BlendEquationSeparate" offset="assign">
+        <param name="modeRGB" type="GLenum"/>
+        <param name="modeA" type="GLenum"/>
+        <glx rop="4228"/>
+    </function>
+
+    <function name="CompileShader" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CreateProgram" offset="assign">
+        <return type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CreateShader" offset="assign">
+        <param name="type" type="GLenum"/>
+        <return type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DeleteProgram" offset="assign">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DeleteShader" offset="assign">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DetachShader" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="shader" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DisableVertexAttribArray" offset="assign">
+        <param name="index" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="EnableVertexAttribArray" offset="assign">
+        <param name="index" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetActiveAttrib" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="index" type="GLuint"/>
+        <param name="bufSize" type="GLsizei "/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="size" type="GLint *" output="true"/>
+        <param name="type" type="GLenum *" output="true"/>
+        <param name="name" type="GLchar *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetActiveUniform" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="index" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="size" type="GLint *" output="true"/>
+        <param name="type" type="GLenum *" output="true"/>
+        <param name="name" type="GLchar *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetAttachedShaders" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="maxCount" type="GLsizei"/>
+        <param name="count" type="GLsizei *" output="true"/>
+        <param name="obj" type="GLuint *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetAttribLocation" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="name" type="const GLchar *"/>
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetProgramiv" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetProgramInfoLog" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *"/>
+        <param name="infoLog" type="GLchar *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetShaderiv" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetShaderInfoLog" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *"/>
+        <param name="infoLog" type="GLchar *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetShaderSource" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="source" type="GLchar *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformfv" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="location" type="GLint"/>
+        <param name="params" type="GLfloat *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformiv" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="location" type="GLint"/>
+        <param name="params" type="GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformLocation" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="name" type="const GLchar *"/>
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetVertexAttribfv" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetVertexAttribiv" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetVertexAttribPointerv" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="pointer" type="GLvoid **" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="IsProgram" offset="assign">
+        <param name="program" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="IsShader" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="LinkProgram" offset="assign">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ShaderSource" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="string" type="const GLchar **"/>
+        <param name="length" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="StencilFuncSeparate" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLint"/>
+        <param name="mask" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="StencilOpSeparate" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="sfail" type="GLenum"/>
+        <param name="zfail" type="GLenum"/>
+        <param name="zpass" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="StencilMaskSeparate" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="mask" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1f" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1i" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1iv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2f" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2i" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2iv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3f" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3i" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <param name="v2" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3iv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4f" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <param name="v3" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4i" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <param name="v2" type="GLint"/>
+        <param name="v3" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4iv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UniformMatrix2fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UniformMatrix3fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UniformMatrix4fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UseProgram" offset="assign">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ValidateProgram" offset="assign">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="VertexAttrib1f" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib1fv" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="VertexAttrib2f" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib2fv" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="VertexAttrib3f" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib3fv" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="VertexAttrib4f" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib4fv" offset="assign">
+       <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="VertexAttribPointer" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="normalized" type="GLboolean"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es1_API.xml b/src/mapi/glapi/gen-es/es1_API.xml
new file mode 100644 (file)
index 0000000..3428ae5
--- /dev/null
@@ -0,0 +1,1100 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<!-- OpenGL ES 1.x API -->
+
+<OpenGLAPI>
+
+<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<!-- core subset of OpenGL 1.3 defined in OpenGL ES 1.0 -->
+<category name="core1.0">
+    <!-- addition to base1.0 -->
+    <enum name="ADD"                                      value="0x0104"/>
+    <enum name="STACK_OVERFLOW"                           value="0x0503"/>
+    <enum name="STACK_UNDERFLOW"                          value="0x0504"/>
+    <enum name="EXP"                                      value="0x0800"/>
+    <enum name="EXP2"                                     value="0x0801"/>
+    <enum name="POINT_SMOOTH"                  count="1"  value="0x0B10">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_SMOOTH"                   count="1"  value="0x0B20">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHTING"                      count="1"  value="0x0B50">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT_MODEL_TWO_SIDE"          count="1"  value="0x0B52">
+        <size name="LightModelfv"/>
+        <size name="LightModeliv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT_MODEL_AMBIENT"           count="4"  value="0x0B53">
+        <size name="LightModelfv"/>
+        <size name="LightModeliv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_MATERIAL"                count="1"  value="0x0B57">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG"                           count="1"  value="0x0B60">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_DENSITY"                   count="1"  value="0x0B62">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_START"                     count="1"  value="0x0B63">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_END"                       count="1"  value="0x0B64">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_MODE"                      count="1"  value="0x0B65">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COLOR"                     count="4"  value="0x0B66">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMALIZE"                     count="1"  value="0x0BA1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_TEST"                    count="1"  value="0x0BC0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PERSPECTIVE_CORRECTION_HINT"   count="1"  value="0x0C50">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SMOOTH_HINT"             count="1"  value="0x0C51">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_SMOOTH_HINT"              count="1"  value="0x0C52">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_SMOOTH_HINT"           count="1"  value="0x0C53">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_HINT"                      count="1"  value="0x0C54">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_LIGHTS"                    count="1"  value="0x0D31">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_MODELVIEW_STACK_DEPTH"     count="1"  value="0x0D36">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_PROJECTION_STACK_DEPTH"    count="1"  value="0x0D38">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_STACK_DEPTH"       count="1"  value="0x0D39">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="AMBIENT"                       count="4"  value="0x1200">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="DIFFUSE"                       count="4"  value="0x1201">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPECULAR"                      count="4"  value="0x1202">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="POSITION"                      count="4"  value="0x1203">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPOT_DIRECTION"                count="3"  value="0x1204">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPOT_EXPONENT"                 count="1"  value="0x1205">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPOT_CUTOFF"                   count="1"  value="0x1206">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="CONSTANT_ATTENUATION"          count="1"  value="0x1207">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="LINEAR_ATTENUATION"            count="1"  value="0x1208">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="QUADRATIC_ATTENUATION"         count="1"  value="0x1209">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="CLEAR"                                    value="0x1500"/>
+    <enum name="AND"                                      value="0x1501"/>
+    <enum name="AND_REVERSE"                              value="0x1502"/>
+    <enum name="COPY"                                     value="0x1503"/>
+    <enum name="AND_INVERTED"                             value="0x1504"/>
+    <enum name="NOOP"                                     value="0x1505"/>
+    <enum name="XOR"                                      value="0x1506"/>
+    <enum name="OR"                                       value="0x1507"/>
+    <enum name="NOR"                                      value="0x1508"/>
+    <enum name="EQUIV"                                    value="0x1509"/>
+    <enum name="OR_REVERSE"                               value="0x150B"/>
+    <enum name="COPY_INVERTED"                            value="0x150C"/>
+    <enum name="OR_INVERTED"                              value="0x150D"/>
+    <enum name="NAND"                                     value="0x150E"/>
+    <enum name="SET"                                      value="0x150F"/>
+    <enum name="EMISSION"                      count="4"  value="0x1600">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+    </enum>
+    <enum name="SHININESS"                     count="1"  value="0x1601">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+    </enum>
+    <enum name="AMBIENT_AND_DIFFUSE"           count="4"  value="0x1602">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW"                                value="0x1700"/>
+    <enum name="PROJECTION"                               value="0x1701"/>
+    <enum name="FLAT"                                     value="0x1D00"/>
+    <enum name="SMOOTH"                                   value="0x1D01"/>
+    <enum name="MODULATE"                                 value="0x2100"/>
+    <enum name="DECAL"                                    value="0x2101"/>
+    <enum name="TEXTURE_ENV_MODE"              count="1"  value="0x2200">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_ENV_COLOR"             count="4"  value="0x2201">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_ENV"                              value="0x2300"/>
+    <enum name="LIGHT0"                        count="1"  value="0x4000">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT1"                        count="1"  value="0x4001">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT2"                        count="1"  value="0x4002">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT3"                        count="1"  value="0x4003">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT4"                        count="1"  value="0x4004">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT5"                        count="1"  value="0x4005">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT6"                        count="1"  value="0x4006">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT7"                        count="1"  value="0x4007">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="AlphaFunc" offset="240">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLclampf"/>
+        <glx rop="159"/>
+    </function>
+
+    <function name="Color4f" offset="29" vectorequiv="Color4fv">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+        <param name="alpha" type="GLfloat"/>
+    </function>
+
+    <function name="Fogf" offset="153">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="80"/>
+    </function>
+
+    <function name="Fogfv" offset="154">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="81"/>
+    </function>
+
+    <function name="Lightf" offset="159">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="86"/>
+    </function>
+
+    <function name="Lightfv" offset="160">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="87"/>
+    </function>
+
+    <function name="LightModelf" offset="163">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="90"/>
+    </function>
+
+    <function name="LightModelfv" offset="164">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="91"/>
+    </function>
+
+    <function name="LoadIdentity" offset="290">
+        <glx rop="176"/>
+    </function>
+
+    <function name="LoadMatrixf" offset="291">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="177"/>
+    </function>
+
+    <function name="LogicOp" offset="242">
+        <param name="opcode" type="GLenum"/>
+        <glx rop="161"/>
+    </function>
+
+    <function name="Materialf" offset="169">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="96"/>
+    </function>
+
+    <function name="Materialfv" offset="170">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="97"/>
+    </function>
+
+    <function name="MatrixMode" offset="293">
+        <param name="mode" type="GLenum"/>
+        <glx rop="179"/>
+    </function>
+
+    <function name="MultMatrixf" offset="294">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="180"/>
+    </function>
+
+    <function name="Normal3f" offset="56" vectorequiv="Normal3fv">
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+    </function>
+
+    <function name="PointSize" offset="173">
+        <param name="size" type="GLfloat"/>
+        <glx rop="100"/>
+    </function>
+
+    <function name="PopMatrix" offset="297">
+        <glx rop="183"/>
+    </function>
+
+    <function name="PushMatrix" offset="298">
+        <glx rop="184"/>
+    </function>
+
+    <function name="Rotatef" offset="300">
+        <param name="angle" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="186"/>
+    </function>
+
+    <function name="Scalef" offset="302">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="188"/>
+    </function>
+
+    <function name="ShadeModel" offset="177">
+        <param name="mode" type="GLenum"/>
+        <glx rop="104"/>
+    </function>
+
+    <function name="TexEnvf" offset="184">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="111"/>
+    </function>
+
+    <function name="TexEnvfv" offset="185">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="112"/>
+    </function>
+
+    <function name="TexImage2D" offset="183">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
+        <glx rop="110" large="true"/>
+    </function>
+
+    <function name="Translatef" offset="304">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="190"/>
+    </function>
+
+    <!-- addition to base1.1 -->
+    <enum name="COLOR_LOGIC_OP"                           value="0x0BF2"/>
+    <enum name="VERTEX_ARRAY"                  count="1"  value="0x8074">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY"                  count="1"  value="0x8075">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY"                   count="1"  value="0x8076">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY"           count="1"  value="0x8078">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="ColorPointer" offset="308">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DisableClientState" offset="309">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="EnableClientState" offset="313">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="NormalPointer" offset="318">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="TexCoordPointer" offset="320">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="VertexPointer" offset="321">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <!-- addition to base1.2 -->
+    <enum name="SMOOTH_POINT_SIZE_RANGE"       count="2"  value="0x0B12">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SMOOTH_LINE_WIDTH_RANGE"       count="2"  value="0x0B22">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RESCALE_NORMAL"                count="1"  value="0x803A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_ELEMENTS_VERTICES"         count="1"  value="0x80E8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_ELEMENTS_INDICES"          count="1"  value="0x80E9">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <!-- addition to base1.3 -->
+    <enum name="MULTISAMPLE"                   count="1"  value="0x809D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_ALPHA_TO_ONE"           count="1"  value="0x809F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_UNITS"             count="1"  value="0x84E2">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="ClientActiveTexture" offset="375">
+        <param name="texture" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultiTexCoord4f" offset="402" vectorequiv="MultiTexCoord4fv">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function>
+</category>
+
+<!-- core subset of OpenGL 1.5 defined in OpenGL ES 1.1 -->
+<category name="core1.1">
+    <!-- addition to base1.0 -->
+    <enum name="CURRENT_COLOR"                 count="4"  value="0x0B00">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_NORMAL"                count="3"  value="0x0B02">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_TEXTURE_COORDS"        count="4"  value="0x0B03">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SIZE"                    count="1"  value="0x0B11">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SHADE_MODEL"                   count="1"  value="0x0B54">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX_MODE"                   count="1"  value="0x0BA0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW_STACK_DEPTH"         count="1"  value="0x0BA3">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROJECTION_STACK_DEPTH"        count="1"  value="0x0BA4">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_STACK_DEPTH"           count="1"  value="0x0BA5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW_MATRIX"              count="16" value="0x0BA6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROJECTION_MATRIX"             count="16" value="0x0BA7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MATRIX"                count="16" value="0x0BA8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_TEST_FUNC"               count="1"  value="0x0BC1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_TEST_REF"                count="1"  value="0x0BC2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_DST"                     count="1"  value="0x0BE0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC"                     count="1"  value="0x0BE1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LOGIC_OP_MODE"                 count="1"  value="0x0BF0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_SCALE"                   count="1"  value="0x0D1C">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_CLIP_PLANES"               count="1"  value="0x0D32">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE0"                   count="1"  value="0x3000">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE1"                   count="1"  value="0x3001">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE2"                   count="1"  value="0x3002">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE3"                   count="1"  value="0x3003">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE4"                   count="1"  value="0x3004">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE5"                   count="1"  value="0x3005">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="Color4ub" offset="35" vectorequiv="Color4ubv">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+        <param name="alpha" type="GLubyte"/>
+    </function>
+
+    <function name="GetLightfv" offset="264">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="118"/>
+    </function>
+
+    <function name="GetMaterialfv" offset="269">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="123"/>
+    </function>
+
+    <function name="GetTexEnvfv" offset="276">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="130"/>
+    </function>
+
+    <function name="GetTexEnviv" offset="277">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="131"/>
+    </function>
+
+    <function name="TexEnvi" offset="186">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="113"/>
+    </function>
+
+    <function name="TexEnviv" offset="187">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="114"/>
+    </function>
+
+    <!-- addition to base1.1 -->
+    <enum name="VERTEX_ARRAY_SIZE"             count="1"  value="0x807A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_TYPE"             count="1"  value="0x807B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_STRIDE"           count="1"  value="0x807C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY_TYPE"             count="1"  value="0x807E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY_STRIDE"           count="1"  value="0x807F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_SIZE"              count="1"  value="0x8081">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_TYPE"              count="1"  value="0x8082">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_STRIDE"            count="1"  value="0x8083">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_SIZE"      count="1"  value="0x8088">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_TYPE"      count="1"  value="0x8089">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_STRIDE"    count="1"  value="0x808A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_POINTER"                     value="0x808E"/>
+    <enum name="NORMAL_ARRAY_POINTER"                     value="0x808F"/>
+    <enum name="COLOR_ARRAY_POINTER"                      value="0x8090"/>
+    <enum name="TEXTURE_COORD_ARRAY_POINTER"              value="0x8092"/>
+
+    <function name="GetPointerv" offset="329">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **" output="true"/>
+        <glx handcode="true"/>
+    </function>
+
+    <!-- addition to base1.2 -->
+
+    <!-- addition to base1.3 -->
+    <enum name="CLIENT_ACTIVE_TEXTURE"         count="1"  value="0x84E1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SUBTRACT"                                 value="0x84E7"/>
+    <enum name="COMBINE"                                  value="0x8570"/>
+    <enum name="COMBINE_RGB"                   count="1"  value="0x8571">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="COMBINE_ALPHA"                 count="1"  value="0x8572">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="RGB_SCALE"                     count="1"  value="0x8573">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="ADD_SIGNED"                               value="0x8574"/>
+    <enum name="INTERPOLATE"                              value="0x8575"/>
+    <enum name="CONSTANT"                                 value="0x8576"/>
+    <enum name="PRIMARY_COLOR"                            value="0x8577"/>
+    <enum name="PREVIOUS"                                 value="0x8578"/>
+    <enum name="OPERAND0_RGB"                  count="1"  value="0x8590">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND1_RGB"                  count="1"  value="0x8591">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND2_RGB"                  count="1"  value="0x8592">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND0_ALPHA"                count="1"  value="0x8598">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND1_ALPHA"                count="1"  value="0x8599">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND2_ALPHA"                count="1"  value="0x859A">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="DOT3_RGB"                                 value="0x86AE"/>
+    <enum name="DOT3_RGBA"                                value="0x86AF"/>
+
+    <!-- addition to base1.4 -->
+    <enum name="POINT_SIZE_MIN"                count="1"  value="0x8126">
+        <size name="PointParameterfv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SIZE_MAX"                count="1"  value="0x8127">
+        <size name="PointParameterfv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_FADE_THRESHOLD_SIZE"     count="1"  value="0x8128">
+        <size name="PointParameterfv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_DISTANCE_ATTENUATION"    count="3"  value="0x8129">
+        <size name="PointParameterfv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="GENERATE_MIPMAP"               count="1"  value="0x8191">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+
+    <function name="PointParameterf" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="2065"/>
+    </function>
+
+    <function name="PointParameterfv" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="2066"/>
+    </function>
+
+    <!-- addition to base1.5 -->
+    <enum name="SRC0_RGB"                                 value="0x8580"/>
+    <enum name="SRC1_RGB"                                 value="0x8581"/>
+    <enum name="SRC2_RGB"                                 value="0x8582"/>
+    <enum name="SRC0_ALPHA"                               value="0x8588"/>
+    <enum name="SRC1_ALPHA"                               value="0x8589"/>
+    <enum name="SRC2_ALPHA"                               value="0x858A"/>
+    <enum name="VERTEX_ARRAY_BUFFER_BINDING"   count="1"  value="0x8896">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY_BUFFER_BINDING"   count="1"  value="0x8897">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_BUFFER_BINDING"    count="1"  value="0x8898">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING" count="1" value="0x889A">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<!-- OpenGL ES 1.0 -->
+<category name="es1.0">
+    <!-- addition to core1.0 -->
+
+    <!-- from GL_OES_fixed_point -->
+    <enum name="FIXED"                                    value="0x140C"/>
+
+    <type name="fixed"   size="4"                                    />
+    <type name="clampx"  size="4"                                    />
+
+    <function name="AlphaFuncx" offset="assign">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLclampx"/>
+    </function>
+
+    <function name="ClearColorx" offset="assign">
+        <param name="red" type="GLclampx"/>
+        <param name="green" type="GLclampx"/>
+        <param name="blue" type="GLclampx"/>
+        <param name="alpha" type="GLclampx"/>
+    </function>
+
+    <function name="ClearDepthx" offset="assign">
+        <param name="depth" type="GLclampx"/>
+    </function>
+
+    <function name="Color4x" offset="assign">
+        <param name="red" type="GLfixed"/>
+        <param name="green" type="GLfixed"/>
+        <param name="blue" type="GLfixed"/>
+        <param name="alpha" type="GLfixed"/>
+    </function>
+
+    <function name="DepthRangex" offset="assign">
+        <param name="zNear" type="GLclampx"/>
+        <param name="zFar" type="GLclampx"/>
+    </function>
+
+    <function name="Fogx" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="Fogxv" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="Frustumx" offset="assign">
+        <param name="left" type="GLfixed"/>
+        <param name="right" type="GLfixed"/>
+        <param name="bottom" type="GLfixed"/>
+        <param name="top" type="GLfixed"/>
+        <param name="zNear" type="GLfixed"/>
+        <param name="zFar" type="GLfixed"/>
+    </function>
+
+    <function name="LightModelx" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="LightModelxv" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="Lightx" offset="assign">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="Lightxv" offset="assign">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="LineWidthx" offset="assign">
+        <param name="width" type="GLfixed"/>
+    </function>
+
+    <function name="LoadMatrixx" offset="assign">
+        <param name="m" type="const GLfixed *" count="16"/>
+    </function>
+
+    <function name="Materialx" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="Materialxv" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="MultMatrixx" offset="assign">
+        <param name="m" type="const GLfixed *" count="16"/>
+    </function>
+
+    <function name="MultiTexCoord4x" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfixed"/>
+        <param name="t" type="GLfixed"/>
+        <param name="r" type="GLfixed"/>
+        <param name="q" type="GLfixed"/>
+    </function>
+
+    <function name="Normal3x" offset="assign">
+        <param name="nx" type="GLfixed"/>
+        <param name="ny" type="GLfixed"/>
+        <param name="nz" type="GLfixed"/>
+    </function>
+
+    <function name="Orthox" offset="assign">
+        <param name="left" type="GLfixed"/>
+        <param name="right" type="GLfixed"/>
+        <param name="bottom" type="GLfixed"/>
+        <param name="top" type="GLfixed"/>
+        <param name="zNear" type="GLfixed"/>
+        <param name="zFar" type="GLfixed"/>
+    </function>
+
+    <function name="PointSizex" offset="assign">
+        <param name="size" type="GLfixed"/>
+    </function>
+
+    <function name="PolygonOffsetx" offset="assign">
+        <param name="factor" type="GLfixed"/>
+        <param name="units" type="GLfixed"/>
+    </function>
+
+    <function name="Rotatex" offset="assign">
+        <param name="angle" type="GLfixed"/>
+        <param name="x" type="GLfixed"/>
+        <param name="y" type="GLfixed"/>
+        <param name="z" type="GLfixed"/>
+    </function>
+
+    <function name="SampleCoveragex" offset="assign">
+        <param name="value" type="GLclampx"/>
+        <param name="invert" type="GLboolean"/>
+    </function>
+
+    <function name="Scalex" offset="assign">
+        <param name="x" type="GLfixed"/>
+        <param name="y" type="GLfixed"/>
+        <param name="z" type="GLfixed"/>
+    </function>
+
+    <function name="TexEnvx" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="TexEnvxv" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="TexParameterx" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="Translatex" offset="assign">
+        <param name="x" type="GLfixed"/>
+        <param name="y" type="GLfixed"/>
+        <param name="z" type="GLfixed"/>
+    </function>
+
+    <!-- from GL_OES_single_precision -->
+    <function name="ClearDepthf" offset="assign">
+        <param name="depth" type="GLclampf"/>
+    </function>
+
+    <function name="DepthRangef" offset="assign">
+        <param name="zNear" type="GLclampf"/>
+        <param name="zFar" type="GLclampf"/>
+    </function>
+
+    <function name="Frustumf" offset="assign">
+        <param name="left" type="GLfloat"/>
+        <param name="right" type="GLfloat"/>
+        <param name="bottom" type="GLfloat"/>
+        <param name="top" type="GLfloat"/>
+        <param name="zNear" type="GLfloat"/>
+        <param name="zFar" type="GLfloat"/>
+    </function>
+
+    <function name="Orthof" offset="assign">
+        <param name="left" type="GLfloat"/>
+        <param name="right" type="GLfloat"/>
+        <param name="bottom" type="GLfloat"/>
+        <param name="top" type="GLfloat"/>
+        <param name="zNear" type="GLfloat"/>
+        <param name="zFar" type="GLfloat"/>
+    </function>
+</category>
+
+<!-- OpenGL ES 1.1 -->
+<category name="es1.1">
+    <!-- addition to core1.1 -->
+
+    <!-- from GL_OES_fixed_point -->
+    <function name="ClipPlanex" offset="assign">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="const GLfixed *" count="4"/>
+    </function>
+
+    <function name="GetClipPlanex" offset="assign">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="GLfixed *" output="true" count="4"/>
+    </function>
+
+    <function name="GetFixedv" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetLightxv" offset="assign">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetMaterialxv" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetTexEnvxv" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetTexParameterxv" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="PointParameterx" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="PointParameterxv" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *"/>
+    </function>
+
+    <function name="TexParameterxv" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <!-- from GL_OES_matrix_get -->
+    <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"   value="0x898D"/>
+    <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"  value="0x898E"/>
+    <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"    value="0x898F"/>
+
+    <!-- from GL_OES_single_precision -->
+    <function name="ClipPlanef" offset="assign">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="const GLfloat *" count="4"/>
+    </function>
+
+    <function name="GetClipPlanef" offset="assign">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="GLfloat *" output="true" count="4"/>
+    </function>
+</category>
+
+<xi:include href="es1_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="es1_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es1_COMPAT.xml b/src/mapi/glapi/gen-es/es1_COMPAT.xml
new file mode 100644 (file)
index 0000000..096cea8
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<OpenGLAPI>
+
+<!-- This file defines the functions that are needed by Mesa.  It
+     makes sure the generated glapi headers are compatible with Mesa.
+     It mainly consists of missing functions and aliases in OpenGL ES.
+-->
+
+<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<!-- except for those defined by es_COMPAT.xml, these are also needed -->
+<category name="compat">
+    <!-- OpenGL 1.0 -->
+    <function name="TexGenf" alias="TexGenfOES" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="117"/>
+    </function>
+
+    <function name="TexGenfv" alias="TexGenfvOES" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="118"/>
+    </function>
+
+    <function name="TexGeni" alias="TexGeniOES" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="119"/>
+    </function>
+
+    <function name="TexGeniv" alias="TexGenivOES" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="120"/>
+    </function>
+
+    <function name="GetTexGenfv" alias="GetTexGenfvOES" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="133"/>
+    </function>
+
+    <function name="GetTexGeniv" alias="GetTexGenivOES" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="134"/>
+    </function>
+
+    <!-- OpenGL 1.2 -->
+    <function name="BlendColor" offset="336" static_dispatch="false">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+        <glx rop="4096"/>
+    </function>
+
+    <function name="BlendEquation" alias="BlendEquationOES" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="4097"/>
+    </function>
+
+    <function name="TexImage3D" offset="371" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
+        <glx rop="4114" large="true"/>
+    </function>
+
+    <function name="TexSubImage3D" offset="372" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4115" large="true"/>
+    </function>
+
+    <function name="CopyTexSubImage3D" offset="373" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4123"/>
+    </function>
+
+    <!-- GL_ARB_multitexture -->
+    <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false">
+        <param name="texture" type="GLenum"/>
+        <glx rop="197"/>
+    </function>
+
+    <function name="ClientActiveTextureARB" alias="ClientActiveTexture" static_dispatch="false">
+        <param name="texture" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultiTexCoord4fARB" alias="MultiTexCoord4f" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es1_EXT.xml b/src/mapi/glapi/gen-es/es1_EXT.xml
new file mode 100644 (file)
index 0000000..c1e8637
--- /dev/null
@@ -0,0 +1,699 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<!-- OpenGL ES 1.x extensions -->
+
+<OpenGLAPI>
+
+<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<!-- part of es1.1 extension pack -->
+<category name="GL_OES_blend_equation_separate" number="1">
+    <enum name="BLEND_EQUATION_RGB_OES"        count="1"  value="0x8009">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_EQUATION_ALPHA_OES"      count="1"  value="0x883D">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="BlendEquationSeparateOES" offset="assign">
+        <param name="modeRGB" type="GLenum"/>
+        <param name="modeA" type="GLenum"/>
+        <glx rop="4228"/>
+    </function>
+</category>
+
+<!-- part of es1.1 extension pack -->
+<category name="GL_OES_blend_func_separate" number="2">
+    <enum name="BLEND_DST_RGB_OES"             count="1"  value="0x80C8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC_RGB_OES"             count="1"  value="0x80C9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_DST_ALPHA_OES"           count="1"  value="0x80CA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC_ALPHA_OES"           count="1"  value="0x80CB">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="BlendFuncSeparateOES" offset="assign">
+        <param name="sfactorRGB" type="GLenum"/>
+        <param name="dfactorRGB" type="GLenum"/>
+        <param name="sfactorAlpha" type="GLenum"/>
+        <param name="dfactorAlpha" type="GLenum"/>
+        <glx rop="4134"/>
+    </function>
+</category>
+
+<!-- part of es1.1 extension pack -->
+<category name="GL_OES_blend_subtract" number="3">
+    <enum name="FUNC_ADD_OES"                             value="0x8006"/>
+    <enum name="BLEND_EQUATION_OES"            count="1"  value="0x8009">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FUNC_SUBTRACT_OES"                        value="0x800A"/>
+    <enum name="FUNC_REVERSE_SUBTRACT_OES"                value="0x800B"/>
+
+    <function name="BlendEquationOES" offset="337">
+        <param name="mode" type="GLenum"/>
+        <glx rop="4097"/>
+    </function>
+</category>
+
+<!-- core addition to es1.0 and later -->
+<category name="GL_OES_byte_coordinates" number="4">
+    <enum name="BYTE"                                     value="0x1400"/>
+</category>
+
+<!-- optional for es1.1 -->
+<category name="GL_OES_draw_texture" number="7">
+    <enum name="TEXTURE_CROP_RECT_OES"                    value="0x8B9D"/>
+
+    <function name="DrawTexiOES" offset="assign">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+        <param name="width" type="GLint"/>
+        <param name="height" type="GLint"/>
+    </function>
+
+    <function name="DrawTexivOES" offset="assign">
+        <param name="coords" type="const GLint *" count="5"/>
+    </function>
+
+    <function name="DrawTexfOES" offset="assign">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="width" type="GLfloat"/>
+        <param name="height" type="GLfloat"/>
+    </function>
+
+    <function name="DrawTexfvOES" offset="assign">
+        <param name="coords" type="const GLfloat *" count="5"/>
+    </function>
+
+    <function name="DrawTexsOES" offset="assign">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="width" type="GLshort"/>
+        <param name="height" type="GLshort"/>
+    </function>
+
+    <function name="DrawTexsvOES" offset="assign">
+        <param name="coords" type="const GLshort *" count="5"/>
+    </function>
+
+    <function name="DrawTexxOES" offset="assign">
+        <param name="x" type="GLfixed"/>
+        <param name="y" type="GLfixed"/>
+        <param name="z" type="GLfixed"/>
+        <param name="width" type="GLfixed"/>
+        <param name="height" type="GLfixed"/>
+    </function>
+
+    <function name="DrawTexxvOES" offset="assign">
+        <param name="coords" type="const GLfixed *" count="5"/>
+    </function>
+
+    <!-- TexParameter{ifx}v is skipped here -->
+</category>
+
+<!-- core addition to es1.0 and later -->
+<category name="GL_OES_fixed_point" number="9">
+    <enum name="FIXED_OES"                                value="0x140C"/>
+
+    <!-- additon to es1.0 -->
+    <function name="AlphaFuncxOES" alias="AlphaFuncx">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLclampx"/>
+    </function>
+
+    <function name="ClearColorxOES" alias="ClearColorx">
+        <param name="red" type="GLclampx"/>
+        <param name="green" type="GLclampx"/>
+        <param name="blue" type="GLclampx"/>
+        <param name="alpha" type="GLclampx"/>
+    </function>
+
+    <function name="ClearDepthxOES" alias="ClearDepthx">
+        <param name="depth" type="GLclampx"/>
+    </function>
+
+    <function name="Color4xOES" alias="Color4x">
+        <param name="red" type="GLfixed"/>
+        <param name="green" type="GLfixed"/>
+        <param name="blue" type="GLfixed"/>
+        <param name="alpha" type="GLfixed"/>
+    </function>
+
+    <function name="DepthRangexOES" alias="DepthRangex">
+        <param name="zNear" type="GLclampx"/>
+        <param name="zFar" type="GLclampx"/>
+    </function>
+
+    <function name="FogxOES" alias="Fogx">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="FogxvOES" alias="Fogxv">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="FrustumxOES" alias="Frustumx">
+        <param name="left" type="GLfixed"/>
+        <param name="right" type="GLfixed"/>
+        <param name="bottom" type="GLfixed"/>
+        <param name="top" type="GLfixed"/>
+        <param name="zNear" type="GLfixed"/>
+        <param name="zFar" type="GLfixed"/>
+    </function>
+
+    <function name="LightModelxOES" alias="LightModelx">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="LightModelxvOES" alias="LightModelxv">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="LightxOES" alias="Lightx">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="LightxvOES" alias="Lightxv">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="LineWidthxOES" alias="LineWidthx">
+        <param name="width" type="GLfixed"/>
+    </function>
+
+    <function name="LoadMatrixxOES" alias="LoadMatrixx">
+        <param name="m" type="const GLfixed *" count="16"/>
+    </function>
+
+    <function name="MaterialxOES" alias="Materialx">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="MaterialxvOES" alias="Materialxv">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="MultiTexCoord4xOES" alias="MultiTexCoord4x">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfixed"/>
+        <param name="t" type="GLfixed"/>
+        <param name="r" type="GLfixed"/>
+        <param name="q" type="GLfixed"/>
+    </function>
+
+    <function name="MultMatrixxOES" alias="MultMatrixx">
+        <param name="m" type="const GLfixed *" count="16"/>
+    </function>
+
+    <function name="Normal3xOES" alias="Normal3x">
+        <param name="nx" type="GLfixed"/>
+        <param name="ny" type="GLfixed"/>
+        <param name="nz" type="GLfixed"/>
+    </function>
+
+    <function name="OrthoxOES" alias="Orthox">
+        <param name="left" type="GLfixed"/>
+        <param name="right" type="GLfixed"/>
+        <param name="bottom" type="GLfixed"/>
+        <param name="top" type="GLfixed"/>
+        <param name="zNear" type="GLfixed"/>
+        <param name="zFar" type="GLfixed"/>
+    </function>
+
+    <function name="PointSizexOES" alias="PointSizex">
+        <param name="size" type="GLfixed"/>
+    </function>
+
+    <function name="PolygonOffsetxOES" alias="PolygonOffsetx">
+        <param name="factor" type="GLfixed"/>
+        <param name="units" type="GLfixed"/>
+    </function>
+
+    <function name="RotatexOES" alias="Rotatex">
+        <param name="angle" type="GLfixed"/>
+        <param name="x" type="GLfixed"/>
+        <param name="y" type="GLfixed"/>
+        <param name="z" type="GLfixed"/>
+    </function>
+
+    <function name="SampleCoveragexOES" alias="SampleCoveragex">
+        <param name="value" type="GLclampx"/>
+        <param name="invert" type="GLboolean"/>
+    </function>
+
+    <function name="ScalexOES" alias="Scalex">
+        <param name="x" type="GLfixed"/>
+        <param name="y" type="GLfixed"/>
+        <param name="z" type="GLfixed"/>
+    </function>
+
+    <function name="TexEnvxOES" alias="TexEnvx">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="TexEnvxvOES" alias="TexEnvxv">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+
+    <function name="TexParameterxOES" alias="TexParameterx">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="TranslatexOES" alias="Translatex">
+        <param name="x" type="GLfixed"/>
+        <param name="y" type="GLfixed"/>
+        <param name="z" type="GLfixed"/>
+    </function>
+
+    <!-- additon to es1.1 -->
+    <function name="ClipPlanexOES" alias="ClipPlanex">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="const GLfixed *" count="4"/>
+    </function>
+
+    <function name="GetClipPlanexOES" alias="GetClipPlanex">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="GLfixed *" output="true" count="4"/>
+    </function>
+
+    <function name="GetFixedvOES" alias="GetFixedv">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetLightxvOES" alias="GetLightxv">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetMaterialxvOES" alias="GetMaterialxv">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetTexEnvxvOES" alias="GetTexEnvxv">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetTexParameterxvOES" alias="GetTexParameterxv">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="PointParameterxOES" alias="PointParameterx">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfixed"/>
+    </function>
+
+    <function name="PointParameterxvOES" alias="PointParameterxv">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *"/>
+    </function>
+
+    <function name="TexParameterxvOES" alias="TexParameterxv">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+</category>
+
+<!-- part of es1.1 extension pack -->
+<category name="GL_OES_framebuffer_object" number="10">
+    <enum name="NONE_OES"                                 value="0"/>
+    <enum name="INVALID_FRAMEBUFFER_OPERATION_OES"        value="0x0506"/>
+    <enum name="RGBA4_OES"                                value="0x8056"/>
+    <enum name="RGB5_A1_OES"                              value="0x8057"/>
+    <enum name="DEPTH_COMPONENT16_OES"                    value="0x81A5"/>
+
+    <enum name="MAX_RENDERBUFFER_SIZE_OES"                value="0x84E8"/>
+    <enum name="FRAMEBUFFER_BINDING_OES"                  value="0x8CA6"/>
+    <enum name="RENDERBUFFER_BINDING_OES"                 value="0x8CA7"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES"   value="0x8CD0"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES"   value="0x8CD1"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" value="0x8CD2"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" value="0x8CD3"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>
+    <enum name="FRAMEBUFFER_COMPLETE_OES"                 value="0x8CD5"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES"    value="0x8CD6"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" value="0x8CD7"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES"    value="0x8CD9"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_OES"       value="0x8CDA"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES"   value="0x8CDB"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES"   value="0x8CDC"/>
+    <enum name="FRAMEBUFFER_UNSUPPORTED_OES"              value="0x8CDD"/>
+    <enum name="COLOR_ATTACHMENT0_OES"                    value="0x8CE0"/>
+    <enum name="DEPTH_ATTACHMENT_OES"                     value="0x8D00"/>
+    <enum name="STENCIL_ATTACHMENT_OES"                   value="0x8D20"/>
+    <enum name="FRAMEBUFFER_OES"                          value="0x8D40"/>
+    <enum name="RENDERBUFFER_OES"                         value="0x8D41"/>
+    <enum name="RENDERBUFFER_WIDTH_OES"                   value="0x8D42"/>
+    <enum name="RENDERBUFFER_HEIGHT_OES"                  value="0x8D43"/>
+    <enum name="RENDERBUFFER_INTERNAL_FORMAT_OES"         value="0x8D44"/>
+    <enum name="STENCIL_INDEX1_OES"                       value="0x8D46"/>
+    <enum name="STENCIL_INDEX4_OES"                       value="0x8D47"/>
+    <enum name="STENCIL_INDEX8_OES"                       value="0x8D48"/>
+    <enum name="RENDERBUFFER_RED_SIZE_OES"                value="0x8D50"/>
+    <enum name="RENDERBUFFER_GREEN_SIZE_OES"              value="0x8D51"/>
+    <enum name="RENDERBUFFER_BLUE_SIZE_OES"               value="0x8D52"/>
+    <enum name="RENDERBUFFER_ALPHA_SIZE_OES"              value="0x8D53"/>
+    <enum name="RENDERBUFFER_DEPTH_SIZE_OES"              value="0x8D54"/>
+    <enum name="RENDERBUFFER_STENCIL_SIZE_OES"            value="0x8D55"/>
+    <enum name="RGB565_OES"                               value="0x8D62"/>
+
+    <function name="BindFramebufferOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="framebuffer" type="GLuint"/>
+    </function>
+
+    <function name="BindRenderbufferOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+    </function>
+
+    <function name="CheckFramebufferStatusOES" offset="assign">
+        <param name="target" type="GLenum"/>
+       <return type="GLenum"/>
+    </function>
+
+    <function name="DeleteFramebuffersOES" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="DeleteRenderbuffersOES" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="FramebufferRenderbufferOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="renderbuffertarget" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+    </function>
+
+    <function name="FramebufferTexture2DOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+    </function>
+
+    <function name="GenerateMipmapOES" offset="assign">
+        <param name="target" type="GLenum"/>
+    </function>
+
+    <function name="GenFramebuffersOES" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
+    </function>
+
+    <function name="GenRenderbuffersOES" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
+    </function>
+
+    <function name="GetFramebufferAttachmentParameterivOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="GetRenderbufferParameterivOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="IsFramebufferOES" offset="assign">
+        <param name="framebuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+
+    <function name="IsRenderbufferOES" offset="assign">
+        <param name="renderbuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+
+    <function name="RenderbufferStorageOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+    </function>
+</category>
+
+<!-- core addition to es1.1 -->
+<category name="GL_OES_matrix_get" number="11">
+    <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"   value="0x898D"/>
+    <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"  value="0x898E"/>
+    <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"    value="0x898F"/>
+</category>
+
+<!-- optional for es1.1 -->
+<category name="GL_OES_matrix_palette" number="12">
+    <enum name="MAX_VERTEX_UNITS_OES"                     value="0x86A4"/>
+    <enum name="WEIGHT_ARRAY_TYPE_OES"                    value="0x86A9"/>
+    <enum name="WEIGHT_ARRAY_STRIDE_OES"                  value="0x86AA"/>
+    <enum name="WEIGHT_ARRAY_SIZE_OES"                    value="0x86AB"/>
+    <enum name="WEIGHT_ARRAY_POINTER_OES"                 value="0x86AC"/>
+    <enum name="WEIGHT_ARRAY_OES"                         value="0x86AD"/>
+    <enum name="MATRIX_PALETTE_OES"                       value="0x8840"/>
+    <enum name="MAX_PALETTE_MATRICES_OES"                 value="0x8842"/>
+    <enum name="CURRENT_PALETTE_MATRIX_OES"               value="0x8843"/>
+    <enum name="MATRIX_INDEX_ARRAY_OES"                   value="0x8844"/>
+    <enum name="MATRIX_INDEX_ARRAY_SIZE_OES"              value="0x8846"/>
+    <enum name="MATRIX_INDEX_ARRAY_TYPE_OES"              value="0x8847"/>
+    <enum name="MATRIX_INDEX_ARRAY_STRIDE_OES"            value="0x8848"/>
+    <enum name="MATRIX_INDEX_ARRAY_POINTER_OES"           value="0x8849"/>
+    <enum name="WEIGHT_ARRAY_BUFFER_BINDING_OES"          value="0x889E"/>
+    <enum name="MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"    value="0x8B9E"/>
+
+    <function name="CurrentPaletteMatrixOES">
+        <param name="matrixpaletteindex" type="GLuint"/>
+    </function>
+
+    <function name="LoadPaletteFromModelViewMatrixOES">
+    </function>
+
+    <function name="MatrixIndexPointerOES">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+
+    <function name="WeightPointerOES">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+</category>
+
+<!-- required for es1.1 -->
+<category name="GL_OES_point_size_array" number="14">
+    <enum name="POINT_SIZE_ARRAY_TYPE_OES"                value="0x898A"/>
+    <enum name="POINT_SIZE_ARRAY_STRIDE_OES"             value="0x898B"/>
+    <enum name="POINT_SIZE_ARRAY_POINTER_OES"            value="0x898C"/>
+    <enum name="POINT_SIZE_ARRAY_OES"                     value="0x8B9C"/>
+    <enum name="POINT_SIZE_ARRAY_BUFFER_BINDING_OES"     value="0x8B9F"/>
+
+    <function name="PointSizePointerOES" offset="assign">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+</category>
+
+<!-- required for es1.1 -->
+<category name="GL_OES_point_sprite" number="15">
+    <enum name="POINT_SPRITE_OES"                         value="0x8861"/>
+    <enum name="COORD_REPLACE_OES"                       value="0x8862"/>
+</category>
+
+<!-- optional for es1.0 -->
+<category name="GL_OES_query_matrix" number="16">
+    <function name="QueryMatrixxOES" offset="assign">
+        <param name="mantissa" type="GLfixed *" count="16" />
+        <param name="exponent" type="GLint *" count="16" />
+       <return type="GLbitfield"/>
+    </function>
+</category>
+
+<!-- required for es1.0 and later -->
+<category name="GL_OES_read_format" number="17">
+    <enum name="IMPLEMENTATION_COLOR_READ_TYPE_OES"       value="0x8B9A"/>
+    <enum name="IMPLEMENTATION_COLOR_READ_FORMAT_OES"     value="0x8B9B"/>
+</category>
+
+<!-- core addition to es1.0 and later -->
+<category name="GL_OES_single_precision" number="18">
+    <!-- additon to es1.0 -->
+    <function name="ClearDepthfOES" alias="ClearDepthf">
+        <param name="depth" type="GLclampf"/>
+    </function>
+
+    <function name="DepthRangefOES" alias="DepthRangef">
+        <param name="zNear" type="GLclampf"/>
+        <param name="zFar" type="GLclampf"/>
+    </function>
+
+    <function name="FrustumfOES" alias="Frustumf">
+        <param name="left" type="GLfloat"/>
+        <param name="right" type="GLfloat"/>
+        <param name="bottom" type="GLfloat"/>
+        <param name="top" type="GLfloat"/>
+        <param name="zNear" type="GLfloat"/>
+        <param name="zFar" type="GLfloat"/>
+    </function>
+
+    <function name="OrthofOES" alias="Orthof">
+        <param name="left" type="GLfloat"/>
+        <param name="right" type="GLfloat"/>
+        <param name="bottom" type="GLfloat"/>
+        <param name="top" type="GLfloat"/>
+        <param name="zNear" type="GLfloat"/>
+        <param name="zFar" type="GLfloat"/>
+    </function>
+
+    <!-- additon to es1.1 -->
+    <function name="ClipPlanefOES" alias="ClipPlanef">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="const GLfloat *" count="4"/>
+    </function>
+
+    <function name="GetClipPlanefOES" alias="GetClipPlanef">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="GLfloat *" output="true" count="4"/>
+    </function>
+</category>
+
+<!-- part of es1.1 extension pack -->
+<category name="GL_OES_texture_cube_map" number="20">
+    <enum name="TEXTURE_GEN_MODE_OES"                  value="0x2500"/>
+    <enum name="NORMAL_MAP_OES"                        value="0x8511"/>
+    <enum name="REFLECTION_MAP_OES"                    value="0x8512"/>
+    <enum name="TEXTURE_CUBE_MAP_OES"                  value="0x8513"/>
+    <enum name="TEXTURE_BINDING_CUBE_MAP_OES"          value="0x8514"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X_OES"       value="0x8515"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X_OES"       value="0x8516"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y_OES"       value="0x8517"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y_OES"       value="0x8518"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z_OES"       value="0x8519"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z_OES"       value="0x851A"/>
+    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE_OES"         value="0x851C"/>
+    <enum name="TEXTURE_GEN_STR_OES"                   value="0x8D60"/>
+
+    <function name="GetTexGenfvOES" offset="279">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="133"/>
+    </function>
+
+    <function name="GetTexGenivOES" offset="280">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="134"/>
+    </function>
+
+    <function name="GetTexGenxvOES" offset="assign">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="TexGenfOES" offset="190">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="117"/>
+    </function>
+
+    <function name="TexGenfvOES" offset="191">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="118"/>
+    </function>
+
+    <function name="TexGeniOES" offset="192">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="119"/>
+    </function>
+
+    <function name="TexGenivOES" offset="193">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="120"/>
+    </function>
+
+    <function name="TexGenxOES" offset="assign">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+    </function>
+
+    <function name="TexGenxvOES" offset="assign">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfixed *" variable_param="pname"/>
+    </function>
+</category>
+
+<category name="GL_OES_texture_env_crossbar" number="21">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_OES_texture_mirrored_repeat" number="22">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_EXT_texture_lod_bias" number="60">
+    <enum name="TEXTURE_FILTER_CONTROL_EXT"               value="0x8500"/>
+    <enum name="TEXTURE_LOD_BIAS_EXT"                     value="0x8501"/>
+    <enum name="MAX_TEXTURE_LOD_BIAS_EXT"                 value="0x84FD"/>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es2_API.xml b/src/mapi/glapi/gen-es/es2_API.xml
new file mode 100644 (file)
index 0000000..f8af63b
--- /dev/null
@@ -0,0 +1,294 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<!-- OpenGL ES 2.x API -->
+
+<OpenGLAPI>
+
+<xi:include href="base2_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<!-- core subset of OpenGL 2.0 defined in OpenGL ES 2.0 -->
+<category name="core2.0">
+    <!-- addition to base1.0 -->
+    <enum name="NONE"                                     value="0x0"/>
+    <enum name="INT"                           count="4"  value="0x1404">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="UNSIGNED_INT"                  count="4"  value="0x1405">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="STENCIL_INDEX"                            value="0x1901"/>
+    <enum name="DEPTH_COMPONENT"                          value="0x1902"/>
+
+    <function name="TexImage2D" offset="183">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/> <!-- XXX the actual type is GLenum... -->
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
+        <glx rop="110" large="true"/>
+    </function>
+
+    <!-- addition to base1.1 -->
+    <enum name="RGBA4"                                    value="0x8056"/>
+    <enum name="RGB5_A1"                                  value="0x8057"/>
+
+    <!-- addition to base1.2 -->
+    <enum name="CONSTANT_COLOR"                           value="0x8001"/>
+    <enum name="ONE_MINUS_CONSTANT_COLOR"                 value="0x8002"/>
+    <enum name="CONSTANT_ALPHA"                           value="0x8003"/>
+    <enum name="ONE_MINUS_CONSTANT_ALPHA"                 value="0x8004"/>
+    <enum name="BLEND_COLOR"                   count="4"  value="0x8005">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FUNC_ADD"                                 value="0x8006"/>
+    <enum name="BLEND_EQUATION"                count="1"  value="0x8009">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FUNC_SUBTRACT"                            value="0x800A"/>
+    <enum name="FUNC_REVERSE_SUBTRACT"                    value="0x800B"/>
+
+    <function name="BlendColor" offset="336">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+        <glx rop="4096"/>
+    </function>
+
+    <function name="BlendEquation" offset="337">
+        <param name="mode" type="GLenum"/>
+        <glx rop="4097"/>
+    </function>
+
+    <!-- addition to base1.3 -->
+    <enum name="TEXTURE_CUBE_MAP"              count="1"  value="0x8513">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_CUBE_MAP"      count="1"  value="0x8514">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X"              value="0x8515"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X"              value="0x8516"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y"              value="0x8517"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y"              value="0x8518"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z"              value="0x8519"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z"              value="0x851A"/>
+    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE"     count="1"  value="0x851C">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <!-- addition to base1.4 -->
+    <enum name="BLEND_DST_RGB"                 count="1"  value="0x80C8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC_RGB"                 count="1"  value="0x80C9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_DST_ALPHA"               count="1"  value="0x80CA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC_ALPHA"               count="1"  value="0x80CB">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_COMPONENT16"                        value="0x81A5"/>
+    <enum name="MIRRORED_REPEAT"                          value="0x8370"/>
+    <enum name="INCR_WRAP"                                value="0x8507"/>
+    <enum name="DECR_WRAP"                                value="0x8508"/>
+
+    <function name="BlendFuncSeparate" offset="assign">
+        <param name="sfactorRGB" type="GLenum"/>
+        <param name="dfactorRGB" type="GLenum"/>
+        <param name="sfactorAlpha" type="GLenum"/>
+        <param name="dfactorAlpha" type="GLenum"/>
+        <glx rop="4134"/>
+    </function>
+
+    <!-- addition to base1.5 -->
+    <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING" count="1" value="0x889F">
+        <size name="GetVertexAttribdv" mode="get"/>
+        <size name="GetVertexAttribfv" mode="get"/>
+        <size name="GetVertexAttribiv" mode="get"/>
+    </enum>
+    <enum name="STREAM_DRAW"                              value="0x88E0"/>
+
+    <!-- addition to base2.0 -->
+    <!-- base2.0 should have everything defined -->
+</category>
+
+<!-- OpenGL ES 2.0 -->
+<category name="es2.0">
+    <!-- addition to core2.0 -->
+    <enum name="LOW_FLOAT"                                    value="0x8DF0"/>
+    <enum name="MEDIUM_FLOAT"                                 value="0x8DF1"/>
+    <enum name="HIGH_FLOAT"                                   value="0x8DF2"/>
+    <enum name="LOW_INT"                                      value="0x8DF3"/>
+    <enum name="MEDIUM_INT"                                   value="0x8DF4"/>
+    <enum name="HIGH_INT"                                     value="0x8DF5"/>
+    <enum name="SHADER_BINARY_FORMATS"                        value="0x8DF8"/>
+    <enum name="NUM_SHADER_BINARY_FORMATS"                    value="0x8DF9"/>
+    <enum name="SHADER_COMPILER"                              value="0x8DFA"/>
+    <enum name="MAX_VERTEX_UNIFORM_VECTORS"                   value="0x8DFB"/>
+    <enum name="MAX_VARYING_VECTORS"                          value="0x8DFC"/>
+    <enum name="MAX_FRAGMENT_UNIFORM_VECTORS"                 value="0x8DFD"/>
+
+    <function name="GetShaderPrecisionFormat" offset="assign">
+        <param name="shadertype" type="GLenum"/>
+        <param name="precisiontype" type="GLenum"/>
+        <param name="range" type="GLint *"/>
+        <param name="precision" type="GLint *"/>
+    </function>
+
+    <function name="ReleaseShaderCompiler" offset="assign">
+    </function>
+
+    <function name="ShaderBinary" offset="assign">
+        <param name="n" type="GLsizei"/>
+        <param name="shaders" type="const GLuint *"/>
+        <param name="binaryformat" type="GLenum"/>
+        <param name="binary" type="const GLvoid *"/>
+        <param name="length" type="GLsizei"/>
+    </function>
+
+    <!-- from GL_OES_fixed_point -->
+    <enum name="FIXED"                                    value="0x140C"/>
+    <type name="fixed"   size="4"                                    />
+
+    <!-- from GL_OES_framebuffer_object -->
+    <enum name="INVALID_FRAMEBUFFER_OPERATION"                value="0x0506"/>
+    <enum name="MAX_RENDERBUFFER_SIZE"                        value="0x84E8"/>
+    <enum name="FRAMEBUFFER_BINDING"                          value="0x8CA6"/>
+    <enum name="RENDERBUFFER_BINDING"                         value="0x8CA7"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"           value="0x8CD0"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"           value="0x8CD1"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"         value="0x8CD2"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" value="0x8CD3"/>
+    <enum name="FRAMEBUFFER_COMPLETE"                         value="0x8CD5"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT"            value="0x8CD6"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"    value="0x8CD7"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS"            value="0x8CD9"/>
+    <enum name="FRAMEBUFFER_UNSUPPORTED"                      value="0x8CDD"/>
+    <enum name="COLOR_ATTACHMENT0"                            value="0x8CE0"/>
+    <enum name="DEPTH_ATTACHMENT"                             value="0x8D00"/>
+    <enum name="STENCIL_ATTACHMENT"                           value="0x8D20"/>
+    <enum name="FRAMEBUFFER"                                  value="0x8D40"/>
+    <enum name="RENDERBUFFER"                                 value="0x8D41"/>
+    <enum name="RENDERBUFFER_WIDTH"                           value="0x8D42"/>
+    <enum name="RENDERBUFFER_HEIGHT"                          value="0x8D43"/>
+    <enum name="RENDERBUFFER_INTERNAL_FORMAT"                 value="0x8D44"/>
+    <enum name="STENCIL_INDEX8"                               value="0x8D48"/>
+    <enum name="RENDERBUFFER_RED_SIZE"                        value="0x8D50"/>
+    <enum name="RENDERBUFFER_GREEN_SIZE"                      value="0x8D51"/>
+    <enum name="RENDERBUFFER_BLUE_SIZE"                       value="0x8D52"/>
+    <enum name="RENDERBUFFER_ALPHA_SIZE"                      value="0x8D53"/>
+    <enum name="RENDERBUFFER_DEPTH_SIZE"                      value="0x8D54"/>
+    <enum name="RENDERBUFFER_STENCIL_SIZE"                    value="0x8D55"/>
+    <enum name="RGB565"                                       value="0x8D62"/>
+
+    <function name="BindFramebuffer" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="framebuffer" type="GLuint"/>
+    </function>
+
+    <function name="BindRenderbuffer" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+    </function>
+
+    <function name="CheckFramebufferStatus" offset="assign">
+        <param name="target" type="GLenum"/>
+       <return type="GLenum"/>
+    </function>
+
+    <function name="DeleteFramebuffers" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="DeleteRenderbuffers" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="FramebufferRenderbuffer" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="renderbuffertarget" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+    </function>
+
+    <function name="FramebufferTexture2D" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+    </function>
+
+    <function name="GenerateMipmap" offset="assign">
+        <param name="target" type="GLenum"/>
+    </function>
+
+    <function name="GenFramebuffers" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
+    </function>
+
+    <function name="GenRenderbuffers" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
+    </function>
+
+    <function name="GetFramebufferAttachmentParameteriv" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="GetRenderbufferParameteriv" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="IsFramebuffer" offset="assign">
+        <param name="framebuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+
+    <function name="IsRenderbuffer" offset="assign">
+        <param name="renderbuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+
+    <function name="RenderbufferStorage" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+    </function>
+
+    <!-- from GL_OES_read_format -->
+    <enum name="IMPLEMENTATION_COLOR_READ_TYPE"           value="0x8B9A"/>
+    <enum name="IMPLEMENTATION_COLOR_READ_FORMAT"         value="0x8B9B"/>
+
+    <!-- from GL_OES_single_precision -->
+    <function name="ClearDepthf" offset="assign">
+        <param name="depth" type="GLclampf"/>
+    </function>
+
+    <function name="DepthRangef" offset="assign">
+        <param name="zNear" type="GLclampf"/>
+        <param name="zFar" type="GLclampf"/>
+    </function>
+</category>
+
+<xi:include href="es2_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="es2_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es2_COMPAT.xml b/src/mapi/glapi/gen-es/es2_COMPAT.xml
new file mode 100644 (file)
index 0000000..1bd3569
--- /dev/null
@@ -0,0 +1,368 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<OpenGLAPI>
+
+<!-- This file defines the functions that are needed by Mesa.  It
+     makes sure the generated glapi headers are compatible with Mesa.
+     It mainly consists of missing functions and aliases in OpenGL ES.
+-->
+
+<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<!-- except for those defined by es_COMPAT.xml, these are also needed -->
+<category name="compat">
+    <!-- OpenGL 1.0 -->
+    <function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+        <param name="alpha" type="GLfloat"/>
+    </function>
+
+    <function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+        <param name="alpha" type="GLubyte"/>
+    </function>
+
+    <function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false">
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+    </function>
+
+    <function name="Fogf" offset="153" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="80"/>
+    </function>
+
+    <function name="Fogfv" offset="154" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="81"/>
+    </function>
+
+    <function name="Lightf" offset="159" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="86"/>
+    </function>
+
+    <function name="Lightfv" offset="160" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="87"/>
+    </function>
+
+    <function name="LightModelf" offset="163" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="90"/>
+    </function>
+
+    <function name="LightModelfv" offset="164" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="91"/>
+    </function>
+
+    <function name="Materialf" offset="169" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="96"/>
+    </function>
+
+    <function name="Materialfv" offset="170" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="97"/>
+    </function>
+
+    <function name="PointSize" offset="173" static_dispatch="false">
+        <param name="size" type="GLfloat"/>
+        <glx rop="100"/>
+    </function>
+
+    <function name="ShadeModel" offset="177" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="104"/>
+    </function>
+
+    <function name="TexEnvf" offset="184" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="111"/>
+    </function>
+
+    <function name="TexEnvfv" offset="185" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="112"/>
+    </function>
+
+    <function name="TexEnvi" offset="186" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="113"/>
+    </function>
+
+    <function name="TexEnviv" offset="187" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="114"/>
+    </function>
+
+    <function name="TexGenf" offset="190" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="117"/>
+    </function>
+
+    <function name="TexGenfv" offset="191" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="118"/>
+    </function>
+
+    <function name="TexGeni" offset="192" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="119"/>
+    </function>
+
+    <function name="TexGeniv" offset="193" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="120"/>
+    </function>
+
+    <function name="AlphaFunc" offset="240" static_dispatch="false">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLclampf"/>
+        <glx rop="159"/>
+    </function>
+
+    <function name="LogicOp" offset="242" static_dispatch="false">
+        <param name="opcode" type="GLenum"/>
+        <glx rop="161"/>
+    </function>
+
+    <function name="GetLightfv" offset="264" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="118"/>
+    </function>
+
+    <function name="GetMaterialfv" offset="269" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="123"/>
+    </function>
+
+    <function name="GetTexEnvfv" offset="276" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="130"/>
+    </function>
+
+    <function name="GetTexEnviv" offset="277" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="131"/>
+    </function>
+
+    <function name="GetTexGenfv" offset="279" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="133"/>
+    </function>
+
+    <function name="GetTexGeniv" offset="280" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="134"/>
+    </function>
+
+    <function name="LoadIdentity" offset="290" static_dispatch="false">
+        <glx rop="176"/>
+    </function>
+
+    <function name="LoadMatrixf" offset="291" static_dispatch="false">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="177"/>
+    </function>
+
+    <function name="MatrixMode" offset="293" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="179"/>
+    </function>
+
+    <function name="MultMatrixf" offset="294" static_dispatch="false">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="180"/>
+    </function>
+
+    <function name="PopMatrix" offset="297" static_dispatch="false">
+        <glx rop="183"/>
+    </function>
+
+    <function name="PushMatrix" offset="298" static_dispatch="false">
+        <glx rop="184"/>
+    </function>
+
+    <function name="Rotatef" offset="300" static_dispatch="false">
+        <param name="angle" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="186"/>
+    </function>
+
+    <function name="Scalef" offset="302" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="188"/>
+    </function>
+
+    <function name="Translatef" offset="304" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="190"/>
+    </function>
+
+    <!-- OpenGL 1.1 -->
+    <function name="ColorPointer" offset="308" static_dispatch="false">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DisableClientState" offset="309" static_dispatch="false">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="EnableClientState" offset="313" static_dispatch="false">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="NormalPointer" offset="318" static_dispatch="false">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="TexCoordPointer" offset="320" static_dispatch="false">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="VertexPointer" offset="321" static_dispatch="false">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="GetPointerv" offset="329" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **" output="true"/>
+        <glx handcode="true"/>
+    </function>
+
+    <!-- OpenGL 1.2 -->
+    <function name="TexImage3D" alias="TexImage3DOES" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
+        <glx rop="4114" large="true"/>
+    </function>
+
+    <function name="TexSubImage3D" alias="TexSubImage3DOES" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4115" large="true"/>
+    </function>
+
+    <function name="CopyTexSubImage3D" alias="CopyTexSubImage3DOES" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4123"/>
+    </function>
+
+    <!-- GL_ARB_multitexture -->
+    <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false">
+        <param name="texture" type="GLenum"/>
+        <glx rop="197"/>
+    </function>
+
+    <function name="ClientActiveTextureARB" offset="375" static_dispatch="false">
+        <param name="texture" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es2_EXT.xml b/src/mapi/glapi/gen-es/es2_EXT.xml
new file mode 100644 (file)
index 0000000..4a67952
--- /dev/null
@@ -0,0 +1,162 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<!-- OpenGL ES 2.x extensions -->
+
+<OpenGLAPI>
+
+<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<category name="GL_OES_texture_3D" number="34">
+    <enum name="TEXTURE_BINDING_3D_OES"                   value="0x806A"/>
+    <enum name="TEXTURE_3D_OES"                           value="0x806F"/>
+    <enum name="TEXTURE_WRAP_R_OES"                       value="0x8072"/>
+    <enum name="MAX_3D_TEXTURE_SIZE_OES"                  value="0x8073"/>
+    <enum name="SAMPLER_3D_OES"                           value="0x8B5F"/>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>
+
+    <function name="CompressedTexImage3DOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="216" handcode="client"/>
+    </function>
+
+    <function name="CompressedTexSubImage3DOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="219" handcode="client"/>
+    </function>
+
+    <function name="CopyTexSubImage3DOES" offset="373">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4123"/>
+    </function>
+
+    <function name="FramebufferTexture3DOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <glx rop="4323"/>
+    </function>
+
+    <function name="TexImage3DOES" offset="371">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
+        <glx rop="4114" large="true"/>
+    </function>
+
+    <function name="TexSubImage3DOES" offset="372">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4115" large="true"/>
+    </function>
+</category>
+
+<!-- the other name is OES_texture_float_linear -->
+<category name="OES_texture_half_float_linear" number="35">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<!-- the other name is OES_texture_float -->
+<category name="OES_texture_half_float" number="36">
+    <enum name="HALF_FLOAT_OES"                           value="0x8D61"/>
+</category>
+
+<category name="GL_OES_texture_npot" number="37">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_OES_vertex_half_float" number="38">
+    <enum name="HALF_FLOAT_OES"                           value="0x8D61"/>
+</category>
+
+<category name="GL_EXT_texture_type_2_10_10_10_REV" number="42">
+    <enum name="UNSIGNED_INT_2_10_10_10_REV_EXT"          value="0x8368"/>
+</category>
+
+<category name="GL_OES_packed_depth_stencil" number="43">
+    <enum name="DEPTH_STENCIL_OES"                        value="0x84F9"/>
+    <enum name="UNSIGNED_INT_24_8_OES"                    value="0x84FA"/>
+    <enum name="DEPTH24_STENCIL8_OES"                     value="0x88F0"/>
+</category>
+
+<category name="GL_OES_depth_texture" number="44">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_OES_standard_derivatives" number="45">
+    <enum name="FRAGMENT_SHADER_DERIVATIVE_HINT_OES"      value="0x8B8B"/>
+</category>
+
+<category name="GL_OES_vertex_type_10_10_10_2" number="46">
+    <enum name="UNSIGNED_INT_10_10_10_2_OES"              value="0x8DF6"/>
+    <enum name="INT_10_10_10_2_OES"                       value="0x8DF7"/>
+</category>
+
+<category name="GL_OES_get_program_binary" number="47">
+    <enum name="PROGRAM_BINARY_LENGTH_OES"                value="0x8741"/>
+    <enum name="NUM_PROGRAM_BINARY_FORMATS_OES"           value="0x87FE"/>
+    <enum name="PROGRAM_BINARY_FORMATS_OES"               value="0x87FF"/>
+
+    <function name="GetProgramBinaryOES" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *"/>
+        <param name="binaryFormat" type="GLenum *"/>
+        <param name="binary" type="GLvoid *"/>
+    </function>
+
+    <function name="ProgramBinaryOES" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="binaryFormat" type="GLenum"/>
+        <param name="binary" type="const GLvoid *"/>
+        <param name="length" type="GLint"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es_COMPAT.xml b/src/mapi/glapi/gen-es/es_COMPAT.xml
new file mode 100644 (file)
index 0000000..7c72926
--- /dev/null
@@ -0,0 +1,2646 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<OpenGLAPI>
+
+<!-- This file defines the following categories
+
+         a subset of 1.0
+         a subset of 1.1
+         a subset of 1.2
+         a subset of GL_ARB_multitexture
+         GL_APPLE_vertex_array_object
+
+     to make sure the generated glapi headers are compatible with Mesa.
+     It is included by es1_COMPAT.xml and es2_COMPAT.xml.
+-->
+
+<category name="1.0">
+    <type name="double"  size="8"  float="true"    glx_name="FLOAT64"/>
+    <type name="clampd"  size="8"  float="true"    glx_name="FLOAT64"/>
+
+    <type name="float"   size="4"  float="true"    glx_name="FLOAT32"/>
+    <type name="clampf"  size="4"  float="true"    glx_name="FLOAT32"/>
+
+    <type name="int"     size="4"                  glx_name="CARD32"/>
+    <type name="uint"    size="4"  unsigned="true" glx_name="CARD32"/>
+    <type name="sizei"   size="4"  unsigned="true" glx_name="CARD32"/>
+    <type name="enum"    size="4"  unsigned="true" glx_name="ENUM"/>
+    <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
+
+    <type name="short"   size="2"                  glx_name="CARD16"/>
+    <type name="ushort"  size="2"  unsigned="true" glx_name="CARD16"/>
+
+    <type name="byte"    size="1"                  glx_name="CARD8"/>
+    <type name="ubyte"   size="1"  unsigned="true" glx_name="CARD8"/>
+    <type name="boolean" size="1"  unsigned="true" glx_name="CARD8"/>
+
+    <type name="void"    size="1"/>
+
+    <function name="NewList" offset="0" static_dispatch="false">
+        <param name="list" type="GLuint"/>
+        <param name="mode" type="GLenum"/>
+        <glx sop="101"/>
+    </function>
+
+    <function name="EndList" offset="1" static_dispatch="false">
+        <glx sop="102"/>
+    </function>
+
+    <function name="CallList" offset="2" static_dispatch="false">
+        <param name="list" type="GLuint"/>
+        <glx rop="1"/>
+    </function>
+
+    <function name="CallLists" offset="3" static_dispatch="false">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="type" type="GLenum"/>
+        <param name="lists" type="const GLvoid *" variable_param="type" count="n"/>
+        <glx rop="2" large="true"/>
+    </function>
+
+    <function name="DeleteLists" offset="4" static_dispatch="false">
+        <param name="list" type="GLuint"/>
+        <param name="range" type="GLsizei"/>
+        <glx sop="103"/>
+    </function>
+
+    <function name="GenLists" offset="5" static_dispatch="false">
+        <param name="range" type="GLsizei"/>
+        <return type="GLuint"/>
+        <glx sop="104"/>
+    </function>
+
+    <function name="ListBase" offset="6" static_dispatch="false">
+        <param name="base" type="GLuint"/>
+        <glx rop="3"/>
+    </function>
+
+    <function name="Begin" offset="7" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="4"/>
+    </function>
+
+    <function name="Bitmap" offset="8" static_dispatch="false">
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="xorig" type="GLfloat"/>
+        <param name="yorig" type="GLfloat"/>
+        <param name="xmove" type="GLfloat"/>
+        <param name="ymove" type="GLfloat"/>
+        <param name="bitmap" type="const GLubyte *" img_width="width" img_height="height" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
+        <glx rop="5" large="true"/>
+    </function>
+
+    <function name="Color3b" offset="9" vectorequiv="Color3bv" static_dispatch="false">
+        <param name="red" type="GLbyte"/>
+        <param name="green" type="GLbyte"/>
+        <param name="blue" type="GLbyte"/>
+    </function>
+
+    <function name="Color3bv" offset="10" static_dispatch="false">
+        <param name="v" type="const GLbyte *" count="3"/>
+        <glx rop="6"/>
+    </function>
+
+    <function name="Color3d" offset="11" vectorequiv="Color3dv" static_dispatch="false">
+        <param name="red" type="GLdouble"/>
+        <param name="green" type="GLdouble"/>
+        <param name="blue" type="GLdouble"/>
+    </function>
+
+    <function name="Color3dv" offset="12" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="7"/>
+    </function>
+
+    <function name="Color3f" offset="13" vectorequiv="Color3fv" static_dispatch="false">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+    </function>
+
+    <function name="Color3fv" offset="14" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="8"/>
+    </function>
+
+    <function name="Color3i" offset="15" vectorequiv="Color3iv" static_dispatch="false">
+        <param name="red" type="GLint"/>
+        <param name="green" type="GLint"/>
+        <param name="blue" type="GLint"/>
+    </function>
+
+    <function name="Color3iv" offset="16" static_dispatch="false">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="9"/>
+    </function>
+
+    <function name="Color3s" offset="17" vectorequiv="Color3sv" static_dispatch="false">
+        <param name="red" type="GLshort"/>
+        <param name="green" type="GLshort"/>
+        <param name="blue" type="GLshort"/>
+    </function>
+
+    <function name="Color3sv" offset="18" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="10"/>
+    </function>
+
+    <function name="Color3ub" offset="19" vectorequiv="Color3ubv" static_dispatch="false">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+    </function>
+
+    <function name="Color3ubv" offset="20" static_dispatch="false">
+        <param name="v" type="const GLubyte *" count="3"/>
+        <glx rop="11"/>
+    </function>
+
+    <function name="Color3ui" offset="21" vectorequiv="Color3uiv" static_dispatch="false">
+        <param name="red" type="GLuint"/>
+        <param name="green" type="GLuint"/>
+        <param name="blue" type="GLuint"/>
+    </function>
+
+    <function name="Color3uiv" offset="22" static_dispatch="false">
+        <param name="v" type="const GLuint *" count="3"/>
+        <glx rop="12"/>
+    </function>
+
+    <function name="Color3us" offset="23" vectorequiv="Color3usv" static_dispatch="false">
+        <param name="red" type="GLushort"/>
+        <param name="green" type="GLushort"/>
+        <param name="blue" type="GLushort"/>
+    </function>
+
+    <function name="Color3usv" offset="24" static_dispatch="false">
+        <param name="v" type="const GLushort *" count="3"/>
+        <glx rop="13"/>
+    </function>
+
+    <function name="Color4b" offset="25" vectorequiv="Color4bv" static_dispatch="false">
+        <param name="red" type="GLbyte"/>
+        <param name="green" type="GLbyte"/>
+        <param name="blue" type="GLbyte"/>
+        <param name="alpha" type="GLbyte"/>
+    </function>
+
+    <function name="Color4bv" offset="26" static_dispatch="false">
+        <param name="v" type="const GLbyte *" count="4"/>
+        <glx rop="14"/>
+    </function>
+
+    <function name="Color4d" offset="27" vectorequiv="Color4dv" static_dispatch="false">
+        <param name="red" type="GLdouble"/>
+        <param name="green" type="GLdouble"/>
+        <param name="blue" type="GLdouble"/>
+        <param name="alpha" type="GLdouble"/>
+    </function>
+
+    <function name="Color4dv" offset="28" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="15"/>
+    </function>
+
+    <!--function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+        <param name="alpha" type="GLfloat"/>
+    </function-->
+
+    <function name="Color4fv" offset="30" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="16"/>
+    </function>
+
+    <function name="Color4i" offset="31" vectorequiv="Color4iv" static_dispatch="false">
+        <param name="red" type="GLint"/>
+        <param name="green" type="GLint"/>
+        <param name="blue" type="GLint"/>
+        <param name="alpha" type="GLint"/>
+    </function>
+
+    <function name="Color4iv" offset="32" static_dispatch="false">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="17"/>
+    </function>
+
+    <function name="Color4s" offset="33" vectorequiv="Color4sv" static_dispatch="false">
+        <param name="red" type="GLshort"/>
+        <param name="green" type="GLshort"/>
+        <param name="blue" type="GLshort"/>
+        <param name="alpha" type="GLshort"/>
+    </function>
+
+    <function name="Color4sv" offset="34" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="18"/>
+    </function>
+
+    <!--function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+        <param name="alpha" type="GLubyte"/>
+    </function-->
+
+    <function name="Color4ubv" offset="36" static_dispatch="false">
+        <param name="v" type="const GLubyte *" count="4"/>
+        <glx rop="19"/>
+    </function>
+
+    <function name="Color4ui" offset="37" vectorequiv="Color4uiv" static_dispatch="false">
+        <param name="red" type="GLuint"/>
+        <param name="green" type="GLuint"/>
+        <param name="blue" type="GLuint"/>
+        <param name="alpha" type="GLuint"/>
+    </function>
+
+    <function name="Color4uiv" offset="38" static_dispatch="false">
+        <param name="v" type="const GLuint *" count="4"/>
+        <glx rop="20"/>
+    </function>
+
+    <function name="Color4us" offset="39" vectorequiv="Color4usv" static_dispatch="false">
+        <param name="red" type="GLushort"/>
+        <param name="green" type="GLushort"/>
+        <param name="blue" type="GLushort"/>
+        <param name="alpha" type="GLushort"/>
+    </function>
+
+    <function name="Color4usv" offset="40" static_dispatch="false">
+        <param name="v" type="const GLushort *" count="4"/>
+        <glx rop="21"/>
+    </function>
+
+    <function name="EdgeFlag" offset="41" vectorequiv="EdgeFlagv" static_dispatch="false">
+        <param name="flag" type="GLboolean"/>
+    </function>
+
+    <function name="EdgeFlagv" offset="42" static_dispatch="false">
+        <param name="flag" type="const GLboolean *" count="1"/>
+        <glx rop="22"/>
+    </function>
+
+    <function name="End" offset="43" static_dispatch="false">
+        <glx rop="23"/>
+    </function>
+
+    <function name="Indexd" offset="44" vectorequiv="Indexdv" static_dispatch="false">
+        <param name="c" type="GLdouble"/>
+    </function>
+
+    <function name="Indexdv" offset="45" static_dispatch="false">
+        <param name="c" type="const GLdouble *" count="1"/>
+        <glx rop="24"/>
+    </function>
+
+    <function name="Indexf" offset="46" vectorequiv="Indexfv" static_dispatch="false">
+        <param name="c" type="GLfloat"/>
+    </function>
+
+    <function name="Indexfv" offset="47" static_dispatch="false">
+        <param name="c" type="const GLfloat *" count="1"/>
+        <glx rop="25"/>
+    </function>
+
+    <function name="Indexi" offset="48" vectorequiv="Indexiv" static_dispatch="false">
+        <param name="c" type="GLint"/>
+    </function>
+
+    <function name="Indexiv" offset="49" static_dispatch="false">
+        <param name="c" type="const GLint *" count="1"/>
+        <glx rop="26"/>
+    </function>
+
+    <function name="Indexs" offset="50" vectorequiv="Indexsv" static_dispatch="false">
+        <param name="c" type="GLshort"/>
+    </function>
+
+    <function name="Indexsv" offset="51" static_dispatch="false">
+        <param name="c" type="const GLshort *" count="1"/>
+        <glx rop="27"/>
+    </function>
+
+    <function name="Normal3b" offset="52" vectorequiv="Normal3bv" static_dispatch="false">
+        <param name="nx" type="GLbyte"/>
+        <param name="ny" type="GLbyte"/>
+        <param name="nz" type="GLbyte"/>
+    </function>
+
+    <function name="Normal3bv" offset="53" static_dispatch="false">
+        <param name="v" type="const GLbyte *" count="3"/>
+        <glx rop="28"/>
+    </function>
+
+    <function name="Normal3d" offset="54" vectorequiv="Normal3dv" static_dispatch="false">
+        <param name="nx" type="GLdouble"/>
+        <param name="ny" type="GLdouble"/>
+        <param name="nz" type="GLdouble"/>
+    </function>
+
+    <function name="Normal3dv" offset="55" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="29"/>
+    </function>
+
+    <!--function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false">
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+    </function-->
+
+    <function name="Normal3fv" offset="57" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="30"/>
+    </function>
+
+    <function name="Normal3i" offset="58" vectorequiv="Normal3iv" static_dispatch="false">
+        <param name="nx" type="GLint"/>
+        <param name="ny" type="GLint"/>
+        <param name="nz" type="GLint"/>
+    </function>
+
+    <function name="Normal3iv" offset="59" static_dispatch="false">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="31"/>
+    </function>
+
+    <function name="Normal3s" offset="60" vectorequiv="Normal3sv" static_dispatch="false">
+        <param name="nx" type="GLshort"/>
+        <param name="ny" type="GLshort"/>
+        <param name="nz" type="GLshort"/>
+    </function>
+
+    <function name="Normal3sv" offset="61" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="32"/>
+    </function>
+
+    <function name="RasterPos2d" offset="62" vectorequiv="RasterPos2dv" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="RasterPos2dv" offset="63" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="33"/>
+    </function>
+
+    <function name="RasterPos2f" offset="64" vectorequiv="RasterPos2fv" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="RasterPos2fv" offset="65" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="34"/>
+    </function>
+
+    <function name="RasterPos2i" offset="66" vectorequiv="RasterPos2iv" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+    </function>
+
+    <function name="RasterPos2iv" offset="67" static_dispatch="false">
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="35"/>
+    </function>
+
+    <function name="RasterPos2s" offset="68" vectorequiv="RasterPos2sv" static_dispatch="false">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="RasterPos2sv" offset="69" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="36"/>
+    </function>
+
+    <function name="RasterPos3d" offset="70" vectorequiv="RasterPos3dv" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="RasterPos3dv" offset="71" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="37"/>
+    </function>
+
+    <function name="RasterPos3f" offset="72" vectorequiv="RasterPos3fv" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="RasterPos3fv" offset="73" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="38"/>
+    </function>
+
+    <function name="RasterPos3i" offset="74" vectorequiv="RasterPos3iv" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+    </function>
+
+    <function name="RasterPos3iv" offset="75" static_dispatch="false">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="39"/>
+    </function>
+
+    <function name="RasterPos3s" offset="76" vectorequiv="RasterPos3sv" static_dispatch="false">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="RasterPos3sv" offset="77" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="40"/>
+    </function>
+
+    <function name="RasterPos4d" offset="78" vectorequiv="RasterPos4dv" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="RasterPos4dv" offset="79" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="41"/>
+    </function>
+
+    <function name="RasterPos4f" offset="80" vectorequiv="RasterPos4fv" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="RasterPos4fv" offset="81" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="42"/>
+    </function>
+
+    <function name="RasterPos4i" offset="82" vectorequiv="RasterPos4iv" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+        <param name="w" type="GLint"/>
+    </function>
+
+    <function name="RasterPos4iv" offset="83" static_dispatch="false">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="43"/>
+    </function>
+
+    <function name="RasterPos4s" offset="84" vectorequiv="RasterPos4sv" static_dispatch="false">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+    </function>
+
+    <function name="RasterPos4sv" offset="85" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="44"/>
+    </function>
+
+    <function name="Rectd" offset="86" vectorequiv="Rectdv" static_dispatch="false">
+        <param name="x1" type="GLdouble"/>
+        <param name="y1" type="GLdouble"/>
+        <param name="x2" type="GLdouble"/>
+        <param name="y2" type="GLdouble"/>
+    </function>
+
+    <function name="Rectdv" offset="87" static_dispatch="false">
+        <param name="v1" type="const GLdouble *" count="2"/>
+        <param name="v2" type="const GLdouble *" count="2"/>
+        <glx rop="45"/>
+    </function>
+
+    <function name="Rectf" offset="88" vectorequiv="Rectfv" static_dispatch="false">
+        <param name="x1" type="GLfloat"/>
+        <param name="y1" type="GLfloat"/>
+        <param name="x2" type="GLfloat"/>
+        <param name="y2" type="GLfloat"/>
+    </function>
+
+    <function name="Rectfv" offset="89" static_dispatch="false">
+        <param name="v1" type="const GLfloat *" count="2"/>
+        <param name="v2" type="const GLfloat *" count="2"/>
+        <glx rop="46"/>
+    </function>
+
+    <function name="Recti" offset="90" vectorequiv="Rectiv" static_dispatch="false">
+        <param name="x1" type="GLint"/>
+        <param name="y1" type="GLint"/>
+        <param name="x2" type="GLint"/>
+        <param name="y2" type="GLint"/>
+    </function>
+
+    <function name="Rectiv" offset="91" static_dispatch="false">
+        <param name="v1" type="const GLint *" count="2"/>
+        <param name="v2" type="const GLint *" count="2"/>
+        <glx rop="47"/>
+    </function>
+
+    <function name="Rects" offset="92" vectorequiv="Rectsv" static_dispatch="false">
+        <param name="x1" type="GLshort"/>
+        <param name="y1" type="GLshort"/>
+        <param name="x2" type="GLshort"/>
+        <param name="y2" type="GLshort"/>
+    </function>
+
+    <function name="Rectsv" offset="93" static_dispatch="false">
+        <param name="v1" type="const GLshort *" count="2"/>
+        <param name="v2" type="const GLshort *" count="2"/>
+        <glx rop="48"/>
+    </function>
+
+    <function name="TexCoord1d" offset="94" vectorequiv="TexCoord1dv" static_dispatch="false">
+        <param name="s" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord1dv" offset="95" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="1"/>
+        <glx rop="49"/>
+    </function>
+
+    <function name="TexCoord1f" offset="96" vectorequiv="TexCoord1fv" static_dispatch="false">
+        <param name="s" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord1fv" offset="97" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="1"/>
+        <glx rop="50"/>
+    </function>
+
+    <function name="TexCoord1i" offset="98" vectorequiv="TexCoord1iv" static_dispatch="false">
+        <param name="s" type="GLint"/>
+    </function>
+
+    <function name="TexCoord1iv" offset="99" static_dispatch="false">
+        <param name="v" type="const GLint *" count="1"/>
+        <glx rop="51"/>
+    </function>
+
+    <function name="TexCoord1s" offset="100" vectorequiv="TexCoord1sv" static_dispatch="false">
+        <param name="s" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord1sv" offset="101" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="1"/>
+        <glx rop="52"/>
+    </function>
+
+    <function name="TexCoord2d" offset="102" vectorequiv="TexCoord2dv" static_dispatch="false">
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord2dv" offset="103" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="53"/>
+    </function>
+
+    <function name="TexCoord2f" offset="104" vectorequiv="TexCoord2fv" static_dispatch="false">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord2fv" offset="105" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="54"/>
+    </function>
+
+    <function name="TexCoord2i" offset="106" vectorequiv="TexCoord2iv" static_dispatch="false">
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+    </function>
+
+    <function name="TexCoord2iv" offset="107" static_dispatch="false">
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="55"/>
+    </function>
+
+    <function name="TexCoord2s" offset="108" vectorequiv="TexCoord2sv" static_dispatch="false">
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord2sv" offset="109" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="56"/>
+    </function>
+
+    <function name="TexCoord3d" offset="110" vectorequiv="TexCoord3dv" static_dispatch="false">
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord3dv" offset="111" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="57"/>
+    </function>
+
+    <function name="TexCoord3f" offset="112" vectorequiv="TexCoord3fv" static_dispatch="false">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord3fv" offset="113" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="58"/>
+    </function>
+
+    <function name="TexCoord3i" offset="114" vectorequiv="TexCoord3iv" static_dispatch="false">
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+    </function>
+
+    <function name="TexCoord3iv" offset="115" static_dispatch="false">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="59"/>
+    </function>
+
+    <function name="TexCoord3s" offset="116" vectorequiv="TexCoord3sv" static_dispatch="false">
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord3sv" offset="117" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="60"/>
+    </function>
+
+    <function name="TexCoord4d" offset="118" vectorequiv="TexCoord4dv" static_dispatch="false">
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+        <param name="q" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord4dv" offset="119" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="61"/>
+    </function>
+
+    <function name="TexCoord4f" offset="120" vectorequiv="TexCoord4fv" static_dispatch="false">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord4fv" offset="121" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="62"/>
+    </function>
+
+    <function name="TexCoord4i" offset="122" vectorequiv="TexCoord4iv" static_dispatch="false">
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+        <param name="q" type="GLint"/>
+    </function>
+
+    <function name="TexCoord4iv" offset="123" static_dispatch="false">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="63"/>
+    </function>
+
+    <function name="TexCoord4s" offset="124" vectorequiv="TexCoord4sv" static_dispatch="false">
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+        <param name="q" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord4sv" offset="125" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="64"/>
+    </function>
+
+    <function name="Vertex2d" offset="126" vectorequiv="Vertex2dv" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="Vertex2dv" offset="127" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="65"/>
+    </function>
+
+    <function name="Vertex2f" offset="128" vectorequiv="Vertex2fv" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="Vertex2fv" offset="129" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="66"/>
+    </function>
+
+    <function name="Vertex2i" offset="130" vectorequiv="Vertex2iv" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+    </function>
+
+    <function name="Vertex2iv" offset="131" static_dispatch="false">
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="67"/>
+    </function>
+
+    <function name="Vertex2s" offset="132" vectorequiv="Vertex2sv" static_dispatch="false">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="Vertex2sv" offset="133" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="68"/>
+    </function>
+
+    <function name="Vertex3d" offset="134" vectorequiv="Vertex3dv" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="Vertex3dv" offset="135" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="69"/>
+    </function>
+
+    <function name="Vertex3f" offset="136" vectorequiv="Vertex3fv" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="Vertex3fv" offset="137" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="70"/>
+    </function>
+
+    <function name="Vertex3i" offset="138" vectorequiv="Vertex3iv" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+    </function>
+
+    <function name="Vertex3iv" offset="139" static_dispatch="false">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="71"/>
+    </function>
+
+    <function name="Vertex3s" offset="140" vectorequiv="Vertex3sv" static_dispatch="false">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="Vertex3sv" offset="141" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="72"/>
+    </function>
+
+    <function name="Vertex4d" offset="142" vectorequiv="Vertex4dv" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="Vertex4dv" offset="143" static_dispatch="false">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="73"/>
+    </function>
+
+    <function name="Vertex4f" offset="144" vectorequiv="Vertex4fv" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="Vertex4fv" offset="145" static_dispatch="false">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="74"/>
+    </function>
+
+    <function name="Vertex4i" offset="146" vectorequiv="Vertex4iv" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+        <param name="w" type="GLint"/>
+    </function>
+
+    <function name="Vertex4iv" offset="147" static_dispatch="false">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="75"/>
+    </function>
+
+    <function name="Vertex4s" offset="148" vectorequiv="Vertex4sv" static_dispatch="false">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+    </function>
+
+    <function name="Vertex4sv" offset="149" static_dispatch="false">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="76"/>
+    </function>
+
+    <function name="ClipPlane" offset="150" static_dispatch="false">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="const GLdouble *" count="4"/>
+        <glx rop="77"/>
+    </function>
+
+    <function name="ColorMaterial" offset="151" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx rop="78"/>
+    </function>
+
+    <!--function name="CullFace" offset="152" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="79"/>
+    </function>
+
+    <function name="Fogf" offset="153" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="80"/>
+    </function>
+
+    <function name="Fogfv" offset="154" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="81"/>
+    </function-->
+
+    <function name="Fogi" offset="155" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="82"/>
+    </function>
+
+    <function name="Fogiv" offset="156" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="83"/>
+    </function>
+
+    <!--function name="FrontFace" offset="157" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="84"/>
+    </function>
+
+    <function name="Hint" offset="158" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx rop="85"/>
+    </function>
+
+    <function name="Lightf" offset="159" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="86"/>
+    </function>
+
+    <function name="Lightfv" offset="160" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="87"/>
+    </function-->
+
+    <function name="Lighti" offset="161" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="88"/>
+    </function>
+
+    <function name="Lightiv" offset="162" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="89"/>
+    </function>
+
+    <!--function name="LightModelf" offset="163" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="90"/>
+    </function>
+
+    <function name="LightModelfv" offset="164" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="91"/>
+    </function-->
+
+    <function name="LightModeli" offset="165" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="92"/>
+    </function>
+
+    <function name="LightModeliv" offset="166" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="93"/>
+    </function>
+
+    <function name="LineStipple" offset="167" static_dispatch="false">
+        <param name="factor" type="GLint"/>
+        <param name="pattern" type="GLushort"/>
+        <glx rop="94"/>
+    </function>
+
+    <!--function name="LineWidth" offset="168" static_dispatch="false">
+        <param name="width" type="GLfloat"/>
+        <glx rop="95"/>
+    </function>
+
+    <function name="Materialf" offset="169" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="96"/>
+    </function>
+
+    <function name="Materialfv" offset="170" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="97"/>
+    </function-->
+
+    <function name="Materiali" offset="171" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="98"/>
+    </function>
+
+    <function name="Materialiv" offset="172" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="99"/>
+    </function>
+
+    <!--function name="PointSize" offset="173" static_dispatch="false">
+        <param name="size" type="GLfloat"/>
+        <glx rop="100"/>
+    </function-->
+
+    <function name="PolygonMode" offset="174" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx rop="101"/>
+    </function>
+
+    <function name="PolygonStipple" offset="175" static_dispatch="false">
+        <param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
+        <glx rop="102"/>
+    </function>
+
+    <!--function name="Scissor" offset="176" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="103"/>
+    </function>
+
+    <function name="ShadeModel" offset="177" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="104"/>
+    </function>
+
+    <function name="TexParameterf" offset="178" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="105"/>
+    </function>
+
+    <function name="TexParameterfv" offset="179" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="106"/>
+    </function>
+
+    <function name="TexParameteri" offset="180" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="107"/>
+    </function>
+
+    <function name="TexParameteriv" offset="181" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="108"/>
+    </function-->
+
+    <function name="TexImage1D" offset="182" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
+        <glx rop="109" large="true"/>
+    </function>
+
+    <!--function name="TexImage2D" offset="183" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
+        <glx rop="110" large="true"/>
+    </function>
+
+    <function name="TexEnvf" offset="184" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="111"/>
+    </function>
+
+    <function name="TexEnvfv" offset="185" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="112"/>
+    </function>
+
+    <function name="TexEnvi" offset="186" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="113"/>
+    </function>
+
+    <function name="TexEnviv" offset="187" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="114"/>
+    </function-->
+
+    <function name="TexGend" offset="188" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLdouble"/>
+        <glx rop="115"/>
+    </function>
+
+    <function name="TexGendv" offset="189" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLdouble *" variable_param="pname"/>
+        <glx rop="116"/>
+    </function>
+
+    <!--function name="TexGenf" offset="190" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="117"/>
+    </function>
+
+    <function name="TexGenfv" offset="191" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="118"/>
+    </function>
+
+    <function name="TexGeni" offset="192" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="119"/>
+    </function>
+
+    <function name="TexGeniv" offset="193" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="120"/>
+    </function-->
+
+    <function name="FeedbackBuffer" offset="194" static_dispatch="false">
+        <param name="size" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="buffer" type="GLfloat *" output="true"/>
+        <glx sop="105" handcode="true"/>
+    </function>
+
+    <function name="SelectBuffer" offset="195" static_dispatch="false">
+        <param name="size" type="GLsizei"/>
+        <param name="buffer" type="GLuint *" output="true"/>
+        <glx sop="106" handcode="true"/>
+    </function>
+
+    <function name="RenderMode" offset="196" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <return type="GLint"/>
+        <glx sop="107" handcode="true"/>
+    </function>
+
+    <function name="InitNames" offset="197" static_dispatch="false">
+        <glx rop="121"/>
+    </function>
+
+    <function name="LoadName" offset="198" static_dispatch="false">
+        <param name="name" type="GLuint"/>
+        <glx rop="122"/>
+    </function>
+
+    <function name="PassThrough" offset="199" static_dispatch="false">
+        <param name="token" type="GLfloat"/>
+        <glx rop="123"/>
+    </function>
+
+    <function name="PopName" offset="200" static_dispatch="false">
+        <glx rop="124"/>
+    </function>
+
+    <function name="PushName" offset="201" static_dispatch="false">
+        <param name="name" type="GLuint"/>
+        <glx rop="125"/>
+    </function>
+
+    <function name="DrawBuffer" offset="202" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="126"/>
+    </function>
+
+    <!--function name="Clear" offset="203" static_dispatch="false">
+        <param name="mask" type="GLbitfield"/>
+        <glx rop="127"/>
+    </function-->
+
+    <function name="ClearAccum" offset="204" static_dispatch="false">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+        <param name="alpha" type="GLfloat"/>
+        <glx rop="128"/>
+    </function>
+
+    <function name="ClearIndex" offset="205" static_dispatch="false">
+        <param name="c" type="GLfloat"/>
+        <glx rop="129"/>
+    </function>
+
+    <!--function name="ClearColor" offset="206" static_dispatch="false">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+        <glx rop="130"/>
+    </function>
+
+    <function name="ClearStencil" offset="207" static_dispatch="false">
+        <param name="s" type="GLint"/>
+        <glx rop="131"/>
+    </function-->
+
+    <function name="ClearDepth" offset="208" static_dispatch="false">
+        <param name="depth" type="GLclampd"/>
+        <glx rop="132"/>
+    </function>
+
+    <!--function name="StencilMask" offset="209" static_dispatch="false">
+        <param name="mask" type="GLuint"/>
+        <glx rop="133"/>
+    </function>
+
+    <function name="ColorMask" offset="210" static_dispatch="false">
+        <param name="red" type="GLboolean"/>
+        <param name="green" type="GLboolean"/>
+        <param name="blue" type="GLboolean"/>
+        <param name="alpha" type="GLboolean"/>
+        <glx rop="134"/>
+    </function>
+
+    <function name="DepthMask" offset="211" static_dispatch="false">
+        <param name="flag" type="GLboolean"/>
+        <glx rop="135"/>
+    </function-->
+
+    <function name="IndexMask" offset="212" static_dispatch="false">
+        <param name="mask" type="GLuint"/>
+        <glx rop="136"/>
+    </function>
+
+    <function name="Accum" offset="213" static_dispatch="false">
+        <param name="op" type="GLenum"/>
+        <param name="value" type="GLfloat"/>
+        <glx rop="137"/>
+    </function>
+
+    <!--function name="Disable" offset="214" static_dispatch="false">
+        <param name="cap" type="GLenum"/>
+        <glx rop="138" handcode="client"/>
+    </function>
+
+    <function name="Enable" offset="215" static_dispatch="false">
+        <param name="cap" type="GLenum"/>
+        <glx rop="139" handcode="client"/>
+    </function>
+
+    <function name="Finish" offset="216" static_dispatch="false">
+        <glx sop="108" handcode="true"/>
+    </function>
+
+    <function name="Flush" offset="217" static_dispatch="false">
+        <glx sop="142" handcode="true"/>
+    </function-->
+
+    <function name="PopAttrib" offset="218" static_dispatch="false">
+        <glx rop="141"/>
+    </function>
+
+    <function name="PushAttrib" offset="219" static_dispatch="false">
+        <param name="mask" type="GLbitfield"/>
+        <glx rop="142"/>
+    </function>
+
+    <function name="Map1d" offset="220" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <param name="stride" type="GLint" client_only="true"/>
+        <param name="order" type="GLint"/>
+        <param name="points" type="const GLdouble *" variable_param="order"/>
+        <glx rop="143" handcode="true"/>
+    </function>
+
+    <function name="Map1f" offset="221" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <param name="stride" type="GLint" client_only="true"/>
+        <param name="order" type="GLint"/>
+        <param name="points" type="const GLfloat *" variable_param="order"/>
+        <glx rop="144" handcode="true"/>
+    </function>
+
+    <function name="Map2d" offset="222" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <param name="ustride" type="GLint" client_only="true"/>
+        <param name="uorder" type="GLint"/>
+        <param name="v1" type="GLdouble"/>
+        <param name="v2" type="GLdouble"/>
+        <param name="vstride" type="GLint" client_only="true"/>
+        <param name="vorder" type="GLint"/>
+        <param name="points" type="const GLdouble *" variable_param="uorder"/>
+        <glx rop="145" handcode="true"/>
+    </function>
+
+    <function name="Map2f" offset="223" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <param name="ustride" type="GLint" client_only="true"/>
+        <param name="uorder" type="GLint"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <param name="vstride" type="GLint" client_only="true"/>
+        <param name="vorder" type="GLint"/>
+        <param name="points" type="const GLfloat *" variable_param="uorder"/>
+        <glx rop="146" handcode="true"/>
+    </function>
+
+    <function name="MapGrid1d" offset="224" static_dispatch="false">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <glx rop="147"/>
+    </function>
+
+    <function name="MapGrid1f" offset="225" static_dispatch="false">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <glx rop="148"/>
+    </function>
+
+    <function name="MapGrid2d" offset="226" static_dispatch="false">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <param name="vn" type="GLint"/>
+        <param name="v1" type="GLdouble"/>
+        <param name="v2" type="GLdouble"/>
+        <glx rop="149"/>
+    </function>
+
+    <function name="MapGrid2f" offset="227" static_dispatch="false">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <param name="vn" type="GLint"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <glx rop="150"/>
+    </function>
+
+    <function name="EvalCoord1d" offset="228" vectorequiv="EvalCoord1dv" static_dispatch="false">
+        <param name="u" type="GLdouble"/>
+    </function>
+
+    <function name="EvalCoord1dv" offset="229" static_dispatch="false">
+        <param name="u" type="const GLdouble *" count="1"/>
+        <glx rop="151"/>
+    </function>
+
+    <function name="EvalCoord1f" offset="230" vectorequiv="EvalCoord1fv" static_dispatch="false">
+        <param name="u" type="GLfloat"/>
+    </function>
+
+    <function name="EvalCoord1fv" offset="231" static_dispatch="false">
+        <param name="u" type="const GLfloat *" count="1"/>
+        <glx rop="152"/>
+    </function>
+
+    <function name="EvalCoord2d" offset="232" vectorequiv="EvalCoord2dv" static_dispatch="false">
+        <param name="u" type="GLdouble"/>
+        <param name="v" type="GLdouble"/>
+    </function>
+
+    <function name="EvalCoord2dv" offset="233" static_dispatch="false">
+        <param name="u" type="const GLdouble *" count="2"/>
+        <glx rop="153"/>
+    </function>
+
+    <function name="EvalCoord2f" offset="234" vectorequiv="EvalCoord2fv" static_dispatch="false">
+        <param name="u" type="GLfloat"/>
+        <param name="v" type="GLfloat"/>
+    </function>
+
+    <function name="EvalCoord2fv" offset="235" static_dispatch="false">
+        <param name="u" type="const GLfloat *" count="2"/>
+        <glx rop="154"/>
+    </function>
+
+    <function name="EvalMesh1" offset="236" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <param name="i1" type="GLint"/>
+        <param name="i2" type="GLint"/>
+        <glx rop="155"/>
+    </function>
+
+    <function name="EvalPoint1" offset="237" static_dispatch="false">
+        <param name="i" type="GLint"/>
+        <glx rop="156"/>
+    </function>
+
+    <function name="EvalMesh2" offset="238" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <param name="i1" type="GLint"/>
+        <param name="i2" type="GLint"/>
+        <param name="j1" type="GLint"/>
+        <param name="j2" type="GLint"/>
+        <glx rop="157"/>
+    </function>
+
+    <function name="EvalPoint2" offset="239" static_dispatch="false">
+        <param name="i" type="GLint"/>
+        <param name="j" type="GLint"/>
+        <glx rop="158"/>
+    </function>
+
+    <!--function name="AlphaFunc" offset="240" static_dispatch="false">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLclampf"/>
+        <glx rop="159"/>
+    </function>
+
+    <function name="BlendFunc" offset="241" static_dispatch="false">
+        <param name="sfactor" type="GLenum"/>
+        <param name="dfactor" type="GLenum"/>
+        <glx rop="160"/>
+    </function>
+
+    <function name="LogicOp" offset="242" static_dispatch="false">
+        <param name="opcode" type="GLenum"/>
+        <glx rop="161"/>
+    </function>
+
+    <function name="StencilFunc" offset="243" static_dispatch="false">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLint"/>
+        <param name="mask" type="GLuint"/>
+        <glx rop="162"/>
+    </function>
+
+    <function name="StencilOp" offset="244" static_dispatch="false">
+        <param name="fail" type="GLenum"/>
+        <param name="zfail" type="GLenum"/>
+        <param name="zpass" type="GLenum"/>
+        <glx rop="163"/>
+    </function>
+
+    <function name="DepthFunc" offset="245" static_dispatch="false">
+        <param name="func" type="GLenum"/>
+        <glx rop="164"/>
+    </function-->
+
+    <function name="PixelZoom" offset="246" static_dispatch="false">
+        <param name="xfactor" type="GLfloat"/>
+        <param name="yfactor" type="GLfloat"/>
+        <glx rop="165"/>
+    </function>
+
+    <function name="PixelTransferf" offset="247" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="166"/>
+    </function>
+
+    <function name="PixelTransferi" offset="248" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="167"/>
+    </function>
+
+    <function name="PixelStoref" offset="249" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx sop="109" handcode="client"/>
+    </function>
+
+    <!--function name="PixelStorei" offset="250" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx sop="110" handcode="client"/>
+    </function-->
+
+    <function name="PixelMapfv" offset="251" static_dispatch="false">
+        <param name="map" type="GLenum"/>
+        <param name="mapsize" type="GLsizei" counter="true"/>
+        <param name="values" type="const GLfloat *" count="mapsize"/>
+        <glx rop="168" large="true"/>
+    </function>
+
+    <function name="PixelMapuiv" offset="252" static_dispatch="false">
+        <param name="map" type="GLenum"/>
+        <param name="mapsize" type="GLsizei" counter="true"/>
+        <param name="values" type="const GLuint *" count="mapsize"/>
+        <glx rop="169" large="true"/>
+    </function>
+
+    <function name="PixelMapusv" offset="253" static_dispatch="false">
+        <param name="map" type="GLenum"/>
+        <param name="mapsize" type="GLsizei" counter="true"/>
+        <param name="values" type="const GLushort *" count="mapsize"/>
+        <glx rop="170" large="true"/>
+    </function>
+
+    <function name="ReadBuffer" offset="254" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="171"/>
+    </function>
+
+    <function name="CopyPixels" offset="255" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <glx rop="172"/>
+    </function>
+
+    <!--function name="ReadPixels" offset="256" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="GLvoid *" output="true"  img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
+        <glx sop="111"/>
+    </function-->
+
+    <function name="DrawPixels" offset="257" static_dispatch="false">
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0" img_pad_dimensions="false"/>
+        <glx rop="173" large="true"/>
+    </function>
+
+    <!--function name="GetBooleanv" offset="258" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
+        <glx sop="112" handcode="client"/>
+    </function-->
+
+    <function name="GetClipPlane" offset="259" static_dispatch="false">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="GLdouble *" output="true" count="4"/>
+        <glx sop="113" always_array="true"/>
+    </function>
+
+    <function name="GetDoublev" offset="260" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
+        <glx sop="114" handcode="client"/>
+    </function>
+
+    <!--function name="GetError" offset="261" static_dispatch="false">
+        <return type="GLenum"/>
+        <glx sop="115" handcode="client"/>
+    </function>
+
+    <function name="GetFloatv" offset="262" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="116" handcode="client"/>
+    </function>
+
+    <function name="GetIntegerv" offset="263" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="117" handcode="client"/>
+    </function>
+
+    <function name="GetLightfv" offset="264" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="118"/>
+    </function-->
+
+    <function name="GetLightiv" offset="265" static_dispatch="false">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="119"/>
+    </function>
+
+    <function name="GetMapdv" offset="266" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="query" type="GLenum"/>
+        <param name="v" type="GLdouble *" output="true" variable_param="target query"/>
+        <glx sop="120"/>
+    </function>
+
+    <function name="GetMapfv" offset="267" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="query" type="GLenum"/>
+        <param name="v" type="GLfloat *" output="true" variable_param="target query"/>
+        <glx sop="121"/>
+    </function>
+
+    <function name="GetMapiv" offset="268" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="query" type="GLenum"/>
+        <param name="v" type="GLint *" output="true" variable_param="target query"/>
+        <glx sop="122"/>
+    </function>
+
+    <!--function name="GetMaterialfv" offset="269" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="123"/>
+    </function-->
+
+    <function name="GetMaterialiv" offset="270" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="124"/>
+    </function>
+
+    <function name="GetPixelMapfv" offset="271" static_dispatch="false">
+        <param name="map" type="GLenum"/>
+        <param name="values" type="GLfloat *" output="true" variable_param="map"/>
+        <glx sop="125"/>
+    </function>
+
+    <function name="GetPixelMapuiv" offset="272" static_dispatch="false">
+        <param name="map" type="GLenum"/>
+        <param name="values" type="GLuint *" output="true" variable_param="map"/>
+        <glx sop="126"/>
+    </function>
+
+    <function name="GetPixelMapusv" offset="273" static_dispatch="false">
+        <param name="map" type="GLenum"/>
+        <param name="values" type="GLushort *" output="true" variable_param="map"/>
+        <glx sop="127"/>
+    </function>
+
+    <function name="GetPolygonStipple" offset="274" static_dispatch="false">
+        <param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/>
+        <glx sop="128"/>
+    </function>
+
+    <!--function name="GetString" offset="275" static_dispatch="false">
+        <param name="name" type="GLenum"/>
+        <return type="const GLubyte *"/>
+        <glx sop="129" handcode="true"/>
+    </function>
+
+    <function name="GetTexEnvfv" offset="276" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="130"/>
+    </function>
+
+    <function name="GetTexEnviv" offset="277" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="131"/>
+    </function-->
+
+    <function name="GetTexGendv" offset="278" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
+        <glx sop="132"/>
+    </function>
+
+    <!--function name="GetTexGenfv" offset="279" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="133"/>
+    </function>
+
+    <function name="GetTexGeniv" offset="280" static_dispatch="false">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="134"/>
+    </function-->
+
+    <function name="GetTexImage" offset="281" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type"/>
+        <glx sop="135" dimensions_in_reply="true"/>
+    </function>
+
+    <!--function name="GetTexParameterfv" offset="282" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="136"/>
+    </function>
+
+    <function name="GetTexParameteriv" offset="283" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="137"/>
+    </function-->
+
+    <function name="GetTexLevelParameterfv" offset="284" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="138"/>
+    </function>
+
+    <function name="GetTexLevelParameteriv" offset="285" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="139"/>
+    </function>
+
+    <!--function name="IsEnabled" offset="286" static_dispatch="false">
+        <param name="cap" type="GLenum"/>
+        <return type="GLboolean"/>
+        <glx sop="140" handcode="client"/>
+    </function-->
+
+    <function name="IsList" offset="287" static_dispatch="false">
+        <param name="list" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx sop="141"/>
+    </function>
+
+    <function name="DepthRange" offset="288" static_dispatch="false">
+        <param name="zNear" type="GLclampd"/>
+        <param name="zFar" type="GLclampd"/>
+        <glx rop="174"/>
+    </function>
+
+    <function name="Frustum" offset="289" static_dispatch="false">
+        <param name="left" type="GLdouble"/>
+        <param name="right" type="GLdouble"/>
+        <param name="bottom" type="GLdouble"/>
+        <param name="top" type="GLdouble"/>
+        <param name="zNear" type="GLdouble"/>
+        <param name="zFar" type="GLdouble"/>
+        <glx rop="175"/>
+    </function>
+
+    <!--function name="LoadIdentity" offset="290" static_dispatch="false">
+        <glx rop="176"/>
+    </function>
+
+    <function name="LoadMatrixf" offset="291" static_dispatch="false">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="177"/>
+    </function-->
+
+    <function name="LoadMatrixd" offset="292" static_dispatch="false">
+        <param name="m" type="const GLdouble *" count="16"/>
+        <glx rop="178"/>
+    </function>
+
+    <!--function name="MatrixMode" offset="293" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="179"/>
+    </function>
+
+    <function name="MultMatrixf" offset="294" static_dispatch="false">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="180"/>
+    </function-->
+
+    <function name="MultMatrixd" offset="295" static_dispatch="false">
+        <param name="m" type="const GLdouble *" count="16"/>
+        <glx rop="181"/>
+    </function>
+
+    <function name="Ortho" offset="296" static_dispatch="false">
+        <param name="left" type="GLdouble"/>
+        <param name="right" type="GLdouble"/>
+        <param name="bottom" type="GLdouble"/>
+        <param name="top" type="GLdouble"/>
+        <param name="zNear" type="GLdouble"/>
+        <param name="zFar" type="GLdouble"/>
+        <glx rop="182"/>
+    </function>
+
+    <!--function name="PopMatrix" offset="297" static_dispatch="false">
+        <glx rop="183"/>
+    </function>
+
+    <function name="PushMatrix" offset="298" static_dispatch="false">
+        <glx rop="184"/>
+    </function-->
+
+    <function name="Rotated" offset="299" static_dispatch="false">
+        <param name="angle" type="GLdouble"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <glx rop="185"/>
+    </function>
+
+    <!--function name="Rotatef" offset="300" static_dispatch="false">
+        <param name="angle" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="186"/>
+    </function-->
+
+    <function name="Scaled" offset="301" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <glx rop="187"/>
+    </function>
+
+    <!--function name="Scalef" offset="302" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="188"/>
+    </function-->
+
+    <function name="Translated" offset="303" static_dispatch="false">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <glx rop="189"/>
+    </function>
+
+    <!--function name="Translatef" offset="304" static_dispatch="false">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="190"/>
+    </function>
+
+    <function name="Viewport" offset="305" static_dispatch="false">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="191"/>
+    </function-->
+</category>
+
+<category name="1.1">
+    <function name="ArrayElement" offset="306" static_dispatch="false">
+        <param name="i" type="GLint"/>
+        <glx handcode="true"/>
+    </function>
+
+    <!--function name="ColorPointer" offset="308" static_dispatch="false">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DisableClientState" offset="309" static_dispatch="false">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DrawArrays" offset="310" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <glx rop="193" handcode="true"/>
+    </function>
+
+    <function name="DrawElements" offset="311" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function-->
+
+    <function name="EdgeFlagPointer" offset="312" static_dispatch="false">
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <!--function name="EnableClientState" offset="313" static_dispatch="false">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="GetPointerv" offset="329" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **" output="true"/>
+        <glx handcode="true"/>
+    </function-->
+
+    <function name="IndexPointer" offset="314" static_dispatch="false">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="InterleavedArrays" offset="317" static_dispatch="false">
+        <param name="format" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <!--function name="NormalPointer" offset="318" static_dispatch="false">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="TexCoordPointer" offset="320" static_dispatch="false">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="VertexPointer" offset="321" static_dispatch="false">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="PolygonOffset" offset="319" static_dispatch="false">
+        <param name="factor" type="GLfloat"/>
+        <param name="units" type="GLfloat"/>
+        <glx rop="192"/>
+    </function-->
+
+    <function name="CopyTexImage1D" offset="323" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <glx rop="4119"/>
+    </function>
+
+    <!--function name="CopyTexImage2D" offset="324" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <glx rop="4120"/>
+    </function-->
+
+    <function name="CopyTexSubImage1D" offset="325" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="4121"/>
+    </function>
+
+    <!--function name="CopyTexSubImage2D" offset="326" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4122"/>
+    </function-->
+
+    <function name="TexSubImage1D" offset="332" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_xoff="xoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4099" large="true"/>
+    </function>
+
+    <!--function name="TexSubImage2D" offset="333" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4100" large="true"/>
+    </function-->
+
+    <function name="AreTexturesResident" offset="322" static_dispatch="false">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <param name="residences" type="GLboolean *" output="true" count="n"/>
+        <return type="GLboolean"/>
+        <glx sop="143" handcode="client" always_array="true"/>
+    </function>
+
+    <!--function name="BindTexture" offset="307" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <glx rop="4117"/>
+    </function>
+
+    <function name="DeleteTextures" offset="327" static_dispatch="false">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <glx sop="144"/>
+    </function>
+
+    <function name="GenTextures" offset="328" static_dispatch="false">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="GLuint *" output="true" count="n"/>
+        <glx sop="145" always_array="true"/>
+    </function>
+
+    <function name="IsTexture" offset="330" static_dispatch="false">
+        <param name="texture" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx sop="146"/>
+    </function-->
+
+    <function name="PrioritizeTextures" offset="331" static_dispatch="false">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <param name="priorities" type="const GLclampf *" count="n"/>
+        <glx rop="4118"/>
+    </function>
+
+    <function name="Indexub" offset="315" vectorequiv="Indexubv" static_dispatch="false">
+        <param name="c" type="GLubyte"/>
+    </function>
+
+    <function name="Indexubv" offset="316" static_dispatch="false">
+        <param name="c" type="const GLubyte *" count="1"/>
+        <glx rop="194"/>
+    </function>
+
+    <function name="PopClientAttrib" offset="334" static_dispatch="false">
+        <glx handcode="true"/>
+    </function>
+
+    <function name="PushClientAttrib" offset="335" static_dispatch="false">
+        <param name="mask" type="GLbitfield"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<category name="1.2">
+    <!--function name="BlendColor" offset="336" static_dispatch="false">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+        <glx rop="4096"/>
+    </function>
+
+    <function name="BlendEquation" offset="337" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="4097"/>
+    </function-->
+
+    <function name="DrawRangeElements" offset="338" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <param name="start" type="GLuint"/>
+        <param name="end" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="ColorTable" offset="339" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="const GLvoid *" img_width="width" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
+        <glx rop="2053" large="true"/>
+    </function>
+
+    <function name="ColorTableParameterfv" offset="340" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="2054"/>
+    </function>
+
+    <function name="ColorTableParameteriv" offset="341" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="2055"/>
+    </function>
+
+    <function name="CopyColorTable" offset="342" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="2056"/>
+    </function>
+
+    <function name="GetColorTable" offset="343" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
+        <glx sop="147" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetColorTableParameterfv" offset="344" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="148"/>
+    </function>
+
+    <function name="GetColorTableParameteriv" offset="345" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="149"/>
+    </function>
+
+    <function name="ColorSubTable" offset="346" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="start" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="data" type="const GLvoid *" img_width="count" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
+        <glx rop="195" large="true"/>
+    </function>
+
+    <function name="CopyColorSubTable" offset="347" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="start" type="GLsizei"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="196"/>
+    </function>
+
+    <function name="ConvolutionFilter1D" offset="348" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4101" large="true"/>
+    </function>
+
+    <function name="ConvolutionFilter2D" offset="349" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4102" large="true"/>
+    </function>
+
+    <function name="ConvolutionParameterf" offset="350" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat"/>
+        <glx rop="4103"/>
+    </function>
+
+    <function name="ConvolutionParameterfv" offset="351" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="4104"/>
+    </function>
+
+    <function name="ConvolutionParameteri" offset="352" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint"/>
+        <glx rop="4105"/>
+    </function>
+
+    <function name="ConvolutionParameteriv" offset="353" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="4106"/>
+    </function>
+
+    <function name="CopyConvolutionFilter1D" offset="354" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="4107"/>
+    </function>
+
+    <function name="CopyConvolutionFilter2D" offset="355" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4108"/>
+    </function>
+
+    <function name="GetConvolutionFilter" offset="356" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/>
+        <glx sop="150" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetConvolutionParameterfv" offset="357" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="151"/>
+    </function>
+
+    <function name="GetConvolutionParameteriv" offset="358" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="152"/>
+    </function>
+
+    <function name="GetSeparableFilter" offset="359" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="row" type="GLvoid *" output="true"/>
+        <param name="column" type="GLvoid *" output="true"/>
+        <param name="span" type="GLvoid *" output="true"/>
+        <glx sop="153" handcode="true"/>
+    </function>
+
+    <function name="SeparableFilter2D" offset="360" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="row" type="const GLvoid *"/>
+        <param name="column" type="const GLvoid *"/>
+        <glx rop="4109" handcode="true"/>
+    </function>
+
+    <function name="GetHistogram" offset="361" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="reset" type="GLboolean"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
+        <glx sop="154" dimensions_in_reply="true" img_reset="reset"/>
+    </function>
+
+    <function name="GetHistogramParameterfv" offset="362" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="155"/>
+    </function>
+
+    <function name="GetHistogramParameteriv" offset="363" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="156"/>
+    </function>
+
+    <function name="GetMinmax" offset="364" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="reset" type="GLboolean"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/>
+        <glx sop="157" img_reset="reset"/>
+    </function>
+
+    <function name="GetMinmaxParameterfv" offset="365" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="158"/>
+    </function>
+
+    <function name="GetMinmaxParameteriv" offset="366" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="159"/>
+    </function>
+
+    <function name="Histogram" offset="367" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="sink" type="GLboolean"/>
+        <glx rop="4110"/>
+    </function>
+
+    <function name="Minmax" offset="368" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="sink" type="GLboolean"/>
+        <glx rop="4111"/>
+    </function>
+
+    <function name="ResetHistogram" offset="369" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <glx rop="4112"/>
+    </function>
+
+    <function name="ResetMinmax" offset="370" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <glx rop="4113"/>
+    </function>
+
+    <!--function name="TexImage3D" offset="371" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
+        <glx rop="4114" large="true"/>
+    </function>
+
+    <function name="TexSubImage3D" offset="372" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4115" large="true"/>
+    </function>
+
+    <function name="CopyTexSubImage3D" offset="373" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4123"/>
+    </function-->
+</category>
+
+<category name="GL_ARB_multitexture" number="1">
+    <!--function name="ActiveTextureARB" offset="374" static_dispatch="false">
+        <param name="texture" type="GLenum"/>
+        <glx rop="197"/>
+    </function>
+
+    <function name="ClientActiveTextureARB" offset="375" static_dispatch="false">
+        <param name="texture" type="GLenum"/>
+        <glx handcode="true"/>
+    </function-->
+
+    <function name="MultiTexCoord1dARB" offset="376" vectorequiv="MultiTexCoord1dvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord1dvARB" offset="377" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="1"/>
+        <glx rop="198"/>
+    </function>
+
+    <function name="MultiTexCoord1fARB" offset="378" vectorequiv="MultiTexCoord1fvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord1fvARB" offset="379" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="1"/>
+        <glx rop="199"/>
+    </function>
+
+    <function name="MultiTexCoord1iARB" offset="380" vectorequiv="MultiTexCoord1ivARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord1ivARB" offset="381" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="1"/>
+        <glx rop="200"/>
+    </function>
+
+    <function name="MultiTexCoord1sARB" offset="382" vectorequiv="MultiTexCoord1svARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord1svARB" offset="383" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="1"/>
+        <glx rop="201"/>
+    </function>
+
+    <function name="MultiTexCoord2dARB" offset="384" vectorequiv="MultiTexCoord2dvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord2dvARB" offset="385" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="202"/>
+    </function>
+
+    <function name="MultiTexCoord2fARB" offset="386" vectorequiv="MultiTexCoord2fvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord2fvARB" offset="387" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="203"/>
+    </function>
+
+    <function name="MultiTexCoord2iARB" offset="388" vectorequiv="MultiTexCoord2ivARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord2ivARB" offset="389" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="204"/>
+    </function>
+
+    <function name="MultiTexCoord2sARB" offset="390" vectorequiv="MultiTexCoord2svARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord2svARB" offset="391" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="205"/>
+    </function>
+
+    <function name="MultiTexCoord3dARB" offset="392" vectorequiv="MultiTexCoord3dvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord3dvARB" offset="393" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="206"/>
+    </function>
+
+    <function name="MultiTexCoord3fARB" offset="394" vectorequiv="MultiTexCoord3fvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord3fvARB" offset="395" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="207"/>
+    </function>
+
+    <function name="MultiTexCoord3iARB" offset="396" vectorequiv="MultiTexCoord3ivARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord3ivARB" offset="397" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="208"/>
+    </function>
+
+    <function name="MultiTexCoord3sARB" offset="398" vectorequiv="MultiTexCoord3svARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord3svARB" offset="399" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="209"/>
+    </function>
+
+    <function name="MultiTexCoord4dARB" offset="400" vectorequiv="MultiTexCoord4dvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+        <param name="q" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord4dvARB" offset="401" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="210"/>
+    </function>
+
+    <!--function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function-->
+
+    <function name="MultiTexCoord4fvARB" offset="403" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="211"/>
+    </function>
+
+    <function name="MultiTexCoord4iARB" offset="404" vectorequiv="MultiTexCoord4ivARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+        <param name="q" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord4ivARB" offset="405" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="212"/>
+    </function>
+
+    <function name="MultiTexCoord4sARB" offset="406" vectorequiv="MultiTexCoord4svARB" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+        <param name="q" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord4svARB" offset="407" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="213"/>
+    </function>
+</category>
+
+<xi:include href="../gen/APPLE_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/es_EXT.xml b/src/mapi/glapi/gen-es/es_EXT.xml
new file mode 100644 (file)
index 0000000..113d8d7
--- /dev/null
@@ -0,0 +1,125 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "../gen/gl_API.dtd">
+
+<!-- OpenGL ES extensions -->
+
+<OpenGLAPI>
+
+<category name="GL_OES_compressed_paletted_texture" number="6">
+    <enum name="PALETTE4_RGB8_OES"                        value="0x8B90"/>
+    <enum name="PALETTE4_RGBA8_OES"                       value="0x8B91"/>
+    <enum name="PALETTE4_R5_G6_B5_OES"                    value="0x8B92"/>
+    <enum name="PALETTE4_RGBA4_OES"                       value="0x8B93"/>
+    <enum name="PALETTE4_RGB5_A1_OES"                     value="0x8B94"/>
+    <enum name="PALETTE8_RGB8_OES"                        value="0x8B95"/>
+    <enum name="PALETTE8_RGBA8_OES"                       value="0x8B96"/>
+    <enum name="PALETTE8_R5_G6_B5_OES"                    value="0x8B97"/>
+    <enum name="PALETTE8_RGBA4_OES"                       value="0x8B98"/>
+    <enum name="PALETTE8_RGB5_A1_OES"                     value="0x8B99"/>
+</category>
+
+<!-- 23. GL_OES_EGL_image -->
+<xi:include href="../gen/OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<category name="GL_OES_depth24" number="24">
+    <enum name="DEPTH_COMPONENT24_OES"                    value="0x81A6"/>
+</category>
+
+<category name="GL_OES_depth32" number="25">
+    <enum name="DEPTH_COMPONENT32_OES"                    value="0x81A7"/>
+</category>
+
+<category name="GL_OES_element_index_uint" number="26">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_OES_fbo_render_mipmap" number="27">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_OES_mapbuffer" number="29">
+    <enum name="WRITE_ONLY_OES"                           value="0x88B9"/>
+    <enum name="BUFFER_ACCESS_OES"                        value="0x88BB"/>
+    <enum name="BUFFER_MAPPED_OES"                        value="0x88BC"/>
+    <enum name="BUFFER_MAP_POINTER_OES"                   value="0x88BD"/>
+
+    <function name="GetBufferPointervOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **"/>
+    </function>
+
+    <function name="MapBufferOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="access" type="GLenum"/>
+       <return type="GLvoid *"/>
+    </function>
+
+    <function name="UnmapBufferOES" offset="assign">
+        <param name="target" type="GLenum"/>
+       <return type="GLboolean"/>
+    </function>
+</category>
+
+<category name="GL_OES_rgb8_rgba8" number="30">
+    <enum name="RGB8_OES"                                 value="0x8051"/>
+    <enum name="RGBA8_OES"                                value="0x8058"/>
+</category>
+
+<category name="GL_OES_stencil1" number="31">
+    <enum name="STENCIL_INDEX1_OES"                       value="0x8D46"/>
+</category>
+
+<category name="GL_OES_stencil4" number="32">
+    <enum name="STENCIL_INDEX4_OES"                       value="0x8D47"/>
+</category>
+
+<category name="GL_OES_stencil8" number="33">
+    <enum name="STENCIL_INDEX8_OES"                       value="0x8D48"/>
+</category>
+
+<category name="GL_EXT_texture_filter_anisotropic" number="41">
+    <enum name="TEXTURE_MAX_ANISOTROPY_EXT"               value="0x84FE"/>
+    <enum name="MAX_TEXTURE_MAX_ANISOTROPY_EXT"           value="0x84FF"/>
+</category>
+
+<category name="GL_EXT_texture_compression_dxt1" number="49">
+    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
+</category>
+
+<category name="GL_EXT_texture_format_BGRA8888" number="51">
+    <enum name="BGRA_EXT"                              value="0x80E1"/>
+</category>
+
+<category name="GL_EXT_blend_minmax" number="65">
+    <enum name="MIN_EXT"                               value="0x8007"/>
+    <enum name="MAX_EXT"                               value="0x8008"/>
+</category>
+
+<category name="GL_EXT_read_format_bgra" number="66">
+    <enum name="BGRA_EXT"                              value="0x80E1"/>
+    <enum name="UNSIGNED_SHORT_4_4_4_4_REV_EXT"        value="0x8365"/>
+    <enum name="UNSIGNED_SHORT_1_5_5_5_REV_EXT"        value="0x8366"/>
+</category>
+
+<category name="GL_EXT_multi_draw_arrays" number="69">
+    <function name="MultiDrawArraysEXT" offset="assign">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint *"/> <!-- Spec bug. Should be const. -->
+        <param name="count" type="GLsizei *"/> <!-- Spec bug. Should be const. -->
+        <param name="primcount" type="GLsizei"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultiDrawElementsEXT" offset="assign">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="const GLsizei *"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid **"/>
+        <param name="primcount" type="GLsizei"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen-es/gl_compare.py b/src/mapi/glapi/gen-es/gl_compare.py
new file mode 100644 (file)
index 0000000..6b5e43b
--- /dev/null
@@ -0,0 +1,354 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# 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
+# IBM 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.
+
+import sys
+import os.path
+import getopt
+
+GLAPI = "../../glapi/gen"
+sys.path.append(GLAPI)
+
+import gl_XML
+import glX_XML
+
+class ApiSet(object):
+    def __init__(self, api, elts=["enum", "type", "function"]):
+        self.api = api
+        self.elts = elts
+
+    def _check_enum(self, e1, e2, strict=True):
+        if e1.name != e2.name:
+            raise ValueError("%s: name mismatch" % e1.name)
+        if e1.value != e2.value:
+            raise ValueError("%s: value 0x%04x != 0x%04x"
+                    % (e1.name, e1.value, e2.value))
+
+    def _check_type(self, t1, t2, strict=True):
+        if t1.name != t2.name:
+            raise ValueError("%s: name mismatch" % t1.name)
+        if t1.type_expr.string() != t2.type_expr.string():
+            raise ValueError("%s: type %s != %s"
+                    % (t1.name, t1.type_expr.string(), t2.type_expr.string()))
+
+    def _check_function(self, f1, f2, strict=True):
+        if f1.name != f2.name:
+            raise ValueError("%s: name mismatch" % f1.name)
+        if f1.return_type != f2.return_type:
+            raise ValueError("%s: return type %s != %s"
+                    % (f1.name, f1.return_type, f2.return_type))
+        # there might be padded parameters
+        if strict and len(f1.parameters) != len(f2.parameters):
+            raise ValueError("%s: parameter length %d != %d"
+                    % (f1.name, len(f1.parameters), len(f2.parameters)))
+        if f1.assign_offset != f2.assign_offset:
+            if ((f1.assign_offset and f2.offset < 0) or
+                (f2.assign_offset and f1.offset < 0)):
+                raise ValueError("%s: assign offset %d != %d"
+                        % (f1.name, f1.assign_offset, f2.assign_offset))
+        elif not f1.assign_offset:
+            if f1.offset != f2.offset:
+                raise ValueError("%s: offset %d != %d"
+                        % (f1.name, f1.offset, f2.offset))
+
+        if strict:
+            l1 = f1.entry_points
+            l2 = f2.entry_points
+            l1.sort()
+            l2.sort()
+            if l1 != l2:
+                raise ValueError("%s: entry points %s != %s"
+                        % (f1.name, l1, l2))
+
+            l1 = f1.static_entry_points
+            l2 = f2.static_entry_points
+            l1.sort()
+            l2.sort()
+            if l1 != l2:
+                raise ValueError("%s: static entry points %s != %s"
+                        % (f1.name, l1, l2))
+
+        pad = 0
+        for i in xrange(len(f1.parameters)):
+            p1 = f1.parameters[i]
+            p2 = f2.parameters[i + pad]
+
+            if not strict and p1.is_padding != p2.is_padding:
+                if p1.is_padding:
+                    pad -= 1
+                    continue
+                else:
+                    pad += 1
+                    p2 = f2.parameters[i + pad]
+
+            if strict and p1.name != p2.name:
+                raise ValueError("%s: parameter %d name %s != %s"
+                        % (f1.name, i, p1.name, p2.name))
+            if p1.type_expr.string() != p2.type_expr.string():
+                if (strict or
+                    # special case
+                    f1.name == "TexImage2D" and p1.name != "internalformat"):
+                    raise ValueError("%s: parameter %s type %s != %s"
+                            % (f1.name, p1.name, p1.type_expr.string(),
+                               p2.type_expr.string()))
+
+    def union(self, other):
+        union = gl_XML.gl_api(None)
+
+        if "enum" in self.elts:
+            union.enums_by_name = other.enums_by_name.copy()
+            for key, val in self.api.enums_by_name.iteritems():
+                if key not in union.enums_by_name:
+                    union.enums_by_name[key] = val
+                else:
+                    self._check_enum(val, other.enums_by_name[key])
+
+        if "type" in self.elts:
+            union.types_by_name = other.types_by_name.copy()
+            for key, val in self.api.types_by_name.iteritems():
+                if key not in union.types_by_name:
+                    union.types_by_name[key] = val
+                else:
+                    self._check_type(val, other.types_by_name[key])
+
+        if "function" in self.elts:
+            union.functions_by_name = other.functions_by_name.copy()
+            for key, val in self.api.functions_by_name.iteritems():
+                if key not in union.functions_by_name:
+                    union.functions_by_name[key] = val
+                else:
+                    self._check_function(val, other.functions_by_name[key])
+
+        return union
+
+    def intersection(self, other):
+        intersection = gl_XML.gl_api(None)
+
+        if "enum" in self.elts:
+            for key, val in self.api.enums_by_name.iteritems():
+                if key in other.enums_by_name:
+                    self._check_enum(val, other.enums_by_name[key])
+                    intersection.enums_by_name[key] = val
+
+        if "type" in self.elts:
+            for key, val in self.api.types_by_name.iteritems():
+                if key in other.types_by_name:
+                    self._check_type(val, other.types_by_name[key])
+                    intersection.types_by_name[key] = val
+
+        if "function" in self.elts:
+            for key, val in self.api.functions_by_name.iteritems():
+                if key in other.functions_by_name:
+                    self._check_function(val, other.functions_by_name[key])
+                    intersection.functions_by_name[key] = val
+
+        return intersection
+
+    def difference(self, other):
+        difference = gl_XML.gl_api(None)
+
+        if "enum" in self.elts:
+            for key, val in self.api.enums_by_name.iteritems():
+                if key not in other.enums_by_name:
+                    difference.enums_by_name[key] = val
+                else:
+                    self._check_enum(val, other.enums_by_name[key])
+
+        if "type" in self.elts:
+            for key, val in self.api.types_by_name.iteritems():
+                if key not in other.types_by_name:
+                    difference.types_by_name[key] = val
+                else:
+                    self._check_type(val, other.types_by_name[key])
+
+        if "function" in self.elts:
+            for key, val in self.api.functions_by_name.iteritems():
+                if key not in other.functions_by_name:
+                    difference.functions_by_name[key] = val
+                else:
+                    self._check_function(val, other.functions_by_name[key], False)
+
+        return difference
+
+def cmp_enum(e1, e2):
+    if e1.value < e2.value:
+        return -1
+    elif e1.value > e2.value:
+        return 1
+    else:
+        return 0
+
+def cmp_type(t1, t2):
+    return t1.size - t2.size
+
+def cmp_function(f1, f2):
+    if f1.name > f2.name:
+        return 1
+    elif f1.name < f2.name:
+        return -1
+    else:
+        return 0
+
+def spaces(n, str=""):
+    spaces = n - len(str)
+    if spaces < 1:
+        spaces = 1
+    return " " * spaces
+
+def output_enum(e, indent=0):
+    attrs = 'name="%s"' % e.name
+    if e.default_count > 0:
+        tab = spaces(37, attrs)
+        attrs += '%scount="%d"' % (tab, e.default_count)
+    tab = spaces(48, attrs)
+    val = "%04x" % e.value
+    val = "0x" + val.upper()
+    attrs += '%svalue="%s"' % (tab, val)
+
+    # no child
+    if not e.functions:
+        print '%s<enum %s/>' % (spaces(indent), attrs)
+        return
+
+    print '%s<enum %s>' % (spaces(indent), attrs)
+    for key, val in e.functions.iteritems():
+        attrs = 'name="%s"' % key
+        if val[0] != e.default_count:
+            attrs += ' count="%d"' % val[0]
+        if not val[1]:
+            attrs += ' mode="get"'
+
+        print '%s<size %s/>' % (spaces(indent * 2), attrs)
+
+    print '%s</enum>' % spaces(indent)
+
+def output_type(t, indent=0):
+    tab = spaces(16, t.name)
+    attrs = 'name="%s"%ssize="%d"' % (t.name, tab, t.size)
+    ctype = t.type_expr.string()
+    if ctype.find("unsigned") != -1:
+        attrs += ' unsigned="true"'
+    elif ctype.find("signed") == -1:
+        attrs += ' float="true"'
+    print '%s<type %s/>' % (spaces(indent), attrs)
+
+def output_function(f, indent=0):
+    attrs = 'name="%s"' % f.name
+    if f.offset > 0:
+        if f.assign_offset:
+            attrs += ' offset="assign"'
+        else:
+            attrs += ' offset="%d"' % f.offset
+    print '%s<function %s>' % (spaces(indent), attrs)
+
+    for p in f.parameters:
+        attrs = 'name="%s" type="%s"' \
+                % (p.name, p.type_expr.original_string)
+        print '%s<param %s/>' % (spaces(indent * 2), attrs)
+    if f.return_type != "void":
+        attrs = 'type="%s"' % f.return_type
+        print '%s<return %s/>' % (spaces(indent * 2), attrs)
+
+    print '%s</function>' % spaces(indent)
+
+def output_category(api, indent=0):
+    enums = api.enums_by_name.values()
+    enums.sort(cmp_enum)
+    types = api.types_by_name.values()
+    types.sort(cmp_type)
+    functions = api.functions_by_name.values()
+    functions.sort(cmp_function)
+
+    for e in enums:
+        output_enum(e, indent)
+    if enums and types:
+        print
+    for t in types:
+        output_type(t, indent)
+    if enums or types:
+        print
+    for f in functions:
+        output_function(f, indent)
+        if f != functions[-1]:
+            print
+
+def is_api_empty(api):
+    return bool(not api.enums_by_name and
+                not api.types_by_name and
+                not api.functions_by_name)
+
+def show_usage(ops):
+    print "Usage: %s [-k elts] <%s> <file1> <file2>" % (sys.argv[0], "|".join(ops))
+    print "    -k elts   A comma separated string of types of elements to"
+    print "              skip.  Possible types are enum, type, and function."
+    sys.exit(1)
+
+def main():
+    ops = ["union", "intersection", "difference"]
+    elts = ["enum", "type", "function"]
+
+    try:
+        options, args = getopt.getopt(sys.argv[1:], "k:")
+    except Exception, e:
+        show_usage(ops)
+
+    if len(args) != 3:
+        show_usage(ops)
+    op, file1, file2 = args
+    if op not in ops:
+        show_usage(ops)
+
+    skips = []
+    for opt, val in options:
+        if opt == "-k":
+            skips = val.split(",")
+
+    for elt in skips:
+        try:
+            elts.remove(elt)
+        except ValueError:
+            show_usage(ops)
+
+    api1 = gl_XML.parse_GL_API(file1, glX_XML.glx_item_factory())
+    api2 = gl_XML.parse_GL_API(file2, glX_XML.glx_item_factory())
+
+    set = ApiSet(api1, elts)
+    func = getattr(set, op)
+    result = func(api2)
+
+    if not is_api_empty(result):
+        cat_name = "%s_of_%s_and_%s" \
+                % (op, os.path.basename(file1), os.path.basename(file2))
+
+        print '<?xml version="1.0"?>'
+        print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI
+        print
+        print '<OpenGLAPI>'
+        print
+        print '<category name="%s">' % (cat_name)
+        output_category(result, 4)
+        print '</category>'
+        print
+        print '</OpenGLAPI>'
+
+if __name__ == "__main__":
+    main()
diff --git a/src/mapi/glapi/gen-es/gl_parse_header.py b/src/mapi/glapi/gen-es/gl_parse_header.py
new file mode 100644 (file)
index 0000000..5382eba
--- /dev/null
@@ -0,0 +1,450 @@
+#!/usr/bin/python
+#
+# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
+#
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# 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
+# IBM 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.
+
+import sys
+import os.path
+import getopt
+import re
+
+GLAPI = "../../glapi/gen"
+sys.path.append(GLAPI)
+
+class HeaderParser(object):
+    """Parser for GL header files."""
+
+    def __init__(self, verbose=0):
+        # match #if and #ifdef
+        self.IFDEF = re.compile('#\s*if(n?def\s+(?P<ifdef>\w+)|\s+(?P<if>.+))')
+        # match #endif
+        self.ENDIF = re.compile('#\s*endif')
+        # match typedef abc def;
+        self.TYPEDEF = re.compile('typedef\s+(?P<from>[\w ]+)\s+(?P<to>\w+);')
+        # match #define XYZ VAL
+        self.DEFINE = re.compile('#\s*define\s+(?P<key>\w+)(?P<value>\s+[\w"]*)?')
+        # match GLAPI
+        self.GLAPI = re.compile('^GL_?API(CALL)?\s+(?P<return>[\w\s*]+[\w*])\s+(GL)?_?APIENTRY\s+(?P<name>\w+)\s*\((?P<params>[\w\s(,*\[\])]+)\)\s*;')
+
+        self.split_params = re.compile('\s*,\s*')
+        self.split_ctype = re.compile('(\W)')
+        # ignore GL_VERSION_X_Y
+        self.ignore_enum = re.compile('GL(_ES)?_VERSION(_ES_C[ML])?_\d_\d')
+
+        self.verbose = verbose
+        self._reset()
+
+    def _reset(self):
+        """Reset to initial state."""
+        self.ifdef_levels = []
+        self.need_char = False
+
+    # use typeexpr?
+    def _format_ctype(self, ctype, fix=True):
+        """Format a ctype string, optionally fix it."""
+        # split the type string
+        tmp = self.split_ctype.split(ctype)
+        tmp = [s for s in tmp if s and s != " "]
+
+        pretty = ""
+        for i in xrange(len(tmp)):
+            # add missing GL prefix
+            if (fix and tmp[i] != "const" and tmp[i] != "*" and
+                not tmp[i].startswith("GL")):
+                tmp[i] = "GL" + tmp[i]
+
+            if i == 0:
+                pretty = tmp[i]
+            else:
+                sep = " "
+                if tmp[i - 1] == "*":
+                    sep = ""
+                pretty += sep + tmp[i]
+        return pretty
+
+    # use typeexpr?
+    def _get_ctype_attrs(self, ctype):
+        """Get the attributes of a ctype."""
+        is_float = (ctype.find("float") != -1 or ctype.find("double") != -1)
+        is_signed = not (ctype.find("unsigned")  != -1)
+
+        size = 0
+        if ctype.find("char") != -1:
+            size = 1
+        elif ctype.find("short") != -1:
+            size = 2
+        elif ctype.find("int") != -1:
+            size = 4
+        elif is_float:
+            if ctype.find("float") != -1:
+                size = 4
+            else:
+                size = 8
+
+        return (size, is_float, is_signed)
+
+    def _parse_define(self, line):
+        """Parse a #define line for an <enum>."""
+        m = self.DEFINE.search(line)
+        if not m:
+            if self.verbose and line.find("#define") >= 0:
+                print "ignore %s" % (line)
+            return None
+
+        key = m.group("key").strip()
+        val = m.group("value").strip()
+
+        # enum must begin with GL_ and be all uppercase
+        if ((not (key.startswith("GL_") and key.isupper())) or
+            (self.ignore_enum.match(key) and val == "1")):
+            if self.verbose:
+                print "ignore enum %s" % (key)
+            return None
+
+        return (key, val)
+
+    def _parse_typedef(self, line):
+        """Parse a typedef line for a <type>."""
+        m = self.TYPEDEF.search(line)
+        if not m:
+            if self.verbose and line.find("typedef") >= 0:
+                print "ignore %s" % (line)
+            return None
+
+        f = m.group("from").strip()
+        t = m.group("to").strip()
+        if not t.startswith("GL"):
+            if self.verbose:
+                print "ignore type %s" % (t)
+            return None
+        attrs = self._get_ctype_attrs(f)
+
+        return (f, t, attrs)
+
+    def _parse_gl_api(self, line):
+        """Parse a GLAPI line for a <function>."""
+        m = self.GLAPI.search(line)
+        if not m:
+            if self.verbose and line.find("APIENTRY") >= 0:
+                print "ignore %s" % (line)
+            return None
+
+        rettype = m.group("return")
+        rettype = self._format_ctype(rettype)
+        if rettype == "GLvoid":
+            rettype = ""
+
+        name = m.group("name")
+
+        param_str = m.group("params")
+        chunks = self.split_params.split(param_str)
+        chunks = [s.strip() for s in chunks]
+        if len(chunks) == 1 and (chunks[0] == "void" or chunks[0] == "GLvoid"):
+            chunks = []
+
+        params = []
+        for c in chunks:
+            # split type and variable name
+            idx = c.rfind("*")
+            if idx < 0:
+                idx = c.rfind(" ")
+            if idx >= 0:
+                idx += 1
+                ctype = c[:idx]
+                var = c[idx:]
+            else:
+                ctype = c
+                var = "unnamed"
+
+            # convert array to pointer
+            idx = var.find("[")
+            if idx >= 0:
+                var = var[:idx]
+                ctype += "*"
+
+            ctype = self._format_ctype(ctype)
+            var = var.strip()
+
+            if not self.need_char and ctype.find("GLchar") >= 0:
+                self.need_char = True
+
+            params.append((ctype, var))
+
+        return (rettype, name, params)
+
+    def _change_level(self, line):
+        """Parse a #ifdef line and change level."""
+        m = self.IFDEF.search(line)
+        if m:
+            ifdef = m.group("ifdef")
+            if not ifdef:
+                ifdef = m.group("if")
+            self.ifdef_levels.append(ifdef)
+            return True
+        m = self.ENDIF.search(line)
+        if m:
+            self.ifdef_levels.pop()
+            return True
+        return False
+
+    def _read_header(self, header):
+        """Open a header file and read its contents."""
+        lines = []
+        try:
+            fp = open(header, "rb")
+            lines = fp.readlines()
+            fp.close()
+        except IOError, e:
+            print "failed to read %s: %s" % (header, e)
+        return lines
+
+    def _cmp_enum(self, enum1, enum2):
+        """Compare two enums."""
+        # sort by length of the values as strings
+        val1 = enum1[1]
+        val2 = enum2[1]
+        ret = len(val1) - len(val2)
+        # sort by the values
+        if not ret:
+            val1 = int(val1, 16)
+            val2 = int(val2, 16)
+            ret = val1 - val2
+            # in case int cannot hold the result
+            if ret > 0:
+                ret = 1
+            elif ret < 0:
+                ret = -1
+        # sort by the names
+        if not ret:
+            if enum1[0] < enum2[0]:
+                ret = -1
+            elif enum1[0] > enum2[0]:
+                ret = 1
+        return ret
+
+    def _cmp_type(self, type1, type2):
+        """Compare two types."""
+        attrs1 = type1[2]
+        attrs2 = type2[2]
+        # sort by type size
+        ret = attrs1[0] - attrs2[0]
+        # float is larger
+        if not ret:
+            ret = attrs1[1] - attrs2[1]
+        # signed is larger
+        if not ret:
+            ret = attrs1[2] - attrs2[2]
+        # reverse
+        ret = -ret
+        return ret
+
+    def _cmp_function(self, func1, func2):
+        """Compare two functions."""
+        name1 = func1[1]
+        name2 = func2[1]
+        ret = 0
+        # sort by the names
+        if name1 < name2:
+            ret = -1
+        elif name1 > name2:
+            ret = 1
+        return ret
+
+    def _postprocess_dict(self, hdict):
+        """Post-process a header dict and return an ordered list."""
+        hlist = []
+        largest = 0
+        for key, cat in hdict.iteritems():
+            size = len(cat["enums"]) + len(cat["types"]) + len(cat["functions"])
+            # ignore empty category
+            if not size:
+                continue
+
+            cat["enums"].sort(self._cmp_enum)
+            # remove duplicates
+            dup = []
+            for i in xrange(1, len(cat["enums"])):
+                if cat["enums"][i] == cat["enums"][i - 1]:
+                    dup.insert(0, i)
+            for i in dup:
+                e = cat["enums"].pop(i)
+                if self.verbose:
+                    print "remove duplicate enum %s" % e[0]
+
+            cat["types"].sort(self._cmp_type)
+            cat["functions"].sort(self._cmp_function)
+
+            # largest category comes first
+            if size > largest:
+                hlist.insert(0, (key, cat))
+                largest = size
+            else:
+                hlist.append((key, cat))
+        return hlist
+
+    def parse(self, header):
+        """Parse a header file."""
+        self._reset()
+
+        if self.verbose:
+            print "Parsing %s" % (header)
+
+        hdict = {}
+        lines = self._read_header(header)
+        for line in lines:
+            if self._change_level(line):
+                continue
+
+            # skip until the first ifdef (i.e. __gl_h_)
+            if not self.ifdef_levels:
+                continue
+
+            cat_name = os.path.basename(header)
+            # check if we are in an extension
+            if (len(self.ifdef_levels) > 1 and
+                self.ifdef_levels[-1].startswith("GL_")):
+                cat_name = self.ifdef_levels[-1]
+
+            try:
+                cat = hdict[cat_name]
+            except KeyError:
+                cat = {
+                        "enums": [],
+                        "types": [],
+                        "functions": []
+                }
+                hdict[cat_name] = cat
+
+            key = "enums"
+            elem = self._parse_define(line)
+            if not elem:
+                key = "types"
+                elem = self._parse_typedef(line)
+            if not elem:
+                key = "functions"
+                elem = self._parse_gl_api(line)
+
+            if elem:
+                cat[key].append(elem)
+
+        if self.need_char:
+            if self.verbose:
+                print "define GLchar"
+            elem = self._parse_typedef("typedef char GLchar;")
+            cat["types"].append(elem)
+        return self._postprocess_dict(hdict)
+
+def spaces(n, str=""):
+    spaces = n - len(str)
+    if spaces < 1:
+        spaces = 1
+    return " " * spaces
+
+def output_xml(name, hlist):
+    """Output a parsed header in OpenGLAPI XML."""
+
+    for i in xrange(len(hlist)):
+        cat_name, cat = hlist[i]
+
+        print '<category name="%s">' % (cat_name)
+        indent = 4
+
+        for enum in cat["enums"]:
+            name = enum[0][3:]
+            value = enum[1]
+            tab = spaces(41, name)
+            attrs = 'name="%s"%svalue="%s"' % (name, tab, value)
+            print '%s<enum %s/>' % (spaces(indent), attrs)
+
+        if cat["enums"] and cat["types"]:
+            print
+
+        for type in cat["types"]:
+            ctype = type[0]
+            size, is_float, is_signed = type[2]
+
+            attrs = 'name="%s"' % (type[1][2:])
+            attrs += spaces(16, attrs) + 'size="%d"' % (size)
+            if is_float:
+                attrs += ' float="true"'
+            elif not is_signed:
+                attrs += ' unsigned="true"'
+
+            print '%s<type %s/>' % (spaces(indent), attrs)
+
+        for func in cat["functions"]:
+            print
+            ret = func[0]
+            name = func[1][2:]
+            params = func[2]
+
+            attrs = 'name="%s" offset="assign"' % name
+            print '%s<function %s>' % (spaces(indent), attrs)
+
+            for param in params:
+                attrs = 'name="%s" type="%s"' % (param[1], param[0])
+                print '%s<param %s/>' % (spaces(indent * 2), attrs)
+            if ret:
+                attrs = 'type="%s"' % ret
+                print '%s<return %s/>' % (spaces(indent * 2), attrs)
+
+            print '%s</function>' % spaces(indent)
+
+        print '</category>'
+        print
+
+def show_usage():
+    print "Usage: %s [-v] <header> ..." % sys.argv[0]
+    sys.exit(1)
+
+def main():
+    try:
+        args, headers = getopt.getopt(sys.argv[1:], "v")
+    except Exception, e:
+        show_usage()
+    if not headers:
+        show_usage()
+
+    verbose = 0
+    for arg in args:
+        if arg[0] == "-v":
+            verbose += 1
+
+    need_xml_header = True
+    parser = HeaderParser(verbose)
+    for h in headers:
+        h = os.path.abspath(h)
+        hlist = parser.parse(h)
+
+        if need_xml_header:
+            print '<?xml version="1.0"?>'
+            print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI
+            need_xml_header = False
+
+        print
+        print '<!-- %s -->' % (h)
+        print '<OpenGLAPI>'
+        print
+        output_xml(h, hlist)
+        print '</OpenGLAPI>'
+
+if __name__ == '__main__':
+    main()
diff --git a/src/mapi/glapi/gen/APPLE_object_purgeable.xml b/src/mapi/glapi/gen/APPLE_object_purgeable.xml
new file mode 100644 (file)
index 0000000..62fa64a
--- /dev/null
@@ -0,0 +1,37 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<category name="GL_APPLE_object_purgeable" number="371">
+    <enum name="RELEASED_APPLE"               value="0x8A19"/>
+    <enum name="VOLATILE_APPLE"               value="0x8A1A"/>
+    <enum name="RETAINED_APPLE"               value="0x8A1B"/>
+    <enum name="UNDEFINED_APPLE"              value="0x8A1C"/>
+    <enum name="PURGEABLE_APPLE"    count="1" value="0x8A1D">
+       <size name="GetObjectParameterivAPPLE" count="1" mode="get"/>
+    </enum>
+
+    <enum name="BUFFER_OBJECT_APPLE"          value="0x85B3"/>
+
+    <function name="ObjectPurgeableAPPLE" offset="assign">
+        <param name="objectType" type="GLenum"/>
+        <param name="name" type="GLuint"/>
+        <param name="option" type="GLenum"/>
+       <return type="GLenum"/>
+    </function>
+
+    <function name="ObjectUnpurgeableAPPLE" offset="assign">
+        <param name="objectType" type="GLenum"/>
+        <param name="name" type="GLuint"/>
+        <param name="option" type="GLenum"/>
+       <return type="GLenum"/>
+    </function>
+
+    <function name="GetObjectParameterivAPPLE" offset="assign">
+        <param name="objectType" type="GLenum"/>
+        <param name="name" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="value" type="GLint *" output="true"/>
+    </function>
+</category>
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/APPLE_vertex_array_object.xml b/src/mapi/glapi/gen/APPLE_vertex_array_object.xml
new file mode 100644 (file)
index 0000000..bd8427e
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<category name="GL_APPLE_vertex_array_object" number="273">
+    <enum name="VERTEX_ARRAY_BINDING_APPLE"               value="0x85B5"/>
+
+    <function name="BindVertexArrayAPPLE" offset="assign" static_dispatch="false">
+        <param name="array" type="GLuint"/>
+    </function>
+
+    <function name="DeleteVertexArraysAPPLE" offset="assign" static_dispatch="false">
+        <param name="n" type="GLsizei"/>
+       <param name="arrays" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="GenVertexArraysAPPLE" offset="assign" static_dispatch="false">
+        <param name="n" type="GLsizei"/>
+       <param name="arrays" type="GLuint *" count="n" output="true"/>
+    </function>
+
+    <function name="IsVertexArrayAPPLE" offset="assign" static_dispatch="false">
+        <param name="array" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+</category>
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_copy_buffer.xml b/src/mapi/glapi/gen/ARB_copy_buffer.xml
new file mode 100644 (file)
index 0000000..719816d
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_ARB_copy_buffer" number="59">
+
+    <enum name="COPY_READ_BUFFER"   value="0x8F36"/>
+    <enum name="COPY_WRITE_BUFFER"  value="0x8F37"/>
+
+    <function name="CopyBufferSubData" offset="assign">
+        <param name="readTarget" type="GLenum"/>
+        <param name="writeTarget" type="GLenum"/>
+        <param name="readOffset" type="GLintptr"/>
+        <param name="writeOffset" type="GLintptr"/>
+        <param name="size" type="GLsizeiptr"/>
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_depth_clamp.xml b/src/mapi/glapi/gen/ARB_depth_clamp.xml
new file mode 100644 (file)
index 0000000..157c9a8
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_ARB_depth_clamp" number="61">
+    <enum name="DEPTH_CLAMP" count="1"  value="0x864F">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml b/src/mapi/glapi/gen/ARB_draw_elements_base_vertex.xml
new file mode 100644 (file)
index 0000000..f4067f4
--- /dev/null
@@ -0,0 +1,40 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_ARB_draw_elements_base_vertex" number="62">
+
+    <function name="DrawElementsBaseVertex" offset="assign">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <param name="basevertex" type="GLint"/>
+    </function>
+
+    <function name="DrawRangeElementsBaseVertex" offset="assign">
+        <param name="mode" type="GLenum"/>
+        <param name="start" type="GLuint"/>
+        <param name="end" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <param name="basevertex" type="GLint"/>
+    </function>
+
+    <function name="MultiDrawElementsBaseVertex" offset="assign">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="const GLsizei *"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid **"/>
+        <param name="primcount" type="GLsizei"/>
+        <param name="basevertex" type="const GLint *"/>
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_draw_instanced.xml b/src/mapi/glapi/gen/ARB_draw_instanced.xml
new file mode 100644 (file)
index 0000000..5741a58
--- /dev/null
@@ -0,0 +1,69 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="3.1">
+
+  <function name="DrawArraysInstanced" offset="assign">
+    <param name="mode" type="GLenum"/>
+    <param name="first" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+  <function name="DrawElementsInstanced" offset="assign">
+    <param name="mode" type="GLenum"/>
+    <param name="count" type="GLsizei"/>
+    <param name="type" type="GLenum"/>
+    <param name="indices" type="const GLvoid *"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+</category>
+
+
+<category name="GL_ARB_draw_instanced" number="44">
+
+  <function name="DrawArraysInstancedARB" alias="DrawArraysInstanced">
+    <param name="mode" type="GLenum"/>
+    <param name="first" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+  <function name="DrawElementsInstancedARB" alias="DrawElementsInstanced">
+    <param name="mode" type="GLenum"/>
+    <param name="count" type="GLsizei"/>
+    <param name="type" type="GLenum"/>
+    <param name="indices" type="const GLvoid *"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+</category>
+
+
+<category name="GL_EXT_draw_instanced" number="327">
+
+  <function name="DrawArraysInstancedEXT"  alias="DrawArraysInstanced">
+    <param name="mode" type="GLenum"/>
+    <param name="first" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+  <function name="DrawElementsInstancedEXT" alias="DrawElementsInstanced">
+    <param name="mode" type="GLenum"/>
+    <param name="count" type="GLsizei"/>
+    <param name="type" type="GLenum"/>
+    <param name="indices" type="const GLvoid *"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+</category>
+
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_framebuffer_object.xml b/src/mapi/glapi/gen/ARB_framebuffer_object.xml
new file mode 100644 (file)
index 0000000..e6bdcd6
--- /dev/null
@@ -0,0 +1,275 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+<category name="GL_ARB_framebuffer_object" number="45">
+    <enum name="FRAMEBUFFER"                              value="0x8D40"/>
+    <enum name="READ_FRAMEBUFFER"                         value="0x8CA8"/>
+    <enum name="DRAW_FRAMEBUFFER"                         value="0x8CA9"/>
+
+    <enum name="RENDERBUFFER"                             value="0x8D41"/>
+
+    <enum name="STENCIL_INDEX1"                           value="0x8D46"/>
+    <enum name="STENCIL_INDEX4"                           value="0x8D47"/>
+    <enum name="STENCIL_INDEX8"                           value="0x8D48"/>
+    <enum name="STENCIL_INDEX16"                          value="0x8D49"/>
+
+    <enum name="RENDERBUFFER_WIDTH"              value="0x8D42"/>
+    <enum name="RENDERBUFFER_HEIGHT"             value="0x8D43"/>
+    <enum name="RENDERBUFFER_INTERNAL_FORMAT"    value="0x8D44"/>
+    <enum name="RENDERBUFFER_RED_SIZE"           value="0x8D50"/>
+    <enum name="RENDERBUFFER_GREEN_SIZE"         value="0x8D51"/>
+    <enum name="RENDERBUFFER_BLUE_SIZE"          value="0x8D52"/>
+    <enum name="RENDERBUFFER_ALPHA_SIZE"         value="0x8D53"/>
+    <enum name="RENDERBUFFER_DEPTH_SIZE"         value="0x8D54"/>
+    <enum name="RENDERBUFFER_STENCIL_SIZE"       value="0x8D55"/>
+    <enum name="RENDERBUFFER_SAMPLES"            value="0x8CAB"/>
+
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" count="1" value="0x8CD0">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" count="1" value="0x8CD1">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" count="1" value="0x8CD2">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" count="1" value="0x8CD3">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER" count="1" value="0x8CD4">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING" count="1" value="0x8210">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE" count="1" value="0x8211">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_RED_SIZE" count="1" value="0x8212">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE" count="1" value="0x8213">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE" count="1" value="0x8214">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE" count="1" value="0x8215">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE" count="1" value="0x8216">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE" count="1" value="0x8217">
+        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
+    </enum>
+
+    <enum name="SRGB"                                      value="0x8C40"/>
+    <enum name="UNSIGNED_NORMALIZED"                       value="0x8C17"/>
+    <enum name="FRAMEBUFFER_DEFAULT"                       value="0x8218"/>
+    <enum name="INDEX"                                     value="0x8222"/>
+
+    <enum name="COLOR_ATTACHMENT0"                         value="0x8CE0"/>
+    <enum name="COLOR_ATTACHMENT1"                         value="0x8CE1"/>
+    <enum name="COLOR_ATTACHMENT2"                         value="0x8CE2"/>
+    <enum name="COLOR_ATTACHMENT3"                         value="0x8CE3"/>
+    <enum name="COLOR_ATTACHMENT4"                         value="0x8CE4"/>
+    <enum name="COLOR_ATTACHMENT5"                         value="0x8CE5"/>
+    <enum name="COLOR_ATTACHMENT6"                         value="0x8CE6"/>
+    <enum name="COLOR_ATTACHMENT7"                         value="0x8CE7"/>
+    <enum name="COLOR_ATTACHMENT8"                         value="0x8CE8"/>
+    <enum name="COLOR_ATTACHMENT9"                         value="0x8CE9"/>
+    <enum name="COLOR_ATTACHMENT10"                        value="0x8CEA"/>
+    <enum name="COLOR_ATTACHMENT11"                        value="0x8CEB"/>
+    <enum name="COLOR_ATTACHMENT12"                        value="0x8CEC"/>
+    <enum name="COLOR_ATTACHMENT13"                        value="0x8CED"/>
+    <enum name="COLOR_ATTACHMENT14"                        value="0x8CEE"/>
+    <enum name="COLOR_ATTACHMENT15"                        value="0x8CEF"/>
+    <enum name="DEPTH_ATTACHMENT"                          value="0x8D00"/>
+    <enum name="STENCIL_ATTACHMENT"                        value="0x8D20"/>
+    <enum name="DEPTH_STENCIL_ATTACHMENT"                  value="0x821A"/>
+
+    <enum name="MAX_SAMPLES"                     count="1" value="0x8D57">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="FRAMEBUFFER_COMPLETE"                      value="0x8CD5"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT"         value="0x8CD6"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" value="0x8CD7"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"        value="0x8CDB"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER"        value="0x8CDC"/>
+    <enum name="FRAMEBUFFER_UNSUPPORTED"                   value="0x8CDD"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"        value="0x8D56"/>
+    <enum name="FRAMEBUFFER_UNDEFINED"                     value="0x8219"/>
+
+    <enum name="FRAMEBUFFER_BINDING"             count="1" value="0x8CA6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_FRAMEBUFFER_BINDING"        count="1" value="0x8CA6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="READ_FRAMEBUFFER_BINDING"        count="1" value="0x8CAA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RENDERBUFFER_BINDING"            count="1" value="0x8CA7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_COLOR_ATTACHMENTS"           count="1" value="0x8CDF">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_RENDERBUFFER_SIZE"           count="1" value="0x84E8">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="INVALID_FRAMEBUFFER_OPERATION"            value="0x0506"/>
+
+    <enum name="DEPTH_STENCIL"                            value="0x84F9"/>
+
+    <enum name="UNSIGNED_INT_24_8"                        value="0x84FA"/>
+
+    <enum name="DEPTH24_STENCIL8"                         value="0x88F0"/>
+
+    <enum name="TEXTURE_STENCIL_SIZE"          count="1"  value="0x88F1">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+
+
+
+    <function name="IsRenderbuffer" alias="IsRenderbufferEXT">
+        <param name="renderbuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+
+    <function name="BindRenderbuffer" alias="BindRenderbufferEXT">
+        <param name="target" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+    </function>
+
+    <function name="DeleteRenderbuffers" alias="DeleteRenderbuffersEXT">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="GenRenderbuffers" alias="GenRenderbuffersEXT">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
+    </function>
+
+    <function name="RenderbufferStorage" alias="RenderbufferStorageEXT">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+    </function>
+
+    <function name="RenderbufferStorageMultisample" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="samples" type="GLsizei"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4331"/>
+    </function>
+
+    <function name="GetRenderbufferParameteriv" alias="GetRenderbufferParameterivEXT">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="IsFramebuffer" alias="IsFramebufferEXT">
+        <param name="framebuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+
+    <function name="BindFramebuffer" alias="BindFramebufferEXT">
+        <param name="target" type="GLenum"/>
+        <param name="framebuffer" type="GLuint"/>
+    </function>
+
+    <function name="DeleteFramebuffers" alias="DeleteFramebuffersEXT">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="const GLuint *" count="n"/>
+    </function>
+
+    <function name="GenFramebuffers" alias="GenFramebuffersEXT">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
+    </function>
+
+    <function name="CheckFramebufferStatus" alias="CheckFramebufferStatusEXT">
+        <param name="target" type="GLenum"/>
+       <return type="GLenum"/>
+    </function>
+
+    <function name="FramebufferTexture1D" alias="FramebufferTexture1DEXT">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+    </function>
+
+    <function name="FramebufferTexture2D" alias="FramebufferTexture2DEXT">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+    </function>
+
+    <function name="FramebufferTexture3D" alias="FramebufferTexture3DEXT">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+    </function>
+
+    <function name="FramebufferTextureLayer" alias="FramebufferTextureLayerEXT">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+        <param name="layer" type="GLint"/>
+    </function>
+
+    <function name="FramebufferRenderbuffer" alias="FramebufferRenderbufferEXT">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="renderbuffertarget" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+    </function>
+
+    <function name="GetFramebufferAttachmentParameteriv" alias="GetFramebufferAttachmentParameterivEXT">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="BlitFramebuffer" alias="BlitFramebufferEXT">
+        <param name="srcX0" type="GLint"/>
+        <param name="srcY0" type="GLint"/>
+        <param name="srcX1" type="GLint"/>
+        <param name="srcY1" type="GLint"/>
+        <param name="dstX0" type="GLint"/>
+        <param name="dstY0" type="GLint"/>
+        <param name="dstX1" type="GLint"/>
+        <param name="dstY1" type="GLint"/>
+        <param name="mask" type="GLbitfield"/>
+        <param name="filter" type="GLenum"/>
+    </function>
+
+    <function name="GenerateMipmap" alias="GenerateMipmapEXT">
+        <param name="target" type="GLenum"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_map_buffer_range.xml b/src/mapi/glapi/gen/ARB_map_buffer_range.xml
new file mode 100644 (file)
index 0000000..afcb9b6
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_ARB_map_buffer_range" number="50">
+
+    <enum name="MAP_READ_BIT"                value="0x0001"/>
+    <enum name="MAP_WRITE_BIT"               value="0x0002"/>
+    <enum name="MAP_INVALIDATE_RANGE_BIT"    value="0x0004"/>
+    <enum name="MAP_INVALIDATE_BUFFER_BIT"   value="0x0008"/>
+    <enum name="MAP_FLUSH_EXPLICIT_BIT"      value="0x0010"/>
+    <enum name="MAP_UNSYNCHRONIZED_BIT"      value="0x0020"/>
+
+    <function name="MapBufferRange" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptr"/>
+        <param name="length" type="GLsizeiptr"/>
+        <param name="access" type="GLbitfield"/>
+        <return type="GLvoid *"/>
+    </function>
+
+    <function name="FlushMappedBufferRange" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptr"/>
+        <param name="length" type="GLsizeiptr"/>
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_seamless_cube_map.xml b/src/mapi/glapi/gen/ARB_seamless_cube_map.xml
new file mode 100644 (file)
index 0000000..8dc827c
--- /dev/null
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<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>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_sync.xml b/src/mapi/glapi/gen/ARB_sync.xml
new file mode 100644 (file)
index 0000000..4e4eeba
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<category name="GL_ARB_sync" number="61">
+    <type name="int64"   size="8"                  glx_name="CARD64"/>
+    <type name="uint64"  size="8"  unsigned="true" glx_name="CARD64"/>
+    <type name="sync"    size="8"  unsigned="true" glx_name="CARD64"/>
+
+    <enum name="MAX_SERVER_WAIT_TIMEOUT"       count="1"  value="0x9111">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="OBJECT_TYPE"                   count="1"  value="0x9112">
+        <size name="GetSynciv" mode="get"/>
+    </enum>
+    <enum name="SYNC_CONDITION"                count="1"  value="0x9113">
+        <size name="GetSynciv" mode="get"/>
+    </enum>
+    <enum name="SYNC_STATUS"                   count="1"  value="0x9114">
+        <size name="GetSynciv" mode="get"/>
+    </enum>
+    <enum name="SYNC_FLAGS"                    count="1"  value="0x9115">
+        <size name="GetSynciv" mode="get"/>
+    </enum>
+
+    <enum name="SYNC_FENCE"                               value="0x9116"/>
+    <enum name="SYNC_GPU_COMMANDS_COMPLETE"               value="0x9117"/>
+    <enum name="UNSIGNALED"                               value="0x9118"/>
+    <enum name="SIGNALED"                                 value="0x9119"/>
+    <enum name="ALREADY_SIGNALED"                         value="0x911A"/>
+    <enum name="TIMEOUT_EXPIRED"                          value="0x911B"/>
+    <enum name="CONDITION_SATISFIED"                      value="0x911C"/>
+    <enum name="WAIT_FAILED"                              value="0x911D"/>
+
+    <enum name="SYNC_FLUSH_COMMANDS_BIT"                  value="0x00000001"/>
+
+    <!-- Not really an enum:
+    <enum name="TIMEOUT_IGNORED"                  value="0xFFFFFFFFFFFFFFFF"/>
+    -->
+
+
+    <function name="FenceSync" offset="assign">
+        <param name="condition" type="GLenum"/>
+        <param name="flags" type="GLbitfield"/>
+        <return type="GLsync"/>
+    </function>
+
+    <function name="IsSync" offset="assign">
+        <param name="sync" type="GLsync"/>
+       <return type="GLboolean"/>
+    </function>
+
+    <function name="DeleteSync" offset="assign">
+        <param name="sync" type="GLsync"/>
+    </function>
+
+    <function name="ClientWaitSync" offset="assign">
+        <param name="sync" type="GLsync"/>
+        <param name="flags" type="GLbitfield"/>
+       <param name="timeout" type="GLuint64"/>
+        <return type="GLenum"/>
+    </function>
+
+    <function name="WaitSync" offset="assign">
+        <param name="sync" type="GLsync"/>
+        <param name="flags" type="GLbitfield"/>
+       <param name="timeout" type="GLuint64"/>
+    </function>
+
+    <function name="GetInteger64v" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint64 *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetSynciv" offset="assign">
+        <param name="sync" type="GLsync"/>
+        <param name="pname" type="GLenum"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="values" type="GLint *" output="true" variable_param="pname"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/ARB_vertex_array_object.xml b/src/mapi/glapi/gen/ARB_vertex_array_object.xml
new file mode 100644 (file)
index 0000000..3b4ab64
--- /dev/null
@@ -0,0 +1,34 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_ARB_vertex_array_object" number="54">
+
+    <enum name="VERTEX_ARRAY_BINDING" value="0x85B5"/>
+
+    <function name="BindVertexArray" offset="assign">
+        <param name="array" type="GLuint"/>
+    </function>
+
+    <function name="DeleteVertexArrays" alias="DeleteVertexArraysAPPLE">
+        <param name="n" type="GLsizei"/>
+        <param name="arrays" type="const GLuint *"/>
+    </function>
+
+    <function name="GenVertexArrays" offset="assign">
+        <param name="n" type="GLsizei"/>
+        <param name="arrays" type="GLuint *"/>
+    </function>
+
+    <function name="IsVertexArray" alias="IsVertexArrayAPPLE">
+        <param name="array" type="GLuint"/>
+        <return type="GLboolean"/>
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_draw_buffers2.xml b/src/mapi/glapi/gen/EXT_draw_buffers2.xml
new file mode 100644 (file)
index 0000000..efbe61f
--- /dev/null
@@ -0,0 +1,49 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_EXT_draw_buffers2" number="340">
+
+    <function name="ColorMaskIndexedEXT" offset="assign">
+       <param name="buf" type="GLuint"/>
+       <param name="r" type="GLboolean"/>
+       <param name="g" type="GLboolean"/>
+       <param name="b" type="GLboolean"/>
+       <param name="a" type="GLboolean"/>
+    </function>
+
+    <function name="GetBooleanIndexedvEXT" offset="assign">
+        <param name="value" type="GLenum"/>
+       <param name="index" type="GLuint"/>
+       <param name="data" type="GLboolean *"/>
+    </function>
+
+    <function name="GetIntegerIndexedvEXT" offset="assign">
+        <param name="value" type="GLenum"/>
+       <param name="index" type="GLuint"/>
+       <param name="data" type="GLint *"/>
+    </function>
+
+    <function name="EnableIndexedEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+       <param name="index" type="GLuint"/>
+    </function>
+
+    <function name="DisableIndexedEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+       <param name="index" type="GLuint"/>
+    </function>
+
+    <function name ="IsEnabledIndexedEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+       <param name="index" type="GLuint"/>
+       <return type="GLboolean"/>
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_framebuffer_object.xml b/src/mapi/glapi/gen/EXT_framebuffer_object.xml
new file mode 100644 (file)
index 0000000..4f418f7
--- /dev/null
@@ -0,0 +1,235 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<category name="GL_EXT_framebuffer_object" number="310">
+    <enum name="FRAMEBUFFER_EXT"                          value="0x8D40"/>
+    <enum name="RENDERBUFFER_EXT"                         value="0x8D41"/>
+    <enum name="RENDERBUFFER_WIDTH_EXT"                   value="0x8D42"/>
+    <enum name="RENDERBUFFER_HEIGHT_EXT"                  value="0x8D43"/>
+    <enum name="RENDERBUFFER_INTERNAL_FORMAT_EXT"         value="0x8D44"/>
+    <enum name="STENCIL_INDEX_EXT"                        value="0x8D45"/>
+    <enum name="STENCIL_INDEX1_EXT"                       value="0x8D46"/>
+    <enum name="STENCIL_INDEX4_EXT"                       value="0x8D47"/>
+    <enum name="STENCIL_INDEX8_EXT"                       value="0x8D48"/>
+    <enum name="STENCIL_INDEX16_EXT"                      value="0x8D49"/>
+
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT"   count="1" value="0x8CD0">
+        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT"   count="1" value="0x8CD1">
+        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT" count="1" value="0x8CD2">
+        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT" count="1" value="0x8CD3">
+        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT"    count="1" value="0x8CD4">
+        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
+    </enum>
+
+    <enum name="COLOR_ATTACHMENT0_EXT"                    value="0x8CE0"/>
+    <enum name="COLOR_ATTACHMENT1_EXT"                    value="0x8CE1"/>
+    <enum name="COLOR_ATTACHMENT2_EXT"                    value="0x8CE2"/>
+    <enum name="COLOR_ATTACHMENT3_EXT"                    value="0x8CE3"/>
+    <enum name="COLOR_ATTACHMENT4_EXT"                    value="0x8CE4"/>
+    <enum name="COLOR_ATTACHMENT5_EXT"                    value="0x8CE5"/>
+    <enum name="COLOR_ATTACHMENT6_EXT"                    value="0x8CE6"/>
+    <enum name="COLOR_ATTACHMENT7_EXT"                    value="0x8CE7"/>
+    <enum name="COLOR_ATTACHMENT8_EXT"                    value="0x8CE8"/>
+    <enum name="COLOR_ATTACHMENT9_EXT"                    value="0x8CE9"/>
+    <enum name="COLOR_ATTACHMENT10_EXT"                   value="0x8CEA"/>
+    <enum name="COLOR_ATTACHMENT11_EXT"                   value="0x8CEB"/>
+    <enum name="COLOR_ATTACHMENT12_EXT"                   value="0x8CEC"/>
+    <enum name="COLOR_ATTACHMENT13_EXT"                   value="0x8CED"/>
+    <enum name="COLOR_ATTACHMENT14_EXT"                   value="0x8CEE"/>
+    <enum name="COLOR_ATTACHMENT15_EXT"                   value="0x8CEF"/>
+    <enum name="DEPTH_ATTACHMENT_EXT"                     value="0x8D00"/>
+    <enum name="STENCIL_ATTACHMENT_EXT"                   value="0x8D20"/>
+
+    <enum name="FRAMEBUFFER_COMPLETE_EXT"                 value="0x8CD5"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT"    value="0x8CD6"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT"   value="0x8CD7"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT" value="0x8CD8"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT"    value="0x8CD9"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_EXT"       value="0x8CDA"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT"   value="0x8CDB"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT"   value="0x8CDC"/>
+    <enum name="FRAMEBUFFER_UNSUPPORTED_EXT"              value="0x8CDD"/>
+    <enum name="FRAMEBUFFER_STATUS_ERROR_EXT"             value="0x8CDE"/>
+    <enum name="FRAMEBUFFER_BINDING_EXT"        count="1" value="0x8CA6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RENDERBUFFER_BINDING_EXT"       count="1" value="0x8CA7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_COLOR_ATTACHMENTS_EXT"      count="1" value="0x8CDF">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_RENDERBUFFER_SIZE_EXT"      count="1" value="0x84E8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INVALID_FRAMEBUFFER_OPERATION_EXT"        value="0x0506"/>
+
+    <function name="IsRenderbufferEXT" offset="assign">
+        <param name="renderbuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+       <glx vendorpriv="1422"/>
+    </function>
+
+    <function name="BindRenderbufferEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+       <glx rop="4316"/>
+    </function>
+
+    <function name="DeleteRenderbuffersEXT" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="const GLuint *" count="n"/>
+       <glx rop="4317"/>
+    </function>
+
+    <function name="GenRenderbuffersEXT" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
+       <glx vendorpriv="1423" always_array="true"/>
+    </function>
+
+    <function name="RenderbufferStorageEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+       <glx rop="4318"/>
+    </function>
+
+    <function name="GetRenderbufferParameterivEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+       <glx vendorpriv="1424"/>
+    </function>
+
+    <function name="IsFramebufferEXT" offset="assign">
+        <param name="framebuffer" type="GLuint"/>
+       <return type="GLboolean"/>
+       <glx vendorpriv="1425"/>
+    </function>
+
+    <function name="BindFramebufferEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="framebuffer" type="GLuint"/>
+       <glx rop="4319"/>
+    </function>
+
+    <function name="DeleteFramebuffersEXT" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="const GLuint *" count="n"/>
+       <glx rop="4320"/>
+    </function>
+
+    <function name="GenFramebuffersEXT" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
+       <glx vendorpriv="1426" always_array="true"/>
+    </function>
+
+    <function name="CheckFramebufferStatusEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+       <return type="GLenum"/>
+       <glx vendorpriv="1427"/>
+    </function>
+
+    <function name="FramebufferTexture1DEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+       <glx rop="4321"/>
+    </function>
+
+    <function name="FramebufferTexture2DEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+       <glx rop="4322"/>
+    </function>
+
+    <function name="FramebufferTexture3DEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="textarget" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+       <glx rop="4323"/>
+    </function>
+
+    <function name="FramebufferRenderbufferEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="renderbuffertarget" type="GLenum"/>
+        <param name="renderbuffer" type="GLuint"/>
+       <glx rop="4324"/>
+    </function>
+
+    <function name="GetFramebufferAttachmentParameterivEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+       <glx vendorpriv="1428"/>
+    </function>
+
+    <function name="GenerateMipmapEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+       <glx rop="4325"/>
+    </function>
+</category>
+
+<category name="GL_EXT_framebuffer_blit" number="316">
+    <enum name="READ_FRAMEBUFFER_EXT" value="0x8CA8"/>
+    <enum name="DRAW_FRAMEBUFFER_EXT" value="0x8CA9"/>
+    <enum name="DRAW_FRAMEBUFFER_BINDING_EXT" count="1" value="0x8CA6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="READ_FRAMEBUFFER_BINDING_EXT" count="1" value="0x8CAA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <function name="BlitFramebufferEXT" offset="assign" static_dispatch="false">
+        <param name="srcX0" type="GLint"/>
+        <param name="srcY0" type="GLint"/>
+        <param name="srcX1" type="GLint"/>
+        <param name="srcY1" type="GLint"/>
+        <param name="dstX0" type="GLint"/>
+        <param name="dstY0" type="GLint"/>
+        <param name="dstX1" type="GLint"/>
+        <param name="dstY1" type="GLint"/>
+        <param name="mask" type="GLbitfield"/>
+        <param name="filter" type="GLenum"/>
+        <glx rop="4330"/>
+    </function>
+</category>
+
+<category name="GL_EXT_framebuffer_multisample" number="317">
+    <enum name="RENDERBUFFER_SAMPLES_EXT"                  value="0x8CAB"/>
+    <enum name="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT"    value="0x8D56"/>
+    <enum name="MAX_SAMPLES_EXT"                 count="1" value="0x8D57">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="RenderbufferStorageMultisampleEXT" alias="RenderbufferStorageMultisample">
+        <param name="target" type="GLenum"/>
+        <param name="samples" type="GLsizei"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_packed_depth_stencil.xml b/src/mapi/glapi/gen/EXT_packed_depth_stencil.xml
new file mode 100644 (file)
index 0000000..5be8103
--- /dev/null
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<category name="GL_EXT_packed_depth_stencil" number="312">
+    <!-- These enums are shared with GL_NV_packed_depth_stencil. -->
+    <enum name="DEPTH_STENCIL_EXT"                        value="0x84F9"/>
+    <enum name="UNSIGNED_INT_24_8_EXT"                    value="0x84FA"/>
+
+    <enum name="DEPTH24_STENCIL8_EXT"                     value="0x88F0"/>
+
+    <enum name="TEXTURE_STENCIL_SIZE_EXT"      count="1"  value="0x88F1">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_provoking_vertex.xml b/src/mapi/glapi/gen/EXT_provoking_vertex.xml
new file mode 100644 (file)
index 0000000..71d2c72
--- /dev/null
@@ -0,0 +1,35 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_EXT_provoking_vertex" number="364">
+
+    <enum name="FIRST_VERTEX_CONVENTION_EXT"                  value="0x8E4D"/>
+    <enum name="LAST_VERTEX_CONVENTION_EXT"                   value="0x8E4E"/>
+    <enum name="PROVOKING_VERTEX_EXT"                         value="0x8E4F"/>
+    <enum name="QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT" value="0x8E4C"/>
+
+    <function name="ProvokingVertexEXT" offset="assign">
+        <param name="mode" type="GLenum"/>
+    </function>
+
+</category>
+
+<category name="GL_ARB_provoking_vertex" number="64">
+
+    <enum name="FIRST_VERTEX_CONVENTION"                  value="0x8E4D"/>
+    <enum name="LAST_VERTEX_CONVENTION"                   value="0x8E4E"/>
+    <enum name="PROVOKING_VERTEX"                         value="0x8E4F"/>
+    <enum name="QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION" value="0x8E4C"/>
+
+    <function name="ProvokingVertex" alias="ProvokingVertexEXT">
+        <param name="mode" type="GLenum"/>
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_texture_array.xml b/src/mapi/glapi/gen/EXT_texture_array.xml
new file mode 100644 (file)
index 0000000..b5b8bd4
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_EXT_texture_array" number="329">
+    <enum name="TEXTURE_1D_ARRAY_EXT"                      value="0x8C18"/>
+    <enum name="PROXY_TEXTURE_1D_ARRAY_EXT"                value="0x8C19"/>
+    <enum name="TEXTURE_2D_ARRAY_EXT"                      value="0x8C1A"/>
+    <enum name="PROXY_TEXTURE_2D_ARRAY_EXT"                value="0x8C1B"/>
+
+    <enum name="TEXTURE_BINDING_1D_ARRAY_EXT"   count="1"  value="0x8C1C">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="TEXTURE_BINDING_2D_ARRAY_EXT"   count="1"  value="0x8C1D">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="MAX_ARRAY_TEXTURE_LAYERS_EXT"   count="1"  value="0x88FF">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="COMPARE_REF_DEPTH_TO_TEXTURE_EXT" count="1" value="0x884E">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT"   count="1" value="0x8CD4">
+        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
+    </enum>
+
+    <function name="FramebufferTextureLayerEXT" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="attachment" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <param name="level" type="GLint"/>
+        <param name="layer" type="GLint"/>
+       <glx rop="237"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/EXT_transform_feedback.xml b/src/mapi/glapi/gen/EXT_transform_feedback.xml
new file mode 100644 (file)
index 0000000..06deafc
--- /dev/null
@@ -0,0 +1,163 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_EXT_transform_feedback" number="352">
+
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_EXT"                  value="0x8C8E"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_START_EXT"            value="0x8C84"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT"             value="0x8C85"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT"          value="0x8C8F"/>
+  <enum name="INTERLEAVED_ATTRIBS_EXT"                        value="0x8C8C"/>
+  <enum name="SEPARATE_ATTRIBS_EXT"                           value="0x8C8D"/>
+  <enum name="PRIMITIVES_GENERATED_EXT"                       value="0x8C87"/>
+  <enum name="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT"      value="0x8C88"/>
+  <enum name="RASTERIZER_DISCARD_EXT"                         value="0x8C89"/>
+  <enum name="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT" value="0x8C8A"/>
+  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT"    value="0x8C8B"/>
+  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT" value="0x8C80"/>
+  <enum name="TRANSFORM_FEEDBACK_VARYINGS_EXT"                value="0x8C83"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_MODE_EXT"             value="0x8C7F"/>
+  <enum name="TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT"      value="0x8C76"/>
+
+  <function name="BindBufferRangeEXT" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="buffer" type="GLuint"/>
+    <param name="offset" type="GLintptr"/>
+    <param name="size" type="GLsizeiptr"/>
+  </function>
+
+  <function name="BindBufferOffsetEXT" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="buffer" type="GLuint"/>
+    <param name="offset" type="GLintptr"/>
+  </function>
+
+  <function name="BindBufferBaseEXT" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="buffer" type="GLuint"/>
+  </function>
+
+  <function name="BeginTransformFeedbackEXT" offset="assign">
+    <param name="mode" type="GLenum"/>
+  </function>
+
+  <function name="EndTransformFeedbackEXT" offset="assign">
+  </function>
+
+  <function name="TransformFeedbackVaryingsEXT" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="varyings" type="const char **"/>
+    <param name="bufferMode" type="GLenum"/>
+  </function>
+
+  <function name="GetTransformFeedbackVaryingEXT" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="index" type="GLuint"/>
+    <param name="bufSize" type="GLsizei"/>
+    <param name="length" type="GLsizei *"/>
+    <param name="size" type="GLsizei *"/>
+    <param name="type" type="GLenum *"/>
+    <param name="name" type="GLchar *"/>
+  </function>
+
+  <!-- Note: the glGetIntegerIndexedvEXT() and glGetBooleanIndexedvEXT
+       functions are defined in the EXT_draw_buffers2.xml file -->
+
+</category>
+
+
+<!-- Note: these 3.0 entrypoints might get moved to a new file -->
+
+<category name="3.0">
+
+  <function name="BindBufferRange" alias="BindBufferRangeEXT">
+    <param name="target" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="buffer" type="GLuint"/>
+    <param name="offset" type="GLintptr"/>
+    <param name="size" type="GLsizeiptr"/>
+  </function>
+
+  <function name="BindBufferBase" alias="BindBufferBaseEXT">
+    <param name="target" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="buffer" type="GLuint"/>
+  </function>
+
+  <function name="BeginTransformFeedback" alias="BeginTransformFeedbackEXT">
+    <param name="mode" type="GLenum"/>
+  </function>
+
+  <function name="EndTransformFeedback" alias="EndTransformFeedbackEXT">
+  </function>
+
+  <function name="TransformFeedbackVaryings" alias="TransformFeedbackVaryingsEXT">
+    <param name="program" type="GLuint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="varyings" type="const char **"/>
+    <param name="bufferMode" type="GLenum"/>
+  </function>
+
+  <function name="GetTransformFeedbackVarying" alias="GetTransformFeedbackVaryingEXT">
+    <param name="program" type="GLuint"/>
+    <param name="index" type="GLuint"/>
+    <param name="bufSize" type="GLsizei"/>
+    <param name="length" type="GLsizei *"/>
+    <param name="size" type="GLsizei *"/>
+    <param name="type" type="GLenum *"/>
+    <param name="name" type="GLchar *"/>
+  </function>
+
+</category>
+
+
+<category name="GL_ARB_transform_feedback2" number="93">
+
+  <enum name="TRANSFORM_FEEDBACK"                  value="0x8E22"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_PAUSED"    value="0x8E23"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_ACTIVE"    value="0x8E24"/>
+  <enum name="TRANSFORM_FEEDBACK_BINDING"          value="0x8E25"/>
+
+  <function name="BindTransformFeedback" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="id" type="GLuint"/>
+  </function>
+
+  <function name="DeleteTransformFeedbacks" offset="assign">
+    <param name="n" type="GLsizei"/>
+    <param name="ids" type="const GLuint *"/>
+  </function>
+
+  <function name="GenTransformFeedbacks" offset="assign">
+    <param name="n" type="GLsizei"/>
+    <param name="ids" type="GLuint *"/>
+  </function>
+
+  <function name="IsTransformFeedback" offset="assign">
+    <param name="id" type="GLuint"/>
+    <return type="GLboolean"/>
+  </function>
+
+  <function name="PauseTransformFeedback" offset="assign">
+  </function>
+
+  <function name="ResumeTransformFeedback" offset="assign">
+  </function>
+
+  <function name="DrawTransformFeedback" offset="assign">
+    <param name="mode" type="GLenum"/>
+    <param name="id" type="GLuint"/>
+  </function>
+
+</category>
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/GL3.xml b/src/mapi/glapi/gen/GL3.xml
new file mode 100644 (file)
index 0000000..0d8d935
--- /dev/null
@@ -0,0 +1,581 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="3.0">
+
+  <enum name="COMPARE_REF_TO_TEXTURE"           value="0x884E"/>
+  <enum name="CLIP_DISTANCE0"                   value="0x3000"/>
+  <enum name="CLIP_DISTANCE1"                   value="0x3001"/>
+  <enum name="CLIP_DISTANCE2"                   value="0x3002"/>
+  <enum name="CLIP_DISTANCE3"                   value="0x3003"/>
+  <enum name="CLIP_DISTANCE4"                   value="0x3004"/>
+  <enum name="CLIP_DISTANCE5"                   value="0x3005"/>
+  <enum name="CLIP_DISTANCE6"                   value="0x3006"/>
+  <enum name="CLIP_DISTANCE7"                   value="0x3007"/>
+  <enum name="MAX_CLIP_DISTANCES"               value="0x0D32"/>
+  <enum name="MAJOR_VERSION"                    value="0x821B"/>
+  <enum name="MINOR_VERSION"                    value="0x821C"/>
+  <enum name="NUM_EXTENSIONS"                   value="0x821D"/>
+  <enum name="CONTEXT_FLAGS"                    value="0x821E"/>
+  <enum name="DEPTH_BUFFER"                     value="0x8223"/>
+  <enum name="STENCIL_BUFFER"                   value="0x8224"/>
+  <enum name="COMPRESSED_RED"                   value="0x8225"/>
+  <enum name="COMPRESSED_RG"                    value="0x8226"/>
+  <enum name="CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT"  value="0x0001"/>
+  <enum name="RGBA32F"                          value="0x8814"/>
+  <enum name="RGB32F"                           value="0x8815"/>
+  <enum name="RGBA16F"                          value="0x881A"/>
+  <enum name="RGB16F"                           value="0x881B"/>
+  <enum name="VERTEX_ATTRIB_ARRAY_INTEGER"      value="0x88FD"/>
+  <enum name="MAX_ARRAY_TEXTURE_LAYERS"         value="0x88FF"/>
+  <enum name="MIN_PROGRAM_TEXEL_OFFSET"         value="0x8904"/>
+  <enum name="MAX_PROGRAM_TEXEL_OFFSET"         value="0x8905"/>
+  <enum name="CLAMP_READ_COLOR"                 value="0x891C"/>
+  <enum name="FIXED_ONLY"                       value="0x891D"/>
+  <enum name="MAX_VARYING_COMPONENTS"           value="0x8B4B"/>
+  <enum name="TEXTURE_1D_ARRAY"                 value="0x8C18"/>
+  <enum name="PROXY_TEXTURE_1D_ARRAY"           value="0x8C19"/>
+  <enum name="TEXTURE_2D_ARRAY"                 value="0x8C1A"/>
+  <enum name="PROXY_TEXTURE_2D_ARRAY"           value="0x8C1B"/>
+  <enum name="TEXTURE_BINDING_1D_ARRAY"         value="0x8C1C"/>
+  <enum name="TEXTURE_BINDING_2D_ARRAY"         value="0x8C1D"/>
+  <enum name="R11F_G11F_B10F"                   value="0x8C3A"/>
+  <enum name="UNSIGNED_INT_10F_11F_11F_REV"     value="0x8C3B"/>
+  <enum name="RGB9_E5"                          value="0x8C3D"/>
+  <enum name="UNSIGNED_INT_5_9_9_9_REV"         value="0x8C3E"/>
+  <enum name="TEXTURE_SHARED_SIZE"              value="0x8C3F"/>
+  <enum name="TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH"  value="0x8C76"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_MODE"   value="0x8C7F"/>
+  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"  value="0x8C80"/>
+  <enum name="TRANSFORM_FEEDBACK_VARYINGS"      value="0x8C83"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_START"  value="0x8C84"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_SIZE"   value="0x8C85"/>
+  <enum name="PRIMITIVES_GENERATED"             value="0x8C87"/>
+  <enum name="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN"  value="0x8C88"/>
+  <enum name="RASTERIZER_DISCARD"               value="0x8C89"/>
+  <enum name="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"  value="0x8C8A"/>
+  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"  value="0x8C8B"/>
+  <enum name="INTERLEAVED_ATTRIBS"              value="0x8C8C"/>
+  <enum name="SEPARATE_ATTRIBS"                 value="0x8C8D"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER"        value="0x8C8E"/>
+  <enum name="TRANSFORM_FEEDBACK_BUFFER_BINDING"  value="0x8C8F"/>
+  <enum name="RGBA32UI"                         value="0x8D70"/>
+  <enum name="RGB32UI"                          value="0x8D71"/>
+  <enum name="RGBA16UI"                         value="0x8D76"/>
+  <enum name="RGB16UI"                          value="0x8D77"/>
+  <enum name="RGBA8UI"                          value="0x8D7C"/>
+  <enum name="RGB8UI"                           value="0x8D7D"/>
+  <enum name="RGBA32I"                          value="0x8D82"/>
+  <enum name="RGB32I"                           value="0x8D83"/>
+  <enum name="RGBA16I"                          value="0x8D88"/>
+  <enum name="RGB16I"                           value="0x8D89"/>
+  <enum name="RGBA8I"                           value="0x8D8E"/>
+  <enum name="RGB8I"                            value="0x8D8F"/>
+  <enum name="RED_INTEGER"                      value="0x8D94"/>
+  <enum name="GREEN_INTEGER"                    value="0x8D95"/>
+  <enum name="BLUE_INTEGER"                     value="0x8D96"/>
+  <enum name="RGB_INTEGER"                      value="0x8D98"/>
+  <enum name="RGBA_INTEGER"                     value="0x8D99"/>
+  <enum name="BGR_INTEGER"                      value="0x8D9A"/>
+  <enum name="BGRA_INTEGER"                     value="0x8D9B"/>
+  <enum name="SAMPLER_1D_ARRAY"                 value="0x8DC0"/>
+  <enum name="SAMPLER_2D_ARRAY"                 value="0x8DC1"/>
+  <enum name="SAMPLER_1D_ARRAY_SHADOW"          value="0x8DC3"/>
+  <enum name="SAMPLER_2D_ARRAY_SHADOW"          value="0x8DC4"/>
+  <enum name="SAMPLER_CUBE_SHADOW"              value="0x8DC5"/>
+  <enum name="UNSIGNED_INT_VEC2"                value="0x8DC6"/>
+  <enum name="UNSIGNED_INT_VEC3"                value="0x8DC7"/>
+  <enum name="UNSIGNED_INT_VEC4"                value="0x8DC8"/>
+  <enum name="INT_SAMPLER_1D"                   value="0x8DC9"/>
+  <enum name="INT_SAMPLER_2D"                   value="0x8DCA"/>
+  <enum name="INT_SAMPLER_3D"                   value="0x8DCB"/>
+  <enum name="INT_SAMPLER_CUBE"                 value="0x8DCC"/>
+  <enum name="INT_SAMPLER_1D_ARRAY"             value="0x8DCE"/>
+  <enum name="INT_SAMPLER_2D_ARRAY"             value="0x8DCF"/>
+  <enum name="UNSIGNED_INT_SAMPLER_1D"          value="0x8DD1"/>
+  <enum name="UNSIGNED_INT_SAMPLER_2D"          value="0x8DD2"/>
+  <enum name="UNSIGNED_INT_SAMPLER_3D"          value="0x8DD3"/>
+  <enum name="UNSIGNED_INT_SAMPLER_CUBE"        value="0x8DD4"/>
+  <enum name="UNSIGNED_INT_SAMPLER_1D_ARRAY"    value="0x8DD6"/>
+  <enum name="UNSIGNED_INT_SAMPLER_2D_ARRAY"    value="0x8DD7"/>
+  <enum name="QUERY_WAIT"                       value="0x8E13"/>
+  <enum name="QUERY_NO_WAIT"                    value="0x8E14"/>
+  <enum name="QUERY_BY_REGION_WAIT"             value="0x8E15"/>
+  <enum name="QUERY_BY_REGION_NO_WAIT"          value="0x8E16"/>
+  <enum name="BUFFER_ACCESS_FLAGS"              value="0x911F"/>
+  <enum name="BUFFER_MAP_LENGTH"                value="0x9120"/>
+  <enum name="BUFFER_MAP_OFFSET"                value="0x9121"/>
+
+  <function name="ClearBufferiv" offset="assign">
+    <param name="buffer" type="GLenum"/>
+    <param name="drawbuffer" type="GLint"/>
+    <param name="value" type="const GLint *"/>
+  </function>
+
+  <function name="ClearBufferuiv" offset="assign">
+    <param name="buffer" type="GLenum"/>
+    <param name="drawbuffer" type="GLint"/>
+    <param name="value" type="const GLuint *"/>
+  </function>
+
+  <function name="ClearBufferfv" offset="assign">
+    <param name="buffer" type="GLenum"/>
+    <param name="drawbuffer" type="GLint"/>
+    <param name="value" type="const GLfloat *"/>
+  </function>
+
+  <function name="ClearBufferfi" offset="assign">
+    <param name="buffer" type="GLenum"/>
+    <param name="drawbuffer" type="GLint"/>
+    <param name="depth" type="const GLfloat"/>
+    <param name="stencil" type="const GLint"/>
+  </function>
+
+  <function name="GetStringi" offset="assign">
+    <param name="name" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+      <return type="const GLubyte *"/>
+  </function>
+
+  <function name="IsEnabledi" offset="assign">
+    <param name="cap" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+      <return type="GLboolean"/>
+  </function>
+
+  <function name="GetFragDataLocation" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="name" type="const GLchar *"/>
+      <return type="GLint"/>
+  </function>
+
+  <function name="BindFragDataLocation" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="color" type="GLuint"/>
+    <param name="name" type="const GLchar *"/>
+  </function>
+
+  <function name="ColorMaski" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="r" type="GLboolean"/>
+    <param name="g" type="GLboolean"/>
+    <param name="b" type="GLboolean"/>
+    <param name="a" type="GLboolean"/>
+  </function>
+
+  <function name="GetBooleani_v" offset="assign">
+    <param name="cap" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="value" type="GLboolean *"/>
+  </function>
+
+  <function name="GetIntegeri_v" offset="assign">
+    <param name="cap" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="value" type="GLint *"/>
+  </function>
+
+  <function name="Enablei" offset="assign">
+    <param name="cap" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+  </function>
+
+  <function name="Disablei" offset="assign">
+    <param name="cap" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+  </function>
+
+  <function name="BeginTransformFeedback" offset="assign">
+    <param name="mode" type="GLenum"/>
+  </function>
+
+  <function name="EndTransformFeedback" offset="assign">
+  </function>
+
+  <function name="BindBufferRange" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="buffer" type="GLuint"/>
+    <param name="offset" type="GLintptr"/>
+    <param name="size" type="GLsizeiptr"/>
+  </function>
+
+  <function name="BindBufferBase" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="buffer" type="GLuint"/>
+  </function>
+
+  <function name="TransformFeedbackVaryings" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="varyings" type="const GLchar* *"/>
+    <param name="bufferMode" type="GLenum"/>
+  </function>
+
+  <function name="GetTransformFeedbackVarying" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="index" type="GLuint"/>
+    <param name="bufSize" type="GLsizei"/>
+    <param name="length" type="GLsizei *"/>
+    <param name="size" type="GLsizei *"/>
+    <param name="type" type="GLenum *"/>
+    <param name="name" type="GLchar *"/>
+  </function>
+
+  <function name="ClampColor" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="clamp" type="GLenum"/>
+  </function>
+
+  <function name="BeginConditionalRender" offset="assign">
+    <param name="id" type="GLuint"/>
+    <param name="mode" type="GLenum"/>
+  </function>
+
+  <function name="EndConditionalRender" offset="assign">
+  </function>
+
+  <function name="VertexAttribIPointer" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="size" type="GLint"/>
+    <param name="type" type="GLenum"/>
+    <param name="stride" type="GLsizei"/>
+    <param name="pointer" type="const GLvoid *"/>
+  </function>
+
+  <function name="GetVertexAttribIiv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="pname" type="GLenum"/>
+    <param name="params" type="GLint *"/>
+  </function>
+
+  <function name="GetVertexAttribIuiv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="pname" type="GLenum"/>
+    <param name="params" type="GLuint *"/>
+  </function>
+
+  <function name="VertexAttribI1i" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLint"/>
+  </function>
+
+  <function name="VertexAttribI2i" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLint"/>
+    <param name="y" type="GLint"/>
+  </function>
+
+  <function name="VertexAttribI3i" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLint"/>
+    <param name="y" type="GLint"/>
+    <param name="z" type="GLint"/>
+  </function>
+
+  <function name="VertexAttribI4i" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLint"/>
+    <param name="y" type="GLint"/>
+    <param name="z" type="GLint"/>
+    <param name="w" type="GLint"/>
+  </function>
+
+  <function name="VertexAttribI1ui" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLuint"/>
+  </function>
+
+  <function name="VertexAttribI2ui" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLuint"/>
+    <param name="y" type="GLuint"/>
+  </function>
+
+  <function name="VertexAttribI3ui" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLuint"/>
+    <param name="y" type="GLuint"/>
+    <param name="z" type="GLuint"/>
+  </function>
+
+  <function name="VertexAttribI4ui" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="x" type="GLuint"/>
+    <param name="y" type="GLuint"/>
+    <param name="z" type="GLuint"/>
+    <param name="w" type="GLuint"/>
+  </function>
+
+  <function name="VertexAttribI1iv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLint *"/>
+  </function>
+
+  <function name="VertexAttribI2iv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLint *"/>
+  </function>
+
+  <function name="VertexAttribI3iv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLint *"/>
+  </function>
+
+  <function name="VertexAttribI4iv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLint *"/>
+  </function>
+
+  <function name="VertexAttribI1uiv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLuint *"/>
+  </function>
+
+  <function name="VertexAttribI2uiv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLuint *"/>
+  </function>
+
+  <function name="VertexAttribI3uiv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLuint *"/>
+  </function>
+
+  <function name="VertexAttribI4uiv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLuint *"/>
+  </function>
+
+  <function name="VertexAttribI4bv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLbyte *"/>
+  </function>
+
+  <function name="VertexAttribI4sv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLshort *"/>
+  </function>
+
+  <function name="VertexAttribI4ubv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLubyte *"/>
+  </function>
+
+  <function name="VertexAttribI4usv" offset="assign">
+    <param name="index" type="GLuint"/>
+    <param name="v" type="const GLushort *"/>
+  </function>
+
+  <function name="GetUniformuiv" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="location" type="GLint"/>
+    <param name="params" type="GLuint *"/>
+  </function>
+
+  <function name="Uniform1ui" offset="assign">
+    <param name="locatoin" type="GLint"/>
+    <param name="x" type="GLuint"/>
+  </function>
+
+  <function name="Uniform2ui" offset="assign">
+    <param name="location" type="GLint"/>
+    <param name="x" type="GLuint"/>
+    <param name="y" type="GLuint"/>
+  </function>
+
+  <function name="Uniform3ui" offset="assign">
+    <param name="location" type="GLint"/>
+    <param name="x" type="GLuint"/>
+    <param name="y" type="GLuint"/>
+    <param name="z" type="GLuint"/>
+  </function>
+
+  <function name="Uniform4ui" offset="assign">
+    <param name="location" type="GLint"/>
+    <param name="x" type="GLuint"/>
+    <param name="y" type="GLuint"/>
+    <param name="z" type="GLuint"/>
+    <param name="w" type="GLuint"/>
+  </function>
+
+  <function name="Uniform1uiv" offset="assign">
+    <param name="location" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="value" type="const GLuint *"/>
+  </function>
+
+  <function name="Uniform2uiv" offset="assign">
+    <param name="location" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="value" type="const GLuint *"/>
+  </function>
+
+  <function name="Uniform3uiv" offset="assign">
+    <param name="location" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="value" type="const GLuint *"/>
+  </function>
+
+  <function name="Uniform4uiv" offset="assign">
+    <param name="location" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="value" type="const GLuint *"/>
+  </function>
+
+  <function name="TexParameterIiv" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="pname" type="GLenum"/>
+    <param name="value" type="const GLint *"/>
+  </function>
+
+  <function name="TexParameterIuiv" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="pname" type="GLenum"/>
+    <param name="value" type="const GLuint *"/>
+  </function>
+
+  <function name="GetTexParameterIiv" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="pname" type="GLenum"/>
+    <param name="value" type="GLint *"/>
+  </function>
+
+  <function name="GetTexParameterIuiv" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="pname" type="GLenum"/>
+    <param name="value" type="GLuint *"/>
+  </function>
+
+</category>
+
+
+<category name="3.1">
+
+  <enum name="SAMPLER_2D_RECT"                value="0x8B63"/>
+  <enum name="SAMPLER_2D_RECT_SHADOW"         value="0x8B64"/>
+  <enum name="SAMPLER_BUFFER"                 value="0x8DC2"/>
+  <enum name="INT_SAMPLER_2D_RECT"            value="0x8DCD"/>
+  <enum name="INT_SAMPLER_BUFFER"             value="0x8DD0"/>
+  <enum name="UNSIGNED_INT_SAMPLER_2D_RECT"   value="0x8DD5"/>
+  <enum name="UNSIGNED_INT_SAMPLER_BUFFER"    value="0x8DD8"/>
+  <enum name="TEXTURE_BUFFER"                 value="0x8C2A"/>
+  <enum name="MAX_TEXTURE_BUFFER_SIZE"        value="0x8C2B"/>
+  <enum name="TEXTURE_BINDING_BUFFER"         value="0x8C2C"/>
+  <enum name="TEXTURE_BUFFER_DATA_STORE_BINDING" value="0x8C2D"/>
+  <enum name="TEXTURE_BUFFER_FORMAT"          value="0x8C2E"/>
+  <enum name="TEXTURE_RECTANGLE"              value="0x84F5"/>
+  <enum name="TEXTURE_BINDING_RECTANGLE"      value="0x84F6"/>
+  <enum name="PROXY_TEXTURE_RECTANGLE"        value="0x84F7"/>
+  <enum name="MAX_RECTANGLE_TEXTURE_SIZE"     value="0x84F8"/>
+  <enum name="RED_SNORM"                      value="0x8F90"/>
+  <enum name="RG_SNORM"                       value="0x8F91"/>
+  <enum name="RGB_SNORM"                      value="0x8F92"/>
+  <enum name="RGBA_SNORM"                     value="0x8F93"/>
+  <enum name="R8_SNORM"                       value="0x8F94"/>
+  <enum name="RG8_SNORM"                      value="0x8F95"/>
+  <enum name="RGB8_SNORM"                     value="0x8F96"/>
+  <enum name="RGBA8_SNORM"                    value="0x8F97"/>
+  <enum name="R16_SNORM"                      value="0x8F98"/>
+  <enum name="RG16_SNORM"                     value="0x8F99"/>
+  <enum name="RGB16_SNORM"                    value="0x8F9A"/>
+  <enum name="RGBA16_SNORM"                   value="0x8F9B"/>
+  <enum name="SIGNED_NORMALIZED"              value="0x8F9C"/>
+  <enum name="PRIMITIVE_RESTART"              value="0x8F9D"/>
+  <enum name="PRIMITIVE_RESTART_INDEX"        value="0x8F9E"/>
+
+  <function name="DrawArraysInstanced" offset="assign">
+    <param name="mode" type="GLenum"/>
+    <param name="first" type="GLint"/>
+    <param name="count" type="GLsizei"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+  <function name="DrawElementsInstanced" offset="assign">
+    <param name="mode" type="GLenum"/>
+    <param name="count" type="GLsizei"/>
+    <param name="type" type="GLenum"/>
+    <param name="indices" type="const GLvoid *"/>
+    <param name="primcount" type="GLsizei"/>
+  </function>
+
+  <function name="TexBuffer" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="internalFormat" type="GLenum"/>
+    <param name="buffer" type="GLuint"/>
+  </function>
+
+  <function name="glPrimitiveRestartIndex" offset="assign">
+    <param name="index" type="GLuint"/>
+  </function>
+
+</category>
+
+
+<category name="3.2">
+
+  <enum name="CONTEXT_CORE_PROFILE_BIT"             value="0x00000001"/>
+  <enum name="CONTEXT_COMPATIBILITY_PROFILE_BIT"    value="0x00000002"/>
+  <enum name="LINES_ADJACENCY"                      value="0x000A"/>
+  <enum name="LINE_STRIP_ADJACENCY"                 value="0x000B"/>
+  <enum name="TRIANGLES_ADJACENCY"                  value="0x000C"/>
+  <enum name="TRIANGLE_STRIP_ADJACENCY"             value="0x000D"/>
+  <enum name="PROGRAM_POINT_SIZE"                   value="0x8642"/>
+  <enum name="MAX_GEOMETRY_TEXTURE_IMAGE_UNITS"     value="0x8C29"/>
+  <enum name="FRAMEBUFFER_ATTACHMENT_LAYERED"       value="0x8DA7"/>
+  <enum name="FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS" value="0x8DA8"/>
+  <enum name="GEOMETRY_SHADER"                      value="0x8DD9"/>
+  <enum name="GEOMETRY_VERTICES_OUT"                value="0x8916"/>
+  <enum name="GEOMETRY_INPUT_TYPE"                  value="0x8917"/>
+  <enum name="GEOMETRY_OUTPUT_TYPE"                 value="0x8918"/>
+  <enum name="MAX_GEOMETRY_UNIFORM_COMPONENTS"      value="0x8DDF"/>
+  <enum name="MAX_GEOMETRY_OUTPUT_VERTICES"         value="0x8DE0"/>
+  <enum name="MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS" value="0x8DE1"/>
+  <enum name="MAX_VERTEX_OUTPUT_COMPONENTS"         value="0x9122"/>
+  <enum name="MAX_GEOMETRY_INPUT_COMPONENTS"        value="0x9123"/>
+  <enum name="MAX_GEOMETRY_OUTPUT_COMPONENTS"       value="0x9124"/>
+  <enum name="MAX_FRAGMENT_INPUT_COMPONENTS"        value="0x9125"/>
+  <enum name="CONTEXT_PROFILE_MASK"                 value="0x9126"/>
+
+  <function name="GetInteger64i_v" offset="assign">
+    <param name="cap" type="GLenum"/>
+    <param name="index" type="GLuint"/>
+    <param name="data" type="GLint64 *"/>
+  </function>
+
+  <function name="GetBufferParameteri64v" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="pname" type="GLenum"/>
+    <param name="params" type="GLint64 *"/>
+  </function>
+
+  <function name="ProgramParameteri" offset="assign">
+    <param name="program" type="GLuint"/>
+    <param name="pname" type="GLenum"/>
+    <param name="value" type="GLint"/>
+  </function>
+
+  <function name="FramebufferTexture" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="attachment" type="GLenum"/>
+    <param name="texture" type="GLuint"/>
+    <param name="level" type="GLint"/>
+  </function>
+
+  <function name="FramebufferTextureFace" offset="assign">
+    <param name="target" type="GLenum"/>
+    <param name="attachment" type="GLenum"/>
+    <param name="texture" type="GLuint"/>
+    <param name="level" type="GLint"/>
+    <param name="face" type="GLenum"/>
+  </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/Makefile b/src/mapi/glapi/gen/Makefile
new file mode 100644 (file)
index 0000000..daa0a48
--- /dev/null
@@ -0,0 +1,207 @@
+# This file isn't used during a normal compilation since we don't want to
+# require Python in order to compile Mesa.
+# Instead, when the Mesa developers update/change the API interface it's
+# up to him/her to re-run this makefile and check in the newly generated files.
+
+
+TOP = ../../../..
+include $(TOP)/configs/current
+
+MESA_DIR = $(TOP)/src/mesa
+MESA_GLAPI_DIR = $(TOP)/src/mapi/glapi
+MESA_GLX_DIR = $(TOP)/src/glx
+
+MESA_GLAPI_OUTPUTS = \
+       $(MESA_GLAPI_DIR)/glprocs.h \
+       $(MESA_GLAPI_DIR)/glapitemp.h \
+       $(MESA_GLAPI_DIR)/glapioffsets.h \
+       $(MESA_GLAPI_DIR)/glapitable.h \
+       $(MESA_GLAPI_DIR)/glapidispatch.h
+
+MESA_GLAPI_ASM_OUTPUTS = \
+       $(MESA_GLAPI_DIR)/glapi_x86.S \
+       $(MESA_GLAPI_DIR)/glapi_x86-64.S \
+       $(MESA_GLAPI_DIR)/glapi_sparc.S
+
+MESA_OUTPUTS = \
+       $(MESA_GLAPI_OUTPUTS) \
+       $(MESA_GLAPI_ASM_OUTPUTS) \
+       $(MESA_DIR)/main/enums.c \
+       $(MESA_DIR)/main/remap_helper.h \
+       $(MESA_GLX_DIR)/indirect.c \
+       $(MESA_GLX_DIR)/indirect.h \
+       $(MESA_GLX_DIR)/indirect_init.c \
+       $(MESA_GLX_DIR)/indirect_size.h \
+       $(MESA_GLX_DIR)/indirect_size.c
+
+######################################################################
+
+XORG_GLX_DIR = $(XORG_BASE)/glx
+XORG_GLAPI_DIR = $(XORG_BASE)/glx/glapi
+
+XORG_GLAPI_FILES = \
+       $(XORG_GLAPI_DIR)/glapi.h \
+       $(XORG_GLAPI_DIR)/glapi.c \
+       $(XORG_GLAPI_DIR)/glapi_getproc.c \
+       $(XORG_GLAPI_DIR)/glapi_nop.c \
+       $(XORG_GLAPI_DIR)/glthread.c \
+       $(XORG_GLAPI_DIR)/glthread.h
+
+XORG_GLAPI_OUTPUTS = \
+       $(XORG_GLAPI_DIR)/glprocs.h \
+       $(XORG_GLAPI_DIR)/glapitemp.h \
+       $(XORG_GLAPI_DIR)/glapioffsets.h \
+       $(XORG_GLAPI_DIR)/glapitable.h \
+       $(XORG_GLAPI_DIR)/glapidispatch.h
+
+XORG_OUTPUTS = \
+       $(XORG_GLAPI_FILES) \
+       $(XORG_GLAPI_OUTPUTS) \
+       $(XORG_GLX_DIR)/indirect_dispatch.c \
+       $(XORG_GLX_DIR)/indirect_dispatch_swap.c \
+       $(XORG_GLX_DIR)/indirect_dispatch.h \
+       $(XORG_GLX_DIR)/indirect_reqsize.c \
+       $(XORG_GLX_DIR)/indirect_reqsize.h \
+       $(XORG_GLX_DIR)/indirect_size.h \
+       $(XORG_GLX_DIR)/indirect_size_get.c \
+       $(XORG_GLX_DIR)/indirect_size_get.h \
+       $(XORG_GLX_DIR)/indirect_table.c
+
+######################################################################
+
+API_XML = \
+       gl_API.xml \
+       ARB_copy_buffer.xml \
+       ARB_depth_clamp.xml \
+       ARB_draw_elements_base_vertex.xml \
+       ARB_draw_instanced.xml \
+       ARB_framebuffer_object.xml \
+       ARB_map_buffer_range.xml \
+       ARB_seamless_cube_map.xml \
+       ARB_sync.xml \
+       ARB_vertex_array_object.xml \
+       APPLE_object_purgeable.xml \
+       APPLE_vertex_array_object.xml \
+       EXT_draw_buffers2.xml \
+       EXT_framebuffer_object.xml \
+       EXT_packed_depth_stencil.xml \
+       EXT_provoking_vertex.xml \
+       EXT_texture_array.xml \
+       EXT_transform_feedback.xml \
+       NV_conditional_render.xml \
+       OES_EGL_image.xml
+
+COMMON = $(API_XML) gl_XML.py glX_XML.py license.py typeexpr.py
+
+COMMON_GLX = $(COMMON) glX_API.xml glX_XML.py glX_proto_common.py
+
+######################################################################
+
+all: mesa xorg
+
+mesa: $(MESA_OUTPUTS)
+
+xorg: check-xorg-source $(XORG_OUTPUTS)
+
+check-xorg-source:
+       @if ! test -d $(XORG_GLX_DIR); then \
+               echo "ERROR: Must specify path to xserver/GL/GLX checkout; set XORG_GLX_DIR."; \
+               exit 1; \
+       fi
+
+clean:
+       -rm -f *~ *.pyo
+       -rm -f $(MESA_OUTPUTS)
+
+######################################################################
+
+$(XORG_GLAPI_DIR)/%.c: $(MESA_GLAPI_DIR)/%.c
+       cp $< $@
+
+$(XORG_GLAPI_DIR)/%.h: $(MESA_GLAPI_DIR)/%.h
+       cp $< $@
+
+######################################################################
+
+$(MESA_GLAPI_DIR)/glprocs.h: gl_procs.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+$(MESA_GLAPI_DIR)/glapitemp.h: gl_apitemp.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+$(MESA_GLAPI_DIR)/glapioffsets.h: gl_offsets.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+$(MESA_GLAPI_DIR)/glapitable.h: gl_table.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+$(MESA_GLAPI_DIR)/glapidispatch.h: gl_table.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m remap_table > $@
+
+######################################################################
+
+$(MESA_GLAPI_DIR)/glapi_x86.S: gl_x86_asm.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+$(MESA_GLAPI_DIR)/glapi_x86-64.S: gl_x86-64_asm.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+$(MESA_GLAPI_DIR)/glapi_sparc.S: gl_SPARC_asm.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+######################################################################
+
+$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_API.xml \
+               -f $(MESA_GLAPI_DIR)/gen-es/es1_API.xml \
+               -f $(MESA_GLAPI_DIR)/gen-es/es2_API.xml > $@
+
+$(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON)
+       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
+
+######################################################################
+
+$(MESA_GLX_DIR)/indirect.c: glX_proto_send.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m proto | $(INDENT) $(INDENT_FLAGS) > $@
+
+$(MESA_GLX_DIR)/indirect.h: glX_proto_send.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m init_h > $@
+
+$(MESA_GLX_DIR)/indirect_init.c: glX_proto_send.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m init_c > $@
+
+$(MESA_GLX_DIR)/indirect_size.h $(XORG_GLX_DIR)/indirect_size.h: glX_proto_size.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_h --only-set -h _INDIRECT_SIZE_H_ \
+         | $(INDENT) $(INDENT_FLAGS) > $@
+
+$(MESA_GLX_DIR)/indirect_size.c: glX_proto_size.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_c --only-set \
+         | $(INDENT) $(INDENT_FLAGS) > $@
+
+######################################################################
+
+$(XORG_GLX_DIR)/indirect_dispatch.c: glX_proto_recv.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_c > $@
+
+$(XORG_GLX_DIR)/indirect_dispatch_swap.c: glX_proto_recv.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_c -s > $@
+
+$(XORG_GLX_DIR)/indirect_dispatch.h: glX_proto_recv.py gl_and_glX_API.xml $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_h -f gl_and_glX_API.xml -s > $@
+
+$(XORG_GLX_DIR)/indirect_size_get.h: glX_proto_size.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_h --only-get -h '_INDIRECT_SIZE_GET_H_' \
+         | $(INDENT) $(INDENT_FLAGS) > $@
+
+$(XORG_GLX_DIR)/indirect_size_get.c: glX_proto_size.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_c | $(INDENT) $(INDENT_FLAGS) > $@
+
+$(XORG_GLX_DIR)/indirect_reqsize.h: glX_proto_size.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m reqsize_h --only-get -h '_INDIRECT_SIZE_GET_H_' \
+         | $(INDENT) $(INDENT_FLAGS) -l200 > $@
+
+$(XORG_GLX_DIR)/indirect_reqsize.c: glX_proto_size.py $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -m reqsize_c | $(INDENT) $(INDENT_FLAGS) > $@
+
+$(XORG_GLX_DIR)/indirect_table.c: glX_server_table.py gl_and_glX_API.xml $(COMMON_GLX)
+       $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_and_glX_API.xml > $@
diff --git a/src/mapi/glapi/gen/NV_conditional_render.xml b/src/mapi/glapi/gen/NV_conditional_render.xml
new file mode 100644 (file)
index 0000000..8bb31dd
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<!-- Note: no GLX protocol info yet. -->
+
+
+<OpenGLAPI>
+
+<category name="GL_NV_condtitional_render" number="346">
+
+    <enum name="QUERY_WAIT_NV"               value="0x8E13"/>
+    <enum name="QUERY_NO_WAIT_NV"            value="0x8E14"/>
+    <enum name="QUERY_BY_REGION_WAIT_NV"     value="0x8E15"/>
+    <enum name="QUERY_BY_REGION_NO_WAIT_NV"  value="0x8E16"/>
+
+    <function name="BeginConditionalRenderNV" offset="assign">
+       <param name="query" type="GLuint"/>
+       <param name="mode" type="GLenum"/>
+    </function>
+
+    <function name="EndConditionalRenderNV" offset="assign">
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/OES_EGL_image.xml b/src/mapi/glapi/gen/OES_EGL_image.xml
new file mode 100644 (file)
index 0000000..1cb43d4
--- /dev/null
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<category name="GL_OES_EGL_image">
+
+    <function name="EGLImageTargetTexture2DOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="writeOffset" type="GLvoid *"/>
+    </function>
+
+    <function name="EGLImageTargetRenderbufferStorageOES" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="writeOffset" type="GLvoid *"/>
+    </function>
+
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/extension_helper.py b/src/mapi/glapi/gen/extension_helper.py
new file mode 100644 (file)
index 0000000..2c83b4e
--- /dev/null
@@ -0,0 +1,324 @@
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML
+import license
+import sys, getopt, string
+
+vtxfmt = [
+    "ArrayElement", \
+    "Color3f", \
+    "Color3fv", \
+    "Color4f", \
+    "Color4fv", \
+    "EdgeFlag", \
+    "EdgeFlagv", \
+    "EvalCoord1f", \
+    "EvalCoord1fv", \
+    "EvalCoord2f", \
+    "EvalCoord2fv", \
+    "EvalPoint1", \
+    "EvalPoint2", \
+    "FogCoordfEXT", \
+    "FogCoordfvEXT", \
+    "Indexf", \
+    "Indexfv", \
+    "Materialfv", \
+    "MultiTexCoord1fARB", \
+    "MultiTexCoord1fvARB", \
+    "MultiTexCoord2fARB", \
+    "MultiTexCoord2fvARB", \
+    "MultiTexCoord3fARB", \
+    "MultiTexCoord3fvARB", \
+    "MultiTexCoord4fARB", \
+    "MultiTexCoord4fvARB", \
+    "Normal3f", \
+    "Normal3fv", \
+    "SecondaryColor3fEXT", \
+    "SecondaryColor3fvEXT", \
+    "TexCoord1f", \
+    "TexCoord1fv", \
+    "TexCoord2f", \
+    "TexCoord2fv", \
+    "TexCoord3f", \
+    "TexCoord3fv", \
+    "TexCoord4f", \
+    "TexCoord4fv", \
+    "Vertex2f", \
+    "Vertex2fv", \
+    "Vertex3f", \
+    "Vertex3fv", \
+    "Vertex4f", \
+    "Vertex4fv", \
+    "CallList", \
+    "CallLists", \
+    "Begin", \
+    "End", \
+    "VertexAttrib1fNV", \
+    "VertexAttrib1fvNV", \
+    "VertexAttrib2fNV", \
+    "VertexAttrib2fvNV", \
+    "VertexAttrib3fNV", \
+    "VertexAttrib3fvNV", \
+    "VertexAttrib4fNV", \
+    "VertexAttrib4fvNV", \
+    "VertexAttrib1fARB", \
+    "VertexAttrib1fvARB", \
+    "VertexAttrib2fARB", \
+    "VertexAttrib2fvARB", \
+    "VertexAttrib3fARB", \
+    "VertexAttrib3fvARB", \
+    "VertexAttrib4fARB", \
+    "VertexAttrib4fvARB", \
+    "Rectf", \
+    "DrawArrays", \
+    "DrawElements", \
+    "DrawRangeElements", \
+    "EvalMesh1", \
+    "EvalMesh2", \
+]
+
+def all_entrypoints_in_abi(f, abi, api):
+       for n in f.entry_points:
+               [category, num] = api.get_category_for_name( n )
+               if category not in abi:
+                       return 0
+
+       return 1
+
+
+def any_entrypoints_in_abi(f, abi, api):
+       for n in f.entry_points:
+               [category, num] = api.get_category_for_name( n )
+               if category in abi:
+                       return 1
+
+       return 0
+
+
+def condition_for_function(f, abi, all_not_in_ABI):
+       """Create a C-preprocessor condition for the function.
+       
+       There are two modes of operation.  If all_not_in_ABI is set, a
+       condition is only created is all of the entry-point names for f are
+       not in the selected ABI.  If all_not_in_ABI is not set, a condition
+       is created if any entryp-point name is not in the selected ABI.
+       """
+
+       condition = []
+       for n in f.entry_points:
+               [category, num] = api.get_category_for_name( n )
+               if category not in abi:
+                       condition.append( 'defined(need_%s)' % (gl_XML.real_category_name( category )) )
+               elif all_not_in_ABI:
+                       return []
+
+       return condition
+
+
+class PrintGlExtensionGlue(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "extension_helper.py (from Mesa)"
+               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
+               return
+
+
+       def printRealHeader(self):
+               print '#include "utils.h"'
+               print '#include "main/dispatch.h"'
+               print ''
+               return
+
+
+       def printBody(self, api):
+               abi = [ "1.0", "1.1", "1.2", "GL_ARB_multitexture" ]
+
+               category_list = {}
+
+               print '#ifndef NULL'
+               print '# define NULL 0'
+               print '#endif'
+               print ''
+
+               for f in api.functionIterateAll():
+                       condition = condition_for_function(f, abi, 0)
+                       if len(condition):
+                               print '#if %s' % (string.join(condition, " || "))
+                               print 'static const char %s_names[] =' % (f.name)
+
+                               parameter_signature = ''
+                               for p in f.parameterIterator():
+                                       if p.is_padding:
+                                               continue
+
+                                       # FIXME: This is a *really* ugly hack. :(
+
+                                       tn = p.type_expr.get_base_type_node()
+                                       if p.is_pointer():
+                                               parameter_signature += 'p'
+                                       elif tn.integer:
+                                               parameter_signature += 'i'
+                                       elif tn.size == 4:
+                                               parameter_signature += 'f'
+                                       else:
+                                               parameter_signature += 'd'
+
+                               print '    "%s\\0" /* Parameter signature */' % (parameter_signature)
+
+                               for n in f.entry_points:
+                                       print '    "gl%s\\0"' % (n)
+
+                                       [category, num] = api.get_category_for_name( n )
+                                       if category not in abi:
+                                               c = gl_XML.real_category_name(category)
+                                               if not category_list.has_key(c):
+                                                       category_list[ c ] = []
+
+                                               category_list[ c ].append( f )
+
+                               print '    "";'
+                               print '#endif'
+                               print ''
+
+               keys = category_list.keys()
+               keys.sort()
+
+               for category in keys:
+                       print '#if defined(need_%s)' % (category)
+                       print 'static const struct dri_extension_function %s_functions[] = {' % (category)
+                       
+                       for f in category_list[ category ]:
+                               # A function either has an offset that is
+                               # assigned by the ABI, or it has a remap
+                               # index.
+                               if any_entrypoints_in_abi(f, abi, api):
+                                       index_name = "-1"
+                                       offset = f.offset
+                               else:
+                                       index_name = "%s_remap_index" % (f.name)
+                                       offset = -1
+
+                               print '    { %s_names, %s, %d },' % (f.name, index_name, offset)
+
+
+                       print '    { NULL, 0, 0 }'
+                       print '};'
+                       print '#endif'
+                       print ''
+               
+               return
+
+
+class PrintInitDispatch(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "extension_helper.py (from Mesa)"
+               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
+               return
+
+
+       def do_function_body(self, api, abi, vtxfmt_only):
+               last_condition_string = None
+               for f in api.functionIterateByOffset():
+                       if (f.name in vtxfmt) and not vtxfmt_only:
+                               continue
+
+                       if (f.name not in vtxfmt) and vtxfmt_only:
+                               continue
+
+                       condition = condition_for_function(f, abi, 1)
+                       condition_string = string.join(condition, " || ")
+
+                       if condition_string != last_condition_string:
+                               if last_condition_string:
+                                       print '#endif /* %s */' % (last_condition_string)
+
+                               if condition_string:
+                                       print '#if %s' % (condition_string)
+                               
+                       if vtxfmt_only:
+                               print '   disp->%s = vfmt->%s;' % (f.name, f.name)
+                       else:
+                               print '   disp->%s = _mesa_%s;' % (f.name, f.name)
+
+                       last_condition_string = condition_string
+
+               if last_condition_string:
+                       print '#endif /* %s */' % (last_condition_string)
+               
+
+
+       def printBody(self, api):
+               abi = [ "1.0", "1.1", "1.2", "GL_ARB_multitexture" ]
+               
+               print 'void driver_init_exec_table(struct _glapi_table *disp)'
+               print '{'
+               self.do_function_body(api, abi, 0)
+               print '}'
+               print ''
+               print 'void driver_install_vtxfmt(struct _glapi_table *disp, const GLvertexformat *vfmt)'
+               print '{'
+               self.do_function_body(api, abi, 1)
+               print '}'
+
+               return
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
+       print "    -m output_mode   Output mode can be one of 'extensions' or 'exec_init'."
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+    
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:")
+       except Exception,e:
+               show_usage()
+
+       mode = "extensions"
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               if arg == '-m':
+                       mode = val
+
+
+       api = gl_XML.parse_GL_API( file_name )
+
+       if mode == "extensions":
+               printer = PrintGlExtensionGlue()
+       elif mode == "exec_init":
+               printer = PrintInitDispatch()
+       else:
+               show_usage()
+
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/glX_API.xml b/src/mapi/glapi/gen/glX_API.xml
new file mode 100644 (file)
index 0000000..9e02aa4
--- /dev/null
@@ -0,0 +1,220 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<!-- Right now this file is just used to generate the GLX protocol
+     decode tables on the server.  The only information that is needed
+     for that purpose is the name of the function (or pseudo-function
+     in the case of Render of VendorPrivate) and its opcode.  Once
+     this file is used for other purposes, additional information will
+     need to be added.
+  -->
+
+<category name="1.0" window_system="glX">
+    <function name="Render">
+        <glx sop="1"/>
+    </function>
+
+    <function name="RenderLarge">
+        <glx sop="2"/>
+    </function>
+
+    <function name="CreateContext">
+        <glx sop="3"/>
+    </function>
+
+    <function name="DestroyContext">
+        <glx sop="4"/>
+    </function>
+
+    <function name="MakeCurrent">
+        <glx sop="5"/>
+    </function>
+
+    <function name="IsDirect">
+        <glx sop="6"/>
+    </function>
+
+    <function name="QueryVersion">
+        <glx sop="7"/>
+    </function>
+
+    <function name="WaitGL">
+        <glx sop="8"/>
+    </function>
+
+    <function name="WaitX">
+        <glx sop="9"/>
+    </function>
+
+    <function name="CopyContext">
+        <glx sop="10"/>
+    </function>
+
+    <function name="SwapBuffers">
+        <glx sop="11"/>
+    </function>
+
+    <function name="UseXFont">
+        <glx sop="12"/>
+    </function>
+
+    <function name="CreateGLXPixmap">
+        <glx sop="13"/>
+    </function>
+
+    <function name="GetVisualConfigs">
+        <glx sop="14"/>
+    </function>
+
+    <function name="DestroyGLXPixmap">
+        <glx sop="15"/>
+    </function>
+
+    <function name="VendorPrivate">
+        <glx sop="16"/>
+    </function>
+
+    <function name="VendorPrivateWithReply">
+        <glx sop="17"/>
+    </function>
+
+    <function name="QueryExtensionsString">
+        <glx sop="18"/>
+    </function>
+</category>
+
+<category name="1.1" window_system="glX">
+    <function name="QueryServerString">
+        <glx sop="19"/>
+    </function>
+
+    <function name="ClientInfo">
+        <glx sop="20"/>
+    </function>
+</category>
+
+<category name="1.3" window_system="glX">
+    <function name="GetFBConfigs">
+        <glx sop="21"/>
+    </function>
+
+    <function name="CreatePixmap">
+        <glx sop="22"/>
+    </function>
+
+    <function name="DestroyPixmap">
+        <glx sop="23"/>
+    </function>
+
+    <function name="CreateNewContext">
+        <glx sop="24"/>
+    </function>
+
+    <function name="QueryContext">
+        <glx sop="25"/>
+    </function>
+
+    <function name="MakeContextCurrent">
+        <glx sop="26"/>
+    </function>
+
+    <function name="CreatePbuffer">
+        <glx sop="27"/>
+    </function>
+
+    <function name="DestroyPbuffer">
+        <glx sop="28"/>
+    </function>
+
+    <function name="GetDrawableAttributes">
+        <glx sop="29"/>
+    </function>
+
+    <function name="ChangeDrawableAttributes">
+        <glx sop="30"/>
+    </function>
+
+    <function name="CreateWindow">
+        <glx sop="31"/>
+    </function>
+
+    <function name="DestroyWindow">
+        <glx sop="32"/>
+    </function>
+</category>
+
+<category name="GLX_SGI_swap_control" number="40" window_system="glX">
+    <function name="SwapIntervalSGI">
+        <return type="int"/>
+        <glx vendorpriv="65536"/>
+    </function>
+</category>
+
+<category name="GLX_SGI_make_current_read" number="42" window_system="glX">
+    <function name="MakeCurrentReadSGI">
+<!--        <param name="dpy" type="Display *"/>
+       <param name="draw" type="GLXDrawable"/>
+       <param name="read" type="GLXDrawable"/>
+       <param name="ctx" type="GLXContext"/> -->
+        <return type="Bool"/>
+        <glx vendorpriv="65537"/>
+    </function>
+</category>
+
+<category name="GLX_EXT_import_context" number="47" window_system="glX">
+    <function name="QueryContextInfoEXT">
+        <glx vendorpriv="1024"/>
+    </function>
+</category>
+
+<category name="GLX_SGIX_fbconfig" number="49" window_system="glX">
+    <function name="GetFBConfigsSGIX">
+        <glx vendorpriv="65540"/>
+    </function>
+
+    <function name="CreateContextWithConfigSGIX">
+        <glx vendorpriv="65541"/>
+    </function>
+
+    <function name="CreateGLXPixmapWithConfigSGIX">
+        <glx vendorpriv="65542"/>
+    </function>
+</category>
+
+<category name="GLX_SGIX_pbuffer" number="50" window_system="glX">
+    <function name="CreateGLXPbufferSGIX">
+        <glx vendorpriv="65543"/>
+    </function>
+
+    <function name="DestroyGLXPbufferSGIX">
+        <glx vendorpriv="65544"/>
+    </function>
+
+    <function name="ChangeDrawableAttributesSGIX">
+        <glx vendorpriv="65545"/>
+    </function>
+
+    <function name="GetDrawableAttributesSGIX">
+        <glx vendorpriv="65546"/>
+    </function>
+</category>
+
+<category name="GLX_MESA_copy_sub_buffer" number="215">
+    <function name="CopySubBufferMESA">
+        <glx vendorpriv="5154"/>
+    </function>
+</category>
+
+<category name="GLX_EXT_texture_from_pixmap">
+    <function name="BindTexImageEXT">
+        <glx vendorpriv="1330"/>
+    </function>
+
+    <function name="ReleaseTexImageEXT">
+        <glx vendorpriv="1331"/>
+    </function>
+</category>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/glX_XML.py b/src/mapi/glapi/gen/glX_XML.py
new file mode 100644 (file)
index 0000000..4c2e0f9
--- /dev/null
@@ -0,0 +1,570 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML
+import license
+import sys, getopt, string
+
+
+class glx_item_factory(gl_XML.gl_item_factory):
+       """Factory to create GLX protocol oriented objects derived from gl_item."""
+    
+       def create_item(self, name, element, context):
+               if name == "function":
+                       return glx_function(element, context)
+               elif name == "enum":
+                       return glx_enum(element, context)
+               elif name == "api":
+                       return glx_api(self)
+               else:
+                       return gl_XML.gl_item_factory.create_item(self, name, element, context)
+
+
+class glx_enum(gl_XML.gl_enum):
+       def __init__(self, element, context):
+               gl_XML.gl_enum.__init__(self, element, context)
+               
+               self.functions = {}
+
+               child = element.children
+               while child:
+                       if child.type == "element" and child.name == "size":
+                               n = child.nsProp( "name", None )
+                               c = child.nsProp( "count", None )
+                               m = child.nsProp( "mode", None )
+                               
+                               if not c:
+                                       c = self.default_count
+                               else:
+                                       c = int(c)
+
+                               if m == "get":
+                                       mode = 0
+                               else:
+                                       mode = 1
+
+                               if not self.functions.has_key(n):
+                                       self.functions[ n ] = [c, mode]
+
+                       child = child.next
+
+               return
+
+
+class glx_function(gl_XML.gl_function):
+       def __init__(self, element, context):
+               self.glx_rop = 0
+               self.glx_sop = 0
+               self.glx_vendorpriv = 0
+
+               self.glx_vendorpriv_names = []
+
+               # If this is set to true, it means that GLdouble parameters should be
+               # written to the GLX protocol packet in the order they appear in the
+               # prototype.  This is different from the "classic" ordering.  In the
+               # classic ordering GLdoubles are written to the protocol packet first,
+               # followed by non-doubles.  NV_vertex_program was the first extension
+               # to break with this tradition.
+
+               self.glx_doubles_in_order = 0
+
+               self.vectorequiv = None
+               self.output = None
+               self.can_be_large = 0
+               self.reply_always_array = 0
+               self.dimensions_in_reply = 0
+               self.img_reset = None
+
+               self.server_handcode = 0
+               self.client_handcode = 0
+               self.ignore = 0
+
+               self.count_parameter_list = []
+               self.counter_list = []
+               self.parameters_by_name = {}
+               self.offsets_calculated = 0
+
+               gl_XML.gl_function.__init__(self, element, context)
+               return
+
+
+       def process_element(self, element):
+               gl_XML.gl_function.process_element(self, element)
+
+               # If the function already has a vector equivalent set, don't
+               # set it again.  This can happen if an alias to a function
+               # appears after the function that it aliases.
+
+               if not self.vectorequiv:
+                       self.vectorequiv = element.nsProp("vectorequiv", None)
+
+
+               name = element.nsProp("name", None)
+               if name == self.name:
+                       for param in self.parameters:
+                               self.parameters_by_name[ param.name ] = param
+                               
+                               if len(param.count_parameter_list):
+                                       self.count_parameter_list.extend( param.count_parameter_list )
+                               
+                               if param.counter and param.counter not in self.counter_list:
+                                       self.counter_list.append(param.counter)
+
+
+               child = element.children
+               while child:
+                       if child.type == "element" and child.name == "glx":
+                               rop = child.nsProp( 'rop', None )
+                               sop = child.nsProp( 'sop', None )
+                               vop = child.nsProp( 'vendorpriv', None )
+
+                               if rop:
+                                       self.glx_rop = int(rop)
+
+                               if sop:
+                                       self.glx_sop = int(sop)
+
+                               if vop:
+                                       self.glx_vendorpriv = int(vop)
+                                       self.glx_vendorpriv_names.append(name)
+
+                               self.img_reset = child.nsProp( 'img_reset', None )
+
+                               # The 'handcode' attribute can be one of 'true',
+                               # 'false', 'client', or 'server'.
+
+                               handcode = child.nsProp( 'handcode', None )
+                               if handcode == "false":
+                                       self.server_handcode = 0
+                                       self.client_handcode = 0
+                               elif handcode == "true":
+                                       self.server_handcode = 1
+                                       self.client_handcode = 1
+                               elif handcode == "client":
+                                       self.server_handcode = 0
+                                       self.client_handcode = 1
+                               elif handcode == "server":
+                                       self.server_handcode = 1
+                                       self.client_handcode = 0
+                               else:
+                                       raise RuntimeError('Invalid handcode mode "%s" in function "%s".' % (handcode, self.name))
+
+                               self.ignore               = gl_XML.is_attr_true( child, 'ignore' )
+                               self.can_be_large         = gl_XML.is_attr_true( child, 'large' )
+                               self.glx_doubles_in_order = gl_XML.is_attr_true( child, 'doubles_in_order' )
+                               self.reply_always_array   = gl_XML.is_attr_true( child, 'always_array' )
+                               self.dimensions_in_reply  = gl_XML.is_attr_true( child, 'dimensions_in_reply' )
+
+                       child = child.next
+
+
+               # Do some validation of the GLX protocol information.  As
+               # new tests are discovered, they should be added here.
+
+               for param in self.parameters:
+                       if param.is_output and self.glx_rop != 0:
+                               raise RuntimeError("Render / RenderLarge commands cannot have outputs (%s)." % (self.name))
+
+               return
+
+
+       def has_variable_size_request(self):
+               """Determine if the GLX request packet is variable sized.
+
+               The GLX request packet is variable sized in several common
+               situations.
+               
+               1. The function has a non-output parameter that is counted
+                  by another parameter (e.g., the 'textures' parameter of
+                  glDeleteTextures).
+                  
+               2. The function has a non-output parameter whose count is
+                  determined by another parameter that is an enum (e.g., the
+                  'params' parameter of glLightfv).
+                  
+               3. The function has a non-output parameter that is an
+                  image.
+
+               4. The function must be hand-coded on the server.
+               """
+
+               if self.glx_rop == 0:
+                       return 0
+
+               if self.server_handcode or self.images:
+                       return 1
+
+               for param in self.parameters:
+                       if not param.is_output:
+                               if param.counter or len(param.count_parameter_list):
+                                       return 1
+
+               return 0
+
+
+       def variable_length_parameter(self):
+               for param in self.parameters:
+                       if not param.is_output:
+                               if param.counter or len(param.count_parameter_list):
+                                       return param
+                               
+               return None
+
+
+       def calculate_offsets(self):
+               if not self.offsets_calculated:
+                       # Calculate the offset of the first function parameter
+                       # in the GLX command packet.  This byte offset is
+                       # measured from the end of the Render / RenderLarge
+                       # header.  The offset for all non-pixel commends is
+                       # zero.  The offset for pixel commands depends on the
+                       # number of dimensions of the pixel data.
+
+                       if len(self.images) and not self.images[0].is_output:
+                               [dim, junk, junk, junk, junk] = self.images[0].get_dimensions()
+
+                               # The base size is the size of the pixel pack info
+                               # header used by images with the specified number
+                               # of dimensions.
+
+                               if dim <=  2:
+                                       offset = 20
+                               elif dim <= 4:
+                                       offset = 36
+                               else:
+                                       raise RuntimeError('Invalid number of dimensions %u for parameter "%s" in function "%s".' % (dim, self.image.name, self.name))
+                       else:
+                               offset = 0
+
+                       for param in self.parameterIterateGlxSend():
+                               if param.img_null_flag:
+                                       offset += 4
+
+                               if param.name != self.img_reset:
+                                       param.offset = offset
+                                       if not param.is_variable_length() and not param.is_client_only:
+                                               offset += param.size()
+                                       
+                               if self.pad_after( param ):
+                                       offset += 4
+
+
+                       self.offsets_calculated = 1
+               return
+
+
+       def offset_of(self, param_name):
+               self.calculate_offsets()
+               return self.parameters_by_name[ param_name ].offset
+
+
+       def parameterIterateGlxSend(self, include_variable_parameters = 1):
+               """Create an iterator for parameters in GLX request order."""
+
+               # The parameter lists are usually quite short, so it's easier
+               # (i.e., less code) to just generate a new list with the
+               # required elements than it is to create a new iterator class.
+               
+               temp = [ [],  [], [] ]
+               for param in self.parameters:
+                       if param.is_output: continue
+
+                       if param.is_variable_length():
+                               temp[2].append( param )
+                       elif not self.glx_doubles_in_order and param.is_64_bit():
+                               temp[0].append( param )
+                       else:
+                               temp[1].append( param )
+
+               parameters = temp[0]
+               parameters.extend( temp[1] )
+               if include_variable_parameters:
+                       parameters.extend( temp[2] )
+               return parameters.__iter__()
+
+
+       def parameterIterateCounters(self):
+               temp = []
+               for name in self.counter_list:
+                       temp.append( self.parameters_by_name[ name ] )
+
+               return temp.__iter__()
+
+
+       def parameterIterateOutputs(self):
+               temp = []
+               for p in self.parameters:
+                       if p.is_output:
+                               temp.append( p )
+
+               return temp
+
+
+       def command_fixed_length(self):
+               """Return the length, in bytes as an integer, of the
+               fixed-size portion of the command."""
+
+               if len(self.parameters) == 0:
+                       return 0
+               
+               self.calculate_offsets()
+
+               size = 0
+               for param in self.parameterIterateGlxSend(0):
+                       if param.name != self.img_reset and not param.is_client_only:
+                               if size == 0:
+                                       size = param.offset + param.size()
+                               else:
+                                       size += param.size()
+
+                               if self.pad_after( param ):
+                                       size += 4
+
+               for param in self.images:
+                       if param.img_null_flag or param.is_output:
+                               size += 4
+
+               return size
+
+
+       def command_variable_length(self):
+               """Return the length, as a string, of the variable-sized
+               portion of the command."""
+
+               size_string = ""
+               for p in self.parameterIterateGlxSend():
+                       if (not p.is_output) and (p.is_variable_length() or p.is_image()):
+                               # FIXME Replace the 1 in the size_string call
+                               # FIXME w/0 to eliminate some un-needed parnes
+                               # FIXME This would already be done, but it
+                               # FIXME adds some extra diffs to the generated
+                               # FIXME code.
+
+                               size_string = size_string + " + __GLX_PAD(%s)" % (p.size_string(1))
+
+               return size_string
+
+
+       def command_length(self):
+               size = self.command_fixed_length()
+
+               if self.glx_rop != 0:
+                       size += 4
+
+               size = ((size + 3) & ~3)
+               return "%u%s" % (size, self.command_variable_length())
+
+
+       def opcode_real_value(self):
+               """Get the true numeric value of the GLX opcode
+               
+               Behaves similarly to opcode_value, except for
+               X_GLXVendorPrivate and X_GLXVendorPrivateWithReply commands.
+               In these cases the value for the GLX opcode field (i.e.,
+               16 for X_GLXVendorPrivate or 17 for
+               X_GLXVendorPrivateWithReply) is returned.  For other 'single'
+               commands, the opcode for the command (e.g., 101 for
+               X_GLsop_NewList) is returned."""
+
+               if self.glx_vendorpriv != 0:
+                       if self.needs_reply():
+                               return 17
+                       else:
+                               return 16
+               else:
+                       return self.opcode_value()
+
+
+       def opcode_value(self):
+               """Get the unique protocol opcode for the glXFunction"""
+
+               if (self.glx_rop == 0) and self.vectorequiv:
+                       equiv = self.context.functions_by_name[ self.vectorequiv ]
+                       self.glx_rop = equiv.glx_rop
+
+
+               if self.glx_rop != 0:
+                       return self.glx_rop
+               elif self.glx_sop != 0:
+                       return self.glx_sop
+               elif self.glx_vendorpriv != 0:
+                       return self.glx_vendorpriv
+               else:
+                       return -1
+       
+
+       def opcode_rop_basename(self):
+               """Return either the name to be used for GLX protocol enum.
+               
+               Returns either the name of the function or the name of the
+               name of the equivalent vector (e.g., glVertex3fv for
+               glVertex3f) function."""
+
+               if self.vectorequiv == None:
+                       return self.name
+               else:
+                       return self.vectorequiv
+
+
+       def opcode_name(self):
+               """Get the unique protocol enum name for the glXFunction"""
+
+               if (self.glx_rop == 0) and self.vectorequiv:
+                       equiv = self.context.functions_by_name[ self.vectorequiv ]
+                       self.glx_rop = equiv.glx_rop
+                       self.glx_doubles_in_order = equiv.glx_doubles_in_order
+
+
+               if self.glx_rop != 0:
+                       return "X_GLrop_%s" % (self.opcode_rop_basename())
+               elif self.glx_sop != 0:
+                       return "X_GLsop_%s" % (self.name)
+               elif self.glx_vendorpriv != 0:
+                       return "X_GLvop_%s" % (self.name)
+               else:
+                       raise RuntimeError('Function "%s" has no opcode.' % (self.name))
+
+
+       def opcode_vendor_name(self, name):
+               if name in self.glx_vendorpriv_names:
+                       return "X_GLvop_%s" % (name)
+               else:
+                       raise RuntimeError('Function "%s" has no VendorPrivate opcode.' % (name))
+
+
+       def opcode_real_name(self):
+               """Get the true protocol enum name for the GLX opcode
+               
+               Behaves similarly to opcode_name, except for
+               X_GLXVendorPrivate and X_GLXVendorPrivateWithReply commands.
+               In these cases the string 'X_GLXVendorPrivate' or
+               'X_GLXVendorPrivateWithReply' is returned.  For other
+               single or render commands 'X_GLsop' or 'X_GLrop' plus the
+               name of the function returned."""
+
+               if self.glx_vendorpriv != 0:
+                       if self.needs_reply():
+                               return "X_GLXVendorPrivateWithReply"
+                       else:
+                               return "X_GLXVendorPrivate"
+               else:
+                       return self.opcode_name()
+
+
+       def needs_reply(self):
+               try:
+                       x = self._needs_reply
+               except Exception, e:
+                       x = 0
+                       if self.return_type != 'void':
+                               x = 1
+
+                       for param in self.parameters:
+                               if param.is_output:
+                                       x = 1
+                                       break
+
+                       self._needs_reply = x
+
+               return x
+
+
+       def pad_after(self, p):
+               """Returns the name of the field inserted after the
+               specified field to pad out the command header."""
+
+               for image in self.images:
+                       if image.img_pad_dimensions:
+                               if not image.height:
+                                       if p.name == image.width:
+                                               return "height"
+                                       elif p.name == image.img_xoff:
+                                               return "yoffset"
+                               elif not image.extent:
+                                       if p.name == image.depth:
+                                               # Should this be "size4d"?
+                                               return "extent"
+                                       elif p.name == image.img_zoff:
+                                               return "woffset"
+
+               return None
+
+
+       def has_different_protocol(self, name):
+               """Returns true if the named version of the function uses different protocol from the other versions.
+               
+               Some functions, such as glDeleteTextures and
+               glDeleteTexturesEXT are functionally identical, but have
+               different protocol.  This function returns true if the
+               named function is an alias name and that named version uses
+               different protocol from the function that is aliased.
+               """
+
+               return (name in self.glx_vendorpriv_names) and self.glx_sop
+
+
+       def static_glx_name(self, name):
+               if self.has_different_protocol(name):
+                       for n in self.glx_vendorpriv_names:
+                               if n in self.static_entry_points:
+                                       return n
+                               
+               return self.static_name(name)
+
+
+       def client_supported_for_indirect(self):
+               """Returns true if the function is supported on the client
+               side for indirect rendering."""
+
+               return not self.ignore and (self.offset != -1) and (self.glx_rop or self.glx_sop or self.glx_vendorpriv or self.vectorequiv or self.client_handcode)
+
+
+class glx_function_iterator:
+       """Class to iterate over a list of glXFunctions"""
+
+       def __init__(self, context):
+               self.iterator = context.functionIterateByOffset()
+               return
+
+
+       def __iter__(self):
+               return self
+
+
+       def next(self):
+               f = self.iterator.next()
+
+               if f.client_supported_for_indirect():
+                       return f
+               else:
+                       return self.next()
+
+
+class glx_api(gl_XML.gl_api):
+       def functionIterateGlx(self):
+               return glx_function_iterator(self)
+
diff --git a/src/mapi/glapi/gen/glX_doc.py b/src/mapi/glapi/gen/glX_doc.py
new file mode 100644 (file)
index 0000000..e9fbbe6
--- /dev/null
@@ -0,0 +1,280 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML, glX_XML, glX_proto_common, license
+import sys, getopt
+
+
+class glx_doc_item_factory(glX_proto_common.glx_proto_item_factory):
+       """Factory to create GLX protocol documentation oriented objects derived from glItem."""
+    
+       def create_item(self, name, element, context):
+               if name == "parameter":
+                       return glx_doc_parameter(element, context)
+               else:
+                       return glX_proto_common.glx_proto_item_factory.create_item(self, name, element, context)
+
+
+class glx_doc_parameter(gl_XML.gl_parameter):
+       def packet_type(self, type_dict):
+               """Get the type string for the packet header
+               
+               GLX protocol documentation uses type names like CARD32,
+               FLOAT64, LISTofCARD8, and ENUM.  This function converts the
+               type of the parameter to one of these names."""
+
+               list_of = ""
+               if self.is_array():
+                       list_of = "LISTof"
+
+               t_name = self.get_base_type_string()
+               if not type_dict.has_key( t_name ):
+                       type_name = "CARD8"
+               else:
+                       type_name = type_dict[ t_name ]
+
+               return "%s%s" % (list_of, type_name)
+
+
+       def packet_size(self):
+               p = None
+               s = self.size()
+               if s == 0:
+                       a_prod = "n"
+                       b_prod = self.p_type.size
+
+                       if not self.count_parameter_list and self.counter:
+                               a_prod = self.counter
+                       elif self.count_parameter_list and not self.counter or self.is_output:
+                               pass
+                       elif self.count_parameter_list and self.counter:
+                               b_prod = self.counter
+                       else:
+                               raise RuntimeError("Parameter '%s' to function '%s' has size 0." % (self.name, self.context.name))
+
+                       ss = "%s*%s" % (a_prod, b_prod)
+
+                       return [ss, p]
+               else:
+                       if s % 4 != 0:
+                               p = "p"
+
+                       return [str(s), p]
+
+class PrintGlxProtoText(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+               self.license = ""
+
+
+       def printHeader(self):
+               return
+
+
+       def body_size(self, f):
+               # At some point, refactor this function and
+               # glXFunction::command_payload_length.
+
+               size = 0;
+               size_str = ""
+               pad_str = ""
+               plus = ""
+               for p in f.parameterIterateGlxSend():
+                       [s, pad] = p.packet_size()
+                       try: 
+                               size += int(s)
+                       except Exception,e:
+                               size_str += "%s%s" % (plus, s)
+                               plus = "+"
+
+                       if pad != None:
+                               pad_str = pad
+
+               return [size, size_str, pad_str]
+
+
+       def print_render_header(self, f):
+               [size, size_str, pad_str] = self.body_size(f)
+               size += 4;
+
+               if size_str == "":
+                       s = "%u" % ((size + 3) & ~3)
+               elif pad_str != "":
+                       s = "%u+%s+%s" % (size, size_str, pad_str)
+               else:
+                       s = "%u+%s" % (size, size_str)
+
+               print '            2        %-15s rendering command length' % (s)
+               print '            2        %-4u            rendering command opcode' % (f.glx_rop)
+               return
+
+
+       def print_single_header(self, f):
+               [size, size_str, pad_str] = self.body_size(f)
+               size = ((size + 3) / 4) + 2;
+
+               if f.glx_vendorpriv != 0:
+                       size += 1
+
+               print '            1        CARD8           opcode (X assigned)'
+               print '            1        %-4u            GLX opcode (%s)' % (f.opcode_real_value(), f.opcode_real_name())
+
+               if size_str == "":
+                       s = "%u" % (size)
+               elif pad_str != "":
+                       s = "%u+((%s+%s)/4)" % (size, size_str, pad_str)
+               else:
+                       s = "%u+((%s)/4)" % (size, size_str)
+
+               print '            2        %-15s request length' % (s)
+
+               if f.glx_vendorpriv != 0:
+                       print '            4        %-4u            vendor specific opcode' % (f.opcode_value())
+                       
+               print '            4        GLX_CONTEXT_TAG context tag'
+
+               return
+               
+
+       def print_reply(self, f):
+               print '          =>'
+               print '            1        1               reply'
+               print '            1                        unused'
+               print '            2        CARD16          sequence number'
+
+               if f.output == None:
+                       print '            4        0               reply length'
+               elif f.reply_always_array:
+                       print '            4        m               reply length'
+               else:
+                       print '            4        m               reply length, m = (n == 1 ? 0 : n)'
+
+
+               output = None
+               for x in f.parameterIterateOutputs():
+                       output = x
+                       break
+
+
+               unused = 24
+               if f.return_type != 'void':
+                       print '            4        %-15s return value' % (f.return_type)
+                       unused -= 4
+               elif output != None:
+                       print '            4                        unused'
+                       unused -= 4
+
+               if output != None:
+                       print '            4        CARD32          n'
+                       unused -= 4
+
+               if output != None:
+                       if not f.reply_always_array:
+                               print ''
+                               print '            if (n = 1) this follows:'
+                               print ''
+                               print '            4        CARD32          %s' % (output.name)
+                               print '            %-2u                       unused' % (unused - 4)
+                               print ''
+                               print '            otherwise this follows:'
+                               print ''
+
+                       print '            %-2u                       unused' % (unused)
+
+                       [s, pad] = output.packet_size()
+                       print '            %-8s %-15s %s' % (s, output.packet_type( self.type_map ), output.name)
+                       if pad != None:
+                               try:
+                                       bytes = int(s)
+                                       bytes = 4 - (bytes & 3)
+                                       print '            %-8u %-15s unused' % (bytes, "")
+                               except Exception,e:
+                                       print '            %-8s %-15s unused, %s=pad(%s)' % (pad, "", pad, s)
+               else:
+                       print '            %-2u                       unused' % (unused)
+
+
+       def print_body(self, f):
+               for p in f.parameterIterateGlxSend():
+                       [s, pad] = p.packet_size()
+                       print '            %-8s %-15s %s' % (s, p.packet_type( self.type_map ), p.name)
+                       if pad != None:
+                               try:
+                                       bytes = int(s)
+                                       bytes = 4 - (bytes & 3)
+                                       print '            %-8u %-15s unused' % (bytes, "")
+                               except Exception,e:
+                                       print '            %-8s %-15s unused, %s=pad(%s)' % (pad, "", pad, s)
+
+       def printBody(self, api):
+               self.type_map = {}
+               for t in api.typeIterate():
+                       self.type_map[ "GL" + t.name ] = t.glx_name
+
+
+               # At some point this should be expanded to support pixel
+               # functions, but I'm not going to lose any sleep over it now.
+
+               for f in api.functionIterateByOffset():
+                       if f.client_handcode or f.server_handcode or f.vectorequiv or len(f.get_images()):
+                               continue
+
+
+                       if f.glx_rop:
+                               print '        %s' % (f.name)
+                               self.print_render_header(f)
+                       elif f.glx_sop or f.glx_vendorpriv:
+                               print '        %s' % (f.name)
+                               self.print_single_header(f)
+                       else:
+                               continue
+
+                       self.print_body(f)
+
+                       if f.needs_reply():
+                               self.print_reply(f)
+
+                       print ''
+               return
+
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:")
+       except Exception,e:
+               show_usage()
+
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+
+       api = gl_XML.parse_GL_API( file_name, glx_doc_item_factory() )
+
+       printer = PrintGlxProtoText()
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/glX_proto_common.py b/src/mapi/glapi/gen/glX_proto_common.py
new file mode 100644 (file)
index 0000000..6f094e2
--- /dev/null
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML, glX_XML
+import string
+
+
+class glx_proto_item_factory(glX_XML.glx_item_factory):
+       """Factory to create GLX protocol oriented objects derived from gl_item."""
+    
+       def create_item(self, name, element, context):
+               if name == "type":
+                       return glx_proto_type(element, context)
+               else:
+                       return glX_XML.glx_item_factory.create_item(self, name, element, context)
+
+
+class glx_proto_type(gl_XML.gl_type):
+       def __init__(self, element, context):
+               gl_XML.gl_type.__init__(self, element, context)
+
+               self.glx_name = element.nsProp( "glx_name", None )
+               return
+
+
+class glx_print_proto(gl_XML.gl_print_base):
+       def size_call(self, func, outputs_also = 0):
+               """Create C code to calculate 'compsize'.
+
+               Creates code to calculate 'compsize'.  If the function does
+               not need 'compsize' to be calculated, None will be
+               returned."""
+       
+               compsize = None
+
+               for param in func.parameterIterator():
+                       if outputs_also or not param.is_output:
+                               if param.is_image():
+                                       [dim, w, h, d, junk] = param.get_dimensions()
+
+                                       compsize = '__glImageSize(%s, %s, %s, %s, %s, %s)' % (w, h, d, param.img_format, param.img_type, param.img_target)
+                                       if not param.img_send_null:
+                                               compsize = '(%s != NULL) ? %s : 0' % (param.name, compsize)
+
+                                       return compsize
+
+                               elif len(param.count_parameter_list):
+                                       parameters = string.join( param.count_parameter_list, "," )
+                                       compsize = "__gl%s_size(%s)" % (func.name, parameters)
+
+                                       return compsize
+
+               return None
+
+
+       def emit_packet_size_calculation(self, f, bias):
+               # compsize is only used in the command size calculation if
+               # the function has a non-output parameter that has a non-empty
+               # counter_parameter_list.
+
+               compsize = self.size_call(f)
+               if compsize:
+                       print '    const GLuint compsize = %s;' % (compsize)
+
+               if bias:
+                       print '    const GLuint cmdlen = %s - %u;' % (f.command_length(), bias)
+               else:
+                       print '    const GLuint cmdlen = %s;' % (f.command_length())
+
+               #print ''
+               return compsize
diff --git a/src/mapi/glapi/gen/glX_proto_recv.py b/src/mapi/glapi/gen/glX_proto_recv.py
new file mode 100644 (file)
index 0000000..31745fc
--- /dev/null
@@ -0,0 +1,554 @@
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML, glX_XML, glX_proto_common, license
+import sys, getopt, string
+
+
+class PrintGlxDispatch_h(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "glX_proto_recv.py (from Mesa)"
+               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005", "IBM")
+
+               self.header_tag = "_INDIRECT_DISPATCH_H_"
+               return
+
+
+       def printRealHeader(self):
+               self.printVisibility( "HIDDEN", "hidden" )
+               print 'struct __GLXclientStateRec;'
+               print ''
+               return
+
+
+       def printBody(self, api):
+               for func in api.functionIterateAll():
+                       if not func.ignore and not func.vectorequiv:
+                               if func.glx_rop:
+                                       print 'extern HIDDEN void __glXDisp_%s(GLbyte * pc);' % (func.name)
+                                       print 'extern HIDDEN void __glXDispSwap_%s(GLbyte * pc);' % (func.name)
+                               elif func.glx_sop or func.glx_vendorpriv:
+                                       print 'extern HIDDEN int __glXDisp_%s(struct __GLXclientStateRec *, GLbyte *);' % (func.name)
+                                       print 'extern HIDDEN int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (func.name)
+
+                                       if func.glx_sop and func.glx_vendorpriv:
+                                               n = func.glx_vendorpriv_names[0]
+                                               print 'extern HIDDEN int __glXDisp_%s(struct __GLXclientStateRec *, GLbyte *);' % (n)
+                                               print 'extern HIDDEN int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (n)
+
+               return
+
+
+class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto):
+       def __init__(self, do_swap):
+               gl_XML.gl_print_base.__init__(self)
+               self.name = "glX_proto_recv.py (from Mesa)"
+               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005", "IBM")
+
+               self.real_types = [ '', '', 'uint16_t', '', 'uint32_t', '', '', '', 'uint64_t' ]
+               self.do_swap = do_swap
+               return
+
+
+       def printRealHeader(self):
+               print '#include <X11/Xmd.h>'
+               print '#include <GL/gl.h>'
+               print '#include <GL/glxproto.h>'
+
+               print '#include <inttypes.h>'
+               print '#include "indirect_size.h"'
+               print '#include "indirect_size_get.h"'
+               print '#include "indirect_dispatch.h"'
+               print '#include "glxserver.h"'
+               print '#include "glxbyteorder.h"'
+               print '#include "indirect_util.h"'
+               print '#include "singlesize.h"'
+               print '#include "glapi.h"'
+               print '#include "glapitable.h"'
+               print '#include "glthread.h"'
+               print '#include "glapidispatch.h"'
+               print ''
+               print '#define __GLX_PAD(x)  (((x) + 3) & ~3)'
+               print ''
+               print 'typedef struct {'
+               print '    __GLX_PIXEL_3D_HDR;'
+               print '} __GLXpixel3DHeader;'
+               print ''
+               print 'extern GLboolean __glXErrorOccured( void );'
+               print 'extern void __glXClearErrorOccured( void );'
+               print ''
+               print 'static const unsigned dummy_answer[2] = {0, 0};'
+               print ''
+               return
+
+
+       def printBody(self, api):
+               if self.do_swap:
+                       self.emit_swap_wrappers(api)
+
+
+               for func in api.functionIterateByOffset():
+                       if not func.ignore and not func.server_handcode and not func.vectorequiv and (func.glx_rop or func.glx_sop or func.glx_vendorpriv):
+                               self.printFunction(func, func.name)
+                               if func.glx_sop and func.glx_vendorpriv:
+                                       self.printFunction(func, func.glx_vendorpriv_names[0])
+                                       
+
+               return
+
+
+       def printFunction(self, f, name):
+               if (f.glx_sop or f.glx_vendorpriv) and (len(f.get_images()) != 0):
+                       return
+
+               if not self.do_swap:
+                       base = '__glXDisp'
+               else:
+                       base = '__glXDispSwap'
+
+               if f.glx_rop:
+                       print 'void %s_%s(GLbyte * pc)' % (base, name)
+               else:
+                       print 'int %s_%s(__GLXclientState *cl, GLbyte *pc)' % (base, name)
+
+               print '{'
+
+               if f.glx_rop or f.vectorequiv:
+                       self.printRenderFunction(f)
+               elif f.glx_sop or f.glx_vendorpriv:
+                       if len(f.get_images()) == 0: 
+                               self.printSingleFunction(f, name)
+               else:
+                       print "/* Missing GLX protocol for %s. */" % (name)
+
+               print '}'
+               print ''
+               return
+
+
+       def swap_name(self, bytes):
+               return 'bswap_%u_array' % (8 * bytes)
+
+
+       def emit_swap_wrappers(self, api):
+               self.type_map = {}
+               already_done = [ ]
+
+               for t in api.typeIterate():
+                       te = t.get_type_expression()
+                       t_size = te.get_element_size()
+
+                       if t_size > 1 and t.glx_name:
+                               
+                               t_name = "GL" + t.name
+                               self.type_map[ t_name ] = t.glx_name
+
+                               if t.glx_name not in already_done:
+                                       real_name = self.real_types[t_size]
+
+                                       print 'static %s' % (t_name)
+                                       print 'bswap_%s( const void * src )' % (t.glx_name)
+                                       print '{'
+                                       print '    union { %s dst; %s ret; } x;' % (real_name, t_name)
+                                       print '    x.dst = bswap_%u( *(%s *) src );' % (t_size * 8, real_name)
+                                       print '    return x.ret;'
+                                       print '}'
+                                       print ''
+                                       already_done.append( t.glx_name )
+
+               for bits in [16, 32, 64]:
+                       print 'static void *'
+                       print 'bswap_%u_array( uint%u_t * src, unsigned count )' % (bits, bits)
+                       print '{'
+                       print '    unsigned  i;'
+                       print ''
+                       print '    for ( i = 0 ; i < count ; i++ ) {'
+                       print '        uint%u_t temp = bswap_%u( src[i] );' % (bits, bits)
+                       print '        src[i] = temp;'
+                       print '    }'
+                       print ''
+                       print '    return src;'
+                       print '}'
+                       print ''
+                       
+
+       def fetch_param(self, param):
+               t = param.type_string()
+               o = param.offset
+               element_size = param.size() / param.get_element_count()
+
+               if self.do_swap and (element_size != 1):
+                       if param.is_array():
+                               real_name = self.real_types[ element_size ]
+
+                               swap_func = self.swap_name( element_size )
+                               return ' (%-8s)%s( (%s *) (pc + %2s), %s )' % (t, swap_func, real_name, o, param.count)
+                       else:
+                               t_name = param.get_base_type_string()
+                               return ' (%-8s)bswap_%-7s( pc + %2s )' % (t, self.type_map[ t_name ], o)
+               else:
+                       if param.is_array():
+                               return ' (%-8s)(pc + %2u)' % (t, o)
+                       else:
+                               return '*(%-8s *)(pc + %2u)' % (t, o)
+                               
+               return None
+
+
+       def emit_function_call(self, f, retval_assign, indent):
+               list = []
+
+               for param in f.parameterIterator():
+                       if param.is_padding:
+                               continue
+
+                       if param.is_counter or param.is_image() or param.is_output or param.name in f.count_parameter_list or len(param.count_parameter_list):
+                               location = param.name
+                       else:
+                               location = self.fetch_param(param)
+
+                       list.append( '%s        %s' % (indent, location) )
+                       
+
+               if len( list ):
+                       print '%s    %sCALL_%s( GET_DISPATCH(), (' % (indent, retval_assign, f.name)
+                       print string.join( list, ",\n" )
+                       print '%s    ) );' % (indent)
+               else:
+                       print '%s    %sCALL_%s( GET_DISPATCH(), () );' % (indent, retval_assign, f.name)
+               return
+
+
+       def common_func_print_just_start(self, f, indent):
+               align64 = 0
+               need_blank = 0
+
+
+               f.calculate_offsets()
+               for param in f.parameterIterateGlxSend():
+                       # If any parameter has a 64-bit base type, then we
+                       # have to do alignment magic for the while thing.
+
+                       if param.is_64_bit():
+                               align64 = 1
+
+
+                       # FIXME img_null_flag is over-loaded.  In addition to
+                       # FIXME being used for images, it is used to signify
+                       # FIXME NULL data pointers for vertex buffer object
+                       # FIXME related functions.  Re-name it to null_data
+                       # FIXME or something similar.
+
+                       if param.img_null_flag:
+                               print '%s    const CARD32 ptr_is_null = *(CARD32 *)(pc + %s);' % (indent, param.offset - 4)
+                               cond = '(ptr_is_null != 0) ? NULL : '
+                       else:
+                               cond = ""
+
+
+                       type_string = param.type_string()
+
+                       if param.is_image():
+                               offset = f.offset_of( param.name )
+
+                               print '%s    %s const %s = (%s) (%s(pc + %s));' % (indent, type_string, param.name, type_string, cond, offset)
+                               
+                               if param.depth:
+                                       print '%s    __GLXpixel3DHeader * const hdr = (__GLXpixel3DHeader *)(pc);' % (indent)
+                               else:
+                                       print '%s    __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc);' % (indent)
+
+                               need_blank = 1
+                       elif param.is_counter or param.name in f.count_parameter_list:
+                               location = self.fetch_param(param)
+                               print '%s    const %s %s = %s;' % (indent, type_string, param.name, location)
+                               need_blank = 1
+                       elif len(param.count_parameter_list):
+                               if param.size() == 1 and not self.do_swap:
+                                       location = self.fetch_param(param)
+                                       print '%s    %s %s = %s%s;' % (indent, type_string, param.name, cond, location)
+                               else:
+                                       print '%s    %s %s;' % (indent, type_string, param.name)
+                               need_blank = 1
+
+
+
+               if need_blank:
+                       print ''
+
+               if align64:
+                       print '#ifdef __GLX_ALIGN64'
+
+                       if f.has_variable_size_request():
+                               self.emit_packet_size_calculation(f, 4)
+                               s = "cmdlen"
+                       else:
+                               s = str((f.command_fixed_length() + 3) & ~3)
+
+                       print '    if ((unsigned long)(pc) & 7) {'
+                       print '        (void) memmove(pc-4, pc, %s);' % (s)
+                       print '        pc -= 4;'
+                       print '    }'
+                       print '#endif'
+                       print ''
+
+
+               need_blank = 0
+               if self.do_swap:
+                       for param in f.parameterIterateGlxSend():
+                               if param.count_parameter_list:
+                                       o = param.offset
+                                       count = param.get_element_count()
+                                       type_size = param.size() / count
+                                       
+                                       if param.counter:
+                                               count_name = param.counter
+                                       else:
+                                               count_name = str(count)
+
+                                       # This is basically an ugly special-
+                                       # case for glCallLists.
+
+                                       if type_size == 1:
+                                               x = [] 
+                                               x.append( [1, ['BYTE', 'UNSIGNED_BYTE', '2_BYTES', '3_BYTES', '4_BYTES']] )
+                                               x.append( [2, ['SHORT', 'UNSIGNED_SHORT']] )
+                                               x.append( [4, ['INT', 'UNSIGNED_INT', 'FLOAT']] )
+
+                                               print '    switch(%s) {' % (param.count_parameter_list[0])
+                                               for sub in x:
+                                                       for t_name in sub[1]:
+                                                               print '    case GL_%s:' % (t_name)
+
+                                                       if sub[0] == 1:
+                                                               print '        %s = (%s) (pc + %s); break;' % (param.name, param.type_string(), o)
+                                                       else:
+                                                               swap_func = self.swap_name(sub[0])
+                                                               print '        %s = (%s) %s( (%s *) (pc + %s), %s ); break;' % (param.name, param.type_string(), swap_func, self.real_types[sub[0]], o, count_name)
+                                               print '    default:'
+                                               print '        return;'
+                                               print '    }'
+                                       else:
+                                               swap_func = self.swap_name(type_size)
+                                               compsize = self.size_call(f, 1)
+                                               print '    %s = (%s) %s( (%s *) (pc + %s), %s );' % (param.name, param.type_string(), swap_func, self.real_types[type_size], o, compsize)
+
+                                       need_blank = 1
+
+               else:
+                       for param in f.parameterIterateGlxSend():
+                               if param.count_parameter_list:
+                                       print '%s    %s = (%s) (pc + %s);' % (indent, param.name, param.type_string(), param.offset)
+                                       need_blank = 1
+
+
+               if need_blank:
+                       print ''
+
+
+               return
+
+
+       def printSingleFunction(self, f, name):
+               if name not in f.glx_vendorpriv_names:
+                       print '    xGLXSingleReq * const req = (xGLXSingleReq *) pc;'
+               else:
+                       print '    xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;'
+
+               print '    int error;'
+
+               if self.do_swap:
+                   print '    __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);'
+               else:
+                   print '    __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);'
+
+               print ''
+               if name not in f.glx_vendorpriv_names:
+                       print '    pc += __GLX_SINGLE_HDR_SIZE;'
+               else:
+                       print '    pc += __GLX_VENDPRIV_HDR_SIZE;'
+
+               print '    if ( cx != NULL ) {'
+               self.common_func_print_just_start(f, "    ")
+               
+
+               if f.return_type != 'void':
+                       print '        %s retval;' % (f.return_type)
+                       retval_string = "retval"
+                       retval_assign = "retval = "
+               else:
+                       retval_string = "0"
+                       retval_assign = ""
+
+
+               type_size = 0
+               answer_string = "dummy_answer"
+               answer_count = "0"
+               is_array_string = "GL_FALSE"
+
+               for param in f.parameterIterateOutputs():
+                       answer_type = param.get_base_type_string()
+                       if answer_type == "GLvoid":
+                               answer_type = "GLubyte"
+
+
+                       c = param.get_element_count()
+                       type_size = (param.size() / c)
+                       if type_size == 1:
+                               size_scale = ""
+                       else:
+                               size_scale = " * %u" % (type_size)
+
+
+                       if param.count_parameter_list:
+                               print '        const GLuint compsize = %s;' % (self.size_call(f, 1))
+                               print '        %s answerBuffer[200];' %  (answer_type)
+                               print '        %s %s = __glXGetAnswerBuffer(cl, compsize%s, answerBuffer, sizeof(answerBuffer), %u);' % (param.type_string(), param.name, size_scale, type_size )
+                               answer_string = param.name
+                               answer_count = "compsize"
+
+                               print ''
+                               print '        if (%s == NULL) return BadAlloc;' % (param.name)
+                               print '        __glXClearErrorOccured();'
+                               print ''
+                       elif param.counter:
+                               print '        %s answerBuffer[200];' %  (answer_type)
+                               print '        %s %s = __glXGetAnswerBuffer(cl, %s%s, answerBuffer, sizeof(answerBuffer), %u);' % (param.type_string(), param.name, param.counter, size_scale, type_size)
+                               answer_string = param.name
+                               answer_count = param.counter
+                       elif c >= 1:
+                               print '        %s %s[%u];' % (answer_type, param.name, c)
+                               answer_string = param.name
+                               answer_count = "%u" % (c)
+
+                       if f.reply_always_array:
+                               is_array_string = "GL_TRUE"
+
+
+               self.emit_function_call(f, retval_assign, "    ")
+
+
+               if f.needs_reply():
+                       if self.do_swap:
+                               for param in f.parameterIterateOutputs():
+                                       c = param.get_element_count()
+                                       type_size = (param.size() / c)
+
+                                       if type_size > 1:
+                                               swap_name = self.swap_name( type_size )
+                                               print '        (void) %s( (uint%u_t *) %s, %s );' % (swap_name, 8 * type_size, param.name, answer_count)
+
+
+                               reply_func = '__glXSendReplySwap'
+                       else:
+                               reply_func = '__glXSendReply'
+
+                       print '        %s(cl->client, %s, %s, %u, %s, %s);' % (reply_func, answer_string, answer_count, type_size, is_array_string, retval_string)
+               #elif f.note_unflushed:
+               #       print '        cx->hasUnflushedCommands = GL_TRUE;'
+
+               print '        error = Success;'
+               print '    }'
+               print ''
+               print '    return error;'
+               return
+
+
+       def printRenderFunction(self, f):
+               # There are 4 distinct phases in a rendering dispatch function.
+               # In the first phase we compute the sizes and offsets of each
+               # element in the command.  In the second phase we (optionally)
+               # re-align 64-bit data elements.  In the third phase we
+               # (optionally) byte-swap array data.  Finally, in the fourth
+               # phase we actually dispatch the function.
+
+               self.common_func_print_just_start(f, "")
+
+               images = f.get_images()
+               if len(images):
+                       if self.do_swap:
+                               pre = "bswap_CARD32( & "
+                               post = " )"
+                       else:
+                               pre = ""
+                               post = ""
+
+                       img = images[0]
+
+                       # swapBytes and lsbFirst are single byte fields, so
+                       # the must NEVER be byte-swapped.
+
+                       if not (img.img_type == "GL_BITMAP" and img.img_format == "GL_COLOR_INDEX"):
+                               print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES,   hdr->swapBytes) );'
+
+                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST,    hdr->lsbFirst) );'
+
+                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH,   (GLint) %shdr->rowLength%s) );' % (pre, post)
+                       if img.depth:
+                               print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_IMAGE_HEIGHT, (GLint) %shdr->imageHeight%s) );' % (pre, post)
+                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS,    (GLint) %shdr->skipRows%s) );' % (pre, post)
+                       if img.depth:
+                               print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_IMAGES,  (GLint) %shdr->skipImages%s) );' % (pre, post)
+                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS,  (GLint) %shdr->skipPixels%s) );' % (pre, post)
+                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT,    (GLint) %shdr->alignment%s) );' % (pre, post)
+                       print ''
+
+
+               self.emit_function_call(f, "", "")
+               return
+
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:s")
+       except Exception,e:
+               show_usage()
+
+       mode = "dispatch_c"
+       do_swap = 0
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-m":
+                       mode = val
+               elif arg == "-s":
+                       do_swap = 1
+
+       if mode == "dispatch_c":
+               printer = PrintGlxDispatchFunctions(do_swap)
+       elif mode == "dispatch_h":
+               printer = PrintGlxDispatch_h()
+       else:
+               show_usage()
+
+       api = gl_XML.parse_GL_API( file_name, glX_proto_common.glx_proto_item_factory() )
+
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/glX_proto_send.py b/src/mapi/glapi/gen/glX_proto_send.py
new file mode 100644 (file)
index 0000000..e732282
--- /dev/null
@@ -0,0 +1,1042 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+#    Jeremy Kolb <jkolb@brandeis.edu>
+
+import gl_XML, glX_XML, glX_proto_common, license
+import sys, getopt, copy, string
+
+def convertStringForXCB(str):
+    tmp = ""
+    special = [ "ARB" ]
+    i = 0
+    while i < len(str):
+        if str[i:i+3] in special:
+            tmp = '%s_%s' % (tmp, string.lower(str[i:i+3]))
+            i = i + 2;
+        elif str[i].isupper():
+            tmp = '%s_%s' % (tmp, string.lower(str[i]))
+        else:
+            tmp = '%s%s' % (tmp, str[i])
+        i += 1
+    return tmp
+
+def hash_pixel_function(func):
+       """Generate a 'unique' key for a pixel function.  The key is based on
+       the parameters written in the command packet.  This includes any
+       padding that might be added for the original function and the 'NULL
+       image' flag."""
+
+
+       h = ""
+       hash_pre = ""
+       hash_suf = ""
+       for param in func.parameterIterateGlxSend():
+               if param.is_image():
+                       [dim, junk, junk, junk, junk] = param.get_dimensions()
+
+                       d = (dim + 1) & ~1
+                       hash_pre = "%uD%uD_" % (d - 1, d)
+
+                       if param.img_null_flag:
+                               hash_suf = "_NF"
+
+               h += "%u" % (param.size())
+
+               if func.pad_after(param):
+                       h += "4"
+
+
+       n = func.name.replace("%uD" % (dim), "")
+       n = "__glx_%s_%uD%uD" % (n, d - 1, d)
+
+       h = hash_pre + h + hash_suf
+       return [h, n]
+
+
+class glx_pixel_function_stub(glX_XML.glx_function):
+       """Dummy class used to generate pixel "utility" functions that are
+       shared by multiple dimension image functions.  For example, these
+       objects are used to generate shared functions used to send GLX
+       protocol for TexImage1D and TexImage2D, TexSubImage1D and
+       TexSubImage2D, etc."""
+
+       def __init__(self, func, name):
+               # The parameters to the utility function are the same as the
+               # parameters to the real function except for the added "pad"
+               # parameters.
+
+               self.name = name
+               self.images = []
+               self.parameters = []
+               self.parameters_by_name = {}
+               for _p in func.parameterIterator():
+                       p = copy.copy(_p)
+                       self.parameters.append(p)
+                       self.parameters_by_name[ p.name ] = p
+
+
+                       if p.is_image():
+                               self.images.append(p)
+                               p.height = "height"
+
+                               if p.img_yoff == None:
+                                       p.img_yoff = "yoffset"
+
+                               if p.depth:
+                                       if p.extent == None:
+                                               p.extent = "extent"
+
+                                       if p.img_woff == None:
+                                               p.img_woff = "woffset"
+
+
+                       pad_name = func.pad_after(p)
+                       if pad_name:
+                               pad = copy.copy(p)
+                               pad.name = pad_name
+                               self.parameters.append(pad)
+                               self.parameters_by_name[ pad.name ] = pad
+                               
+
+               self.return_type = func.return_type
+
+               self.glx_rop = ~0
+               self.glx_sop = 0
+               self.glx_vendorpriv = 0
+
+               self.glx_doubles_in_order = func.glx_doubles_in_order
+
+               self.vectorequiv = None
+               self.output = None
+               self.can_be_large = func.can_be_large
+               self.reply_always_array = func.reply_always_array
+               self.dimensions_in_reply = func.dimensions_in_reply
+               self.img_reset = None
+
+               self.server_handcode = 0
+               self.client_handcode = 0
+               self.ignore = 0
+
+               self.count_parameter_list = func.count_parameter_list
+               self.counter_list = func.counter_list
+               self.offsets_calculated = 0
+               return
+
+
+class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
+       def __init__(self):
+               glX_proto_common.glx_print_proto.__init__(self)
+               self.name = "glX_proto_send.py (from Mesa)"
+               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004, 2005", "IBM")
+
+
+               self.last_category = ""
+               self.generic_sizes = [3, 4, 6, 8, 12, 16, 24, 32]
+               self.pixel_stubs = {}
+               self.debug = 0
+               return
+
+       def printRealHeader(self):
+               print ''
+               print '#include <GL/gl.h>'
+               print '#include "indirect.h"'
+               print '#include "glxclient.h"'
+               print '#include "indirect_size.h"'
+               print '#include "glapidispatch.h"'
+               print '#include "glapi.h"'
+               print '#include "glthread.h"'
+               print '#include <GL/glxproto.h>'
+               print '#ifdef USE_XCB'
+               print '#include <X11/Xlib-xcb.h>'
+               print '#include <xcb/xcb.h>'
+               print '#include <xcb/glx.h>'
+               print '#endif /* USE_XCB */'
+
+               print ''
+               print '#define __GLX_PAD(n) (((n) + 3) & ~3)'
+               print ''
+               self.printFastcall()
+               self.printNoinline()
+               print ''
+               print '#ifndef __GNUC__'
+               print '#  define __builtin_expect(x, y) x'
+               print '#endif'
+               print ''
+               print '/* If the size and opcode values are known at compile-time, this will, on'
+               print ' * x86 at least, emit them with a single instruction.'
+               print ' */'
+               print '#define emit_header(dest, op, size)            \\'
+               print '    do { union { short s[2]; int i; } temp;    \\'
+               print '         temp.s[0] = (size); temp.s[1] = (op); \\'
+               print '         *((int *)(dest)) = temp.i; } while(0)'
+               print ''
+               print """NOINLINE 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;
+}
+
+NOINLINE 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);
+        }
+    }
+}
+
+#define X_GLXSingle 0
+
+NOINLINE FASTCALL 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;
+}
+
+NOINLINE FASTCALL 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;
+}
+
+const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
+
+#define zero                        (__glXDefaultPixelStore+0)
+#define one                         (__glXDefaultPixelStore+8)
+#define default_pixel_store_1D      (__glXDefaultPixelStore+4)
+#define default_pixel_store_1D_size 20
+#define default_pixel_store_2D      (__glXDefaultPixelStore+4)
+#define default_pixel_store_2D_size 20
+#define default_pixel_store_3D      (__glXDefaultPixelStore+0)
+#define default_pixel_store_3D_size 36
+#define default_pixel_store_4D      (__glXDefaultPixelStore+0)
+#define default_pixel_store_4D_size 36
+"""
+
+               for size in self.generic_sizes:
+                       self.print_generic_function(size)
+               return
+
+
+       def printBody(self, api):
+
+               self.pixel_stubs = {}
+               generated_stubs = []
+
+               for func in api.functionIterateGlx():
+                       if func.client_handcode: continue
+
+                       # If the function is a pixel function with a certain
+                       # GLX protocol signature, create a fake stub function
+                       # for it.  For example, create a single stub function
+                       # that is used to implement both glTexImage1D and
+                       # glTexImage2D.
+
+                       if func.glx_rop != 0:
+                               do_it = 0
+                               for image in func.get_images():
+                                       if image.img_pad_dimensions:
+                                               do_it = 1
+                                               break
+
+
+                               if do_it:
+                                       [h, n] = hash_pixel_function(func)
+
+
+                                       self.pixel_stubs[ func.name ] = n
+                                       if h not in generated_stubs:
+                                               generated_stubs.append(h)
+
+                                               fake_func = glx_pixel_function_stub( func, n )
+                                               self.printFunction(fake_func, fake_func.name)
+
+
+                       self.printFunction(func, func.name)
+                       if func.glx_sop and func.glx_vendorpriv:
+                               self.printFunction(func, func.glx_vendorpriv_names[0])
+
+               return
+
+
+       def printFunction(self, func, name):
+               footer = '}\n'
+               if func.glx_rop == ~0:
+                       print 'static %s' % (func.return_type)
+                       print '%s( unsigned opcode, unsigned dim, %s )' % (func.name, func.get_parameter_string())
+                       print '{'
+               else:
+                       if func.has_different_protocol(name):
+                               if func.return_type == "void":
+                                       ret_string = ''
+                               else:
+                                       ret_string = "return "
+
+                               func_name = func.static_glx_name(name)
+                               print '#define %s %d' % (func.opcode_vendor_name(name), func.glx_vendorpriv)
+                               print '%s gl%s(%s)' % (func.return_type, func_name, func.get_parameter_string())
+                               print '{'
+                               print '    __GLXcontext * const gc = __glXGetCurrentContext();'
+                               print ''
+                               print '#if defined(GLX_DIRECT_RENDERING) && !defined(GLX_USE_APPLEGL)'
+                               print '    if (gc->driContext) {'
+                               print '    %sCALL_%s(GET_DISPATCH(), (%s));' % (ret_string, func.name, func.get_called_parameter_string())
+                               print '    } else'
+                               print '#endif'
+                               print '    {'
+
+                               footer = '}\n}\n'
+                       else:
+                               print '#define %s %d' % (func.opcode_name(), func.opcode_value())
+
+                               print '%s __indirect_gl%s(%s)' % (func.return_type, name, func.get_parameter_string())
+                               print '{'
+
+
+               if func.glx_rop != 0 or func.vectorequiv != None:
+                       if len(func.images):
+                               self.printPixelFunction(func)
+                       else:
+                               self.printRenderFunction(func)
+               elif func.glx_sop != 0 or func.glx_vendorpriv != 0:
+                       self.printSingleFunction(func, name)
+                       pass
+               else:
+                       print "/* Missing GLX protocol for %s. */" % (name)
+
+               print footer
+               return
+
+
+       def print_generic_function(self, n):
+               size = (n + 3) & ~3
+               print """static FASTCALL NOINLINE void
+generic_%u_byte( GLint rop, const void * ptr )
+{
+    __GLXcontext * const gc = __glXGetCurrentContext();
+    const GLuint cmdlen = %u;
+
+    emit_header(gc->pc, rop, cmdlen);
+    (void) memcpy((void *)(gc->pc + 4), ptr, %u);
+    gc->pc += cmdlen;
+    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
+}
+""" % (n, size + 4, size)
+               return
+
+
+       def common_emit_one_arg(self, p, pc, adjust, extra_offset):
+               if p.is_array():
+                       src_ptr = p.name
+               else:
+                       src_ptr = "&" + p.name
+
+               if p.is_padding:
+                       print '(void) memset((void *)(%s + %u), 0, %s);' \
+                           % (pc, p.offset + adjust, p.size_string() )
+               elif not extra_offset:
+                       print '(void) memcpy((void *)(%s + %u), (void *)(%s), %s);' \
+                           % (pc, p.offset + adjust, src_ptr, p.size_string() )
+               else:
+                       print '(void) memcpy((void *)(%s + %u + %s), (void *)(%s), %s);' \
+                           % (pc, p.offset + adjust, extra_offset, src_ptr, p.size_string() )
+
+       def common_emit_args(self, f, pc, adjust, skip_vla):
+               extra_offset = None
+
+               for p in f.parameterIterateGlxSend( not skip_vla ):
+                       if p.name != f.img_reset:
+                               self.common_emit_one_arg(p, pc, adjust, extra_offset)
+                               
+                               if p.is_variable_length():
+                                       temp = p.size_string()
+                                       if extra_offset:
+                                               extra_offset += " + %s" % (temp)
+                                       else:
+                                               extra_offset = temp
+
+               return
+
+
+       def pixel_emit_args(self, f, pc, large):
+               """Emit the arguments for a pixel function.  This differs from
+               common_emit_args in that pixel functions may require padding
+               be inserted (i.e., for the missing width field for
+               TexImage1D), and they may also require a 'NULL image' flag
+               be inserted before the image data."""
+
+               if large:
+                       adjust = 8
+               else:
+                       adjust = 4
+
+               for param in f.parameterIterateGlxSend():
+                       if not param.is_image():
+                               self.common_emit_one_arg(param, pc, adjust, None)
+
+                               if f.pad_after(param):
+                                       print '(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset + param.size()) + adjust)
+
+                       else:
+                               [dim, width, height, depth, extent] = param.get_dimensions()
+                               if f.glx_rop == ~0:
+                                       dim_str = "dim"
+                               else:
+                                       dim_str = str(dim)
+
+                               if param.is_padding:
+                                       print '(void) memset((void *)(%s + %u), 0, %s);' \
+                                       % (pc, (param.offset - 4) + adjust, param.size_string() )
+
+                               if param.img_null_flag:
+                                       if large:
+                                               print '(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset - 4) + adjust)
+                                       else:
+                                               print '(void) memcpy((void *)(%s + %u), (void *)((%s == NULL) ? one : zero), 4);' % (pc, (param.offset - 4) + adjust, param.name)
+
+
+                               pixHeaderPtr = "%s + %u" % (pc, adjust)
+                               pcPtr = "%s + %u" % (pc, param.offset + adjust)
+
+                               if not large:
+                                       if param.img_send_null:
+                                               condition = '(compsize > 0) && (%s != NULL)' % (param.name)
+                                       else:
+                                               condition = 'compsize > 0'
+
+                                       print 'if (%s) {' % (condition)
+                                       print '    (*gc->fillImage)(gc, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
+                                       print '} else {'
+                                       print '    (void) memcpy( %s, default_pixel_store_%uD, default_pixel_store_%uD_size );' % (pixHeaderPtr, dim, dim)
+                                       print '}'
+                               else:
+                                       print '__glXSendLargeImage(gc, compsize, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
+
+               return
+
+
+       def large_emit_begin(self, f, op_name = None):
+               if not op_name:
+                       op_name = f.opcode_real_name()
+
+               print 'const GLint op = %s;' % (op_name)
+               print 'const GLuint cmdlenLarge = cmdlen + 4;'
+               print 'GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);'
+               print '(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);'
+               print '(void) memcpy((void *)(pc + 4), (void *)(&op), 4);'
+               return
+
+
+       def common_func_print_just_start(self, f, name):
+               print '    __GLXcontext * const gc = __glXGetCurrentContext();'
+
+               # The only reason that single and vendor private commands need
+               # a variable called 'dpy' is becuase they use the SyncHandle
+               # macro.  For whatever brain-dead reason, that macro is hard-
+               # coded to use a variable called 'dpy' instead of taking a
+               # parameter.
+
+               # FIXME Simplify the logic related to skip_condition and
+               # FIXME condition_list in this function.  Basically, remove
+               # FIXME skip_condition, and just append the "dpy != NULL" type
+               # FIXME condition to condition_list from the start.  The only
+               # FIXME reason it's done in this confusing way now is to
+               # FIXME minimize the diffs in the generated code.
+
+               if not f.glx_rop:
+                       for p in f.parameterIterateOutputs():
+                               if p.is_image() and (p.img_format != "GL_COLOR_INDEX" or p.img_type != "GL_BITMAP"):
+                                       print '    const __GLXattribute * const state = gc->client_state_private;'
+                                       break
+
+                       print '    Display * const dpy = gc->currentDpy;'
+                       skip_condition = "dpy != NULL"
+               elif f.can_be_large:
+                       skip_condition = "gc->currentDpy != NULL"
+               else:
+                       skip_condition = None
+
+
+               if f.return_type != 'void':
+                       print '    %s retval = (%s) 0;' % (f.return_type, f.return_type)
+
+
+               if name != None and name not in f.glx_vendorpriv_names:
+                       print '#ifndef USE_XCB'
+               self.emit_packet_size_calculation(f, 0)
+               if name != None and name not in f.glx_vendorpriv_names:
+                       print '#endif'
+
+               condition_list = []
+               for p in f.parameterIterateCounters():
+                       condition_list.append( "%s >= 0" % (p.name) )
+                       # 'counter' parameters cannot be negative
+                       print "    if (%s < 0) {" % p.name
+                       print "        __glXSetError(gc, GL_INVALID_VALUE);"
+                       if f.return_type != 'void':
+                               print "        return 0;"
+                       else:
+                               print "        return;"
+                       print "    }"
+
+               if skip_condition:
+                       condition_list.append( skip_condition )
+
+               if len( condition_list ) > 0:
+                       if len( condition_list ) > 1:
+                               skip_condition = "(%s)" % (string.join( condition_list, ") && (" ))
+                       else:
+                               skip_condition = "%s" % (condition_list.pop(0))
+
+                       print '    if (__builtin_expect(%s, 1)) {' % (skip_condition)
+                       return 1
+               else:
+                       return 0
+
+
+       def printSingleFunction(self, f, name):
+               self.common_func_print_just_start(f, name)
+
+               if self.debug:
+                       print '        printf( "Enter %%s...\\n", "gl%s" );' % (f.name)
+
+               if name not in f.glx_vendorpriv_names:
+
+                       # XCB specific:
+                       print '#ifdef USE_XCB'
+                       if self.debug:
+                               print '        printf("\\tUsing XCB.\\n");'
+                       print '        xcb_connection_t *c = XGetXCBConnection(dpy);'
+                       print '        (void) __glXFlushRenderBuffer(gc, gc->pc);'
+                       xcb_name = 'xcb_glx%s' % convertStringForXCB(name)
+
+                       iparams=[]
+                       extra_iparams = []
+                       output = None
+                       for p in f.parameterIterator():
+                               if p.is_output:
+                                       output = p
+
+                                       if p.is_image():
+                                               if p.img_format != "GL_COLOR_INDEX" or p.img_type != "GL_BITMAP":
+                                                       extra_iparams.append("state->storePack.swapEndian")
+                                               else:
+                                                       extra_iparams.append("0")
+                                       
+                                               # Hardcode this in.  lsb_first param (apparently always GL_FALSE)
+                                               # also present in GetPolygonStipple, but taken care of above.
+                                               if xcb_name == "xcb_glx_read_pixels": 
+                                                       extra_iparams.append("0")
+                               else:
+                                       iparams.append(p.name)
+
+
+                       xcb_request = '%s(%s)' % (xcb_name, ", ".join(["c", "gc->currentContextTag"] + iparams + extra_iparams))
+
+                       if f.needs_reply():
+                               print '        %s_reply_t *reply = %s_reply(c, %s, NULL);' % (xcb_name, xcb_name, xcb_request)
+                               if output and f.reply_always_array:
+                                       print '        (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
+
+                               elif output and not f.reply_always_array:
+                                       if not output.is_image():
+                                               print '        if (%s_data_length(reply) == 0)' % (xcb_name)
+                                               print '            (void)memcpy(%s, &reply->datum, sizeof(reply->datum));' % (output.name)
+                                               print '        else'
+                                       print '        (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
+
+
+                               if f.return_type != 'void':
+                                       print '        retval = reply->ret_val;'
+                               print '        free(reply);'
+                       else:
+                               print '        ' + xcb_request + ';'
+                       print '#else'
+                       # End of XCB specific.
+
+
+               if f.parameters != []:
+                       pc_decl = "GLubyte const * pc ="
+               else:
+                       pc_decl = "(void)"
+
+               if name in f.glx_vendorpriv_names:
+                       print '        %s __glXSetupVendorRequest(gc, %s, %s, cmdlen);' % (pc_decl, f.opcode_real_name(), f.opcode_vendor_name(name))
+               else:
+                       print '        %s __glXSetupSingleRequest(gc, %s, cmdlen);' % (pc_decl, f.opcode_name())
+
+               self.common_emit_args(f, "pc", 0, 0)
+
+               images = f.get_images()
+
+               for img in images:
+                       if img.is_output:
+                               o = f.command_fixed_length() - 4
+                               print '        *(int32_t *)(pc + %u) = 0;' % (o)
+                               if img.img_format != "GL_COLOR_INDEX" or img.img_type != "GL_BITMAP":
+                                       print '        * (int8_t *)(pc + %u) = state->storePack.swapEndian;' % (o)
+               
+                               if f.img_reset:
+                                       print '        * (int8_t *)(pc + %u) = %s;' % (o + 1, f.img_reset)
+
+
+               return_name = ''
+               if f.needs_reply():
+                       if f.return_type != 'void':
+                               return_name = " retval"
+                               return_str = " retval = (%s)" % (f.return_type)
+                       else:
+                               return_str = " (void)"
+
+                       got_reply = 0
+
+                       for p in f.parameterIterateOutputs():
+                               if p.is_image():
+                                       [dim, w, h, d, junk] = p.get_dimensions()
+                                       if f.dimensions_in_reply:
+                                               print "        __glXReadPixelReply(dpy, gc, %u, 0, 0, 0, %s, %s, %s, GL_TRUE);" % (dim, p.img_format, p.img_type, p.name)
+                                       else:
+                                               print "        __glXReadPixelReply(dpy, gc, %u, %s, %s, %s, %s, %s, %s, GL_FALSE);" % (dim, w, h, d, p.img_format, p.img_type, p.name)
+
+                                       got_reply = 1
+                               else:
+                                       if f.reply_always_array:
+                                               aa = "GL_TRUE"
+                                       else:
+                                               aa = "GL_FALSE"
+
+                                       # gl_parameter.size() returns the size
+                                       # of the entire data item.  If the
+                                       # item is a fixed-size array, this is
+                                       # the size of the whole array.  This
+                                       # is not what __glXReadReply wants. It
+                                       # wants the size of a single data
+                                       # element in the reply packet.
+                                       # Dividing by the array size (1 for
+                                       # non-arrays) gives us this.
+
+                                       s = p.size() / p.get_element_count()
+                                       print "       %s __glXReadReply(dpy, %s, %s, %s);" % (return_str, s, p.name, aa)
+                                       got_reply = 1
+
+
+                       # If a reply wasn't read to fill an output parameter,
+                       # read a NULL reply to get the return value.
+
+                       if not got_reply:
+                               print "       %s __glXReadReply(dpy, 0, NULL, GL_FALSE);" % (return_str)
+
+
+               elif self.debug:
+                       # Only emit the extra glFinish call for functions
+                       # that don't already require a reply from the server.
+                       print '        __indirect_glFinish();'
+
+               if self.debug:
+                       print '        printf( "Exit %%s.\\n", "gl%s" );' % (name)
+
+
+               print '        UnlockDisplay(dpy); SyncHandle();'
+
+               if name not in f.glx_vendorpriv_names:
+                       print '#endif /* USE_XCB */'
+
+               print '    }'
+               print '    return%s;' % (return_name)
+               return
+
+
+       def printPixelFunction(self, f):
+               if self.pixel_stubs.has_key( f.name ):
+                       # Normally gl_function::get_parameter_string could be
+                       # used.  However, this call needs to have the missing
+                       # dimensions (e.g., a fake height value for
+                       # glTexImage1D) added in.
+
+                       p_string = ""
+                       for param in f.parameterIterateGlxSend():
+                               if param.is_padding:
+                                       continue
+
+                               p_string += ", " + param.name
+
+                               if param.is_image():
+                                       [dim, junk, junk, junk, junk] = param.get_dimensions()
+
+                               if f.pad_after(param):
+                                       p_string += ", 1"
+
+                       print '    %s(%s, %u%s );' % (self.pixel_stubs[f.name] , f.opcode_name(), dim, p_string)
+                       return
+
+
+               if self.common_func_print_just_start(f, None):
+                       trailer = "    }"
+               else:
+                       trailer = None
+
+
+               if f.can_be_large:
+                       print 'if (cmdlen <= gc->maxSmallRenderCommandSize) {'
+                       print '    if ( (gc->pc + cmdlen) > gc->bufEnd ) {'
+                       print '        (void) __glXFlushRenderBuffer(gc, gc->pc);'
+                       print '    }'
+
+               if f.glx_rop == ~0:
+                       opcode = "opcode"
+               else:
+                       opcode = f.opcode_real_name()
+
+               print 'emit_header(gc->pc, %s, cmdlen);' % (opcode)
+
+               self.pixel_emit_args( f, "gc->pc", 0 )
+               print 'gc->pc += cmdlen;'
+               print 'if (gc->pc > gc->limit) { (void) __glXFlushRenderBuffer(gc, gc->pc); }'
+
+               if f.can_be_large:
+                       print '}'
+                       print 'else {'
+
+                       self.large_emit_begin(f, opcode)
+                       self.pixel_emit_args(f, "pc", 1)
+
+                       print '}'
+
+               if trailer: print trailer
+               return
+
+
+       def printRenderFunction(self, f):
+               # There is a class of GL functions that take a single pointer
+               # as a parameter.  This pointer points to a fixed-size chunk
+               # of data, and the protocol for this functions is very
+               # regular.  Since they are so regular and there are so many
+               # of them, special case them with generic functions.  On
+               # x86, this saves about 26KB in the libGL.so binary.
+
+               if f.variable_length_parameter() == None and len(f.parameters) == 1:
+                       p = f.parameters[0]
+                       if p.is_pointer():
+                               cmdlen = f.command_fixed_length()
+                               if cmdlen in self.generic_sizes:
+                                       print '    generic_%u_byte( %s, %s );' % (cmdlen, f.opcode_real_name(), p.name)
+                                       return
+
+               if self.common_func_print_just_start(f, None):
+                       trailer = "    }"
+               else:
+                       trailer = None
+
+               if self.debug:
+                       print 'printf( "Enter %%s...\\n", "gl%s" );' % (f.name)
+
+               if f.can_be_large:
+                       print 'if (cmdlen <= gc->maxSmallRenderCommandSize) {'
+                       print '    if ( (gc->pc + cmdlen) > gc->bufEnd ) {'
+                       print '        (void) __glXFlushRenderBuffer(gc, gc->pc);'
+                       print '    }'
+
+               print 'emit_header(gc->pc, %s, cmdlen);' % (f.opcode_real_name())
+
+               self.common_emit_args(f, "gc->pc", 4, 0)
+               print 'gc->pc += cmdlen;'
+               print 'if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }'
+
+               if f.can_be_large:
+                       print '}'
+                       print 'else {'
+
+                       self.large_emit_begin(f)
+                       self.common_emit_args(f, "pc", 8, 1)
+
+                       p = f.variable_length_parameter()
+                       print '    __glXSendLargeCommand(gc, pc, %u, %s, %s);' % (p.offset + 8, p.name, p.size_string())
+                       print '}'
+
+               if self.debug:
+                       print '__indirect_glFinish();'
+                       print 'printf( "Exit %%s.\\n", "gl%s" );' % (f.name)
+
+               if trailer: print trailer
+               return
+
+
+class PrintGlxProtoInit_c(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "glX_proto_send.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+(C) Copyright IBM Corporation 2004""", "PRECISION INSIGHT, IBM")
+               return
+
+
+       def printRealHeader(self):
+               print """/**
+ * \\file indirect_init.c
+ * Initialize indirect rendering dispatch table.
+ *
+ * \\author Kevin E. Martin <kevin@precisioninsight.com>
+ * \\author Brian Paul <brian@precisioninsight.com>
+ * \\author Ian Romanick <idr@us.ibm.com>
+ */
+
+#include "indirect_init.h"
+#include "indirect.h"
+#include "glapi.h"
+
+
+/**
+ * No-op function used to initialize functions that have no GLX protocol
+ * support.
+ */
+static int NoOp(void)
+{
+    return 0;
+}
+
+/**
+ * Create and initialize a new GL dispatch table.  The table is initialized
+ * with GLX indirect rendering protocol functions.
+ */
+__GLapi * __glXNewIndirectAPI( void )
+{
+    __GLapi *glAPI;
+    GLuint entries;
+
+    entries = _glapi_get_dispatch_table_size();
+    glAPI = (__GLapi *) Xmalloc(entries * sizeof(void *));
+
+    /* first, set all entries to point to no-op functions */
+    {
+       int i;
+       void **dispatch = (void **) glAPI;
+       for (i = 0; i < entries; i++) {
+          dispatch[i] = (void *) NoOp;
+       }
+    }
+
+    /* now, initialize the entries we understand */"""
+
+       def printRealFooter(self):
+               print """
+    return glAPI;
+}
+"""
+               return
+
+
+       def printBody(self, api):
+               for [name, number] in api.categoryIterate():
+                       if number != None:
+                               preamble = '\n    /* %3u. %s */\n\n' % (int(number), name)
+                       else:
+                               preamble = '\n    /* %s */\n\n' % (name)
+
+                       for func in api.functionIterateByCategory(name):
+                               if func.client_supported_for_indirect():
+                                       print '%s    glAPI->%s = __indirect_gl%s;' % (preamble, func.name, func.name)
+                                       preamble = ''
+
+               return
+
+
+class PrintGlxProtoInit_h(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "glX_proto_send.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
+(C) Copyright IBM Corporation 2004""", "PRECISION INSIGHT, IBM")
+               self.header_tag = "_INDIRECT_H_"
+
+               self.last_category = ""
+               return
+
+
+       def printRealHeader(self):
+               print """/**
+ * \\file
+ * Prototypes for indirect rendering functions.
+ *
+ * \\author Kevin E. Martin <kevin@precisioninsight.com>
+ * \\author Ian Romanick <idr@us.ibm.com>
+ */
+"""
+               self.printVisibility( "HIDDEN", "hidden" )
+               self.printFastcall()
+               self.printNoinline()
+
+               print """
+#include "glxclient.h"
+
+extern HIDDEN NOINLINE CARD32 __glXReadReply( Display *dpy, size_t size,
+    void * dest, GLboolean reply_is_always_array );
+
+extern HIDDEN NOINLINE 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 );
+
+extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupSingleRequest(
+    __GLXcontext * gc, GLint sop, GLint cmdlen );
+
+extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
+    __GLXcontext * gc, GLint code, GLint vop, GLint cmdlen );
+"""
+
+
+       def printBody(self, api):
+               for func in api.functionIterateGlx():
+                       params = func.get_parameter_string()
+
+                       print 'extern HIDDEN %s __indirect_gl%s(%s);' % (func.return_type, func.name, params)
+
+                       for n in func.entry_points:
+                               if func.has_different_protocol(n):
+                                       asdf = func.static_glx_name(n)
+                                       if asdf not in func.static_entry_points:
+                                               print 'extern HIDDEN %s gl%s(%s);' % (func.return_type, asdf, params)
+                                       else:
+                                               print 'GLAPI %s GLAPIENTRY gl%s(%s);' % (func.return_type, asdf, params)
+                                               
+                                       break
+
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-m output_mode] [-d]" % sys.argv[0]
+       print "    -m output_mode   Output mode can be one of 'proto', 'init_c' or 'init_h'."
+       print "    -d               Enable extra debug information in the generated code."
+       sys.exit(1)
+
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:d")
+       except Exception,e:
+               show_usage()
+
+       debug = 0
+       mode = "proto"
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-m":
+                       mode = val
+               elif arg == "-d":
+                       debug = 1
+
+       if mode == "proto":
+               printer = PrintGlxProtoStubs()
+       elif mode == "init_c":
+               printer = PrintGlxProtoInit_c()
+       elif mode == "init_h":
+               printer = PrintGlxProtoInit_h()
+       else:
+               show_usage()
+
+
+       printer.debug = debug
+       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
+
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/glX_proto_size.py b/src/mapi/glapi/gen/glX_proto_size.py
new file mode 100644 (file)
index 0000000..f16ea4c
--- /dev/null
@@ -0,0 +1,704 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML, glX_XML
+import license
+import sys, getopt, copy, string
+
+
+class glx_enum_function:
+       def __init__(self, func_name, enum_dict):
+               self.name = func_name
+               self.mode = 1
+               self.sig = None
+
+               # "enums" is a set of lists.  The element in the set is the
+               # value of the enum.  The list is the list of names for that
+               # value.  For example, [0x8126] = {"POINT_SIZE_MIN",
+               # "POINT_SIZE_MIN_ARB", "POINT_SIZE_MIN_EXT",
+               # "POINT_SIZE_MIN_SGIS"}.
+
+               self.enums = {}
+
+               # "count" is indexed by count values.  Each element of count
+               # is a list of index to "enums" that have that number of
+               # associated data elements.  For example, [4] = 
+               # {GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION,
+               # GL_AMBIENT_AND_DIFFUSE} (the enum names are used here,
+               # but the actual hexadecimal values would be in the array).
+
+               self.count = {}
+
+
+               # Fill self.count and self.enums using the dictionary of enums
+               # that was passed in.  The generic Get functions (e.g.,
+               # GetBooleanv and friends) are handled specially here.  In
+               # the data the generic Get functions are refered to as "Get".
+
+               if func_name in ["GetIntegerv", "GetBooleanv", "GetFloatv", "GetDoublev"]:
+                       match_name = "Get"
+               else:
+                       match_name = func_name
+
+               mode_set = 0
+               for enum_name in enum_dict:
+                       e = enum_dict[ enum_name ]
+
+                       if e.functions.has_key( match_name ):
+                               [count, mode] = e.functions[ match_name ]
+
+                               if mode_set and mode != self.mode:
+                                       raise RuntimeError("Not all enums for %s have the same mode." % (func_name))
+
+                               self.mode = mode
+
+                               if self.enums.has_key( e.value ):
+                                       if e.name not in self.enums[ e.value ]:
+                                               self.enums[ e.value ].append( e )
+                               else:
+                                       if not self.count.has_key( count ):
+                                               self.count[ count ] = []
+
+                                       self.enums[ e.value ] = [ e ]
+                                       self.count[ count ].append( e.value )
+
+
+               return
+
+
+       def signature( self ):
+               if self.sig == None:
+                       self.sig = ""
+                       for i in self.count:
+                               if i == None:
+                                       raise RuntimeError("i is None.  WTF?")
+
+                               self.count[i].sort()
+                               for e in self.count[i]:
+                                       self.sig += "%04x,%d," % (e, i)
+
+               return self.sig
+
+
+       def is_set( self ):
+               return self.mode
+
+
+       def PrintUsingTable(self):
+               """Emit the body of the __gl*_size function using a pair
+               of look-up tables and a mask.  The mask is calculated such
+               that (e & mask) is unique for all the valid values of e for
+               this function.  The result of (e & mask) is used as an index
+               into the first look-up table.  If it matches e, then the
+               same entry of the second table is returned.  Otherwise zero
+               is returned.
+               
+               It seems like this should cause better code to be generated.
+               However, on x86 at least, the resulting .o file is about 20%
+               larger then the switch-statment version.  I am leaving this
+               code in because the results may be different on other
+               platforms (e.g., PowerPC or x86-64)."""
+
+               return 0
+               count = 0
+               for a in self.enums:
+                       count += 1
+
+               if self.count.has_key(-1):
+                       return 0
+
+               # Determine if there is some mask M, such that M = (2^N) - 1,
+               # that will generate unique values for all of the enums.
+
+               mask = 0
+               for i in [1, 2, 3, 4, 5, 6, 7, 8]:
+                       mask = (1 << i) - 1
+
+                       fail = 0;
+                       for a in self.enums:
+                               for b in self.enums:
+                                       if a != b:
+                                               if (a & mask) == (b & mask):
+                                                       fail = 1;
+
+                       if not fail:
+                               break;
+                       else:
+                               mask = 0
+
+               if (mask != 0) and (mask < (2 * count)):
+                       masked_enums = {}
+                       masked_count = {}
+
+                       for i in range(0, mask + 1):
+                               masked_enums[i] = "0";
+                               masked_count[i] = 0;
+
+                       for c in self.count:
+                               for e in self.count[c]:
+                                       i = e & mask
+                                       enum_obj = self.enums[e][0]
+                                       masked_enums[i] = '0x%04x /* %s */' % (e, enum_obj.name )
+                                       masked_count[i] = c
+
+
+                       print '    static const GLushort a[%u] = {' % (mask + 1)
+                       for e in masked_enums:
+                               print '        %s, ' % (masked_enums[e])
+                       print '    };'
+
+                       print '    static const GLubyte b[%u] = {' % (mask + 1)
+                       for c in masked_count:
+                               print '        %u, ' % (masked_count[c])
+                       print '    };'
+
+                       print '    const unsigned idx = (e & 0x%02xU);' % (mask)
+                       print ''
+                       print '    return (e == a[idx]) ? (GLint) b[idx] : 0;'
+                       return 1;
+               else:
+                       return 0;
+
+
+       def PrintUsingSwitch(self, name):
+               """Emit the body of the __gl*_size function using a 
+               switch-statement."""
+
+               print '    switch( e ) {'
+
+               for c in self.count:
+                       for e in self.count[c]:
+                               first = 1
+
+                               # There may be multiple enums with the same
+                               # value.  This happens has extensions are
+                               # promoted from vendor-specific or EXT to
+                               # ARB and to the core.  Emit the first one as
+                               # a case label, and emit the others as
+                               # commented-out case labels.
+
+                               list = {}
+                               for enum_obj in self.enums[e]:
+                                       list[ enum_obj.priority() ] = enum_obj.name
+
+                               keys = list.keys()
+                               keys.sort()
+                               for k in keys:
+                                       j = list[k]
+                                       if first:
+                                               print '        case GL_%s:' % (j)
+                                               first = 0
+                                       else:
+                                               print '/*      case GL_%s:*/' % (j)
+                                       
+                       if c == -1:
+                               print '            return __gl%s_variable_size( e );' % (name)
+                       else:
+                               print '            return %u;' % (c)
+                                       
+               print '        default: return 0;'
+               print '    }'
+
+
+       def Print(self, name):
+               print 'INTERNAL PURE FASTCALL GLint'
+               print '__gl%s_size( GLenum e )' % (name)
+               print '{'
+
+               if not self.PrintUsingTable():
+                       self.PrintUsingSwitch(name)
+
+               print '}'
+               print ''
+
+
+class glx_server_enum_function(glx_enum_function):
+       def __init__(self, func, enum_dict):
+               glx_enum_function.__init__(self, func.name, enum_dict)
+               
+               self.function = func
+               return
+
+
+       def signature( self ):
+               if self.sig == None:
+                       sig = glx_enum_function.signature(self)
+
+                       p = self.function.variable_length_parameter()
+                       if p:
+                               sig += "%u" % (p.size())
+
+                       self.sig = sig
+
+               return self.sig;
+
+
+       def Print(self, name, printer):
+               f = self.function
+               printer.common_func_print_just_header( f )
+
+               fixup = []
+               
+               foo = {}
+               for param_name in f.count_parameter_list:
+                       o = f.offset_of( param_name )
+                       foo[o] = param_name
+
+               for param_name in f.counter_list:
+                       o = f.offset_of( param_name )
+                       foo[o] = param_name
+
+               keys = foo.keys()
+               keys.sort()
+               for o in keys:
+                       p = f.parameters_by_name[ foo[o] ]
+
+                       printer.common_emit_one_arg(p, "pc", 0)
+                       fixup.append( p.name )
+
+
+               print '    GLsizei compsize;'
+               print ''
+
+               printer.common_emit_fixups(fixup)
+
+               print ''
+               print '    compsize = __gl%s_size(%s);' % (f.name, string.join(f.count_parameter_list, ","))
+               p = f.variable_length_parameter()
+               print '    return __GLX_PAD(%s);' % (p.size_string())
+
+               print '}'
+               print ''
+
+
+class PrintGlxSizeStubs_common(gl_XML.gl_print_base):
+       do_get = (1 << 0)
+       do_set = (1 << 1)
+
+       def __init__(self, which_functions):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "glX_proto_size.py (from Mesa)"
+               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM")
+
+               self.emit_set = ((which_functions & PrintGlxSizeStubs_common.do_set) != 0)
+               self.emit_get = ((which_functions & PrintGlxSizeStubs_common.do_get) != 0)
+               return
+
+
+class PrintGlxSizeStubs_c(PrintGlxSizeStubs_common):
+       def printRealHeader(self):
+               print ''
+               print '#include <GL/gl.h>'
+               if self.emit_get:
+                       print '#include "indirect_size_get.h"'
+                       print '#include "glxserver.h"'
+                       print '#include "indirect_util.h"'
+               
+               print '#include "indirect_size.h"'
+
+               print ''
+               self.printPure()
+               print ''
+               self.printFastcall()
+               print ''
+               self.printVisibility( "INTERNAL", "internal" )
+               print ''
+               print ''
+               print '#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(GLX_USE_APPLEGL)'
+               print '#  undef HAVE_ALIAS'
+               print '#endif'
+               print '#ifdef HAVE_ALIAS'
+               print '#  define ALIAS2(from,to) \\'
+               print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\'
+               print '        __attribute__ ((alias( # to )));'
+               print '#  define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )'
+               print '#else'
+               print '#  define ALIAS(from,to) \\'
+               print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\'
+               print '    { return __gl ## to ## _size( e ); }'
+               print '#endif'
+               print ''
+               print ''
+
+
+       def printBody(self, api):
+               enum_sigs = {}
+               aliases = []
+
+               for func in api.functionIterateGlx():
+                       ef = glx_enum_function( func.name, api.enums_by_name )
+                       if len(ef.enums) == 0:
+                               continue
+
+                       if (ef.is_set() and self.emit_set) or (not ef.is_set() and self.emit_get):
+                               sig = ef.signature()
+                               if enum_sigs.has_key( sig ):
+                                       aliases.append( [func.name, enum_sigs[ sig ]] )
+                               else:
+                                       enum_sigs[ sig ] = func.name
+                                       ef.Print( func.name )
+
+
+               for [alias_name, real_name] in aliases:
+                       print 'ALIAS( %s, %s )' % (alias_name, real_name)
+
+
+                               
+class PrintGlxSizeStubs_h(PrintGlxSizeStubs_common):
+       def printRealHeader(self):
+               print """/**
+ * \\file
+ * Prototypes for functions used to determine the number of data elements in
+ * various GLX protocol messages.
+ *
+ * \\author Ian Romanick <idr@us.ibm.com>
+ */
+"""
+               self.printPure();
+               print ''
+               self.printFastcall();
+               print ''
+               self.printVisibility( "INTERNAL", "internal" );
+               print ''
+
+
+       def printBody(self, api):
+               for func in api.functionIterateGlx():
+                       ef = glx_enum_function( func.name, api.enums_by_name )
+                       if len(ef.enums) == 0:
+                               continue
+
+                       if (ef.is_set() and self.emit_set) or (not ef.is_set() and self.emit_get):
+                               print 'extern INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (func.name)
+
+
+class PrintGlxReqSize_common(gl_XML.gl_print_base):
+       """Common base class for PrintGlxSizeReq_h and PrintGlxSizeReq_h.
+
+       The main purpose of this common base class is to provide the infrastructure
+       for the derrived classes to iterate over the same set of functions.
+       """
+
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "glX_proto_size.py (from Mesa)"
+               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005", "IBM")
+
+
+class PrintGlxReqSize_h(PrintGlxReqSize_common):
+       def __init__(self):
+               PrintGlxReqSize_common.__init__(self)
+               self.header_tag = "_INDIRECT_REQSIZE_H_"
+
+
+       def printRealHeader(self):
+               self.printVisibility("HIDDEN", "hidden")
+               print ''
+               self.printPure()
+               print ''
+
+
+       def printBody(self, api):
+               for func in api.functionIterateGlx():
+                       if not func.ignore and func.has_variable_size_request():
+                               print 'extern PURE HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap);' % (func.name)
+
+
+class PrintGlxReqSize_c(PrintGlxReqSize_common):
+       """Create the server-side 'request size' functions.
+
+       Create the server-side functions that are used to determine what the
+       size of a varible length command should be.  The server then uses
+       this value to determine if the incoming command packed it malformed.
+       """
+
+       def __init__(self):
+               PrintGlxReqSize_common.__init__(self)
+               self.counter_sigs = {}
+
+
+       def printRealHeader(self):
+               print ''
+               print '#include <GL/gl.h>'
+               print '#include "glxserver.h"'
+               print '#include "glxbyteorder.h"'
+               print '#include "indirect_size.h"'
+               print '#include "indirect_reqsize.h"'
+               print ''
+               print '#define __GLX_PAD(x)  (((x) + 3) & ~3)'
+               print ''
+               print '#if defined(__CYGWIN__) || defined(__MINGW32__)'
+               print '#  undef HAVE_ALIAS'
+               print '#endif'
+               print '#ifdef HAVE_ALIAS'
+               print '#  define ALIAS2(from,to) \\'
+               print '    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \\'
+               print '        __attribute__ ((alias( # to )));'
+               print '#  define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize )'
+               print '#else'
+               print '#  define ALIAS(from,to) \\'
+               print '    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \\'
+               print '    { return __glX ## to ## ReqSize( pc, swap ); }'
+               print '#endif'
+               print ''
+               print ''
+
+
+       def printBody(self, api):
+               aliases = []
+               enum_functions = {}
+               enum_sigs = {}
+
+               for func in api.functionIterateGlx():
+                       if not func.has_variable_size_request(): continue
+
+                       ef = glx_server_enum_function( func, api.enums_by_name )
+                       if len(ef.enums) == 0: continue
+
+                       sig = ef.signature()
+
+                       if not enum_functions.has_key(func.name):
+                               enum_functions[ func.name ] = sig
+
+                       if not enum_sigs.has_key( sig ):
+                               enum_sigs[ sig ] = ef
+                       
+
+
+               for func in api.functionIterateGlx():
+                       # Even though server-handcode fuctions are on "the
+                       # list", and prototypes are generated for them, there
+                       # isn't enough information to generate a size
+                       # function.  If there was enough information, they
+                       # probably wouldn't need to be handcoded in the first
+                       # place!
+
+                       if func.server_handcode: continue
+                       if not func.has_variable_size_request(): continue
+
+                       if enum_functions.has_key(func.name):
+                               sig = enum_functions[func.name]
+                               ef = enum_sigs[ sig ]
+
+                               if ef.name != func.name:
+                                       aliases.append( [func.name, ef.name] )
+                               else:
+                                       ef.Print( func.name, self )
+
+                       elif func.images:
+                               self.printPixelFunction(func)
+                       elif func.has_variable_size_request():
+                               a = self.printCountedFunction(func)
+                               if a: aliases.append(a)
+
+
+               for [alias_name, real_name] in aliases:
+                       print 'ALIAS( %s, %s )' % (alias_name, real_name)
+
+               return
+
+
+       def common_emit_fixups(self, fixup):
+               """Utility function to emit conditional byte-swaps."""
+
+               if fixup:
+                       print '    if (swap) {'
+                       for name in fixup:
+                               print '        %s = bswap_32(%s);' % (name, name)
+                       print '    }'
+
+               return
+
+
+       def common_emit_one_arg(self, p, pc, adjust):
+               offset = p.offset
+               dst = p.string()
+               src = '(%s *)' % (p.type_string())
+               print '%-18s = *%11s(%s + %u);' % (dst, src, pc, offset + adjust);
+               return
+
+
+       def common_func_print_just_header(self, f):
+               print 'int'
+               print '__glX%sReqSize( const GLbyte * pc, Bool swap )' % (f.name)
+               print '{'
+
+
+       def printPixelFunction(self, f):
+               self.common_func_print_just_header(f)
+               
+               f.offset_of( f.parameters[0].name )
+               [dim, w, h, d, junk] = f.get_images()[0].get_dimensions()
+
+               print '    GLint row_length   = *  (GLint *)(pc +  4);'
+
+               if dim < 3:
+                       fixup = ['row_length', 'skip_rows', 'alignment']
+                       print '    GLint image_height = 0;'
+                       print '    GLint skip_images  = 0;'
+                       print '    GLint skip_rows    = *  (GLint *)(pc +  8);'
+                       print '    GLint alignment    = *  (GLint *)(pc + 16);'
+               else:
+                       fixup = ['row_length', 'image_height', 'skip_rows', 'skip_images', 'alignment']
+                       print '    GLint image_height = *  (GLint *)(pc +  8);'
+                       print '    GLint skip_rows    = *  (GLint *)(pc + 16);'
+                       print '    GLint skip_images  = *  (GLint *)(pc + 20);'
+                       print '    GLint alignment    = *  (GLint *)(pc + 32);'
+
+               img = f.images[0]
+               for p in f.parameterIterateGlxSend():
+                       if p.name in [w, h, d, img.img_format, img.img_type, img.img_target]:
+                               self.common_emit_one_arg(p, "pc", 0)
+                               fixup.append( p.name )
+
+               print ''
+
+               self.common_emit_fixups(fixup)
+
+               if img.img_null_flag:
+                       print ''
+                       print '    if (*(CARD32 *) (pc + %s))' % (img.offset - 4)
+                       print '        return 0;'
+
+               print ''
+               print '    return __glXImageSize(%s, %s, %s, %s, %s, %s,' % (img.img_format, img.img_type, img.img_target, w, h, d )
+               print '                          image_height, row_length, skip_images,'
+               print '                          skip_rows, alignment);'
+               print '}'
+               print ''
+               return
+
+
+       def printCountedFunction(self, f):
+
+               sig = ""
+               offset = 0
+               fixup = []
+               params = []
+               plus = ''
+               size = ''
+               param_offsets = {}
+
+               # Calculate the offset of each counter parameter and the
+               # size string for the variable length parameter(s).  While
+               # that is being done, calculate a unique signature for this
+               # function.
+
+               for p in f.parameterIterateGlxSend():
+                       if p.is_counter:
+                               fixup.append( p.name )
+                               params.append( p )
+                       elif p.counter:
+                               s = p.size()
+                               if s == 0: s = 1
+
+                               sig += "(%u,%u)" % (f.offset_of(p.counter), s)
+                               size += '%s%s' % (plus, p.size_string())
+                               plus = ' + '
+
+
+               # If the calculated signature matches a function that has
+               # already be emitted, don't emit this function.  Instead, add
+               # it to the list of function aliases.
+
+               if self.counter_sigs.has_key(sig):
+                       n = self.counter_sigs[sig];
+                       alias = [f.name, n]
+               else:
+                       alias = None
+                       self.counter_sigs[sig] = f.name
+
+                       self.common_func_print_just_header(f)
+
+                       for p in params:
+                               self.common_emit_one_arg(p, "pc", 0)
+
+
+                       print ''
+                       self.common_emit_fixups(fixup)
+                       print ''
+
+                       print '    return __GLX_PAD(%s);' % (size)
+                       print '}'
+                       print ''
+
+               return alias
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] -m output_mode [--only-get | --only-set] [--get-alias-set]" % sys.argv[0]
+       print "    -m output_mode   Output mode can be one of 'size_c' or 'size_h'."
+       print "    --only-get       Only emit 'get'-type functions."
+       print "    --only-set       Only emit 'set'-type functions."
+       print ""
+       print "By default, both 'get' and 'set'-type functions are emitted."
+       sys.exit(1)
+
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:h:", ["only-get", "only-set", "header-tag"])
+       except Exception,e:
+               show_usage()
+
+       mode = None
+       header_tag = None
+       which_functions = PrintGlxSizeStubs_common.do_get | PrintGlxSizeStubs_common.do_set
+
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-m":
+                       mode = val
+               elif arg == "--only-get":
+                       which_functions = PrintGlxSizeStubs_common.do_get
+               elif arg == "--only-set":
+                       which_functions = PrintGlxSizeStubs_common.do_set
+               elif (arg == '-h') or (arg == "--header-tag"):
+                       header_tag = val
+
+       if mode == "size_c":
+               printer = PrintGlxSizeStubs_c( which_functions )
+       elif mode == "size_h":
+               printer = PrintGlxSizeStubs_h( which_functions )
+               if header_tag:
+                       printer.header_tag = header_tag
+       elif mode == "reqsize_c":
+               printer = PrintGlxReqSize_c()
+       elif mode == "reqsize_h":
+               printer = PrintGlxReqSize_h()
+       else:
+               show_usage()
+
+       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
+
+
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/glX_server_table.py b/src/mapi/glapi/gen/glX_server_table.py
new file mode 100644 (file)
index 0000000..f3962f8
--- /dev/null
@@ -0,0 +1,411 @@
+#!/bin/env python
+
+# (C) Copyright IBM Corporation 2005, 2006
+# 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML, glX_XML, glX_proto_common, license
+import sys, getopt
+
+
+def log2(value):
+       for i in range(0, 30):
+               p = 1 << i
+               if p >= value:
+                       return i
+
+       return -1
+
+
+def round_down_to_power_of_two(n):
+       """Returns the nearest power-of-two less than or equal to n."""
+
+       for i in range(30, 0, -1):
+               p = 1 << i
+               if p <= n:
+                       return p
+
+       return -1
+
+
+class function_table:
+       def __init__(self, name, do_size_check):
+               self.name_base = name
+               self.do_size_check = do_size_check
+
+
+               self.max_bits = 1
+               self.next_opcode_threshold = (1 << self.max_bits)
+               self.max_opcode = 0
+
+               self.functions = {}
+               self.lookup_table = []
+               
+               # Minimum number of opcodes in a leaf node.
+               self.min_op_bits = 3
+               self.min_op_count = (1 << self.min_op_bits)
+               return
+
+
+       def append(self, opcode, func):
+               self.functions[opcode] = func
+
+               if opcode > self.max_opcode:
+                       self.max_opcode = opcode
+
+                       if opcode > self.next_opcode_threshold:
+                               bits = log2(opcode)
+                               if (1 << bits) <= opcode:
+                                       bits += 1
+
+                               self.max_bits = bits
+                               self.next_opcode_threshold = 1 << bits
+               return
+
+
+       def divide_group(self, min_opcode, total):
+               """Divide the group starting min_opcode into subgroups.
+               Returns a tuple containing the number of bits consumed by
+               the node, the list of the children's tuple, and the number
+               of entries in the final array used by this node and its
+               children, and the depth of the subtree rooted at the node."""
+
+               remaining_bits = self.max_bits - total
+               next_opcode = min_opcode + (1 << remaining_bits)
+               empty_children = 0
+               
+               for M in range(0, remaining_bits):
+                       op_count = 1 << (remaining_bits - M);
+                       child_count = 1 << M;
+
+                       empty_children = 0
+                       full_children = 0
+                       for i in range(min_opcode, next_opcode, op_count):
+                               used = 0
+                               empty = 0
+
+                               for j in range(i, i + op_count):
+                                       if self.functions.has_key(j):
+                                               used += 1;
+                                       else:
+                                               empty += 1;
+                                               
+
+                               if empty == op_count:
+                                       empty_children += 1
+
+                               if used == op_count:
+                                       full_children += 1
+
+                       if (empty_children > 0) or (full_children == child_count) or (op_count <= self.min_op_count):
+                               break
+
+
+               # If all the remaining bits are used by this node, as is the
+               # case when M is 0 or remaining_bits, the node is a leaf.
+
+               if (M == 0) or (M == remaining_bits):
+                       return [remaining_bits, [], 0, 0]
+               else:
+                       children = []
+                       count = 1
+                       depth = 1
+                       all_children_are_nonempty_leaf_nodes = 1
+                       for i in range(min_opcode, next_opcode, op_count):
+                               n = self.divide_group(i, total + M)
+
+                               if not (n[1] == [] and not self.is_empty_leaf(i, n[0])):
+                                       all_children_are_nonempty_leaf_nodes = 0
+
+                               children.append(n)
+                               count += n[2] + 1
+                               
+                               if n[3] >= depth:
+                                       depth = n[3] + 1
+
+                       # If all of the child nodes are non-empty leaf nodes, pull
+                       # them up and make this node a leaf.
+
+                       if all_children_are_nonempty_leaf_nodes:
+                               return [remaining_bits, [], 0, 0]
+                       else:
+                               return [M, children, count, depth]
+
+
+       def is_empty_leaf(self, base_opcode, M):
+               for op in range(base_opcode, base_opcode + (1 << M)):
+                       if self.functions.has_key(op):
+                               return 0
+                               break
+
+               return 1
+
+
+       def dump_tree(self, node, base_opcode, remaining_bits, base_entry, depth):
+               M = node[0]
+               children = node[1]
+               child_M = remaining_bits - M
+
+
+               # This actually an error condition.
+               if children == []:
+                       return
+
+               print '    /* [%u] -> opcode range [%u, %u], node depth %u */' % (base_entry, base_opcode, base_opcode + (1 << remaining_bits), depth)
+               print '    %u,' % (M)
+
+               base_entry += (1 << M) + 1
+
+               child_index = base_entry
+               child_base_opcode = base_opcode
+               for child in children:
+                       if child[1] == []:
+                               if self.is_empty_leaf(child_base_opcode, child_M):
+                                       print '    EMPTY_LEAF,'
+                               else:
+                                       # Emit the index of the next dispatch
+                                       # function.  Then add all the
+                                       # dispatch functions for this leaf
+                                       # node to the dispatch function
+                                       # lookup table.
+
+                                       print '    LEAF(%u),' % (len(self.lookup_table))
+
+                                       for op in range(child_base_opcode, child_base_opcode + (1 << child_M)):
+                                               if self.functions.has_key(op):
+                                                       func = self.functions[op]
+                                                       size = func.command_fixed_length()
+
+                                                       if func.glx_rop != 0:
+                                                               size += 4
+
+                                                       size = ((size + 3) & ~3)
+
+                                                       if func.has_variable_size_request():
+                                                               size_name = "__glX%sReqSize" % (func.name)
+                                                       else:
+                                                               size_name = ""
+
+                                                       if func.glx_vendorpriv == op:
+                                                               func_name = func.glx_vendorpriv_names[0]
+                                                       else:
+                                                               func_name = func.name
+
+                                                       temp = [op, "__glXDisp_%s" % (func_name), "__glXDispSwap_%s" % (func_name), size, size_name]
+                                               else:
+                                                       temp = [op, "NULL", "NULL", 0, ""]
+
+                                               self.lookup_table.append(temp)
+                       else:
+                               print '    %u,' % (child_index)
+                               child_index += child[2]
+
+                       child_base_opcode += 1 << child_M
+
+               print ''
+
+               child_index = base_entry
+               for child in children:
+                       if child[1] != []:
+                               self.dump_tree(child, base_opcode, remaining_bits - M, child_index, depth + 1)
+                               child_index += child[2]
+
+                       base_opcode += 1 << (remaining_bits - M)
+
+
+       def Print(self):
+               # Each dispatch table consists of two data structures.
+               #
+               # The first structure is an N-way tree where the opcode for
+               # the function is the key.  Each node switches on a range of
+               # bits from the opcode.  M bits are extracted from the opcde
+               # and are used as an index to select one of the N, where
+               # N = 2^M, children.
+               #
+               # The tree is stored as a flat array.  The first value is the
+               # number of bits, M, used by the node.  For inner nodes, the
+               # following 2^M values are indexes into the array for the
+               # child nodes.  For leaf nodes, the followign 2^M values are
+               # indexes into the second data structure.
+               #
+               # If an inner node's child index is 0, the child is an empty
+               # leaf node.  That is, none of the opcodes selectable from
+               # that child exist.  Since most of the possible opcode space
+               # is unused, this allows compact data storage.
+               #
+               # The second data structure is an array of pairs of function
+               # pointers.  Each function contains a pointer to a protocol
+               # decode function and a pointer to a byte-swapped protocol
+               # decode function.  Elements in this array are selected by the
+               # leaf nodes of the first data structure.
+               #
+               # As the tree is traversed, an accumulator is kept.  This
+               # accumulator counts the bits of the opcode consumed by the
+               # traversal.  When accumulator + M = B, where B is the
+               # maximum number of bits in an opcode, the traversal has
+               # reached a leaf node.  The traversal starts with the most
+               # significant bits and works down to the least significant
+               # bits.
+               #
+               # Creation of the tree is the most complicated part.  At
+               # each node the elements are divided into groups of 2^M
+               # elements.  The value of M selected is the smallest possible
+               # value where all of the groups are either empty or full, or
+               # the groups are a preset minimum size.  If all the children
+               # of a node are non-empty leaf nodes, the children are merged
+               # to create a single leaf node that replaces the parent.
+
+               tree = self.divide_group(0, 0)
+
+               print '/*****************************************************************/'
+               print '/* tree depth = %u */' % (tree[3])
+               print 'static const int_fast16_t %s_dispatch_tree[%u] = {' % (self.name_base, tree[2])
+               self.dump_tree(tree, 0, self.max_bits, 0, 1)
+               print '};\n'
+               
+               # After dumping the tree, dump the function lookup table.
+               
+               print 'static const void *%s_function_table[%u][2] = {' % (self.name_base, len(self.lookup_table))
+               index = 0
+               for func in self.lookup_table:
+                       opcode = func[0]
+                       name = func[1]
+                       name_swap = func[2]
+                       
+                       print '    /* [% 3u] = %5u */ {%s, %s},' % (index, opcode, name, name_swap)
+                       
+                       index += 1
+
+               print '};\n'
+               
+               if self.do_size_check:
+                       var_table = []
+
+                       print 'static const int_fast16_t %s_size_table[%u][2] = {' % (self.name_base, len(self.lookup_table))
+                       index = 0
+                       var_table = []
+                       for func in self.lookup_table:
+                               opcode = func[0]
+                               fixed = func[3]
+                               var = func[4]
+                               
+                               if var != "":
+                                       var_offset = "%2u" % (len(var_table))
+                                       var_table.append(var)
+                               else:
+                                       var_offset = "~0"
+
+                               print '    /* [%3u] = %5u */ {%3u, %s},' % (index, opcode, fixed, var_offset)
+                               index += 1
+
+                               
+                       print '};\n'
+
+
+                       print 'static const gl_proto_size_func %s_size_func_table[%u] = {' % (self.name_base, len(var_table))
+                       for func in var_table:
+                               print '   %s,' % (func)
+                       print '};\n'
+
+
+               print 'const struct __glXDispatchInfo %s_dispatch_info = {' % (self.name_base)
+               print '    %u,' % (self.max_bits)
+               print '    %s_dispatch_tree,' % (self.name_base)
+               print '    %s_function_table,' % (self.name_base)
+               if self.do_size_check:
+                       print '    %s_size_table,' % (self.name_base)
+                       print '    %s_size_func_table' % (self.name_base)
+               else:
+                       print '    NULL,'
+                       print '    NULL'
+               print '};\n'
+               return
+
+
+class PrintGlxDispatchTables(glX_proto_common.glx_print_proto):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+               self.name = "glX_server_table.py (from Mesa)"
+               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005, 2006", "IBM")
+
+               self.rop_functions = function_table("Render", 1)
+               self.sop_functions = function_table("Single", 0)
+               self.vop_functions = function_table("VendorPriv", 0)
+               return
+
+
+       def printRealHeader(self):
+               print '#include <inttypes.h>'
+               print '#include "glxserver.h"'
+               print '#include "glxext.h"'
+               print '#include "indirect_dispatch.h"'
+               print '#include "indirect_reqsize.h"'
+               print '#include "g_disptab.h"'
+               print '#include "indirect_table.h"'
+               print ''
+               return
+
+
+       def printBody(self, api):
+               for f in api.functionIterateAll():
+                       if not f.ignore and f.vectorequiv == None:
+                               if f.glx_rop != 0:
+                                       self.rop_functions.append(f.glx_rop, f)
+                               if f.glx_sop != 0:
+                                       self.sop_functions.append(f.glx_sop, f)
+                               if f.glx_vendorpriv != 0:
+                                       self.vop_functions.append(f.glx_vendorpriv, f)
+
+               self.sop_functions.Print()
+               self.rop_functions.Print()
+               self.vop_functions.Print()
+               return
+
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m")
+       except Exception,e:
+               show_usage()
+
+       mode = "table_c"
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-m":
+                       mode = val
+
+       if mode == "table_c":
+               printer = PrintGlxDispatchTables()
+       else:
+               show_usage()
+
+
+       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
+
+
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/gl_API.dtd b/src/mapi/glapi/gen/gl_API.dtd
new file mode 100644 (file)
index 0000000..30c646c
--- /dev/null
@@ -0,0 +1,140 @@
+<!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+>
+<!ELEMENT category (type*, enum*, function*)*>
+<!ELEMENT type EMPTY>
+<!ELEMENT enum (size*)>
+<!ELEMENT size EMPTY>
+<!ELEMENT function (param*, return?, glx?)*>
+<!ELEMENT param EMPTY>
+<!ELEMENT return EMPTY>
+<!ELEMENT glx EMPTY>
+
+<!ELEMENT xi:include (xi:fallback)?>
+<!ATTLIST xi:include
+          xmlns:xi  CDATA #FIXED "http://www.w3.org/2001/XInclude"
+          href       CDATA #REQUIRED
+          parse      (xml|text) "xml"
+          encoding   CDATA #IMPLIED>
+<!ELEMENT xi:fallback ANY>
+<!ATTLIST xi:fallback
+          xmlns:xi   CDATA #FIXED "http://www.w3.org/2001/XInclude">
+
+
+<!ATTLIST category name                NMTOKEN #REQUIRED
+                   number              NMTOKEN #IMPLIED
+                  window_system       NMTOKEN #IMPLIED>
+<!ATTLIST type     name                NMTOKEN #REQUIRED
+                   size                NMTOKEN #REQUIRED
+                  float               (true | false) "false"
+                  unsigned            (true | false) "false"
+                   glx_name            NMTOKEN #IMPLIED>
+<!ATTLIST enum     name                NMTOKEN #REQUIRED
+                   count               CDATA   #IMPLIED
+                   value               NMTOKEN #REQUIRED>
+<!ATTLIST function name                NMTOKEN #REQUIRED
+                   alias               NMTOKEN #IMPLIED
+                   offset              CDATA   #IMPLIED
+                   static_dispatch     (true | false) "true"
+                   vectorequiv         NMTOKEN #IMPLIED>
+<!ATTLIST size     name                NMTOKEN #REQUIRED
+                   count               NMTOKEN #IMPLIED
+                   mode                (get | set) "set">
+<!ATTLIST param    name                NMTOKEN #REQUIRED
+                   type                CDATA   #REQUIRED
+                  client_only         (true | false) "false"
+                   count               NMTOKEN #IMPLIED
+                   counter             (true | false) "false"
+                   count_scale         NMTOKEN "1"
+                   output              (true | false) "false"
+                   padding             (true | false) "false"
+                   img_width           NMTOKEN #IMPLIED
+                   img_height          NMTOKEN #IMPLIED
+                   img_depth           NMTOKEN #IMPLIED
+                   img_extent          NMTOKEN #IMPLIED
+                   img_xoff            NMTOKEN #IMPLIED
+                   img_yoff            NMTOKEN #IMPLIED
+                   img_zoff            NMTOKEN #IMPLIED
+                   img_woff            NMTOKEN #IMPLIED
+                   img_format          NMTOKEN #IMPLIED
+                   img_type            NMTOKEN #IMPLIED
+                   img_target          NMTOKEN #IMPLIED
+                   img_send_null       (true | false) "false"
+                   img_null_flag       (true | false) "false"
+                   img_pad_dimensions  (true | false) "false"
+                   variable_param      NMTOKENS #IMPLIED>
+<!ATTLIST return   type                CDATA   "void">
+<!ATTLIST glx      rop                 NMTOKEN #IMPLIED
+                   sop                 NMTOKEN #IMPLIED
+                   vendorpriv          NMTOKEN #IMPLIED
+                   large               (true | false) "false"
+                   doubles_in_order    (true | false) "false"
+                   always_array        (true | false) "false"
+                   handcode            (true | false | client | server) "false"
+                   img_reset           NMTOKEN #IMPLIED
+                   dimensions_in_reply (true | false) "false"
+                   ignore              (true | false) "false">
+
+<!--
+The various attributes for param and glx have the meanings listed below.
+When adding new functions, please annote them correctly.  In most cases this
+will just mean adding a '<glx ignore="true"/>' tag.
+
+param:
+     name - name of the parameter
+     type - fully qualified type (e.g., with "const", etc.)
+     client_only - boolean flag set on parameters which are interpreted only
+         by the client and are not present in the protocol encoding (e.g.,
+        the stride parameters to Map1f, etc.)
+     count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
+         the parameter or literal that represents the count.  For functions
+         like glVertex3fv it will be a litteral, for others it will be one of
+         the parameters.
+     counter - this parameter is a counter that will be referenced by the
+         'count' attribute in another parameter.
+     count_scale - literal value scale factor for the 'count' attribute.
+         See ProgramParameters4dvNV for an example.
+     output - this parameter is used to store the output of the function.
+     variable_param - name of parameter used to determine the number of
+         elements referenced by this parameter.  This should be the name of a
+         single enum parameter.  Most of the gl*Parameter[if]v functions use
+         this.  Additionally, the enums that can be passed should be properly
+         annotated.
+     img_width / img_height / img_depth / img_extent - name of parameters
+         (or hardcoded integer) used for the dimensions of pixel data.
+     img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
+         for x, y, z, and w offsets of pixel data.
+     img_format - name of parameter used as the pixel data format.
+     img_type - name of parameter used as the pixel data type.
+     img_target - name of parameter used as a texture target.  Non-texture
+        pixel data should hardcode 0.
+     img_send_null - boolean flag to determine if blank pixel data should
+        be sent when a NULL pointer is passed.  This is only used by
+        TexImage1D and TexImage2D.
+     img_null_flag - boolean flag to determine if an extra flag is used to
+        determine if a NULL pixel pointer was passed.  This is used by
+        TexSubImage1D, TexSubImage2D, TexImage3D and others.
+     img_pad_dimensions - boolean flag to determine if dimension data and
+        offset data should be padded to the next even number of dimensions.
+        For example, this will insert an empty "height" field after the
+        "width" field in the protocol for TexImage1D.
+
+glx:
+     rop - Opcode value for "render" commands
+     sop - Opcode value for "single" commands
+     vendorpriv - Opcode value for vendor private (or vendor private with
+         reply) commands
+     large - set to "true" of the render command can use RenderLarge protocol.
+     doubles_in_order - older commands always put GLdouble data at the
+         start of the render packet.  Newer commands (e.g., 
+         ProgramEnvParameter4dvARB) put the in the order that they appear
+         in the parameter list.
+     always_array - some single commands take reply data as an array or as
+         return value data (e.g., glGetLightfv).  Other single commands take
+         reply data only as an array (e.g., glGetClipPlane).
+     handcode - some functions are just too complicated to generate 
+         (e.g., glSeperableFilter2D) or operate only on client-side data
+         (e.g., glVertexPointer) and must be handcoded.
+     ignore - some functions have an entry in the dispatch table, but aren't
+         suitable for protocol implementation (e.g., glLockArraysEXT).  This
+         also applies to functions that don't have any GLX protocol specified
+         (e.g., glGetFogFuncSGIS).
+-->
diff --git a/src/mapi/glapi/gen/gl_API.xml b/src/mapi/glapi/gen/gl_API.xml
new file mode 100644 (file)
index 0000000..31df7a5
--- /dev/null
@@ -0,0 +1,12512 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+
+<!-- Core versions sorted by version number. -->
+
+<category name="1.0">
+    <enum name="FALSE"                                    value="0x0"/>
+    <enum name="TRUE"                                     value="0x1"/>
+    <enum name="ZERO"                                     value="0x0"/>
+    <enum name="ONE"                                      value="0x1"/>
+    <enum name="NONE"                                     value="0x0"/>
+    <enum name="NO_ERROR"                                 value="0x0"/>
+    <enum name="POINTS"                                   value="0x0000"/>
+    <enum name="LINES"                                    value="0x0001"/>
+    <enum name="LINE_LOOP"                                value="0x0002"/>
+    <enum name="LINE_STRIP"                               value="0x0003"/>
+    <enum name="TRIANGLES"                                value="0x0004"/>
+    <enum name="TRIANGLE_STRIP"                           value="0x0005"/>
+    <enum name="TRIANGLE_FAN"                             value="0x0006"/>
+    <enum name="QUADS"                                    value="0x0007"/>
+    <enum name="QUAD_STRIP"                               value="0x0008"/>
+    <enum name="POLYGON"                                  value="0x0009"/>
+    <enum name="ACCUM"                                    value="0x0100"/>
+    <enum name="LOAD"                                     value="0x0101"/>
+    <enum name="RETURN"                                   value="0x0102"/>
+    <enum name="MULT"                                     value="0x0103"/>
+    <enum name="ADD"                                      value="0x0104"/>
+    <enum name="NEVER"                                    value="0x0200"/>
+    <enum name="LESS"                                     value="0x0201"/>
+    <enum name="EQUAL"                                    value="0x0202"/>
+    <enum name="LEQUAL"                                   value="0x0203"/>
+    <enum name="GREATER"                                  value="0x0204"/>
+    <enum name="NOTEQUAL"                                 value="0x0205"/>
+    <enum name="GEQUAL"                                   value="0x0206"/>
+    <enum name="ALWAYS"                                   value="0x0207"/>
+    <enum name="SRC_COLOR"                                value="0x0300"/>
+    <enum name="ONE_MINUS_SRC_COLOR"                      value="0x0301"/>
+    <enum name="SRC_ALPHA"                                value="0x0302"/>
+    <enum name="ONE_MINUS_SRC_ALPHA"                      value="0x0303"/>
+    <enum name="DST_ALPHA"                                value="0x0304"/>
+    <enum name="ONE_MINUS_DST_ALPHA"                      value="0x0305"/>
+    <enum name="DST_COLOR"                                value="0x0306"/>
+    <enum name="ONE_MINUS_DST_COLOR"                      value="0x0307"/>
+    <enum name="SRC_ALPHA_SATURATE"                       value="0x0308"/>
+    <enum name="FRONT_LEFT"                               value="0x0400"/>
+    <enum name="FRONT_RIGHT"                              value="0x0401"/>
+    <enum name="BACK_LEFT"                                value="0x0402"/>
+    <enum name="BACK_RIGHT"                               value="0x0403"/>
+    <enum name="FRONT"                                    value="0x0404"/>
+    <enum name="BACK"                                     value="0x0405"/>
+    <enum name="LEFT"                                     value="0x0406"/>
+    <enum name="RIGHT"                                    value="0x0407"/>
+    <enum name="FRONT_AND_BACK"                           value="0x0408"/>
+    <enum name="AUX0"                                     value="0x0409"/>
+    <enum name="AUX1"                                     value="0x040A"/>
+    <enum name="AUX2"                                     value="0x040B"/>
+    <enum name="AUX3"                                     value="0x040C"/>
+    <enum name="INVALID_VALUE"                            value="0x0501"/>
+    <enum name="INVALID_ENUM"                             value="0x0500"/>
+    <enum name="INVALID_OPERATION"                        value="0x0502"/>
+    <enum name="STACK_OVERFLOW"                           value="0x0503"/>
+    <enum name="STACK_UNDERFLOW"                          value="0x0504"/>
+    <enum name="OUT_OF_MEMORY"                            value="0x0505"/>
+    <enum name="2D"                                       value="0x0600"/>
+    <enum name="3D"                                       value="0x0601"/>
+    <enum name="3D_COLOR"                                 value="0x0602"/>
+    <enum name="3D_COLOR_TEXTURE"                         value="0x0603"/>
+    <enum name="4D_COLOR_TEXTURE"                         value="0x0604"/>
+    <enum name="PASS_THROUGH_TOKEN"                       value="0x0700"/>
+    <enum name="POINT_TOKEN"                              value="0x0701"/>
+    <enum name="LINE_TOKEN"                               value="0x0702"/>
+    <enum name="POLYGON_TOKEN"                            value="0x0703"/>
+    <enum name="BITMAP_TOKEN"                             value="0x0704"/>
+    <enum name="DRAW_PIXEL_TOKEN"                         value="0x0705"/>
+    <enum name="COPY_PIXEL_TOKEN"                         value="0x0706"/>
+    <enum name="LINE_RESET_TOKEN"                         value="0x0707"/>
+    <enum name="EXP"                                      value="0x0800"/>
+    <enum name="EXP2"                                     value="0x0801"/>
+    <enum name="CW"                                       value="0x0900"/>
+    <enum name="CCW"                                      value="0x0901"/>
+    <enum name="COEFF"                                    value="0x0A00"/>
+    <enum name="ORDER"                                    value="0x0A01"/>
+    <enum name="DOMAIN"                                   value="0x0A02"/>
+    <enum name="CURRENT_COLOR"                 count="4"  value="0x0B00">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_INDEX"                 count="1"  value="0x0B01">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_NORMAL"                count="3"  value="0x0B02">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_TEXTURE_COORDS"        count="4"  value="0x0B03">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_RASTER_COLOR"          count="4"  value="0x0B04">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_RASTER_INDEX"          count="1"  value="0x0B05">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_RASTER_TEXTURE_COORDS" count="4"  value="0x0B06">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_RASTER_POSITION"       count="4"  value="0x0B07">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_RASTER_POSITION_VALID" count="1"  value="0x0B08">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_RASTER_DISTANCE"       count="1"  value="0x0B09">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SMOOTH"                  count="1"  value="0x0B10">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SIZE"                    count="1"  value="0x0B11">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SIZE_RANGE"              count="2"  value="0x0B12">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SIZE_GRANULARITY"        count="1"  value="0x0B13">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_SMOOTH"                   count="1"  value="0x0B20">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_WIDTH"                    count="1"  value="0x0B21">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_WIDTH_RANGE"              count="2"  value="0x0B22">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_WIDTH_GRANULARITY"        count="1"  value="0x0B23">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_STIPPLE"                  count="1"  value="0x0B24">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_STIPPLE_PATTERN"          count="1"  value="0x0B25">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_STIPPLE_REPEAT"           count="1"  value="0x0B26">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIST_MODE"                     count="1"  value="0x0B30">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_LIST_NESTING"              count="1"  value="0x0B31">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIST_BASE"                     count="1"  value="0x0B32">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIST_INDEX"                    count="1"  value="0x0B33">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_MODE"                  count="2"  value="0x0B40">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_SMOOTH"                count="1"  value="0x0B41">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_STIPPLE"               count="1"  value="0x0B42">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="EDGE_FLAG"                     count="1"  value="0x0B43">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CULL_FACE"                     count="1"  value="0x0B44">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CULL_FACE_MODE"                count="1"  value="0x0B45">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FRONT_FACE"                    count="1"  value="0x0B46">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHTING"                      count="1"  value="0x0B50">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT_MODEL_LOCAL_VIEWER"      count="1"  value="0x0B51">
+        <size name="LightModelfv"/>
+        <size name="LightModeliv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT_MODEL_TWO_SIDE"          count="1"  value="0x0B52">
+        <size name="LightModelfv"/>
+        <size name="LightModeliv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT_MODEL_AMBIENT"           count="4"  value="0x0B53">
+        <size name="LightModelfv"/>
+        <size name="LightModeliv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SHADE_MODEL"                   count="1"  value="0x0B54">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_MATERIAL_FACE"           count="1"  value="0x0B55">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_MATERIAL_PARAMETER"      count="1"  value="0x0B56">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_MATERIAL"                count="1"  value="0x0B57">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG"                           count="1"  value="0x0B60">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_INDEX"                     count="1"  value="0x0B61">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_DENSITY"                   count="1"  value="0x0B62">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_START"                     count="1"  value="0x0B63">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_END"                       count="1"  value="0x0B64">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_MODE"                      count="1"  value="0x0B65">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COLOR"                     count="4"  value="0x0B66">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_RANGE"                   count="2"  value="0x0B70">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_TEST"                    count="1"  value="0x0B71">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_WRITEMASK"               count="1"  value="0x0B72">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_CLEAR_VALUE"             count="1"  value="0x0B73">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_FUNC"                    count="1"  value="0x0B74">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACCUM_CLEAR_VALUE"             count="4"  value="0x0B80">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_TEST"                  count="1"  value="0x0B90">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_CLEAR_VALUE"           count="1"  value="0x0B91">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_FUNC"                  count="1"  value="0x0B92">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_VALUE_MASK"            count="1"  value="0x0B93">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_FAIL"                  count="1"  value="0x0B94">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_PASS_DEPTH_FAIL"       count="1"  value="0x0B95">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_PASS_DEPTH_PASS"       count="1"  value="0x0B96">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_REF"                   count="1"  value="0x0B97">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_WRITEMASK"             count="1"  value="0x0B98">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX_MODE"                   count="1"  value="0x0BA0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMALIZE"                     count="1"  value="0x0BA1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VIEWPORT"                      count="4"  value="0x0BA2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW_STACK_DEPTH"         count="1"  value="0x0BA3">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROJECTION_STACK_DEPTH"        count="1"  value="0x0BA4">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_STACK_DEPTH"           count="1"  value="0x0BA5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW_MATRIX"              count="16" value="0x0BA6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROJECTION_MATRIX"             count="16" value="0x0BA7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MATRIX"                count="16" value="0x0BA8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ATTRIB_STACK_DEPTH"            count="1"  value="0x0BB0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIENT_ATTRIB_STACK_DEPTH"     count="1"  value="0x0BB1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_TEST"                    count="1"  value="0x0BC0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_TEST_FUNC"               count="1"  value="0x0BC1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_TEST_REF"                count="1"  value="0x0BC2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DITHER"                        count="1"  value="0x0BD0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_DST"                     count="1"  value="0x0BE0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC"                     count="1"  value="0x0BE1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND"                         count="1"  value="0x0BE2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LOGIC_OP_MODE"                 count="1"  value="0x0BF0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LOGIC_OP"                      count="1"  value="0x0BF1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="AUX_BUFFERS"                   count="1"  value="0x0C00">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER"                   count="1"  value="0x0C01">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="READ_BUFFER"                   count="1"  value="0x0C02">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SCISSOR_BOX"                   count="4"  value="0x0C10">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SCISSOR_TEST"                  count="1"  value="0x0C11">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_CLEAR_VALUE"             count="1"  value="0x0C20">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_WRITEMASK"               count="1"  value="0x0C21">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_CLEAR_VALUE"             count="4"  value="0x0C22">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_WRITEMASK"               count="4"  value="0x0C23">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_MODE"                    count="1"  value="0x0C30">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RGBA_MODE"                     count="1"  value="0x0C31">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DOUBLEBUFFER"                  count="1"  value="0x0C32">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STEREO"                        count="1"  value="0x0C33">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RENDER_MODE"                   count="1"  value="0x0C40">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PERSPECTIVE_CORRECTION_HINT"   count="1"  value="0x0C50">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SMOOTH_HINT"             count="1"  value="0x0C51">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LINE_SMOOTH_HINT"              count="1"  value="0x0C52">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_SMOOTH_HINT"           count="1"  value="0x0C53">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_HINT"                      count="1"  value="0x0C54">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_GEN_S"                 count="1"  value="0x0C60">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_GEN_T"                 count="1"  value="0x0C61">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_GEN_R"                 count="1"  value="0x0C62">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_GEN_Q"                 count="1"  value="0x0C63">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_I_TO_I"              count="1"  value="0x0C70">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_S_TO_S"                         value="0x0C71"/>
+    <enum name="PIXEL_MAP_I_TO_R"                         value="0x0C72"/>
+    <enum name="PIXEL_MAP_I_TO_G"                         value="0x0C73"/>
+    <enum name="PIXEL_MAP_I_TO_B"                         value="0x0C74"/>
+    <enum name="PIXEL_MAP_I_TO_A"                         value="0x0C75"/>
+    <enum name="PIXEL_MAP_R_TO_R"                         value="0x0C76"/>
+    <enum name="PIXEL_MAP_G_TO_G"                         value="0x0C77"/>
+    <enum name="PIXEL_MAP_B_TO_B"                         value="0x0C78"/>
+    <enum name="PIXEL_MAP_A_TO_A"                         value="0x0C79"/>
+    <enum name="PIXEL_MAP_I_TO_I_SIZE"         count="1"  value="0x0CB0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_S_TO_S_SIZE"         count="1"  value="0x0CB1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_I_TO_R_SIZE"         count="1"  value="0x0CB2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_I_TO_G_SIZE"         count="1"  value="0x0CB3">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_I_TO_B_SIZE"         count="1"  value="0x0CB4">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_I_TO_A_SIZE"         count="1"  value="0x0CB5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_R_TO_R_SIZE"         count="1"  value="0x0CB6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_G_TO_G_SIZE"         count="1"  value="0x0CB7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_B_TO_B_SIZE"         count="1"  value="0x0CB8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PIXEL_MAP_A_TO_A_SIZE"         count="1"  value="0x0CB9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_SWAP_BYTES"             count="1"  value="0x0CF0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_LSB_FIRST"              count="1"  value="0x0CF1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_ROW_LENGTH"             count="1"  value="0x0CF2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_SKIP_PIXELS"            count="1"  value="0x0CF4">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_SKIP_ROWS"              count="1"  value="0x0CF3">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_ALIGNMENT"              count="1"  value="0x0CF5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_SWAP_BYTES"               count="1"  value="0x0D00">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_LSB_FIRST"                count="1"  value="0x0D01">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_ROW_LENGTH"               count="1"  value="0x0D02">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_SKIP_ROWS"                count="1"  value="0x0D03">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_SKIP_PIXELS"              count="1"  value="0x0D04">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_ALIGNMENT"                count="1"  value="0x0D05">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAP_COLOR"                     count="1"  value="0x0D10">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAP_STENCIL"                   count="1"  value="0x0D11">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_SHIFT"                   count="1"  value="0x0D12">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_OFFSET"                  count="1"  value="0x0D13">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RED_SCALE"                     count="1"  value="0x0D14">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RED_BIAS"                      count="1"  value="0x0D15">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ZOOM_X"                        count="1"  value="0x0D16">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ZOOM_Y"                        count="1"  value="0x0D17">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="GREEN_SCALE"                   count="1"  value="0x0D18">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="GREEN_BIAS"                    count="1"  value="0x0D19">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLUE_SCALE"                    count="1"  value="0x0D1A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLUE_BIAS"                     count="1"  value="0x0D1B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_SCALE"                   count="1"  value="0x0D1C">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_BIAS"                    count="1"  value="0x0D1D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_SCALE"                   count="1"  value="0x0D1E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_BIAS"                    count="1"  value="0x0D1F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_EVAL_ORDER"                count="1"  value="0x0D30">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_LIGHTS"                    count="1"  value="0x0D31">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_CLIP_PLANES"               count="1"  value="0x0D32">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_SIZE"              count="1"  value="0x0D33">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_PIXEL_MAP_TABLE"           count="1"  value="0x0D34">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_ATTRIB_STACK_DEPTH"        count="1"  value="0x0D35">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_MODELVIEW_STACK_DEPTH"     count="1"  value="0x0D36">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_NAME_STACK_DEPTH"          count="1"  value="0x0D37">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_PROJECTION_STACK_DEPTH"    count="1"  value="0x0D38">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_STACK_DEPTH"       count="1"  value="0x0D39">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_VIEWPORT_DIMS"             count="2"  value="0x0D3A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_CLIENT_ATTRIB_STACK_DEPTH" count="1"  value="0x0D3B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SUBPIXEL_BITS"                 count="1"  value="0x0D50">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_BITS"                    count="1"  value="0x0D51">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="RED_BITS"                      count="1"  value="0x0D52">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="GREEN_BITS"                    count="1"  value="0x0D53">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLUE_BITS"                     count="1"  value="0x0D54">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALPHA_BITS"                    count="1"  value="0x0D55">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_BITS"                    count="1"  value="0x0D56">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BITS"                  count="1"  value="0x0D57">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACCUM_RED_BITS"                count="1"  value="0x0D58">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACCUM_GREEN_BITS"              count="1"  value="0x0D59">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACCUM_BLUE_BITS"               count="1"  value="0x0D5A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACCUM_ALPHA_BITS"              count="1"  value="0x0D5B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NAME_STACK_DEPTH"              count="1"  value="0x0D70">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="AUTO_NORMAL"                   count="1"  value="0x0D80">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAP1_COLOR_4"                  count="4"  value="0x0D90">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_INDEX"                    count="1"  value="0x0D91">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_NORMAL"                   count="3"  value="0x0D92">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_TEXTURE_COORD_1"          count="1"  value="0x0D93">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_TEXTURE_COORD_2"          count="2"  value="0x0D94">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_TEXTURE_COORD_3"          count="3"  value="0x0D95">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_TEXTURE_COORD_4"          count="4"  value="0x0D96">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_VERTEX_3"                 count="3"  value="0x0D97">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_VERTEX_4"                 count="4"  value="0x0D98">
+        <size name="Map1d"/>
+        <size name="Map1f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_COLOR_4"                  count="4"  value="0x0DB0">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_INDEX"                    count="1"  value="0x0DB1">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_NORMAL"                   count="3"  value="0x0DB2">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_TEXTURE_COORD_1"          count="1"  value="0x0DB3">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_TEXTURE_COORD_2"          count="2"  value="0x0DB4">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_TEXTURE_COORD_3"          count="3"  value="0x0DB5">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_TEXTURE_COORD_4"          count="4"  value="0x0DB6">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_VERTEX_3"                 count="3"  value="0x0DB7">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP2_VERTEX_4"                 count="4"  value="0x0DB8">
+        <size name="Map2d"/>
+        <size name="Map2f"/>
+        <size name="Get" count="1" mode="get"/>
+    </enum>
+    <enum name="MAP1_GRID_DOMAIN"              count="2"  value="0x0DD0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAP1_GRID_SEGMENTS"            count="1"  value="0x0DD1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAP2_GRID_DOMAIN"              count="4"  value="0x0DD2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAP2_GRID_SEGMENTS"            count="2"  value="0x0DD3">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_1D"                    count="1"  value="0x0DE0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_2D"                    count="1"  value="0x0DE1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FEEDBACK_BUFFER_POINTER"                  value="0x0DF0"/>
+    <enum name="FEEDBACK_BUFFER_SIZE"                     value="0x0DF1"/>
+    <enum name="FEEDBACK_BUFFER_TYPE"                     value="0x0DF2"/>
+    <enum name="SELECTION_BUFFER_POINTER"                 value="0x0DF3"/>
+    <enum name="SELECTION_BUFFER_SIZE"                    value="0x0DF4"/>
+    <enum name="TEXTURE_WIDTH"                 count="1"  value="0x1000">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_HEIGHT"                count="1"  value="0x1001">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BORDER"                count="1"  value="0x1005">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPONENTS"            count="1"  value="0x1003">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BORDER_COLOR"          count="4"  value="0x1004">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="DONT_CARE"                                value="0x1100"/>
+    <enum name="FASTEST"                                  value="0x1101"/>
+    <enum name="NICEST"                                   value="0x1102"/>
+    <enum name="AMBIENT"                       count="4"  value="0x1200">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="DIFFUSE"                       count="4"  value="0x1201">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPECULAR"                      count="4"  value="0x1202">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="POSITION"                      count="4"  value="0x1203">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPOT_DIRECTION"                count="3"  value="0x1204">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPOT_EXPONENT"                 count="1"  value="0x1205">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="SPOT_CUTOFF"                   count="1"  value="0x1206">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="CONSTANT_ATTENUATION"          count="1"  value="0x1207">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="LINEAR_ATTENUATION"            count="1"  value="0x1208">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="QUADRATIC_ATTENUATION"         count="1"  value="0x1209">
+        <size name="Lightfv"/>
+        <size name="Lightiv"/>
+        <size name="GetLightfv" mode="get"/>
+        <size name="GetLightiv" mode="get"/>
+    </enum>
+    <enum name="COMPILE"                                  value="0x1300"/>
+    <enum name="COMPILE_AND_EXECUTE"                      value="0x1301"/>
+    <enum name="BYTE"                          count="1"  value="0x1400">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="UNSIGNED_BYTE"                 count="1"  value="0x1401">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="SHORT"                         count="2"  value="0x1402">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="UNSIGNED_SHORT"                count="2"  value="0x1403">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="INT"                           count="4"  value="0x1404">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="UNSIGNED_INT"                  count="4"  value="0x1405">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="FLOAT"                         count="4"  value="0x1406">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="2_BYTES"                       count="2"  value="0x1407">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="3_BYTES"                       count="3"  value="0x1408">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="4_BYTES"                       count="4"  value="0x1409">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="HALF_FLOAT"                    count="2"  value="0x140B">
+        <size name="CallLists"/>
+    </enum>
+    <enum name="CLEAR"                                    value="0x1500"/>
+    <enum name="AND"                                      value="0x1501"/>
+    <enum name="AND_REVERSE"                              value="0x1502"/>
+    <enum name="COPY"                                     value="0x1503"/>
+    <enum name="AND_INVERTED"                             value="0x1504"/>
+    <enum name="NOOP"                                     value="0x1505"/>
+    <enum name="XOR"                                      value="0x1506"/>
+    <enum name="OR"                                       value="0x1507"/>
+    <enum name="NOR"                                      value="0x1508"/>
+    <enum name="EQUIV"                                    value="0x1509"/>
+    <enum name="INVERT"                                   value="0x150A"/>
+    <enum name="OR_REVERSE"                               value="0x150B"/>
+    <enum name="COPY_INVERTED"                            value="0x150C"/>
+    <enum name="OR_INVERTED"                              value="0x150D"/>
+    <enum name="NAND"                                     value="0x150E"/>
+    <enum name="SET"                                      value="0x150F"/>
+    <enum name="EMISSION"                      count="4"  value="0x1600">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+    </enum>
+    <enum name="SHININESS"                     count="1"  value="0x1601">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+    </enum>
+    <enum name="AMBIENT_AND_DIFFUSE"           count="4"  value="0x1602">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+    </enum>
+    <enum name="COLOR_INDEXES"                 count="3"  value="0x1603">
+        <size name="Materialfv"/>
+        <size name="Materialiv"/>
+        <size name="GetMaterialfv" mode="get"/>
+        <size name="GetMaterialiv" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW"                                value="0x1700"/>
+    <enum name="PROJECTION"                               value="0x1701"/>
+    <enum name="TEXTURE"                                  value="0x1702"/>
+    <enum name="COLOR"                                    value="0x1800"/>
+    <enum name="DEPTH"                                    value="0x1801"/>
+    <enum name="STENCIL"                                  value="0x1802"/>
+    <enum name="COLOR_INDEX"                              value="0x1900"/>
+    <enum name="STENCIL_INDEX"                            value="0x1901"/>
+    <enum name="DEPTH_COMPONENT"                          value="0x1902"/>
+    <enum name="RED"                                      value="0x1903"/>
+    <enum name="GREEN"                                    value="0x1904"/>
+    <enum name="BLUE"                                     value="0x1905"/>
+    <enum name="ALPHA"                                    value="0x1906"/>
+    <enum name="RGBA"                                     value="0x1908"/>
+    <enum name="RGB"                                      value="0x1907"/>
+    <enum name="LUMINANCE"                                value="0x1909"/>
+    <enum name="LUMINANCE_ALPHA"                          value="0x190A"/>
+    <enum name="BITMAP"                                   value="0x1A00"/>
+    <enum name="POINT"                                    value="0x1B00"/>
+    <enum name="LINE"                                     value="0x1B01"/>
+    <enum name="FILL"                                     value="0x1B02"/>
+    <enum name="FEEDBACK"                                 value="0x1C01"/>
+    <enum name="RENDER"                                   value="0x1C00"/>
+    <enum name="SELECT"                                   value="0x1C02"/>
+    <enum name="FLAT"                                     value="0x1D00"/>
+    <enum name="SMOOTH"                                   value="0x1D01"/>
+    <enum name="KEEP"                                     value="0x1E00"/>
+    <enum name="REPLACE"                                  value="0x1E01"/>
+    <enum name="INCR"                                     value="0x1E02"/>
+    <enum name="DECR"                                     value="0x1E03"/>
+    <enum name="VENDOR"                                   value="0x1F00"/>
+    <enum name="RENDERER"                                 value="0x1F01"/>
+    <enum name="VERSION"                                  value="0x1F02"/>
+    <enum name="EXTENSIONS"                               value="0x1F03"/>
+    <enum name="S"                                        value="0x2000"/>
+    <enum name="T"                                        value="0x2001"/>
+    <enum name="R"                                        value="0x2002"/>
+    <enum name="Q"                                        value="0x2003"/>
+    <enum name="MODULATE"                                 value="0x2100"/>
+    <enum name="DECAL"                                    value="0x2101"/>
+    <enum name="TEXTURE_ENV_MODE"              count="1"  value="0x2200">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_ENV_COLOR"             count="4"  value="0x2201">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_ENV"                              value="0x2300"/>
+    <enum name="EYE_LINEAR"                               value="0x2400"/>
+    <enum name="OBJECT_LINEAR"                            value="0x2401"/>
+    <enum name="SPHERE_MAP"                               value="0x2402"/>
+    <enum name="TEXTURE_GEN_MODE"              count="1"  value="0x2500">
+        <size name="TexGendv"/>
+        <size name="TexGenfv"/>
+        <size name="TexGeniv"/>
+        <size name="GetTexGendv" mode="get"/>
+        <size name="GetTexGenfv" mode="get"/>
+        <size name="GetTexGeniv" mode="get"/>
+    </enum>
+    <enum name="OBJECT_PLANE"                  count="4"  value="0x2501">
+        <size name="TexGendv"/>
+        <size name="TexGenfv"/>
+        <size name="TexGeniv"/>
+        <size name="GetTexGendv" mode="get"/>
+        <size name="GetTexGenfv" mode="get"/>
+        <size name="GetTexGeniv" mode="get"/>
+    </enum>
+    <enum name="EYE_PLANE"                     count="4"  value="0x2502">
+        <size name="TexGendv"/>
+        <size name="TexGenfv"/>
+        <size name="TexGeniv"/>
+        <size name="GetTexGendv" mode="get"/>
+        <size name="GetTexGenfv" mode="get"/>
+        <size name="GetTexGeniv" mode="get"/>
+    </enum>
+    <enum name="NEAREST"                                  value="0x2600"/>
+    <enum name="LINEAR"                                   value="0x2601"/>
+    <enum name="NEAREST_MIPMAP_NEAREST"                   value="0x2700"/>
+    <enum name="LINEAR_MIPMAP_NEAREST"                    value="0x2701"/>
+    <enum name="NEAREST_MIPMAP_LINEAR"                    value="0x2702"/>
+    <enum name="LINEAR_MIPMAP_LINEAR"                     value="0x2703"/>
+    <enum name="TEXTURE_MAG_FILTER"            count="1"  value="0x2800">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MIN_FILTER"            count="1"  value="0x2801">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_WRAP_S"                count="1"  value="0x2802">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_WRAP_T"                count="1"  value="0x2803">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="CLAMP"                                    value="0x2900"/>
+    <enum name="REPEAT"                                   value="0x2901"/>
+    <enum name="CLIP_PLANE0"                   count="1"  value="0x3000">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE1"                   count="1"  value="0x3001">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE2"                   count="1"  value="0x3002">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE3"                   count="1"  value="0x3003">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE4"                   count="1"  value="0x3004">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIP_PLANE5"                   count="1"  value="0x3005">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT0"                        count="1"  value="0x4000">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT1"                        count="1"  value="0x4001">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT2"                        count="1"  value="0x4002">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT3"                        count="1"  value="0x4003">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT4"                        count="1"  value="0x4004">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT5"                        count="1"  value="0x4005">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT6"                        count="1"  value="0x4006">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="LIGHT7"                        count="1"  value="0x4007">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_BIT"                              value="0x00000001"/>
+    <enum name="POINT_BIT"                                value="0x00000002"/>
+    <enum name="LINE_BIT"                                 value="0x00000004"/>
+    <enum name="POLYGON_BIT"                              value="0x00000008"/>
+    <enum name="POLYGON_STIPPLE_BIT"                      value="0x00000010"/>
+    <enum name="PIXEL_MODE_BIT"                           value="0x00000020"/>
+    <enum name="LIGHTING_BIT"                             value="0x00000040"/>
+    <enum name="FOG_BIT"                                  value="0x00000080"/>
+    <enum name="DEPTH_BUFFER_BIT"                         value="0x00000100"/>
+    <enum name="ACCUM_BUFFER_BIT"                         value="0x00000200"/>
+    <enum name="STENCIL_BUFFER_BIT"                       value="0x00000400"/>
+    <enum name="VIEWPORT_BIT"                             value="0x00000800"/>
+    <enum name="TRANSFORM_BIT"                            value="0x00001000"/>
+    <enum name="ENABLE_BIT"                               value="0x00002000"/>
+    <enum name="COLOR_BUFFER_BIT"                         value="0x00004000"/>
+    <enum name="HINT_BIT"                                 value="0x00008000"/>
+    <enum name="EVAL_BIT"                                 value="0x00010000"/>
+    <enum name="LIST_BIT"                                 value="0x00020000"/>
+    <enum name="TEXTURE_BIT"                              value="0x00040000"/>
+    <enum name="SCISSOR_BIT"                              value="0x00080000"/>
+    <enum name="ALL_ATTRIB_BITS"                          value="0x000FFFFF"/>
+
+    <type name="double"  size="8"  float="true"    glx_name="FLOAT64"/>
+    <type name="clampd"  size="8"  float="true"    glx_name="FLOAT64"/>
+
+    <type name="float"   size="4"  float="true"    glx_name="FLOAT32"/>
+    <type name="clampf"  size="4"  float="true"    glx_name="FLOAT32"/>
+
+    <type name="int"     size="4"                  glx_name="CARD32"/>
+    <type name="uint"    size="4"  unsigned="true" glx_name="CARD32"/>
+    <type name="sizei"   size="4"  unsigned="true" glx_name="CARD32"/>
+    <type name="enum"    size="4"  unsigned="true" glx_name="ENUM"/>
+    <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
+
+    <type name="short"   size="2"                  glx_name="CARD16"/>
+    <type name="ushort"  size="2"  unsigned="true" glx_name="CARD16"/>
+
+    <type name="byte"    size="1"                  glx_name="CARD8"/>
+    <type name="ubyte"   size="1"  unsigned="true" glx_name="CARD8"/>
+    <type name="boolean" size="1"  unsigned="true" glx_name="CARD8"/>
+    
+    <type name="void"    size="1"/>
+
+    <function name="NewList" offset="0">
+        <param name="list" type="GLuint"/>
+        <param name="mode" type="GLenum"/>
+        <glx sop="101"/>
+    </function>
+
+    <function name="EndList" offset="1">
+        <glx sop="102"/>
+    </function>
+
+    <function name="CallList" offset="2">
+        <param name="list" type="GLuint"/>
+        <glx rop="1"/>
+    </function>
+
+    <function name="CallLists" offset="3">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="type" type="GLenum"/>
+        <param name="lists" type="const GLvoid *" variable_param="type" count="n"/>
+        <glx rop="2" large="true"/>
+    </function>
+
+    <function name="DeleteLists" offset="4">
+        <param name="list" type="GLuint"/>
+        <param name="range" type="GLsizei"/>
+        <glx sop="103"/>
+    </function>
+
+    <function name="GenLists" offset="5">
+        <param name="range" type="GLsizei"/>
+        <return type="GLuint"/>
+        <glx sop="104"/>
+    </function>
+
+    <function name="ListBase" offset="6">
+        <param name="base" type="GLuint"/>
+        <glx rop="3"/>
+    </function>
+
+    <function name="Begin" offset="7">
+        <param name="mode" type="GLenum"/>
+        <glx rop="4"/>
+    </function>
+
+    <function name="Bitmap" offset="8">
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="xorig" type="GLfloat"/>
+        <param name="yorig" type="GLfloat"/>
+        <param name="xmove" type="GLfloat"/>
+        <param name="ymove" type="GLfloat"/>
+        <param name="bitmap" type="const GLubyte *" img_width="width" img_height="height" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
+        <glx rop="5" large="true"/>
+    </function>
+
+    <function name="Color3b" offset="9" vectorequiv="Color3bv">
+        <param name="red" type="GLbyte"/>
+        <param name="green" type="GLbyte"/>
+        <param name="blue" type="GLbyte"/>
+    </function>
+
+    <function name="Color3bv" offset="10">
+        <param name="v" type="const GLbyte *" count="3"/>
+        <glx rop="6"/>
+    </function>
+
+    <function name="Color3d" offset="11" vectorequiv="Color3dv">
+        <param name="red" type="GLdouble"/>
+        <param name="green" type="GLdouble"/>
+        <param name="blue" type="GLdouble"/>
+    </function>
+
+    <function name="Color3dv" offset="12">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="7"/>
+    </function>
+
+    <function name="Color3f" offset="13" vectorequiv="Color3fv">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+    </function>
+
+    <function name="Color3fv" offset="14">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="8"/>
+    </function>
+
+    <function name="Color3i" offset="15" vectorequiv="Color3iv">
+        <param name="red" type="GLint"/>
+        <param name="green" type="GLint"/>
+        <param name="blue" type="GLint"/>
+    </function>
+
+    <function name="Color3iv" offset="16">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="9"/>
+    </function>
+
+    <function name="Color3s" offset="17" vectorequiv="Color3sv">
+        <param name="red" type="GLshort"/>
+        <param name="green" type="GLshort"/>
+        <param name="blue" type="GLshort"/>
+    </function>
+
+    <function name="Color3sv" offset="18">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="10"/>
+    </function>
+
+    <function name="Color3ub" offset="19" vectorequiv="Color3ubv">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+    </function>
+
+    <function name="Color3ubv" offset="20">
+        <param name="v" type="const GLubyte *" count="3"/>
+        <glx rop="11"/>
+    </function>
+
+    <function name="Color3ui" offset="21" vectorequiv="Color3uiv">
+        <param name="red" type="GLuint"/>
+        <param name="green" type="GLuint"/>
+        <param name="blue" type="GLuint"/>
+    </function>
+
+    <function name="Color3uiv" offset="22">
+        <param name="v" type="const GLuint *" count="3"/>
+        <glx rop="12"/>
+    </function>
+
+    <function name="Color3us" offset="23" vectorequiv="Color3usv">
+        <param name="red" type="GLushort"/>
+        <param name="green" type="GLushort"/>
+        <param name="blue" type="GLushort"/>
+    </function>
+
+    <function name="Color3usv" offset="24">
+        <param name="v" type="const GLushort *" count="3"/>
+        <glx rop="13"/>
+    </function>
+
+    <function name="Color4b" offset="25" vectorequiv="Color4bv">
+        <param name="red" type="GLbyte"/>
+        <param name="green" type="GLbyte"/>
+        <param name="blue" type="GLbyte"/>
+        <param name="alpha" type="GLbyte"/>
+    </function>
+
+    <function name="Color4bv" offset="26">
+        <param name="v" type="const GLbyte *" count="4"/>
+        <glx rop="14"/>
+    </function>
+
+    <function name="Color4d" offset="27" vectorequiv="Color4dv">
+        <param name="red" type="GLdouble"/>
+        <param name="green" type="GLdouble"/>
+        <param name="blue" type="GLdouble"/>
+        <param name="alpha" type="GLdouble"/>
+    </function>
+
+    <function name="Color4dv" offset="28">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="15"/>
+    </function>
+
+    <function name="Color4f" offset="29" vectorequiv="Color4fv">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+        <param name="alpha" type="GLfloat"/>
+    </function>
+
+    <function name="Color4fv" offset="30">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="16"/>
+    </function>
+
+    <function name="Color4i" offset="31" vectorequiv="Color4iv">
+        <param name="red" type="GLint"/>
+        <param name="green" type="GLint"/>
+        <param name="blue" type="GLint"/>
+        <param name="alpha" type="GLint"/>
+    </function>
+
+    <function name="Color4iv" offset="32">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="17"/>
+    </function>
+
+    <function name="Color4s" offset="33" vectorequiv="Color4sv">
+        <param name="red" type="GLshort"/>
+        <param name="green" type="GLshort"/>
+        <param name="blue" type="GLshort"/>
+        <param name="alpha" type="GLshort"/>
+    </function>
+
+    <function name="Color4sv" offset="34">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="18"/>
+    </function>
+
+    <function name="Color4ub" offset="35" vectorequiv="Color4ubv">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+        <param name="alpha" type="GLubyte"/>
+    </function>
+
+    <function name="Color4ubv" offset="36">
+        <param name="v" type="const GLubyte *" count="4"/>
+        <glx rop="19"/>
+    </function>
+
+    <function name="Color4ui" offset="37" vectorequiv="Color4uiv">
+        <param name="red" type="GLuint"/>
+        <param name="green" type="GLuint"/>
+        <param name="blue" type="GLuint"/>
+        <param name="alpha" type="GLuint"/>
+    </function>
+
+    <function name="Color4uiv" offset="38">
+        <param name="v" type="const GLuint *" count="4"/>
+        <glx rop="20"/>
+    </function>
+
+    <function name="Color4us" offset="39" vectorequiv="Color4usv">
+        <param name="red" type="GLushort"/>
+        <param name="green" type="GLushort"/>
+        <param name="blue" type="GLushort"/>
+        <param name="alpha" type="GLushort"/>
+    </function>
+
+    <function name="Color4usv" offset="40">
+        <param name="v" type="const GLushort *" count="4"/>
+        <glx rop="21"/>
+    </function>
+
+    <function name="EdgeFlag" offset="41" vectorequiv="EdgeFlagv">
+        <param name="flag" type="GLboolean"/>
+    </function>
+
+    <function name="EdgeFlagv" offset="42">
+        <param name="flag" type="const GLboolean *" count="1"/>
+        <glx rop="22"/>
+    </function>
+
+    <function name="End" offset="43">
+        <glx rop="23"/>
+    </function>
+
+    <function name="Indexd" offset="44" vectorequiv="Indexdv">
+        <param name="c" type="GLdouble"/>
+    </function>
+
+    <function name="Indexdv" offset="45">
+        <param name="c" type="const GLdouble *" count="1"/>
+        <glx rop="24"/>
+    </function>
+
+    <function name="Indexf" offset="46" vectorequiv="Indexfv">
+        <param name="c" type="GLfloat"/>
+    </function>
+
+    <function name="Indexfv" offset="47">
+        <param name="c" type="const GLfloat *" count="1"/>
+        <glx rop="25"/>
+    </function>
+
+    <function name="Indexi" offset="48" vectorequiv="Indexiv">
+        <param name="c" type="GLint"/>
+    </function>
+
+    <function name="Indexiv" offset="49">
+        <param name="c" type="const GLint *" count="1"/>
+        <glx rop="26"/>
+    </function>
+
+    <function name="Indexs" offset="50" vectorequiv="Indexsv">
+        <param name="c" type="GLshort"/>
+    </function>
+
+    <function name="Indexsv" offset="51">
+        <param name="c" type="const GLshort *" count="1"/>
+        <glx rop="27"/>
+    </function>
+
+    <function name="Normal3b" offset="52" vectorequiv="Normal3bv">
+        <param name="nx" type="GLbyte"/>
+        <param name="ny" type="GLbyte"/>
+        <param name="nz" type="GLbyte"/>
+    </function>
+
+    <function name="Normal3bv" offset="53">
+        <param name="v" type="const GLbyte *" count="3"/>
+        <glx rop="28"/>
+    </function>
+
+    <function name="Normal3d" offset="54" vectorequiv="Normal3dv">
+        <param name="nx" type="GLdouble"/>
+        <param name="ny" type="GLdouble"/>
+        <param name="nz" type="GLdouble"/>
+    </function>
+
+    <function name="Normal3dv" offset="55">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="29"/>
+    </function>
+
+    <function name="Normal3f" offset="56" vectorequiv="Normal3fv">
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+    </function>
+
+    <function name="Normal3fv" offset="57">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="30"/>
+    </function>
+
+    <function name="Normal3i" offset="58" vectorequiv="Normal3iv">
+        <param name="nx" type="GLint"/>
+        <param name="ny" type="GLint"/>
+        <param name="nz" type="GLint"/>
+    </function>
+
+    <function name="Normal3iv" offset="59">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="31"/>
+    </function>
+
+    <function name="Normal3s" offset="60" vectorequiv="Normal3sv">
+        <param name="nx" type="GLshort"/>
+        <param name="ny" type="GLshort"/>
+        <param name="nz" type="GLshort"/>
+    </function>
+
+    <function name="Normal3sv" offset="61">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="32"/>
+    </function>
+
+    <function name="RasterPos2d" offset="62" vectorequiv="RasterPos2dv">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="RasterPos2dv" offset="63">
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="33"/>
+    </function>
+
+    <function name="RasterPos2f" offset="64" vectorequiv="RasterPos2fv">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="RasterPos2fv" offset="65">
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="34"/>
+    </function>
+
+    <function name="RasterPos2i" offset="66" vectorequiv="RasterPos2iv">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+    </function>
+
+    <function name="RasterPos2iv" offset="67">
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="35"/>
+    </function>
+
+    <function name="RasterPos2s" offset="68" vectorequiv="RasterPos2sv">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="RasterPos2sv" offset="69">
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="36"/>
+    </function>
+
+    <function name="RasterPos3d" offset="70" vectorequiv="RasterPos3dv">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="RasterPos3dv" offset="71">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="37"/>
+    </function>
+
+    <function name="RasterPos3f" offset="72" vectorequiv="RasterPos3fv">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="RasterPos3fv" offset="73">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="38"/>
+    </function>
+
+    <function name="RasterPos3i" offset="74" vectorequiv="RasterPos3iv">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+    </function>
+
+    <function name="RasterPos3iv" offset="75">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="39"/>
+    </function>
+
+    <function name="RasterPos3s" offset="76" vectorequiv="RasterPos3sv">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="RasterPos3sv" offset="77">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="40"/>
+    </function>
+
+    <function name="RasterPos4d" offset="78" vectorequiv="RasterPos4dv">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="RasterPos4dv" offset="79">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="41"/>
+    </function>
+
+    <function name="RasterPos4f" offset="80" vectorequiv="RasterPos4fv">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="RasterPos4fv" offset="81">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="42"/>
+    </function>
+
+    <function name="RasterPos4i" offset="82" vectorequiv="RasterPos4iv">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+        <param name="w" type="GLint"/>
+    </function>
+
+    <function name="RasterPos4iv" offset="83">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="43"/>
+    </function>
+
+    <function name="RasterPos4s" offset="84" vectorequiv="RasterPos4sv">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+    </function>
+
+    <function name="RasterPos4sv" offset="85">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="44"/>
+    </function>
+
+    <function name="Rectd" offset="86" vectorequiv="Rectdv">
+        <param name="x1" type="GLdouble"/>
+        <param name="y1" type="GLdouble"/>
+        <param name="x2" type="GLdouble"/>
+        <param name="y2" type="GLdouble"/>
+    </function>
+
+    <function name="Rectdv" offset="87">
+        <param name="v1" type="const GLdouble *" count="2"/>
+        <param name="v2" type="const GLdouble *" count="2"/>
+        <glx rop="45"/>
+    </function>
+
+    <function name="Rectf" offset="88" vectorequiv="Rectfv">
+        <param name="x1" type="GLfloat"/>
+        <param name="y1" type="GLfloat"/>
+        <param name="x2" type="GLfloat"/>
+        <param name="y2" type="GLfloat"/>
+    </function>
+
+    <function name="Rectfv" offset="89">
+        <param name="v1" type="const GLfloat *" count="2"/>
+        <param name="v2" type="const GLfloat *" count="2"/>
+        <glx rop="46"/>
+    </function>
+
+    <function name="Recti" offset="90" vectorequiv="Rectiv">
+        <param name="x1" type="GLint"/>
+        <param name="y1" type="GLint"/>
+        <param name="x2" type="GLint"/>
+        <param name="y2" type="GLint"/>
+    </function>
+
+    <function name="Rectiv" offset="91">
+        <param name="v1" type="const GLint *" count="2"/>
+        <param name="v2" type="const GLint *" count="2"/>
+        <glx rop="47"/>
+    </function>
+
+    <function name="Rects" offset="92" vectorequiv="Rectsv">
+        <param name="x1" type="GLshort"/>
+        <param name="y1" type="GLshort"/>
+        <param name="x2" type="GLshort"/>
+        <param name="y2" type="GLshort"/>
+    </function>
+
+    <function name="Rectsv" offset="93">
+        <param name="v1" type="const GLshort *" count="2"/>
+        <param name="v2" type="const GLshort *" count="2"/>
+        <glx rop="48"/>
+    </function>
+
+    <function name="TexCoord1d" offset="94" vectorequiv="TexCoord1dv">
+        <param name="s" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord1dv" offset="95">
+        <param name="v" type="const GLdouble *" count="1"/>
+        <glx rop="49"/>
+    </function>
+
+    <function name="TexCoord1f" offset="96" vectorequiv="TexCoord1fv">
+        <param name="s" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord1fv" offset="97">
+        <param name="v" type="const GLfloat *" count="1"/>
+        <glx rop="50"/>
+    </function>
+
+    <function name="TexCoord1i" offset="98" vectorequiv="TexCoord1iv">
+        <param name="s" type="GLint"/>
+    </function>
+
+    <function name="TexCoord1iv" offset="99">
+        <param name="v" type="const GLint *" count="1"/>
+        <glx rop="51"/>
+    </function>
+
+    <function name="TexCoord1s" offset="100" vectorequiv="TexCoord1sv">
+        <param name="s" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord1sv" offset="101">
+        <param name="v" type="const GLshort *" count="1"/>
+        <glx rop="52"/>
+    </function>
+
+    <function name="TexCoord2d" offset="102" vectorequiv="TexCoord2dv">
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord2dv" offset="103">
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="53"/>
+    </function>
+
+    <function name="TexCoord2f" offset="104" vectorequiv="TexCoord2fv">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord2fv" offset="105">
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="54"/>
+    </function>
+
+    <function name="TexCoord2i" offset="106" vectorequiv="TexCoord2iv">
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+    </function>
+
+    <function name="TexCoord2iv" offset="107">
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="55"/>
+    </function>
+
+    <function name="TexCoord2s" offset="108" vectorequiv="TexCoord2sv">
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord2sv" offset="109">
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="56"/>
+    </function>
+
+    <function name="TexCoord3d" offset="110" vectorequiv="TexCoord3dv">
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord3dv" offset="111">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="57"/>
+    </function>
+
+    <function name="TexCoord3f" offset="112" vectorequiv="TexCoord3fv">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord3fv" offset="113">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="58"/>
+    </function>
+
+    <function name="TexCoord3i" offset="114" vectorequiv="TexCoord3iv">
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+    </function>
+
+    <function name="TexCoord3iv" offset="115">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="59"/>
+    </function>
+
+    <function name="TexCoord3s" offset="116" vectorequiv="TexCoord3sv">
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord3sv" offset="117">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="60"/>
+    </function>
+
+    <function name="TexCoord4d" offset="118" vectorequiv="TexCoord4dv">
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+        <param name="q" type="GLdouble"/>
+    </function>
+
+    <function name="TexCoord4dv" offset="119">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="61"/>
+    </function>
+
+    <function name="TexCoord4f" offset="120" vectorequiv="TexCoord4fv">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord4fv" offset="121">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="62"/>
+    </function>
+
+    <function name="TexCoord4i" offset="122" vectorequiv="TexCoord4iv">
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+        <param name="q" type="GLint"/>
+    </function>
+
+    <function name="TexCoord4iv" offset="123">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="63"/>
+    </function>
+
+    <function name="TexCoord4s" offset="124" vectorequiv="TexCoord4sv">
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+        <param name="q" type="GLshort"/>
+    </function>
+
+    <function name="TexCoord4sv" offset="125">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="64"/>
+    </function>
+
+    <function name="Vertex2d" offset="126" vectorequiv="Vertex2dv">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="Vertex2dv" offset="127">
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="65"/>
+    </function>
+
+    <function name="Vertex2f" offset="128" vectorequiv="Vertex2fv">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="Vertex2fv" offset="129">
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="66"/>
+    </function>
+
+    <function name="Vertex2i" offset="130" vectorequiv="Vertex2iv">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+    </function>
+
+    <function name="Vertex2iv" offset="131">
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="67"/>
+    </function>
+
+    <function name="Vertex2s" offset="132" vectorequiv="Vertex2sv">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="Vertex2sv" offset="133">
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="68"/>
+    </function>
+
+    <function name="Vertex3d" offset="134" vectorequiv="Vertex3dv">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="Vertex3dv" offset="135">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="69"/>
+    </function>
+
+    <function name="Vertex3f" offset="136" vectorequiv="Vertex3fv">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="Vertex3fv" offset="137">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="70"/>
+    </function>
+
+    <function name="Vertex3i" offset="138" vectorequiv="Vertex3iv">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+    </function>
+
+    <function name="Vertex3iv" offset="139">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="71"/>
+    </function>
+
+    <function name="Vertex3s" offset="140" vectorequiv="Vertex3sv">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="Vertex3sv" offset="141">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="72"/>
+    </function>
+
+    <function name="Vertex4d" offset="142" vectorequiv="Vertex4dv">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="Vertex4dv" offset="143">
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="73"/>
+    </function>
+
+    <function name="Vertex4f" offset="144" vectorequiv="Vertex4fv">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="Vertex4fv" offset="145">
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="74"/>
+    </function>
+
+    <function name="Vertex4i" offset="146" vectorequiv="Vertex4iv">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+        <param name="w" type="GLint"/>
+    </function>
+
+    <function name="Vertex4iv" offset="147">
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="75"/>
+    </function>
+
+    <function name="Vertex4s" offset="148" vectorequiv="Vertex4sv">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+    </function>
+
+    <function name="Vertex4sv" offset="149">
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="76"/>
+    </function>
+
+    <function name="ClipPlane" offset="150">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="const GLdouble *" count="4"/>
+        <glx rop="77"/>
+    </function>
+
+    <function name="ColorMaterial" offset="151">
+        <param name="face" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx rop="78"/>
+    </function>
+
+    <function name="CullFace" offset="152">
+        <param name="mode" type="GLenum"/>
+        <glx rop="79"/>
+    </function>
+
+    <function name="Fogf" offset="153">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="80"/>
+    </function>
+
+    <function name="Fogfv" offset="154">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="81"/>
+    </function>
+
+    <function name="Fogi" offset="155">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="82"/>
+    </function>
+
+    <function name="Fogiv" offset="156">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="83"/>
+    </function>
+
+    <function name="FrontFace" offset="157">
+        <param name="mode" type="GLenum"/>
+        <glx rop="84"/>
+    </function>
+
+    <function name="Hint" offset="158">
+        <param name="target" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx rop="85"/>
+    </function>
+
+    <function name="Lightf" offset="159">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="86"/>
+    </function>
+
+    <function name="Lightfv" offset="160">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="87"/>
+    </function>
+
+    <function name="Lighti" offset="161">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="88"/>
+    </function>
+
+    <function name="Lightiv" offset="162">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="89"/>
+    </function>
+
+    <function name="LightModelf" offset="163">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="90"/>
+    </function>
+
+    <function name="LightModelfv" offset="164">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="91"/>
+    </function>
+
+    <function name="LightModeli" offset="165">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="92"/>
+    </function>
+
+    <function name="LightModeliv" offset="166">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="93"/>
+    </function>
+
+    <function name="LineStipple" offset="167">
+        <param name="factor" type="GLint"/>
+        <param name="pattern" type="GLushort"/>
+        <glx rop="94"/>
+    </function>
+
+    <function name="LineWidth" offset="168">
+        <param name="width" type="GLfloat"/>
+        <glx rop="95"/>
+    </function>
+
+    <function name="Materialf" offset="169">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="96"/>
+    </function>
+
+    <function name="Materialfv" offset="170">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="97"/>
+    </function>
+
+    <function name="Materiali" offset="171">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="98"/>
+    </function>
+
+    <function name="Materialiv" offset="172">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="99"/>
+    </function>
+
+    <function name="PointSize" offset="173">
+        <param name="size" type="GLfloat"/>
+        <glx rop="100"/>
+    </function>
+
+    <function name="PolygonMode" offset="174">
+        <param name="face" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx rop="101"/>
+    </function>
+
+    <function name="PolygonStipple" offset="175">
+        <param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
+        <glx rop="102"/>
+    </function>
+
+    <function name="Scissor" offset="176">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="103"/>
+    </function>
+
+    <function name="ShadeModel" offset="177">
+        <param name="mode" type="GLenum"/>
+        <glx rop="104"/>
+    </function>
+
+    <function name="TexParameterf" offset="178">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="105"/>
+    </function>
+
+    <function name="TexParameterfv" offset="179">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="106"/>
+    </function>
+
+    <function name="TexParameteri" offset="180">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="107"/>
+    </function>
+
+    <function name="TexParameteriv" offset="181">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="108"/>
+    </function>
+
+    <function name="TexImage1D" offset="182">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
+        <glx rop="109" large="true"/>
+    </function>
+
+    <function name="TexImage2D" offset="183">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
+        <glx rop="110" large="true"/>
+    </function>
+
+    <function name="TexEnvf" offset="184">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="111"/>
+    </function>
+
+    <function name="TexEnvfv" offset="185">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="112"/>
+    </function>
+
+    <function name="TexEnvi" offset="186">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="113"/>
+    </function>
+
+    <function name="TexEnviv" offset="187">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="114"/>
+    </function>
+
+    <function name="TexGend" offset="188">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLdouble"/>
+        <glx rop="115"/>
+    </function>
+
+    <function name="TexGendv" offset="189">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLdouble *" variable_param="pname"/>
+        <glx rop="116"/>
+    </function>
+
+    <function name="TexGenf" offset="190">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="117"/>
+    </function>
+
+    <function name="TexGenfv" offset="191">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="118"/>
+    </function>
+
+    <function name="TexGeni" offset="192">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="119"/>
+    </function>
+
+    <function name="TexGeniv" offset="193">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="120"/>
+    </function>
+
+    <function name="FeedbackBuffer" offset="194">
+        <param name="size" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="buffer" type="GLfloat *" output="true"/>
+        <glx sop="105" handcode="true"/>
+    </function>
+
+    <function name="SelectBuffer" offset="195">
+        <param name="size" type="GLsizei"/>
+        <param name="buffer" type="GLuint *" output="true"/>
+        <glx sop="106" handcode="true"/>
+    </function>
+
+    <function name="RenderMode" offset="196">
+        <param name="mode" type="GLenum"/>
+        <return type="GLint"/>
+        <glx sop="107" handcode="true"/>
+    </function>
+
+    <function name="InitNames" offset="197">
+        <glx rop="121"/>
+    </function>
+
+    <function name="LoadName" offset="198">
+        <param name="name" type="GLuint"/>
+        <glx rop="122"/>
+    </function>
+
+    <function name="PassThrough" offset="199">
+        <param name="token" type="GLfloat"/>
+        <glx rop="123"/>
+    </function>
+
+    <function name="PopName" offset="200">
+        <glx rop="124"/>
+    </function>
+
+    <function name="PushName" offset="201">
+        <param name="name" type="GLuint"/>
+        <glx rop="125"/>
+    </function>
+
+    <function name="DrawBuffer" offset="202">
+        <param name="mode" type="GLenum"/>
+        <glx rop="126"/>
+    </function>
+
+    <function name="Clear" offset="203">
+        <param name="mask" type="GLbitfield"/>
+        <glx rop="127"/>
+    </function>
+
+    <function name="ClearAccum" offset="204">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+        <param name="alpha" type="GLfloat"/>
+        <glx rop="128"/>
+    </function>
+
+    <function name="ClearIndex" offset="205">
+        <param name="c" type="GLfloat"/>
+        <glx rop="129"/>
+    </function>
+
+    <function name="ClearColor" offset="206">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+        <glx rop="130"/>
+    </function>
+
+    <function name="ClearStencil" offset="207">
+        <param name="s" type="GLint"/>
+        <glx rop="131"/>
+    </function>
+
+    <function name="ClearDepth" offset="208">
+        <param name="depth" type="GLclampd"/>
+        <glx rop="132"/>
+    </function>
+
+    <function name="StencilMask" offset="209">
+        <param name="mask" type="GLuint"/>
+        <glx rop="133"/>
+    </function>
+
+    <function name="ColorMask" offset="210">
+        <param name="red" type="GLboolean"/>
+        <param name="green" type="GLboolean"/>
+        <param name="blue" type="GLboolean"/>
+        <param name="alpha" type="GLboolean"/>
+        <glx rop="134"/>
+    </function>
+
+    <function name="DepthMask" offset="211">
+        <param name="flag" type="GLboolean"/>
+        <glx rop="135"/>
+    </function>
+
+    <function name="IndexMask" offset="212">
+        <param name="mask" type="GLuint"/>
+        <glx rop="136"/>
+    </function>
+
+    <function name="Accum" offset="213">
+        <param name="op" type="GLenum"/>
+        <param name="value" type="GLfloat"/>
+        <glx rop="137"/>
+    </function>
+
+    <function name="Disable" offset="214">
+        <param name="cap" type="GLenum"/>
+        <glx rop="138" handcode="client"/>
+    </function>
+
+    <function name="Enable" offset="215">
+        <param name="cap" type="GLenum"/>
+        <glx rop="139" handcode="client"/>
+    </function>
+
+    <function name="Finish" offset="216">
+        <glx sop="108" handcode="true"/>
+    </function>
+
+    <function name="Flush" offset="217">
+        <glx sop="142" handcode="true"/>
+    </function>
+
+    <function name="PopAttrib" offset="218">
+        <glx rop="141"/>
+    </function>
+
+    <function name="PushAttrib" offset="219">
+        <param name="mask" type="GLbitfield"/>
+        <glx rop="142"/>
+    </function>
+
+    <function name="Map1d" offset="220">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <param name="stride" type="GLint" client_only="true"/>
+        <param name="order" type="GLint"/>
+        <param name="points" type="const GLdouble *" variable_param="order"/>
+        <glx rop="143" handcode="true"/>
+    </function>
+
+    <function name="Map1f" offset="221">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <param name="stride" type="GLint" client_only="true"/>
+        <param name="order" type="GLint"/>
+        <param name="points" type="const GLfloat *" variable_param="order"/>
+        <glx rop="144" handcode="true"/>
+    </function>
+
+    <function name="Map2d" offset="222">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <param name="ustride" type="GLint" client_only="true"/>
+        <param name="uorder" type="GLint"/>
+        <param name="v1" type="GLdouble"/>
+        <param name="v2" type="GLdouble"/>
+        <param name="vstride" type="GLint" client_only="true"/>
+        <param name="vorder" type="GLint"/>
+        <param name="points" type="const GLdouble *" variable_param="uorder"/>
+        <glx rop="145" handcode="true"/>
+    </function>
+
+    <function name="Map2f" offset="223">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <param name="ustride" type="GLint" client_only="true"/>
+        <param name="uorder" type="GLint"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <param name="vstride" type="GLint" client_only="true"/>
+        <param name="vorder" type="GLint"/>
+        <param name="points" type="const GLfloat *" variable_param="uorder"/>
+        <glx rop="146" handcode="true"/>
+    </function>
+
+    <function name="MapGrid1d" offset="224">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <glx rop="147"/>
+    </function>
+
+    <function name="MapGrid1f" offset="225">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <glx rop="148"/>
+    </function>
+
+    <function name="MapGrid2d" offset="226">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <param name="vn" type="GLint"/>
+        <param name="v1" type="GLdouble"/>
+        <param name="v2" type="GLdouble"/>
+        <glx rop="149"/>
+    </function>
+
+    <function name="MapGrid2f" offset="227">
+        <param name="un" type="GLint"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <param name="vn" type="GLint"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <glx rop="150"/>
+    </function>
+
+    <function name="EvalCoord1d" offset="228" vectorequiv="EvalCoord1dv">
+        <param name="u" type="GLdouble"/>
+    </function>
+
+    <function name="EvalCoord1dv" offset="229">
+        <param name="u" type="const GLdouble *" count="1"/>
+        <glx rop="151"/>
+    </function>
+
+    <function name="EvalCoord1f" offset="230" vectorequiv="EvalCoord1fv">
+        <param name="u" type="GLfloat"/>
+    </function>
+
+    <function name="EvalCoord1fv" offset="231">
+        <param name="u" type="const GLfloat *" count="1"/>
+        <glx rop="152"/>
+    </function>
+
+    <function name="EvalCoord2d" offset="232" vectorequiv="EvalCoord2dv">
+        <param name="u" type="GLdouble"/>
+        <param name="v" type="GLdouble"/>
+    </function>
+
+    <function name="EvalCoord2dv" offset="233">
+        <param name="u" type="const GLdouble *" count="2"/>
+        <glx rop="153"/>
+    </function>
+
+    <function name="EvalCoord2f" offset="234" vectorequiv="EvalCoord2fv">
+        <param name="u" type="GLfloat"/>
+        <param name="v" type="GLfloat"/>
+    </function>
+
+    <function name="EvalCoord2fv" offset="235">
+        <param name="u" type="const GLfloat *" count="2"/>
+        <glx rop="154"/>
+    </function>
+
+    <function name="EvalMesh1" offset="236">
+        <param name="mode" type="GLenum"/>
+        <param name="i1" type="GLint"/>
+        <param name="i2" type="GLint"/>
+        <glx rop="155"/>
+    </function>
+
+    <function name="EvalPoint1" offset="237">
+        <param name="i" type="GLint"/>
+        <glx rop="156"/>
+    </function>
+
+    <function name="EvalMesh2" offset="238">
+        <param name="mode" type="GLenum"/>
+        <param name="i1" type="GLint"/>
+        <param name="i2" type="GLint"/>
+        <param name="j1" type="GLint"/>
+        <param name="j2" type="GLint"/>
+        <glx rop="157"/>
+    </function>
+
+    <function name="EvalPoint2" offset="239">
+        <param name="i" type="GLint"/>
+        <param name="j" type="GLint"/>
+        <glx rop="158"/>
+    </function>
+
+    <function name="AlphaFunc" offset="240">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLclampf"/>
+        <glx rop="159"/>
+    </function>
+
+    <function name="BlendFunc" offset="241">
+        <param name="sfactor" type="GLenum"/>
+        <param name="dfactor" type="GLenum"/>
+        <glx rop="160"/>
+    </function>
+
+    <function name="LogicOp" offset="242">
+        <param name="opcode" type="GLenum"/>
+        <glx rop="161"/>
+    </function>
+
+    <function name="StencilFunc" offset="243">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLint"/>
+        <param name="mask" type="GLuint"/>
+        <glx rop="162"/>
+    </function>
+
+    <function name="StencilOp" offset="244">
+        <param name="fail" type="GLenum"/>
+        <param name="zfail" type="GLenum"/>
+        <param name="zpass" type="GLenum"/>
+        <glx rop="163"/>
+    </function>
+
+    <function name="DepthFunc" offset="245">
+        <param name="func" type="GLenum"/>
+        <glx rop="164"/>
+    </function>
+
+    <function name="PixelZoom" offset="246">
+        <param name="xfactor" type="GLfloat"/>
+        <param name="yfactor" type="GLfloat"/>
+        <glx rop="165"/>
+    </function>
+
+    <function name="PixelTransferf" offset="247">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="166"/>
+    </function>
+
+    <function name="PixelTransferi" offset="248">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="167"/>
+    </function>
+
+    <function name="PixelStoref" offset="249">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx sop="109" handcode="client"/>
+    </function>
+
+    <function name="PixelStorei" offset="250">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx sop="110" handcode="client"/>
+    </function>
+
+    <function name="PixelMapfv" offset="251">
+        <param name="map" type="GLenum"/>
+        <param name="mapsize" type="GLsizei" counter="true"/>
+        <param name="values" type="const GLfloat *" count="mapsize"/>
+        <glx rop="168" large="true"/>
+    </function>
+
+    <function name="PixelMapuiv" offset="252">
+        <param name="map" type="GLenum"/>
+        <param name="mapsize" type="GLsizei" counter="true"/>
+        <param name="values" type="const GLuint *" count="mapsize"/>
+        <glx rop="169" large="true"/>
+    </function>
+
+    <function name="PixelMapusv" offset="253">
+        <param name="map" type="GLenum"/>
+        <param name="mapsize" type="GLsizei" counter="true"/>
+        <param name="values" type="const GLushort *" count="mapsize"/>
+        <glx rop="170" large="true"/>
+    </function>
+
+    <function name="ReadBuffer" offset="254">
+        <param name="mode" type="GLenum"/>
+        <glx rop="171"/>
+    </function>
+
+    <function name="CopyPixels" offset="255">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <glx rop="172"/>
+    </function>
+
+    <function name="ReadPixels" offset="256">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="GLvoid *" output="true"  img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
+        <glx sop="111"/>
+    </function>
+
+    <function name="DrawPixels" offset="257">
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0" img_pad_dimensions="false"/>
+        <glx rop="173" large="true"/>
+    </function>
+
+    <function name="GetBooleanv" offset="258">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
+        <glx sop="112" handcode="client"/>
+    </function>
+
+    <function name="GetClipPlane" offset="259">
+        <param name="plane" type="GLenum"/>
+        <param name="equation" type="GLdouble *" output="true" count="4"/>
+        <glx sop="113" always_array="true"/>
+    </function>
+
+    <function name="GetDoublev" offset="260">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
+        <glx sop="114" handcode="client"/>
+    </function>
+
+    <function name="GetError" offset="261">
+        <return type="GLenum"/>
+        <glx sop="115" handcode="client"/>
+    </function>
+
+    <function name="GetFloatv" offset="262">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="116" handcode="client"/>
+    </function>
+
+    <function name="GetIntegerv" offset="263">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="117" handcode="client"/>
+    </function>
+
+    <function name="GetLightfv" offset="264">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="118"/>
+    </function>
+
+    <function name="GetLightiv" offset="265">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="119"/>
+    </function>
+
+    <function name="GetMapdv" offset="266">
+        <param name="target" type="GLenum"/>
+        <param name="query" type="GLenum"/>
+        <param name="v" type="GLdouble *" output="true" variable_param="target query"/>
+        <glx sop="120"/>
+    </function>
+
+    <function name="GetMapfv" offset="267">
+        <param name="target" type="GLenum"/>
+        <param name="query" type="GLenum"/>
+        <param name="v" type="GLfloat *" output="true" variable_param="target query"/>
+        <glx sop="121"/>
+    </function>
+
+    <function name="GetMapiv" offset="268">
+        <param name="target" type="GLenum"/>
+        <param name="query" type="GLenum"/>
+        <param name="v" type="GLint *" output="true" variable_param="target query"/>
+        <glx sop="122"/>
+    </function>
+
+    <function name="GetMaterialfv" offset="269">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="123"/>
+    </function>
+
+    <function name="GetMaterialiv" offset="270">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="124"/>
+    </function>
+
+    <function name="GetPixelMapfv" offset="271">
+        <param name="map" type="GLenum"/>
+        <param name="values" type="GLfloat *" output="true" variable_param="map"/>
+        <glx sop="125"/>
+    </function>
+
+    <function name="GetPixelMapuiv" offset="272">
+        <param name="map" type="GLenum"/>
+        <param name="values" type="GLuint *" output="true" variable_param="map"/>
+        <glx sop="126"/>
+    </function>
+
+    <function name="GetPixelMapusv" offset="273">
+        <param name="map" type="GLenum"/>
+        <param name="values" type="GLushort *" output="true" variable_param="map"/>
+        <glx sop="127"/>
+    </function>
+
+    <function name="GetPolygonStipple" offset="274">
+        <param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/>
+        <glx sop="128"/>
+    </function>
+
+    <function name="GetString" offset="275">
+        <param name="name" type="GLenum"/>
+        <return type="const GLubyte *"/>
+        <glx sop="129" handcode="true"/>
+    </function>
+
+    <function name="GetTexEnvfv" offset="276">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="130"/>
+    </function>
+
+    <function name="GetTexEnviv" offset="277">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="131"/>
+    </function>
+
+    <function name="GetTexGendv" offset="278">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
+        <glx sop="132"/>
+    </function>
+
+    <function name="GetTexGenfv" offset="279">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="133"/>
+    </function>
+
+    <function name="GetTexGeniv" offset="280">
+        <param name="coord" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="134"/>
+    </function>
+
+    <function name="GetTexImage" offset="281">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type"/>
+        <glx sop="135" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetTexParameterfv" offset="282">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="136"/>
+    </function>
+
+    <function name="GetTexParameteriv" offset="283">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="137"/>
+    </function>
+
+    <function name="GetTexLevelParameterfv" offset="284">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="138"/>
+    </function>
+
+    <function name="GetTexLevelParameteriv" offset="285">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="139"/>
+    </function>
+
+    <function name="IsEnabled" offset="286">
+        <param name="cap" type="GLenum"/>
+        <return type="GLboolean"/>
+        <glx sop="140" handcode="client"/>
+    </function>
+
+    <function name="IsList" offset="287">
+        <param name="list" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx sop="141"/>
+    </function>
+
+    <function name="DepthRange" offset="288">
+        <param name="zNear" type="GLclampd"/>
+        <param name="zFar" type="GLclampd"/>
+        <glx rop="174"/>
+    </function>
+
+    <function name="Frustum" offset="289">
+        <param name="left" type="GLdouble"/>
+        <param name="right" type="GLdouble"/>
+        <param name="bottom" type="GLdouble"/>
+        <param name="top" type="GLdouble"/>
+        <param name="zNear" type="GLdouble"/>
+        <param name="zFar" type="GLdouble"/>
+        <glx rop="175"/>
+    </function>
+
+    <function name="LoadIdentity" offset="290">
+        <glx rop="176"/>
+    </function>
+
+    <function name="LoadMatrixf" offset="291">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="177"/>
+    </function>
+
+    <function name="LoadMatrixd" offset="292">
+        <param name="m" type="const GLdouble *" count="16"/>
+        <glx rop="178"/>
+    </function>
+
+    <function name="MatrixMode" offset="293">
+        <param name="mode" type="GLenum"/>
+        <glx rop="179"/>
+    </function>
+
+    <function name="MultMatrixf" offset="294">
+        <param name="m" type="const GLfloat *" count="16"/>
+        <glx rop="180"/>
+    </function>
+
+    <function name="MultMatrixd" offset="295">
+        <param name="m" type="const GLdouble *" count="16"/>
+        <glx rop="181"/>
+    </function>
+
+    <function name="Ortho" offset="296">
+        <param name="left" type="GLdouble"/>
+        <param name="right" type="GLdouble"/>
+        <param name="bottom" type="GLdouble"/>
+        <param name="top" type="GLdouble"/>
+        <param name="zNear" type="GLdouble"/>
+        <param name="zFar" type="GLdouble"/>
+        <glx rop="182"/>
+    </function>
+
+    <function name="PopMatrix" offset="297">
+        <glx rop="183"/>
+    </function>
+
+    <function name="PushMatrix" offset="298">
+        <glx rop="184"/>
+    </function>
+
+    <function name="Rotated" offset="299">
+        <param name="angle" type="GLdouble"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <glx rop="185"/>
+    </function>
+
+    <function name="Rotatef" offset="300">
+        <param name="angle" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="186"/>
+    </function>
+
+    <function name="Scaled" offset="301">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <glx rop="187"/>
+    </function>
+
+    <function name="Scalef" offset="302">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="188"/>
+    </function>
+
+    <function name="Translated" offset="303">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <glx rop="189"/>
+    </function>
+
+    <function name="Translatef" offset="304">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <glx rop="190"/>
+    </function>
+
+    <function name="Viewport" offset="305">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="191"/>
+    </function>
+</category>
+
+<category name="1.1">
+    <enum name="INDEX_LOGIC_OP"                           value="0x0BF1"/>
+    <enum name="COLOR_LOGIC_OP"                           value="0x0BF2"/>
+    <enum name="TEXTURE_INTERNAL_FORMAT"                  value="0x1003"/>
+    <enum name="DOUBLE"                                   value="0x140A"/>
+    <enum name="POLYGON_OFFSET_UNITS"          count="1"  value="0x2A00">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_OFFSET_POINT"                     value="0x2A01"/>
+    <enum name="POLYGON_OFFSET_LINE"                      value="0x2A02"/>
+    <enum name="R3_G3_B2"                                 value="0x2A10"/>
+    <enum name="V2F"                                      value="0x2A20"/>
+    <enum name="V3F"                                      value="0x2A21"/>
+    <enum name="C4UB_V2F"                                 value="0x2A22"/>
+    <enum name="C4UB_V3F"                                 value="0x2A23"/>
+    <enum name="C3F_V3F"                                  value="0x2A24"/>
+    <enum name="N3F_V3F"                                  value="0x2A25"/>
+    <enum name="C4F_N3F_V3F"                              value="0x2A26"/>
+    <enum name="T2F_V3F"                                  value="0x2A27"/>
+    <enum name="T4F_V4F"                                  value="0x2A28"/>
+    <enum name="T2F_C4UB_V3F"                             value="0x2A29"/>
+    <enum name="T2F_C3F_V3F"                              value="0x2A2A"/>
+    <enum name="T2F_N3F_V3F"                              value="0x2A2B"/>
+    <enum name="T2F_C4F_N3F_V3F"                          value="0x2A2C"/>
+    <enum name="T4F_C4F_N3F_V4F"                          value="0x2A2D"/>
+    <enum name="POLYGON_OFFSET_FILL"                      value="0x8037"/>
+    <enum name="POLYGON_OFFSET_FACTOR"         count="1"  value="0x8038">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POLYGON_OFFSET_BIAS"                      value="0x8039"/>
+    <enum name="ALPHA4"                                   value="0x803B"/>
+    <enum name="ALPHA8"                                   value="0x803C"/>
+    <enum name="ALPHA12"                                  value="0x803D"/>
+    <enum name="ALPHA16"                                  value="0x803E"/>
+    <enum name="LUMINANCE4"                               value="0x803F"/>
+    <enum name="LUMINANCE8"                               value="0x8040"/>
+    <enum name="LUMINANCE12"                              value="0x8041"/>
+    <enum name="LUMINANCE16"                              value="0x8042"/>
+    <enum name="LUMINANCE4_ALPHA4"                        value="0x8043"/>
+    <enum name="LUMINANCE6_ALPHA2"                        value="0x8044"/>
+    <enum name="LUMINANCE8_ALPHA8"                        value="0x8045"/>
+    <enum name="LUMINANCE12_ALPHA4"                       value="0x8046"/>
+    <enum name="LUMINANCE12_ALPHA12"                      value="0x8047"/>
+    <enum name="LUMINANCE16_ALPHA16"                      value="0x8048"/>
+    <enum name="INTENSITY"                                value="0x8049"/>
+    <enum name="INTENSITY4"                               value="0x804A"/>
+    <enum name="INTENSITY8"                               value="0x804B"/>
+    <enum name="INTENSITY12"                              value="0x804C"/>
+    <enum name="INTENSITY16"                              value="0x804D"/>
+    <enum name="RGB4"                                     value="0x804F"/>
+    <enum name="RGB5"                                     value="0x8050"/>
+    <enum name="RGB8"                                     value="0x8051"/>
+    <enum name="RGB10"                                    value="0x8052"/>
+    <enum name="RGB12"                                    value="0x8053"/>
+    <enum name="RGB16"                                    value="0x8054"/>
+    <enum name="RGBA2"                                    value="0x8055"/>
+    <enum name="RGBA4"                                    value="0x8056"/>
+    <enum name="RGB5_A1"                                  value="0x8057"/>
+    <enum name="RGBA8"                                    value="0x8058"/>
+    <enum name="RGB10_A2"                                 value="0x8059"/>
+    <enum name="RGBA12"                                   value="0x805A"/>
+    <enum name="RGBA16"                                   value="0x805B"/>
+    <enum name="TEXTURE_RED_SIZE"              count="1"  value="0x805C">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_GREEN_SIZE"            count="1"  value="0x805D">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BLUE_SIZE"             count="1"  value="0x805E">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_ALPHA_SIZE"            count="1"  value="0x805F">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_LUMINANCE_SIZE"        count="1"  value="0x8060">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_INTENSITY_SIZE"        count="1"  value="0x8061">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="PROXY_TEXTURE_1D"                         value="0x8063"/>
+    <enum name="PROXY_TEXTURE_2D"                         value="0x8064"/>
+    <enum name="TEXTURE_PRIORITY"              count="1"  value="0x8066">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_RESIDENT"              count="1"  value="0x8067">
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_1D"            count="1"  value="0x8068">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_2D"            count="1"  value="0x8069">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY"                  count="1"  value="0x8074">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY"                  count="1"  value="0x8075">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY"                   count="1"  value="0x8076">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_ARRAY"                   count="1"  value="0x8077">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY"           count="1"  value="0x8078">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="EDGE_FLAG_ARRAY"               count="1"  value="0x8079">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_SIZE"             count="1"  value="0x807A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_TYPE"             count="1"  value="0x807B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_STRIDE"           count="1"  value="0x807C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY_TYPE"             count="1"  value="0x807E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY_STRIDE"           count="1"  value="0x807F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_SIZE"              count="1"  value="0x8081">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_TYPE"              count="1"  value="0x8082">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_STRIDE"            count="1"  value="0x8083">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_ARRAY_TYPE"              count="1"  value="0x8085">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_ARRAY_STRIDE"            count="1"  value="0x8086">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_SIZE"      count="1"  value="0x8088">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_TYPE"      count="1"  value="0x8089">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_STRIDE"    count="1"  value="0x808A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="EDGE_FLAG_ARRAY_STRIDE"        count="1"  value="0x808C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_POINTER"                     value="0x808E"/>
+    <enum name="NORMAL_ARRAY_POINTER"                     value="0x808F"/>
+    <enum name="COLOR_ARRAY_POINTER"                      value="0x8090"/>
+    <enum name="INDEX_ARRAY_POINTER"                      value="0x8091"/>
+    <enum name="TEXTURE_COORD_ARRAY_POINTER"              value="0x8092"/>
+    <enum name="EDGE_FLAG_ARRAY_POINTER"                  value="0x8093"/>
+    <enum name="CLIENT_PIXEL_STORE_BIT"                   value="0x00000001"/>
+    <enum name="CLIENT_VERTEX_ARRAY_BIT"                  value="0x00000002"/>
+    <enum name="ALL_CLIENT_ATTRIB_BITS"                   value="0xFFFFFFFF"/>
+    <enum name="CLIENT_ALL_ATTRIB_BITS"                   value="0xFFFFFFFF"/>
+
+    <function name="ArrayElement" offset="306">
+        <param name="i" type="GLint"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="ColorPointer" offset="308">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DisableClientState" offset="309">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DrawArrays" offset="310">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <glx rop="193" handcode="true"/>
+    </function>
+
+    <function name="DrawElements" offset="311">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="EdgeFlagPointer" offset="312">
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="EnableClientState" offset="313">
+        <param name="array" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="GetPointerv" offset="329">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **" output="true"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="IndexPointer" offset="314">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="InterleavedArrays" offset="317">
+        <param name="format" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="NormalPointer" offset="318">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="TexCoordPointer" offset="320">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="VertexPointer" offset="321">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="PolygonOffset" offset="319">
+        <param name="factor" type="GLfloat"/>
+        <param name="units" type="GLfloat"/>
+        <glx rop="192"/>
+    </function>
+
+    <function name="CopyTexImage1D" offset="323">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <glx rop="4119"/>
+    </function>
+
+    <function name="CopyTexImage2D" offset="324">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <glx rop="4120"/>
+    </function>
+
+    <function name="CopyTexSubImage1D" offset="325">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="4121"/>
+    </function>
+
+    <function name="CopyTexSubImage2D" offset="326">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4122"/>
+    </function>
+
+    <function name="TexSubImage1D" offset="332">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_xoff="xoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4099" large="true"/>
+    </function>
+
+    <function name="TexSubImage2D" offset="333">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4100" large="true"/>
+    </function>
+
+    <function name="AreTexturesResident" offset="322">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <param name="residences" type="GLboolean *" output="true" count="n"/>
+        <return type="GLboolean"/>
+        <glx sop="143" handcode="client" always_array="true"/>
+    </function>
+
+    <function name="BindTexture" offset="307">
+        <param name="target" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+        <glx rop="4117"/>
+    </function>
+
+    <function name="DeleteTextures" offset="327">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <glx sop="144"/>
+    </function>
+
+    <function name="GenTextures" offset="328">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="GLuint *" output="true" count="n"/>
+        <glx sop="145" always_array="true"/>
+    </function>
+
+    <function name="IsTexture" offset="330">
+        <param name="texture" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx sop="146"/>
+    </function>
+
+    <function name="PrioritizeTextures" offset="331">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <param name="priorities" type="const GLclampf *" count="n"/>
+        <glx rop="4118"/>
+    </function>
+
+    <function name="Indexub" offset="315" vectorequiv="Indexubv">
+        <param name="c" type="GLubyte"/>
+    </function>
+
+    <function name="Indexubv" offset="316">
+        <param name="c" type="const GLubyte *" count="1"/>
+        <glx rop="194"/>
+    </function>
+
+    <function name="PopClientAttrib" offset="334">
+        <glx handcode="true"/>
+    </function>
+
+    <function name="PushClientAttrib" offset="335">
+        <param name="mask" type="GLbitfield"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<category name="1.2">
+    <enum name="UNSIGNED_BYTE_3_3_2"                      value="0x8032"/>
+    <enum name="UNSIGNED_SHORT_4_4_4_4"                   value="0x8033"/>
+    <enum name="UNSIGNED_SHORT_5_5_5_1"                   value="0x8034"/>
+    <enum name="UNSIGNED_INT_8_8_8_8"                     value="0x8035"/>
+    <enum name="UNSIGNED_INT_10_10_10_2"                  value="0x8036"/>
+    <enum name="RESCALE_NORMAL"                count="1"  value="0x803A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_3D"            count="1"  value="0x806A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_SKIP_IMAGES"              count="1"  value="0x806B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PACK_IMAGE_HEIGHT"             count="1"  value="0x806C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_SKIP_IMAGES"            count="1"  value="0x806D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNPACK_IMAGE_HEIGHT"           count="1"  value="0x806E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_3D"                    count="1"  value="0x806F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROXY_TEXTURE_3D"                         value="0x8070"/>
+    <enum name="TEXTURE_DEPTH"                 count="1"  value="0x8071">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_WRAP_R"                count="1"  value="0x8072">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="MAX_3D_TEXTURE_SIZE"           count="1"  value="0x8073">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="UNSIGNED_BYTE_2_3_3_REV"                  value="0x8362"/>
+    <enum name="UNSIGNED_SHORT_5_6_5"                     value="0x8363"/>
+    <enum name="UNSIGNED_SHORT_5_6_5_REV"                 value="0x8364"/>
+    <enum name="UNSIGNED_SHORT_4_4_4_4_REV"               value="0x8365"/>
+    <enum name="UNSIGNED_SHORT_1_5_5_5_REV"               value="0x8366"/>
+    <enum name="UNSIGNED_INT_8_8_8_8_REV"                 value="0x8367"/>
+    <enum name="UNSIGNED_INT_2_10_10_10_REV"              value="0x8368"/>
+    <enum name="BGR"                                      value="0x80E0"/>
+    <enum name="BGRA"                                     value="0x80E1"/>
+    <enum name="MAX_ELEMENTS_VERTICES"         count="1"  value="0x80E8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_ELEMENTS_INDICES"          count="1"  value="0x80E9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLAMP_TO_EDGE"                            value="0x812F"/>
+    <enum name="TEXTURE_MIN_LOD"               count="1"  value="0x813A">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MAX_LOD"               count="1"  value="0x813B">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BASE_LEVEL"            count="1"  value="0x813C">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MAX_LEVEL"             count="1"  value="0x813D">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="LIGHT_MODEL_COLOR_CONTROL"     count="1"  value="0x81F8">
+        <size name="LightModelfv"/>
+        <size name="LightModeliv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SINGLE_COLOR"                             value="0x81F9"/>
+    <enum name="SEPARATE_SPECULAR_COLOR"                  value="0x81FA"/>
+    <enum name="SMOOTH_POINT_SIZE_RANGE"       count="2"  value="0x0B12">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SMOOTH_POINT_SIZE_GRANULARITY" count="1"  value="0x0B13">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SMOOTH_LINE_WIDTH_RANGE"       count="2"  value="0x0B22">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SMOOTH_LINE_WIDTH_GRANULARITY" count="1"  value="0x0B23">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALIASED_POINT_SIZE_RANGE"      count="2"  value="0x846D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ALIASED_LINE_WIDTH_RANGE"      count="2"  value="0x846E">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <!-- These enums are actually part of the ARB_imaging subset. -->
+
+    <enum name="CONSTANT_COLOR"                           value="0x8001"/>
+    <enum name="ONE_MINUS_CONSTANT_COLOR"                 value="0x8002"/>
+    <enum name="CONSTANT_ALPHA"                           value="0x8003"/>
+    <enum name="ONE_MINUS_CONSTANT_ALPHA"                 value="0x8004"/>
+    <enum name="BLEND_COLOR"                   count="4"  value="0x8005">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FUNC_ADD"                                 value="0x8006"/>
+    <enum name="MIN"                                      value="0x8007"/>
+    <enum name="MAX"                                      value="0x8008"/>
+    <enum name="BLEND_EQUATION"                count="1"  value="0x8009">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FUNC_SUBTRACT"                            value="0x800A"/>
+    <enum name="FUNC_REVERSE_SUBTRACT"                    value="0x800B"/>
+    <enum name="CONVOLUTION_1D"                count="1"  value="0x8010">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_2D"                count="1"  value="0x8011">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SEPARABLE_2D"                  count="1"  value="0x8012">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="CONVOLUTION_BORDER_MODE"       count="1"  value="0x8013">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_BORDER_COLOR"      count="4"  value="0x8154">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_FILTER_SCALE"      count="4"  value="0x8014">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_FILTER_BIAS"       count="4"  value="0x8015">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="REDUCE"                                   value="0x8016"/>
+    <enum name="CONVOLUTION_FORMAT"            count="1"  value="0x8017">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_WIDTH"             count="1"  value="0x8018">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_HEIGHT"            count="1"  value="0x8019">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="MAX_CONVOLUTION_WIDTH"         count="1"  value="0x801A">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_CONVOLUTION_HEIGHT"        count="1"  value="0x801B">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_RED_SCALE"    count="1"  value="0x801C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_GREEN_SCALE"  count="1"  value="0x801D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_BLUE_SCALE"   count="1"  value="0x801E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_ALPHA_SCALE"  count="1"  value="0x801F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_RED_BIAS"     count="1"  value="0x8020">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_GREEN_BIAS"   count="1"  value="0x8021">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_BLUE_BIAS"    count="1"  value="0x8022">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_ALPHA_BIAS"   count="1"  value="0x8023">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="HISTOGRAM"                     count="1"  value="0x8024">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROXY_HISTOGRAM"                          value="0x8025"/>
+    <enum name="HISTOGRAM_WIDTH"               count="1"  value="0x8026">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_FORMAT"              count="1"  value="0x8027">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_RED_SIZE"            count="1"  value="0x8028">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_GREEN_SIZE"          count="1"  value="0x8029">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_BLUE_SIZE"           count="1"  value="0x802A">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_ALPHA_SIZE"          count="1"  value="0x802B">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_LUMINANCE_SIZE"      count="1"  value="0x802C">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_SINK"                count="1"  value="0x802D">
+        <size name="GetHistogramParameterfv" mode="get"/>
+        <size name="GetHistogramParameteriv" mode="get"/>
+    </enum>
+    <enum name="MINMAX"                        count="1"  value="0x802E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MINMAX_FORMAT"                 count="1"  value="0x802F">
+        <size name="GetMinmaxParameterfv" mode="get"/>
+        <size name="GetMinmaxParameteriv" mode="get"/>
+    </enum>
+    <enum name="MINMAX_SINK"                   count="1"  value="0x8030">
+        <size name="GetMinmaxParameterfv" mode="get"/>
+        <size name="GetMinmaxParameteriv" mode="get"/>
+    </enum>
+
+    <enum name="COLOR_MATRIX"                  count="16" value="0x80B1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_MATRIX_STACK_DEPTH"      count="1"  value="0x80B2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_COLOR_MATRIX_STACK_DEPTH"  count="1"  value="0x80B3">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_RED_SCALE"   count="1"  value="0x80B4">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_GREEN_SCALE" count="1"  value="0x80B5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_BLUE_SCALE"  count="1"  value="0x80B6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_ALPHA_SCALE" count="1"  value="0x80B7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_RED_BIAS"    count="1"  value="0x80B8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_GREEN_BIAS"  count="1"  value="0x80B9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_BLUE_BIAS"   count="1"  value="0x80BA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_ALPHA_BIAS"  count="1"  value="0x80BB">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <enum name="COLOR_TABLE"                   count="1"  value="0x80D0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_COLOR_TABLE"  count="1"  value="0x80D1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_COLOR_MATRIX_COLOR_TABLE" count="1"  value="0x80D2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROXY_COLOR_TABLE"                              value="0x80D3"/>
+    <enum name="PROXY_POST_CONVOLUTION_COLOR_TABLE"             value="0x80D4"/>
+    <enum name="PROXY_POST_COLOR_MATRIX_COLOR_TABLE"            value="0x80D5"/>
+
+    <enum name="COLOR_TABLE_SCALE"             count="4"  value="0x80D6">
+        <size name="ColorTableParameterfv"/>
+        <size name="ColorTableParameteriv"/>
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_BIAS"              count="4"  value="0x80D7">
+        <size name="ColorTableParameterfv"/>
+        <size name="ColorTableParameteriv"/>
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_FORMAT"            count="1"  value="0x80D8">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_WIDTH"             count="1"  value="0x80D9">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_RED_SIZE"          count="1"  value="0x80DA">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_GREEN_SIZE"        count="1"  value="0x80DB">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_BLUE_SIZE"         count="1"  value="0x80DC">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_ALPHA_SIZE"        count="1"  value="0x80DD">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_LUMINANCE_SIZE"    count="1"  value="0x80DE">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_INTENSITY_SIZE"    count="1"  value="0x80DF">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+
+
+    <function name="BlendColor" offset="336">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+        <glx rop="4096"/>
+    </function>
+
+    <function name="BlendEquation" offset="337">
+        <param name="mode" type="GLenum"/>
+        <glx rop="4097"/>
+    </function>
+
+    <function name="DrawRangeElements" offset="338">
+        <param name="mode" type="GLenum"/>
+        <param name="start" type="GLuint"/>
+        <param name="end" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="ColorTable" offset="339">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="const GLvoid *" img_width="width" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
+        <glx rop="2053" large="true"/>
+    </function>
+
+    <function name="ColorTableParameterfv" offset="340">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="2054"/>
+    </function>
+
+    <function name="ColorTableParameteriv" offset="341">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="2055"/>
+    </function>
+
+    <function name="CopyColorTable" offset="342">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="2056"/>
+    </function>
+
+    <function name="GetColorTable" offset="343">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
+        <glx sop="147" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetColorTableParameterfv" offset="344">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="148"/>
+    </function>
+
+    <function name="GetColorTableParameteriv" offset="345">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="149"/>
+    </function>
+
+    <function name="ColorSubTable" offset="346">
+        <param name="target" type="GLenum"/>
+        <param name="start" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="data" type="const GLvoid *" img_width="count" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
+        <glx rop="195" large="true"/>
+    </function>
+
+    <function name="CopyColorSubTable" offset="347">
+        <param name="target" type="GLenum"/>
+        <param name="start" type="GLsizei"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="196"/>
+    </function>
+
+    <function name="ConvolutionFilter1D" offset="348">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4101" large="true"/>
+    </function>
+
+    <function name="ConvolutionFilter2D" offset="349">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4102" large="true"/>
+    </function>
+
+    <function name="ConvolutionParameterf" offset="350">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat"/>
+        <glx rop="4103"/>
+    </function>
+
+    <function name="ConvolutionParameterfv" offset="351">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="4104"/>
+    </function>
+
+    <function name="ConvolutionParameteri" offset="352">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint"/>
+        <glx rop="4105"/>
+    </function>
+
+    <function name="ConvolutionParameteriv" offset="353">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="4106"/>
+    </function>
+
+    <function name="CopyConvolutionFilter1D" offset="354">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <glx rop="4107"/>
+    </function>
+
+    <function name="CopyConvolutionFilter2D" offset="355">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4108"/>
+    </function>
+
+    <function name="GetConvolutionFilter" offset="356">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/>
+        <glx sop="150" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetConvolutionParameterfv" offset="357">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="151"/>
+    </function>
+
+    <function name="GetConvolutionParameteriv" offset="358">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="152"/>
+    </function>
+
+    <function name="GetSeparableFilter" offset="359">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="row" type="GLvoid *" output="true"/>
+        <param name="column" type="GLvoid *" output="true"/>
+        <param name="span" type="GLvoid *" output="true"/>
+        <glx sop="153" handcode="true"/>
+    </function>
+
+    <function name="SeparableFilter2D" offset="360">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="row" type="const GLvoid *"/>
+        <param name="column" type="const GLvoid *"/>
+        <glx rop="4109" handcode="true"/>
+    </function>
+
+    <function name="GetHistogram" offset="361">
+        <param name="target" type="GLenum"/>
+        <param name="reset" type="GLboolean"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
+        <glx sop="154" dimensions_in_reply="true" img_reset="reset"/>
+    </function>
+
+    <function name="GetHistogramParameterfv" offset="362">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="155"/>
+    </function>
+
+    <function name="GetHistogramParameteriv" offset="363">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="156"/>
+    </function>
+
+    <function name="GetMinmax" offset="364">
+        <param name="target" type="GLenum"/>
+        <param name="reset" type="GLboolean"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/>
+        <glx sop="157" img_reset="reset"/>
+    </function>
+
+    <function name="GetMinmaxParameterfv" offset="365">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx sop="158"/>
+    </function>
+
+    <function name="GetMinmaxParameteriv" offset="366">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="159"/>
+    </function>
+
+    <function name="Histogram" offset="367">
+        <param name="target" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="sink" type="GLboolean"/>
+        <glx rop="4110"/>
+    </function>
+
+    <function name="Minmax" offset="368">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="sink" type="GLboolean"/>
+        <glx rop="4111"/>
+    </function>
+
+    <function name="ResetHistogram" offset="369">
+        <param name="target" type="GLenum"/>
+        <glx rop="4112"/>
+    </function>
+
+    <function name="ResetMinmax" offset="370">
+        <param name="target" type="GLenum"/>
+        <glx rop="4113"/>
+    </function>
+
+    <function name="TexImage3D" offset="371">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
+        <glx rop="4114" large="true"/>
+    </function>
+
+    <function name="TexSubImage3D" offset="372">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="4115" large="true"/>
+    </function>
+
+    <function name="CopyTexSubImage3D" offset="373">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <glx rop="4123"/>
+    </function>
+</category>
+
+<category name="1.3">
+    <enum name="TEXTURE0"                                 value="0x84C0"/>
+    <enum name="TEXTURE1"                                 value="0x84C1"/>
+    <enum name="TEXTURE2"                                 value="0x84C2"/>
+    <enum name="TEXTURE3"                                 value="0x84C3"/>
+    <enum name="TEXTURE4"                                 value="0x84C4"/>
+    <enum name="TEXTURE5"                                 value="0x84C5"/>
+    <enum name="TEXTURE6"                                 value="0x84C6"/>
+    <enum name="TEXTURE7"                                 value="0x84C7"/>
+    <enum name="TEXTURE8"                                 value="0x84C8"/>
+    <enum name="TEXTURE9"                                 value="0x84C9"/>
+    <enum name="TEXTURE10"                                value="0x84CA"/>
+    <enum name="TEXTURE11"                                value="0x84CB"/>
+    <enum name="TEXTURE12"                                value="0x84CC"/>
+    <enum name="TEXTURE13"                                value="0x84CD"/>
+    <enum name="TEXTURE14"                                value="0x84CE"/>
+    <enum name="TEXTURE15"                                value="0x84CF"/>
+    <enum name="TEXTURE16"                                value="0x84D0"/>
+    <enum name="TEXTURE17"                                value="0x84D1"/>
+    <enum name="TEXTURE18"                                value="0x84D2"/>
+    <enum name="TEXTURE19"                                value="0x84D3"/>
+    <enum name="TEXTURE20"                                value="0x84D4"/>
+    <enum name="TEXTURE21"                                value="0x84D5"/>
+    <enum name="TEXTURE22"                                value="0x84D6"/>
+    <enum name="TEXTURE23"                                value="0x84D7"/>
+    <enum name="TEXTURE24"                                value="0x84D8"/>
+    <enum name="TEXTURE25"                                value="0x84D9"/>
+    <enum name="TEXTURE26"                                value="0x84DA"/>
+    <enum name="TEXTURE27"                                value="0x84DB"/>
+    <enum name="TEXTURE28"                                value="0x84DC"/>
+    <enum name="TEXTURE29"                                value="0x84DD"/>
+    <enum name="TEXTURE30"                                value="0x84DE"/>
+    <enum name="TEXTURE31"                                value="0x84DF"/>
+    <enum name="ACTIVE_TEXTURE"                count="1"  value="0x84E0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIENT_ACTIVE_TEXTURE"         count="1"  value="0x84E1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_UNITS"             count="1"  value="0x84E2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TRANSPOSE_MODELVIEW_MATRIX"               value="0x84E3"/>
+    <enum name="TRANSPOSE_PROJECTION_MATRIX"              value="0x84E4"/>
+    <enum name="TRANSPOSE_TEXTURE_MATRIX"                 value="0x84E5"/>
+    <enum name="TRANSPOSE_COLOR_MATRIX"                   value="0x84E6"/>
+    <enum name="MULTISAMPLE"                   count="1"  value="0x809D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_ALPHA_TO_COVERAGE"      count="1"  value="0x809E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_ALPHA_TO_ONE"           count="1"  value="0x809F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE"               count="1"  value="0x80A0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_BUFFERS"                count="1"  value="0x80A8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLES"                       count="1"  value="0x80A9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE_VALUE"         count="1"  value="0x80AA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE_INVERT"        count="1"  value="0x80AB">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MULTISAMPLE_BIT"                          value="0x20000000"/>
+    <enum name="NORMAL_MAP"                               value="0x8511"/>
+    <enum name="REFLECTION_MAP"                           value="0x8512"/>
+    <enum name="TEXTURE_CUBE_MAP"              count="1"  value="0x8513">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_CUBE_MAP"      count="1"  value="0x8514">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X"              value="0x8515"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X"              value="0x8516"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y"              value="0x8517"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y"              value="0x8518"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z"              value="0x8519"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z"              value="0x851A"/>
+    <enum name="PROXY_TEXTURE_CUBE_MAP"                   value="0x851B"/>
+    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE"     count="1"  value="0x851C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COMPRESSED_ALPHA"                         value="0x84E9"/>
+    <enum name="COMPRESSED_LUMINANCE"                     value="0x84EA"/>
+    <enum name="COMPRESSED_LUMINANCE_ALPHA"               value="0x84EB"/>
+    <enum name="COMPRESSED_INTENSITY"                     value="0x84EC"/>
+    <enum name="COMPRESSED_RGB"                           value="0x84ED"/>
+    <enum name="COMPRESSED_RGBA"                          value="0x84EE"/>
+    <enum name="TEXTURE_COMPRESSION_HINT"      count="1"  value="0x84EF">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPRESSED_IMAGE_SIZE" count="1"  value="0x86A0">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPRESSED"            count="1"  value="0x86A1">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="NUM_COMPRESSED_TEXTURE_FORMATS" count="1" value="0x86A2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COMPRESSED_TEXTURE_FORMATS"    count="-1"  value="0x86A3">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLAMP_TO_BORDER"                          value="0x812D"/>
+    <enum name="COMBINE"                                  value="0x8570"/>
+    <enum name="COMBINE_RGB"                   count="1"  value="0x8571">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="COMBINE_ALPHA"                 count="1"  value="0x8572">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="SOURCE0_RGB"                   count="1"  value="0x8580">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="SOURCE1_RGB"                   count="1"  value="0x8581">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="SOURCE2_RGB"                   count="1"  value="0x8582">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="SOURCE0_ALPHA"                 count="1"  value="0x8588">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="SOURCE1_ALPHA"                 count="1"  value="0x8589">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="SOURCE2_ALPHA"                 count="1"  value="0x858A">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND0_RGB"                  count="1"  value="0x8590">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND1_RGB"                  count="1"  value="0x8591">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND2_RGB"                  count="1"  value="0x8592">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND0_ALPHA"                count="1"  value="0x8598">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND1_ALPHA"                count="1"  value="0x8599">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND2_ALPHA"                count="1"  value="0x859A">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="RGB_SCALE"                     count="1"  value="0x8573">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="ADD_SIGNED"                               value="0x8574"/>
+    <enum name="INTERPOLATE"                              value="0x8575"/>
+    <enum name="SUBTRACT"                                 value="0x84E7"/>
+    <enum name="CONSTANT"                                 value="0x8576"/>
+    <enum name="PRIMARY_COLOR"                            value="0x8577"/>
+    <enum name="PREVIOUS"                                 value="0x8578"/>
+    <enum name="DOT3_RGB"                                 value="0x86AE"/>
+    <enum name="DOT3_RGBA"                                value="0x86AF"/>
+
+    <function name="ActiveTexture" alias="ActiveTextureARB">
+        <param name="texture" type="GLenum"/>
+    </function>
+
+    <function name="ClientActiveTexture" alias="ClientActiveTextureARB">
+        <param name="texture" type="GLenum"/>
+    </function>
+
+    <function name="MultiTexCoord1d" alias="MultiTexCoord1dARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord1dv" alias="MultiTexCoord1dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="MultiTexCoord1f" alias="MultiTexCoord1fARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord1fv" alias="MultiTexCoord1fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="MultiTexCoord1i" alias="MultiTexCoord1iARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord1iv" alias="MultiTexCoord1ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="MultiTexCoord1s" alias="MultiTexCoord1sARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord1sv" alias="MultiTexCoord1svARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="MultiTexCoord2d" alias="MultiTexCoord2dARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord2dv" alias="MultiTexCoord2dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="MultiTexCoord2f" alias="MultiTexCoord2fARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord2fv" alias="MultiTexCoord2fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="MultiTexCoord2i" alias="MultiTexCoord2iARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord2iv" alias="MultiTexCoord2ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="MultiTexCoord2s" alias="MultiTexCoord2sARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord2sv" alias="MultiTexCoord2svARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="MultiTexCoord3d" alias="MultiTexCoord3dARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord3dv" alias="MultiTexCoord3dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="MultiTexCoord3f" alias="MultiTexCoord3fARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord3fv" alias="MultiTexCoord3fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="MultiTexCoord3i" alias="MultiTexCoord3iARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord3iv" alias="MultiTexCoord3ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="MultiTexCoord3s" alias="MultiTexCoord3sARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord3sv" alias="MultiTexCoord3svARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="MultiTexCoord4d" alias="MultiTexCoord4dARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+        <param name="q" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord4dv" alias="MultiTexCoord4dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="MultiTexCoord4f" alias="MultiTexCoord4fARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord4fv" alias="MultiTexCoord4fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="MultiTexCoord4i" alias="MultiTexCoord4iARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+        <param name="q" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord4iv" alias="MultiTexCoord4ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="MultiTexCoord4s" alias="MultiTexCoord4sARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+        <param name="q" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord4sv" alias="MultiTexCoord4svARB">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="LoadTransposeMatrixf" alias="LoadTransposeMatrixfARB">
+        <param name="m" type="const GLfloat *"/>
+    </function>
+
+    <function name="LoadTransposeMatrixd" alias="LoadTransposeMatrixdARB">
+        <param name="m" type="const GLdouble *"/>
+    </function>
+
+    <function name="MultTransposeMatrixf" alias="MultTransposeMatrixfARB">
+        <param name="m" type="const GLfloat *"/>
+    </function>
+
+    <function name="MultTransposeMatrixd" alias="MultTransposeMatrixdARB">
+        <param name="m" type="const GLdouble *"/>
+    </function>
+
+    <function name="SampleCoverage" alias="SampleCoverageARB">
+        <param name="value" type="GLclampf"/>
+        <param name="invert" type="GLboolean"/>
+    </function>
+
+    <function name="CompressedTexImage3D" alias="CompressedTexImage3DARB">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="CompressedTexImage2D" alias="CompressedTexImage2DARB">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="CompressedTexImage1D" alias="CompressedTexImage1DARB">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="CompressedTexSubImage3D" alias="CompressedTexSubImage3DARB">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="CompressedTexSubImage2D" alias="CompressedTexSubImage2DARB">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="CompressedTexSubImage1D" alias="CompressedTexSubImage1DARB">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="GetCompressedTexImage" alias="GetCompressedTexImageARB">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="img" type="GLvoid *" output="true"/>
+    </function>
+</category>
+
+<category name="1.4">
+    <enum name="BLEND_DST_RGB"                 count="1"  value="0x80C8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC_RGB"                 count="1"  value="0x80C9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_DST_ALPHA"               count="1"  value="0x80CA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_SRC_ALPHA"               count="1"  value="0x80CB">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SIZE_MIN"                count="1"  value="0x8126">
+        <size name="PointParameterfvEXT"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_SIZE_MAX"                count="1"  value="0x8127">
+        <size name="PointParameterfvEXT"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_FADE_THRESHOLD_SIZE"     count="1"  value="0x8128">
+        <size name="PointParameterfvEXT"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POINT_DISTANCE_ATTENUATION"    count="3"  value="0x8129">
+        <size name="PointParameterfvEXT"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="GENERATE_MIPMAP"               count="1"  value="0x8191">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="GENERATE_MIPMAP_HINT"                     value="0x8192"/>
+    <enum name="DEPTH_COMPONENT16"                        value="0x81A5"/>
+    <enum name="DEPTH_COMPONENT24"                        value="0x81A6"/>
+    <enum name="DEPTH_COMPONENT32"                        value="0x81A7"/>
+    <enum name="MIRRORED_REPEAT"                          value="0x8370"/>
+    <enum name="FOG_COORDINATE_SOURCE"         count="1"  value="0x8450">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORDINATE"                           value="0x8451"/>
+    <enum name="FRAGMENT_DEPTH"                           value="0x8452"/>
+    <enum name="CURRENT_FOG_COORDINATE"        count="1"  value="0x8453">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORDINATE_ARRAY_TYPE"     count="1"  value="0x8454">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORDINATE_ARRAY_STRIDE"   count="1"  value="0x8455">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORDINATE_ARRAY_POINTER"             value="0x8456"/>
+    <enum name="FOG_COORDINATE_ARRAY"          count="1"  value="0x8457">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_SUM"                                value="0x8458"/>
+    <enum name="CURRENT_SECONDARY_COLOR"       count="4"  value="0x8459">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SECONDARY_COLOR_ARRAY_SIZE"    count="1"  value="0x845A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SECONDARY_COLOR_ARRAY_TYPE"    count="1"  value="0x845B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SECONDARY_COLOR_ARRAY_STRIDE"  count="1"  value="0x845C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SECONDARY_COLOR_ARRAY_POINTER"            value="0x845D"/>
+    <enum name="SECONDARY_COLOR_ARRAY"         count="1"  value="0x845E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_LOD_BIAS"          count="1"  value="0x84FD">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_FILTER_CONTROL"                   value="0x8500"/>
+    <enum name="TEXTURE_LOD_BIAS"              count="1"  value="0x8501">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="INCR_WRAP"                                value="0x8507"/>
+    <enum name="DECR_WRAP"                                value="0x8508"/>
+    <enum name="TEXTURE_DEPTH_SIZE"            count="1"  value="0x884A">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="DEPTH_TEXTURE_MODE"            count="1"  value="0x884B">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPARE_MODE"          count="1"  value="0x884C">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPARE_FUNC"          count="1"  value="0x884D">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="COMPARE_R_TO_TEXTURE"                     value="0x884E"/>
+
+    <function name="BlendFuncSeparate" alias="BlendFuncSeparateEXT">
+        <param name="sfactorRGB" type="GLenum"/>
+        <param name="dfactorRGB" type="GLenum"/>
+        <param name="sfactorAlpha" type="GLenum"/>
+        <param name="dfactorAlpha" type="GLenum"/>
+    </function>
+
+    <function name="FogCoordf" alias="FogCoordfEXT">
+        <param name="coord" type="GLfloat"/>
+    </function>
+
+    <function name="FogCoordfv" alias="FogCoordfvEXT">
+        <param name="coord" type="const GLfloat *"/>
+    </function>
+
+    <function name="FogCoordd" alias="FogCoorddEXT">
+        <param name="coord" type="GLdouble"/>
+    </function>
+
+    <function name="FogCoorddv" alias="FogCoorddvEXT">
+        <param name="coord" type="const GLdouble *"/>
+    </function>
+
+    <function name="FogCoordPointer" alias="FogCoordPointerEXT">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+
+    <function name="MultiDrawArrays" alias="MultiDrawArraysEXT">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint *"/> <!-- Spec bug. Should be const. -->
+        <param name="count" type="GLsizei *"/> <!-- Spec bug. Should be const. -->
+        <param name="primcount" type="GLsizei"/>
+    </function>
+
+    <function name="MultiDrawElements" alias="MultiDrawElementsEXT">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="const GLsizei *"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid **"/>
+        <param name="primcount" type="GLsizei"/>
+    </function>
+
+    <function name="PointParameterf" alias="PointParameterfEXT">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+    </function>
+
+    <function name="PointParameterfv" alias="PointParameterfvEXT">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="PointParameteri" alias="PointParameteriNV">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+    </function>
+
+    <function name="PointParameteriv" alias="PointParameterivNV">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+    </function>
+
+    <function name="SecondaryColor3b" alias="SecondaryColor3bEXT">
+        <param name="red" type="GLbyte"/>
+        <param name="green" type="GLbyte"/>
+        <param name="blue" type="GLbyte"/>
+    </function>
+
+    <function name="SecondaryColor3bv" alias="SecondaryColor3bvEXT">
+        <param name="v" type="const GLbyte *"/>
+    </function>
+
+    <function name="SecondaryColor3d" alias="SecondaryColor3dEXT">
+        <param name="red" type="GLdouble"/>
+        <param name="green" type="GLdouble"/>
+        <param name="blue" type="GLdouble"/>
+    </function>
+
+    <function name="SecondaryColor3dv" alias="SecondaryColor3dvEXT">
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="SecondaryColor3f" alias="SecondaryColor3fEXT">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+    </function>
+
+    <function name="SecondaryColor3fv" alias="SecondaryColor3fvEXT">
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="SecondaryColor3i" alias="SecondaryColor3iEXT">
+        <param name="red" type="GLint"/>
+        <param name="green" type="GLint"/>
+        <param name="blue" type="GLint"/>
+    </function>
+
+    <function name="SecondaryColor3iv" alias="SecondaryColor3ivEXT">
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="SecondaryColor3s" alias="SecondaryColor3sEXT">
+        <param name="red" type="GLshort"/>
+        <param name="green" type="GLshort"/>
+        <param name="blue" type="GLshort"/>
+    </function>
+
+    <function name="SecondaryColor3sv" alias="SecondaryColor3svEXT">
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="SecondaryColor3ub" alias="SecondaryColor3ubEXT">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+    </function>
+
+    <function name="SecondaryColor3ubv" alias="SecondaryColor3ubvEXT">
+        <param name="v" type="const GLubyte *"/>
+    </function>
+
+    <function name="SecondaryColor3ui" alias="SecondaryColor3uiEXT">
+        <param name="red" type="GLuint"/>
+        <param name="green" type="GLuint"/>
+        <param name="blue" type="GLuint"/>
+    </function>
+
+    <function name="SecondaryColor3uiv" alias="SecondaryColor3uivEXT">
+        <param name="v" type="const GLuint *"/>
+    </function>
+
+    <function name="SecondaryColor3us" alias="SecondaryColor3usEXT">
+        <param name="red" type="GLushort"/>
+        <param name="green" type="GLushort"/>
+        <param name="blue" type="GLushort"/>
+    </function>
+
+    <function name="SecondaryColor3usv" alias="SecondaryColor3usvEXT">
+        <param name="v" type="const GLushort *"/>
+    </function>
+
+    <function name="SecondaryColorPointer" alias="SecondaryColorPointerEXT">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+
+    <function name="WindowPos2d" alias="WindowPos2dMESA">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="WindowPos2dv" alias="WindowPos2dvMESA">
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="WindowPos2f" alias="WindowPos2fMESA">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="WindowPos2fv" alias="WindowPos2fvMESA">
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="WindowPos2i" alias="WindowPos2iMESA">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+    </function>
+
+    <function name="WindowPos2iv" alias="WindowPos2ivMESA">
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="WindowPos2s" alias="WindowPos2sMESA">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="WindowPos2sv" alias="WindowPos2svMESA">
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="WindowPos3d" alias="WindowPos3dMESA">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="WindowPos3dv" alias="WindowPos3dvMESA">
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="WindowPos3f" alias="WindowPos3fMESA">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="WindowPos3fv" alias="WindowPos3fvMESA">
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="WindowPos3i" alias="WindowPos3iMESA">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+    </function>
+
+    <function name="WindowPos3iv" alias="WindowPos3ivMESA">
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="WindowPos3s" alias="WindowPos3sMESA">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="WindowPos3sv" alias="WindowPos3svMESA">
+        <param name="v" type="const GLshort *"/>
+    </function>
+</category>
+
+<category name="1.5">
+    <enum name="BUFFER_SIZE"                              value="0x8764"/>
+    <enum name="BUFFER_USAGE"                             value="0x8765"/>
+    <enum name="QUERY_COUNTER_BITS"                       value="0x8864"/>
+    <enum name="CURRENT_QUERY"                            value="0x8865"/>
+    <enum name="QUERY_RESULT"                             value="0x8866"/>
+    <enum name="QUERY_RESULT_AVAILABLE"                   value="0x8867"/>
+    <enum name="ARRAY_BUFFER"                             value="0x8892"/>
+    <enum name="ELEMENT_ARRAY_BUFFER"                     value="0x8893"/>
+    <enum name="ARRAY_BUFFER_BINDING"                     value="0x8894"/>
+    <enum name="ELEMENT_ARRAY_BUFFER_BINDING"             value="0x8895"/>
+    <enum name="VERTEX_ARRAY_BUFFER_BINDING"              value="0x8896"/>
+    <enum name="NORMAL_ARRAY_BUFFER_BINDING"              value="0x8897"/>
+    <enum name="COLOR_ARRAY_BUFFER_BINDING"               value="0x8898"/>
+    <enum name="INDEX_ARRAY_BUFFER_BINDING"               value="0x8899"/>
+    <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING"       value="0x889A"/>
+    <enum name="EDGE_FLAG_ARRAY_BUFFER_BINDING"           value="0x889B"/>
+    <enum name="SECONDARY_COLOR_ARRAY_BUFFER_BINDING"     value="0x889C"/>
+    <enum name="FOG_COORDINATE_ARRAY_BUFFER_BINDING"      value="0x889D"/>
+    <enum name="WEIGHT_ARRAY_BUFFER_BINDING"              value="0x889E"/>
+    <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"       value="0x889F"/>
+    <enum name="READ_ONLY"                                value="0x88B8"/>
+    <enum name="WRITE_ONLY"                               value="0x88B9"/>
+    <enum name="READ_WRITE"                               value="0x88BA"/>
+    <enum name="BUFFER_ACCESS"                            value="0x88BB"/>
+    <enum name="BUFFER_MAPPED"                            value="0x88BC"/>
+    <enum name="BUFFER_MAP_POINTER"                       value="0x88BD"/>
+    <enum name="STREAM_DRAW"                              value="0x88E0"/>
+    <enum name="STREAM_READ"                              value="0x88E1"/>
+    <enum name="STREAM_COPY"                              value="0x88E2"/>
+    <enum name="STATIC_DRAW"                              value="0x88E4"/>
+    <enum name="STATIC_READ"                              value="0x88E5"/>
+    <enum name="STATIC_COPY"                              value="0x88E6"/>
+    <enum name="DYNAMIC_DRAW"                             value="0x88E8"/>
+    <enum name="DYNAMIC_READ"                             value="0x88E9"/>
+    <enum name="DYNAMIC_COPY"                             value="0x88EA"/>
+    <enum name="SAMPLES_PASSED"                count="1"  value="0x8914"/>
+    <enum name="FOG_COORD_SRC"                            value="0x8450">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORD"                                value="0x8451"/>
+    <enum name="CURRENT_FOG_COORD"             count="1"  value="0x8453">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORD_ARRAY_TYPE"          count="1"  value="0x8454">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORD_ARRAY_STRIDE"        count="1"  value="0x8455">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORD_ARRAY_POINTER"                  value="0x8456"/>
+    <enum name="FOG_COORD_ARRAY"               count="1"  value="0x8457">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORD_ARRAY_BUFFER_BINDING"           value="0x889D"/>
+    <enum name="SRC0_RGB"                                 value="0x8580"/>
+    <enum name="SRC1_RGB"                                 value="0x8581"/>
+    <enum name="SRC2_RGB"                                 value="0x8582"/>
+    <enum name="SRC0_ALPHA"                               value="0x8588"/>
+    <enum name="SRC1_ALPHA"                               value="0x8589"/>
+    <enum name="SRC2_ALPHA"                               value="0x858A"/>
+
+    <type name="intptr"   size="4"                  glx_name="CARD32"/>
+    <type name="sizeiptr" size="4"  unsigned="true" glx_name="CARD32"/>
+
+    <function name="BindBuffer" alias="BindBufferARB">
+        <param name="target" type="GLenum"/>
+        <param name="buffer" type="GLuint"/>
+    </function>
+
+    <function name="BufferData" alias="BufferDataARB">
+        <param name="target" type="GLenum"/>
+        <param name="size" type="GLsizeiptr"/>
+        <param name="data" type="const GLvoid *"/>
+        <param name="usage" type="GLenum"/>
+    </function>
+
+    <function name="BufferSubData" alias="BufferSubDataARB">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptr"/>
+        <param name="size" type="GLsizeiptr"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="DeleteBuffers" alias="DeleteBuffersARB">
+        <param name="n" type="GLsizei"/>
+        <param name="buffer" type="const GLuint *"/>
+    </function>
+
+    <function name="GenBuffers" alias="GenBuffersARB">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="buffer" type="GLuint *" output="true" count="n"/>
+    </function>
+
+    <function name="GetBufferParameteriv" alias="GetBufferParameterivARB">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetBufferPointerv" alias="GetBufferPointervARB">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **" output="true"/>
+    </function>
+
+    <function name="GetBufferSubData" alias="GetBufferSubDataARB">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptr"/>
+        <param name="size" type="GLsizeiptr"/>
+        <param name="data" type="GLvoid *" output="true"/>
+    </function>
+
+    <function name="IsBuffer" alias="IsBufferARB">
+        <param name="buffer" type="GLuint"/>
+        <return type="GLboolean"/>
+    </function>
+
+    <function name="MapBuffer" alias="MapBufferARB">
+        <param name="target" type="GLenum"/>
+        <param name="access" type="GLenum"/>
+        <return type="GLvoid *"/>
+    </function>
+
+    <function name="UnmapBuffer" alias="UnmapBufferARB">
+        <param name="target" type="GLenum"/>
+        <return type="GLboolean"/>
+    </function>
+
+    <function name="GenQueries" alias="GenQueriesARB">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="ids" type="GLuint *" output="true" count="n"/>
+    </function>
+
+    <function name="DeleteQueries" alias="DeleteQueriesARB">
+        <param name="n" type="GLsizei"/>
+        <param name="ids" type="const GLuint *"/>
+    </function>
+
+    <function name="IsQuery" alias="IsQueryARB">
+        <param name="id" type="GLuint"/>
+        <return type="GLboolean"/>
+    </function>
+
+    <function name="BeginQuery" alias="BeginQueryARB">
+        <param name="target" type="GLenum"/>
+        <param name="id" type="GLuint"/>
+    </function>
+
+    <function name="EndQuery" alias="EndQueryARB">
+        <param name="target" type="GLenum"/>
+    </function>
+
+    <function name="GetQueryiv" alias="GetQueryivARB">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetQueryObjectiv" alias="GetQueryObjectivARB">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetQueryObjectuiv" alias="GetQueryObjectuivARB">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLuint *" output="true" variable_param="pname"/>
+    </function>
+</category>
+
+
+<category name="2.0">
+    <!-- XXX some of the enums and functions probably need additional -->
+    <!-- flags/attributes. -->
+
+    <type name="char"   size="1" glx_name="CARD8"/>
+
+    <enum name="BLEND_EQUATION_RGB"            value="0x8009"/>
+    <enum name="VERTEX_ATTRIB_ARRAY_ENABLED"      value="0x8622"/>
+    <enum name="VERTEX_ATTRIB_ARRAY_SIZE"         value="0x8623"/>
+    <enum name="VERTEX_ATTRIB_ARRAY_STRIDE"       value="0x8624"/>
+    <enum name="VERTEX_ATTRIB_ARRAY_TYPE"         value="0x8625"/>
+    <enum name="CURRENT_VERTEX_ATTRIB"            value="0x8626"/>
+    <enum name="VERTEX_PROGRAM_POINT_SIZE"        value="0x8642"/>
+    <enum name="VERTEX_PROGRAM_TWO_SIDE"          value="0x8643"/>
+    <enum name="VERTEX_ATTRIB_ARRAY_POINTER"      value="0x8645"/>
+    <enum name="STENCIL_BACK_FUNC"                value="0x8800"/>
+    <enum name="STENCIL_BACK_FAIL"                value="0x8801"/>
+    <enum name="STENCIL_BACK_PASS_DEPTH_FAIL"     value="0x8802"/>
+    <enum name="STENCIL_BACK_PASS_DEPTH_PASS"     value="0x8803"/>
+    <enum name="MAX_DRAW_BUFFERS"                 value="0x8824"/>
+    <enum name="DRAW_BUFFER0"                     value="0x8825"/>
+    <enum name="DRAW_BUFFER1"                     value="0x8826"/>
+    <enum name="DRAW_BUFFER2"                     value="0x8827"/>
+    <enum name="DRAW_BUFFER3"                     value="0x8828"/>
+    <enum name="DRAW_BUFFER4"                     value="0x8829"/>
+    <enum name="DRAW_BUFFER5"                     value="0x882A"/>
+    <enum name="DRAW_BUFFER6"                     value="0x882B"/>
+    <enum name="DRAW_BUFFER7"                     value="0x882C"/>
+    <enum name="DRAW_BUFFER8"                     value="0x882D"/>
+    <enum name="DRAW_BUFFER9"                     value="0x882E"/>
+    <enum name="DRAW_BUFFER10"                    value="0x882F"/>
+    <enum name="DRAW_BUFFER11"                    value="0x8830"/>
+    <enum name="DRAW_BUFFER12"                    value="0x8831"/>
+    <enum name="DRAW_BUFFER13"                    value="0x8832"/>
+    <enum name="DRAW_BUFFER14"                    value="0x8833"/>
+    <enum name="DRAW_BUFFER15"                    value="0x8834"/>
+    <enum name="BLEND_EQUATION_ALPHA"             value="0x883D"/>
+    <enum name="POINT_SPRITE"                     value="0x8861"/>
+    <enum name="COORD_REPLACE"                    value="0x8862"/>
+    <enum name="MAX_VERTEX_ATTRIBS"               value="0x8869"/>
+    <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED"   value="0x886A"/>
+    <enum name="MAX_TEXTURE_COORDS"               value="0x8871"/>
+    <enum name="MAX_TEXTURE_IMAGE_UNITS"          value="0x8872"/>
+    <enum name="FRAGMENT_SHADER"                  value="0x8B30"/>
+    <enum name="VERTEX_SHADER"                    value="0x8B31"/>
+    <enum name="MAX_FRAGMENT_UNIFORM_COMPONENTS"  value="0x8B49"/>
+    <enum name="MAX_VERTEX_UNIFORM_COMPONENTS"    value="0x8B4A"/>
+    <enum name="MAX_VARYING_FLOATS"               value="0x8B4B"/>
+    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS"   value="0x8B4C"/>
+    <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS" value="0x8B4D"/>
+    <enum name="SHADER_TYPE"                      value="0x8B4F"/>
+    <enum name="FLOAT_VEC2"                       value="0x8B50"/>
+    <enum name="FLOAT_VEC3"                       value="0x8B51"/>
+    <enum name="FLOAT_VEC4"                       value="0x8B52"/>
+    <enum name="INT_VEC2"                         value="0x8B53"/>
+    <enum name="INT_VEC3"                         value="0x8B54"/>
+    <enum name="INT_VEC4"                         value="0x8B55"/>
+    <enum name="BOOL"                             value="0x8B56"/>
+    <enum name="BOOL_VEC2"                        value="0x8B57"/>
+    <enum name="BOOL_VEC3"                        value="0x8B58"/>
+    <enum name="BOOL_VEC4"                        value="0x8B59"/>
+    <enum name="FLOAT_MAT2"                       value="0x8B5A"/>
+    <enum name="FLOAT_MAT3"                       value="0x8B5B"/>
+    <enum name="FLOAT_MAT4"                       value="0x8B5C"/>
+    <enum name="SAMPLER_1D"                       value="0x8B5D"/>
+    <enum name="SAMPLER_2D"                       value="0x8B5E"/>
+    <enum name="SAMPLER_3D"                       value="0x8B5F"/>
+    <enum name="SAMPLER_CUBE"                     value="0x8B60"/>
+    <enum name="SAMPLER_1D_SHADOW"                value="0x8B61"/>
+    <enum name="SAMPLER_2D_SHADOW"                value="0x8B62"/>
+    <enum name="DELETE_STATUS"                    value="0x8B80"/>
+    <enum name="COMPILE_STATUS"                   value="0x8B81"/>
+    <enum name="LINK_STATUS"                      value="0x8B82"/>
+    <enum name="VALIDATE_STATUS"                  value="0x8B83"/>
+    <enum name="INFO_LOG_LENGTH"                  value="0x8B84"/>
+    <enum name="ATTACHED_SHADERS"                 value="0x8B85"/>
+    <enum name="ACTIVE_UNIFORMS"                  value="0x8B86"/>
+    <enum name="ACTIVE_UNIFORM_MAX_LENGTH"        value="0x8B87"/>
+    <enum name="SHADER_SOURCE_LENGTH"             value="0x8B88"/>
+    <enum name="ACTIVE_ATTRIBUTES"                value="0x8B89"/>
+    <enum name="ACTIVE_ATTRIBUTE_MAX_LENGTH"      value="0x8B8A"/>
+    <enum name="FRAGMENT_SHADER_DERIVATIVE_HINT"  value="0x8B8B"/>
+    <enum name="SHADING_LANGUAGE_VERSION"         value="0x8B8C"/>
+    <enum name="CURRENT_PROGRAM"                  value="0x8B8D"/>
+    <enum name="POINT_SPRITE_COORD_ORIGIN" count="1"  value="0x8CA0">
+        <size name="PointParameterfvEXT"/>
+        <size name="PointParameterivNV"/>
+    </enum>
+    <enum name="LOWER_LEFT"                       value="0x8CA1"/>
+    <enum name="UPPER_LEFT"                       value="0x8CA2"/>
+    <enum name="STENCIL_BACK_REF"                 value="0x8CA3"/>
+    <enum name="STENCIL_BACK_VALUE_MASK"          value="0x8CA4"/>
+    <enum name="STENCIL_BACK_WRITEMASK"           value="0x8CA5"/>
+
+    <function name="BlendEquationSeparate" alias="BlendEquationSeparateEXT">
+        <param name="modeRGB" type="GLenum"/>
+        <param name="modeA" type="GLenum"/>
+    </function>
+
+    <function name="DrawBuffers" alias="DrawBuffersARB">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="bufs" type="const GLenum *" count="n"/>
+    </function>
+
+    <function name="StencilFuncSeparate" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLint"/>
+        <param name="mask" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="StencilOpSeparate" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="sfail" type="GLenum"/>
+        <param name="zfail" type="GLenum"/>
+        <param name="zpass" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="StencilMaskSeparate" offset="assign">
+        <param name="face" type="GLenum"/>
+        <param name="mask" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="AttachShader" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="shader" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="BindAttribLocation" alias="BindAttribLocationARB">
+        <param name="program" type="GLuint"/>
+        <param name="index" type="GLuint"/>
+        <param name="name" type="const GLchar *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CompileShader" alias="CompileShaderARB">
+        <param name="shader" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CreateProgram" offset="assign">
+        <return type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CreateShader" offset="assign">
+        <param name="type" type="GLenum"/>
+        <return type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DeleteProgram" offset="assign">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DeleteShader" offset="assign">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DetachShader" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="shader" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DisableVertexAttribArray" alias="DisableVertexAttribArrayARB">
+        <param name="index" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="EnableVertexAttribArray" alias="EnableVertexAttribArrayARB">
+        <param name="index" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetActiveAttrib" alias="GetActiveAttribARB">
+        <param name="program" type="GLuint"/>
+        <param name="index" type="GLuint"/>
+        <param name="bufSize" type="GLsizei "/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="size" type="GLint *" output="true"/>
+        <param name="type" type="GLenum *" output="true"/>
+        <param name="name" type="GLchar *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetActiveUniform" alias="GetActiveUniformARB">
+        <param name="program" type="GLuint"/>
+        <param name="index" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="size" type="GLint *" output="true"/>
+        <param name="type" type="GLenum *" output="true"/>
+        <param name="name" type="GLchar *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetAttachedShaders" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="maxCount" type="GLsizei"/>
+        <param name="count" type="GLsizei *" output="true"/>
+        <param name="obj" type="GLuint *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetAttribLocation" alias="GetAttribLocationARB">
+        <param name="program" type="GLuint"/>
+        <param name="name" type="const GLchar *"/>
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetProgramiv" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetProgramInfoLog" offset="assign">
+        <param name="program" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *"/>
+        <param name="infoLog" type="GLchar *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetShaderiv" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetShaderInfoLog" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *"/>
+        <param name="infoLog" type="GLchar *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetShaderSource" alias="GetShaderSourceARB">
+        <param name="shader" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="source" type="GLchar *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformLocation" alias="GetUniformLocationARB">
+        <param name="program" type="GLuint"/>
+        <param name="name" type="const GLchar *"/>
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformfv" alias="GetUniformfvARB">
+        <param name="program" type="GLuint"/>
+        <param name="location" type="GLint"/>
+        <param name="params" type="GLfloat *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformiv" alias="GetUniformivARB">
+        <param name="program" type="GLuint"/>
+        <param name="location" type="GLint"/>
+        <param name="params" type="GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetVertexAttribdv" alias="GetVertexAttribdvARB">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetVertexAttribfv" alias="GetVertexAttribfvARB">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetVertexAttribiv" alias="GetVertexAttribivARB">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetVertexAttribPointerv" alias="GetVertexAttribPointervNV">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="pointer" type="GLvoid **" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="IsProgram" offset="assign">
+        <param name="program" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="IsShader" offset="assign">
+        <param name="shader" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="LinkProgram" alias="LinkProgramARB">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ShaderSource" alias="ShaderSourceARB">
+        <param name="shader" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="string" type="const GLchar **"/>
+        <param name="length" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UseProgram" alias="UseProgramObjectARB">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1f" alias="Uniform1fARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform2f" alias="Uniform2fARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform3f" alias="Uniform3fARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform4f" alias="Uniform4fARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <param name="v3" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1i" alias="Uniform1iARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform2i" alias="Uniform2iARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform3i" alias="Uniform3iARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <param name="v2" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform4i" alias="Uniform4iARB">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <param name="v2" type="GLint"/>
+        <param name="v3" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1fv" alias="Uniform1fvARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform2fv" alias="Uniform2fvARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform3fv" alias="Uniform3fvARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform4fv" alias="Uniform4fvARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1iv" alias="Uniform1ivARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform2iv" alias="Uniform2ivARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform3iv" alias="Uniform3ivARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="Uniform4iv" alias="Uniform4ivARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UniformMatrix2fv" alias="UniformMatrix2fvARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="UniformMatrix3fv" alias="UniformMatrix3fvARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="UniformMatrix4fv" alias="UniformMatrix4fvARB">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ValidateProgram" alias="ValidateProgramARB">
+        <param name="program" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="VertexAttrib1d" alias="VertexAttrib1dARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+    </function>
+    <function name="VertexAttrib1dv" alias="VertexAttrib1dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+    <function name="VertexAttrib1f" alias="VertexAttrib1fARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+    </function>
+    <function name="VertexAttrib1fv" alias="VertexAttrib1fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+    <function name="VertexAttrib1s" alias="VertexAttrib1sARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+    </function>
+    <function name="VertexAttrib1sv" alias="VertexAttrib1svARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="VertexAttrib2d" alias="VertexAttrib2dARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+    <function name="VertexAttrib2dv" alias="VertexAttrib2dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+    <function name="VertexAttrib2f" alias="VertexAttrib2fARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+    <function name="VertexAttrib2fv" alias="VertexAttrib2fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+    <function name="VertexAttrib2s" alias="VertexAttrib2sARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+    <function name="VertexAttrib2sv" alias="VertexAttrib2svARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="VertexAttrib3d" alias="VertexAttrib3dARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+    <function name="VertexAttrib3dv" alias="VertexAttrib3dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+    <function name="VertexAttrib3f" alias="VertexAttrib3fARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+    <function name="VertexAttrib3fv" alias="VertexAttrib3fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+    <function name="VertexAttrib3s" alias="VertexAttrib3sARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+    <function name="VertexAttrib3sv" alias="VertexAttrib3svARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="VertexAttrib4Nbv" alias="VertexAttrib4NbvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLbyte *"/>
+    </function>
+    <function name="VertexAttrib4Niv" alias="VertexAttrib4NivARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLint *"/>
+    </function>
+    <function name="VertexAttrib4Nsv" alias="VertexAttrib4NsvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+    <function name="VertexAttrib4Nub" alias="VertexAttrib4NubARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLubyte"/>
+        <param name="y" type="GLubyte"/>
+        <param name="z" type="GLubyte"/>
+        <param name="w" type="GLubyte"/>
+    </function>
+    <function name="VertexAttrib4Nubv" alias="VertexAttrib4NubvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLubyte *"/>
+    </function>
+    <function name="VertexAttrib4Nuiv" alias="VertexAttrib4NuivARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLuint *"/>
+    </function>
+    <function name="VertexAttrib4Nusv" alias="VertexAttrib4NusvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLushort *"/>
+    </function>
+    <function name="VertexAttrib4bv" alias="VertexAttrib4bvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLbyte *" count="4"/>
+    </function>
+    <function name="VertexAttrib4d" alias="VertexAttrib4dARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+    <function name="VertexAttrib4dv" alias="VertexAttrib4dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *"/>
+    </function>
+    <function name="VertexAttrib4f" alias="VertexAttrib4fARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+    <function name="VertexAttrib4fv" alias="VertexAttrib4fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+    <function name="VertexAttrib4iv" alias="VertexAttrib4ivARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLint *" count="4"/>
+    </function>
+    <function name="VertexAttrib4s" alias="VertexAttrib4sARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+    </function>
+    <function name="VertexAttrib4sv" alias="VertexAttrib4svARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *"/>
+    </function>
+    <function name="VertexAttrib4ubv" alias="VertexAttrib4ubvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLubyte *" count="4"/>
+    </function>
+    <function name="VertexAttrib4uiv" alias="VertexAttrib4uivARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLuint *" count="4"/>
+    </function>
+    <function name="VertexAttrib4usv" alias="VertexAttrib4usvARB">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLushort *" count="4"/>
+    </function>
+
+    <function name="VertexAttribPointer" alias="VertexAttribPointerARB">
+        <param name="index" type="GLuint"/>
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="normalized" type="GLboolean"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+
+</category>
+
+
+<category name="2.1">
+    <!-- XXX some of the enums and functions probably need additional -->
+    <!-- flags/attributes. -->
+
+    <enum name="CURRENT_RASTER_SECONDARY_COLOR" value="0x845F"/>
+    <enum name="PIXEL_PACK_BUFFER"              value="0x88EB"/>
+    <enum name="PIXEL_UNPACK_BUFFER"            value="0x88EC"/>
+    <enum name="PIXEL_PACK_BUFFER_BINDING"      value="0x88ED"/>
+    <enum name="PIXEL_UNPACK_BUFFER_BINDING"    value="0x88EF"/>
+    <enum name="FLOAT_MAT2x3"                   value="0x8B65"/>
+    <enum name="FLOAT_MAT2x4"                   value="0x8B66"/>
+    <enum name="FLOAT_MAT3x2"                   value="0x8B67"/>
+    <enum name="FLOAT_MAT3x4"                   value="0x8B68"/>
+    <enum name="FLOAT_MAT4x2"                   value="0x8B69"/>
+    <enum name="FLOAT_MAT4x3"                   value="0x8B6A"/>
+    <enum name="SRGB"                           value="0x8C40"/>
+    <enum name="SRGB8"                          value="0x8C41"/>
+    <enum name="SRGB_ALPHA"                     value="0x8C42"/>
+    <enum name="SRGB8_ALPHA8"                   value="0x8C43"/>
+    <enum name="SLUMINANCE_ALPHA"               value="0x8C44"/>
+    <enum name="SLUMINANCE8_ALPHA8"             value="0x8C45"/>
+    <enum name="SLUMINANCE"                     value="0x8C46"/>
+    <enum name="SLUMINANCE8"                    value="0x8C47"/>
+    <enum name="COMPRESSED_SRGB"                value="0x8C48"/>
+    <enum name="COMPRESSED_SRGB_ALPHA"          value="0x8C49"/>
+    <enum name="COMPRESSED_SLUMINANCE"          value="0x8C4A"/>
+    <enum name="COMPRESSED_SLUMINANCE_ALPHA"    value="0x8C4B"/>
+
+    <function name="UniformMatrix2x3fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="UniformMatrix3x2fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="UniformMatrix2x4fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="UniformMatrix4x2fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="UniformMatrix3x4fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="UniformMatrix4x3fv" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+</category>
+
+
+<!-- ARB extensions sorted by extension number. -->
+
+<category name="GL_ARB_multitexture" number="1">
+    <enum name="TEXTURE0_ARB"                             value="0x84C0"/>
+    <enum name="TEXTURE1_ARB"                             value="0x84C1"/>
+    <enum name="TEXTURE2_ARB"                             value="0x84C2"/>
+    <enum name="TEXTURE3_ARB"                             value="0x84C3"/>
+    <enum name="TEXTURE4_ARB"                             value="0x84C4"/>
+    <enum name="TEXTURE5_ARB"                             value="0x84C5"/>
+    <enum name="TEXTURE6_ARB"                             value="0x84C6"/>
+    <enum name="TEXTURE7_ARB"                             value="0x84C7"/>
+    <enum name="TEXTURE8_ARB"                             value="0x84C8"/>
+    <enum name="TEXTURE9_ARB"                             value="0x84C9"/>
+    <enum name="TEXTURE10_ARB"                            value="0x84CA"/>
+    <enum name="TEXTURE11_ARB"                            value="0x84CB"/>
+    <enum name="TEXTURE12_ARB"                            value="0x84CC"/>
+    <enum name="TEXTURE13_ARB"                            value="0x84CD"/>
+    <enum name="TEXTURE14_ARB"                            value="0x84CE"/>
+    <enum name="TEXTURE15_ARB"                            value="0x84CF"/>
+    <enum name="TEXTURE16_ARB"                            value="0x84D0"/>
+    <enum name="TEXTURE17_ARB"                            value="0x84D1"/>
+    <enum name="TEXTURE18_ARB"                            value="0x84D2"/>
+    <enum name="TEXTURE19_ARB"                            value="0x84D3"/>
+    <enum name="TEXTURE20_ARB"                            value="0x84D4"/>
+    <enum name="TEXTURE21_ARB"                            value="0x84D5"/>
+    <enum name="TEXTURE22_ARB"                            value="0x84D6"/>
+    <enum name="TEXTURE23_ARB"                            value="0x84D7"/>
+    <enum name="TEXTURE24_ARB"                            value="0x84D8"/>
+    <enum name="TEXTURE25_ARB"                            value="0x84D9"/>
+    <enum name="TEXTURE26_ARB"                            value="0x84DA"/>
+    <enum name="TEXTURE27_ARB"                            value="0x84DB"/>
+    <enum name="TEXTURE28_ARB"                            value="0x84DC"/>
+    <enum name="TEXTURE29_ARB"                            value="0x84DD"/>
+    <enum name="TEXTURE30_ARB"                            value="0x84DE"/>
+    <enum name="TEXTURE31_ARB"                            value="0x84DF"/>
+    <enum name="ACTIVE_TEXTURE_ARB"            count="1"  value="0x84E0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CLIENT_ACTIVE_TEXTURE_ARB"     count="1"  value="0x84E1">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_UNITS_ARB"         count="1"  value="0x84E2">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="ActiveTextureARB" offset="374">
+        <param name="texture" type="GLenum"/>
+        <glx rop="197"/>
+    </function>
+
+    <function name="ClientActiveTextureARB" offset="375">
+        <param name="texture" type="GLenum"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultiTexCoord1dARB" offset="376" vectorequiv="MultiTexCoord1dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord1dvARB" offset="377">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="1"/>
+        <glx rop="198"/>
+    </function>
+
+    <function name="MultiTexCoord1fARB" offset="378" vectorequiv="MultiTexCoord1fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord1fvARB" offset="379">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="1"/>
+        <glx rop="199"/>
+    </function>
+
+    <function name="MultiTexCoord1iARB" offset="380" vectorequiv="MultiTexCoord1ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord1ivARB" offset="381">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="1"/>
+        <glx rop="200"/>
+    </function>
+
+    <function name="MultiTexCoord1sARB" offset="382" vectorequiv="MultiTexCoord1svARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord1svARB" offset="383">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="1"/>
+        <glx rop="201"/>
+    </function>
+
+    <function name="MultiTexCoord2dARB" offset="384" vectorequiv="MultiTexCoord2dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord2dvARB" offset="385">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="202"/>
+    </function>
+
+    <function name="MultiTexCoord2fARB" offset="386" vectorequiv="MultiTexCoord2fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord2fvARB" offset="387">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="203"/>
+    </function>
+
+    <function name="MultiTexCoord2iARB" offset="388" vectorequiv="MultiTexCoord2ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord2ivARB" offset="389">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="2"/>
+        <glx rop="204"/>
+    </function>
+
+    <function name="MultiTexCoord2sARB" offset="390" vectorequiv="MultiTexCoord2svARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord2svARB" offset="391">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="205"/>
+    </function>
+
+    <function name="MultiTexCoord3dARB" offset="392" vectorequiv="MultiTexCoord3dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord3dvARB" offset="393">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="206"/>
+    </function>
+
+    <function name="MultiTexCoord3fARB" offset="394" vectorequiv="MultiTexCoord3fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord3fvARB" offset="395">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="207"/>
+    </function>
+
+    <function name="MultiTexCoord3iARB" offset="396" vectorequiv="MultiTexCoord3ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord3ivARB" offset="397">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="208"/>
+    </function>
+
+    <function name="MultiTexCoord3sARB" offset="398" vectorequiv="MultiTexCoord3svARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord3svARB" offset="399">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="209"/>
+    </function>
+
+    <function name="MultiTexCoord4dARB" offset="400" vectorequiv="MultiTexCoord4dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLdouble"/>
+        <param name="t" type="GLdouble"/>
+        <param name="r" type="GLdouble"/>
+        <param name="q" type="GLdouble"/>
+    </function>
+
+    <function name="MultiTexCoord4dvARB" offset="401">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="210"/>
+    </function>
+
+    <function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+    </function>
+
+    <function name="MultiTexCoord4fvARB" offset="403">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="211"/>
+    </function>
+
+    <function name="MultiTexCoord4iARB" offset="404" vectorequiv="MultiTexCoord4ivARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLint"/>
+        <param name="t" type="GLint"/>
+        <param name="r" type="GLint"/>
+        <param name="q" type="GLint"/>
+    </function>
+
+    <function name="MultiTexCoord4ivARB" offset="405">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="212"/>
+    </function>
+
+    <function name="MultiTexCoord4sARB" offset="406" vectorequiv="MultiTexCoord4svARB">
+        <param name="target" type="GLenum"/>
+        <param name="s" type="GLshort"/>
+        <param name="t" type="GLshort"/>
+        <param name="r" type="GLshort"/>
+        <param name="q" type="GLshort"/>
+    </function>
+
+    <function name="MultiTexCoord4svARB" offset="407">
+        <param name="target" type="GLenum"/>
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="213"/>
+    </function>
+</category>
+
+<!-- ARB extension number 2 is a GLX extension. -->
+
+<category name="GL_ARB_transpose_matrix" number="3">
+    <enum name="TRANSPOSE_MODELVIEW_MATRIX_ARB"           value="0x84E3"/>
+    <enum name="TRANSPOSE_PROJECTION_MATRIX_ARB"          value="0x84E4"/>
+    <enum name="TRANSPOSE_TEXTURE_MATRIX_ARB"             value="0x84E5"/>
+    <enum name="TRANSPOSE_COLOR_MATRIX_ARB"               value="0x84E6"/>
+
+    <function name="LoadTransposeMatrixfARB" offset="assign">
+        <param name="m" type="const GLfloat *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="LoadTransposeMatrixdARB" offset="assign">
+        <param name="m" type="const GLdouble *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultTransposeMatrixfARB" offset="assign">
+        <param name="m" type="const GLfloat *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultTransposeMatrixdARB" offset="assign">
+        <param name="m" type="const GLdouble *"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<!-- ARB extension number 4 is a WGL extension. -->
+
+<category name="GL_ARB_multisample" number="5">
+    <enum name="MULTISAMPLE_ARB"               count="1"  value="0x809D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_ALPHA_TO_COVERAGE_ARB"  count="1"  value="0x809E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_ALPHA_TO_ONE_ARB"       count="1"  value="0x809F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE_ARB"           count="1"  value="0x80A0">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_BUFFERS_ARB"            count="1"  value="0x80A8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLES_ARB"                   count="1"  value="0x80A9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE_VALUE_ARB"     count="1"  value="0x80AA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SAMPLE_COVERAGE_INVERT_ARB"    count="1"  value="0x80AB">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MULTISAMPLE_BIT_ARB"                      value="0x20000000"/>
+
+    <function name="SampleCoverageARB" offset="assign">
+        <param name="value" type="GLclampf"/>
+        <param name="invert" type="GLboolean"/>
+        <glx rop="229"/>
+    </function>
+</category>
+
+<category name="GL_ARB_texture_env_add" number="6">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_ARB_texture_cube_map" number="7">
+    <enum name="NORMAL_MAP_ARB"                           value="0x8511"/>
+    <enum name="REFLECTION_MAP_ARB"                       value="0x8512"/>
+    <enum name="TEXTURE_CUBE_MAP_ARB"          count="1"  value="0x8513">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_CUBE_MAP_ARB"  count="1"  value="0x8514">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X_ARB"          value="0x8515"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X_ARB"          value="0x8516"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y_ARB"          value="0x8517"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB"          value="0x8518"/>
+    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z_ARB"          value="0x8519"/>
+    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB"          value="0x851A"/>
+    <enum name="PROXY_TEXTURE_CUBE_MAP_ARB"               value="0x851B"/>
+    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE_ARB" count="1"  value="0x851C">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<!-- ARB extension number 8 is a WGL extension. -->
+<!-- ARB extension number 9 is a WGL extension. -->
+<!-- ARB extension number 10 is a WGL extension. -->
+<!-- ARB extension number 11 is a WGL extension. -->
+
+<category name="GL_ARB_texture_compression" number="12">
+    <enum name="COMPRESSED_ALPHA_ARB"                     value="0x84E9"/>
+    <enum name="COMPRESSED_LUMINANCE_ARB"                 value="0x84EA"/>
+    <enum name="COMPRESSED_LUMINANCE_ALPHA_ARB"           value="0x84EB"/>
+    <enum name="COMPRESSED_INTENSITY_ARB"                 value="0x84EC"/>
+    <enum name="COMPRESSED_RGB_ARB"                       value="0x84ED"/>
+    <enum name="COMPRESSED_RGBA_ARB"                      value="0x84EE"/>
+    <enum name="TEXTURE_COMPRESSION_HINT_ARB"  count="1"  value="0x84EF">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPRESSED_IMAGE_SIZE_ARB" count="1" value="0x86A0">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPRESSED_ARB"        count="1"  value="0x86A1">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="NUM_COMPRESSED_TEXTURE_FORMATS_ARB" count="1" value="0x86A2">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPRESSED_FORMATS_ARB"           value="0x86A3"/>
+
+    <function name="CompressedTexImage3DARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="216" handcode="client"/>
+    </function>
+
+    <function name="CompressedTexImage2DARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="215" handcode="client"/>
+    </function>
+
+    <function name="CompressedTexImage1DARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="214" handcode="client"/>
+    </function>
+
+    <function name="CompressedTexSubImage3DARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="219" handcode="client"/>
+    </function>
+
+    <function name="CompressedTexSubImage2DARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="218" handcode="client"/>
+    </function>
+
+    <function name="CompressedTexSubImage1DARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="imageSize" type="GLsizei" counter="true"/>
+        <param name="data" type="const GLvoid *" count="imageSize"/>
+        <glx rop="217" handcode="client"/>
+    </function>
+
+    <function name="GetCompressedTexImageARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="img" type="GLvoid *" output="true"/>
+
+        <!-- This has to be hand coded because the image size is in the
+             "wrong" place.  Technically, this should be a
+             'always_array="true"' case.  The size field in the reply would
+             be at offset 12.  However, the size is actually at offset 16.
+             This is where the 'width' is in a GetTexImage reply. -->
+        <glx sop="160" handcode="true"/>
+    </function>
+</category>
+
+<category name="GL_ARB_texture_border_clamp" number="13">
+    <enum name="CLAMP_TO_BORDER_ARB"                      value="0x812D"/>
+</category>
+
+<category name="GL_ARB_point_parameters" number="14">
+    <enum name="POINT_SIZE_MIN_ARB"            count="1"  value="0x8126">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_SIZE_MAX_ARB"            count="1"  value="0x8127">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_FADE_THRESHOLD_SIZE_ARB" count="1"  value="0x8128">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_DISTANCE_ATTENUATION_ARB" count="3" value="0x8129">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+
+    <function name="PointParameterfARB" alias="PointParameterfEXT">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="2065"/>
+    </function>
+
+    <function name="PointParameterfvARB" alias="PointParameterfvEXT">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="2066"/>
+    </function>
+</category>
+
+<category name="GL_ARB_vertex_blend" number="15">
+    <enum name="MAX_VERTEX_UNITS_ARB"          count="1"  value="0x86A4">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACTIVE_VERTEX_UNITS_ARB"       count="1"  value="0x86A5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="WEIGHT_SUM_UNITY_ARB"          count="1"  value="0x86A6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_BLEND_ARB"              count="1"  value="0x86A7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_WEIGHT_ARB"            count="1"  value="0x86A8">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="WEIGHT_ARRAY_TYPE_ARB"         count="1"  value="0x86A9">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="WEIGHT_ARRAY_STRIDE_ARB"       count="1"  value="0x86AA">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="WEIGHT_ARRAY_SIZE_ARB"         count="1"  value="0x86AB">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="WEIGHT_ARRAY_POINTER_ARB"                 value="0x86AC"/>
+    <enum name="WEIGHT_ARRAY_ARB"              count="1"  value="0x86AD">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW0_ARB"                count="16" value="0x1700">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW1_ARB"                count="16" value="0x850A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW2_ARB"                count="16" value="0x8722">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW3_ARB"                count="16" value="0x8723">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW4_ARB"                count="16" value="0x8724">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW5_ARB"                count="16" value="0x8725">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW6_ARB"                count="16" value="0x8726">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW7_ARB"                count="16" value="0x8727">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW8_ARB"                count="16" value="0x8728">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW9_ARB"                count="16" value="0x8729">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW10_ARB"               count="16" value="0x872A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW11_ARB"               count="16" value="0x872B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW12_ARB"               count="16" value="0x872C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW13_ARB"               count="16" value="0x872D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW14_ARB"               count="16" value="0x872E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW15_ARB"               count="16" value="0x872F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW16_ARB"               count="16" value="0x8730">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW17_ARB"               count="16" value="0x8731">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW18_ARB"               count="16" value="0x8732">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW19_ARB"               count="16" value="0x8733">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW20_ARB"               count="16" value="0x8734">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW21_ARB"               count="16" value="0x8735">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW22_ARB"               count="16" value="0x8736">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW23_ARB"               count="16" value="0x8737">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW24_ARB"               count="16" value="0x8738">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW25_ARB"               count="16" value="0x8739">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW26_ARB"               count="16" value="0x873A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW27_ARB"               count="16" value="0x873B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW28_ARB"               count="16" value="0x873C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW29_ARB"               count="16" value="0x873D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW30_ARB"               count="16" value="0x873E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MODELVIEW31_ARB"               count="16" value="0x873F">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="WeightbvARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLbyte *"/>
+    </function>
+
+    <function name="WeightsvARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLshort *"/>
+    </function>
+
+    <function name="WeightivARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLint *"/>
+    </function>
+
+    <function name="WeightfvARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLfloat *"/>
+    </function>
+
+    <function name="WeightdvARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLdouble *"/>
+    </function>
+
+    <function name="WeightubvARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLubyte *"/>
+    </function>
+
+    <function name="WeightusvARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLushort *"/>
+    </function>
+
+    <function name="WeightuivARB">
+        <param name="size" type="GLint"/>
+        <param name="weights" type="const GLuint *"/>
+    </function>
+
+    <function name="WeightPointerARB">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="VertexBlendARB">
+        <param name="count" type="GLint"/>
+    </function>
+</category>
+
+<category name="GL_ARB_matrix_palette" number="16">
+    <enum name="MATRIX_PALETTE_ARB"            count="1"  value="0x8840">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_MATRIX_PALETTE_STACK_DEPTH_ARB" count="1" value="0x8841">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_PALETTE_MATRICES_ARB"      count="1"  value="0x8842">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_PALETTE_MATRIX_ARB"    count="1"  value="0x8843">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX_INDEX_ARRAY_ARB"        count="1"  value="0x8844">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_MATRIX_INDEX_ARB"      count="1"  value="0x8845">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX_INDEX_ARRAY_SIZE_ARB"   count="1"  value="0x8846">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX_INDEX_ARRAY_TYPE_ARB"   count="1"  value="0x8847">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX_INDEX_ARRAY_STRIDE_ARB" count="1"  value="0x8848">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX_INDEX_ARRAY_POINTER_ARB"           value="0x8849"/>
+
+    <function name="CurrentPaletteMatrixARB">
+        <param name="index" type="GLint"/>
+        <glx ignore="true" rop="4329"/>
+    </function>
+
+    <function name="MatrixIndexubvARB">
+        <param name="size" type="GLint" counter="true"/>
+        <param name="indices" type="const GLubyte *" count="size"/>
+        <glx ignore="true" rop="4326"/>
+    </function>
+
+    <function name="MatrixIndexusvARB">
+        <param name="size" type="GLint" counter="true"/>
+        <param name="indices" type="const GLushort *" count="size"/>
+        <glx ignore="true" rop="4327"/>
+    </function>
+
+    <function name="MatrixIndexuivARB">
+        <param name="size" type="GLint" counter="true"/>
+        <param name="indices" type="const GLuint *" count="size"/>
+        <glx ignore="true" rop="4328"/>
+    </function>
+
+    <function name="MatrixIndexPointerARB">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<category name="GL_ARB_texture_env_combine" number="17">
+    <enum name="COMBINE_ARB"                              value="0x8570"/>
+    <enum name="COMBINE_RGB_ARB"                          value="0x8571"/>
+    <enum name="COMBINE_ALPHA_ARB"                        value="0x8572"/>
+    <enum name="SOURCE0_RGB_ARB"                          value="0x8580"/>
+    <enum name="SOURCE1_RGB_ARB"                          value="0x8581"/>
+    <enum name="SOURCE2_RGB_ARB"                          value="0x8582"/>
+    <enum name="SOURCE0_ALPHA_ARB"                        value="0x8588"/>
+    <enum name="SOURCE1_ALPHA_ARB"                        value="0x8589"/>
+    <enum name="SOURCE2_ALPHA_ARB"                        value="0x858A"/>
+    <enum name="OPERAND0_RGB_ARB"                         value="0x8590"/>
+    <enum name="OPERAND1_RGB_ARB"                         value="0x8591"/>
+    <enum name="OPERAND2_RGB_ARB"                         value="0x8592"/>
+    <enum name="OPERAND0_ALPHA_ARB"                       value="0x8598"/>
+    <enum name="OPERAND1_ALPHA_ARB"                       value="0x8599"/>
+    <enum name="OPERAND2_ALPHA_ARB"                       value="0x859A"/>
+    <enum name="RGB_SCALE_ARB"                            value="0x8573"/>
+    <enum name="ADD_SIGNED_ARB"                           value="0x8574"/>
+    <enum name="INTERPOLATE_ARB"                          value="0x8575"/>
+    <enum name="SUBTRACT_ARB"                             value="0x84E7"/>
+    <enum name="CONSTANT_ARB"                             value="0x8576"/>
+    <enum name="PRIMARY_COLOR_ARB"                        value="0x8577"/>
+    <enum name="PREVIOUS_ARB"                             value="0x8578"/>
+</category>
+
+<category name="GL_ARB_texture_env_crossbar" number="18">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_ARB_texture_env_dot3" number="19">
+    <enum name="DOT3_RGB_ARB"                             value="0x86AE"/>
+    <enum name="DOT3_RGBA_ARB"                            value="0x86AF"/>
+</category>
+
+<!-- ARB extension number 20 is a WGL extension. -->
+
+<category name="GL_ARB_texture_mirrored_repeat" number="21">
+    <enum name="MIRRORED_REPEAT_ARB"                      value="0x8370"/>
+</category>
+
+<category name="GL_ARB_depth_texture" number="22">
+    <enum name="DEPTH_COMPONENT16_ARB"                    value="0x81A5"/>
+    <enum name="DEPTH_COMPONENT24_ARB"                    value="0x81A6"/>
+    <enum name="DEPTH_COMPONENT32_ARB"                    value="0x81A7"/>
+    <enum name="TEXTURE_DEPTH_SIZE_ARB"        count="1"  value="0x884A">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="DEPTH_TEXTURE_MODE_ARB"        count="1"  value="0x884B">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_ARB_shadow" number="23">
+    <enum name="TEXTURE_COMPARE_MODE_ARB"      count="1"  value="0x884C">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPARE_FUNC_ARB"      count="1"  value="0x884D">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="COMPARE_R_TO_TEXTURE_ARB"                 value="0x884E"/>
+</category>
+
+<category name="GL_ARB_shadow_ambient" number="24">
+    <enum name="TEXTURE_COMPARE_FAIL_VALUE_ARB" count="1" value="0x80BF">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_ARB_window_pos" number="25">
+    <function name="WindowPos2dARB" alias="WindowPos2dMESA">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="WindowPos2fARB" alias="WindowPos2fMESA">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="WindowPos2iARB" alias="WindowPos2iMESA">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+    </function>
+
+    <function name="WindowPos2sARB" alias="WindowPos2sMESA">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="WindowPos2dvARB" alias="WindowPos2dvMESA">
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="WindowPos2fvARB" alias="WindowPos2fvMESA">
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="WindowPos2ivARB" alias="WindowPos2ivMESA">
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="WindowPos2svARB" alias="WindowPos2svMESA">
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="WindowPos3dARB" alias="WindowPos3dMESA">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="WindowPos3fARB" alias="WindowPos3fMESA">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="WindowPos3iARB" alias="WindowPos3iMESA">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+    </function>
+
+    <function name="WindowPos3sARB" alias="WindowPos3sMESA">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="WindowPos3dvARB" alias="WindowPos3dvMESA">
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="WindowPos3fvARB" alias="WindowPos3fvMESA">
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="WindowPos3ivARB" alias="WindowPos3ivMESA">
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="WindowPos3svARB" alias="WindowPos3svMESA">
+        <param name="v" type="const GLshort *"/>
+    </function>
+</category>
+
+<category name="GL_ARB_vertex_program" number="26">
+    <enum name="COLOR_SUM_ARB"                 count="1"  value="0x8458">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_PROGRAM_ARB"            count="1"  value="0x8620">
+        <size name="GetVertexAttribdvARB" mode="get"/>
+        <size name="GetVertexAttribfvARB" mode="get"/>
+        <size name="GetVertexAttribivARB" mode="get"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_ENABLED_ARB" count="1" value="0x8622">
+        <size name="GetVertexAttribdvARB" mode="get"/>
+        <size name="GetVertexAttribfvARB" mode="get"/>
+        <size name="GetVertexAttribivARB" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_SIZE_ARB"  count="1"  value="0x8623">
+        <size name="GetVertexAttribdvARB" mode="get"/>
+        <size name="GetVertexAttribfvARB" mode="get"/>
+        <size name="GetVertexAttribivARB" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_STRIDE_ARB" count="1" value="0x8624">
+        <size name="GetVertexAttribdvARB" mode="get"/>
+        <size name="GetVertexAttribfvARB" mode="get"/>
+        <size name="GetVertexAttribivARB" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_TYPE_ARB"  count="1"  value="0x8625">
+        <size name="GetVertexAttribdvARB" mode="get"/>
+        <size name="GetVertexAttribfvARB" mode="get"/>
+        <size name="GetVertexAttribivARB" mode="get"/>
+    </enum>
+    <enum name="CURRENT_VERTEX_ATTRIB_ARB"     count="1"  value="0x8626">
+        <size name="GetVertexAttribdvARB" mode="get"/>
+        <size name="GetVertexAttribfvARB" mode="get"/>
+        <size name="GetVertexAttribivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_LENGTH_ARB"            count="1"  value="0x8627">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_STRING_ARB"                       value="0x8628"/>
+    <enum name="MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB" count="1" value="0x862E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_MATRICES_ARB"      count="1"  value="0x862F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_MATRIX_STACK_DEPTH_ARB" count="1" value="0x8640">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="CURRENT_MATRIX_ARB"            count="16" value="0x8641">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_PROGRAM_POINT_SIZE_ARB" count="1"  value="0x8642">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_PROGRAM_TWO_SIDE_ARB"   count="1"  value="0x8643">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_POINTER_ARB"          value="0x8645"/>
+    <enum name="PROGRAM_ERROR_POSITION_ARB"    count="1"  value="0x864B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_BINDING_ARB"           count="1"  value="0x8677">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_VERTEX_ATTRIBS_ARB"        count="1"  value="0x8869">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB"       value="0x886A"/>
+    <enum name="PROGRAM_ERROR_STRING_ARB"                 value="0x8874"/>
+    <enum name="PROGRAM_FORMAT_ASCII_ARB"                 value="0x8875"/>
+    <enum name="PROGRAM_FORMAT_ARB"            count="1"  value="0x8876">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_INSTRUCTIONS_ARB"      count="1"  value="0x88A0">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_INSTRUCTIONS_ARB"  count="1"  value="0x88A1">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_INSTRUCTIONS_ARB" count="1" value="0x88A2">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB" count="1" value="0x88A3">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_TEMPORARIES_ARB"       count="1"  value="0x88A4">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_TEMPORARIES_ARB"   count="1"  value="0x88A5">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_TEMPORARIES_ARB" count="1" value="0x88A6">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_TEMPORARIES_ARB" count="1" value="0x88A7">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_PARAMETERS_ARB"        count="1"  value="0x88A8">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_PARAMETERS_ARB"    count="1"  value="0x88A9">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_PARAMETERS_ARB" count="1"  value="0x88AA">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_PARAMETERS_ARB" count="1" value="0x88AB">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_ATTRIBS_ARB"           count="1"  value="0x88AC">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_ATTRIBS_ARB"       count="1"  value="0x88AD">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_ATTRIBS_ARB"    count="1"  value="0x88AE">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_ATTRIBS_ARB" count="1" value="0x88AF">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_ADDRESS_REGISTERS_ARB" count="1"  value="0x88B0">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_ADDRESS_REGISTERS_ARB" count="1" value="0x88B1">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB" count="1" value="0x88B2">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB" count="1" value="0x88B3">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_LOCAL_PARAMETERS_ARB" count="1" value="0x88B4">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_ENV_PARAMETERS_ARB" count="1" value="0x88B5">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_UNDER_NATIVE_LIMITS_ARB" count="1" value="0x88B6">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="TRANSPOSE_CURRENT_MATRIX_ARB"  count="16" value="0x88B7">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MATRIX0_ARB"                              value="0x88C0"/>
+    <enum name="MATRIX1_ARB"                              value="0x88C1"/>
+    <enum name="MATRIX2_ARB"                              value="0x88C2"/>
+    <enum name="MATRIX3_ARB"                              value="0x88C3"/>
+    <enum name="MATRIX4_ARB"                              value="0x88C4"/>
+    <enum name="MATRIX5_ARB"                              value="0x88C5"/>
+    <enum name="MATRIX6_ARB"                              value="0x88C6"/>
+    <enum name="MATRIX7_ARB"                              value="0x88C7"/>
+    <enum name="MATRIX8_ARB"                              value="0x88C8"/>
+    <enum name="MATRIX9_ARB"                              value="0x88C9"/>
+    <enum name="MATRIX10_ARB"                             value="0x88CA"/>
+    <enum name="MATRIX11_ARB"                             value="0x88CB"/>
+    <enum name="MATRIX12_ARB"                             value="0x88CC"/>
+    <enum name="MATRIX13_ARB"                             value="0x88CD"/>
+    <enum name="MATRIX14_ARB"                             value="0x88CE"/>
+    <enum name="MATRIX15_ARB"                             value="0x88CF"/>
+    <enum name="MATRIX16_ARB"                             value="0x88D0"/>
+    <enum name="MATRIX17_ARB"                             value="0x88D1"/>
+    <enum name="MATRIX18_ARB"                             value="0x88D2"/>
+    <enum name="MATRIX19_ARB"                             value="0x88D3"/>
+    <enum name="MATRIX20_ARB"                             value="0x88D4"/>
+    <enum name="MATRIX21_ARB"                             value="0x88D5"/>
+    <enum name="MATRIX22_ARB"                             value="0x88D6"/>
+    <enum name="MATRIX23_ARB"                             value="0x88D7"/>
+    <enum name="MATRIX24_ARB"                             value="0x88D8"/>
+    <enum name="MATRIX25_ARB"                             value="0x88D9"/>
+    <enum name="MATRIX26_ARB"                             value="0x88DA"/>
+    <enum name="MATRIX27_ARB"                             value="0x88DB"/>
+    <enum name="MATRIX28_ARB"                             value="0x88DC"/>
+    <enum name="MATRIX29_ARB"                             value="0x88DD"/>
+    <enum name="MATRIX30_ARB"                             value="0x88DE"/>
+    <enum name="MATRIX31_ARB"                             value="0x88DF"/>
+
+    <function name="GetVertexAttribdvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
+        <glx handcode="client" vendorpriv="1301"/>
+    </function>
+
+    <function name="GetVertexAttribfvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx handcode="client" vendorpriv="1302"/>
+    </function>
+
+    <function name="GetVertexAttribivARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx handcode="client" vendorpriv="1303"/>
+    </function>
+
+    <function name="VertexAttrib1dARB" offset="assign" vectorequiv="VertexAttrib1dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib1dvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="1"/>
+        <glx rop="4197" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib1fARB" offset="assign" vectorequiv="VertexAttrib1fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib1fvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="1"/>
+        <glx rop="4193"/>
+    </function>
+
+    <function name="VertexAttrib1sARB" offset="assign" vectorequiv="VertexAttrib1svARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib1svARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="1"/>
+        <glx rop="4189"/>
+    </function>
+
+    <function name="VertexAttrib2dARB" offset="assign" vectorequiv="VertexAttrib2dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib2dvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="4198" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib2fARB" offset="assign" vectorequiv="VertexAttrib2fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib2fvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="4194"/>
+    </function>
+
+    <function name="VertexAttrib2sARB" offset="assign" vectorequiv="VertexAttrib2svARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib2svARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="4190"/>
+    </function>
+
+    <function name="VertexAttrib3dARB" offset="assign" vectorequiv="VertexAttrib3dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib3dvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="4199" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib3fARB" offset="assign" vectorequiv="VertexAttrib3fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib3fvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="4195"/>
+    </function>
+
+    <function name="VertexAttrib3sARB" offset="assign" vectorequiv="VertexAttrib3svARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib3svARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="4191"/>
+    </function>
+
+    <function name="VertexAttrib4dARB" offset="assign" vectorequiv="VertexAttrib4dvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib4dvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="4200" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib4fARB" offset="assign" vectorequiv="VertexAttrib4fvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib4fvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="4196"/>
+    </function>
+
+    <function name="VertexAttrib4sARB" offset="assign" vectorequiv="VertexAttrib4svARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib4svARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="4192"/>
+    </function>
+
+    <function name="VertexAttrib4NubARB" offset="assign" vectorequiv="VertexAttrib4NubvARB">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLubyte"/>
+        <param name="y" type="GLubyte"/>
+        <param name="z" type="GLubyte"/>
+        <param name="w" type="GLubyte"/>
+    </function>
+
+    <function name="VertexAttrib4NubvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLubyte *" count="4"/>
+        <glx rop="4201"/>
+    </function>
+
+    <function name="VertexAttrib4bvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLbyte *" count="4"/>
+        <glx rop="4230"/>
+    </function>
+
+    <function name="VertexAttrib4ivARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="4231"/>
+    </function>
+
+    <function name="VertexAttrib4ubvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLubyte *" count="4"/>
+        <glx rop="4232"/>
+    </function>
+
+    <function name="VertexAttrib4usvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLushort *" count="4"/>
+        <glx rop="4233"/>
+    </function>
+
+    <function name="VertexAttrib4uivARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLuint *" count="4"/>
+        <glx rop="4234"/>
+    </function>
+
+    <function name="VertexAttrib4NbvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLbyte *" count="4"/>
+        <glx rop="4235"/>
+    </function>
+
+    <function name="VertexAttrib4NsvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="4236"/>
+    </function>
+
+    <function name="VertexAttrib4NivARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLint *" count="4"/>
+        <glx rop="4237"/>
+    </function>
+
+    <function name="VertexAttrib4NusvARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLushort *" count="4"/>
+        <glx rop="4238"/>
+    </function>
+
+    <function name="VertexAttrib4NuivARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLuint *" count="4"/>
+        <glx rop="4239"/>
+    </function>
+
+    <function name="VertexAttribPointerARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="normalized" type="GLboolean"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="EnableVertexAttribArrayARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DisableVertexAttribArrayARB" offset="assign">
+        <param name="index" type="GLuint"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="ProgramStringARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="string" type="const GLvoid *" count="len"/>
+        <glx rop="4217" large="true"/>
+    </function>
+
+    <function name="BindProgramARB" alias="BindProgramNV">
+        <param name="target" type="GLenum"/>
+        <param name="program" type="GLuint"/>
+    </function>
+
+    <function name="DeleteProgramsARB" alias="DeleteProgramsNV">
+        <param name="n" type="GLsizei"/>
+        <param name="programs" type="const GLuint *"/>
+    </function>
+
+    <function name="GenProgramsARB" alias="GenProgramsNV">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="programs" type="GLuint *" output="true" count="n"/>
+    </function>
+
+    <function name="IsProgramARB" alias="IsProgramNV">
+        <param name="program" type="GLuint"/>
+        <return type="GLboolean"/>
+    </function>
+
+    <function name="ProgramEnvParameter4dARB" offset="assign" vectorequiv="ProgramEnvParameter4dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="ProgramEnvParameter4dvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="const GLdouble *" count="4"/>
+        <glx rop="4185" doubles_in_order="true"/>
+    </function>
+
+    <function name="ProgramEnvParameter4fARB" offset="assign" vectorequiv="ProgramEnvParameter4fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="ProgramEnvParameter4fvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="const GLfloat *" count="4"/>
+        <glx rop="4184"/>
+    </function>
+
+    <function name="ProgramLocalParameter4dARB" offset="assign" vectorequiv="ProgramLocalParameter4dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="ProgramLocalParameter4dvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="const GLdouble *" count="4"/>
+        <glx rop="4216" doubles_in_order="true"/>
+    </function>
+
+    <function name="ProgramLocalParameter4fARB" offset="assign" vectorequiv="ProgramLocalParameter4fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="ProgramLocalParameter4fvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="const GLfloat *" count="4"/>
+        <glx rop="4215"/>
+    </function>
+
+    <!-- The GetProgramEnvParameter[df]vARB are handcoded because there
+         is an extra CARD32 of padding after the "index" field.  Originally,
+         GetProgranEnvParameter[df]vARB and GetProgramParameter[df]vNV
+         shared the same GLX protocol.  The pad field was where the pname
+         parameter was in the NV functions.  When this error was discovered
+         and fixed, there was already at least one implementation of
+         GLX protocol for ARB_vertex_program, but there were no
+         implementations of NV_vertex_program.  The sollution was to renumber
+         the opcodes for NV_vertex_program and convert the unused field in
+         the ARB_vertex_program protocol to unused padding.
+      -->
+
+    <function name="GetProgramEnvParameterdvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="GLdouble *" output="true" count="4"/>
+        <glx vendorpriv="1297" handcode="client" doubles_in_order="true"/>
+    </function>
+
+    <function name="GetProgramEnvParameterfvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="GLfloat *" output="true" count="4"/>
+        <glx vendorpriv="1296" handcode="client"/>
+    </function>
+
+    <function name="GetProgramLocalParameterdvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="GLdouble *" output="true" count="4"/>
+        <glx vendorpriv="1306" handcode="client" doubles_in_order="true"/>
+    </function>
+
+    <function name="GetProgramLocalParameterfvARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="GLfloat *" output="true" count="4"/>
+        <glx vendorpriv="1305" handcode="client"/>
+    </function>
+
+
+    <function name="GetProgramivARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="1307"/>
+    </function>
+
+    <function name="GetProgramStringARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="string" type="GLvoid *" output="true"/>
+        <glx vendorpriv="1308" handcode="server" always_array="true"/>
+    </function>
+
+    <function name="GetVertexAttribPointervARB" alias="GetVertexAttribPointervNV">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="pointer" type="GLvoid **" output="true"/>
+    </function>
+</category>
+
+<category name="GL_ARB_fragment_program" number="27">
+    <enum name="FRAGMENT_PROGRAM_ARB"          count="1"  value="0x8804">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_ALU_INSTRUCTIONS_ARB"  count="1"  value="0x8805">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_TEX_INSTRUCTIONS_ARB"  count="1"  value="0x8806">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_TEX_INDIRECTIONS_ARB"  count="1"  value="0x8807">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB" count="1" value="0x8808">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB" count="1" value="0x8809">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB" count="1" value="0x880A">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_ALU_INSTRUCTIONS_ARB" count="1" value="0x880B">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_TEX_INSTRUCTIONS_ARB" count="1" value="0x880C">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_TEX_INDIRECTIONS_ARB" count="1" value="0x880D">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB" count="1" value="0x880E">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB" count="1" value="0x880F">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB" count="1" value="0x8810">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_COORDS_ARB"        count="1"  value="0x8871">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_IMAGE_UNITS_ARB"   count="1"  value="0x8872">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_ARB_vertex_buffer_object" number="28">
+    <enum name="BUFFER_SIZE_ARB"               count="1"  value="0x8764">
+        <size name="GetBufferParameterivARB" mode="get"/>
+    </enum>
+    <enum name="BUFFER_USAGE_ARB"              count="1"  value="0x8765">
+        <size name="GetBufferParameterivARB" mode="get"/>
+    </enum>
+    <enum name="ARRAY_BUFFER_BINDING_ARB"      count="1"  value="0x8894">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ELEMENT_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8895">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8896">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="NORMAL_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8897">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COLOR_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8898">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="INDEX_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8899">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="WEIGHT_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889F">
+        <size name="GetVertexAttribdvARB" mode="get"/>
+        <size name="GetVertexAttribfvARB" mode="get"/>
+        <size name="GetVertexAttribivARB" mode="get"/>
+    </enum>
+    <enum name="READ_ONLY_ARB"                            value="0x88B8"/>
+    <enum name="WRITE_ONLY_ARB"                           value="0x88B9"/>
+    <enum name="READ_WRITE_ARB"                           value="0x88BA"/>
+    <enum name="BUFFER_ACCESS_ARB"             count="1"  value="0x88BB">
+        <size name="GetBufferParameterivARB" mode="get"/>
+    </enum>
+    <enum name="BUFFER_MAPPED_ARB"             count="1"  value="0x88BC">
+        <size name="GetBufferParameterivARB" mode="get"/>
+    </enum>
+    <enum name="BUFFER_MAP_POINTER_ARB"                   value="0x88BD"/>
+    <enum name="STREAM_DRAW_ARB"                          value="0x88E0"/>
+    <enum name="STREAM_READ_ARB"                          value="0x88E1"/>
+    <enum name="STREAM_COPY_ARB"                          value="0x88E2"/>
+    <enum name="STATIC_DRAW_ARB"                          value="0x88E4"/>
+    <enum name="STATIC_READ_ARB"                          value="0x88E5"/>
+    <enum name="STATIC_COPY_ARB"                          value="0x88E6"/>
+    <enum name="DYNAMIC_DRAW_ARB"                         value="0x88E8"/>
+    <enum name="DYNAMIC_READ_ARB"                         value="0x88E9"/>
+    <enum name="DYNAMIC_COPY_ARB"                         value="0x88EA"/>
+
+    <type name="intptrARB"   size="4"                  glx_name="CARD32"/>
+    <type name="sizeiptrARB" size="4"  unsigned="true" glx_name="CARD32"/>
+
+    <function name="BindBufferARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="buffer" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="BufferDataARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="size" type="GLsizeiptrARB" counter="true"/>
+        <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/>
+        <param name="usage" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="BufferSubDataARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptrARB"/>
+        <param name="size" type="GLsizeiptrARB" counter="true"/>
+        <param name="data" type="const GLvoid *" count="size"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DeleteBuffersARB" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="buffer" type="const GLuint *" count="n"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GenBuffersARB" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="buffer" type="GLuint *" output="true" count="n"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetBufferParameterivARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetBufferPointervARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetBufferSubDataARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptrARB"/>
+        <param name="size" type="GLsizeiptrARB" counter="true"/>
+        <param name="data" type="GLvoid *" output="true" count="size"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="IsBufferARB" offset="assign">
+        <param name="buffer" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="MapBufferARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="access" type="GLenum"/>
+        <return type="GLvoid *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UnmapBufferARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_ARB_occlusion_query" number="29">
+    <enum name="QUERY_COUNTER_BITS_ARB"        count="1"  value="0x8864">
+        <size name="GetQueryivARB" mode="get"/>
+    </enum>
+    <enum name="CURRENT_QUERY_ARB"             count="1"  value="0x8865">
+        <size name="GetQueryivARB" mode="get"/>
+    </enum>
+    <enum name="QUERY_RESULT_ARB"              count="1"  value="0x8866">
+        <size name="GetQueryObjectivARB" mode="get"/>
+        <size name="GetQueryObjectuivARB" mode="get"/>
+    </enum>
+    <enum name="QUERY_RESULT_AVAILABLE_ARB"    count="1"  value="0x8867">
+        <size name="GetQueryObjectivARB" mode="get"/>
+        <size name="GetQueryObjectuivARB" mode="get"/>
+    </enum>
+    <enum name="SAMPLES_PASSED_ARB"                       value="0x8914"/>
+
+    <function name="GenQueriesARB" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="ids" type="GLuint *" output="true" count="n"/>
+        <glx sop="162" always_array="true"/>
+    </function>
+
+    <function name="DeleteQueriesARB" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="ids" type="const GLuint *" count="n"/>
+        <glx sop="161"/>
+    </function>
+
+    <function name="IsQueryARB" offset="assign">
+        <param name="id" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx sop="163"/>
+    </function>
+
+    <function name="BeginQueryARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="id" type="GLuint"/>
+        <glx rop="231"/>
+    </function>
+
+    <function name="EndQueryARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <glx rop="232"/>
+    </function>
+
+    <function name="GetQueryivARB" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="164"/>
+    </function>
+
+    <function name="GetQueryObjectivARB" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx sop="165"/>
+    </function>
+
+    <function name="GetQueryObjectuivARB" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLuint *" output="true" variable_param="pname"/>
+        <glx sop="166"/>
+    </function>
+</category>
+
+<category name="GL_ARB_shader_objects" number="30">
+    <enum name="PROGRAM_OBJECT_ARB"                       value="0x8B40"/>
+    <enum name="SHADER_OBJECT_ARB"                        value="0x8B48"/>
+    <enum name="OBJECT_TYPE_ARB"                          value="0x8B4E"/>
+    <enum name="OBJECT_SUBTYPE_ARB"                       value="0x8B4F"/>
+    <enum name="FLOAT_VEC2_ARB"                           value="0x8B50"/>
+    <enum name="FLOAT_VEC3_ARB"                           value="0x8B51"/>
+    <enum name="FLOAT_VEC4_ARB"                           value="0x8B52"/>
+    <enum name="INT_VEC2_ARB"                             value="0x8B53"/>
+    <enum name="INT_VEC3_ARB"                             value="0x8B54"/>
+    <enum name="INT_VEC4_ARB"                             value="0x8B55"/>
+    <enum name="BOOL_ARB"                                 value="0x8B56"/>
+    <enum name="BOOL_VEC2_ARB"                            value="0x8B57"/>
+    <enum name="BOOL_VEC3_ARB"                            value="0x8B58"/>
+    <enum name="BOOL_VEC4_ARB"                            value="0x8B59"/>
+    <enum name="FLOAT_MAT2_ARB"                           value="0x8B5A"/>
+    <enum name="FLOAT_MAT3_ARB"                           value="0x8B5B"/>
+    <enum name="FLOAT_MAT4_ARB"                           value="0x8B5C"/>
+    <enum name="OBJECT_DELETE_STATUS_ARB"                 value="0x8B80"/>
+    <enum name="OBJECT_COMPILE_STATUS_ARB"                value="0x8B81"/>
+    <enum name="OBJECT_LINK_STATUS_ARB"                   value="0x8B82"/>
+    <enum name="OBJECT_VALIDATE_STATUS_ARB"               value="0x8B83"/>
+    <enum name="OBJECT_INFO_LOG_LENGTH_ARB"               value="0x8B84"/>
+    <enum name="OBJECT_ATTACHED_OBJECTS_ARB"              value="0x8B85"/>
+    <enum name="OBJECT_ACTIVE_UNIFORMS_ARB"               value="0x8B86"/>
+    <enum name="OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB"     value="0x8B87"/>
+    <enum name="OBJECT_SHADER_SOURCE_LENGTH_ARB"          value="0x8B88"/>
+
+    <type name="charARB"   size="1" glx_name="CARD8"/>
+    <type name="handleARB" size="4" glx_name="CARD32"/>
+
+    <function name="DeleteObjectARB" offset="assign">
+        <param name="obj" type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetHandleARB" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <return type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="DetachObjectARB" offset="assign">
+        <param name="containerObj" type="GLhandleARB"/>
+        <param name="attachedObj" type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CreateShaderObjectARB" offset="assign">
+        <param name="shaderType" type="GLenum"/>
+        <return type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ShaderSourceARB" offset="assign">
+        <param name="shader" type="GLhandleARB"/>
+        <param name="count" type="GLsizei"/>
+        <param name="string" type="const GLcharARB **"/>
+        <param name="length" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CompileShaderARB" offset="assign">
+        <param name="shader" type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CreateProgramObjectARB" offset="assign">
+        <return type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="AttachObjectARB" offset="assign">
+        <param name="containerObj" type="GLhandleARB"/>
+        <param name="obj" type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="LinkProgramARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UseProgramObjectARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ValidateProgramARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1fARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2fARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3fARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4fARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLfloat"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <param name="v3" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1iARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2iARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3iARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <param name="v2" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4iARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="v0" type="GLint"/>
+        <param name="v1" type="GLint"/>
+        <param name="v2" type="GLint"/>
+        <param name="v3" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1fvARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2fvARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3fvARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4fvARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform1ivARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform2ivARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform3ivARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="Uniform4ivARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="value" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UniformMatrix2fvARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UniformMatrix3fvARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="UniformMatrix4fvARB" offset="assign">
+        <param name="location" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="transpose" type="GLboolean"/>
+        <param name="value" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetObjectParameterfvARB" offset="assign">
+        <param name="obj" type="GLhandleARB"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetObjectParameterivARB" offset="assign">
+        <param name="obj" type="GLhandleARB"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetInfoLogARB" offset="assign">
+        <param name="obj" type="GLhandleARB"/>
+        <param name="maxLength" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="infoLog" type="GLcharARB *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetAttachedObjectsARB" offset="assign">
+        <param name="containerObj" type="GLhandleARB"/>
+        <param name="maxLength" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="infoLog" type="GLhandleARB *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformLocationARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <param name="name" type="const GLcharARB *"/>
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetActiveUniformARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <param name="index" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="size" type="GLint *" output="true"/>
+        <param name="type" type="GLenum *" output="true"/>
+        <param name="name" type="GLcharARB *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformfvARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <param name="location" type="GLint"/>
+        <param name="params" type="GLfloat *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetUniformivARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <param name="location" type="GLint"/>
+        <param name="params" type="GLint *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetShaderSourceARB" offset="assign">
+        <param name="shader" type="GLhandleARB"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="source" type="GLcharARB *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_ARB_vertex_shader" number="31">
+    <enum name="VERTEX_SHADER_ARB"                        value="0x8B31"/>
+    <enum name="MAX_VERTEX_UNIFORM_COMPONENTS_ARB"        value="0x8B4A"/>
+    <enum name="MAX_VARYING_FLOATS_ARB"                   value="0x8B4B"/>
+    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB"       value="0x8B4C"/>
+    <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB"     value="0x8B4D"/>
+    <enum name="OBJECT_ACTIVE_ATTRIBUTES_ARB"             value="0x8B89"/>
+    <enum name="OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB"   value="0x8B8A"/>
+
+    <function name="BindAttribLocationARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <param name="index" type="GLuint"/>
+        <param name="name" type="const GLcharARB *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetActiveAttribARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <param name="index" type="GLuint"/>
+        <param name="bufSize" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="size" type="GLint *" output="true"/>
+        <param name="type" type="GLenum *" output="true"/>
+        <param name="name" type="GLcharARB *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetAttribLocationARB" offset="assign">
+        <param name="program" type="GLhandleARB"/>
+        <param name="name" type="const GLcharARB *"/>
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_ARB_fragment_shader" number="32">
+    <enum name="FRAGMENT_SHADER_ARB"                      value="0x8B30"/>
+    <enum name="MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB"      value="0x8B49"/>
+</category>
+
+<category name="GL_ARB_shading_language_100" number="33">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_ARB_texture_non_power_of_two" number="34">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_ARB_point_sprite" number="35">
+    <enum name="POINT_SPRITE_ARB"              count="1"  value="0x8861">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COORD_REPLACE_ARB"             count="1"  value="0x8862">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_ARB_fragment_program_shadow" number="36">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_ARB_draw_buffers" number="37">
+    <enum name="MAX_DRAW_BUFFERS_ARB"          count="1"  value="0x8824">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER0_ARB"              count="1"  value="0x8825">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER1_ARB"              count="1"  value="0x8826">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER2_ARB"              count="1"  value="0x8827">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER3_ARB"              count="1"  value="0x8828">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER4_ARB"              count="1"  value="0x8829">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER5_ARB"              count="1"  value="0x882A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER6_ARB"              count="1"  value="0x882B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER7_ARB"              count="1"  value="0x882C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER8_ARB"              count="1"  value="0x882D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER9_ARB"              count="1"  value="0x882E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER10_ARB"             count="1"  value="0x882F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER11_ARB"             count="1"  value="0x8830">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER12_ARB"             count="1"  value="0x8831">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER13_ARB"             count="1"  value="0x8832">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER14_ARB"             count="1"  value="0x8833">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER15_ARB"             count="1"  value="0x8834">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="DrawBuffersARB" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="bufs" type="const GLenum *" count="n"/>
+        <glx rop="233" large="true"/>
+    </function>
+</category>
+
+<category name="GL_ARB_texture_rectangle" number="38">
+    <enum name="TEXTURE_RECTANGLE_ARB"         count="1"  value="0x84F5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_RECTANGLE_ARB" count="1"  value="0x84F6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROXY_TEXTURE_RECTANGLE_ARB"              value="0x84F7"/>
+    <enum name="MAX_RECTANGLE_TEXTURE_SIZE_ARB" count="1" value="0x84F8">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<xi:include href="ARB_framebuffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_copy_buffer.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_depth_clamp.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_map_buffer_range.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_sync.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_seamless_cube_map.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_draw_elements_base_vertex.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="NV_conditional_render.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="EXT_transform_feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="ARB_draw_instanced.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+
+<!-- Non-ARB extensions sorted by extension number. -->
+
+<category name="GL_EXT_blend_color" number="2">
+    <enum name="CONSTANT_COLOR_EXT"                       value="0x8001"/>
+    <enum name="ONE_MINUS_CONSTANT_COLOR_EXT"             value="0x8002"/>
+    <enum name="CONSTANT_ALPHA_EXT"                       value="0x8003"/>
+    <enum name="ONE_MINUS_CONSTANT_ALPHA_EXT"             value="0x8004"/>
+    <enum name="BLEND_COLOR_EXT"               count="4"  value="0x8005">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="BlendColorEXT" alias="BlendColor">
+        <param name="red" type="GLclampf"/>
+        <param name="green" type="GLclampf"/>
+        <param name="blue" type="GLclampf"/>
+        <param name="alpha" type="GLclampf"/>
+    </function>
+</category>
+
+<category name="GL_EXT_polygon_offset" number="3">
+    <function name="PolygonOffsetEXT" offset="assign">
+        <param name="factor" type="GLfloat"/>
+        <param name="bias" type="GLfloat"/>
+        <glx rop="4098" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_texture" number="4">
+    <enum name="ALPHA4_EXT"                               value="0x803B"/>
+    <enum name="ALPHA8_EXT"                               value="0x803C"/>
+    <enum name="ALPHA12_EXT"                              value="0x803D"/>
+    <enum name="ALPHA16_EXT"                              value="0x803E"/>
+    <enum name="LUMINANCE4_EXT"                           value="0x803F"/>
+    <enum name="LUMINANCE8_EXT"                           value="0x8040"/>
+    <enum name="LUMINANCE12_EXT"                          value="0x8041"/>
+    <enum name="LUMINANCE16_EXT"                          value="0x8042"/>
+    <enum name="LUMINANCE4_ALPHA4_EXT"                    value="0x8043"/>
+    <enum name="LUMINANCE6_ALPHA2_EXT"                    value="0x8044"/>
+    <enum name="LUMINANCE8_ALPHA8_EXT"                    value="0x8045"/>
+    <enum name="LUMINANCE12_ALPHA4_EXT"                   value="0x8046"/>
+    <enum name="LUMINANCE12_ALPHA12_EXT"                  value="0x8047"/>
+    <enum name="LUMINANCE16_ALPHA16_EXT"                  value="0x8048"/>
+    <enum name="INTENSITY_EXT"                            value="0x8049"/>
+    <enum name="INTENSITY4_EXT"                           value="0x804A"/>
+    <enum name="INTENSITY8_EXT"                           value="0x804B"/>
+    <enum name="INTENSITY12_EXT"                          value="0x804C"/>
+    <enum name="INTENSITY16_EXT"                          value="0x804D"/>
+    <enum name="RGB2_EXT"                                 value="0x804E"/>
+    <enum name="RGB4_EXT"                                 value="0x804F"/>
+    <enum name="RGB5_EXT"                                 value="0x8050"/>
+    <enum name="RGB8_EXT"                                 value="0x8051"/>
+    <enum name="RGB10_EXT"                                value="0x8052"/>
+    <enum name="RGB12_EXT"                                value="0x8053"/>
+    <enum name="RGB16_EXT"                                value="0x8054"/>
+    <enum name="RGBA2_EXT"                                value="0x8055"/>
+    <enum name="RGBA4_EXT"                                value="0x8056"/>
+    <enum name="RGB5_A1_EXT"                              value="0x8057"/>
+    <enum name="RGBA8_EXT"                                value="0x8058"/>
+    <enum name="RGB10_A2_EXT"                             value="0x8059"/>
+    <enum name="RGBA12_EXT"                               value="0x805A"/>
+    <enum name="RGBA16_EXT"                               value="0x805B"/>
+    <enum name="TEXTURE_RED_SIZE_EXT"          count="1"  value="0x805C">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_GREEN_SIZE_EXT"        count="1"  value="0x805D">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BLUE_SIZE_EXT"         count="1"  value="0x805E">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_ALPHA_SIZE_EXT"        count="1"  value="0x805F">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_LUMINANCE_SIZE_EXT"    count="1"  value="0x8060">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_INTENSITY_SIZE_EXT"    count="1"  value="0x8061">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+    <enum name="REPLACE_EXT"                              value="0x8062"/>
+    <enum name="PROXY_TEXTURE_1D_EXT"                     value="0x8063"/>
+    <enum name="PROXY_TEXTURE_2D_EXT"                     value="0x8064"/>
+    <enum name="TEXTURE_TOO_LARGE_EXT"                    value="0x8065"/>
+</category>
+
+<!-- Extension number 5 is not listed in the extension registry. -->
+
+<category name="GL_EXT_texture3D" number="6">
+    <function name="TexImage3DEXT" alias="TexImage3D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *"/>
+    </function>
+
+    <function name="TexSubImage3DEXT" alias="TexSubImage3D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_texture_filter4" number="7">
+    <function name="GetTexFilterFuncSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="filter" type="GLenum"/>
+        <param name="weights" type="GLfloat *" output="true"/>
+        <glx vendorpriv="4101" ignore="true"/>
+    </function>
+
+    <function name="TexFilterFuncSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="filter" type="GLenum"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="weights" type="const GLfloat *" count="n"/>
+        <glx rop="2064" ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 8 is not listed in the extension registry. -->
+
+<category name="GL_EXT_subtexture" number="9">
+    <function name="TexSubImage1DEXT" alias="TexSubImage1D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *"/>
+    </function>
+
+    <function name="TexSubImage2DEXT" alias="TexSubImage2D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *"/>
+    </function>
+</category>
+
+<category name="GL_EXT_copy_texture" number="10">
+    <function name="CopyTexImage1DEXT" alias="CopyTexImage1D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+    </function>
+
+    <function name="CopyTexImage2DEXT" alias="CopyTexImage2D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+    </function>
+
+    <function name="CopyTexSubImage1DEXT" alias="CopyTexSubImage1D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+    </function>
+
+    <function name="CopyTexSubImage2DEXT" alias="CopyTexSubImage2D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+    </function>
+
+    <function name="CopyTexSubImage3DEXT" alias="CopyTexSubImage3D">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+    </function>
+</category>
+
+<category name="GL_EXT_histogram" number="11">
+    <enum name="HISTOGRAM_EXT"                            value="0x8024"/>
+    <enum name="PROXY_HISTOGRAM_EXT"                      value="0x8025"/>
+    <enum name="HISTOGRAM_WIDTH_EXT"           count="1"  value="0x8026">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_FORMAT_EXT"          count="1"  value="0x8027">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_RED_SIZE_EXT"        count="1"  value="0x8028">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_GREEN_SIZE_EXT"      count="1"  value="0x8029">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_BLUE_SIZE_EXT"       count="1"  value="0x802A">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_ALPHA_SIZE_EXT"      count="1"  value="0x802B">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_LUMINANCE_SIZE_EXT"  count="1"  value="0x802C">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="HISTOGRAM_SINK_EXT"            count="1"  value="0x802D">
+        <size name="GetHistogramParameterfvEXT" mode="get"/>
+        <size name="GetHistogramParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="MINMAX_EXT"                               value="0x802E"/>
+    <enum name="MINMAX_FORMAT_EXT"             count="1"  value="0x802F">
+        <size name="GetMinmaxParameterfvEXT" mode="get"/>
+        <size name="GetMinmaxParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="MINMAX_SINK_EXT"               count="1"  value="0x8030">
+        <size name="GetMinmaxParameterfvEXT" mode="get"/>
+        <size name="GetMinmaxParameterivEXT" mode="get"/>
+    </enum>
+    <enum name="TABLE_TOO_LARGE_EXT"                      value="0x8031"/>
+
+    <function name="GetHistogramEXT" alias="GetHistogram" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="reset" type="GLboolean"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
+        <glx vendorpriv="5" dimensions_in_reply="true" img_reset="reset"/>
+    </function>
+
+    <function name="GetHistogramParameterfvEXT" alias="GetHistogramParameterfv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx vendorpriv="6"/>
+    </function>
+
+    <function name="GetHistogramParameterivEXT" alias="GetHistogramParameteriv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="7"/>
+    </function>
+
+    <function name="GetMinmaxEXT" alias="GetMinmax" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="reset" type="GLboolean"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/>
+        <glx vendorpriv="8" img_reset="reset"/>
+    </function>
+
+    <function name="GetMinmaxParameterfvEXT" alias="GetMinmaxParameterfv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx vendorpriv="9"/>
+    </function>
+
+    <function name="GetMinmaxParameterivEXT" alias="GetMinmaxParameteriv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="10"/>
+    </function>
+
+    <function name="HistogramEXT" alias="Histogram" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="sink" type="GLboolean"/>
+    </function>
+
+    <function name="MinmaxEXT" alias="Minmax" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="sink" type="GLboolean"/>
+    </function>
+
+    <function name="ResetHistogramEXT" alias="ResetHistogram" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+    </function>
+
+    <function name="ResetMinmaxEXT" alias="ResetMinmax" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+    </function>
+</category>
+
+<category name="GL_EXT_convolution" number="12">
+    <enum name="CONVOLUTION_BORDER_MODE_EXT"   count="1"  value="0x8013">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_FILTER_SCALE_EXT"  count="4"  value="0x8014">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_FILTER_BIAS_EXT"   count="4"  value="0x8015">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="REDUCE_EXT"                               value="0x8016"/>
+    <enum name="CONVOLUTION_FORMAT_EXT"        count="1"  value="0x8017">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_WIDTH_EXT"         count="1"  value="0x8018">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="CONVOLUTION_HEIGHT_EXT"        count="1"  value="0x8019">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+    <enum name="MAX_CONVOLUTION_WIDTH_EXT"     count="1"  value="0x801A">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_CONVOLUTION_HEIGHT_EXT"    count="1"  value="0x801B">
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_RED_SCALE_EXT" count="1" value="0x801C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_GREEN_SCALE_EXT" count="1" value="0x801D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_BLUE_SCALE_EXT" count="1" value="0x801E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_ALPHA_SCALE_EXT" count="1" value="0x801F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_RED_BIAS_EXT" count="1"  value="0x8020">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_GREEN_BIAS_EXT" count="1" value="0x8021">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_BLUE_BIAS_EXT" count="1" value="0x8022">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="POST_CONVOLUTION_ALPHA_BIAS_EXT" count="1" value="0x8023">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="ConvolutionFilter1DEXT" alias="ConvolutionFilter1D" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="const GLvoid *"/>
+    </function>
+
+    <function name="ConvolutionFilter2DEXT" alias="ConvolutionFilter2D" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="const GLvoid *"/>
+    </function>
+
+    <function name="ConvolutionParameterfEXT" alias="ConvolutionParameterf" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat"/>
+    </function>
+
+    <function name="ConvolutionParameterfvEXT" alias="ConvolutionParameterfv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="ConvolutionParameteriEXT" alias="ConvolutionParameteri" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint"/>
+    </function>
+
+    <function name="ConvolutionParameterivEXT" alias="ConvolutionParameteriv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+    </function>
+
+    <function name="CopyConvolutionFilter1DEXT" alias="CopyConvolutionFilter1D" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+    </function>
+
+    <function name="CopyConvolutionFilter2DEXT" alias="CopyConvolutionFilter2D" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+    </function>
+
+    <function name="GetConvolutionFilterEXT" alias="GetConvolutionFilter" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/>
+        <glx vendorpriv="1" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetConvolutionParameterfvEXT" alias="GetConvolutionParameterfv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx vendorpriv="2"/>
+    </function>
+
+    <function name="GetConvolutionParameterivEXT" alias="GetConvolutionParameteriv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="3"/>
+    </function>
+
+    <function name="GetSeparableFilterEXT" alias="GetSeparableFilter" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="row" type="GLvoid *" output="true"/>
+        <param name="column" type="GLvoid *" output="true"/>
+        <param name="span" type="GLvoid *" output="true"/>
+        <glx vendorpriv="4" handcode="true"/>
+    </function>
+
+    <function name="SeparableFilter2DEXT" alias="SeparableFilter2D" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="row" type="const GLvoid *"/>
+        <param name="column" type="const GLvoid *"/>
+    </function>
+</category>
+
+<category name="GL_SGI_color_matrix" number="13">
+    <enum name="COLOR_MATRIX_SGI"                         value="0x80B1"/>
+    <enum name="COLOR_MATRIX_STACK_DEPTH_SGI"             value="0x80B2"/>
+    <enum name="MAX_COLOR_MATRIX_STACK_DEPTH_SGI"         value="0x80B3"/>
+    <enum name="POST_COLOR_MATRIX_RED_SCALE_SGI"          value="0x80B4"/>
+    <enum name="POST_COLOR_MATRIX_GREEN_SCALE_SGI"        value="0x80B5"/>
+    <enum name="POST_COLOR_MATRIX_BLUE_SCALE_SGI"         value="0x80B6"/>
+    <enum name="POST_COLOR_MATRIX_ALPHA_SCALE_SGI"        value="0x80B7"/>
+    <enum name="POST_COLOR_MATRIX_RED_BIAS_SGI"           value="0x80B8"/>
+    <enum name="POST_COLOR_MATRIX_GREEN_BIAS_SGI"         value="0x80B9"/>
+    <enum name="POST_COLOR_MATRIX_BLUE_BIAS_SGI"          value="0x80BA"/>
+    <enum name="POST_COLOR_MATRIX_ALPHA_BIAS_SGI"         value="0x80BB"/>
+</category>
+
+<category name="GL_SGI_color_table" number="14">
+    <enum name="COLOR_TABLE_SCALE_SGI"         count="4"  value="0x80D6">
+        <size name="ColorTableParameterfvSGI"/>
+        <size name="ColorTableParameterivSGI"/>
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_BIAS_SGI"          count="4"  value="0x80D7">
+        <size name="ColorTableParameterfvSGI"/>
+        <size name="ColorTableParameterivSGI"/>
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_FORMAT_SGI"        count="1"  value="0x80D8">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_WIDTH_SGI"         count="1"  value="0x80D9">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_RED_SIZE_SGI"      count="1"  value="0x80DA">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_GREEN_SIZE_SGI"    count="1"  value="0x80DB">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_BLUE_SIZE_SGI"     count="1"  value="0x80DC">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_ALPHA_SIZE_SGI"    count="1"  value="0x80DD">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_LUMINANCE_SIZE_SGI" count="1" value="0x80DE">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_INTENSITY_SIZE_SGI" count="1" value="0x80DF">
+        <size name="GetColorTableParameterfvSGI" mode="get"/>
+        <size name="GetColorTableParameterivSGI" mode="get"/>
+    </enum>
+
+    <function name="ColorTableSGI" alias="ColorTable" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="const GLvoid *"/>
+    </function>
+
+    <function name="ColorTableParameterfvSGI" alias="ColorTableParameterfv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="ColorTableParameterivSGI" alias="ColorTableParameteriv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+    </function>
+
+    <function name="CopyColorTableSGI" alias="CopyColorTable" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+    </function>
+
+    <function name="GetColorTableSGI" alias="GetColorTable" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
+        <glx vendorpriv="4098" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetColorTableParameterfvSGI" alias="GetColorTableParameterfv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx vendorpriv="4099"/>
+    </function>
+
+    <function name="GetColorTableParameterivSGI" alias="GetColorTableParameteriv" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="4100"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_pixel_texture" number="15">
+    <function name="PixelTexGenParameteriSGIS" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="PixelTexGenParameterivSGIS" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="PixelTexGenParameterfSGIS" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="PixelTexGenParameterfvSGIS" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetPixelTexGenParameterivSGIS" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetPixelTexGenParameterfvSGIS" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_texture4D" number="16">
+    <function name="TexImage4DSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="size4d" type="GLsizei"/>
+        <param name="border" type="GLint"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_extent="size4d" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
+        <glx rop="2057" ignore="true"/>
+    </function>
+
+    <function name="TexSubImage4DSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="level" type="GLint"/>
+        <param name="xoffset" type="GLint"/>
+        <param name="yoffset" type="GLint"/>
+        <param name="zoffset" type="GLint"/>
+        <param name="woffset" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+        <param name="height" type="GLsizei"/>
+        <param name="depth" type="GLsizei"/>
+        <param name="size4d" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="UNUSED" type="GLuint" padding="true"/>
+        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_extent="size4d" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_woff="woffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
+        <glx rop="2058" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGI_texture_color_table" number="17">
+    <enum name="TEXTURE_COLOR_TABLE_SGI"                  value="0x80BC"/>
+    <enum name="PROXY_TEXTURE_COLOR_TABLE_SGI"            value="0x80BD"/>
+</category>
+
+<!-- Extension number 19 is not listed in the extension registry. -->
+
+<category name="GL_EXT_texture_object" number="20">
+    <function name="AreTexturesResidentEXT" alias="AreTexturesResident">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <param name="residences" type="GLboolean *" output="true" count="n"/>
+        <return type="GLboolean"/>
+        <glx vendorpriv="11" handcode="client" always_array="true"/>
+    </function>
+
+    <function name="BindTextureEXT" alias="BindTexture">
+        <param name="target" type="GLenum"/>
+        <param name="texture" type="GLuint"/>
+    </function>
+
+    <function name="DeleteTexturesEXT" alias="DeleteTextures">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="const GLuint *" count="n"/>
+        <glx vendorpriv="12"/>
+    </function>
+
+    <function name="GenTexturesEXT" alias="GenTextures">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="textures" type="GLuint *" output="true" count="n"/>
+        <glx vendorpriv="13" always_array="true"/>
+    </function>
+
+    <function name="IsTextureEXT" alias="IsTexture">
+        <param name="texture" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx vendorpriv="14"/>
+    </function>
+
+    <function name="PrioritizeTexturesEXT" alias="PrioritizeTextures">
+        <param name="n" type="GLsizei"/>
+        <param name="textures" type="const GLuint *"/>
+        <param name="priorities" type="const GLclampf *"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_detail_texture" number="21">
+    <function name="DetailTexFuncSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="points" type="const GLfloat *" count="n"/>
+        <glx rop="2051" ignore="true"/>
+    </function>
+
+    <function name="GetDetailTexFuncSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="points" type="GLfloat *" output="true"/>
+        <glx vendorpriv="4096" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_sharpen_texture" number="22">
+    <function name="SharpenTexFuncSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="points" type="const GLfloat *" count="n" count_scale="2"/>
+        <glx rop="2052" ignore="true"/>
+    </function>
+
+    <function name="GetSharpenTexFuncSGIS">
+        <param name="target" type="GLenum"/>
+        <param name="points" type="GLfloat *" output="true"/>
+        <glx vendorpriv="4097" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_multisample" number="25">
+    <function name="SampleMaskSGIS" offset="assign" static_dispatch="false">
+        <param name="value" type="GLclampf"/>
+        <param name="invert" type="GLboolean"/>
+        <glx rop="2048"/>
+    </function>
+
+    <function name="SamplePatternSGIS" offset="assign" static_dispatch="false">
+        <param name="pattern" type="GLenum"/>
+        <glx rop="2049"/>
+    </function>
+</category>
+
+<!-- Extension number 26 is not listed in the extension registry. -->
+
+<category name="GL_EXT_rescale_normal" number="27">
+    <enum name="RESCALE_NORMAL_EXT"            count="1"  value="0x803A">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<!-- Extension number 28 is a GLX extension. -->
+<!-- Extension number 29 is not listed in the extension registry. -->
+
+<category name="GL_EXT_vertex_array" number="30">
+    <function name="ArrayElementEXT" alias="ArrayElement">
+        <param name="i" type="GLint"/>
+    </function>
+
+    <function name="ColorPointerEXT" offset="assign">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="DrawArraysEXT" alias="DrawArrays">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+    </function>
+
+    <function name="EdgeFlagPointerEXT" offset="assign">
+        <param name="stride" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="pointer" type="const GLboolean *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="GetPointervEXT" alias="GetPointerv">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **" output="true"/>
+    </function>
+
+    <function name="IndexPointerEXT" offset="assign">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="NormalPointerEXT" offset="assign">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="TexCoordPointerEXT" offset="assign">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="VertexPointerEXT" offset="assign">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_generate_mipmap" number="32">
+    <enum name="GENERATE_MIPMAP_SGIS"          count="1"  value="0x8191">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="GENERATE_MIPMAP_HINT_SGIS"                value="0x8192"/>
+</category>
+
+<category name="GL_SGIX_clipmap" number="33">
+    <enum name="LINEAR_CLIPMAP_LINEAR_SGIX"               value="0x8170"/>
+    <enum name="TEXTURE_CLIPMAP_CENTER_SGIX"   count="2"  value="0x8171">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_CLIPMAP_FRAME_SGIX"    count="1"  value="0x8172">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_CLIPMAP_OFFSET_SGIX"   count="2"  value="0x8173">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX" count="3" value="0x8174">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_CLIPMAP_LOD_OFFSET_SGIX"          value="0x8175"/>
+    <enum name="TEXTURE_CLIPMAP_DEPTH_SGIX"               value="0x8176"/>
+    <enum name="MAX_CLIPMAP_DEPTH_SGIX"                   value="0x8177"/>
+    <enum name="MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX"           value="0x8178"/>
+    <enum name="NEAREST_CLIPMAP_NEAREST_SGIX"             value="0x844D"/>
+    <enum name="NEAREST_CLIPMAP_LINEAR_SGIX"              value="0x844E"/>
+    <enum name="LINEAR_CLIPMAP_NEAREST_SGIX"              value="0x844F"/>
+</category>
+
+<category name="GL_SGIX_shadow" number="34">
+    <enum name="TEXTURE_COMPARE_SGIX"          count="1"  value="0x819A">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_COMPARE_OPERATOR_SGIX" count="1"  value="0x819B">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_LEQUAL_R_SGIX"                    value="0x819C"/>
+    <enum name="TEXTURE_GEQUAL_R_SGIX"                    value="0x819D"/>
+</category>
+
+<category name="GL_SGIS_texture_edge_clamp" number="35">
+    <enum name="CLAMP_TO_EDGE_SGIS"                       value="0x812F"/>
+</category>
+
+<category name="GL_SGIS_texture_border_clamp" number="36">
+    <enum name="CLAMP_TO_BORDER_SGIS"                     value="0x812D"/>
+</category>
+
+<category name="GL_EXT_blend_minmax" number="37">
+    <enum name="FUNC_ADD_EXT"                             value="0x8006"/>
+    <enum name="MIN_EXT"                                  value="0x8007"/>
+    <enum name="MAX_EXT"                                  value="0x8008"/>
+    <enum name="BLEND_EQUATION_EXT"            count="1"  value="0x8009">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="BlendEquationEXT" alias="BlendEquation">
+        <param name="mode" type="GLenum"/>
+    </function>
+</category>
+
+<category name="GL_EXT_blend_subtract" number="38">
+    <enum name="FUNC_SUBTRACT_EXT"                        value="0x800A"/>
+    <enum name="FUNC_REVERSE_SUBTRACT_EXT"                value="0x800B"/>
+
+    <!-- <function name="BlendEquationEXT" alias="BlendEquation">
+        <param name="mode" type="GLenum"/>
+    </function> -->
+</category>
+
+<!-- Extension number 40 is a GLX extension. -->
+<!-- Extension number 41 is a GLX extension. -->
+<!-- Extension number 42 is a GLX extension. -->
+<!-- Extension number 43 is a GLX extension. -->
+<!-- Extension number 44 is a GLX extension. -->
+<!-- Extension number 46 is not listed in the extension registry. -->
+<!-- Extension number 47 is a GLX extension. -->
+<!-- Extension number 48 is not listed in the extension registry. -->
+<!-- Extension number 49 is a GLX extension. -->
+<!-- Extension number 50 is a GLX extension. -->
+
+<category name="GL_SGIX_sprite" number="52">
+    <function name="SpriteParameterfSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="SpriteParameterfvSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="SpriteParameteriSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="SpriteParameterivSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_point_parameters" number="54">
+    <enum name="POINT_SIZE_MIN_EXT"            count="1"  value="0x8126">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_SIZE_MAX_EXT"            count="1"  value="0x8127">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_FADE_THRESHOLD_SIZE_EXT" count="1"  value="0x8128">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_DISTANCE_ATTENUATION_EXT" count="3" value="0x8129">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+
+    <function name="PointParameterfEXT" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="2065"/>
+    </function>
+
+    <function name="PointParameterfvEXT" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="2066"/>
+    </function>
+</category>
+
+<category name="GL_SGIX_instruments" number="55">
+    <function name="GetInstrumentsSGIX">
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="InstrumentsBufferSGIX">
+        <param name="size" type="GLsizei"/>
+        <param name="buffer" type="GLint *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="PollInstrumentsSGIX">
+        <param name="marker_p" type="GLint *" output="true"/>
+        <return type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ReadInstrumentsSGIX">
+        <param name="marker" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="StartInstrumentsSGIX">
+        <glx ignore="true"/>
+    </function>
+
+    <function name="StopInstrumentsSGIX">
+        <param name="marker" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIX_texture_scale_bias" number="56">
+    <enum name="POST_TEXTURE_FILTER_BIAS_SGIX"  count="4" value="0x8179">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="POST_TEXTURE_FILTER_SCALE_SGIX" count="4" value="0x817A">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="POST_TEXTURE_FILTER_BIAS_RANGE_SGIX"      value="0x817B"/>
+    <enum name="POST_TEXTURE_FILTER_SCALE_RANGE_SGIX"     value="0x817C"/>
+</category>
+
+<category name="GL_SGIX_framezoom" number="57">
+    <function name="FrameZoomSGIX">
+        <param name="factor" type="GLint"/>
+        <glx rop="2072" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIX_tag_sample_buffer" number="58">
+    <function name="TagSampleBufferSGIX">
+        <glx rop="2050" ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 59 is not listed in the extension registry. -->
+
+<category name="GL_SGIX_reference_plane" number="60">
+    <function name="ReferencePlaneSGIX">
+        <param name="equation" type="const GLdouble *" count="4"/>
+        <glx rop="2071" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIX_flush_raster" number="61">
+    <function name="FlushRasterSGIX">
+        <glx vendorpriv="4105" ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 62 is a GLX extension. -->
+
+<category name="GL_SGIX_depth_texture" number="63">
+    <enum name="DEPTH_COMPONENT16_SGIX"                   value="0x81A5"/>
+    <enum name="DEPTH_COMPONENT24_SGIX"                   value="0x81A6"/>
+    <enum name="DEPTH_COMPONENT32_SGIX"                   value="0x81A7"/>
+</category>
+
+<category name="GL_SGIS_fog_function" number="64">
+    <function name="FogFuncSGIS">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="points" type="const GLfloat *" count="n" count_scale="2"/>
+        <glx rop="2067" ignore="true"/>
+    </function>
+
+    <function name="GetFogFuncSGIS">
+        <param name="points" type="GLfloat *" output="true"/>
+        <!-- GLX protocol for this function is unknown. -->
+    </function>
+</category>
+
+<category name="GL_SGIX_fog_offset" number="65">
+    <enum name="FOG_OFFSET_SGIX"                          value="0x8198"/>
+    <enum name="FOG_OFFSET_VALUE_SGIX"         count="1"  value="0x8199">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+    </enum>
+</category>
+
+<category name="GL_HP_image_transform" number="66">
+    <function name="ImageTransformParameteriHP">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+    </function>
+
+    <function name="ImageTransformParameterfHP">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+    </function>
+
+    <function name="ImageTransformParameterivHP">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+    </function>
+
+    <function name="ImageTransformParameterfvHP">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="GetImageTransformParameterivHP">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+    </function>
+
+    <function name="GetImageTransformParameterfvHP">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+    </function>
+</category>
+
+<category name="GL_HP_convolution_border_modes" number="67">
+    <enum name="IGNORE_BORDER_HP"                         value="0x8150"/>
+    <enum name="CONSTANT_BORDER_HP"                       value="0x8151"/>
+    <enum name="REPLICATE_BORDER_HP"                      value="0x8153"/>
+    <enum name="CONVOLUTION_BORDER_COLOR_HP"   count="4"  value="0x8154">
+        <size name="ConvolutionParameterfv"/>
+        <size name="ConvolutionParameteriv"/>
+        <size name="GetConvolutionParameterfv" mode="get"/>
+        <size name="GetConvolutionParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<!-- Extension number 68 is not listed in the extension registry. -->
+<!-- Extension number 70 is not listed in the extension registry. -->
+<!-- Extension number 71 is not listed in the extension registry. -->
+<!-- Extension number 72 is not listed in the extension registry. -->
+<!-- Extension number 73 is not listed in the extension registry. -->
+
+<category name="GL_EXT_color_subtable" number="74">
+    <function name="ColorSubTableEXT" alias="ColorSubTable" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="start" type="GLsizei"/>
+        <param name="count" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="data" type="const GLvoid *"/>
+    </function>
+
+    <function name="CopyColorSubTableEXT" alias="CopyColorSubTable" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="start" type="GLsizei"/>
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="width" type="GLsizei"/>
+    </function>
+</category>
+
+<!-- Extension number 75 is a GLU extension. -->
+
+<category name="GL_PGI_misc_hints" number="77">
+    <function name="HintPGI">
+        <param name="target" type="GLenum"/>
+        <param name="mode" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_paletted_texture" number="78">
+    <enum name="COLOR_TABLE_FORMAT_EXT"        count="1"  value="0x80D8">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_WIDTH_EXT"         count="1"  value="0x80D9">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_RED_SIZE_EXT"      count="1"  value="0x80DA">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_GREEN_SIZE_EXT"    count="1"  value="0x80DB">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_BLUE_SIZE_EXT"     count="1"  value="0x80DC">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_ALPHA_SIZE_EXT"    count="1"  value="0x80DD">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_LUMINANCE_SIZE_EXT" count="1" value="0x80DE">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="COLOR_TABLE_INTENSITY_SIZE_EXT" count="1" value="0x80DF">
+        <size name="GetColorTableParameterfv" mode="get"/>
+        <size name="GetColorTableParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_INDEX_SIZE_EXT"        count="1"  value="0x80ED">
+        <size name="GetTexLevelParameterfv" mode="get"/>
+        <size name="GetTexLevelParameteriv" mode="get"/>
+    </enum>
+
+    <function name="ColorTableEXT" alias="ColorTable">
+        <param name="target" type="GLenum"/>
+        <param name="internalformat" type="GLenum"/>
+        <param name="width" type="GLsizei"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="const GLvoid *"/>
+    </function>
+
+    <function name="GetColorTableEXT" alias="GetColorTable">
+        <param name="target" type="GLenum"/>
+        <param name="format" type="GLenum"/>
+        <param name="type" type="GLenum"/>
+        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
+        <glx vendorpriv="4098" dimensions_in_reply="true"/>
+    </function>
+
+    <function name="GetColorTableParameterivEXT" alias="GetColorTableParameteriv">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="4100"/>
+    </function>
+
+    <function name="GetColorTableParameterfvEXT" alias="GetColorTableParameterfv">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx vendorpriv="4099"/>
+    </function>
+</category>
+
+<category name="GL_EXT_clip_volume_hint" number="79">
+    <enum name="CLIP_VOLUME_CLIPPING_HINT_EXT" count="1"  value="0x80F0">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_SGIX_list_priority" number="80">
+    <function name="GetListParameterfvSGIX">
+        <param name="list" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetListParameterivSGIX">
+        <param name="list" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ListParameterfSGIX">
+        <param name="list" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ListParameterfvSGIX">
+        <param name="list" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ListParameteriSGIX">
+        <param name="list" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="ListParameterivSGIX">
+        <param name="list" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 82 is not listed in the extension registry. -->
+<!-- Extension number 83 is a GLX extension. -->
+
+<category name="GL_SGIX_texture_lod_bias" number="84">
+    <enum name="TEXTURE_LOD_BIAS_S_SGIX"       count="1"  value="0x818E">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_LOD_BIAS_T_SGIX"       count="1"  value="0x818F">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_LOD_BIAS_R_SGIX"       count="1"  value="0x8190">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<!-- Extension number 85 is a GLU extension. -->
+<!-- Extension number 86 is a GLX extension. -->
+<!-- Extension number 87 is not listed in the extension registry. -->
+<!-- Extension number 88 is not listed in the extension registry. -->
+<!-- Extension number 89 is not listed in the extension registry. -->
+
+
+<category name="GL_SGIX_shadow_ambient" number="90">
+    <enum name="SHADOW_AMBIENT_SGIX"           count="1"  value="0x80BF">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<!-- Extension number 91 is a GLX extension. -->
+<!-- Extension number 92 is a GLX extension. -->
+
+<category name="GL_EXT_index_material" number="94">
+    <function name="IndexMaterialEXT">
+        <param name="face" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_index_func" number="95">
+    <function name="IndexFuncEXT">
+        <param name="func" type="GLenum"/>
+        <param name="ref" type="GLclampf"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_compiled_vertex_array" number="97">
+    <function name="LockArraysEXT" offset="assign">
+        <param name="first" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <glx handcode="true" ignore="true"/>
+    </function>
+
+    <function name="UnlockArraysEXT" offset="assign">
+        <glx handcode="true" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_cull_vertex" number="98">
+    <enum name="CULL_VERTEX_EXT"                          value="0x81AA"/>
+    <enum name="CULL_VERTEX_OBJECT_POSITION_EXT" count="4" value="0x81AB">
+        <size name="CullParameterfv"/>
+        <size name="CullParameterdv"/>
+    </enum>
+    <enum name="CULL_VERTEX_EYE_POSITION_EXT"  count="4"  value="0x81AC">
+        <size name="CullParameterfv"/>
+        <size name="CullParameterdv"/>
+    </enum>
+
+    <function name="CullParameterdvEXT" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *"/> <!-- Spec bug. Should be const. -->
+        <glx ignore="true"/>
+    </function>
+
+    <function name="CullParameterfvEXT" offset="assign" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *"/> <!-- Spec bug. Should be const. -->
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 99 is not listed in the extension registry. -->
+<!-- Extension number 100 is a GLU extension. -->
+
+<!-- Shouldn't this be EXT_fragment_lighting? -->
+<category name="GL_SGIX_fragment_lighting" number="102">
+    <function name="FragmentColorMaterialSGIX">
+        <param name="face" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightfSGIX">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightfvSGIX">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightiSGIX">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightivSGIX">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightModelfSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightModelfvSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightModeliSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentLightModelivSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentMaterialfSGIX">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentMaterialfvSGIX">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentMaterialiSGIX">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FragmentMaterialivSGIX">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetFragmentLightfvSGIX">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetFragmentLightivSGIX">
+        <param name="light" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetFragmentMaterialfvSGIX">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetFragmentMaterialivSGIX">
+        <param name="face" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="LightEnviSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 103 is not listed in the extension registry. -->
+<!-- Extension number 104 is not listed in the extension registry. -->
+<!-- Extension number 105 is not listed in the extension registry. -->
+<!-- Extension number 106 is not listed in the extension registry. -->
+<!-- Extension number 107 is not listed in the extension registry. -->
+<!-- Extension number 108 is not listed in the extension registry. -->
+<!-- Extension number 109 is not listed in the extension registry. -->
+
+<category name="GL_IBM_rasterpos_clip" number="110">
+    <enum name="RASTER_POSITION_UNCLIPPED_IBM"  count="1" value="0x19262">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_EXT_draw_range_elements" number="112">
+    <function name="DrawRangeElementsEXT" alias="DrawRangeElements">
+        <param name="mode" type="GLenum"/>
+        <param name="start" type="GLuint"/>
+        <param name="end" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<!-- Extension number 115 is a GLX extension. -->
+<!-- Extension number 116 is not listed in the extension registry. -->
+
+<category name="GL_EXT_light_texture" number="117">
+    <function name="ApplyTextureEXT">
+        <param name="mode" type="GLenum"/>
+    </function>
+
+    <function name="TextureLightEXT">
+        <param name="pname" type="GLenum"/>
+    </function>
+
+    <function name="TextureMaterialEXT">
+        <param name="face" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+    </function>
+</category>
+
+<!-- Extension number 118 is not listed in the extension registry. -->
+<!-- Extension number 121 is not listed in the extension registry. -->
+<!-- Extension number 122 is not listed in the extension registry. -->
+<!-- Extension number 123 is not listed in the extension registry. -->
+<!-- Extension number 124 is not listed in the extension registry. -->
+<!-- Extension number 125 is not listed in the extension registry. -->
+<!-- Extension number 126 is not listed in the extension registry. -->
+<!-- Extension number 128 is not listed in the extension registry. -->
+<!-- Extension number 130 is not listed in the extension registry. -->
+<!-- Extension number 131 is not listed in the extension registry. -->
+
+<category name="GL_SGIX_async" number="132">
+    <function name="AsyncMarkerSGIX">
+        <param name="marker" type="GLuint"/>
+    </function>
+
+    <function name="FinishAsyncSGIX">
+        <param name="markerp" type="GLuint *"/> <!-- Spec bug. Should be const. -->
+        <return type="GLint"/>
+    </function>
+
+    <function name="PollAsyncSGIX">
+        <param name="markerp" type="GLuint *"/> <!-- Spec bug. Should be const. -->
+        <return type="GLint"/>
+    </function>
+
+    <function name="GenAsyncMarkersSGIX">
+        <param name="range" type="GLsizei"/>
+        <return type="GLuint"/>
+    </function>
+
+    <function name="DeleteAsyncMarkersSGIX">
+        <param name="marker" type="GLuint"/>
+        <param name="range" type="GLsizei"/>
+    </function>
+
+    <function name="IsAsyncMarkerSGIX">
+        <param name="marker" type="GLuint"/>
+        <return type="GLboolean"/>
+    </function>
+</category>
+
+<category name="GL_INTEL_parallel_arrays" number="136">
+    <function name="VertexPointervINTEL">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="pointer" type="const GLvoid **"/>
+    </function>
+
+    <function name="NormalPointervINTEL">
+        <param name="type" type="GLenum"/>
+        <param name="pointer" type="const GLvoid **"/>
+    </function>
+
+    <function name="ColorPointervINTEL">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="pointer" type="const GLvoid **"/>
+    </function>
+
+    <function name="TexCoordPointervINTEL">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="pointer" type="const GLvoid **"/>
+    </function>
+</category>
+
+<category name="GL_HP_occlusion_test" number="137">
+    <enum name="OCCLUSION_TEST_HP"             count="1"  value="0x8165">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="OCCLUSION_TEST_RESULT_HP"      count="1"  value="0x8166">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_EXT_pixel_transform" number="138">
+    <function name="PixelTransformParameteriEXT">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+    </function>
+
+    <function name="PixelTransformParameterfEXT">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+    </function>
+
+    <function name="PixelTransformParameterivEXT">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+    </function>
+
+    <function name="PixelTransformParameterfvEXT">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+</category>
+
+<!-- Extension number 140 is not listed in the extension registry. -->
+
+<category name="GL_EXT_shared_texture_palette" number="141">
+    <enum name="SHARED_TEXTURE_PALETTE_EXT"    count="1"  value="0x81FB"/>
+</category>
+
+<!-- Extension number 142 is a GLX extension. -->
+<!-- Extension number 143 is not listed in the extension registry. -->
+
+<category name="GL_EXT_separate_specular_color" number="144">
+    <enum name="LIGHT_MODEL_COLOR_CONTROL_EXT" count="1"  value="0x81F8">
+        <size name="LightModelfv"/>
+        <size name="LightModeliv"/>
+    </enum>
+    <enum name="SINGLE_COLOR_EXT"                         value="0x81F9"/>
+    <enum name="SEPARATE_SPECULAR_COLOR_EXT"              value="0x81FA"/>
+</category>
+
+<category name="GL_EXT_secondary_color" number="145">
+    <function name="SecondaryColor3bEXT" offset="assign" vectorequiv="SecondaryColor3bvEXT">
+        <param name="red" type="GLbyte"/>
+        <param name="green" type="GLbyte"/>
+        <param name="blue" type="GLbyte"/>
+    </function>
+
+    <function name="SecondaryColor3bvEXT" offset="assign">
+        <param name="v" type="const GLbyte *" count="3"/>
+        <glx rop="4126"/>
+    </function>
+
+    <function name="SecondaryColor3dEXT" offset="assign" vectorequiv="SecondaryColor3dvEXT">
+        <param name="red" type="GLdouble"/>
+        <param name="green" type="GLdouble"/>
+        <param name="blue" type="GLdouble"/>
+    </function>
+
+    <function name="SecondaryColor3dvEXT" offset="assign">
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="4130"/>
+    </function>
+
+    <function name="SecondaryColor3fEXT" offset="assign" vectorequiv="SecondaryColor3fvEXT">
+        <param name="red" type="GLfloat"/>
+        <param name="green" type="GLfloat"/>
+        <param name="blue" type="GLfloat"/>
+    </function>
+
+    <function name="SecondaryColor3fvEXT" offset="assign">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="4129"/>
+    </function>
+
+    <function name="SecondaryColor3iEXT" offset="assign" vectorequiv="SecondaryColor3ivEXT">
+        <param name="red" type="GLint"/>
+        <param name="green" type="GLint"/>
+        <param name="blue" type="GLint"/>
+    </function>
+
+    <function name="SecondaryColor3ivEXT" offset="assign">
+        <param name="v" type="const GLint *" count="3"/>
+        <glx rop="4128"/>
+    </function>
+
+    <function name="SecondaryColor3sEXT" offset="assign" vectorequiv="SecondaryColor3svEXT">
+        <param name="red" type="GLshort"/>
+        <param name="green" type="GLshort"/>
+        <param name="blue" type="GLshort"/>
+    </function>
+
+    <function name="SecondaryColor3svEXT" offset="assign">
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="4127"/>
+    </function>
+
+    <function name="SecondaryColor3ubEXT" offset="assign" vectorequiv="SecondaryColor3ubvEXT">
+        <param name="red" type="GLubyte"/>
+        <param name="green" type="GLubyte"/>
+        <param name="blue" type="GLubyte"/>
+    </function>
+
+    <function name="SecondaryColor3ubvEXT" offset="assign">
+        <param name="v" type="const GLubyte *" count="3"/>
+        <glx rop="4131"/>
+    </function>
+
+    <function name="SecondaryColor3uiEXT" offset="assign" vectorequiv="SecondaryColor3uivEXT">
+        <param name="red" type="GLuint"/>
+        <param name="green" type="GLuint"/>
+        <param name="blue" type="GLuint"/>
+    </function>
+
+    <function name="SecondaryColor3uivEXT" offset="assign">
+        <param name="v" type="const GLuint *" count="3"/>
+        <glx rop="4133"/>
+    </function>
+
+    <function name="SecondaryColor3usEXT" offset="assign" vectorequiv="SecondaryColor3usvEXT">
+        <param name="red" type="GLushort"/>
+        <param name="green" type="GLushort"/>
+        <param name="blue" type="GLushort"/>
+    </function>
+
+    <function name="SecondaryColor3usvEXT" offset="assign">
+        <param name="v" type="const GLushort *" count="3"/>
+        <glx rop="4132"/>
+    </function>
+
+    <function name="SecondaryColorPointerEXT" offset="assign">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_texture_perturb_normal" number="147">
+    <function name="TextureNormalEXT">
+        <param name="mode" type="GLenum"/>
+    </function>
+</category>
+
+<category name="GL_EXT_multi_draw_arrays" number="148">
+    <function name="MultiDrawArraysEXT" offset="assign">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint *"/> <!-- Spec bug. Should be const. -->
+        <param name="count" type="GLsizei *"/> <!-- Spec bug. Should be const. -->
+        <param name="primcount" type="GLsizei"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="MultiDrawElementsEXT" offset="assign">
+        <param name="mode" type="GLenum"/>
+        <param name="count" type="const GLsizei *"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid **"/>
+        <param name="primcount" type="GLsizei"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_fog_coord" number="149">
+    <function name="FogCoordfEXT" offset="assign" vectorequiv="FogCoordfvEXT">
+        <param name="coord" type="GLfloat"/>
+    </function>
+
+    <function name="FogCoordfvEXT" offset="assign">
+        <param name="coord" type="const GLfloat *" count="1"/>
+        <glx rop="4124"/>
+    </function>
+
+    <function name="FogCoorddEXT" offset="assign" vectorequiv="FogCoorddvEXT">
+        <param name="coord" type="GLdouble"/>
+    </function>
+
+    <function name="FogCoorddvEXT" offset="assign">
+        <param name="coord" type="const GLdouble *" count="1"/>
+        <glx rop="4125"/>
+    </function>
+
+    <function name="FogCoordPointerEXT" offset="assign">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+</category>
+
+<!-- Extension number 150 is not listed in the extension registry. -->
+<!-- Extension number 151 is not listed in the extension registry. -->
+<!-- Extension number 152 is not listed in the extension registry. -->
+<!-- Extension number 153 is not listed in the extension registry. -->
+<!-- Extension number 154 is not listed in the extension registry. -->
+
+<category name="GL_EXT_coordinate_frame" number="156">
+    <function name="Tangent3bEXT">
+        <param name="tx" type="GLbyte"/>
+        <param name="ty" type="GLbyte"/>
+        <param name="tz" type="GLbyte"/>
+    </function>
+
+    <function name="Tangent3bvEXT">
+        <param name="v" type="const GLbyte *"/>
+    </function>
+
+    <function name="Tangent3dEXT">
+        <param name="tx" type="GLdouble"/>
+        <param name="ty" type="GLdouble"/>
+        <param name="tz" type="GLdouble"/>
+    </function>
+
+    <function name="Tangent3dvEXT">
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="Tangent3fEXT">
+        <param name="tx" type="GLfloat"/>
+        <param name="ty" type="GLfloat"/>
+        <param name="tz" type="GLfloat"/>
+    </function>
+
+    <function name="Tangent3fvEXT">
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="Tangent3iEXT">
+        <param name="tx" type="GLint"/>
+        <param name="ty" type="GLint"/>
+        <param name="tz" type="GLint"/>
+    </function>
+
+    <function name="Tangent3ivEXT">
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="Tangent3sEXT">
+        <param name="tx" type="GLshort"/>
+        <param name="ty" type="GLshort"/>
+        <param name="tz" type="GLshort"/>
+    </function>
+
+    <function name="Tangent3svEXT">
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="Binormal3bEXT">
+        <param name="bx" type="GLbyte"/>
+        <param name="by" type="GLbyte"/>
+        <param name="bz" type="GLbyte"/>
+    </function>
+
+    <function name="Binormal3bvEXT">
+        <param name="v" type="const GLbyte *"/>
+    </function>
+
+    <function name="Binormal3dEXT">
+        <param name="bx" type="GLdouble"/>
+        <param name="by" type="GLdouble"/>
+        <param name="bz" type="GLdouble"/>
+    </function>
+
+    <function name="Binormal3dvEXT">
+        <param name="v" type="const GLdouble *"/>
+    </function>
+
+    <function name="Binormal3fEXT">
+        <param name="bx" type="GLfloat"/>
+        <param name="by" type="GLfloat"/>
+        <param name="bz" type="GLfloat"/>
+    </function>
+
+    <function name="Binormal3fvEXT">
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="Binormal3iEXT">
+        <param name="bx" type="GLint"/>
+        <param name="by" type="GLint"/>
+        <param name="bz" type="GLint"/>
+    </function>
+
+    <function name="Binormal3ivEXT">
+        <param name="v" type="const GLint *"/>
+    </function>
+
+    <function name="Binormal3sEXT">
+        <param name="bx" type="GLshort"/>
+        <param name="by" type="GLshort"/>
+        <param name="bz" type="GLshort"/>
+    </function>
+
+    <function name="Binormal3svEXT">
+        <param name="v" type="const GLshort *"/>
+    </function>
+
+    <function name="TangentPointerEXT">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+
+    <function name="BinormalPointerEXT">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+</category>
+
+<!-- Extension number 157 is not listed in the extension registry. -->
+
+<category name="GL_EXT_texture_env_combine" number="158">
+    <enum name="COMBINE_EXT"                              value="0x8570"/>
+    <enum name="COMBINE_RGB_EXT"               count="1"  value="0x8571"/>
+    <enum name="COMBINE_ALPHA_EXT"             count="1"  value="0x8572"/>
+    <enum name="RGB_SCALE_EXT"                 count="1"  value="0x8573"/>
+    <enum name="ADD_SIGNED_EXT"                           value="0x8574"/>
+    <enum name="INTERPOLATE_EXT"                          value="0x8575"/>
+    <enum name="CONSTANT_EXT"                             value="0x8576"/>
+    <enum name="PRIMARY_COLOR_EXT"                        value="0x8577"/>
+    <enum name="PREVIOUS_EXT"                             value="0x8578"/>
+    <enum name="SOURCE0_RGB_EXT"               count="1"  value="0x8580"/>
+    <enum name="SOURCE1_RGB_EXT"               count="1"  value="0x8581"/>
+    <enum name="SOURCE2_RGB_EXT"               count="1"  value="0x8582"/>
+    <enum name="SOURCE0_ALPHA_EXT"             count="1"  value="0x8588"/>
+    <enum name="SOURCE1_ALPHA_EXT"             count="1"  value="0x8589"/>
+    <enum name="SOURCE2_ALPHA_EXT"             count="1"  value="0x858A"/>
+    <enum name="OPERAND0_RGB_EXT"              count="1"  value="0x8590"/>
+    <enum name="OPERAND1_RGB_EXT"              count="1"  value="0x8591"/>
+    <enum name="OPERAND2_RGB_EXT"              count="1"  value="0x8592"/>
+    <enum name="OPERAND0_ALPHA_EXT"            count="1"  value="0x8598"/>
+    <enum name="OPERAND1_ALPHA_EXT"            count="1"  value="0x8599"/>
+    <enum name="OPERAND2_ALPHA_EXT"            count="1"  value="0x859A"/>
+</category>
+
+<category name="GL_SGIX_pixel_texture" number="160">
+    <function name="PixelTexGenSGIX" offset="assign" static_dispatch="false">
+        <param name="mode" type="GLenum"/>
+        <glx rop="2059" ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 161 is not listed in the extension registry. -->
+<!-- Extension number 162 is not listed in the extension registry. -->
+
+<category name="GL_SUNX_constant_data" number="163">
+    <function name="FinishTextureSUNX">
+    </function>
+</category>
+
+<category name="GL_SUN_global_alpha" number="164">
+    <function name="GlobalAlphaFactorbSUN">
+        <param name="factor" type="GLbyte"/>
+    </function>
+
+    <function name="GlobalAlphaFactorsSUN">
+        <param name="factor" type="GLshort"/>
+    </function>
+
+    <function name="GlobalAlphaFactoriSUN">
+        <param name="factor" type="GLint"/>
+    </function>
+
+    <function name="GlobalAlphaFactorfSUN">
+        <param name="factor" type="GLfloat"/>
+    </function>
+
+    <function name="GlobalAlphaFactordSUN">
+        <param name="factor" type="GLdouble"/>
+    </function>
+
+    <function name="GlobalAlphaFactorubSUN">
+        <param name="factor" type="GLubyte"/>
+    </function>
+
+    <function name="GlobalAlphaFactorusSUN">
+        <param name="factor" type="GLushort"/>
+    </function>
+
+    <function name="GlobalAlphaFactoruiSUN">
+        <param name="factor" type="GLuint"/>
+    </function>
+</category>
+
+<category name="GL_SUN_triangle_list" number="165">
+    <function name="ReplacementCodeuiSUN">
+        <param name="code" type="GLuint"/>
+    </function>
+
+    <function name="ReplacementCodeusSUN">
+        <param name="code" type="GLushort"/>
+    </function>
+
+    <function name="ReplacementCodeubSUN">
+        <param name="code" type="GLubyte"/>
+    </function>
+
+    <function name="ReplacementCodeuivSUN">
+        <param name="code" type="const GLuint *"/>
+    </function>
+
+    <function name="ReplacementCodeusvSUN">
+        <param name="code" type="const GLushort *"/>
+    </function>
+
+    <function name="ReplacementCodeubvSUN">
+        <param name="code" type="const GLubyte *"/>
+    </function>
+
+    <function name="ReplacementCodePointerSUN">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+    </function>
+</category>
+
+<category name="GL_SUN_vertex" number="166">
+    <function name="Color4ubVertex2fSUN">
+        <param name="r" type="GLubyte"/>
+        <param name="g" type="GLubyte"/>
+        <param name="b" type="GLubyte"/>
+        <param name="a" type="GLubyte"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="Color4ubVertex2fvSUN">
+        <param name="c" type="const GLubyte *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="Color4ubVertex3fSUN">
+        <param name="r" type="GLubyte"/>
+        <param name="g" type="GLubyte"/>
+        <param name="b" type="GLubyte"/>
+        <param name="a" type="GLubyte"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="Color4ubVertex3fvSUN">
+        <param name="c" type="const GLubyte *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="Color3fVertex3fSUN">
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="Color3fVertex3fvSUN">
+        <param name="c" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="Normal3fVertex3fSUN">
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="Normal3fVertex3fvSUN">
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="Color4fNormal3fVertex3fSUN">
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="a" type="GLfloat"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="Color4fNormal3fVertex3fvSUN">
+        <param name="c" type="const GLfloat *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="TexCoord2fVertex3fSUN">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord2fVertex3fvSUN">
+        <param name="tc" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="TexCoord4fVertex4fSUN">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="p" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord4fVertex4fvSUN">
+        <param name="tc" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="TexCoord2fColor4ubVertex3fSUN">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLubyte"/>
+        <param name="g" type="GLubyte"/>
+        <param name="b" type="GLubyte"/>
+        <param name="a" type="GLubyte"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord2fColor4ubVertex3fvSUN">
+        <param name="tc" type="const GLfloat *"/>
+        <param name="c" type="const GLubyte *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="TexCoord2fColor3fVertex3fSUN">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord2fColor3fVertex3fvSUN">
+        <param name="tc" type="const GLfloat *"/>
+        <param name="c" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="TexCoord2fNormal3fVertex3fSUN">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord2fNormal3fVertex3fvSUN">
+        <param name="tc" type="const GLfloat *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="TexCoord2fColor4fNormal3fVertex3fSUN">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="a" type="GLfloat"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord2fColor4fNormal3fVertex3fvSUN">
+        <param name="tc" type="const GLfloat *"/>
+        <param name="c" type="const GLfloat *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="TexCoord4fColor4fNormal3fVertex4fSUN">
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="p" type="GLfloat"/>
+        <param name="q" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="a" type="GLfloat"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="TexCoord4fColor4fNormal3fVertex4fvSUN">
+        <param name="tc" type="const GLfloat *"/>
+        <param name="c" type="const GLfloat *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiColor4ubVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="r" type="GLubyte"/>
+        <param name="g" type="GLubyte"/>
+        <param name="b" type="GLubyte"/>
+        <param name="a" type="GLubyte"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiColor4ubVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="c" type="const GLubyte *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiColor3fVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiColor3fVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="c" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiNormal3fVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiNormal3fVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiColor4fNormal3fVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="a" type="GLfloat"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiColor4fNormal3fVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="c" type="const GLfloat *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiTexCoord2fVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiTexCoord2fVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="tc" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="tc" type="const GLfloat *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+
+    <function name="ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN">
+        <param name="rc" type="GLuint"/>
+        <param name="s" type="GLfloat"/>
+        <param name="t" type="GLfloat"/>
+        <param name="r" type="GLfloat"/>
+        <param name="g" type="GLfloat"/>
+        <param name="b" type="GLfloat"/>
+        <param name="a" type="GLfloat"/>
+        <param name="nx" type="GLfloat"/>
+        <param name="ny" type="GLfloat"/>
+        <param name="nz" type="GLfloat"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN">
+        <param name="rc" type="const GLuint *"/>
+        <param name="tc" type="const GLfloat *"/>
+        <param name="c" type="const GLfloat *"/>
+        <param name="n" type="const GLfloat *"/>
+        <param name="v" type="const GLfloat *"/>
+    </function>
+</category>
+
+<!-- Extension number 167 is a WGL extension. -->
+<!-- Extension number 168 is a WGL extension. -->
+<!-- Extension number 169 is a WGL extension. -->
+<!-- Extension number 170 is a WGL extension. -->
+<!-- Extension number 171 is a WGL extension. -->
+<!-- Extension number 172 is a WGL extension. -->
+
+<category name="GL_EXT_blend_func_separate" number="173">
+    <function name="BlendFuncSeparateEXT" offset="assign">
+        <param name="sfactorRGB" type="GLenum"/>
+        <param name="dfactorRGB" type="GLenum"/>
+        <param name="sfactorAlpha" type="GLenum"/>
+        <param name="dfactorAlpha" type="GLenum"/>
+        <glx rop="4134"/>
+    </function>
+</category>
+
+<category name="GL_EXT_stencil_wrap" number="176">
+    <enum name="INCR_WRAP_EXT"                            value="0x8507"/>
+    <enum name="DECR_WRAP_EXT"                            value="0x8508"/>
+</category>
+
+<!-- Extension number 177 is a WGL extension. -->
+
+<category name="GL_NV_texgen_reflection" number="179">
+    <enum name="NORMAL_MAP_NV"                            value="0x8511"/>
+    <enum name="REFLECTION_MAP_NV"                        value="0x8512"/>
+</category>
+
+<!-- Extension number 180 is not listed in the extension registry. -->
+
+<category name="GL_SUN_convolution_border_modes" number="182">
+    <enum name="WRAP_BORDER_SUN"                          value="0x81D4"/>
+</category>
+
+<!-- Extension number 183 is a GLX extension. -->
+<!-- Extension number 184 is not listed in the extension registry. -->
+
+<category name="GL_EXT_texture_env_add" number="185">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_EXT_texture_lod_bias" number="186">
+    <enum name="TEXTURE_LOD_BIAS_EXT"          count="1"  value="0x8501">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_EXT_texture_filter_anisotropic" number="187">
+    <enum name="TEXTURE_MAX_ANISOTROPY_EXT"    count="1"  value="0x84FE">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="MAX_TEXTURE_MAX_ANISOTROPY_EXT" count="1" value="0x84FF">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_EXT_vertex_weighting" number="188">
+    <function name="VertexWeightfEXT" vectorequiv="VertexWeightfvEXT">
+        <param name="weight" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="VertexWeightfvEXT">
+        <param name="weight" type="const GLfloat *" count="1"/>
+        <glx rop="4135" ignore="true"/>
+    </function>
+
+    <function name="VertexWeightPointerEXT">
+        <param name="size" type="GLsizei"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_NV_light_max_exponent" number="189">
+    <enum name="MAX_SHININESS_NV"              count="1"  value="0x8504">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="MAX_SPOT_EXPONENT_NV"          count="1"  value="0x8505">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_NV_vertex_array_range" number="190">
+    <function name="FlushVertexArrayRangeNV" offset="assign">
+        <glx ignore="true"/>
+    </function>
+
+    <function name="VertexArrayRangeNV" offset="assign">
+        <param name="length" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_NV_register_combiners" number="191">
+    <function name="CombinerParameterfvNV" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *" variable_param="pname"/>
+        <glx rop="4137" ignore="true"/>
+    </function>
+
+    <function name="CombinerParameterfNV" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+        <glx rop="4136" ignore="true"/>
+    </function>
+
+    <function name="CombinerParameterivNV" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="4139" ignore="true"/>
+    </function>
+
+    <function name="CombinerParameteriNV" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="4138" ignore="true"/>
+    </function>
+
+    <function name="CombinerInputNV" offset="assign">
+        <param name="stage" type="GLenum"/>
+        <param name="portion" type="GLenum"/>
+        <param name="variable" type="GLenum"/>
+        <param name="input" type="GLenum"/>
+        <param name="mapping" type="GLenum"/>
+        <param name="componentUsage" type="GLenum"/>
+        <glx rop="4140" ignore="true"/>
+    </function>
+
+    <function name="CombinerOutputNV" offset="assign">
+        <param name="stage" type="GLenum"/>
+        <param name="portion" type="GLenum"/>
+        <param name="abOutput" type="GLenum"/>
+        <param name="cdOutput" type="GLenum"/>
+        <param name="sumOutput" type="GLenum"/>
+        <param name="scale" type="GLenum"/>
+        <param name="bias" type="GLenum"/>
+        <param name="abDotProduct" type="GLboolean"/>
+        <param name="cdDotProduct" type="GLboolean"/>
+        <param name="muxSum" type="GLboolean"/>
+        <glx rop="4141" ignore="true"/>
+    </function>
+
+    <function name="FinalCombinerInputNV" offset="assign">
+        <param name="variable" type="GLenum"/>
+        <param name="input" type="GLenum"/>
+        <param name="mapping" type="GLenum"/>
+        <param name="componentUsage" type="GLenum"/>
+        <glx rop="4142" ignore="true"/>
+    </function>
+
+    <function name="GetCombinerInputParameterfvNV" offset="assign">
+        <param name="stage" type="GLenum"/>
+        <param name="portion" type="GLenum"/>
+        <param name="variable" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true"/>
+        <glx vendorpriv="1270" ignore="true"/>
+    </function>
+
+    <function name="GetCombinerInputParameterivNV" offset="assign">
+        <param name="stage" type="GLenum"/>
+        <param name="portion" type="GLenum"/>
+        <param name="variable" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+        <glx vendorpriv="1271" ignore="true"/>
+    </function>
+
+    <function name="GetCombinerOutputParameterfvNV" offset="assign">
+        <param name="stage" type="GLenum"/>
+        <param name="portion" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true"/>
+        <glx vendorpriv="1272" ignore="true"/>
+    </function>
+
+    <function name="GetCombinerOutputParameterivNV" offset="assign">
+        <param name="stage" type="GLenum"/>
+        <param name="portion" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+        <glx vendorpriv="1273" ignore="true"/>
+    </function>
+
+    <function name="GetFinalCombinerInputParameterfvNV" offset="assign">
+        <param name="variable" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true"/>
+        <glx vendorpriv="1274" ignore="true"/>
+    </function>
+
+    <function name="GetFinalCombinerInputParameterivNV" offset="assign">
+        <param name="variable" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+        <glx vendorpriv="1275" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_NV_fog_distance" number="192">
+    <enum name="FOG_DISTANCE_MODE_NV"          count="1"  value="0x855A">
+        <size name="Fogfv"/>
+        <size name="Fogiv"/>
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="EYE_RADIAL_NV"                            value="0x855B"/>
+    <enum name="EYE_PLANE_ABSOLUTE_NV"                    value="0x855C"/>
+</category>
+
+<category name="GL_NV_blend_square" number="194">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_NV_texture_env_combine4" number="195">
+    <enum name="COMBINE4"                                 value="0x8503"/>
+    <enum name="SOURCE3_RGB_NV"                count="1"  value="0x8583">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="SOURCE3_ALPHA_NV"              count="1"  value="0x858B">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND3_RGB_NV"               count="1"  value="0x8593">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="OPERAND3_ALPHA_NV"             count="1"  value="0x859B">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_MESA_resize_buffers" number="196">
+    <function name="ResizeBuffersMESA" offset="assign">
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_MESA_window_pos" number="197">
+    <function name="WindowPos2dMESA" offset="assign">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos2dvMESA" offset="assign">
+        <param name="v" type="const GLdouble *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos2fMESA" offset="assign">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos2fvMESA" offset="assign">
+        <param name="v" type="const GLfloat *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos2iMESA" offset="assign">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos2ivMESA" offset="assign">
+        <param name="v" type="const GLint *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos2sMESA" offset="assign">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos2svMESA" offset="assign">
+        <param name="v" type="const GLshort *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos3dMESA" offset="assign">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos3dvMESA" offset="assign">
+        <param name="v" type="const GLdouble *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos3fMESA" offset="assign" vectorequiv="WindowPos3fvMESA">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="WindowPos3fvMESA" offset="assign">
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="230"/>
+    </function>
+
+    <function name="WindowPos3iMESA" offset="assign">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos3ivMESA" offset="assign">
+        <param name="v" type="const GLint *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos3sMESA" offset="assign">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos3svMESA" offset="assign">
+        <param name="v" type="const GLshort *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="WindowPos4dMESA" offset="assign">
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="WindowPos4dvMESA" offset="assign">
+        <param name="v" type="const GLdouble *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="WindowPos4fMESA" offset="assign">
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="WindowPos4fvMESA" offset="assign">
+        <param name="v" type="const GLfloat *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="WindowPos4iMESA" offset="assign">
+        <param name="x" type="GLint"/>
+        <param name="y" type="GLint"/>
+        <param name="z" type="GLint"/>
+        <param name="w" type="GLint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="WindowPos4ivMESA" offset="assign">
+        <param name="v" type="const GLint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="WindowPos4sMESA" offset="assign">
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="WindowPos4svMESA" offset="assign">
+        <param name="v" type="const GLshort *"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_texture_compression_s3tc" number="198">
+    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT3_EXT"            value="0x83F2"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT5_EXT"            value="0x83F3"/>
+</category>
+
+<category name="GL_IBM_multimode_draw_arrays" number="200">
+    <function name="MultiModeDrawArraysIBM" offset="assign" static_dispatch="false">
+        <param name="mode" type="const GLenum *"/>
+        <param name="first" type="const GLint *"/>
+        <param name="count" type="const GLsizei *"/>
+        <param name="primcount" type="GLsizei"/>
+        <param name="modestride" type="GLint"/>
+        <glx handcode="true" ignore="true"/>
+    </function>
+
+    <function name="MultiModeDrawElementsIBM" offset="assign" static_dispatch="false">
+        <param name="mode" type="const GLenum *"/>
+        <param name="count" type="const GLsizei *"/>
+        <param name="type" type="GLenum"/>
+        <param name="indices" type="const GLvoid * const *"/>
+        <param name="primcount" type="GLsizei"/>
+        <param name="modestride" type="GLint"/>
+        <glx handcode="true" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_IBM_vertex_array_lists" number="201">
+    <function name="ColorPointerListIBM">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLvoid **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+
+    <function name="SecondaryColorPointerListIBM">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLvoid **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+
+    <function name="EdgeFlagPointerListIBM">
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLboolean **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+
+    <function name="FogCoordPointerListIBM">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLvoid **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+
+    <function name="IndexPointerListIBM">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLvoid **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+
+    <function name="NormalPointerListIBM">
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLvoid **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+
+    <function name="TexCoordPointerListIBM">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLvoid **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+
+    <function name="VertexPointerListIBM">
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLint"/>
+        <param name="pointer" type="const GLvoid **"/>
+        <param name="ptrstride" type="GLint"/>
+    </function>
+</category>
+
+<!-- Extension number 202 is not listed in the extension registry. -->
+<!-- Extension number 203 is not listed in the extension registry. -->
+<!-- Extension number 204 is not listed in the extension registry. -->
+<!-- Extension number 205 is not listed in the extension registry. -->
+
+<category name="GL_3DFX_texture_compression_FXT1" number="206">
+    <enum name="COMPRESSED_RGB_FXT1_3DFX"                 value="0x86B0"/>
+    <enum name="COMPRESSED_RGBA_FXT1_3DFX"                value="0x86B1"/>
+</category>
+
+<category name="GL_3DFX_multisample" number="207">
+    <enum name="MULTISAMPLE_3DFX"                         value="0x86B2"/>
+    <enum name="SAMPLE_BUFFERS_3DFX"                      value="0x86B3"/>
+    <enum name="SAMPLES_3DFX"                             value="0x86B4"/>
+    <enum name="MULTISAMPLE_BIT_3DFX"                     value="0x20000000"/>
+</category>
+
+<category name="GL_3DFX_tbuffer" number="208">
+    <function name="TbufferMask3DFX">
+        <param name="mask" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_multisample" number="209">
+    <function name="SampleMaskEXT" alias="SampleMaskSGIS" static_dispatch="false">
+        <param name="value" type="GLclampf"/>
+        <param name="invert" type="GLboolean"/>
+    </function>
+
+    <function name="SamplePatternEXT" alias="SamplePatternSGIS" static_dispatch="false">
+        <param name="pattern" type="GLenum"/>
+    </function>
+</category>
+
+<!-- Extension number 211 is not listed in the extension registry. -->
+<!-- Extension number 213 is not listed in the extension registry. -->
+
+<category name="GL_SGIS_texture_color_mask" number="214">
+    <enum name="TEXTURE_COLOR_WRITEMASK_SGIS"             value="0x81EF"/>
+
+    <function name="TextureColorMaskSGIS">
+        <param name="red" type="GLboolean"/>
+        <param name="green" type="GLboolean"/>
+        <param name="blue" type="GLboolean"/>
+        <param name="alpha" type="GLboolean"/>
+        <glx rop="2082" ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 215 is a GLX extension. -->
+<!-- Extension number 216 is a GLX extension. -->
+<!-- Extension number 217 is a GLX extension. -->
+<!-- Extension number 218 is a GLX extension. -->
+<!-- Extension number 219 is not listed in the extension registry. -->
+
+<category name="GL_EXT_texture_env_dot3" number="220">
+    <enum name="DOT3_RGB_EXT"                             value="0x8740"/>
+    <enum name="DOT3_RGBA_EXT"                            value="0x8741"/>
+</category>
+
+<category name="GL_ATI_texture_mirror_once" number="221">
+    <enum name="MIRROR_CLAMP_ATI"                         value="0x8742"/>
+    <enum name="MIRROR_CLAMP_TO_EDGE_ATI"                 value="0x8743"/>
+</category>
+
+<category name="GL_NV_fence" number="222">
+    <function name="DeleteFencesNV" offset="assign" static_dispatch="false">
+        <param name="n" type="GLsizei"/>
+        <param name="fences" type="const GLuint *"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GenFencesNV" offset="assign" static_dispatch="false">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="fences" type="GLuint *" output="true" count="n"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="IsFenceNV" offset="assign" static_dispatch="false">
+        <param name="fence" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="TestFenceNV" offset="assign" static_dispatch="false">
+        <param name="fence" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="GetFenceivNV" offset="assign" static_dispatch="false">
+        <param name="fence" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="FinishFenceNV" offset="assign" static_dispatch="false">
+        <param name="fence" type="GLuint"/>
+        <glx ignore="true"/>
+    </function>
+
+    <function name="SetFenceNV" offset="assign" static_dispatch="false">
+        <param name="fence" type="GLuint"/>
+        <param name="condition" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_IBM_texture_mirrored_repeat" number="224">
+    <enum name="MIRRORED_REPEAT_IBM"                      value="0x8370"/>
+</category>
+
+<category name="GL_NV_evaluators" number="225">
+    <function name="MapControlPointsNV">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="type" type="GLenum"/>
+        <param name="ustride" type="GLsizei"/>
+        <param name="vstride" type="GLsizei"/>
+        <param name="uorder" type="GLint"/>
+        <param name="vorder" type="GLint"/>
+        <param name="packed" type="GLboolean"/>
+        <param name="points" type="const GLvoid *"/>
+    </function>
+
+    <function name="MapParameterivNV">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *"/>
+    </function>
+
+    <function name="MapParameterfvNV">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="GetMapControlPointsNV">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="type" type="GLenum"/>
+        <param name="ustride" type="GLsizei"/>
+        <param name="vstride" type="GLsizei"/>
+        <param name="packed" type="GLboolean"/>
+        <param name="points" type="GLvoid *" output="true"/>
+    </function>
+
+    <function name="GetMapParameterivNV">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="GetMapParameterfvNV">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true"/>
+    </function>
+
+    <function name="GetMapAttribParameterivNV">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true"/>
+    </function>
+
+    <function name="GetMapAttribParameterfvNV">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true"/>
+    </function>
+
+    <function name="EvalMapsNV">
+        <param name="target" type="GLenum"/>
+        <param name="mode" type="GLenum"/>
+    </function>
+</category>
+
+<category name="GL_NV_packed_depth_stencil" number="226">
+    <enum name="DEPTH_STENCIL_NV"                         value="0x84F9"/>
+    <enum name="UNSIGNED_INT_24_8_NV"                     value="0x84FA"/>
+</category>
+
+<category name="GL_NV_register_combiners2" number="227">
+    <function name="CombinerStageParameterfvNV">
+        <param name="stage" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="GetCombinerStageParameterfvNV">
+        <param name="stage" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true"/>
+    </function>
+</category>
+
+<category name="GL_NV_texture_compression_vtc" number="228">
+    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT3_EXT"            value="0x83F2"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT5_EXT"            value="0x83F3"/>
+</category>
+
+<category name="GL_NV_texture_rectangle" number="229">
+    <enum name="TEXTURE_RECTANGLE_NV"          count="1"  value="0x84F5">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_BINDING_RECTANGLE_NV"  count="1"  value="0x84F6">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="PROXY_TEXTURE_RECTANGLE_NV"               value="0x84F7"/>
+    <enum name="MAX_RECTANGLE_TEXTURE_SIZE_NV" count="1"  value="0x84F8">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_NV_vertex_program" number="233">
+    <enum name="VERTEX_PROGRAM_NV"                        value="0x8620"/>
+    <enum name="VERTEX_STATE_PROGRAM_NV"                  value="0x8621"/>
+    <enum name="ATTRIB_ARRAY_SIZE_NV"          count="1"  value="0x8623">
+        <size name="GetVertexAttribdvNV" mode="get"/>
+        <size name="GetVertexAttribfvNV" mode="get"/>
+        <size name="GetVertexAttribivNV" mode="get"/>
+    </enum>
+    <enum name="ATTRIB_ARRAY_STRIDE_NV"        count="1"  value="0x8624">
+        <size name="GetVertexAttribdvNV" mode="get"/>
+        <size name="GetVertexAttribfvNV" mode="get"/>
+        <size name="GetVertexAttribivNV" mode="get"/>
+    </enum>
+    <enum name="ATTRIB_ARRAY_TYPE_NV"          count="1"  value="0x8625">
+        <size name="GetVertexAttribdvNV" mode="get"/>
+        <size name="GetVertexAttribfvNV" mode="get"/>
+        <size name="GetVertexAttribivNV" mode="get"/>
+    </enum>
+    <enum name="CURRENT_ATTRIB_NV"             count="1"  value="0x8626">
+        <size name="GetVertexAttribdvNV" mode="get"/>
+        <size name="GetVertexAttribfvNV" mode="get"/>
+        <size name="GetVertexAttribivNV" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_LENGTH_NV"             count="1"  value="0x8627">
+        <size name="GetProgramivNV" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_STRING_NV"                        value="0x8628"/>
+    <enum name="MODELVIEW_PROJECTION_NV"                  value="0x8629"/>
+    <enum name="IDENTITY_NV"                              value="0x862A"/>
+    <enum name="INVERSE_NV"                               value="0x862B"/>
+    <enum name="TRANSPOSE_NV"                             value="0x862C"/>
+    <enum name="INVERSE_TRANSPOSE_NV"                     value="0x862D"/>
+    <enum name="MAX_TRACK_MATRIX_STACK_DEPTH_NV"          value="0x862E"/>
+    <enum name="MAX_TRACK_MATRICES_NV"                    value="0x862F"/>
+    <enum name="MATRIX0_NV"                               value="0x8630"/>
+    <enum name="MATRIX1_NV"                               value="0x8631"/>
+    <enum name="MATRIX2_NV"                               value="0x8632"/>
+    <enum name="MATRIX3_NV"                               value="0x8633"/>
+    <enum name="MATRIX4_NV"                               value="0x8634"/>
+    <enum name="MATRIX5_NV"                               value="0x8635"/>
+    <enum name="MATRIX6_NV"                               value="0x8636"/>
+    <enum name="MATRIX7_NV"                               value="0x8637"/>
+    <enum name="CURRENT_MATRIX_STACK_DEPTH_NV"            value="0x8640"/>
+    <enum name="CURRENT_MATRIX_NV"                        value="0x8641"/>
+    <enum name="VERTEX_PROGRAM_POINT_SIZE_NV"             value="0x8642"/>
+    <enum name="VERTEX_PROGRAM_TWO_SIDE_NV"               value="0x8643"/>
+    <enum name="PROGRAM_PARAMETER_NV"                     value="0x8644"/>
+    <enum name="ATTRIB_ARRAY_POINTER_NV"                  value="0x8645"/>
+    <enum name="PROGRAM_TARGET_NV"             count="1"  value="0x8646">
+        <size name="GetProgramivNV" mode="get"/>
+    </enum>
+    <enum name="PROGRAM_RESIDENT_NV"           count="1"  value="0x8647">
+        <size name="GetProgramivNV" mode="get"/>
+    </enum>
+    <enum name="TRACK_MATRIX_NV"                          value="0x8648"/>
+    <enum name="TRACK_MATRIX_TRANSFORM_NV"                value="0x8649"/>
+    <enum name="VERTEX_PROGRAM_BINDING_NV"                value="0x864A"/>
+    <enum name="PROGRAM_ERROR_POSITION_NV"                value="0x864B"/>
+    <enum name="VERTEX_ATTRIB_ARRAY0_NV"                  value="0x8650"/>
+    <enum name="VERTEX_ATTRIB_ARRAY1_NV"                  value="0x8651"/>
+    <enum name="VERTEX_ATTRIB_ARRAY2_NV"                  value="0x8652"/>
+    <enum name="VERTEX_ATTRIB_ARRAY3_NV"                  value="0x8653"/>
+    <enum name="VERTEX_ATTRIB_ARRAY4_NV"                  value="0x8654"/>
+    <enum name="VERTEX_ATTRIB_ARRAY5_NV"                  value="0x8655"/>
+    <enum name="VERTEX_ATTRIB_ARRAY6_NV"                  value="0x8656"/>
+    <enum name="VERTEX_ATTRIB_ARRAY7_NV"                  value="0x8657"/>
+    <enum name="VERTEX_ATTRIB_ARRAY8_NV"                  value="0x8658"/>
+    <enum name="VERTEX_ATTRIB_ARRAY9_NV"                  value="0x8659"/>
+    <enum name="VERTEX_ATTRIB_ARRAY10_NV"                 value="0x865A"/>
+    <enum name="VERTEX_ATTRIB_ARRAY11_NV"                 value="0x865B"/>
+    <enum name="VERTEX_ATTRIB_ARRAY12_NV"                 value="0x865C"/>
+    <enum name="VERTEX_ATTRIB_ARRAY13_NV"                 value="0x865D"/>
+    <enum name="VERTEX_ATTRIB_ARRAY14_NV"                 value="0x865E"/>
+    <enum name="VERTEX_ATTRIB_ARRAY15_NV"                 value="0x865F"/>
+    <enum name="MAP1_VERTEX_ATTRIB0_4_NV"                 value="0x8660"/>
+    <enum name="MAP1_VERTEX_ATTRIB1_4_NV"                 value="0x8661"/>
+    <enum name="MAP1_VERTEX_ATTRIB2_4_NV"                 value="0x8662"/>
+    <enum name="MAP1_VERTEX_ATTRIB3_4_NV"                 value="0x8663"/>
+    <enum name="MAP1_VERTEX_ATTRIB4_4_NV"                 value="0x8664"/>
+    <enum name="MAP1_VERTEX_ATTRIB5_4_NV"                 value="0x8665"/>
+    <enum name="MAP1_VERTEX_ATTRIB6_4_NV"                 value="0x8666"/>
+    <enum name="MAP1_VERTEX_ATTRIB7_4_NV"                 value="0x8667"/>
+    <enum name="MAP1_VERTEX_ATTRIB8_4_NV"                 value="0x8668"/>
+    <enum name="MAP1_VERTEX_ATTRIB9_4_NV"                 value="0x8669"/>
+    <enum name="MAP1_VERTEX_ATTRIB10_4_NV"                value="0x866A"/>
+    <enum name="MAP1_VERTEX_ATTRIB11_4_NV"                value="0x866B"/>
+    <enum name="MAP1_VERTEX_ATTRIB12_4_NV"                value="0x866C"/>
+    <enum name="MAP1_VERTEX_ATTRIB13_4_NV"                value="0x866D"/>
+    <enum name="MAP1_VERTEX_ATTRIB14_4_NV"                value="0x866E"/>
+    <enum name="MAP1_VERTEX_ATTRIB15_4_NV"                value="0x866F"/>
+    <enum name="MAP2_VERTEX_ATTRIB0_4_NV"                 value="0x8670"/>
+    <enum name="MAP2_VERTEX_ATTRIB1_4_NV"                 value="0x8671"/>
+    <enum name="MAP2_VERTEX_ATTRIB2_4_NV"                 value="0x8672"/>
+    <enum name="MAP2_VERTEX_ATTRIB3_4_NV"                 value="0x8673"/>
+    <enum name="MAP2_VERTEX_ATTRIB4_4_NV"                 value="0x8674"/>
+    <enum name="MAP2_VERTEX_ATTRIB5_4_NV"                 value="0x8675"/>
+    <enum name="MAP2_VERTEX_ATTRIB6_4_NV"                 value="0x8676"/>
+    <enum name="MAP2_VERTEX_ATTRIB7_4_NV"                 value="0x8677"/>
+    <enum name="MAP2_VERTEX_ATTRIB8_4_NV"                 value="0x8678"/>
+    <enum name="MAP2_VERTEX_ATTRIB9_4_NV"                 value="0x8679"/>
+    <enum name="MAP2_VERTEX_ATTRIB10_4_NV"                value="0x867A"/>
+    <enum name="MAP2_VERTEX_ATTRIB11_4_NV"                value="0x867B"/>
+    <enum name="MAP2_VERTEX_ATTRIB12_4_NV"                value="0x867C"/>
+    <enum name="MAP2_VERTEX_ATTRIB13_4_NV"                value="0x867D"/>
+    <enum name="MAP2_VERTEX_ATTRIB14_4_NV"                value="0x867E"/>
+    <enum name="MAP2_VERTEX_ATTRIB15_4_NV"                value="0x867F"/>
+
+    <function name="AreProgramsResidentNV" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="ids" type="const GLuint *" count="n"/>
+        <param name="residences" type="GLboolean *" output="true" count="n"/>
+        <return type="GLboolean"/>
+        <glx vendorpriv="1293"/>
+    </function>
+
+    <function name="BindProgramNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="program" type="GLuint"/>
+        <glx rop="4180"/>
+    </function>
+
+    <function name="DeleteProgramsNV" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="programs" type="const GLuint *" count="n"/>
+        <glx vendorpriv="1294"/>
+    </function>
+
+    <function name="ExecuteProgramNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="id" type="GLuint"/>
+        <param name="params" type="const GLfloat *" count="4"/>
+        <glx rop="4181"/>
+    </function>
+
+    <function name="GenProgramsNV" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="programs" type="GLuint *" output="true" count="n"/>
+        <glx vendorpriv="1295" always_array="true"/>
+     </function>
+
+    <!-- This isn't 100% correct.  Currently, the only valid value of pname
+         is GL_PROGRAM_PARAMETER_NV, and the count for that pname is always
+         4.  This is why the pname parameter was removed in the ARB version
+         of these functions.
+      -->
+
+    <function name="GetProgramParameterdvNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" count="4"/>
+        <glx vendorpriv="1297"/>
+    </function>
+
+    <function name="GetProgramParameterfvNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" count="4"/>
+        <glx vendorpriv="1296"/>
+    </function>
+
+    <function name="GetProgramivNV" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="1298"/>
+    </function>
+
+    <function name="GetProgramStringNV" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="program" type="GLubyte *" output="true"/>
+        <glx vendorpriv="1299" handcode="server" always_array="true"/>
+    </function>
+
+    <function name="GetTrackMatrixivNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="address" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" count="1"/>
+        <glx vendorpriv="1300"/>
+    </function>
+
+    <function name="GetVertexAttribdvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
+        <glx vendorpriv="1301"/>
+    </function>
+
+    <function name="GetVertexAttribfvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
+        <glx vendorpriv="1302"/>
+    </function>
+
+    <function name="GetVertexAttribivNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint *" output="true" variable_param="pname"/>
+        <glx vendorpriv="1303"/>
+    </function>
+
+    <function name="GetVertexAttribPointervNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="pointer" type="GLvoid **" output="true"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="IsProgramNV" offset="assign">
+        <param name="program" type="GLuint"/>
+        <return type="GLboolean"/>
+        <glx vendorpriv="1304"/>
+    </function>
+
+    <function name="LoadProgramNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="id" type="GLuint"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="program" type="const GLubyte *" count="len"/>
+        <glx rop="4183"/>
+    </function>
+
+    <function name="ProgramParameter4dNV" alias="ProgramEnvParameter4dARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="ProgramParameter4dvNV" alias="ProgramEnvParameter4dvARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="const GLdouble *"/>
+    </function>
+
+    <function name="ProgramParameter4fNV" alias="ProgramEnvParameter4fARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="ProgramParameter4fvNV" alias="ProgramEnvParameter4fvARB">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="ProgramParameters4dvNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="num" type="GLuint" counter="true"/>
+        <param name="params" type="const GLdouble *" count="num" count_scale="4"/>
+        <glx rop="4187"/>
+    </function>
+
+    <function name="ProgramParameters4fvNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="num" type="GLuint" counter="true"/>
+        <param name="params" type="const GLfloat *" count="num" count_scale="4"/>
+        <glx rop="4186"/>
+    </function>
+
+    <function name="RequestResidentProgramsNV" offset="assign">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="ids" type="const GLuint *" count="n"/>
+        <glx rop="4182"/>
+    </function>
+
+    <function name="TrackMatrixNV" offset="assign">
+        <param name="target" type="GLenum"/>
+        <param name="address" type="GLuint"/>
+        <param name="matrix" type="GLenum"/>
+        <param name="transform" type="GLenum"/>
+        <glx rop="4188"/>
+    </function>
+
+    <function name="VertexAttribPointerNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="size" type="GLint"/>
+        <param name="type" type="GLenum"/>
+        <param name="stride" type="GLsizei"/>
+        <param name="pointer" type="const GLvoid *"/>
+        <glx handcode="true"/>
+    </function>
+
+    <function name="VertexAttrib1sNV" offset="assign" vectorequiv="VertexAttrib1svNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib1svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="1"/>
+        <glx rop="4265"/>
+    </function>
+
+    <function name="VertexAttrib2sNV" offset="assign" vectorequiv="VertexAttrib2svNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib2svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="2"/>
+        <glx rop="4266"/>
+    </function>
+
+    <function name="VertexAttrib3sNV" offset="assign" vectorequiv="VertexAttrib3svNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib3svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="3"/>
+        <glx rop="4267"/>
+    </function>
+
+    <function name="VertexAttrib4sNV" offset="assign" vectorequiv="VertexAttrib4svNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLshort"/>
+        <param name="y" type="GLshort"/>
+        <param name="z" type="GLshort"/>
+        <param name="w" type="GLshort"/>
+    </function>
+
+    <function name="VertexAttrib4svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLshort *" count="4"/>
+        <glx rop="4268"/>
+    </function>
+
+    <function name="VertexAttrib1fNV" offset="assign" vectorequiv="VertexAttrib1fvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib1fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="1"/>
+        <glx rop="4269"/>
+    </function>
+
+    <function name="VertexAttrib2fNV" offset="assign" vectorequiv="VertexAttrib2fvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib2fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="2"/>
+        <glx rop="4270"/>
+    </function>
+
+    <function name="VertexAttrib3fNV" offset="assign" vectorequiv="VertexAttrib3fvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib3fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="3"/>
+        <glx rop="4271"/>
+    </function>
+
+    <function name="VertexAttrib4fNV" offset="assign" vectorequiv="VertexAttrib4fvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="VertexAttrib4fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="4272"/>
+    </function>
+
+    <function name="VertexAttrib1dNV" offset="assign" vectorequiv="VertexAttrib1dvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib1dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="1"/>
+        <glx rop="4273" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib2dNV" offset="assign" vectorequiv="VertexAttrib2dvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib2dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="2"/>
+        <glx rop="4274" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib3dNV" offset="assign" vectorequiv="VertexAttrib3dvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib3dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="3"/>
+        <glx rop="4275" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib4dNV" offset="assign" vectorequiv="VertexAttrib4dvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="VertexAttrib4dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="4276" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttrib4ubNV" offset="assign" vectorequiv="VertexAttrib4ubvNV">
+        <param name="index" type="GLuint"/>
+        <param name="x" type="GLubyte"/>
+        <param name="y" type="GLubyte"/>
+        <param name="z" type="GLubyte"/>
+        <param name="w" type="GLubyte"/>
+    </function>
+
+    <function name="VertexAttrib4ubvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="v" type="const GLubyte *" count="4"/>
+        <glx rop="4277"/>
+    </function>
+
+    <function name="VertexAttribs1svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLshort *" count="n"/>
+        <glx rop="4202"/>
+    </function>
+
+    <function name="VertexAttribs2svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLshort *" count="n" count_scale="2"/>
+        <glx rop="4203"/>
+    </function>
+
+    <function name="VertexAttribs3svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLshort *" count="n" count_scale="3"/>
+        <glx rop="4204"/>
+    </function>
+
+    <function name="VertexAttribs4svNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLshort *" count="n" count_scale="4"/>
+        <glx rop="4205"/>
+    </function>
+
+    <function name="VertexAttribs1fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLfloat *" count="n"/>
+        <glx rop="4206"/>
+    </function>
+
+    <function name="VertexAttribs2fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLfloat *" count="n" count_scale="2"/>
+        <glx rop="4207"/>
+    </function>
+
+    <function name="VertexAttribs3fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLfloat *" count="n" count_scale="3"/>
+        <glx rop="4208"/>
+    </function>
+
+    <function name="VertexAttribs4fvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLfloat *" count="n" count_scale="4"/>
+        <glx rop="4209"/>
+    </function>
+
+    <function name="VertexAttribs1dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLdouble *" count="n"/>
+        <glx rop="4210" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttribs2dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLdouble *" count="n" count_scale="2"/>
+        <glx rop="4211" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttribs3dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLdouble *" count="n" count_scale="3"/>
+        <glx rop="4212" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttribs4dvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLdouble *" count="n" count_scale="4"/>
+        <glx rop="4213" doubles_in_order="true"/>
+    </function>
+
+    <function name="VertexAttribs4ubvNV" offset="assign">
+        <param name="index" type="GLuint"/>
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="v" type="const GLubyte *" count="n" count_scale="4"/>
+        <glx rop="4214"/>
+    </function>
+</category>
+
+<!-- Extension number 234 is a GLX extension. -->
+
+<category name="GL_SGIX_texture_coordinate_clamp" number="235">
+    <enum name="TEXTURE_MAX_CLAMP_S_SGIX"      count="1"  value="0x8369">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MAX_CLAMP_T_SGIX"      count="1"  value="0x836A">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_MAX_CLAMP_R_SGIX"      count="1"  value="0x836B">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<!-- Extension number 236 is not listed in the extension registry. -->
+<!-- Extension number 237 is a GLX extension. -->
+<!-- Extension number 238 is a GLX extension. -->
+<!-- Extension number 242 is a WGL extension. -->
+
+<category name="GL_NV_copy_depth_to_color" number="243">
+    <enum name="DEPTH_STENCIL_TO_RGBA_NV"                 value="0x886E"/>
+    <enum name="DEPTH_STENCIL_TO_BGRA_NV"                 value="0x886F"/>
+</category>
+
+<category name="GL_ATI_envmap_bumpmap" number="244">
+    <enum name="BUMP_ROT_MATRIX_ATI"          count="4"   value="0x8775">
+        <size name="TexBumpParameterfv"/>
+        <size name="TexBumpParameteriv"/>
+        <size name="GetTexBumpParameterfv" mode="get"/>
+        <size name="GetTexBumpParameteriv" mode="get"/>
+    </enum>
+    <enum name="BUMP_ROT_MATRIX_SIZE_ATI"     count="1"   value="0x8776">
+        <size name="GetTexBumpParameterfv" mode="get"/>
+        <size name="GetTexBumpParameteriv" mode="get"/>
+    </enum>
+    <enum name="BUMP_NUM_TEX_UNITS_ATI"       count="1"   value="0x8777">
+        <size name="GetTexBumpParameterfv" mode="get"/>
+        <size name="GetTexBumpParameteriv" mode="get"/>
+    </enum>
+    <enum name="BUMP_TEX_UNITS_ATI"           count="-1"  value="0x8778">
+        <size name="GetTexBumpParameterfv" mode="get"/>
+        <size name="GetTexBumpParameteriv" mode="get"/>
+    </enum>
+    <enum name="DUDV_ATI"                                 value="0x8779"/>
+    <enum name="DU8DV8_ATI"                               value="0x877A"/>
+    <enum name="BUMP_ENVMAP_ATI"                          value="0x877B"/>
+    <enum name="BUMP_TARGET_ATI"              count="1"   value="0x877C">
+        <size name="TexEnviv"/>
+        <size name="TexEnvfv"/>
+        <size name="GetTexEnviv" mode="get"/>
+        <size name="GetTexEnvfv" mode="get"/>
+    </enum>
+    <function name="TexBumpParameterfvATI" offset="assign">
+      <param name="pname" type="GLenum"/>
+      <param name="param" type="const GLfloat *" variable_param="pname"/>
+      <glx ignore="true"/>
+    </function>
+    <function name="TexBumpParameterivATI" offset="assign">
+      <param name="pname" type="GLenum"/>
+      <param name="param" type="const GLint *" variable_param="pname"/>
+      <glx ignore="true"/>
+    </function>
+    <function name="GetTexBumpParameterfvATI" offset="assign">
+      <param name="pname" type="GLenum"/>
+      <param name="param" type="GLfloat *" variable_param="pname"/>
+      <glx ignore="true"/>
+    </function>
+    <function name="GetTexBumpParameterivATI" offset="assign">
+      <param name="pname" type="GLenum"/>
+      <param name="param" type="GLint *" variable_param="pname"/>
+      <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_ATI_fragment_shader" number="245">
+    <function name="GenFragmentShadersATI" offset="assign">
+      <return type="GLuint"/>
+      <param name="range" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+    
+    <function name="BindFragmentShaderATI" offset="assign">
+      <param name="id" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="DeleteFragmentShaderATI" offset="assign">
+      <param name="id" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="BeginFragmentShaderATI" offset="assign">
+      <glx ignore="true"/>
+    </function>
+
+    <function name="EndFragmentShaderATI" offset="assign">
+      <glx ignore="true"/>
+    </function>
+    
+    <function name="PassTexCoordATI" offset="assign">
+      <param name="dst" type="GLuint"/>
+      <param name="coord" type="GLuint"/>
+      <param name="swizzle" type="GLenum"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="SampleMapATI" offset="assign">
+      <param name="dst" type="GLuint"/>
+      <param name="interp" type="GLuint"/>
+      <param name="swizzle" type="GLenum"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="ColorFragmentOp1ATI" offset="assign">
+      <param name="op" type="GLenum"/>
+      <param name="dst" type="GLuint"/>
+      <param name="dstMask" type="GLuint"/>
+      <param name="dstMod" type="GLuint"/>
+      <param name="arg1" type="GLuint"/>
+      <param name="arg1Rep" type="GLuint"/>
+      <param name="arg1Mod" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="ColorFragmentOp2ATI" offset="assign">
+      <param name="op" type="GLenum"/>
+      <param name="dst" type="GLuint"/>
+      <param name="dstMask" type="GLuint"/>
+      <param name="dstMod" type="GLuint"/>
+      <param name="arg1" type="GLuint"/>
+      <param name="arg1Rep" type="GLuint"/>
+      <param name="arg1Mod" type="GLuint"/>
+      <param name="arg2" type="GLuint"/>
+      <param name="arg2Rep" type="GLuint"/>
+      <param name="arg2Mod" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="ColorFragmentOp3ATI" offset="assign">
+      <param name="op" type="GLenum"/>
+      <param name="dst" type="GLuint"/>
+      <param name="dstMask" type="GLuint"/>
+      <param name="dstMod" type="GLuint"/>
+      <param name="arg1" type="GLuint"/>
+      <param name="arg1Rep" type="GLuint"/>
+      <param name="arg1Mod" type="GLuint"/>
+      <param name="arg2" type="GLuint"/>
+      <param name="arg2Rep" type="GLuint"/>
+      <param name="arg2Mod" type="GLuint"/>
+      <param name="arg3" type="GLuint"/>
+      <param name="arg3Rep" type="GLuint"/>
+      <param name="arg3Mod" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="AlphaFragmentOp1ATI" offset="assign">
+      <param name="op" type="GLenum"/>
+      <param name="dst" type="GLuint"/>
+      <param name="dstMod" type="GLuint"/>
+      <param name="arg1" type="GLuint"/>
+      <param name="arg1Rep" type="GLuint"/>
+      <param name="arg1Mod" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="AlphaFragmentOp2ATI" offset="assign">
+      <param name="op" type="GLenum"/>
+      <param name="dst" type="GLuint"/>
+      <param name="dstMod" type="GLuint"/>
+      <param name="arg1" type="GLuint"/>
+      <param name="arg1Rep" type="GLuint"/>
+      <param name="arg1Mod" type="GLuint"/>
+      <param name="arg2" type="GLuint"/>
+      <param name="arg2Rep" type="GLuint"/>
+      <param name="arg2Mod" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="AlphaFragmentOp3ATI" offset="assign">
+      <param name="op" type="GLenum"/>
+      <param name="dst" type="GLuint"/>
+      <param name="dstMod" type="GLuint"/>
+      <param name="arg1" type="GLuint"/>
+      <param name="arg1Rep" type="GLuint"/>
+      <param name="arg1Mod" type="GLuint"/>
+      <param name="arg2" type="GLuint"/>
+      <param name="arg2Rep" type="GLuint"/>
+      <param name="arg2Mod" type="GLuint"/>
+      <param name="arg3" type="GLuint"/>
+      <param name="arg3Rep" type="GLuint"/>
+      <param name="arg3Mod" type="GLuint"/>
+      <glx ignore="true"/>
+    </function>
+
+    <function name="SetFragmentShaderConstantATI" offset="assign">
+      <param name="dst" type="GLuint"/>
+      <param name="value" type="const GLfloat *"/>
+      <glx ignore="true"/>
+    </function>
+</category>
+
+<!-- Extension number 250 is a WGL extension. -->
+<!-- Extension number 251 is a WGL extension. -->
+<!-- Extension number 252 is a WGL extension. -->
+<!-- Extension number 253 is a WGL extension. -->
+<!-- Extension number 254 is a WGL extension. -->
+<!-- Extension number 255 is a WGL extension. -->
+
+<category name="GL_SUN_mesh_array" number="257">
+    <enum name="QUAD_MESH_SUN"                            value="0x8614"/>
+    <enum name="TRIANGLE_MESH_SUN"                        value="0x8615"/>
+
+    <function name="DrawMeshArraysSUN">
+        <param name="mode" type="GLenum"/>
+        <param name="first" type="GLint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="width" type="GLsizei"/>
+    </function>
+</category>
+
+<category name="GL_SUN_slice_accum" number="258">
+    <enum name="SLICE_ACCUM_SUN"                          value="0x85CC"/>
+</category>
+
+<category name="GL_NV_multisample_filter_hint" number="259">
+    <enum name="MULTISAMPLE_FILTER_HINT_NV"    count="1"  value="0x8534">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_NV_depth_clamp" number="260">
+    <enum name="DEPTH_CLAMP_NV"                count="1"  value="0x864F">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_NV_point_sprite" number="262">
+    <!-- These existing enums can be passed as a parameter to the function
+         added for this extension. -->
+
+    <enum name="POINT_SIZE_MIN_EXT"            count="1"  value="0x8126">
+        <size name="PointParameterivNV"/>
+    </enum>
+    <enum name="POINT_SIZE_MAX_EXT"            count="1"  value="0x8127">
+        <size name="PointParameterivNV"/>
+    </enum>
+    <enum name="POINT_FADE_THRESHOLD_SIZE_EXT" count="1"  value="0x8128">
+        <size name="PointParameterivNV"/>
+    </enum>
+    <enum name="POINT_DISTANCE_ATTENUATION_EXT" count="3" value="0x8129">
+        <size name="PointParameterivNV"/>
+    </enum>
+
+    <enum name="POINT_SPRITE_NV"               count="1"  value="0x8861">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="COORD_REPLACE_NV"              count="1"  value="0x8862">
+        <size name="TexEnvfv"/>
+        <size name="TexEnviv"/>
+        <size name="GetTexEnvfv" mode="get"/>
+        <size name="GetTexEnviv" mode="get"/>
+    </enum>
+    <enum name="POINT_SPRITE_R_MODE_NV"        count="1"  value="0x8863">
+        <size name="PointParameterfvEXT"/>
+        <size name="PointParameterivNV"/>
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="PointParameteriNV" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+        <glx rop="4221"/>
+    </function>
+
+    <function name="PointParameterivNV" offset="assign">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLint *" variable_param="pname"/>
+        <glx rop="4222"/>
+    </function>
+</category>
+
+<!-- Extension number 263 is a WGL extension. -->
+<!-- Extension number 264 is a WGL extension. -->
+
+<category name="GL_EXT_shadow_funcs" number="267">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_EXT_stencil_two_side" number="268">
+    <enum name="STENCIL_TEST_TWO_SIDE_EXT"     count="1"  value="0x8910">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="ACTIVE_STENCIL_FACE_EXT"       count="1"  value="0x8911">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="ActiveStencilFaceEXT" offset="assign" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <glx rop="4220"/>
+    </function>
+</category>
+
+<xi:include href="APPLE_object_purgeable.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="APPLE_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<category name="GL_APPLE_ycbcr_422" number="275">
+    <enum name="YCBCR_422_APPLE"                          value="0x85B9"/>
+    <enum name="UNSIGNED_SHORT_8_8_APPLE"                 value="0x85BA"/>
+    <enum name="UNSIGNED_SHORT_8_8_REV_APPLE"             value="0x85BB"/>
+</category>
+
+<category name="GL_S3_s3tc" number="276">
+    <enum name="RGB_S3TC"                                 value="0x83A0"/>
+    <enum name="RGB4_S3TC"                                value="0x83A1"/>
+    <enum name="RGBA_S3TC"                                value="0x83A2"/>
+    <enum name="RGBA4_S3TC"                               value="0x83A3"/>
+    <enum name="RGBA_DXT5_S3TC"                           value="0x83A4"/>
+    <enum name="RGBA4_DXT5_S3TC"                          value="0x83A5"/>
+</category>
+
+<category name="GL_ATI_draw_buffers" number="277">
+    <enum name="MAX_DRAW_BUFFERS_ATI"          count="1"  value="0x8824">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER0_ATI"              count="1"  value="0x8825">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER1_ATI"              count="1"  value="0x8826">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER2_ATI"              count="1"  value="0x8827">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER3_ATI"              count="1"  value="0x8828">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER4_ATI"              count="1"  value="0x8829">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER5_ATI"              count="1"  value="0x882A">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER6_ATI"              count="1"  value="0x882B">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER7_ATI"              count="1"  value="0x882C">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER8_ATI"              count="1"  value="0x882D">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER9_ATI"              count="1"  value="0x882E">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER10_ATI"             count="1"  value="0x882F">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER11_ATI"             count="1"  value="0x8830">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER12_ATI"             count="1"  value="0x8831">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER13_ATI"             count="1"  value="0x8832">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER14_ATI"             count="1"  value="0x8833">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DRAW_BUFFER15_ATI"             count="1"  value="0x8834">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="DrawBuffersATI" alias="DrawBuffersARB">
+        <param name="n" type="GLsizei" counter="true"/>
+        <param name="bufs" type="const GLenum *" count="n"/>
+    </function>
+</category>
+
+<!-- Extension number 278 is a WGL extension. -->
+
+<category name="GL_ATI_texture_env_combine3" number="279">
+    <enum name="MODULATE_ADD_ATI"                         value="0x8744"/>
+    <enum name="MODULATE_SIGNED_ADD_ATI"                  value="0x8745"/>
+    <enum name="MODULATE_SUBTRACT_ATI"                    value="0x8746"/>
+</category>
+
+<category name="GL_NV_fragment_program" number="282">
+    <function name="ProgramNamedParameter4fNV" offset="assign" vectorequiv="ProgramNamedParameter4fvNV">
+        <param name="id" type="GLuint"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="name" type="const GLubyte *" count="len"/>
+        <param name="x" type="GLfloat"/>
+        <param name="y" type="GLfloat"/>
+        <param name="z" type="GLfloat"/>
+        <param name="w" type="GLfloat"/>
+    </function>
+
+    <function name="ProgramNamedParameter4dNV" offset="assign" vectorequiv="ProgramNamedParameter4dvNV">
+        <param name="id" type="GLuint"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="name" type="const GLubyte *" count="len"/>
+        <param name="x" type="GLdouble"/>
+        <param name="y" type="GLdouble"/>
+        <param name="z" type="GLdouble"/>
+        <param name="w" type="GLdouble"/>
+    </function>
+
+    <function name="ProgramNamedParameter4fvNV" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="name" type="const GLubyte *" count="len"/>
+        <param name="v" type="const GLfloat *" count="4"/>
+        <glx rop="4218"/>
+    </function>
+
+    <function name="ProgramNamedParameter4dvNV" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="name" type="const GLubyte *" count="len"/>
+        <param name="v" type="const GLdouble *" count="4"/>
+        <glx rop="4219"/>
+    </function>
+
+    <function name="GetProgramNamedParameterfvNV" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="name" type="const GLubyte *" count="len"/>
+        <param name="params" type="GLfloat *" output="true" count="4"/>
+        <glx vendorpriv="1310" always_array="true"/>
+    </function>
+
+    <function name="GetProgramNamedParameterdvNV" offset="assign">
+        <param name="id" type="GLuint"/>
+        <param name="len" type="GLsizei" counter="true"/>
+        <param name="name" type="const GLubyte *" count="len"/>
+        <param name="params" type="GLdouble *" output="true" count="4"/>
+        <glx vendorpriv="1311" always_array="true"/>
+    </function>
+</category>
+
+<category name="GL_NV_texture_expand_normal" number="286">
+    <enum name="TEXTURE_UNSIGNED_REMAP_MODE_NV" count="1" value="0x888F">
+        <size name="TexParameterfv"/>
+        <size name="TexParameteriv"/>
+        <size name="GetTexParameterfv" mode="get"/>
+        <size name="GetTexParameteriv" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_OES_compressed_paletted_texture" number="294">
+    <enum name="PALETTE4_RGB8_OES"                        value="0x8B90"/>
+    <enum name="PALETTE4_RGBA8_OES"                       value="0x8B91"/>
+    <enum name="PALETTE4_R5_G6_B5_OES"                    value="0x8B92"/>
+    <enum name="PALETTE4_RGBA4_OES"                       value="0x8B93"/>
+    <enum name="PALETTE4_RGB5_A1_OES"                     value="0x8B94"/>
+    <enum name="PALETTE8_RGB8_OES"                        value="0x8B95"/>
+    <enum name="PALETTE8_RGBA8_OES"                       value="0x8B96"/>
+    <enum name="PALETTE8_R5_G6_B5_OES"                    value="0x8B97"/>
+    <enum name="PALETTE8_RGBA4_OES"                       value="0x8B98"/>
+    <enum name="PALETTE8_RGB5_A1_OES"                     value="0x8B99"/>
+</category>
+
+<category name="GL_OES_read_format" number="295">
+    <enum name="IMPLEMENTATION_COLOR_READ_TYPE_OES"       value="0x8B9A"/>
+    <enum name="IMPLEMENTATION_COLOR_READ_FORMAT_OES"     value="0x8B9B"/>
+</category>
+
+<category name="GL_EXT_depth_bounds_test" number="297">
+    <enum name="DEPTH_BOUNDS_TEST_EXT"         count="1"  value="0x8890">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="DEPTH_BOUNDS_EXT"              count="2"  value="0x8891">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="DepthBoundsEXT" offset="assign" static_dispatch="false">
+        <param name="zmin" type="GLclampd"/>
+        <param name="zmax" type="GLclampd"/>
+        <glx rop="4229" ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_EXT_texture_mirror_clamp" number="298">
+    <enum name="MIRROR_CLAMP_EXT"                         value="0x8742"/>
+    <enum name="MIRROR_CLAMP_TO_EDGE_EXT"                 value="0x8743"/>
+    <enum name="MIRROR_CLAMP_TO_BORDER_EXT"               value="0x8912"/>
+</category>
+
+<category name="GL_EXT_blend_equation_separate" number="299">
+    <enum name="BLEND_EQUATION_RGB_EXT"        count="1"  value="0x8009">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="BLEND_EQUATION_ALPHA_EXT"      count="1"  value="0x883D">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="BlendEquationSeparateEXT" offset="assign" static_dispatch="false">
+        <param name="modeRGB" type="GLenum"/>
+        <param name="modeA" type="GLenum"/>
+        <glx rop="4228"/>
+    </function>
+</category>
+
+<category name="GL_MESA_pack_invert" number="300">
+    <enum name="PACK_INVERT_MESA"              count="1"  value="0x8758">
+        <size name="Get" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_MESA_ycbcr_texture" number="301">
+    <enum name="YCBCR_MESA"                               value="0x8757"/>
+    <enum name="UNSIGNED_SHORT_8_8_MESA"                  value="0x85BA"/>
+    <enum name="UNSIGNED_SHORT_8_8_REV_MESA"              value="0x85BB"/>
+</category>
+
+<category name="GL_EXT_pixel_buffer_object" number="302">
+    <enum name="PIXEL_PACK_BUFFER_EXT"                    value="0x88EB"/>
+    <enum name="PIXEL_UNPACK_BUFFER_EXT"                  value="0x88EC"/>
+    <enum name="PIXEL_PACK_BUFFER_BINDING_EXT"            value="0x88ED"/>
+    <enum name="PIXEL_UNPACK_BUFFER_BINDING_EXT"          value="0x88EF"/>
+</category>
+
+<category name="GL_NV_fragment_program_option" number="303">
+    <!-- No new functions, types, enums. -->
+</category>
+
+<category name="GL_NV_fragment_program2" number="304">
+    <enum name="MAX_PROGRAM_EXEC_INSTRUCTIONS_NV" count="1" value="0x88F4">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_CALL_DEPTH_NV"      count="1"  value="0x88F5">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_IF_DEPTH_NV"        count="1"  value="0x88F6">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_LOOP_DEPTH_NV"      count="1"  value="0x88F7">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_LOOP_COUNT_NV"      count="1"  value="0x88F8">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_NV_vertex_program2_option" number="305">
+    <enum name="MAX_PROGRAM_EXEC_INSTRUCTIONS_NV" count="1" value="0x88F4">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+    <enum name="MAX_PROGRAM_CALL_DEPTH_NV"      count="1"  value="0x88F5">
+        <size name="GetProgramivARB" mode="get"/>
+    </enum>
+</category>
+
+<category name="GL_NV_vertex_program3" number="306">
+    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB" count="1" value="0x8B4C"/>
+</category>
+
+<!-- Extension number 307 is a GLX extension. -->
+<!-- Extension number 308 is a GLX extension. -->
+
+<category name="GL_EXT_texture_compression_dxt1" number="309">
+    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
+    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
+</category>
+
+<xi:include href="EXT_framebuffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="EXT_packed_depth_stencil.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="EXT_provoking_vertex.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<xi:include href="EXT_draw_buffers2.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+
+<category name="GL_APPLE_flush_buffer_range" number="321">
+    <enum name="BUFFER_SERIALIZED_MODIFY_APPLE" count="1" value="0x8A12">
+        <size name="GetBufferParameteriv" mode="get"/>
+    </enum>
+    <enum name="BUFFER_FLUSHING_UNMAP_APPLE" count="1" value="0x8A13">
+        <size name="GetBufferParameteriv" mode="get"/>
+    </enum>
+    <function name="BufferParameteriAPPLE" offset="assign" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLint"/>
+    </function>
+    <function name="FlushMappedBufferRangeAPPLE" offset="assign" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="offset" type="GLintptr"/>
+        <param name="size" type="GLsizeiptr"/>
+    </function>
+</category>
+
+<xi:include href="EXT_texture_array.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+<category name="GL_APPLE_texture_range" number="367">
+    <enum name="TEXTURE_STORAGE_HINT_APPLE" count="1" value="0x85BC">
+        <size name="TexParameteriv"/>
+        <size name="TexParameterfv"/>
+        <size name="GetTexParameteriv" mode="get"/>
+        <size name="GetTexParameterfv" mode="get"/>
+    </enum>
+    <enum name="STORAGE_PRIVATE_APPLE" count="1" value="0x85BD">
+        <size name="TexParameteriv"/>
+        <size name="TexParameterfv"/>
+    </enum>
+    <enum name="STORAGE_CACHED_APPLE" count="1" value="0x85BE">
+        <size name="TexParameteriv"/>
+        <size name="TexParameterfv"/>
+    </enum>
+    <enum name="STORAGE_SHARED_APPLE" count="1" value="0x85BF">
+        <size name="TexParameteriv"/>
+        <size name="TexParameterfv"/>
+    </enum>
+    <enum name="TEXTURE_RANGE_LENGTH_APPLE" count="1" value="0x85B7">
+        <size name="GetTexParameteriv" mode="get"/>
+        <size name="GetTexParameterfv" mode="get"/>
+    </enum>
+    <enum name="TEXTURE_RANGE_POINTER_APPLE" count="1" value="0x85B8">
+        <size name="GetTexParameterPointervAPPLE" mode="get"/>
+    </enum>
+    <function name="TextureRangeAPPLE" offset="assign" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="length" type="GLsizei"/>
+        <param name="pointer" type="GLvoid *"/>
+    </function>
+    <function name="GetTexParameterPointervAPPLE" offset="assign" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLvoid **"/>
+    </function>
+</category>
+
+<!-- Unnumbered extensions sorted by name. -->
+
+<category name="GL_ATI_blend_equation_separate">
+    <function name="BlendEquationSeparateATI" alias="BlendEquationSeparateEXT" static_dispatch="false">
+        <param name="modeRGB" type="GLenum"/>
+        <param name="modeA" type="GLenum"/>
+    </function>
+</category>
+
+<category name="GL_ATI_separate_stencil">
+    <enum name="STENCIL_BACK_FUNC_ATI"     count="1"  value="0x8800">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BACK_FAIL_ATI"     count="1"  value="0x8801">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BACK_PASS_DEPTH_FAIL_ATI" count="1"  value="0x8802">
+        <size name="Get" mode="get"/>
+    </enum>
+    <enum name="STENCIL_BACK_PASS_DEPTH_PASS_ATI" count="1"  value="0x8803">
+        <size name="Get" mode="get"/>
+    </enum>
+
+    <function name="StencilOpSeparateATI" alias="StencilOpSeparate" static_dispatch="false">
+        <param name="face" type="GLenum"/>
+        <param name="sfail" type="GLenum"/>
+        <param name="zfail" type="GLenum"/>
+        <param name="zpass" type="GLenum"/>
+    </function>
+    <function name="StencilFuncSeparateATI" offset="assign" static_dispatch="false">
+        <param name="frontfunc" type="GLenum"/>
+        <param name="backfunc" type="GLenum"/>
+        <param name="ref" type="GLint"/>
+        <param name="mask" type="GLuint"/>
+    </function>
+
+</category>
+
+<category name="GL_EXT_gpu_program_parameters">
+    <function name="ProgramEnvParameters4fvEXT" offset="assign" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+
+    <function name="ProgramLocalParameters4fvEXT" offset="assign" static_dispatch="false">
+        <param name="target" type="GLenum"/>
+        <param name="index" type="GLuint"/>
+        <param name="count" type="GLsizei"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+</category>
+
+<category name="GL_EXT_timer_query">
+    <enum name="TIME_ELAPSED_EXT" value="0x88BF"/>
+    <type name="int64EXT"                  size="8"/>
+    <type name="uint64EXT" unsigned="true" size="8"/>
+    <function name="GetQueryObjecti64vEXT" offset="assign" static_dispatch="false">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLint64EXT *"/>
+    </function>
+    <function name="GetQueryObjectui64vEXT" offset="assign" static_dispatch="false">
+        <param name="id" type="GLuint"/>
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="GLuint64EXT *"/>
+    </function>
+</category>
+
+<category name="GL_INGR_blend_func_separate">
+    <function name="BlendFuncSeparateINGR" alias="BlendFuncSeparateEXT" static_dispatch="false">
+        <param name="sfactorRGB" type="GLenum"/>
+        <param name="dfactorRGB" type="GLenum"/>
+        <param name="sfactorAlpha" type="GLenum"/>
+        <param name="dfactorAlpha" type="GLenum"/>
+    </function>
+</category>
+
+<category name="GL_MESA_texture_signed_rgba">
+    <enum name="SIGNED_NORMALIZED"                        value="0x8F9C"/>
+    <enum name="RGBA_SNORM"                               value="0x8F93"/>
+    <enum name="RGBA8_SNORM"                              value="0x8F97"/>
+</category>
+
+<category name="GL_MESA_shader_debug">
+    <enum name="DEBUG_OBJECT_MESA"                        value="0x8759"/>
+    <enum name="DEBUG_PRINT_MESA"                         value="0x875A"/>
+    <enum name="DEBUG_ASSERT_MESA"                        value="0x875B"/>
+    <function name="CreateDebugObjectMESA">
+        <return type="GLhandleARB"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="ClearDebugLogMESA">
+        <param name="obj" type="GLhandleARB"/>
+        <param name="logType" type="GLenum"/>
+        <param name="shaderType" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="GetDebugLogMESA">
+        <param name="obj" type="GLhandleARB"/>
+        <param name="logType" type="GLenum"/>
+        <param name="shaderType" type="GLenum"/>
+        <param name="maxLength" type="GLsizei"/>
+        <param name="length" type="GLsizei *" output="true"/>
+        <param name="debugLog" type="GLcharARB *" output="true"/>
+        <glx ignore="true"/>
+    </function>
+    <function name="GetDebugLogLengthMESA">
+        <return type="GLsizei"/>
+        <param name="obj" type="GLhandleARB"/>
+        <param name="logType" type="GLenum"/>
+        <param name="shaderType" type="GLenum"/>
+        <glx ignore="true"/>
+    </function>
+</category>
+
+<category name="GL_SGIS_point_parameters">
+    <enum name="POINT_SIZE_MIN_SGIS"           count="1"  value="0x8126">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_SIZE_MAX_SGIS"           count="1"  value="0x8127">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_FADE_THRESHOLD_SIZE_SGIS" count="1" value="0x8128">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+    <enum name="POINT_DISTANCE_ATTENUATION_SGIS" count="3" value="0x8129">
+        <size name="PointParameterfvEXT"/>
+    </enum>
+
+    <function name="PointParameterfSGIS" alias="PointParameterfEXT" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="param" type="GLfloat"/>
+    </function>
+
+    <function name="PointParameterfvSGIS" alias="PointParameterfvEXT" static_dispatch="false">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLfloat *"/>
+    </function>
+</category>
+
+<category name="GL_SGIX_igloo_interface">
+    <function name="IglooInterfaceSGIX">
+        <param name="pname" type="GLenum"/>
+        <param name="params" type="const GLvoid *"/>
+    </function>
+</category>
+
+<category name="GL_SGIX_polynomial_ffd">
+    <function name="DeformationMap3dSGIX">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLdouble"/>
+        <param name="u2" type="GLdouble"/>
+        <param name="ustride" type="GLint"/>
+        <param name="uorder" type="GLint"/>
+        <param name="v1" type="GLdouble"/>
+        <param name="v2" type="GLdouble"/>
+        <param name="vstride" type="GLint"/>
+        <param name="vorder" type="GLint"/>
+        <param name="w1" type="GLdouble"/>
+        <param name="w2" type="GLdouble"/>
+        <param name="wstride" type="GLint"/>
+        <param name="worder" type="GLint"/>
+        <param name="points" type="const GLdouble *"/>
+    </function>
+
+    <function name="DeformationMap3fSGIX">
+        <param name="target" type="GLenum"/>
+        <param name="u1" type="GLfloat"/>
+        <param name="u2" type="GLfloat"/>
+        <param name="ustride" type="GLint"/>
+        <param name="uorder" type="GLint"/>
+        <param name="v1" type="GLfloat"/>
+        <param name="v2" type="GLfloat"/>
+        <param name="vstride" type="GLint"/>
+        <param name="vorder" type="GLint"/>
+        <param name="w1" type="GLfloat"/>
+        <param name="w2" type="GLfloat"/>
+        <param name="wstride" type="GLint"/>
+        <param name="worder" type="GLint"/>
+        <param name="points" type="const GLfloat *"/>
+    </function>
+
+    <function name="DeformSGIX">
+        <param name="mask" type="GLenum"/>
+    </function>
+
+    <function name="LoadIdentityDeformationMapSGIX">
+        <param name="mask" type="GLenum"/>
+    </function>
+</category>
+
+<xi:include href="OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+
+</OpenGLAPI>
diff --git a/src/mapi/glapi/gen/gl_SPARC_asm.py b/src/mapi/glapi/gen/gl_SPARC_asm.py
new file mode 100644 (file)
index 0000000..33e752d
--- /dev/null
@@ -0,0 +1,275 @@
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 2004
+# 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import license
+import gl_XML, glX_XML
+import sys, getopt
+
+class PrintGenericStubs(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+               self.name = "gl_SPARC_asm.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+
+
+       def printRealHeader(self):
+               print '#include "glapi/glapioffsets.h"'
+               print ''
+               print '#ifdef __arch64__'
+               print '#define GL_OFF(N)\t((N) * 8)'
+               print '#define GL_LL\t\tldx'
+               print '#define GL_TIE_LD(SYM)\t%tie_ldx(SYM)'
+               print '#define GL_STACK_SIZE\t128'
+               print '#else'
+               print '#define GL_OFF(N)\t((N) * 4)'
+               print '#define GL_LL\t\tld'
+               print '#define GL_TIE_LD(SYM)\t%tie_ld(SYM)'
+               print '#define GL_STACK_SIZE\t64'
+               print '#endif'
+               print ''
+               print '#define GLOBL_FN(x) .globl x ; .type x, @function'
+               print '#define HIDDEN(x) .hidden x'
+               print ''
+               print '\t.register %g2, #scratch'
+               print '\t.register %g3, #scratch'
+               print ''
+               print '\t.text'
+               print ''
+               print '\tGLOBL_FN(__glapi_sparc_icache_flush)'
+               print '\tHIDDEN(__glapi_sparc_icache_flush)'
+               print '\t.type\t__glapi_sparc_icache_flush, @function'
+               print '__glapi_sparc_icache_flush: /* %o0 = insn_addr */'
+               print '\tflush\t%o0'
+               print '\tretl'
+               print '\t nop'
+               print ''
+               print '\t.align\t32'
+               print ''
+               print '\t.type\t__glapi_sparc_get_pc, @function'
+               print '__glapi_sparc_get_pc:'
+               print '\tretl'
+               print '\t add\t%o7, %g2, %g2'
+               print '\t.size\t__glapi_sparc_get_pc, .-__glapi_sparc_get_pc'
+               print ''
+               print '#ifdef GLX_USE_TLS'
+               print ''
+               print '\tGLOBL_FN(__glapi_sparc_get_dispatch)'
+               print '\tHIDDEN(__glapi_sparc_get_dispatch)'
+               print '__glapi_sparc_get_dispatch:'
+               print '\tmov\t%o7, %g1'
+               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+               print '\tcall\t__glapi_sparc_get_pc'
+               print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+               print '\tmov\t%g1, %o7'
+               print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
+               print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
+               print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
+               print '\tretl'
+               print '\t mov\t%g2, %o0'
+               print ''
+               print '\t.data'
+               print '\t.align\t32'
+               print ''
+               print '\t/* --> sethi %hi(_glapi_tls_Dispatch), %g1 */'
+               print '\t/* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */'
+               print '\tGLOBL_FN(__glapi_sparc_tls_stub)'
+               print '\tHIDDEN(__glapi_sparc_tls_stub)'
+               print '__glapi_sparc_tls_stub: /* Call offset in %g3 */'
+               print '\tmov\t%o7, %g1'
+               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+               print '\tcall\t__glapi_sparc_get_pc'
+               print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+               print '\tmov\t%g1, %o7'
+               print '\tsrl\t%g3, 10, %g3'
+               print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
+               print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
+               print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
+               print '\tGL_LL\t[%g7+%g2], %g1'
+               print '\tGL_LL\t[%g1 + %g3], %g1'
+               print '\tjmp\t%g1'
+               print '\t nop'
+               print '\t.size\t__glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub'
+               print ''
+               print '#define GL_STUB(fn, off)\t\t\t\t\\'
+               print '\tGLOBL_FN(fn);\t\t\t\t\t\\'
+               print 'fn:\tba\t__glapi_sparc_tls_stub;\t\t\t\\'
+               print '\t sethi\tGL_OFF(off), %g3;\t\t\t\\'
+               print '\t.size\tfn,.-fn;'
+               print ''
+               print '#elif defined(PTHREADS)'
+               print ''
+               print '\t/* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */'
+               print '\t/* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */'
+               print '\t/* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */'
+               print '\t/* 64-bit 0x0c --> sllx %g1, 32, %g1 */'
+               print '\t/* 64-bit 0x10 --> add %g1, %g2, %g1 */'
+               print '\t/* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */'
+               print ''
+               print '\t/* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */'
+               print '\t/* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */'
+               print ''
+               print '\t.data'
+               print '\t.align\t32'
+               print ''
+               print '\tGLOBL_FN(__glapi_sparc_pthread_stub)'
+               print '\tHIDDEN(__glapi_sparc_pthread_stub)'
+               print '__glapi_sparc_pthread_stub: /* Call offset in %g3 */'
+               print '\tmov\t%o7, %g1'
+               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+               print '\tcall\t__glapi_sparc_get_pc'
+               print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+               print '\tmov\t%g1, %o7'
+               print '\tsethi\t%hi(_glapi_Dispatch), %g1'
+               print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
+               print '\tsrl\t%g3, 10, %g3'
+               print '\tGL_LL\t[%g2+%g1], %g2'
+               print '\tGL_LL\t[%g2], %g1'
+               print '\tcmp\t%g1, 0'
+               print '\tbe\t2f'
+               print '\t nop'
+               print '1:\tGL_LL\t[%g1 + %g3], %g1'
+               print '\tjmp\t%g1'
+               print '\t nop'
+               print '2:\tsave\t%sp, GL_STACK_SIZE, %sp'
+               print '\tmov\t%g3, %l0'
+               print '\tcall\t_glapi_get_dispatch'
+               print '\t nop'
+               print '\tmov\t%o0, %g1'
+               print '\tmov\t%l0, %g3'
+               print '\tba\t1b'
+               print '\t restore %g0, %g0, %g0'
+               print '\t.size\t__glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub'
+               print ''
+               print '#define GL_STUB(fn, off)\t\t\t\\'
+               print '\tGLOBL_FN(fn);\t\t\t\t\\'
+               print 'fn:\tba\t__glapi_sparc_pthread_stub;\t\\'
+               print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
+               print '\t.size\tfn,.-fn;'
+               print ''
+               print '#else /* Non-threaded version. */'
+               print ''
+               print '\t.type  __glapi_sparc_nothread_stub, @function'
+               print '__glapi_sparc_nothread_stub: /* Call offset in %g3 */'
+               print '\tmov\t%o7, %g1'
+               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
+               print '\tcall\t__glapi_sparc_get_pc'
+               print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
+               print '\tmov\t%g1, %o7'
+               print '\tsrl\t%g3, 10, %g3'
+               print '\tsethi\t%hi(_glapi_Dispatch), %g1'
+               print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
+               print '\tGL_LL\t[%g2+%g1], %g2'
+               print '\tGL_LL\t[%g2], %g1'
+               print '\tGL_LL\t[%g1 + %g3], %g1'
+               print '\tjmp\t%g1'
+               print '\t nop'
+               print '\t.size\t__glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub'
+               print ''
+               print '#define GL_STUB(fn, off)\t\t\t\\'
+               print '\tGLOBL_FN(fn);\t\t\t\t\\'
+               print 'fn:\tba\t__glapi_sparc_nothread_stub;\t\\'
+               print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
+               print '\t.size\tfn,.-fn;'
+               print ''
+               print '#endif'
+               print ''
+               print '#define GL_STUB_ALIAS(fn, alias)         \\'
+               print ' .globl  fn;                             \\'
+               print ' .set    fn, alias'
+               print ''
+               print '\t.text'
+               print '\t.align\t32'
+               print ''
+               print '\t.globl\tgl_dispatch_functions_start'
+               print '\tHIDDEN(gl_dispatch_functions_start)'
+               print 'gl_dispatch_functions_start:'
+               print ''
+               return
+
+       def printRealFooter(self):
+               print ''
+               print '\t.globl\tgl_dispatch_functions_end'
+               print '\tHIDDEN(gl_dispatch_functions_end)'
+               print 'gl_dispatch_functions_end:'
+               return
+
+       def printBody(self, api):
+               for f in api.functionIterateByOffset():
+                       name = f.dispatch_name()
+
+                       print '\tGL_STUB(gl%s, _gloffset_%s)' % (name, f.name)
+
+                       if not f.is_static_entry_point(f.name):
+                               print '\tHIDDEN(gl%s)' % (name)
+
+               for f in api.functionIterateByOffset():
+                       name = f.dispatch_name()
+
+                       if f.is_static_entry_point(f.name):
+                               for n in f.entry_points:
+                                       if n != f.name:
+                                               text = '\tGL_STUB_ALIAS(gl%s, gl%s)' % (n, f.name)
+
+                                               if f.has_different_protocol(n):
+                                                       print '#ifndef GLX_INDIRECT_RENDERING'
+                                                       print text
+                                                       print '#endif'
+                                               else:
+                                                       print text
+
+               return
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+       mode = "generic"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
+       except Exception,e:
+               show_usage()
+
+       for (arg,val) in args:
+               if arg == '-m':
+                       mode = val
+               elif arg == "-f":
+                       file_name = val
+
+       if mode == "generic":
+               printer = PrintGenericStubs()
+       else:
+               print "ERROR: Invalid mode \"%s\" specified." % mode
+               show_usage()
+
+       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+       printer.Print(api)
diff --git a/src/mapi/glapi/gen/gl_XML.py b/src/mapi/glapi/gen/gl_XML.py
new file mode 100644 (file)
index 0000000..660c8cf
--- /dev/null
@@ -0,0 +1,967 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import libxml2
+import re, sys, string
+import typeexpr
+
+
+def parse_GL_API( file_name, factory = None ):
+       doc = libxml2.readFile( file_name, None, libxml2.XML_PARSE_XINCLUDE + libxml2.XML_PARSE_NOBLANKS + libxml2.XML_PARSE_DTDVALID + libxml2.XML_PARSE_DTDATTR + libxml2.XML_PARSE_DTDLOAD + libxml2.XML_PARSE_NOENT )
+       ret = doc.xincludeProcess()
+
+       if not factory:
+               factory = gl_item_factory()
+
+       api = factory.create_item( "api", None, None )
+       api.process_element( doc )
+
+       # After the XML has been processed, we need to go back and assign
+       # dispatch offsets to the functions that request that their offsets
+       # be assigned by the scripts.  Typically this means all functions
+       # that are not part of the ABI.
+
+       for func in api.functionIterateByCategory():
+               if func.assign_offset:
+                       func.offset = api.next_offset;
+                       api.next_offset += 1
+
+       doc.freeDoc()
+
+       return api
+
+
+def is_attr_true( element, name ):
+       """Read a name value from an element's attributes.
+       
+       The value read from the attribute list must be either 'true' or
+       'false'.  If the value is 'false', zero will be returned.  If the
+       value is 'true', non-zero will be returned.  An exception will be
+       raised for any other value."""
+
+       value = element.nsProp( name, None )
+       if value == "true":
+               return 1
+       elif value == "false":
+               return 0
+       else:
+               raise RuntimeError('Invalid value "%s" for boolean "%s".' % (value, name))
+
+
+class gl_print_base:
+       """Base class of all API pretty-printers.
+
+       In the model-view-controller pattern, this is the view.  Any derived
+       class will want to over-ride the printBody, printRealHader, and
+       printRealFooter methods.  Some derived classes may want to over-ride
+       printHeader and printFooter, or even Print (though this is unlikely).
+       """
+
+       def __init__(self):
+               # Name of the script that is generating the output file.
+               # Every derived class should set this to the name of its
+               # source file.
+
+               self.name = "a"
+
+
+               # License on the *generated* source file.  This may differ
+               # from the license on the script that is generating the file.
+               # Every derived class should set this to some reasonable
+               # value.
+               #
+               # See license.py for an example of a reasonable value.
+
+               self.license = "The license for this file is unspecified."
+
+               
+               # The header_tag is the name of the C preprocessor define
+               # used to prevent multiple inclusion.  Typically only
+               # generated C header files need this to be set.  Setting it
+               # causes code to be generated automatically in printHeader
+               # and printFooter.
+
+               self.header_tag = None
+
+               
+               # List of file-private defines that must be undefined at the
+               # end of the file.  This can be used in header files to define
+               # names for use in the file, then undefine them at the end of
+               # the header file.
+
+               self.undef_list = []
+               return
+
+
+       def Print(self, api):
+               self.printHeader()
+               self.printBody(api)
+               self.printFooter()
+               return
+
+
+       def printHeader(self):
+               """Print the header associated with all files and call the printRealHeader method."""
+
+               print '/* DO NOT EDIT - This file generated automatically by %s script */' \
+                       % (self.name)
+               print ''
+               print '/*'
+               print ' * ' + self.license.replace('\n', '\n * ')
+               print ' */'
+               print ''
+               if self.header_tag:
+                   print '#if !defined( %s )' % (self.header_tag)
+                   print '#  define %s' % (self.header_tag)
+                   print ''
+               self.printRealHeader();
+               return
+
+
+       def printFooter(self):
+               """Print the header associated with all files and call the printRealFooter method."""
+
+               self.printRealFooter()
+
+               if self.undef_list:
+                       print ''
+                       for u in self.undef_list:
+                               print "#  undef %s" % (u)
+
+               if self.header_tag:
+                       print ''
+                       print '#endif /* !defined( %s ) */' % (self.header_tag)
+
+
+       def printRealHeader(self):
+               """Print the "real" header for the created file.
+
+               In the base class, this function is empty.  All derived
+               classes should over-ride this function."""
+               return
+
+
+       def printRealFooter(self):
+               """Print the "real" footer for the created file.
+
+               In the base class, this function is empty.  All derived
+               classes should over-ride this function."""
+               return
+
+
+       def printPure(self):
+               """Conditionally define `PURE' function attribute.
+
+               Conditionally defines a preprocessor macro `PURE' that wraps
+               GCC's `pure' function attribute.  The conditional code can be
+               easilly adapted to other compilers that support a similar
+               feature.
+
+               The name is also added to the file's undef_list.
+               """
+               self.undef_list.append("PURE")
+               print """#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+#    define PURE __attribute__((pure))
+#  else
+#    define PURE
+#  endif"""
+               return
+
+
+       def printFastcall(self):
+               """Conditionally define `FASTCALL' function attribute.
+
+               Conditionally defines a preprocessor macro `FASTCALL' that
+               wraps GCC's `fastcall' function attribute.  The conditional
+               code can be easilly adapted to other compilers that support a
+               similar feature.
+
+               The name is also added to the file's undef_list.
+               """
+
+               self.undef_list.append("FASTCALL")
+               print """#  if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
+#    define FASTCALL __attribute__((fastcall))
+#  else
+#    define FASTCALL
+#  endif"""
+               return
+
+
+       def printVisibility(self, S, s):
+               """Conditionally define visibility function attribute.
+
+               Conditionally defines a preprocessor macro name S that wraps
+               GCC's visibility function attribute.  The visibility used is
+               the parameter s.  The conditional code can be easilly adapted
+               to other compilers that support a similar feature.
+
+               The name is also added to the file's undef_list.
+               """
+
+               self.undef_list.append(S)
+               print """#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) && defined(__ELF__)
+#    define %s  __attribute__((visibility("%s")))
+#  else
+#    define %s
+#  endif""" % (S, s, S)
+               return
+
+
+       def printNoinline(self):
+               """Conditionally define `NOINLINE' function attribute.
+
+               Conditionally defines a preprocessor macro `NOINLINE' that
+               wraps GCC's `noinline' function attribute.  The conditional
+               code can be easilly adapted to other compilers that support a
+               similar feature.
+
+               The name is also added to the file's undef_list.
+               """
+
+               self.undef_list.append("NOINLINE")
+               print """#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+#    define NOINLINE __attribute__((noinline))
+#  else
+#    define NOINLINE
+#  endif"""
+               return
+
+
+def real_function_name(element):
+       name = element.nsProp( "name", None )
+       alias = element.nsProp( "alias", None )
+       
+       if alias:
+               return alias
+       else:
+               return name
+
+
+def real_category_name(c):
+       if re.compile("[1-9][0-9]*[.][0-9]+").match(c):
+               return "GL_VERSION_" + c.replace(".", "_")
+       else:
+               return c
+
+
+def classify_category(name, number):
+       """Based on the category name and number, select a numerical class for it.
+       
+       Categories are divided into four classes numbered 0 through 3.  The
+       classes are:
+
+               0. Core GL versions, sorted by version number.
+               1. ARB extensions, sorted by extension number.
+               2. Non-ARB extensions, sorted by extension number.
+               3. Un-numbered extensions, sorted by extension name.
+       """
+
+       try:
+               core_version = float(name)
+       except Exception,e:
+               core_version = 0.0
+
+       if core_version > 0.0:
+               cat_type = 0
+               key = name
+       elif name.startswith("GL_ARB_") or name.startswith("GLX_ARB_") or name.startswith("WGL_ARB_"):
+               cat_type = 1
+               key = int(number)
+       else:
+               if number != None:
+                       cat_type = 2
+                       key = int(number)
+               else:
+                       cat_type = 3
+                       key = name
+
+
+       return [cat_type, key]
+
+
+def create_parameter_string(parameters, include_names):
+       """Create a parameter string from a list of gl_parameters."""
+
+       list = []
+       for p in parameters:
+               if p.is_padding:
+                       continue
+
+               if include_names:
+                       list.append( p.string() )
+               else:
+                       list.append( p.type_string() )
+
+       if len(list) == 0: list = ["void"]
+
+       return string.join(list, ", ")
+
+
+class gl_item:
+       def __init__(self, element, context):
+               self.context = context
+               self.name = element.nsProp( "name", None )
+               self.category = real_category_name( element.parent.nsProp( "name", None ) )
+               return
+
+
+class gl_type( gl_item ):
+       def __init__(self, element, context):
+               gl_item.__init__(self, element, context)
+               self.size = int( element.nsProp( "size", None ), 0 )
+
+               te = typeexpr.type_expression( None )
+               tn = typeexpr.type_node()
+               tn.size = int( element.nsProp( "size", None ), 0 )
+               tn.integer = not is_attr_true( element, "float" )
+               tn.unsigned = is_attr_true( element, "unsigned" )
+               tn.name = "GL" + self.name
+               te.set_base_type_node( tn )
+
+               self.type_expr = te
+               return
+       
+
+       def get_type_expression(self):
+               return self.type_expr
+
+
+class gl_enum( gl_item ):
+       def __init__(self, element, context):
+               gl_item.__init__(self, element, context)
+               self.value = int( element.nsProp( "value", None ), 0 )
+
+               temp = element.nsProp( "count", None )
+               if not temp or temp == "?":
+                       self.default_count = -1
+               else:
+                       try:
+                               c = int(temp)
+                       except Exception,e:
+                               raise RuntimeError('Invalid count value "%s" for enum "%s" in function "%s" when an integer was expected.' % (temp, self.name, n))
+
+                       self.default_count = c
+
+               return
+
+
+       def priority(self):
+               """Calculate a 'priority' for this enum name.
+               
+               When an enum is looked up by number, there may be many
+               possible names, but only one is the 'prefered' name.  The
+               priority is used to select which name is the 'best'.
+
+               Highest precedence is given to core GL name.  ARB extension
+               names have the next highest, followed by EXT extension names.
+               Vendor extension names are the lowest.
+               """
+
+               if self.name.endswith( "_BIT" ):
+                       bias = 1
+               else:
+                       bias = 0
+
+               if self.category.startswith( "GL_VERSION_" ):
+                       priority = 0
+               elif self.category.startswith( "GL_ARB_" ):
+                       priority = 2
+               elif self.category.startswith( "GL_EXT_" ):
+                       priority = 4
+               else:
+                       priority = 6
+
+               return priority + bias
+
+
+
+class gl_parameter:
+       def __init__(self, element, context):
+               self.name = element.nsProp( "name", None )
+
+               ts = element.nsProp( "type", None )
+               self.type_expr = typeexpr.type_expression( ts, context )
+
+               temp = element.nsProp( "variable_param", None )
+               if temp:
+                       self.count_parameter_list = temp.split( ' ' )
+               else:
+                       self.count_parameter_list = []
+
+               # The count tag can be either a numeric string or the name of
+               # a variable.  If it is the name of a variable, the int(c)
+               # statement will throw an exception, and the except block will
+               # take over.
+
+               c = element.nsProp( "count", None )
+               try: 
+                       count = int(c)
+                       self.count = count
+                       self.counter = None
+               except Exception,e:
+                       count = 1
+                       self.count = 0
+                       self.counter = c
+               
+               self.count_scale = int(element.nsProp( "count_scale", None ))
+
+               elements = (count * self.count_scale)
+               if elements == 1:
+                       elements = 0
+
+               #if ts == "GLdouble":
+               #       print '/* stack size -> %s = %u (before)*/' % (self.name, self.type_expr.get_stack_size())
+               #       print '/* # elements = %u */' % (elements)
+               self.type_expr.set_elements( elements )
+               #if ts == "GLdouble":
+               #       print '/* stack size -> %s = %u (after) */' % (self.name, self.type_expr.get_stack_size())
+
+               self.is_client_only = is_attr_true( element, 'client_only' )
+               self.is_counter     = is_attr_true( element, 'counter' )
+               self.is_output      = is_attr_true( element, 'output' )
+
+
+               # Pixel data has special parameters.
+
+               self.width      = element.nsProp('img_width',  None)
+               self.height     = element.nsProp('img_height', None)
+               self.depth      = element.nsProp('img_depth',  None)
+               self.extent     = element.nsProp('img_extent', None)
+
+               self.img_xoff   = element.nsProp('img_xoff',   None)
+               self.img_yoff   = element.nsProp('img_yoff',   None)
+               self.img_zoff   = element.nsProp('img_zoff',   None)
+               self.img_woff   = element.nsProp('img_woff',   None)
+
+               self.img_format = element.nsProp('img_format', None)
+               self.img_type   = element.nsProp('img_type',   None)
+               self.img_target = element.nsProp('img_target', None)
+
+               self.img_pad_dimensions = is_attr_true( element, 'img_pad_dimensions' )
+               self.img_null_flag      = is_attr_true( element, 'img_null_flag' )
+               self.img_send_null      = is_attr_true( element, 'img_send_null' )
+
+               self.is_padding = is_attr_true( element, 'padding' )
+               return
+
+
+       def compatible(self, other):
+               return 1
+
+
+       def is_array(self):
+               return self.is_pointer()
+
+
+       def is_pointer(self):
+               return self.type_expr.is_pointer()
+
+
+       def is_image(self):
+               if self.width:
+                       return 1
+               else:
+                       return 0
+
+
+       def is_variable_length(self):
+               return len(self.count_parameter_list) or self.counter
+
+
+       def is_64_bit(self):
+               count = self.type_expr.get_element_count()
+               if count:
+                       if (self.size() / count) == 8:
+                               return 1
+               else:
+                       if self.size() == 8:
+                               return 1
+
+               return 0
+
+
+       def string(self):
+               return self.type_expr.original_string + " " + self.name
+
+
+       def type_string(self):
+               return self.type_expr.original_string
+
+
+       def get_base_type_string(self):
+               return self.type_expr.get_base_name()
+
+
+       def get_dimensions(self):
+               if not self.width:
+                       return [ 0, "0", "0", "0", "0" ]
+
+               dim = 1
+               w = self.width
+               h = "1"
+               d = "1"
+               e = "1"
+
+               if self.height:
+                       dim = 2
+                       h = self.height
+
+               if self.depth:
+                       dim = 3
+                       d = self.depth
+
+               if self.extent:
+                       dim = 4
+                       e = self.extent
+
+               return [ dim, w, h, d, e ]
+
+
+       def get_stack_size(self):
+               return self.type_expr.get_stack_size()
+
+
+       def size(self):
+               if self.is_image():
+                       return 0
+               else:
+                       return self.type_expr.get_element_size()
+
+
+       def get_element_count(self):
+               c = self.type_expr.get_element_count()
+               if c == 0:
+                       return 1
+
+               return c
+
+
+       def size_string(self, use_parens = 1):
+               s = self.size()
+               if self.counter or self.count_parameter_list:
+                       list = [ "compsize" ]
+
+                       if self.counter and self.count_parameter_list:
+                               list.append( self.counter )
+                       elif self.counter:
+                               list = [ self.counter ]
+
+                       if s > 1:
+                               list.append( str(s) )
+
+                       if len(list) > 1 and use_parens :
+                               return "(%s)" % (string.join(list, " * "))
+                       else:
+                               return string.join(list, " * ")
+
+               elif self.is_image():
+                       return "compsize"
+               else:
+                       return str(s)
+
+
+       def format_string(self):
+               if self.type_expr.original_string == "GLenum":
+                       return "0x%x"
+               else:
+                       return self.type_expr.format_string()
+
+
+
+class gl_function( gl_item ):
+       def __init__(self, element, context):
+               self.context = context
+               self.name = None
+
+               self.entry_points = []
+               self.return_type = "void"
+               self.parameters = []
+               self.offset = -1
+               self.initialized = 0
+               self.images = []
+
+               self.assign_offset = 0
+
+               self.static_entry_points = []
+
+               # Track the parameter string (for the function prototype)
+               # for each entry-point.  This is done because some functions
+               # change their prototype slightly when promoted from extension
+               # to ARB extension to core.  glTexImage3DEXT and glTexImage3D
+               # are good examples of this.  Scripts that need to generate
+               # code for these differing aliases need to real prototype
+               # for each entry-point.  Otherwise, they may generate code
+               # that won't compile.
+
+               self.parameter_strings = {}
+
+               self.process_element( element )
+
+               return
+
+       
+       def process_element(self, element):
+               name = element.nsProp( "name", None )
+               alias = element.nsProp( "alias", None )
+
+               if is_attr_true(element, "static_dispatch"):
+                       self.static_entry_points.append(name)
+
+               self.entry_points.append( name )
+               if alias:
+                       true_name = alias
+               else:
+                       true_name = name
+
+                       # Only try to set the offset when a non-alias
+                       # entry-point is being processes.
+
+                       offset = element.nsProp( "offset", None )
+                       if offset:
+                               try:
+                                       o = int( offset )
+                                       self.offset = o
+                               except Exception, e:
+                                       self.offset = -1
+                                       if offset == "assign":
+                                               self.assign_offset = 1
+
+
+               if not self.name:
+                       self.name = true_name
+               elif self.name != true_name:
+                       raise RuntimeError("Function true name redefined.  Was %s, now %s." % (self.name, true_name))
+
+
+               # There are two possible cases.  The first time an entry-point
+               # with data is seen, self.initialized will be 0.  On that
+               # pass, we just fill in the data.  The next time an
+               # entry-point with data is seen, self.initialized will be 1.
+               # On that pass we have to make that the new values match the
+               # valuse from the previous entry-point.
+
+               parameters = []
+               return_type = "void"
+               child = element.children
+               while child:
+                       if child.type == "element":
+                               if child.name == "return":
+                                       return_type = child.nsProp( "type", None )
+                               elif child.name == "param":
+                                       param = self.context.factory.create_item( "parameter", child, self.context)
+                                       parameters.append( param )
+
+                       child = child.next
+
+
+               if self.initialized:
+                       if self.return_type != return_type:
+                               raise RuntimeError( "Return type changed in %s.  Was %s, now %s." % (name, self.return_type, return_type))
+
+                       if len(parameters) != len(self.parameters):
+                               raise RuntimeError( "Parameter count mismatch in %s.  Was %d, now %d." % (name, len(self.parameters), len(parameters)))
+
+                       for j in range(0, len(parameters)):
+                               p1 = parameters[j]
+                               p2 = self.parameters[j]
+                               if not p1.compatible( p2 ):
+                                       raise RuntimeError( 'Parameter type mismatch in %s.  "%s" was "%s", now "%s".' % (name, p2.name, p2.type_expr.original_string, p1.type_expr.original_string))
+
+
+               if true_name == name or not self.initialized:
+                       self.return_type = return_type
+                       self.parameters = parameters
+
+                       for param in self.parameters:
+                               if param.is_image():
+                                       self.images.append( param )
+
+               if element.children:
+                       self.initialized = 1
+                       self.parameter_strings[name] = create_parameter_string(parameters, 1)
+               else:
+                       self.parameter_strings[name] = None
+
+               return
+
+
+       def get_images(self):
+               """Return potentially empty list of input images."""
+               return self.images
+
+
+       def parameterIterator(self):
+               return self.parameters.__iter__();
+
+
+       def get_parameter_string(self, entrypoint = None):
+               if entrypoint:
+                       s = self.parameter_strings[ entrypoint ]
+                       if s:
+                               return s
+               
+               return create_parameter_string( self.parameters, 1 )
+
+       def get_called_parameter_string(self):
+               p_string = ""
+               comma = ""
+
+               for p in self.parameterIterator():
+                       p_string = p_string + comma + p.name
+                       comma = ", "
+
+               return p_string
+
+
+       def is_abi(self):
+               return (self.offset >= 0 and not self.assign_offset)
+
+       def is_static_entry_point(self, name):
+               return name in self.static_entry_points
+
+       def dispatch_name(self):
+               if self.name in self.static_entry_points:
+                       return self.name
+               else:
+                       return "_dispatch_stub_%u" % (self.offset)
+
+       def static_name(self, name):
+               if name in self.static_entry_points:
+                       return name
+               else:
+                       return "_dispatch_stub_%u" % (self.offset)
+
+
+class gl_item_factory:
+       """Factory to create objects derived from gl_item."""
+
+       def create_item(self, item_name, element, context):
+               if item_name == "function":
+                       return gl_function(element, context)
+               if item_name == "type":
+                       return gl_type(element, context)
+               elif item_name == "enum":
+                       return gl_enum(element, context)
+               elif item_name == "parameter":
+                       return gl_parameter(element, context)
+               elif item_name == "api":
+                       return gl_api(self)
+               else:
+                       return None
+
+
+class gl_api:
+       def __init__(self, factory):
+               self.functions_by_name = {}
+               self.enums_by_name = {}
+               self.types_by_name = {}
+
+               self.category_dict = {}
+               self.categories = [{}, {}, {}, {}]
+
+               self.factory = factory
+
+               self.next_offset = 0
+
+               typeexpr.create_initial_types()
+               return
+
+
+       def process_element(self, doc):
+               element = doc.children
+               while element.type != "element" or element.name != "OpenGLAPI":
+                       element = element.next
+
+               if element:
+                       self.process_OpenGLAPI(element)
+               return
+
+
+       def process_OpenGLAPI(self, element):
+               child = element.children
+               while child:
+                       if child.type == "element":
+                               if child.name == "category":
+                                       self.process_category( child )
+                               elif child.name == "OpenGLAPI":
+                                       self.process_OpenGLAPI( child )
+
+                       child = child.next
+
+               return
+
+
+       def process_category(self, cat):
+               cat_name = cat.nsProp( "name", None )
+               cat_number = cat.nsProp( "number", None )
+
+               [cat_type, key] = classify_category(cat_name, cat_number)
+               self.categories[cat_type][key] = [cat_name, cat_number]
+
+               child = cat.children
+               while child:
+                       if child.type == "element":
+                               if child.name == "function":
+                                       func_name = real_function_name( child )
+
+                                       temp_name = child.nsProp( "name", None )
+                                       self.category_dict[ temp_name ] = [cat_name, cat_number]
+
+                                       if self.functions_by_name.has_key( func_name ):
+                                               func = self.functions_by_name[ func_name ]
+                                               func.process_element( child )
+                                       else:
+                                               func = self.factory.create_item( "function", child, self )
+                                               self.functions_by_name[ func_name ] = func
+
+                                       if func.offset >= self.next_offset:
+                                               self.next_offset = func.offset + 1
+
+
+                               elif child.name == "enum":
+                                       enum = self.factory.create_item( "enum", child, self )
+                                       self.enums_by_name[ enum.name ] = enum
+                               elif child.name == "type":
+                                       t = self.factory.create_item( "type", child, self )
+                                       self.types_by_name[ "GL" + t.name ] = t
+
+
+                       child = child.next
+
+               return
+
+
+       def functionIterateByCategory(self, cat = None):
+               """Iterate over functions by category.
+               
+               If cat is None, all known functions are iterated in category
+               order.  See classify_category for details of the ordering.
+               Within a category, functions are sorted by name.  If cat is
+               not None, then only functions in that category are iterated.
+               """
+               lists = [{}, {}, {}, {}]
+
+               for func in self.functionIterateAll():
+                       [cat_name, cat_number] = self.category_dict[func.name]
+
+                       if (cat == None) or (cat == cat_name):
+                               [func_cat_type, key] = classify_category(cat_name, cat_number)
+
+                               if not lists[func_cat_type].has_key(key):
+                                       lists[func_cat_type][key] = {}
+
+                               lists[func_cat_type][key][func.name] = func
+
+
+               functions = []
+               for func_cat_type in range(0,4):
+                       keys = lists[func_cat_type].keys()
+                       keys.sort()
+
+                       for key in keys:
+                               names = lists[func_cat_type][key].keys()
+                               names.sort()
+
+                               for name in names:
+                                       functions.append(lists[func_cat_type][key][name])
+
+               return functions.__iter__()
+
+
+       def functionIterateByOffset(self):
+               max_offset = -1
+               for func in self.functions_by_name.itervalues():
+                       if func.offset > max_offset:
+                               max_offset = func.offset
+
+
+               temp = [None for i in range(0, max_offset + 1)]
+               for func in self.functions_by_name.itervalues():
+                       if func.offset != -1:
+                               temp[ func.offset ] = func
+
+
+               list = []
+               for i in range(0, max_offset + 1):
+                       if temp[i]:
+                               list.append(temp[i])
+
+               return list.__iter__();
+
+
+       def functionIterateAll(self):
+               return self.functions_by_name.itervalues()
+
+
+       def enumIterateByName(self):
+               keys = self.enums_by_name.keys()
+               keys.sort()
+               
+               list = []
+               for enum in keys:
+                       list.append( self.enums_by_name[ enum ] )
+
+               return list.__iter__()
+
+
+       def categoryIterate(self):
+               """Iterate over categories.
+               
+               Iterate over all known categories in the order specified by
+               classify_category.  Each iterated value is a tuple of the
+               name and number (which may be None) of the category.
+               """
+
+               list = []
+               for cat_type in range(0,4):
+                       keys = self.categories[cat_type].keys()
+                       keys.sort()
+                       
+                       for key in keys:
+                               list.append(self.categories[cat_type][key])
+                               
+               return list.__iter__()
+
+
+       def get_category_for_name( self, name ):
+               if self.category_dict.has_key(name):
+                       return self.category_dict[name]
+               else:
+                       return ["<unknown category>", None]
+
+
+       def typeIterate(self):
+               return self.types_by_name.itervalues()
+
+
+       def find_type( self, type_name ):
+               if type_name in self.types_by_name:
+                       return self.types_by_name[ type_name ].type_expr
+               else:
+                       print "Unable to find base type matching \"%s\"." % (type_name)
+                       return None
diff --git a/src/mapi/glapi/gen/gl_and_glX_API.xml b/src/mapi/glapi/gen/gl_and_glX_API.xml
new file mode 100644 (file)
index 0000000..34c977e
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
+
+<OpenGLAPI>
+<xi:include href="glX_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+<xi:include href="gl_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
+</OpenGLAPI>
\ No newline at end of file
diff --git a/src/mapi/glapi/gen/gl_apitemp.py b/src/mapi/glapi/gen/gl_apitemp.py
new file mode 100644 (file)
index 0000000..41a40fb
--- /dev/null
@@ -0,0 +1,320 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML, glX_XML
+import license
+import sys, getopt
+
+class PrintGlOffsets(gl_XML.gl_print_base):
+       def __init__(self, es=False):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "gl_apitemp.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+
+               self.es = es
+
+               self.undef_list.append( "KEYWORD1" )
+               self.undef_list.append( "KEYWORD1_ALT" )
+               self.undef_list.append( "KEYWORD2" )
+               self.undef_list.append( "NAME" )
+               self.undef_list.append( "DISPATCH" )
+               self.undef_list.append( "RETURN_DISPATCH" )
+               self.undef_list.append( "DISPATCH_TABLE_NAME" )
+               self.undef_list.append( "UNUSED_TABLE_NAME" )
+               self.undef_list.append( "TABLE_ENTRY" )
+
+
+       def printFunction(self, f, name):
+               p_string = ""
+               o_string = ""
+               t_string = ""
+               comma = ""
+
+               if f.is_static_entry_point(name):
+                       keyword = "KEYWORD1"
+               else:
+                       keyword = "KEYWORD1_ALT"
+
+               n = f.static_name(name)
+
+               for p in f.parameterIterator():
+                       if p.is_padding:
+                               continue
+
+                       if p.is_pointer():
+                               cast = "(const void *) "
+                       else:
+                               cast = ""
+
+                       t_string = t_string + comma + p.format_string()
+                       p_string = p_string + comma + p.name
+                       o_string = o_string + comma + cast + p.name
+                       comma = ", "
+
+
+               if f.return_type != 'void':
+                       dispatch = "RETURN_DISPATCH"
+               else:
+                       dispatch = "DISPATCH"
+
+               need_proto = False
+               if not f.is_static_entry_point(name):
+                       need_proto = True
+               elif self.es:
+                       cat, num = api.get_category_for_name(name)
+                       if (cat.startswith("es") or cat.startswith("GL_OES")):
+                               need_proto = True
+               if need_proto:
+                       print '%s %s KEYWORD2 NAME(%s)(%s);' % (keyword, f.return_type, n, f.get_parameter_string(name))
+                       print ''
+
+               print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name))
+               print '{'
+               if p_string == "":
+                       print '   %s(%s, (), (F, "gl%s();\\n"));' \
+                               % (dispatch, f.name, name)
+               else:
+                       print '   %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
+                               % (dispatch, f.name, p_string, name, t_string, o_string)
+               print '}'
+               print ''
+               return
+
+       def printRealHeader(self):
+               print ''
+               self.printVisibility( "HIDDEN", "hidden" )
+               print """
+/*
+ * This file is a template which generates the OpenGL API entry point
+ * functions.  It should be included by a .c file which first defines
+ * the following macros:
+ *   KEYWORD1 - usually nothing, but might be __declspec(dllexport) on Win32
+ *   KEYWORD2 - usually nothing, but might be __stdcall on Win32
+ *   NAME(n)  - builds the final function name (usually add "gl" prefix)
+ *   DISPATCH(func, args, msg) - code to do dispatch of named function.
+ *                               msg is a printf-style debug message.
+ *   RETURN_DISPATCH(func, args, msg) - code to do dispatch with a return value
+ *
+ * Here is an example which generates the usual OpenGL functions:
+ *   #define KEYWORD1
+ *   #define KEYWORD2
+ *   #define NAME(func)  gl##func
+ *   #define DISPATCH(func, args, msg)                           \\
+ *          struct _glapi_table *dispatch = CurrentDispatch;     \\
+ *          (*dispatch->func) args
+ *   #define RETURN DISPATCH(func, args, msg)                    \\
+ *          struct _glapi_table *dispatch = CurrentDispatch;     \\
+ *          return (*dispatch->func) args
+ *
+ */
+
+
+#if defined( NAME )
+#ifndef KEYWORD1
+#define KEYWORD1
+#endif
+
+#ifndef KEYWORD1_ALT
+#define KEYWORD1_ALT HIDDEN
+#endif
+
+#ifndef KEYWORD2
+#define KEYWORD2
+#endif
+
+#ifndef DISPATCH
+#error DISPATCH must be defined
+#endif
+
+#ifndef RETURN_DISPATCH
+#error RETURN_DISPATCH must be defined
+#endif
+
+"""
+               return
+
+    
+
+       def printInitDispatch(self, api):
+               print """
+#endif /* defined( NAME ) */
+
+/*
+ * This is how a dispatch table can be initialized with all the functions
+ * we generated above.
+ */
+#ifdef DISPATCH_TABLE_NAME
+
+#ifndef TABLE_ENTRY
+#error TABLE_ENTRY must be defined
+#endif
+
+#ifdef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
+#error _GLAPI_SKIP_NORMAL_ENTRY_POINTS must not be defined
+#endif
+
+_glapi_proc DISPATCH_TABLE_NAME[] = {"""
+               for f in api.functionIterateByOffset():
+                       print '   TABLE_ENTRY(%s),' % (f.dispatch_name())
+
+               print '   /* A whole bunch of no-op functions.  These might be called'
+               print '    * when someone tries to call a dynamically-registered'
+               print '    * extension function without a current rendering context.'
+               print '    */'
+               for i in range(1, 100):
+                       print '   TABLE_ENTRY(Unused),'
+
+               print '};'
+               print '#endif /* DISPATCH_TABLE_NAME */'
+               print ''
+               return
+
+
+       def printAliasedTable(self, api):
+               print """
+/*
+ * This is just used to silence compiler warnings.
+ * We list the functions which are not otherwise used.
+ */
+#ifdef UNUSED_TABLE_NAME
+_glapi_proc UNUSED_TABLE_NAME[] = {"""
+
+               normal_entries = []
+               proto_entries = []
+               for f in api.functionIterateByOffset():
+                       normal_ents, proto_ents = self.classifyEntryPoints(f)
+
+                       # exclude f.name
+                       if f.name in normal_ents:
+                               normal_ents.remove(f.name)
+                       elif f.name in proto_ents:
+                               proto_ents.remove(f.name)
+
+                       normal_ents = [f.static_name(ent) for ent in normal_ents]
+                       proto_ents = [f.static_name(ent) for ent in proto_ents]
+
+                       normal_entries.extend(normal_ents)
+                       proto_entries.extend(proto_ents)
+
+               print '#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS'
+               for ent in normal_entries:
+                       print '   TABLE_ENTRY(%s),' % (ent)
+               print '#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */'
+               print '#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS'
+               for ent in proto_entries:
+                       print '   TABLE_ENTRY(%s),' % (ent)
+               print '#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */'
+
+               print '};'
+               print '#endif /*UNUSED_TABLE_NAME*/'
+               print ''
+               return
+
+
+       def classifyEntryPoints(self, func):
+               normal_names = []
+               normal_stubs = []
+               proto_names = []
+               proto_stubs = []
+               # classify the entry points
+               for name in func.entry_points:
+                       if func.has_different_protocol(name):
+                               if func.is_static_entry_point(name):
+                                       proto_names.append(name)
+                               else:
+                                       proto_stubs.append(name)
+                       else:
+                               if func.is_static_entry_point(name):
+                                       normal_names.append(name)
+                               else:
+                                       normal_stubs.append(name)
+               # there can be at most one stub for a function
+               if normal_stubs:
+                       normal_names.append(normal_stubs[0])
+               elif proto_stubs:
+                       proto_names.append(proto_stubs[0])
+
+               return (normal_names, proto_names)
+
+       def printBody(self, api):
+               normal_entry_points = []
+               proto_entry_points = []
+               for func in api.functionIterateByOffset():
+                       normal_ents, proto_ents = self.classifyEntryPoints(func)
+                       normal_entry_points.append((func, normal_ents))
+                       proto_entry_points.append((func, proto_ents))
+
+               print '#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS'
+               print ''
+               for func, ents in normal_entry_points:
+                       for ent in ents:
+                               self.printFunction(func, ent)
+               print ''
+               print '#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */'
+               print ''
+               print '/* these entry points might require different protocols */'
+               print '#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS'
+               print ''
+               for func, ents in proto_entry_points:
+                       for ent in ents:
+                               self.printFunction(func, ent)
+               print ''
+               print '#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */'
+               print ''
+
+               self.printInitDispatch(api)
+               self.printAliasedTable(api)
+               return
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-c]" % sys.argv[0]
+       print "-c          Enable compatibility with OpenGL ES."
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+    
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:c")
+       except Exception,e:
+               show_usage()
+
+       es = False
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-c":
+                       es = True
+
+       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+
+       printer = PrintGlOffsets(es)
+       printer.Print(api)
diff --git a/src/mapi/glapi/gen/gl_enums.py b/src/mapi/glapi/gen/gl_enums.py
new file mode 100644 (file)
index 0000000..644e085
--- /dev/null
@@ -0,0 +1,247 @@
+#!/usr/bin/python2
+# -*- Mode: Python; py-indent-offset: 8 -*-
+
+# (C) Copyright Zack Rusin 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
+# 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
+# IBM 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:
+#    Zack Rusin <zack@kde.org>
+
+import license
+import gl_XML
+import sys, getopt
+
+class PrintGlEnums(gl_XML.gl_print_base):
+
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "gl_enums.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2005 Brian Paul All Rights Reserved.""", "BRIAN PAUL")
+               self.enum_table = {}
+
+
+       def printRealHeader(self):
+               print '#include "main/glheader.h"'
+               print '#include "main/mfeatures.h"'
+               print '#include "main/enums.h"'
+               print '#include "main/imports.h"'
+               print ''
+               print 'typedef struct {'
+               print '   size_t offset;'
+               print '   int n;'
+               print '} enum_elt;'
+               print ''
+               return
+
+       def print_code(self):
+               print """
+typedef int (*cfunc)(const void *, const void *);
+
+/**
+ * Compare a key name to an element in the \c all_enums array.
+ *
+ * \c bsearch always passes the key as the first parameter and the pointer
+ * to the array element as the second parameter.  We can elimiate some
+ * extra work by taking advantage of that fact.
+ *
+ * \param a  Pointer to the desired enum name.
+ * \param b  Pointer to an element of the \c all_enums array.
+ */
+static int compar_name( const char *a, const enum_elt *b )
+{
+   return strcmp( a, & enum_string_table[ b->offset ] );
+}
+
+/**
+ * Compare a key enum value to an element in the \c all_enums array.
+ *
+ * \c bsearch always passes the key as the first parameter and the pointer
+ * to the array element as the second parameter.  We can elimiate some
+ * extra work by taking advantage of that fact.
+ *
+ * \param a  Pointer to the desired enum name.
+ * \param b  Pointer to an index into the \c all_enums array.
+ */
+static int compar_nr( const int *a, const unsigned *b )
+{
+   return a[0] - all_enums[*b].n;
+}
+
+
+static char token_tmp[20];
+
+const char *_mesa_lookup_enum_by_nr( int nr )
+{
+   unsigned * i;
+
+   i = (unsigned *) _mesa_bsearch(& nr, reduced_enums,
+                                  Elements(reduced_enums),
+                                  sizeof(reduced_enums[0]),
+                                  (cfunc) compar_nr);
+
+   if ( i != NULL ) {
+      return & enum_string_table[ all_enums[ *i ].offset ];
+   }
+   else {
+      /* this is not re-entrant safe, no big deal here */
+      sprintf(token_tmp, "0x%x", nr);
+      return token_tmp;
+   }
+}
+
+/* Get the name of an enum given that it is a primitive type.  Avoids
+ * GL_FALSE/GL_POINTS ambiguity and others.
+ */
+const char *_mesa_lookup_prim_by_nr( int nr )
+{
+   switch (nr) {
+   case GL_POINTS: return "GL_POINTS";
+   case GL_LINES: return "GL_LINES";
+   case GL_LINE_STRIP: return "GL_LINE_STRIP";
+   case GL_LINE_LOOP: return "GL_LINE_LOOP";
+   case GL_TRIANGLES: return "GL_TRIANGLES";
+   case GL_TRIANGLE_STRIP: return "GL_TRIANGLE_STRIP";
+   case GL_TRIANGLE_FAN: return "GL_TRIANGLE_FAN";
+   case GL_QUADS: return "GL_QUADS";
+   case GL_QUAD_STRIP: return "GL_QUAD_STRIP";
+   case GL_POLYGON: return "GL_POLYGON";
+   case GL_POLYGON+1: return "OUTSIDE_BEGIN_END";
+   default: return "<invalid>";
+   }
+}
+
+
+
+int _mesa_lookup_enum_by_name( const char *symbol )
+{
+   enum_elt * f = NULL;
+
+   if ( symbol != NULL ) {
+      f = (enum_elt *) _mesa_bsearch(symbol, all_enums,
+                                     Elements(all_enums),
+                                     sizeof( enum_elt ),
+                                     (cfunc) compar_name);
+   }
+
+   return (f != NULL) ? f->n : -1;
+}
+
+"""
+               return
+
+
+       def printBody(self, api_list):
+               self.enum_table = {}
+               for api in api_list:
+                       self.process_enums( api )
+
+               keys = self.enum_table.keys()
+               keys.sort()
+
+               name_table = []
+               enum_table = {}
+
+               for enum in keys:
+                       low_pri = 9
+                       for [name, pri] in self.enum_table[ enum ]:
+                               name_table.append( [name, enum] )
+
+                               if pri < low_pri:
+                                       low_pri = pri
+                                       enum_table[enum] = name
+                                               
+
+               name_table.sort()
+
+               string_offsets = {}
+               i = 0;
+               print 'LONGSTRING static const char enum_string_table[] = '
+               for [name, enum] in name_table:
+                       print '   "%s\\0"' % (name)
+                       string_offsets[ name ] = i
+                       i += len(name) + 1
+
+               print '   ;'
+               print ''
+
+
+               print 'static const enum_elt all_enums[%u] =' % (len(name_table))
+               print '{'
+               for [name, enum] in name_table:
+                       print '   { %5u, 0x%08X }, /* %s */' % (string_offsets[name], enum, name)
+               print '};'
+               print ''
+
+               print 'static const unsigned reduced_enums[%u] =' % (len(keys))
+               print '{'
+               for enum in keys:
+                       name = enum_table[ enum ]
+                       if [name, enum] not in name_table:
+                               print '      /* Error! %s, 0x%04x */ 0,' % (name, enum)
+                       else:
+                               i = name_table.index( [name, enum] )
+
+                               print '      %4u, /* %s */' % (i, name)
+               print '};'
+
+
+               self.print_code()
+               return
+
+
+       def process_enums(self, api):
+               for obj in api.enumIterateByName():
+                       if obj.value not in self.enum_table:
+                               self.enum_table[ obj.value ] = []
+
+
+                       enum = self.enum_table[ obj.value ]
+                       name = "GL_" + obj.name
+                       priority = obj.priority()
+                       already_in = False;
+                       for n, p in enum:
+                               if n == name:
+                                       already_in = True
+                       if not already_in:
+                               enum.append( [name, priority] )
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name]" % sys.argv[0]
+       sys.exit(1)
+
+if __name__ == '__main__':
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:")
+       except Exception,e:
+               show_usage()
+
+       api_list = []
+       for (arg,val) in args:
+               if arg == "-f":
+                       api = gl_XML.parse_GL_API( val )
+                       api_list.append(api);
+
+       printer = PrintGlEnums()
+       printer.Print( api_list )
diff --git a/src/mapi/glapi/gen/gl_offsets.py b/src/mapi/glapi/gen/gl_offsets.py
new file mode 100644 (file)
index 0000000..54867b3
--- /dev/null
@@ -0,0 +1,120 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML
+import license
+import sys, getopt
+
+class PrintGlOffsets(gl_XML.gl_print_base):
+       def __init__(self, es=False):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.es = es
+               self.name = "gl_offsets.py (from Mesa)"
+               self.header_tag = '_GLAPI_OFFSETS_H_'
+               self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+               return
+
+       def printBody(self, api):
+               print '/* this file should not be included directly in mesa */'
+               print ''
+
+               functions = []
+               abi_functions = []
+               alias_functions = []
+               count = 0
+               for f in api.functionIterateByOffset():
+                       if not f.is_abi():
+                               functions.append( [f, count] )
+                               count += 1
+                       else:
+                               abi_functions.append( f )
+
+                       if self.es:
+                               # remember functions with aliases
+                               if len(f.entry_points) > 1:
+                                       alias_functions.append(f)
+
+               for f in abi_functions:
+                       print '#define _gloffset_%s %d' % (f.name, f.offset)
+                       last_static = f.offset
+
+               print ''
+               print '#if !defined(_GLAPI_USE_REMAP_TABLE)'
+               print ''
+
+               for [f, index] in functions:
+                       print '#define _gloffset_%s %d' % (f.name, f.offset)
+
+               print '#define _gloffset_FIRST_DYNAMIC %d' % (api.next_offset)
+
+               print ''
+               print '#else'
+               print ''
+
+               for [f, index] in functions:
+                       print '#define _gloffset_%s driDispatchRemapTable[%s_remap_index]' % (f.name, f.name)
+
+               print ''
+               print '#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */'
+
+               if alias_functions:
+                       print ''
+                       print '/* define aliases for compatibility */'
+                       for f in alias_functions:
+                               for name in f.entry_points:
+                                       if name != f.name:
+                                               print '#define _gloffset_%s _gloffset_%s' % (name, f.name)
+               return
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-c]" % sys.argv[0]
+       print "    -c        Enable compatibility with OpenGL ES."
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+    
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:c")
+       except Exception,e:
+               show_usage()
+
+       es = False
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-c":
+                       es = True
+
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer = PrintGlOffsets(es)
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/gl_procs.py b/src/mapi/glapi/gen/gl_procs.py
new file mode 100644 (file)
index 0000000..5de61fb
--- /dev/null
@@ -0,0 +1,215 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import license
+import gl_XML, glX_XML
+import sys, getopt
+
+class PrintGlProcs(gl_XML.gl_print_base):
+       def __init__(self, long_strings, es=False):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.es = es
+               self.long_strings = long_strings
+               self.name = "gl_procs.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+(C) Copyright IBM Corporation 2004, 2006""", "BRIAN PAUL, IBM")
+
+
+       def printRealHeader(self):
+               print """
+/* This file is only included by glapi.c and is used for
+ * the GetProcAddress() function
+ */
+
+typedef struct {
+    GLint Name_offset;
+#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
+    _glapi_proc Address;
+#endif
+    GLuint Offset;
+} glprocs_table_t;
+
+#if   !defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , o }
+#elif  defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f1 , o }
+#elif  defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f2 , o }
+#elif !defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
+#endif
+
+"""
+               return
+
+       def printRealFooter(self):
+               print ''
+               print '#undef NAME_FUNC_OFFSET'
+               return
+
+       def printFunctionString(self, name):
+               if self.long_strings:
+                       print '    "gl%s\\0"' % (name)
+               else:
+                       print "    'g','l',",
+                       for c in name:
+                               print "'%s'," % (c),
+                       
+                       print "'\\0',"
+
+
+       def printBody(self, api):
+               print ''
+               if self.long_strings:
+                       print 'static const char gl_string_table[] ='
+               else:
+                       print 'static const char gl_string_table[] = {'
+
+               base_offset = 0
+               table = []
+               for func in api.functionIterateByOffset():
+                       name = func.dispatch_name()
+                       self.printFunctionString(func.name)
+                       table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name))
+
+                       # The length of the function's name, plus 2 for "gl",
+                       # plus 1 for the NUL.
+
+                       base_offset += len(func.name) + 3
+
+
+               for func in api.functionIterateByOffset():
+                       for n in func.entry_points:
+                               if n != func.name:
+                                       name = func.dispatch_name()
+                                       self.printFunctionString( n )
+                                       
+                                       if func.has_different_protocol(n):
+                                               alt_name = "gl" + func.static_glx_name(n)
+                                               table.append((base_offset, "gl" + name, alt_name, alt_name, func.name))
+                                       else:
+                                               table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name))
+
+                                       base_offset += len(n) + 3
+
+
+               if self.long_strings:
+                       print '    ;'
+               else:
+                       print '};'
+
+               print ''
+               print ''
+               print "#ifdef USE_MGL_NAMESPACE"
+               for func in api.functionIterateByOffset():
+                       for n in func.entry_points:
+                               if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
+                                       print '#define gl_dispatch_stub_%u mgl_dispatch_stub_%u' % (func.offset, func.offset)
+                                       break
+               print "#endif /* USE_MGL_NAMESPACE */"
+               print ''
+               print ''
+               print '#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)'
+               for func in api.functionIterateByOffset():
+                       for n in func.entry_points:
+                               if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
+                                       print '%s GLAPIENTRY gl_dispatch_stub_%u(%s);' % (func.return_type, func.offset, func.get_parameter_string())
+                                       break
+
+               if self.es:
+                       categories = {}
+                       for func in api.functionIterateByOffset():
+                               for n in func.entry_points:
+                                       cat, num = api.get_category_for_name(n)
+                                       if (cat.startswith("es") or cat.startswith("GL_OES")):
+                                               if not categories.has_key(cat):
+                                                       categories[cat] = []
+                                               proto = 'GLAPI %s GLAPIENTRY %s(%s);' \
+                                                               % (func.return_type, "gl" + n, func.get_parameter_string(n))
+                                               categories[cat].append(proto)
+                       if categories:
+                               print ''
+                               print '/* OpenGL ES specific prototypes */'
+                               print ''
+                               keys = categories.keys()
+                               keys.sort()
+                               for key in keys:
+                                       print '/* category %s */' % key
+                                       print "\n".join(categories[key])
+                               print ''
+
+               print '#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */'
+
+               print ''
+               print 'static const glprocs_table_t static_functions[] = {'
+
+               for info in table:
+                       print '    NAME_FUNC_OFFSET(%5u, %s, %s, %s, _gloffset_%s),' % info
+
+               print '    NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)'
+               print '};'
+               return
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-m mode] [-c]" % sys.argv[0]
+       print "-c          Enable compatibility with OpenGL ES."
+       print "-m mode     mode can be one of:"
+       print "    long  - Create code for compilers that can handle very"
+       print "            long string constants. (default)"
+       print "    short - Create code for compilers that can only handle"
+       print "            ANSI C89 string constants."
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c")
+       except Exception,e:
+               show_usage()
+
+       long_string = 1
+       es = False
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-m":
+                       if val == "short":
+                               long_string = 0
+                       elif val == "long":
+                               long_string = 1
+                       else:
+                               show_usage()
+               elif arg == "-c":
+                   es = True
+
+       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+       printer = PrintGlProcs(long_string, es)
+       printer.Print(api)
diff --git a/src/mapi/glapi/gen/gl_table.py b/src/mapi/glapi/gen/gl_table.py
new file mode 100644 (file)
index 0000000..3bd7569
--- /dev/null
@@ -0,0 +1,229 @@
+#!/usr/bin/python2
+
+# (C) Copyright IBM Corporation 2004
+# 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import gl_XML
+import license
+import sys, getopt
+
+class PrintGlTable(gl_XML.gl_print_base):
+       def __init__(self, es=False):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.es = es
+               self.header_tag = '_GLAPI_TABLE_H_'
+               self.name = "gl_table.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
+               return
+
+
+       def printBody(self, api):
+               for f in api.functionIterateByOffset():
+                       arg_string = f.get_parameter_string()
+                       print '   %s (GLAPIENTRYP %s)(%s); /* %d */' % (f.return_type, f.name, arg_string, f.offset)
+
+
+       def printRealHeader(self):
+               print '#ifndef GLAPIENTRYP'
+               print '# ifndef GLAPIENTRY'
+               print '#  define GLAPIENTRY'
+               print '# endif'
+               print ''
+               print '# define GLAPIENTRYP GLAPIENTRY *'
+               print '#endif'
+               print ''
+               print ''
+               print 'struct _glapi_table'
+               print '{'
+               return
+
+
+       def printRealFooter(self):
+               print '};'
+               return
+
+
+class PrintRemapTable(gl_XML.gl_print_base):
+       def __init__(self, es=False):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.es = es
+               self.header_tag = '_GLAPI_DISPATCH_H_'
+               self.name = "gl_table.py (from Mesa)"
+               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
+               return
+
+
+       def printRealHeader(self):
+               print """
+/* this file should not be included directly in mesa */
+
+/**
+ * \\file glapidispatch.h
+ * Macros for handling GL dispatch tables.
+ *
+ * For each known GL function, there are 3 macros in this file.  The first
+ * macro is named CALL_FuncName and is used to call that GL function using
+ * the specified dispatch table.  The other 2 macros, called GET_FuncName
+ * can SET_FuncName, are used to get and set the dispatch pointer for the
+ * named function in the specified dispatch table.
+ */
+"""
+               
+               return
+
+       def printBody(self, api):
+               print '#define CALL_by_offset(disp, cast, offset, parameters) \\'
+               print '    (*(cast (GET_by_offset(disp, offset)))) parameters'
+               print '#define GET_by_offset(disp, offset) \\'
+               print '    (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL'
+               print '#define SET_by_offset(disp, offset, fn) \\'
+               print '    do { \\'
+               print '        if ( (offset) < 0 ) { \\'
+               print '            /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\\n", */ \\'
+               print '            /*         __func__, __LINE__, disp, offset, # fn); */ \\'
+               print '            /* abort(); */ \\'
+               print '        } \\'
+               print '        else { \\'
+               print '            ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \\'
+               print '        } \\'
+               print '    } while(0)'
+               print ''
+
+               functions = []
+               abi_functions = []
+               alias_functions = []
+               count = 0
+               for f in api.functionIterateByOffset():
+                       if not f.is_abi():
+                               functions.append( [f, count] )
+                               count += 1
+                       else:
+                               abi_functions.append( f )
+
+                       if self.es:
+                               # remember functions with aliases
+                               if len(f.entry_points) > 1:
+                                       alias_functions.append(f)
+
+
+               for f in abi_functions:
+                       print '#define CALL_%s(disp, parameters) (*((disp)->%s)) parameters' % (f.name, f.name)
+                       print '#define GET_%s(disp) ((disp)->%s)' % (f.name, f.name)
+                       print '#define SET_%s(disp, fn) ((disp)->%s = fn)' % (f.name, f.name)
+
+
+               print ''
+               print '#if !defined(_GLAPI_USE_REMAP_TABLE)'
+               print ''
+
+               for [f, index] in functions:
+                       print '#define CALL_%s(disp, parameters) (*((disp)->%s)) parameters' % (f.name, f.name)
+                       print '#define GET_%s(disp) ((disp)->%s)' % (f.name, f.name)
+                       print '#define SET_%s(disp, fn) ((disp)->%s = fn)' % (f.name, f.name)
+
+               print ''
+               print '#else'
+               print ''
+               print '#define driDispatchRemapTable_size %u' % (count)
+               print 'extern int driDispatchRemapTable[ driDispatchRemapTable_size ];'
+               print ''
+
+               for [f, index] in functions:
+                       print '#define %s_remap_index %u' % (f.name, index)
+
+               print ''
+
+               for [f, index] in functions:
+                       arg_string = gl_XML.create_parameter_string( f.parameters, 0 )
+                       cast = '%s (GLAPIENTRYP)(%s)' % (f.return_type, arg_string)
+
+                       print '#define CALL_%s(disp, parameters) CALL_by_offset(disp, (%s), driDispatchRemapTable[%s_remap_index], parameters)' % (f.name, cast, f.name)
+                       print '#define GET_%s(disp) GET_by_offset(disp, driDispatchRemapTable[%s_remap_index])' % (f.name, f.name)
+                       print '#define SET_%s(disp, fn) SET_by_offset(disp, driDispatchRemapTable[%s_remap_index], fn)' % (f.name, f.name)
+
+
+               print ''
+               print '#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */'
+
+               if alias_functions:
+                       print ''
+                       print '/* define aliases for compatibility */'
+                       for f in alias_functions:
+                               for name in f.entry_points:
+                                       if name != f.name:
+                                               print '#define CALL_%s(disp, parameters) CALL_%s(disp, parameters)' % (name, f.name)
+                                               print '#define GET_%s(disp) GET_%s(disp)' % (name, f.name)
+                                               print '#define SET_%s(disp, fn) SET_%s(disp, fn)' % (name, f.name)
+                       print ''
+
+                       print '#if defined(_GLAPI_USE_REMAP_TABLE)'
+                       for f in alias_functions:
+                               for name in f.entry_points:
+                                       if name != f.name:
+                                               print '#define %s_remap_index %s_remap_index' % (name, f.name)
+                       print '#endif /* defined(_GLAPI_USE_REMAP_TABLE) */'
+                       print ''
+
+               return
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-m mode] [-c]" % sys.argv[0]
+       print "    -m mode   Mode can be 'table' or 'remap_table'."
+       print "    -c        Enable compatibility with OpenGL ES."
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+    
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c")
+       except Exception,e:
+               show_usage()
+
+       mode = "table"
+       es = False
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+               elif arg == "-m":
+                       mode = val
+               elif arg == "-c":
+                       es = True
+
+       if mode == "table":
+               printer = PrintGlTable(es)
+       elif mode == "remap_table":
+               printer = PrintRemapTable(es)
+       else:
+               show_usage()
+
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/gl_x86-64_asm.py b/src/mapi/glapi/gen/gl_x86-64_asm.py
new file mode 100644 (file)
index 0000000..e6e78c4
--- /dev/null
@@ -0,0 +1,334 @@
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import license
+import gl_XML, glX_XML
+import sys, getopt, copy
+
+def should_use_push(registers):
+       for [reg, offset] in registers:
+               if reg[1:4] == "xmm":
+                       return 0
+
+       N = len(registers)
+       return (N & 1) != 0
+
+
+def local_size(registers):
+       # The x86-64 ABI says "the value (%rsp - 8) is always a multiple of
+       # 16 when control is transfered to the function entry point."  This
+       # means that the local stack usage must be (16*N)+8 for some value
+       # of N.  (16*N)+8 = (8*(2N))+8 = 8*(2N+1).  As long as N is odd, we
+       # meet this requirement.
+
+       N = (len(registers) | 1)
+       return 8*N
+
+
+def save_all_regs(registers):
+       adjust_stack = 0
+       if not should_use_push(registers):
+               adjust_stack = local_size(registers)
+               print '\tsubq\t$%u, %%rsp' % (adjust_stack)
+
+       for [reg, stack_offset] in registers:
+               save_reg( reg, stack_offset, adjust_stack )
+       return
+
+
+def restore_all_regs(registers):
+       adjust_stack = 0
+       if not should_use_push(registers):
+               adjust_stack = local_size(registers)
+
+       temp = copy.deepcopy(registers)
+       while len(temp):
+               [reg, stack_offset] = temp.pop()
+               restore_reg(reg, stack_offset, adjust_stack)
+
+       if adjust_stack:
+               print '\taddq\t$%u, %%rsp' % (adjust_stack)
+       return
+
+
+def save_reg(reg, offset, use_move):
+       if use_move:
+               if offset == 0:
+                       print '\tmovq\t%s, (%%rsp)' % (reg)
+               else:
+                       print '\tmovq\t%s, %u(%%rsp)' % (reg, offset)
+       else:
+               print '\tpushq\t%s' % (reg)
+
+       return
+
+
+def restore_reg(reg, offset, use_move):
+       if use_move:
+               if offset == 0:
+                       print '\tmovq\t(%%rsp), %s' % (reg)
+               else:
+                       print '\tmovq\t%u(%%rsp), %s' % (offset, reg)
+       else:
+               print '\tpopq\t%s' % (reg)
+
+       return
+
+
+class PrintGenericStubs(gl_XML.gl_print_base):
+
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "gl_x86-64_asm.py (from Mesa)"
+               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
+               return
+
+
+       def get_stack_size(self, f):
+               size = 0
+               for p in f.parameterIterator():
+                       size += p.get_stack_size()
+
+               return size
+
+
+       def printRealHeader(self):
+               print "/* If we build with gcc's -fvisibility=hidden flag, we'll need to change"
+               print " * the symbol visibility mode to 'default'."
+               print ' */'
+               print ''
+               print '#include "x86/assyntax.h"'
+               print ''
+               print '#ifdef __GNUC__'
+               print '#  pragma GCC visibility push(default)'
+               print '#  define HIDDEN(x) .hidden x'
+               print '#else'
+               print '#  define HIDDEN(x)'
+               print '#endif'
+               print ''
+               print '# if defined(USE_MGL_NAMESPACE)'
+               print '#  define GL_PREFIX(n) GLNAME(CONCAT(mgl,n))'
+               print '#  define _glapi_Dispatch _mglapi_Dispatch'
+               print '# else'
+               print '#  define GL_PREFIX(n) GLNAME(CONCAT(gl,n))'
+               print '# endif'
+               print ''
+               print '#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)'
+               print '#  define THREADS'
+               print '#endif'
+               print ''
+               print '\t.text'
+               print ''
+               print '#ifdef GLX_USE_TLS'
+               print ''
+               print '\t.globl _x86_64_get_get_dispatch; HIDDEN(_x86_64_get_get_dispatch)'
+               print '_x86_64_get_get_dispatch:'
+               print '\tlea\t_x86_64_get_dispatch(%rip), %rax'
+               print '\tret'
+               print ''
+               print '\t.p2align\t4,,15'
+               print '_x86_64_get_dispatch:'
+               print '\tmovq\t_glapi_tls_Dispatch@GOTTPOFF(%rip), %rax'
+               print '\tmovq\t%fs:(%rax), %rax'
+               print '\tret'
+               print '\t.size\t_x86_64_get_dispatch, .-_x86_64_get_dispatch'
+               print ''
+               print '#elif defined(PTHREADS)'
+               print ''
+               print '\t.extern\t_glapi_Dispatch'
+               print '\t.extern\t_gl_DispatchTSD'
+               print '\t.extern\tpthread_getspecific'
+               print ''
+               print '\t.p2align\t4,,15'
+               print '_x86_64_get_dispatch:'
+               print '\tmovq\t_gl_DispatchTSD(%rip), %rdi'
+               print '\tjmp\tpthread_getspecific@PLT'
+               print ''
+               print '#elif defined(THREADS)'
+               print ''
+               print '\t.extern\t_glapi_get_dispatch'
+               print ''
+               print '#endif'
+               print ''
+               return
+
+
+       def printRealFooter(self):
+               print ''
+               print '#if defined(GLX_USE_TLS) && defined(__linux__)'
+               print ' .section ".note.ABI-tag", "a"'
+               print ' .p2align 2'
+               print ' .long   1f - 0f   /* name length */'
+               print ' .long   3f - 2f   /* data length */'
+               print ' .long   1         /* note length */'
+               print '0:       .asciz "GNU"      /* vendor name */'
+               print '1:       .p2align 2'
+               print '2:       .long   0         /* note data: the ABI tag */'
+               print ' .long   2,4,20    /* Minimum kernel version w/TLS */'
+               print '3:       .p2align 2        /* pad out section */'
+               print '#endif /* GLX_USE_TLS */'
+               print ''
+               print '#if defined (__ELF__) && defined (__linux__)'
+               print ' .section .note.GNU-stack,"",%progbits'
+               print '#endif'
+               return
+
+
+       def printFunction(self, f):
+               
+               # The x86-64 ABI divides function parameters into a couple
+               # classes.  For the OpenGL interface, the only ones that are
+               # relevent are INTEGER and SSE.  Basically, the first 8
+               # GLfloat or GLdouble parameters are placed in %xmm0 - %xmm7,
+               # the first 6 non-GLfloat / non-GLdouble parameters are placed
+               # in registers listed in int_parameters.
+               #
+               # If more parameters than that are required, they are passed
+               # on the stack.  Therefore, we just have to make sure that
+               # %esp hasn't changed when we jump to the actual function.
+               # Since we're jumping to the function (and not calling it), we
+               # have to make sure of that anyway!
+
+               int_parameters = ["%rdi", "%rsi", "%rdx", "%rcx", "%r8", "%r9"]
+
+               int_class = 0
+               sse_class = 0
+               stack_offset = 0
+               registers = []
+               for p in f.parameterIterator():
+                       type_name = p.get_base_type_string()
+
+                       if p.is_pointer() or (type_name != "GLfloat" and type_name != "GLdouble"):
+                               if int_class < 6:
+                                       registers.append( [int_parameters[int_class], stack_offset] )
+                                       int_class += 1
+                                       stack_offset += 8
+                       else:
+                               if sse_class < 8:
+                                       registers.append( ["%%xmm%u" % (sse_class), stack_offset] )
+                                       sse_class += 1
+                                       stack_offset += 8
+
+               if ((int_class & 1) == 0) and (sse_class == 0):
+                       registers.append( ["%rbp", 0] )
+
+
+               name = f.dispatch_name()
+
+               print '\t.p2align\t4,,15'
+               print '\t.globl\tGL_PREFIX(%s)' % (name)
+               print '\t.type\tGL_PREFIX(%s), @function' % (name)
+               if not f.is_static_entry_point(f.name):
+                       print '\tHIDDEN(GL_PREFIX(%s))' % (name)
+               print 'GL_PREFIX(%s):' % (name)
+               print '#if defined(GLX_USE_TLS)'
+               print '\tcall\t_x86_64_get_dispatch@PLT'
+               print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
+               print '\tjmp\t*%r11'
+               print '#elif defined(PTHREADS)'
+               
+               save_all_regs(registers)
+               print '\tcall\t_x86_64_get_dispatch@PLT'
+               restore_all_regs(registers)
+
+               if f.offset == 0:
+                       print '\tmovq\t(%rax), %r11'
+               else:
+                       print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
+
+               print '\tjmp\t*%r11'
+
+               print '#else'
+               print '\tmovq\t_glapi_Dispatch(%rip), %rax'
+               print '\ttestq\t%rax, %rax'
+               print '\tje\t1f'
+               print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
+               print '\tjmp\t*%r11'
+               print '1:'
+
+               save_all_regs(registers)
+               print '\tcall\t_glapi_get_dispatch'
+               restore_all_regs(registers)
+
+               print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
+               print '\tjmp\t*%r11'
+               print '#endif /* defined(GLX_USE_TLS) */'
+
+               print '\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (name, name)
+               print ''
+               return
+
+
+       def printBody(self, api):
+               for f in api.functionIterateByOffset():
+                       self.printFunction(f)
+
+
+               for f in api.functionIterateByOffset():
+                       dispatch = f.dispatch_name()
+                       for n in f.entry_points:
+                               if n != f.name:
+                                       if f.is_static_entry_point(n):
+                                               text = '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, dispatch)
+
+                                               if f.has_different_protocol(n):
+                                                       print '#ifndef GLX_INDIRECT_RENDERING'
+                                                       print text
+                                                       print '#endif'
+                                               else:
+                                                       print text
+
+               return
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+       mode = "generic"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
+       except Exception,e:
+               show_usage()
+
+       for (arg,val) in args:
+               if arg == '-m':
+                       mode = val
+               elif arg == "-f":
+                       file_name = val
+
+       if mode == "generic":
+               printer = PrintGenericStubs()
+       else:
+               print "ERROR: Invalid mode \"%s\" specified." % mode
+               show_usage()
+
+       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+       printer.Print(api)
diff --git a/src/mapi/glapi/gen/gl_x86_asm.py b/src/mapi/glapi/gen/gl_x86_asm.py
new file mode 100644 (file)
index 0000000..10dfa1d
--- /dev/null
@@ -0,0 +1,270 @@
+#!/usr/bin/env python
+
+# (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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import license
+import gl_XML, glX_XML
+import sys, getopt
+
+class PrintGenericStubs(gl_XML.gl_print_base):
+
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "gl_x86_asm.py (from Mesa)"
+               self.license = license.bsd_license_template % ( \
+"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+(C) Copyright IBM Corporation 2004, 2005""", "BRIAN PAUL, IBM")
+               return
+
+
+       def get_stack_size(self, f):
+               size = 0
+               for p in f.parameterIterator():
+                       if p.is_padding:
+                               continue
+
+                       size += p.get_stack_size()
+
+               return size
+
+
+       def printRealHeader(self):
+               print '#include "x86/assyntax.h"'
+               print '#include "glapi/glapioffsets.h"'
+               print ''
+               print '#if defined(STDCALL_API)'
+               print '# if defined(USE_MGL_NAMESPACE)'
+               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))'
+               print '# else'
+               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))'
+               print '# endif'
+               print '#else'
+               print '# if defined(USE_MGL_NAMESPACE)'
+               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))'
+               print '#  define _glapi_Dispatch _mglapi_Dispatch'
+               print '# else'
+               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))'
+               print '# endif'
+               print '#endif'
+               print ''
+               print '#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))'
+               print ''
+               print '#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)'
+               print '#define GLOBL_FN(x) GLOBL x ; .type x, function'
+               print '#else'
+               print '#define GLOBL_FN(x) GLOBL x'
+               print '#endif'
+               print ''
+               print '#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)'
+               print '#  define THREADS'
+               print '#endif'
+               print ''
+               print '#ifdef GLX_USE_TLS'
+               print ''
+               print '#ifdef GLX_X86_READONLY_TEXT'
+               print '# define CTX_INSNS MOV_L(GS:(EAX), EAX)'
+               print '#else'
+               print '# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */'
+               print '#endif'
+               print ''
+               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+               print '\tCALL(_x86_get_dispatch) ;\t\t\t\\'
+               print '\tCTX_INSNS ;                                    \\'
+               print '\tJMP(GL_OFFSET(off))'
+               print ''
+               print '#elif defined(PTHREADS)'
+               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+               print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
+               print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
+               print '\tJE(1f) ;\t\t\t\t\t\\'
+               print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
+               print '1:\tCALL(_x86_get_dispatch) ;\t\t\t\\'
+               print '\tJMP(GL_OFFSET(off))'
+               print '#elif defined(THREADS)'
+               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+               print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
+               print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
+               print '\tJE(1f) ;\t\t\t\t\t\\'
+               print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
+               print '1:\tCALL(_glapi_get_dispatch) ;\t\t\t\\'
+               print '\tJMP(GL_OFFSET(off))'
+               print '#else /* Non-threaded version. */'
+               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
+               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
+               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
+               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
+               print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
+               print '\tJMP(GL_OFFSET(off))'
+               print '#endif'
+               print ''
+               print '#ifdef HAVE_ALIAS'
+               print '#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
+               print '\t.globl\tGL_PREFIX(fn, fn_alt) ;\t\t\t\\'
+               print '\t.set\tGL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)'
+               print '#else'
+               print '#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
+               print '    GL_STUB(fn, off, fn_alt)'
+               print '#endif'
+               print ''
+               print 'SEG_TEXT'
+               print ''
+               print '#ifdef GLX_USE_TLS'
+               print ''
+               print '\tGLOBL\tGLNAME(_x86_get_dispatch)'
+               print '\tHIDDEN(GLNAME(_x86_get_dispatch))'
+               print 'ALIGNTEXT16'
+               print 'GLNAME(_x86_get_dispatch):'
+               print '\tcall   1f'
+               print '1:\tpopl %eax'
+               print '\taddl   $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax'
+               print '\tmovl   _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax'
+               print '\tret'
+               print ''
+               print '#elif defined(PTHREADS)'
+               print 'EXTERN GLNAME(_glapi_Dispatch)'
+               print 'EXTERN GLNAME(_gl_DispatchTSD)'
+               print 'EXTERN GLNAME(pthread_getspecific)'
+               print ''
+               print 'ALIGNTEXT16'
+               print 'GLNAME(_x86_get_dispatch):'
+               print '\tSUB_L(CONST(24), ESP)'
+               print '\tPUSH_L(GLNAME(_gl_DispatchTSD))'
+               print '\tCALL(GLNAME(pthread_getspecific))'
+               print '\tADD_L(CONST(28), ESP)'
+               print '\tRET'
+               print '#elif defined(THREADS)'
+               print 'EXTERN GLNAME(_glapi_get_dispatch)'
+               print '#endif'
+               print ''
+
+               print '#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )'
+               print '\t\t.section\twtext, "awx", @progbits'
+               print '#endif /* defined( GLX_USE_TLS ) */'
+
+               print ''
+               print '\t\tALIGNTEXT16'
+               print '\t\tGLOBL GLNAME(gl_dispatch_functions_start)'
+               print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_start))'
+               print 'GLNAME(gl_dispatch_functions_start):'
+               print ''
+               return
+
+
+       def printRealFooter(self):
+               print ''
+               print '\t\tGLOBL\tGLNAME(gl_dispatch_functions_end)'
+               print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_end))'
+               print '\t\tALIGNTEXT16'
+               print 'GLNAME(gl_dispatch_functions_end):'
+               print ''
+               print '#if defined(GLX_USE_TLS) && defined(__linux__)'
+               print ' .section ".note.ABI-tag", "a"'
+               print ' .p2align 2'
+               print ' .long   1f - 0f   /* name length */'
+               print ' .long   3f - 2f   /* data length */'
+               print ' .long   1         /* note length */'
+               print '0:       .asciz "GNU"      /* vendor name */'
+               print '1:       .p2align 2'
+               print '2:       .long   0         /* note data: the ABI tag */'
+               print ' .long   2,4,20    /* Minimum kernel version w/TLS */'
+               print '3:       .p2align 2        /* pad out section */'
+               print '#endif /* GLX_USE_TLS */'
+               print ''
+               print '#if defined (__ELF__) && defined (__linux__)'
+               print ' .section .note.GNU-stack,"",%progbits'
+               print '#endif'
+               return
+
+
+       def printBody(self, api):
+               for f in api.functionIterateByOffset():
+                       name = f.dispatch_name()
+                       stack = self.get_stack_size(f)
+                       alt = "%s@%u" % (name, stack)
+
+                       print '\tGL_STUB(%s, _gloffset_%s, %s)' % (name, f.name, alt)
+
+                       if not f.is_static_entry_point(f.name):
+                               print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
+
+
+               for f in api.functionIterateByOffset():
+                       name = f.dispatch_name()
+                       stack = self.get_stack_size(f)
+                       alt = "%s@%u" % (name, stack)
+
+                       for n in f.entry_points:
+                               if f.is_static_entry_point(n):
+                                       if n != f.name:
+                                               alt2 = "%s@%u" % (n, stack)
+                                               text = '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, name, alt)
+
+                                               if f.has_different_protocol(n):
+                                                       print '#ifndef GLX_INDIRECT_RENDERING'
+                                                       print text
+                                                       print '#endif'
+                                               else:
+                                                       print text
+
+               return
+
+def show_usage():
+       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+       mode = "generic"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
+       except Exception,e:
+               show_usage()
+
+       for (arg,val) in args:
+               if arg == '-m':
+                       mode = val
+               elif arg == "-f":
+                       file_name = val
+
+       if mode == "generic":
+               printer = PrintGenericStubs()
+       else:
+               print "ERROR: Invalid mode \"%s\" specified." % mode
+               show_usage()
+
+       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
+       printer.Print(api)
diff --git a/src/mapi/glapi/gen/license.py b/src/mapi/glapi/gen/license.py
new file mode 100644 (file)
index 0000000..0218164
--- /dev/null
@@ -0,0 +1,47 @@
+# (C) Copyright IBM Corporation 2004
+# 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+bsd_license_template = """%s
+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
+%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.""" 
diff --git a/src/mapi/glapi/gen/mesadef.py b/src/mapi/glapi/gen/mesadef.py
new file mode 100644 (file)
index 0000000..38b0246
--- /dev/null
@@ -0,0 +1,216 @@
+#!/usr/bin/env python
+
+
+# Mesa 3-D graphics library
+# Version:  4.1
+# 
+# Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+# 
+# Permission is hereby granted, free of charge, to any person obtaining a
+# copy of this software and associated documentation files (the "Software"),
+# to deal in the Software without restriction, including without limitation
+# the rights to use, copy, modify, merge, publish, distribute, sublicense,
+# and/or sell copies of the Software, and to permit persons to whom the
+# Software is furnished to do so, subject to the following conditions:
+# 
+# The above copyright notice and this permission notice shall be included
+# in all copies or substantial portions of the Software.
+# 
+# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+
+# Generate the mesa.def file for Windows.
+#
+# Usage:
+#    mesadef.py >mesa.def
+#    Then copy to src/mesa/drivers/windows/gdi
+#
+# Dependencies:
+#    The apispec file must be in the current directory.
+
+
+
+import apiparser
+import string
+
+
+def PrintHead():
+       print '; DO NOT EDIT - This file generated automatically by mesadef.py script'
+       print 'DESCRIPTION \'Mesa (OpenGL work-alike) for Win32\''
+       print 'VERSION 6.0'
+       print ';'
+       print '; Module definition file for Mesa (OPENGL32.DLL)'
+       print ';'
+       print '; Note: The OpenGL functions use the STDCALL'
+       print '; function calling convention.  Microsoft\'s'
+       print '; OPENGL32 uses this convention and so must the'
+       print '; Mesa OPENGL32 so that the Mesa DLL can be used'
+       print '; as a drop-in replacement.'
+       print ';'
+       print '; The linker exports STDCALL entry points with'
+       print '; \'decorated\' names; e.g., _glBegin@0, where the'
+       print '; trailing number is the number of bytes of '
+       print '; parameter data pushed onto the stack.  The'
+       print '; callee is responsible for popping this data'
+       print '; off the stack, usually via a RETF n instruction.'
+       print ';'
+       print '; However, the Microsoft OPENGL32.DLL does not export'
+       print '; the decorated names, even though the calling convention'
+       print '; is STDCALL.  So, this module definition file is'
+       print '; needed to force the Mesa OPENGL32.DLL to export the'
+       print '; symbols in the same manner as the Microsoft DLL.'
+       print '; Were it not for this problem, this file would not'
+       print '; be needed (for the gl* functions) since the entry'
+       print '; points are compiled with dllexport declspec.'
+       print ';'
+       print '; However, this file is still needed to export "internal"'
+       print '; Mesa symbols for the benefit of the OSMESA32.DLL.'
+       print ';'
+       print 'EXPORTS'
+       return
+#enddef
+
+
+def PrintTail():
+       print ';'
+       print '; WGL API'
+       print '\twglChoosePixelFormat'
+       print '\twglCopyContext'
+       print '\twglCreateContext'
+       print '\twglCreateLayerContext'
+       print '\twglDeleteContext'
+       print '\twglDescribeLayerPlane'
+       print '\twglDescribePixelFormat'
+       print '\twglGetCurrentContext'
+       print '\twglGetCurrentDC'
+       print '\twglGetExtensionsStringARB'
+       print '\twglGetLayerPaletteEntries'
+       print '\twglGetPixelFormat'
+       print '\twglGetProcAddress'
+       print '\twglMakeCurrent'
+       print '\twglRealizeLayerPalette'
+       print '\twglSetLayerPaletteEntries'
+       print '\twglSetPixelFormat'
+       print '\twglShareLists'
+       print '\twglSwapBuffers'
+       print '\twglSwapLayerBuffers'
+       print '\twglUseFontBitmapsA'
+       print '\twglUseFontBitmapsW'
+       print '\twglUseFontOutlinesA'
+       print '\twglUseFontOutlinesW'
+       print ';'
+       print '; Mesa internals - mostly for OSMESA'
+       print '\t_ac_CreateContext'
+       print '\t_ac_DestroyContext'
+       print '\t_ac_InvalidateState'
+       print '\t_glapi_get_context'
+       print '\t_glapi_get_proc_address'
+       print '\t_mesa_buffer_data'
+       print '\t_mesa_buffer_map'
+       print '\t_mesa_buffer_subdata'
+       print '\t_mesa_choose_tex_format'
+       print '\t_mesa_compressed_texture_size'
+       print '\t_mesa_create_framebuffer'
+       print '\t_mesa_create_visual'
+       print '\t_mesa_delete_buffer_object'
+       print '\t_mesa_delete_texture_object'
+       print '\t_mesa_destroy_framebuffer'
+       print '\t_mesa_destroy_visual'
+       print '\t_mesa_enable_1_3_extensions'
+       print '\t_mesa_enable_1_4_extensions'
+       print '\t_mesa_enable_1_5_extensions'
+       print '\t_mesa_enable_sw_extensions'
+       print '\t_mesa_error'
+       print '\t_mesa_free_context_data'
+       print '\t_mesa_get_current_context'
+       print '\t_mesa_init_default_imports'
+       print '\t_mesa_initialize_context'
+       print '\t_mesa_make_current'
+       print '\t_mesa_new_buffer_object'
+       print '\t_mesa_new_texture_object'
+       print '\t_mesa_problem'
+       print '\t_mesa_ResizeBuffersMESA'
+       print '\t_mesa_store_compressed_teximage1d'
+       print '\t_mesa_store_compressed_teximage2d'
+       print '\t_mesa_store_compressed_teximage3d'
+       print '\t_mesa_store_compressed_texsubimage1d'
+       print '\t_mesa_store_compressed_texsubimage2d'
+       print '\t_mesa_store_compressed_texsubimage3d'
+       print '\t_mesa_store_teximage1d'
+       print '\t_mesa_store_teximage2d'
+       print '\t_mesa_store_teximage3d'
+       print '\t_mesa_store_texsubimage1d'
+       print '\t_mesa_store_texsubimage2d'
+       print '\t_mesa_store_texsubimage3d'
+       print '\t_mesa_test_proxy_teximage'
+       print '\t_mesa_Viewport'
+       print '\t_mesa_meta_CopyColorSubTable'
+       print '\t_mesa_meta_CopyColorTable'
+       print '\t_mesa_meta_CopyConvolutionFilter1D'
+       print '\t_mesa_meta_CopyConvolutionFilter2D'
+       print '\t_mesa_meta_CopyTexImage1D'
+       print '\t_mesa_meta_CopyTexImage2D'
+       print '\t_mesa_meta_CopyTexSubImage1D'
+       print '\t_mesa_meta_CopyTexSubImage2D'
+       print '\t_mesa_meta_CopyTexSubImage3D'
+       print '\t_swrast_Accum'
+       print '\t_swrast_alloc_buffers'
+       print '\t_swrast_Bitmap'
+       print '\t_swrast_CopyPixels'
+       print '\t_swrast_DrawPixels'
+       print '\t_swrast_GetDeviceDriverReference'
+       print '\t_swrast_Clear'
+       print '\t_swrast_choose_line'
+       print '\t_swrast_choose_triangle'
+       print '\t_swrast_CreateContext'
+       print '\t_swrast_DestroyContext'
+       print '\t_swrast_InvalidateState'
+       print '\t_swrast_ReadPixels'
+       print '\t_swrast_zbuffer_address'
+       print '\t_swsetup_Wakeup'
+       print '\t_swsetup_CreateContext'
+       print '\t_swsetup_DestroyContext'
+       print '\t_swsetup_InvalidateState'
+       print '\t_tnl_CreateContext'
+       print '\t_tnl_DestroyContext'
+       print '\t_tnl_InvalidateState'
+       print '\t_tnl_MakeCurrent'
+       print '\t_tnl_run_pipeline'
+#enddef
+
+
+records = []
+
+def FindOffset(funcName):
+       for (name, alias, offset) in records:
+               if name == funcName:
+                       return offset
+               #endif
+       #endfor
+       return -1
+#enddef
+
+
+def EmitEntry(name, returnType, argTypeList, argNameList, alias, offset):
+       if alias == '':
+               dispatchName = name
+       else:
+               dispatchName = alias
+       if offset < 0:
+               offset = FindOffset(dispatchName)
+       if offset >= 0 and string.find(name, "unused") == -1:
+               print '\tgl%s' % (name)
+               # save this info in case we need to look up an alias later
+               records.append((name, dispatchName, offset))
+
+#enddef
+
+
+PrintHead()
+apiparser.ProcessSpecFile("APIspec", EmitEntry)
+PrintTail()
diff --git a/src/mapi/glapi/gen/next_available_offset.sh b/src/mapi/glapi/gen/next_available_offset.sh
new file mode 100755 (executable)
index 0000000..e7d6c2f
--- /dev/null
@@ -0,0 +1,39 @@
+#!/usr/bin/env bash
+#
+# (C) Copyright IBM Corporation 2004
+# 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+# Trivial shell script to search the API definition file and print out the
+# next numerically available API entry-point offset.  This could probably
+# be made smarter, but it would be better to use the existin Python
+# framework to do that.  This is just a quick-and-dirty hack.
+
+num=$(grep 'offset="' gl_API.xml |\
+    sed 's/.\+ offset="//g;s/".*$//g' |\
+    grep -v '?' |\
+    sort -rn |\
+    head -1)
+    
+echo $((num + 1))
diff --git a/src/mapi/glapi/gen/remap_helper.py b/src/mapi/glapi/gen/remap_helper.py
new file mode 100644 (file)
index 0000000..69b8e5e
--- /dev/null
@@ -0,0 +1,218 @@
+#!/usr/bin/env python
+
+# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
+# All Rights Reserved.
+#
+# This is based on extension_helper.py by Ian Romanick.
+#
+# 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
+# IBM 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.
+
+import gl_XML
+import license
+import sys, getopt, string
+
+def get_function_spec(func):
+       sig = ""
+       # derive parameter signature
+       for p in func.parameterIterator():
+               if p.is_padding:
+                       continue
+               # FIXME: This is a *really* ugly hack. :(
+               tn = p.type_expr.get_base_type_node()
+               if p.is_pointer():
+                       sig += 'p'
+               elif tn.integer:
+                       sig += 'i'
+               elif tn.size == 4:
+                       sig += 'f'
+               else:
+                       sig += 'd'
+
+       spec = [sig]
+       for ent in func.entry_points:
+               spec.append("gl" + ent)
+
+       # spec is terminated by an empty string
+       spec.append('')
+
+       return spec
+
+class PrintGlRemap(gl_XML.gl_print_base):
+       def __init__(self):
+               gl_XML.gl_print_base.__init__(self)
+
+               self.name = "remap_helper.py (from Mesa)"
+               self.license = license.bsd_license_template % ("Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>", "Chia-I Wu")
+               return
+
+
+       def printRealHeader(self):
+               print '#include "main/dispatch.h"'
+               print '#include "main/remap.h"'
+               print ''
+               return
+
+
+       def printBody(self, api):
+               pool_indices = {}
+
+               print '/* this is internal to remap.c */'
+               print '#ifdef need_MESA_remap_table'
+               print ''
+               print 'static const char _mesa_function_pool[] ='
+
+               # output string pool
+               index = 0;
+               for f in api.functionIterateAll():
+                       pool_indices[f] = index
+
+                       spec = get_function_spec(f)
+
+                       # a function has either assigned offset, fixed offset,
+                       # or no offset
+                       if f.assign_offset:
+                               comments = "will be remapped"
+                       elif f.offset > 0:
+                               comments = "offset %d" % f.offset
+                       else:
+                               comments = "dynamic"
+
+                       print '   /* _mesa_function_pool[%d]: %s (%s) */' \
+                                       % (index, f.name, comments)
+                       for line in spec:
+                               print '   "%s\\0"' % line
+                               index += len(line) + 1
+               print '   ;'
+               print ''
+
+               print '/* these functions need to be remapped */'
+               print 'static const struct gl_function_pool_remap MESA_remap_table_functions[] = {'
+               # output all functions that need to be remapped
+               # iterate by offsets so that they are sorted by remap indices
+               for f in api.functionIterateByOffset():
+                       if not f.assign_offset:
+                               continue
+                       print '   { %5d, %s_remap_index },' \
+                                       % (pool_indices[f], f.name)
+               print '   {    -1, -1 }'
+               print '};'
+               print ''
+
+               # collect functions by versions/extensions
+               extension_functions = {}
+               abi_extensions = []
+               for f in api.functionIterateAll():
+                       for n in f.entry_points:
+                               category, num = api.get_category_for_name(n)
+                               # consider only GL_VERSION_X_Y or extensions
+                               c = gl_XML.real_category_name(category)
+                               if c.startswith("GL_"):
+                                       if not extension_functions.has_key(c):
+                                               extension_functions[c] = []
+                                       extension_functions[c].append(f)
+                                       # remember the ext names of the ABI
+                                       if (f.is_abi() and n == f.name and
+                                               c not in abi_extensions):
+                                               abi_extensions.append(c)
+               # ignore the ABI itself
+               for ext in abi_extensions:
+                       extension_functions.pop(ext)
+
+               extensions = extension_functions.keys()
+               extensions.sort()
+
+               # output ABI functions that have alternative names (with ext suffix)
+               print '/* these functions are in the ABI, but have alternative names */'
+               print 'static const struct gl_function_remap MESA_alt_functions[] = {'
+               for ext in extensions:
+                       funcs = []
+                       for f in extension_functions[ext]:
+                               # test if the function is in the ABI and has alt names
+                               if f.is_abi() and len(f.entry_points) > 1:
+                                       funcs.append(f)
+                       if not funcs:
+                               continue
+                       print '   /* from %s */' % ext
+                       for f in funcs:
+                               print '   { %5d, _gloffset_%s },' \
+                                               % (pool_indices[f], f.name)
+               print '   {    -1, -1 }'
+               print '};'
+               print ''
+
+               print '#endif /* need_MESA_remap_table */'
+               print ''
+
+               # output remap helpers for DRI drivers
+
+               for ext in extensions:
+                       funcs = []
+                       remapped = []
+                       for f in extension_functions[ext]:
+                               if f.assign_offset:
+                                       # these are handled above
+                                       remapped.append(f)
+                               else:
+                                       # these functions are either in the
+                                       # abi, or have offset -1
+                                       funcs.append(f)
+
+                       print '#if defined(need_%s)' % (ext)
+                       if remapped:
+                               print '/* functions defined in MESA_remap_table_functions are excluded */'
+
+                       # output extension functions that need to be mapped
+                       print 'static const struct gl_function_remap %s_functions[] = {' % (ext)
+                       for f in funcs:
+                               if f.offset >= 0:
+                                       print '   { %5d, _gloffset_%s },' \
+                                                       % (pool_indices[f], f.name)
+                               else:
+                                       print '   { %5d, -1 }, /* %s */' % \
+                                                       (pool_indices[f], f.name)
+                       print '   {    -1, -1 }'
+                       print '};'
+
+                       print '#endif'
+                       print ''
+
+               return
+
+
+def show_usage():
+       print "Usage: %s [-f input_file_name]" % sys.argv[0]
+       sys.exit(1)
+
+if __name__ == '__main__':
+       file_name = "gl_API.xml"
+
+       try:
+               (args, trail) = getopt.getopt(sys.argv[1:], "f:")
+       except Exception,e:
+               show_usage()
+
+       for (arg,val) in args:
+               if arg == "-f":
+                       file_name = val
+
+       api = gl_XML.parse_GL_API( file_name )
+
+       printer = PrintGlRemap()
+       printer.Print( api )
diff --git a/src/mapi/glapi/gen/typeexpr.py b/src/mapi/glapi/gen/typeexpr.py
new file mode 100644 (file)
index 0000000..8ba7de4
--- /dev/null
@@ -0,0 +1,292 @@
+#!/usr/bin/env python
+
+# (C) Copyright IBM Corporation 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
+# 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
+# IBM 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:
+#    Ian Romanick <idr@us.ibm.com>
+
+import string, copy
+
+class type_node:
+       def __init__(self):
+               self.pointer = 0  # bool
+               self.const = 0    # bool
+               self.signed = 1   # bool
+               self.integer = 1  # bool
+
+               # If elements is set to non-zero, then field is an array.
+               self.elements = 0
+
+               self.name = None
+               self.size = 0     # type's size in bytes
+               return
+
+
+       def string(self):
+               """Return string representation of this type_node."""
+               s = ""
+               
+               if self.pointer:
+                       s = "* "
+
+               if self.const:
+                       s += "const "
+
+               if not self.pointer:
+                       if self.integer:
+                               if self.signed:
+                                       s += "signed "
+                               else:
+                                       s += "unsigned "
+
+                       if self.name:
+                               s += "%s " % (self.name)
+
+               return s
+
+
+class type_table:
+       def __init__(self):
+               self.types_by_name = {}
+               return
+
+
+       def add_type(self, type_expr):
+               self.types_by_name[ type_expr.get_base_name() ] = type_expr
+               return
+
+
+       def find_type(self, name):
+               if name in self.types_by_name:
+                       return self.types_by_name[ name ]
+               else:
+                       return None
+
+
+def create_initial_types():
+       tt = type_table()
+
+       basic_types = [
+               ("char",   1, 1),
+               ("short",  2, 1),
+               ("int",    4, 1),
+               ("long",   4, 1),
+               ("float",  4, 0),
+               ("double", 8, 0),
+               ("enum",   4, 1)
+       ]
+
+       for (type_name, type_size, integer) in basic_types:
+               te = type_expression(None)
+               tn = type_node()
+               tn.name = type_name
+               tn.size = type_size
+               tn.integer = integer
+               te.expr.append(tn)
+               tt.add_type( te )
+
+       type_expression.built_in_types = tt
+       return
+
+
+class type_expression:
+       built_in_types = None
+
+       def __init__(self, type_string, extra_types = None):
+               self.expr = []
+
+               if not type_string:
+                       return
+
+               self.original_string = type_string
+
+               if not type_expression.built_in_types:
+                       raise RuntimeError("create_initial_types must be called before creating type_expression objects.")
+
+               # Replace '*' with ' * ' in type_string.  Then, split the string
+               # into tokens, separated by spaces.
+               tokens = string.split( string.replace( type_string, "*", " * " ) )
+
+               const = 0
+               t = None
+               signed = 0
+               unsigned = 0
+
+               for i in tokens:
+                       if i == "const":
+                               if t and t.pointer:
+                                       t.const = 1
+                               else:
+                                       const = 1
+                       elif i == "signed":
+                               signed = 1
+                       elif i == "unsigned":
+                               unsigned = 1
+                       elif i == "*":
+                               # This is a quirky special-case because of the
+                               # way the C works for types.  If 'unsigned' is
+                               # specified all by itself, it is treated the
+                               # same as "unsigned int".
+
+                               if unsigned:
+                                       self.set_base_type( "int", signed, unsigned, const, extra_types )
+                                       const = 0
+                                       signed = 0
+                                       unsigned = 0
+
+                               if not self.expr:
+                                       raise RuntimeError("Invalid type expression (dangling pointer)")
+
+                               if signed:
+                                       raise RuntimeError("Invalid type expression (signed / unsigned applied to pointer)")
+
+                               t = type_node()
+                               t.pointer = 1
+                               self.expr.append( t )
+                       else:
+                               if self.expr:
+                                       raise RuntimeError('Invalid type expression (garbage after pointer qualifier -> "%s")' % (self.original_string))
+
+                               self.set_base_type( i, signed, unsigned, const, extra_types )
+                               const = 0
+                               signed = 0
+                               unsigned = 0
+
+                       if signed and unsigned:
+                               raise RuntimeError("Invalid type expression (both signed and unsigned specified)")
+                               
+
+               if const:
+                       raise RuntimeError("Invalid type expression (dangling const)")
+
+               if unsigned:
+                       raise RuntimeError("Invalid type expression (dangling signed)")
+
+               if signed:
+                       raise RuntimeError("Invalid type expression (dangling unsigned)")
+
+               return
+
+
+       def set_base_type(self, type_name, signed, unsigned, const, extra_types):
+               te = type_expression.built_in_types.find_type( type_name )
+               if not te:
+                       te = extra_types.find_type( type_name )
+
+               if not te:
+                       raise RuntimeError('Unknown base type "%s".' % (type_name))
+
+               self.expr = copy.deepcopy(te.expr)
+
+               t = self.expr[ len(self.expr) - 1 ]
+               t.const = const
+               if signed:
+                       t.signed = 1
+               elif unsigned:
+                       t.signed = 0
+
+
+       def set_base_type_node(self, tn):
+               self.expr = [tn]
+               return
+
+
+       def set_elements(self, count):
+               tn = self.expr[0]
+
+               tn.elements = count
+               return
+
+
+       def string(self):
+               s = ""
+               for t in self.expr:
+                       s += t.string()
+
+               return s
+
+
+       def get_base_type_node(self):
+               return self.expr[0]
+
+
+       def get_base_name(self):
+               if len(self.expr):
+                       return self.expr[0].name
+               else:
+                       return None
+
+
+       def get_element_size(self):
+               tn = self.expr[0]
+
+               if tn.elements:
+                       return tn.elements * tn.size
+               else:
+                       return tn.size
+
+
+       def get_element_count(self):
+               tn = self.expr[0]
+               return tn.elements
+
+
+       def get_stack_size(self):
+               tn = self.expr[ len(self.expr) - 1 ]
+
+               if tn.elements or tn.pointer:
+                       return 4
+               elif not tn.integer:
+                       return tn.size
+               else:
+                       return 4
+
+
+       def is_pointer(self):
+               tn = self.expr[ len(self.expr) - 1 ]
+               return tn.pointer
+
+
+       def format_string(self):
+               tn = self.expr[ len(self.expr) - 1 ]
+               if tn.pointer:
+                       return "%p"
+               elif not tn.integer:
+                       return "%f"
+               else:
+                       return "%d"
+
+
+
+if __name__ == '__main__':
+       
+       types_to_try = [ "int", "int *", "const int *", "int * const", "const int * const", \
+                        "unsigned * const *", \
+                        "float", "const double", "double * const"]
+
+       create_initial_types()
+
+       for t in types_to_try:
+               print 'Trying "%s"...' % (t)
+               te = type_expression( t )
+               print 'Got "%s" (%u, %u).' % (te.string(), te.get_stack_size(), te.get_element_size())
diff --git a/src/mapi/glapi/glapi.h b/src/mapi/glapi/glapi.h
new file mode 100644 (file)
index 0000000..a74884d
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  7.1
+ *
+ * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/**
+ * \mainpage Mesa GL API Module
+ *
+ * \section GLAPIIntroduction Introduction
+ *
+ * The Mesa GL API module is responsible for dispatching all the
+ * gl*() functions.  All GL functions are dispatched by jumping through
+ * the current dispatch table (basically a struct full of function
+ * pointers.)
+ *
+ * A per-thread current dispatch table and per-thread current context
+ * pointer are managed by this module too.
+ *
+ * This module is intended to be non-Mesa-specific so it can be used
+ * with the X/DRI libGL also.
+ */
+
+
+#ifndef _GLAPI_H
+#define _GLAPI_H
+
+#ifndef MAPI_GLAPI_CURRENT
+#define MAPI_GLAPI_CURRENT
+#endif
+
+#ifdef USE_MGL_NAMESPACE
+#define _glapi_set_dispatch _mglapi_set_dispatch
+#define _glapi_get_dispatch _mglapi_get_dispatch
+#define _glapi_set_context _mglapi_set_context
+#define _glapi_get_context _mglapi_get_context
+#define _glapi_Dispatch _mglapi_Dispatch
+#define _glapi_Context _mglapi_Context
+#endif
+
+#include "mapi/u_current.h"
+#include "glapi/glthread.h"
+
+typedef void (*_glapi_proc)(void);
+
+#define GET_DISPATCH() ((struct _glapi_table *) u_current_get())
+#define GET_CURRENT_CONTEXT(C) GLcontext *C = (GLcontext *) u_current_get_user()
+
+PUBLIC unsigned int
+_glapi_get_dispatch_table_size(void);
+
+
+PUBLIC int
+_glapi_add_dispatch( const char * const * function_names,
+                    const char * parameter_signature );
+
+PUBLIC int
+_glapi_get_proc_offset(const char *funcName);
+
+
+PUBLIC _glapi_proc
+_glapi_get_proc_address(const char *funcName);
+
+
+PUBLIC const char *
+_glapi_get_proc_name(unsigned int offset);
+
+
+#endif
diff --git a/src/mapi/glapi/glapi_dispatch.c b/src/mapi/glapi/glapi_dispatch.c
new file mode 100644 (file)
index 0000000..ae59140
--- /dev/null
@@ -0,0 +1,102 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  6.3
+ *
+ * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/**
+ * \file glapi_dispatch.c
+ *
+ * This file generates all the gl* function entrypoints.  This code is not
+ * used if optimized assembly stubs are available (e.g., using
+ * glapi/glapi_x86.S on IA32 or glapi/glapi_sparc.S on SPARC).
+ *
+ * \note
+ * This file is also used to build the client-side libGL that loads DRI-based
+ * device drivers.  At build-time it is symlinked to src/glx.
+ *
+ * \author Brian Paul <brian@precisioninsight.com>
+ */
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#include "glapi/mesa.h"
+#else
+#include "main/glheader.h"
+#include "main/compiler.h"
+#endif
+
+#include "glapi/glapi.h"
+#include "glapi/glapitable.h"
+#include "glapi/glapidispatch.h"
+#include "glapi/glthread.h"
+
+
+#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM))
+
+#if defined(WIN32)
+#define KEYWORD1 GLAPI
+#else
+#define KEYWORD1 PUBLIC
+#endif
+
+#define KEYWORD2 GLAPIENTRY
+
+#if defined(USE_MGL_NAMESPACE)
+#define NAME(func)  mgl##func
+#else
+#define NAME(func)  gl##func
+#endif
+
+#if 0  /* Use this to log GL calls to stdout (for DEBUG only!) */
+
+#define F stdout
+#define DISPATCH(FUNC, ARGS, MESSAGE)          \
+   fprintf MESSAGE;                            \
+   CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+
+#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE)   \
+   fprintf MESSAGE;                            \
+   return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+
+#else
+
+#define DISPATCH(FUNC, ARGS, MESSAGE)          \
+   CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+
+#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE)   \
+   return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
+
+#endif /* logging */
+
+
+#ifndef GLAPIENTRY
+#define GLAPIENTRY
+#endif
+
+#ifdef GLX_INDIRECT_RENDERING
+/* those link to libglapi.a should provide the entry points */
+#define _GLAPI_SKIP_PROTO_ENTRY_POINTS
+#endif
+#include "glapi/glapitemp.h"
+
+#endif /* USE_X86_ASM */
diff --git a/src/mapi/glapi/glapi_entrypoint.c b/src/mapi/glapi/glapi_entrypoint.c
new file mode 100644 (file)
index 0000000..82c68c2
--- /dev/null
@@ -0,0 +1,353 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  7.1
+ *
+ * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file glapi_entrypoint.c
+ *
+ * Arch-specific code for manipulating GL API entrypoints (dispatch stubs).
+ */
+
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#include "glapi/mesa.h"
+#else
+#include "main/glheader.h"
+#include "main/compiler.h"
+#endif
+
+#include "glapi/glapi.h"
+#include "glapi/glapi_priv.h"
+#include "mapi/u_execmem.h"
+
+
+#ifdef USE_X86_ASM
+
+#if defined( GLX_USE_TLS )
+extern       GLubyte gl_dispatch_functions_start[];
+extern       GLubyte gl_dispatch_functions_end[];
+#else
+extern const GLubyte gl_dispatch_functions_start[];
+#endif
+
+#endif /* USE_X86_ASM */
+
+
+#if defined(DISPATCH_FUNCTION_SIZE)
+
+_glapi_proc
+get_entrypoint_address(unsigned int functionOffset)
+{
+   return (_glapi_proc) (gl_dispatch_functions_start
+                         + (DISPATCH_FUNCTION_SIZE * functionOffset));
+}
+
+#endif
+
+
+#if defined(USE_X86_ASM)
+
+/**
+ * Perform platform-specific GL API entry-point fixups.
+ */
+static void
+init_glapi_relocs( void )
+{
+#if defined(GLX_USE_TLS) && !defined(GLX_X86_READONLY_TEXT)
+    extern unsigned long _x86_get_dispatch(void);
+    char run_time_patch[] = {
+       0x65, 0xa1, 0, 0, 0, 0 /* movl %gs:0,%eax */
+    };
+    GLuint *offset = (GLuint *) &run_time_patch[2]; /* 32-bits for x86/32 */
+    const GLubyte * const get_disp = (const GLubyte *) run_time_patch;
+    GLubyte * curr_func = (GLubyte *) gl_dispatch_functions_start;
+
+    *offset = _x86_get_dispatch();
+    while ( curr_func != (GLubyte *) gl_dispatch_functions_end ) {
+       (void) memcpy( curr_func, get_disp, sizeof(run_time_patch));
+       curr_func += DISPATCH_FUNCTION_SIZE;
+    }
+#endif
+}
+
+
+/**
+ * Generate a dispatch function (entrypoint) which jumps through
+ * the given slot number (offset) in the current dispatch table.
+ * We need assembly language in order to accomplish this.
+ */
+_glapi_proc
+generate_entrypoint(unsigned int functionOffset)
+{
+   /* 32 is chosen as something of a magic offset.  For x86, the dispatch
+    * at offset 32 is the first one where the offset in the
+    * "jmp OFFSET*4(%eax)" can't be encoded in a single byte.
+    */
+   const GLubyte * const template_func = gl_dispatch_functions_start 
+     + (DISPATCH_FUNCTION_SIZE * 32);
+   GLubyte * const code = (GLubyte *) u_execmem_alloc(DISPATCH_FUNCTION_SIZE);
+
+
+   if ( code != NULL ) {
+      (void) memcpy(code, template_func, DISPATCH_FUNCTION_SIZE);
+      fill_in_entrypoint_offset( (_glapi_proc) code, functionOffset );
+   }
+
+   return (_glapi_proc) code;
+}
+
+
+/**
+ * This function inserts a new dispatch offset into the assembly language
+ * stub that was generated with the preceeding function.
+ */
+void
+fill_in_entrypoint_offset(_glapi_proc entrypoint, unsigned int offset)
+{
+   GLubyte * const code = (GLubyte *) entrypoint;
+
+#if defined(GLX_USE_TLS)
+   *((unsigned int *)(code +  8)) = 4 * offset;
+#elif defined(THREADS)
+   *((unsigned int *)(code + 11)) = 4 * offset;
+   *((unsigned int *)(code + 22)) = 4 * offset;
+#else
+   *((unsigned int *)(code +  7)) = 4 * offset;
+#endif
+}
+
+
+#elif defined(USE_SPARC_ASM)
+
+extern void __glapi_sparc_icache_flush(unsigned int *);
+
+static void
+init_glapi_relocs( void )
+{
+#if defined(PTHREADS) || defined(GLX_USE_TLS)
+    static const unsigned int template[] = {
+#ifdef GLX_USE_TLS
+       0x05000000, /* sethi %hi(_glapi_tls_Dispatch), %g2 */
+       0x8730e00a, /* srl %g3, 10, %g3 */
+       0x8410a000, /* or %g2, %lo(_glapi_tls_Dispatch), %g2 */
+#ifdef __arch64__
+       0xc259c002, /* ldx [%g7 + %g2], %g1 */
+       0xc2584003, /* ldx [%g1 + %g3], %g1 */
+#else
+       0xc201c002, /* ld [%g7 + %g2], %g1 */
+       0xc2004003, /* ld [%g1 + %g3], %g1 */
+#endif
+       0x81c04000, /* jmp %g1 */
+       0x01000000, /* nop  */
+#else
+#ifdef __arch64__
+       0x03000000, /* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */
+       0x05000000, /* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */
+       0x82106000, /* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */
+       0x8730e00a, /* 64-bit 0x0c --> srl %g3, 10, %g3 */
+       0x83287020, /* 64-bit 0x10 --> sllx %g1, 32, %g1 */
+       0x82004002, /* 64-bit 0x14 --> add %g1, %g2, %g1 */
+       0xc2586000, /* 64-bit 0x18 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */
+#else
+       0x03000000, /* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */
+       0x8730e00a, /* 32-bit 0x04 --> srl %g3, 10, %g3 */
+       0xc2006000, /* 32-bit 0x08 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */
+#endif
+       0x80a06000, /*             --> cmp %g1, 0 */
+       0x02800005, /*             --> be +4*5 */
+       0x01000000, /*             -->  nop  */
+#ifdef __arch64__
+       0xc2584003, /* 64-bit      --> ldx [%g1 + %g3], %g1 */
+#else
+       0xc2004003, /* 32-bit      --> ld [%g1 + %g3], %g1 */
+#endif
+       0x81c04000, /*             --> jmp %g1 */
+       0x01000000, /*             --> nop  */
+#ifdef __arch64__
+       0x9de3bf80, /* 64-bit      --> save  %sp, -128, %sp */
+#else
+       0x9de3bfc0, /* 32-bit      --> save  %sp, -64, %sp */
+#endif
+       0xa0100003, /*             --> mov  %g3, %l0 */
+       0x40000000, /*             --> call _glapi_get_dispatch */
+       0x01000000, /*             -->  nop */
+       0x82100008, /*             --> mov %o0, %g1 */
+       0x86100010, /*             --> mov %l0, %g3 */
+       0x10bffff7, /*             --> ba -4*9 */
+       0x81e80000, /*             -->  restore  */
+#endif
+    };
+#ifdef GLX_USE_TLS
+    extern unsigned int __glapi_sparc_tls_stub;
+    extern unsigned long __glapi_sparc_get_dispatch(void);
+    unsigned int *code = &__glapi_sparc_tls_stub;
+    unsigned long dispatch = __glapi_sparc_get_dispatch();
+#else
+    extern unsigned int __glapi_sparc_pthread_stub;
+    unsigned int *code = &__glapi_sparc_pthread_stub;
+    unsigned long dispatch = (unsigned long) &_glapi_Dispatch;
+    unsigned long call_dest = (unsigned long ) &_glapi_get_dispatch;
+    int idx;
+#endif
+
+#ifdef GLX_USE_TLS
+    code[0] = template[0] | (dispatch >> 10);
+    code[1] = template[1];
+    __glapi_sparc_icache_flush(&code[0]);
+    code[2] = template[2] | (dispatch & 0x3ff);
+    code[3] = template[3];
+    __glapi_sparc_icache_flush(&code[2]);
+    code[4] = template[4];
+    code[5] = template[5];
+    __glapi_sparc_icache_flush(&code[4]);
+    code[6] = template[6];
+    __glapi_sparc_icache_flush(&code[6]);
+#else
+#if defined(__arch64__)
+    code[0] = template[0] | (dispatch >> (32 + 10));
+    code[1] = template[1] | ((dispatch & 0xffffffff) >> 10);
+    __glapi_sparc_icache_flush(&code[0]);
+    code[2] = template[2] | ((dispatch >> 32) & 0x3ff);
+    code[3] = template[3];
+    __glapi_sparc_icache_flush(&code[2]);
+    code[4] = template[4];
+    code[5] = template[5];
+    __glapi_sparc_icache_flush(&code[4]);
+    code[6] = template[6] | (dispatch & 0x3ff);
+    idx = 7;
+#else
+    code[0] = template[0] | (dispatch >> 10);
+    code[1] = template[1];
+    __glapi_sparc_icache_flush(&code[0]);
+    code[2] = template[2] | (dispatch & 0x3ff);
+    idx = 3;
+#endif
+    code[idx + 0] = template[idx + 0];
+    __glapi_sparc_icache_flush(&code[idx - 1]);
+    code[idx + 1] = template[idx + 1];
+    code[idx + 2] = template[idx + 2];
+    __glapi_sparc_icache_flush(&code[idx + 1]);
+    code[idx + 3] = template[idx + 3];
+    code[idx + 4] = template[idx + 4];
+    __glapi_sparc_icache_flush(&code[idx + 3]);
+    code[idx + 5] = template[idx + 5];
+    code[idx + 6] = template[idx + 6];
+    __glapi_sparc_icache_flush(&code[idx + 5]);
+    code[idx + 7] = template[idx + 7];
+    code[idx + 8] = template[idx + 8] |
+           (((call_dest - ((unsigned long) &code[idx + 8]))
+             >> 2) & 0x3fffffff);
+    __glapi_sparc_icache_flush(&code[idx + 7]);
+    code[idx + 9] = template[idx + 9];
+    code[idx + 10] = template[idx + 10];
+    __glapi_sparc_icache_flush(&code[idx + 9]);
+    code[idx + 11] = template[idx + 11];
+    code[idx + 12] = template[idx + 12];
+    __glapi_sparc_icache_flush(&code[idx + 11]);
+    code[idx + 13] = template[idx + 13];
+    __glapi_sparc_icache_flush(&code[idx + 13]);
+#endif
+#endif
+}
+
+
+_glapi_proc
+generate_entrypoint(GLuint functionOffset)
+{
+#if defined(PTHREADS) || defined(GLX_USE_TLS)
+   static const unsigned int template[] = {
+      0x07000000, /* sethi %hi(0), %g3 */
+      0x8210000f, /* mov  %o7, %g1 */
+      0x40000000, /* call */
+      0x9e100001, /* mov  %g1, %o7 */
+   };
+#ifdef GLX_USE_TLS
+   extern unsigned int __glapi_sparc_tls_stub;
+   unsigned long call_dest = (unsigned long ) &__glapi_sparc_tls_stub;
+#else
+   extern unsigned int __glapi_sparc_pthread_stub;
+   unsigned long call_dest = (unsigned long ) &__glapi_sparc_pthread_stub;
+#endif
+   unsigned int *code = (unsigned int *) u_execmem_alloc(sizeof(template));
+   if (code) {
+      code[0] = template[0] | (functionOffset & 0x3fffff);
+      code[1] = template[1];
+      __glapi_sparc_icache_flush(&code[0]);
+      code[2] = template[2] |
+         (((call_dest - ((unsigned long) &code[2]))
+          >> 2) & 0x3fffffff);
+      code[3] = template[3];
+      __glapi_sparc_icache_flush(&code[2]);
+   }
+   return (_glapi_proc) code;
+#endif
+}
+
+
+void
+fill_in_entrypoint_offset(_glapi_proc entrypoint, GLuint offset)
+{
+   unsigned int *code = (unsigned int *) entrypoint;
+
+   code[0] &= ~0x3fffff;
+   code[0] |= (offset * sizeof(void *)) & 0x3fffff;
+   __glapi_sparc_icache_flush(&code[0]);
+}
+
+
+#else /* USE_*_ASM */
+
+static void
+init_glapi_relocs( void )
+{
+}
+
+
+_glapi_proc
+generate_entrypoint(GLuint functionOffset)
+{
+   (void) functionOffset;
+   return NULL;
+}
+
+
+void
+fill_in_entrypoint_offset(_glapi_proc entrypoint, GLuint offset)
+{
+   /* an unimplemented architecture */
+   (void) entrypoint;
+   (void) offset;
+}
+
+#endif /* USE_*_ASM */
+
+
+void
+init_glapi_relocs_once( void )
+{
+#if defined(PTHREADS) || defined(GLX_USE_TLS)
+   static pthread_once_t once_control = PTHREAD_ONCE_INIT;
+   pthread_once( & once_control, init_glapi_relocs );
+#endif
+}
diff --git a/src/mapi/glapi/glapi_getproc.c b/src/mapi/glapi/glapi_getproc.c
new file mode 100644 (file)
index 0000000..3c134f9
--- /dev/null
@@ -0,0 +1,695 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  7.1
+ *
+ * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/**
+ * \file glapi_getproc.c
+ *
+ * Code for implementing glXGetProcAddress(), etc.
+ * This was originally in glapi.c but refactored out.
+ */
+
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#include "glapi/mesa.h"
+#else
+#include "main/glheader.h"
+#include "main/compiler.h"
+#endif
+
+#include "glapi/glapi.h"
+#include "glapi/glapi_priv.h"
+#include "glapi/glapitable.h"
+#include "glapi/glapioffsets.h"
+
+
+/**********************************************************************
+ * Static function management.
+ */
+
+
+#if !defined(DISPATCH_FUNCTION_SIZE) && !defined(XFree86Server)
+# define NEED_FUNCTION_POINTER
+#endif
+#include "glapi/glprocs.h"
+
+
+/**
+ * Search the table of static entrypoint functions for the named function
+ * and return the corresponding glprocs_table_t entry.
+ */
+static const glprocs_table_t *
+get_static_proc( const char * n )
+{
+   GLuint i;
+   for (i = 0; static_functions[i].Name_offset >= 0; i++) {
+      const char *testName = gl_string_table + static_functions[i].Name_offset;
+#ifdef MANGLE
+      /* skip the prefix on the name */
+      if (strcmp(testName, n + 1) == 0)
+#else
+      if (strcmp(testName, n) == 0)
+#endif
+      {
+        return &static_functions[i];
+      }
+   }
+   return NULL;
+}
+
+
+/**
+ * Return dispatch table offset of the named static (built-in) function.
+ * Return -1 if function not found.
+ */
+static GLint
+get_static_proc_offset(const char *funcName)
+{
+   const glprocs_table_t * const f = get_static_proc( funcName );
+   if (f == NULL) {
+      return -1;
+   }
+
+   return f->Offset;
+}
+
+
+#if !defined(XFree86Server)
+
+/**
+ * Return dispatch function address for the named static (built-in) function.
+ * Return NULL if function not found.
+ */
+static _glapi_proc
+get_static_proc_address(const char *funcName)
+{
+   const glprocs_table_t * const f = get_static_proc( funcName );
+   if (f == NULL) {
+      return NULL;
+   }
+
+#if defined(DISPATCH_FUNCTION_SIZE) && defined(GLX_INDIRECT_RENDERING)
+   return (f->Address == NULL)
+      ? get_entrypoint_address(f->Offset)
+      : f->Address;
+#elif defined(DISPATCH_FUNCTION_SIZE)
+   return get_entrypoint_address(f->Offset);
+#else
+   return f->Address;
+#endif
+}
+
+#else
+
+static _glapi_proc
+get_static_proc_address(const char *funcName)
+{
+   (void) funcName;
+   return NULL;
+}
+
+#endif /* !defined(XFree86Server) */
+
+
+/**
+ * Return the name of the function at the given offset in the dispatch
+ * table.  For debugging only.
+ */
+static const char *
+get_static_proc_name( GLuint offset )
+{
+   GLuint i;
+   for (i = 0; static_functions[i].Name_offset >= 0; i++) {
+      if (static_functions[i].Offset == offset) {
+        return gl_string_table + static_functions[i].Name_offset;
+      }
+   }
+   return NULL;
+}
+
+
+
+/**********************************************************************
+ * Extension function management.
+ */
+
+
+/**
+ * Track information about a function added to the GL API.
+ */
+struct _glapi_function {
+   /**
+    * Name of the function.
+    */
+   const char * name;
+
+
+   /**
+    * Text string that describes the types of the parameters passed to the
+    * named function.   Parameter types are converted to characters using the
+    * following rules:
+    *   - 'i' for \c GLint, \c GLuint, and \c GLenum
+    *   - 'p' for any pointer type
+    *   - 'f' for \c GLfloat and \c GLclampf
+    *   - 'd' for \c GLdouble and \c GLclampd
+    */
+   const char * parameter_signature;
+
+
+   /**
+    * Offset in the dispatch table where the pointer to the real function is
+    * located.  If the driver has not requested that the named function be
+    * added to the dispatch table, this will have the value ~0.
+    */
+   unsigned dispatch_offset;
+
+
+   /**
+    * Pointer to the dispatch stub for the named function.
+    * 
+    * \todo
+    * The semantic of this field should be changed slightly.  Currently, it
+    * is always expected to be non-\c NULL.  However, it would be better to
+    * only allocate the entry-point stub when the application requests the
+    * function via \c glXGetProcAddress.  This would save memory for all the
+    * functions that the driver exports but that the application never wants
+    * to call.
+    */
+   _glapi_proc dispatch_stub;
+};
+
+
+static struct _glapi_function ExtEntryTable[MAX_EXTENSION_FUNCS];
+static GLuint NumExtEntryPoints = 0;
+
+
+static struct _glapi_function *
+get_extension_proc(const char *funcName)
+{
+   GLuint i;
+   for (i = 0; i < NumExtEntryPoints; i++) {
+      if (strcmp(ExtEntryTable[i].name, funcName) == 0) {
+         return & ExtEntryTable[i];
+      }
+   }
+   return NULL;
+}
+
+
+static GLint
+get_extension_proc_offset(const char *funcName)
+{
+   const struct _glapi_function * const f = get_extension_proc( funcName );
+   if (f == NULL) {
+      return -1;
+   }
+
+   return f->dispatch_offset;
+}
+
+
+static _glapi_proc
+get_extension_proc_address(const char *funcName)
+{
+   const struct _glapi_function * const f = get_extension_proc( funcName );
+   if (f == NULL) {
+      return NULL;
+   }
+
+   return f->dispatch_stub;
+}
+
+
+static const char *
+get_extension_proc_name(GLuint offset)
+{
+   GLuint i;
+   for (i = 0; i < NumExtEntryPoints; i++) {
+      if (ExtEntryTable[i].dispatch_offset == offset) {
+         return ExtEntryTable[i].name;
+      }
+   }
+   return NULL;
+}
+
+
+/**
+ * strdup() is actually not a standard ANSI C or POSIX routine.
+ * Irix will not define it if ANSI mode is in effect.
+ */
+static char *
+str_dup(const char *str)
+{
+   char *copy;
+   copy = (char*) malloc(strlen(str) + 1);
+   if (!copy)
+      return NULL;
+   strcpy(copy, str);
+   return copy;
+}
+
+
+/**
+ * Generate new entrypoint
+ *
+ * Use a temporary dispatch offset of ~0 (i.e. -1).  Later, when the driver
+ * calls \c _glapi_add_dispatch we'll put in the proper offset.  If that
+ * never happens, and the user calls this function, he'll segfault.  That's
+ * what you get when you try calling a GL function that doesn't really exist.
+ * 
+ * \param funcName  Name of the function to create an entry-point for.
+ * 
+ * \sa _glapi_add_entrypoint
+ */
+
+static struct _glapi_function *
+add_function_name( const char * funcName )
+{
+   struct _glapi_function * entry = NULL;
+   _glapi_proc entrypoint = NULL;
+   char * name_dup = NULL;
+
+   if (NumExtEntryPoints >= MAX_EXTENSION_FUNCS)
+      return NULL;
+
+   if (funcName == NULL)
+      return NULL;
+
+   name_dup = str_dup(funcName);
+   if (name_dup == NULL)
+      return NULL;
+
+   entrypoint = generate_entrypoint(~0);
+
+   if (entrypoint == NULL) {
+      free(name_dup);
+      return NULL;
+   }
+
+   entry = & ExtEntryTable[NumExtEntryPoints];
+   NumExtEntryPoints++;
+
+   entry->name = name_dup;
+   entry->parameter_signature = NULL;
+   entry->dispatch_offset = ~0;
+   entry->dispatch_stub = entrypoint;
+
+   return entry;
+}
+
+
+static struct _glapi_function *
+set_entry_info( struct _glapi_function * entry, const char * signature, unsigned offset )
+{
+   char * sig_dup = NULL;
+
+   if (signature == NULL)
+      return NULL;
+
+   sig_dup = str_dup(signature);
+   if (sig_dup == NULL)
+      return NULL;
+
+   fill_in_entrypoint_offset(entry->dispatch_stub, offset);
+
+   entry->parameter_signature = sig_dup;
+   entry->dispatch_offset = offset;
+
+   return entry;
+}
+
+
+/**
+ * Fill-in the dispatch stub for the named function.
+ * 
+ * This function is intended to be called by a hardware driver.  When called,
+ * a dispatch stub may be created created for the function.  A pointer to this
+ * dispatch function will be returned by glXGetProcAddress.
+ *
+ * \param function_names       Array of pointers to function names that should
+ *                             share a common dispatch offset.
+ * \param parameter_signature  String representing the types of the parameters
+ *                             passed to the named function.  Parameter types
+ *                             are converted to characters using the following
+ *                             rules:
+ *                               - 'i' for \c GLint, \c GLuint, and \c GLenum
+ *                               - 'p' for any pointer type
+ *                               - 'f' for \c GLfloat and \c GLclampf
+ *                               - 'd' for \c GLdouble and \c GLclampd
+ *
+ * \returns
+ * The offset in the dispatch table of the named function.  A pointer to the
+ * driver's implementation of the named function should be stored at
+ * \c dispatch_table[\c offset].  Return -1 if error/problem.
+ *
+ * \sa glXGetProcAddress
+ *
+ * \warning
+ * This function can only handle up to 8 names at a time.  As far as I know,
+ * the maximum number of names ever associated with an existing GL function is
+ * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT,
+ * \c glPointParameterfARB, and \c glPointParameterf), so this should not be
+ * too painful of a limitation.
+ *
+ * \todo
+ * Determine whether or not \c parameter_signature should be allowed to be
+ * \c NULL.  It doesn't seem like much of a hardship for drivers to have to
+ * pass in an empty string.
+ *
+ * \todo
+ * Determine if code should be added to reject function names that start with
+ * 'glX'.
+ * 
+ * \bug
+ * Add code to compare \c parameter_signature with the parameter signature of
+ * a static function.  In order to do that, we need to find a way to \b get
+ * the parameter signature of a static function.
+ */
+
+int
+_glapi_add_dispatch( const char * const * function_names,
+                    const char * parameter_signature )
+{
+   static int next_dynamic_offset = _gloffset_FIRST_DYNAMIC;
+   const char * const real_sig = (parameter_signature != NULL)
+     ? parameter_signature : "";
+   struct _glapi_function * entry[8];
+   GLboolean is_static[8];
+   unsigned i;
+   int offset = ~0;
+
+   init_glapi_relocs_once();
+
+   (void) memset( is_static, 0, sizeof( is_static ) );
+   (void) memset( entry, 0, sizeof( entry ) );
+
+   /* Find the _single_ dispatch offset for all function names that already
+    * exist (and have a dispatch offset).
+    */
+
+   for ( i = 0 ; function_names[i] != NULL ; i++ ) {
+      const char * funcName = function_names[i];
+      int static_offset;
+      int extension_offset;
+
+      if (funcName[0] != 'g' || funcName[1] != 'l')
+         return -1;
+
+      /* search built-in functions */
+      static_offset = get_static_proc_offset(funcName);
+
+      if (static_offset >= 0) {
+
+        is_static[i] = GL_TRUE;
+
+        /* FIXME: Make sure the parameter signatures match!  How do we get
+         * FIXME: the parameter signature for static functions?
+         */
+
+        if ( (offset != ~0) && (static_offset != offset) ) {
+           return -1;
+        }
+
+        offset = static_offset;
+
+        continue;
+      }
+
+      /* search added extension functions */
+      entry[i] = get_extension_proc(funcName);
+
+      if (entry[i] != NULL) {
+        extension_offset = entry[i]->dispatch_offset;
+
+        /* The offset may be ~0 if the function name was added by
+         * glXGetProcAddress but never filled in by the driver.
+         */
+
+        if (extension_offset == ~0) {
+           continue;
+        }
+
+        if (strcmp(real_sig, entry[i]->parameter_signature) != 0) {
+           return -1;
+        }
+
+        if ( (offset != ~0) && (extension_offset != offset) ) {
+           return -1;
+        }
+
+        offset = extension_offset;
+      }
+   }
+
+   /* If all function names are either new (or with no dispatch offset),
+    * allocate a new dispatch offset.
+    */
+
+   if (offset == ~0) {
+      offset = next_dynamic_offset;
+      next_dynamic_offset++;
+   }
+
+   /* Fill in the dispatch offset for the new function names (and those with
+    * no dispatch offset).
+    */
+
+   for ( i = 0 ; function_names[i] != NULL ; i++ ) {
+      if (is_static[i]) {
+        continue;
+      }
+
+      /* generate entrypoints for new function names */
+      if (entry[i] == NULL) {
+        entry[i] = add_function_name( function_names[i] );
+        if (entry[i] == NULL) {
+           /* FIXME: Possible memory leak here. */
+           return -1;
+        }
+      }
+
+      if (entry[i]->dispatch_offset == ~0) {
+        set_entry_info( entry[i], real_sig, offset );
+      }
+   }
+
+   return offset;
+}
+
+
+/**
+ * Return offset of entrypoint for named function within dispatch table.
+ */
+GLint
+_glapi_get_proc_offset(const char *funcName)
+{
+   GLint offset;
+
+   /* search extension functions first */
+   offset = get_extension_proc_offset(funcName);
+   if (offset >= 0)
+      return offset;
+
+   /* search static functions */
+   return get_static_proc_offset(funcName);
+}
+
+
+
+/**
+ * Return pointer to the named function.  If the function name isn't found
+ * in the name of static functions, try generating a new API entrypoint on
+ * the fly with assembly language.
+ */
+_glapi_proc
+_glapi_get_proc_address(const char *funcName)
+{
+   _glapi_proc func;
+   struct _glapi_function * entry;
+
+   init_glapi_relocs_once();
+
+#ifdef MANGLE
+   /* skip the prefix on the name */
+   if (funcName[1] != 'g' || funcName[2] != 'l')
+      return NULL;
+#else
+   if (funcName[0] != 'g' || funcName[1] != 'l')
+      return NULL;
+#endif
+
+   /* search extension functions first */
+   func = get_extension_proc_address(funcName);
+   if (func)
+      return func;
+
+   /* search static functions */
+   func = get_static_proc_address(funcName);
+   if (func)
+      return func;
+
+   /* generate entrypoint, dispatch offset must be filled in by the driver */
+   entry = add_function_name(funcName);
+   if (entry == NULL)
+      return NULL;
+
+   return entry->dispatch_stub;
+}
+
+
+
+/**
+ * Return the name of the function at the given dispatch offset.
+ * This is only intended for debugging.
+ */
+const char *
+_glapi_get_proc_name(GLuint offset)
+{
+   const char * n;
+
+   /* search built-in functions */
+   n = get_static_proc_name(offset);
+   if ( n != NULL ) {
+      return n;
+   }
+
+   /* search added extension functions */
+   return get_extension_proc_name(offset);
+}
+
+
+
+/**********************************************************************
+ * GL API table functions.
+ */
+
+
+/*
+ * The dispatch table size (number of entries) is the size of the
+ * _glapi_table struct plus the number of dynamic entries we can add.
+ * The extra slots can be filled in by DRI drivers that register new extension
+ * functions.
+ */
+#define DISPATCH_TABLE_SIZE (sizeof(struct _glapi_table) / sizeof(void *) + MAX_EXTENSION_FUNCS)
+
+
+/**
+ * Return size of dispatch table struct as number of functions (or
+ * slots).
+ */
+GLuint
+_glapi_get_dispatch_table_size(void)
+{
+   return DISPATCH_TABLE_SIZE;
+}
+
+
+/**
+ * Make sure there are no NULL pointers in the given dispatch table.
+ * Intended for debugging purposes.
+ */
+void
+_glapi_check_table_not_null(const struct _glapi_table *table)
+{
+#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
+   const GLuint entries = _glapi_get_dispatch_table_size();
+   const void **tab = (const void **) table;
+   GLuint i;
+   for (i = 1; i < entries; i++) {
+      assert(tab[i]);
+   }
+#else
+   (void) table;
+#endif
+}
+
+
+/**
+ * Do some spot checks to be sure that the dispatch table
+ * slots are assigned correctly. For debugging only.
+ */
+void
+_glapi_check_table(const struct _glapi_table *table)
+{
+#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
+   {
+      GLuint BeginOffset = _glapi_get_proc_offset("glBegin");
+      char *BeginFunc = (char*) &table->Begin;
+      GLuint offset = (BeginFunc - (char *) table) / sizeof(void *);
+      assert(BeginOffset == _gloffset_Begin);
+      assert(BeginOffset == offset);
+   }
+   {
+      GLuint viewportOffset = _glapi_get_proc_offset("glViewport");
+      char *viewportFunc = (char*) &table->Viewport;
+      GLuint offset = (viewportFunc - (char *) table) / sizeof(void *);
+      assert(viewportOffset == _gloffset_Viewport);
+      assert(viewportOffset == offset);
+   }
+   {
+      GLuint VertexPointerOffset = _glapi_get_proc_offset("glVertexPointer");
+      char *VertexPointerFunc = (char*) &table->VertexPointer;
+      GLuint offset = (VertexPointerFunc - (char *) table) / sizeof(void *);
+      assert(VertexPointerOffset == _gloffset_VertexPointer);
+      assert(VertexPointerOffset == offset);
+   }
+   {
+      GLuint ResetMinMaxOffset = _glapi_get_proc_offset("glResetMinmax");
+      char *ResetMinMaxFunc = (char*) &table->ResetMinmax;
+      GLuint offset = (ResetMinMaxFunc - (char *) table) / sizeof(void *);
+      assert(ResetMinMaxOffset == _gloffset_ResetMinmax);
+      assert(ResetMinMaxOffset == offset);
+   }
+   {
+      GLuint blendColorOffset = _glapi_get_proc_offset("glBlendColor");
+      char *blendColorFunc = (char*) &table->BlendColor;
+      GLuint offset = (blendColorFunc - (char *) table) / sizeof(void *);
+      assert(blendColorOffset == _gloffset_BlendColor);
+      assert(blendColorOffset == offset);
+   }
+   {
+      GLuint secondaryColor3fOffset = _glapi_get_proc_offset("glSecondaryColor3fEXT");
+      char *secondaryColor3fFunc = (char*) &table->SecondaryColor3fEXT;
+      GLuint offset = (secondaryColor3fFunc - (char *) table) / sizeof(void *);
+      assert(secondaryColor3fOffset == _gloffset_SecondaryColor3fEXT);
+      assert(secondaryColor3fOffset == offset);
+   }
+   {
+      GLuint pointParameterivOffset = _glapi_get_proc_offset("glPointParameterivNV");
+      char *pointParameterivFunc = (char*) &table->PointParameterivNV;
+      GLuint offset = (pointParameterivFunc - (char *) table) / sizeof(void *);
+      assert(pointParameterivOffset == _gloffset_PointParameterivNV);
+      assert(pointParameterivOffset == offset);
+   }
+   {
+      GLuint setFenceOffset = _glapi_get_proc_offset("glSetFenceNV");
+      char *setFenceFunc = (char*) &table->SetFenceNV;
+      GLuint offset = (setFenceFunc - (char *) table) / sizeof(void *);
+      assert(setFenceOffset == _gloffset_SetFenceNV);
+      assert(setFenceOffset == offset);
+   }
+#else
+   (void) table;
+#endif
+}
diff --git a/src/mapi/glapi/glapi_nop.c b/src/mapi/glapi/glapi_nop.c
new file mode 100644 (file)
index 0000000..4257b1f
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  7.8
+ *
+ * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
+ * Copyright (C) 2010  VMWare, Inc.  All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/**
+ * No-op dispatch table.
+ *
+ * This file defines a special dispatch table which is loaded with no-op
+ * functions.
+ *
+ * When there's no current rendering context, calling a GL function like
+ * glBegin() is a no-op.  Apps should never normally do this.  So as a
+ * debugging aid, each of the no-op functions will emit a warning to
+ * stderr if the MESA_DEBUG or LIBGL_DEBUG env var is set.
+ */
+
+
+
+#ifdef HAVE_DIX_CONFIG_H
+#include <dix-config.h>
+#include "glapi/mesa.h"
+#else
+#include "main/compiler.h"
+#include "main/glheader.h"
+#endif
+
+#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
+
+/**
+ * Called by each of the no-op GL entrypoints.
+ */
+static int
+Warn(const char *func)
+{
+#if !defined(_WIN32_WCE)
+   if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")) {
+      fprintf(stderr, "GL User Error: gl%s called without a rendering context\n",
+              func);
+   }
+#endif
+   return 0;
+}
+
+
+/**
+ * This is called if the user somehow calls an unassigned GL dispatch function.
+ */
+static GLint
+NoOpUnused(void)
+{
+   return Warn(" function");
+}
+
+/*
+ * Defines for the glapitemp.h functions.
+ */
+#define KEYWORD1 static
+#define KEYWORD1_ALT static
+#define KEYWORD2 GLAPIENTRY
+#define NAME(func)  NoOp##func
+#define DISPATCH(func, args, msg)  Warn(#func);
+#define RETURN_DISPATCH(func, args, msg)  Warn(#func); return 0
+
+
+/*
+ * Defines for the table of no-op entry points.
+ */
+#define TABLE_ENTRY(name) (_glapi_proc) NoOp##name
+
+#else
+
+static int
+NoOpGeneric(void)
+{
+#if !defined(_WIN32_WCE)
+   if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")) {
+      fprintf(stderr, "GL User Error: calling GL function without a rendering context\n");
+   }
+#endif
+   return 0;
+}
+
+#define TABLE_ENTRY(name) (_glapi_proc) NoOpGeneric
+
+#endif
+
+#define DISPATCH_TABLE_NAME __glapi_noop_table
+#define UNUSED_TABLE_NAME __unused_noop_functions
+
+#include "glapi/glapitemp.h"
diff --git a/src/mapi/glapi/glapi_priv.h b/src/mapi/glapi/glapi_priv.h
new file mode 100644 (file)
index 0000000..1c2a704
--- /dev/null
@@ -0,0 +1,93 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  7.1
+ *
+ * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#ifndef _GLAPI_PRIV_H
+#define _GLAPI_PRIV_H
+
+#include "glthread.h"
+#include "glapi.h"
+
+
+
+/* getproc */
+
+extern void
+_glapi_check_table_not_null(const struct _glapi_table *table);
+
+
+extern void
+_glapi_check_table(const struct _glapi_table *table);
+
+
+/* entrypoint */
+
+extern void
+init_glapi_relocs_once(void);
+
+
+extern _glapi_proc
+generate_entrypoint(unsigned int functionOffset);
+
+
+extern void
+fill_in_entrypoint_offset(_glapi_proc entrypoint, unsigned int offset);
+
+
+extern _glapi_proc
+get_entrypoint_address(unsigned int functionOffset);
+
+
+/**
+ * Size (in bytes) of dispatch function (entrypoint).
+ */
+#if defined(USE_X86_ASM)
+# if defined(GLX_USE_TLS)
+#  define DISPATCH_FUNCTION_SIZE  16
+# elif defined(THREADS)
+#  define DISPATCH_FUNCTION_SIZE  32
+# else
+#  define DISPATCH_FUNCTION_SIZE  16
+# endif
+#endif
+
+#if defined(USE_X64_64_ASM)
+# if defined(GLX_USE_TLS)
+#  define DISPATCH_FUNCTION_SIZE  16
+# endif
+#endif
+
+
+/**
+ * Number of extension functions which we can dynamically add at runtime.
+ *
+ * Number of extension functions is also subject to the size of backing exec
+ * mem we allocate. For the common case of dispatch stubs with size 16 bytes,
+ * the two limits will be hit simultaneously. For larger dispatch function
+ * sizes, MAX_EXTENSION_FUNCS is effectively reduced.
+ */
+#define MAX_EXTENSION_FUNCS 256
+
+
+#endif
diff --git a/src/mapi/glapi/glapi_sparc.S b/src/mapi/glapi/glapi_sparc.S
new file mode 100644 (file)
index 0000000..e9f887b
--- /dev/null
@@ -0,0 +1,1402 @@
+/* DO NOT EDIT - This file generated automatically by gl_SPARC_asm.py (from Mesa) script */
+
+/*
+ * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * (C) Copyright IBM Corporation 2004
+ * 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
+ * BRIAN PAUL, 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 "glapi/glapioffsets.h"
+
+#ifdef __arch64__
+#define GL_OFF(N)      ((N) * 8)
+#define GL_LL          ldx
+#define GL_TIE_LD(SYM) %tie_ldx(SYM)
+#define GL_STACK_SIZE  128
+#else
+#define GL_OFF(N)      ((N) * 4)
+#define GL_LL          ld
+#define GL_TIE_LD(SYM) %tie_ld(SYM)
+#define GL_STACK_SIZE  64
+#endif
+
+#define GLOBL_FN(x) .globl x ; .type x, @function
+#define HIDDEN(x) .hidden x
+
+       .register %g2, #scratch
+       .register %g3, #scratch
+
+       .text
+
+       GLOBL_FN(__glapi_sparc_icache_flush)
+       HIDDEN(__glapi_sparc_icache_flush)
+       .type   __glapi_sparc_icache_flush, @function
+__glapi_sparc_icache_flush: /* %o0 = insn_addr */
+       flush   %o0
+       retl
+        nop
+
+       .align  32
+
+       .type   __glapi_sparc_get_pc, @function
+__glapi_sparc_get_pc:
+       retl
+        add    %o7, %g2, %g2
+       .size   __glapi_sparc_get_pc, .-__glapi_sparc_get_pc
+
+#ifdef GLX_USE_TLS
+
+       GLOBL_FN(__glapi_sparc_get_dispatch)
+       HIDDEN(__glapi_sparc_get_dispatch)
+__glapi_sparc_get_dispatch:
+       mov     %o7, %g1
+       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
+       call    __glapi_sparc_get_pc
+       add     %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
+       mov     %g1, %o7
+       sethi   %tie_hi22(_glapi_tls_Dispatch), %g1
+       add     %g1, %tie_lo10(_glapi_tls_Dispatch), %g1
+       GL_LL   [%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)
+       retl
+        mov    %g2, %o0
+
+       .data
+       .align  32
+
+       /* --> sethi %hi(_glapi_tls_Dispatch), %g1 */
+       /* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */
+       GLOBL_FN(__glapi_sparc_tls_stub)
+       HIDDEN(__glapi_sparc_tls_stub)
+__glapi_sparc_tls_stub: /* Call offset in %g3 */
+       mov     %o7, %g1
+       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
+       call    __glapi_sparc_get_pc
+       add     %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
+       mov     %g1, %o7
+       srl     %g3, 10, %g3
+       sethi   %tie_hi22(_glapi_tls_Dispatch), %g1
+       add     %g1, %tie_lo10(_glapi_tls_Dispatch), %g1
+       GL_LL   [%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)
+       GL_LL   [%g7+%g2], %g1
+       GL_LL   [%g1 + %g3], %g1
+       jmp     %g1
+        nop
+       .size   __glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub
+
+#define GL_STUB(fn, off)                               \
+       GLOBL_FN(fn);                                   \
+fn:    ba      __glapi_sparc_tls_stub;                 \
+        sethi  GL_OFF(off), %g3;                       \
+       .size   fn,.-fn;
+
+#elif defined(PTHREADS)
+
+       /* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */
+       /* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */
+       /* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */
+       /* 64-bit 0x0c --> sllx %g1, 32, %g1 */
+       /* 64-bit 0x10 --> add %g1, %g2, %g1 */
+       /* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */
+
+       /* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */
+       /* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */
+
+       .data
+       .align  32
+
+       GLOBL_FN(__glapi_sparc_pthread_stub)
+       HIDDEN(__glapi_sparc_pthread_stub)
+__glapi_sparc_pthread_stub: /* Call offset in %g3 */
+       mov     %o7, %g1
+       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
+       call    __glapi_sparc_get_pc
+        add    %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
+       mov     %g1, %o7
+       sethi   %hi(_glapi_Dispatch), %g1
+       or      %g1, %lo(_glapi_Dispatch), %g1
+       srl     %g3, 10, %g3
+       GL_LL   [%g2+%g1], %g2
+       GL_LL   [%g2], %g1
+       cmp     %g1, 0
+       be      2f
+        nop
+1:     GL_LL   [%g1 + %g3], %g1
+       jmp     %g1
+        nop
+2:     save    %sp, GL_STACK_SIZE, %sp
+       mov     %g3, %l0
+       call    _glapi_get_dispatch
+        nop
+       mov     %o0, %g1
+       mov     %l0, %g3
+       ba      1b
+        restore %g0, %g0, %g0
+       .size   __glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub
+
+#define GL_STUB(fn, off)                       \
+       GLOBL_FN(fn);                           \
+fn:    ba      __glapi_sparc_pthread_stub;     \
+        sethi  GL_OFF(off), %g3;               \
+       .size   fn,.-fn;
+
+#else /* Non-threaded version. */
+
+       .type   __glapi_sparc_nothread_stub, @function
+__glapi_sparc_nothread_stub: /* Call offset in %g3 */
+       mov     %o7, %g1
+       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
+       call    __glapi_sparc_get_pc
+        add    %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
+       mov     %g1, %o7
+       srl     %g3, 10, %g3
+       sethi   %hi(_glapi_Dispatch), %g1
+       or      %g1, %lo(_glapi_Dispatch), %g1
+       GL_LL   [%g2+%g1], %g2
+       GL_LL   [%g2], %g1
+       GL_LL   [%g1 + %g3], %g1
+       jmp     %g1
+        nop
+       .size   __glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub
+
+#define GL_STUB(fn, off)                       \
+       GLOBL_FN(fn);                           \
+fn:    ba      __glapi_sparc_nothread_stub;    \
+        sethi  GL_OFF(off), %g3;               \
+       .size   fn,.-fn;
+
+#endif
+
+#define GL_STUB_ALIAS(fn, alias)               \
+       .globl  fn;                             \
+       .set    fn, alias
+
+       .text
+       .align  32
+
+       .globl  gl_dispatch_functions_start
+       HIDDEN(gl_dispatch_functions_start)
+gl_dispatch_functions_start:
+
+       GL_STUB(glNewList, _gloffset_NewList)
+       GL_STUB(glEndList, _gloffset_EndList)
+       GL_STUB(glCallList, _gloffset_CallList)
+       GL_STUB(glCallLists, _gloffset_CallLists)
+       GL_STUB(glDeleteLists, _gloffset_DeleteLists)
+       GL_STUB(glGenLists, _gloffset_GenLists)
+       GL_STUB(glListBase, _gloffset_ListBase)
+       GL_STUB(glBegin, _gloffset_Begin)
+       GL_STUB(glBitmap, _gloffset_Bitmap)
+       GL_STUB(glColor3b, _gloffset_Color3b)
+       GL_STUB(glColor3bv, _gloffset_Color3bv)
+       GL_STUB(glColor3d, _gloffset_Color3d)
+       GL_STUB(glColor3dv, _gloffset_Color3dv)
+       GL_STUB(glColor3f, _gloffset_Color3f)
+       GL_STUB(glColor3fv, _gloffset_Color3fv)
+       GL_STUB(glColor3i, _gloffset_Color3i)
+       GL_STUB(glColor3iv, _gloffset_Color3iv)
+       GL_STUB(glColor3s, _gloffset_Color3s)
+       GL_STUB(glColor3sv, _gloffset_Color3sv)
+       GL_STUB(glColor3ub, _gloffset_Color3ub)
+       GL_STUB(glColor3ubv, _gloffset_Color3ubv)
+       GL_STUB(glColor3ui, _gloffset_Color3ui)
+       GL_STUB(glColor3uiv, _gloffset_Color3uiv)
+       GL_STUB(glColor3us, _gloffset_Color3us)
+       GL_STUB(glColor3usv, _gloffset_Color3usv)
+       GL_STUB(glColor4b, _gloffset_Color4b)
+       GL_STUB(glColor4bv, _gloffset_Color4bv)
+       GL_STUB(glColor4d, _gloffset_Color4d)
+       GL_STUB(glColor4dv, _gloffset_Color4dv)
+       GL_STUB(glColor4f, _gloffset_Color4f)
+       GL_STUB(glColor4fv, _gloffset_Color4fv)
+       GL_STUB(glColor4i, _gloffset_Color4i)
+       GL_STUB(glColor4iv, _gloffset_Color4iv)
+       GL_STUB(glColor4s, _gloffset_Color4s)
+       GL_STUB(glColor4sv, _gloffset_Color4sv)
+       GL_STUB(glColor4ub, _gloffset_Color4ub)
+       GL_STUB(glColor4ubv, _gloffset_Color4ubv)
+       GL_STUB(glColor4ui, _gloffset_Color4ui)
+       GL_STUB(glColor4uiv, _gloffset_Color4uiv)
+       GL_STUB(glColor4us, _gloffset_Color4us)
+       GL_STUB(glColor4usv, _gloffset_Color4usv)
+       GL_STUB(glEdgeFlag, _gloffset_EdgeFlag)
+       GL_STUB(glEdgeFlagv, _gloffset_EdgeFlagv)
+       GL_STUB(glEnd, _gloffset_End)
+       GL_STUB(glIndexd, _gloffset_Indexd)
+       GL_STUB(glIndexdv, _gloffset_Indexdv)
+       GL_STUB(glIndexf, _gloffset_Indexf)
+       GL_STUB(glIndexfv, _gloffset_Indexfv)
+       GL_STUB(glIndexi, _gloffset_Indexi)
+       GL_STUB(glIndexiv, _gloffset_Indexiv)
+       GL_STUB(glIndexs, _gloffset_Indexs)
+       GL_STUB(glIndexsv, _gloffset_Indexsv)
+       GL_STUB(glNormal3b, _gloffset_Normal3b)
+       GL_STUB(glNormal3bv, _gloffset_Normal3bv)
+       GL_STUB(glNormal3d, _gloffset_Normal3d)
+       GL_STUB(glNormal3dv, _gloffset_Normal3dv)
+       GL_STUB(glNormal3f, _gloffset_Normal3f)
+       GL_STUB(glNormal3fv, _gloffset_Normal3fv)
+       GL_STUB(glNormal3i, _gloffset_Normal3i)
+       GL_STUB(glNormal3iv, _gloffset_Normal3iv)
+       GL_STUB(glNormal3s, _gloffset_Normal3s)
+       GL_STUB(glNormal3sv, _gloffset_Normal3sv)
+       GL_STUB(glRasterPos2d, _gloffset_RasterPos2d)
+       GL_STUB(glRasterPos2dv, _gloffset_RasterPos2dv)
+       GL_STUB(glRasterPos2f, _gloffset_RasterPos2f)
+       GL_STUB(glRasterPos2fv, _gloffset_RasterPos2fv)
+       GL_STUB(glRasterPos2i, _gloffset_RasterPos2i)
+       GL_STUB(glRasterPos2iv, _gloffset_RasterPos2iv)
+       GL_STUB(glRasterPos2s, _gloffset_RasterPos2s)
+       GL_STUB(glRasterPos2sv, _gloffset_RasterPos2sv)
+       GL_STUB(glRasterPos3d, _gloffset_RasterPos3d)
+       GL_STUB(glRasterPos3dv, _gloffset_RasterPos3dv)
+       GL_STUB(glRasterPos3f, _gloffset_RasterPos3f)
+       GL_STUB(glRasterPos3fv, _gloffset_RasterPos3fv)
+       GL_STUB(glRasterPos3i, _gloffset_RasterPos3i)
+       GL_STUB(glRasterPos3iv, _gloffset_RasterPos3iv)
+       GL_STUB(glRasterPos3s, _gloffset_RasterPos3s)
+       GL_STUB(glRasterPos3sv, _gloffset_RasterPos3sv)
+       GL_STUB(glRasterPos4d, _gloffset_RasterPos4d)
+       GL_STUB(glRasterPos4dv, _gloffset_RasterPos4dv)
+       GL_STUB(glRasterPos4f, _gloffset_RasterPos4f)
+       GL_STUB(glRasterPos4fv, _gloffset_RasterPos4fv)
+       GL_STUB(glRasterPos4i, _gloffset_RasterPos4i)
+       GL_STUB(glRasterPos4iv, _gloffset_RasterPos4iv)
+       GL_STUB(glRasterPos4s, _gloffset_RasterPos4s)
+       GL_STUB(glRasterPos4sv, _gloffset_RasterPos4sv)
+       GL_STUB(glRectd, _gloffset_Rectd)
+       GL_STUB(glRectdv, _gloffset_Rectdv)
+       GL_STUB(glRectf, _gloffset_Rectf)
+       GL_STUB(glRectfv, _gloffset_Rectfv)
+       GL_STUB(glRecti, _gloffset_Recti)
+       GL_STUB(glRectiv, _gloffset_Rectiv)
+       GL_STUB(glRects, _gloffset_Rects)
+       GL_STUB(glRectsv, _gloffset_Rectsv)
+       GL_STUB(glTexCoord1d, _gloffset_TexCoord1d)
+       GL_STUB(glTexCoord1dv, _gloffset_TexCoord1dv)
+       GL_STUB(glTexCoord1f, _gloffset_TexCoord1f)
+       GL_STUB(glTexCoord1fv, _gloffset_TexCoord1fv)
+       GL_STUB(glTexCoord1i, _gloffset_TexCoord1i)
+       GL_STUB(glTexCoord1iv, _gloffset_TexCoord1iv)
+       GL_STUB(glTexCoord1s, _gloffset_TexCoord1s)
+       GL_STUB(glTexCoord1sv, _gloffset_TexCoord1sv)
+       GL_STUB(glTexCoord2d, _gloffset_TexCoord2d)
+       GL_STUB(glTexCoord2dv, _gloffset_TexCoord2dv)
+       GL_STUB(glTexCoord2f, _gloffset_TexCoord2f)
+       GL_STUB(glTexCoord2fv, _gloffset_TexCoord2fv)
+       GL_STUB(glTexCoord2i, _gloffset_TexCoord2i)
+       GL_STUB(glTexCoord2iv, _gloffset_TexCoord2iv)
+       GL_STUB(glTexCoord2s, _gloffset_TexCoord2s)
+       GL_STUB(glTexCoord2sv, _gloffset_TexCoord2sv)
+       GL_STUB(glTexCoord3d, _gloffset_TexCoord3d)
+       GL_STUB(glTexCoord3dv, _gloffset_TexCoord3dv)
+       GL_STUB(glTexCoord3f, _gloffset_TexCoord3f)
+       GL_STUB(glTexCoord3fv, _gloffset_TexCoord3fv)
+       GL_STUB(glTexCoord3i, _gloffset_TexCoord3i)
+       GL_STUB(glTexCoord3iv, _gloffset_TexCoord3iv)
+       GL_STUB(glTexCoord3s, _gloffset_TexCoord3s)
+       GL_STUB(glTexCoord3sv, _gloffset_TexCoord3sv)
+       GL_STUB(glTexCoord4d, _gloffset_TexCoord4d)
+       GL_STUB(glTexCoord4dv, _gloffset_TexCoord4dv)
+       GL_STUB(glTexCoord4f, _gloffset_TexCoord4f)
+       GL_STUB(glTexCoord4fv, _gloffset_TexCoord4fv)
+       GL_STUB(glTexCoord4i, _gloffset_TexCoord4i)
+       GL_STUB(glTexCoord4iv, _gloffset_TexCoord4iv)
+       GL_STUB(glTexCoord4s, _gloffset_TexCoord4s)
+       GL_STUB(glTexCoord4sv, _gloffset_TexCoord4sv)
+       GL_STUB(glVertex2d, _gloffset_Vertex2d)
+       GL_STUB(glVertex2dv, _gloffset_Vertex2dv)
+       GL_STUB(glVertex2f, _gloffset_Vertex2f)
+       GL_STUB(glVertex2fv, _gloffset_Vertex2fv)
+       GL_STUB(glVertex2i, _gloffset_Vertex2i)
+       GL_STUB(glVertex2iv, _gloffset_Vertex2iv)
+       GL_STUB(glVertex2s, _gloffset_Vertex2s)
+       GL_STUB(glVertex2sv, _gloffset_Vertex2sv)
+       GL_STUB(glVertex3d, _gloffset_Vertex3d)
+       GL_STUB(glVertex3dv, _gloffset_Vertex3dv)
+       GL_STUB(glVertex3f, _gloffset_Vertex3f)
+       GL_STUB(glVertex3fv, _gloffset_Vertex3fv)
+       GL_STUB(glVertex3i, _gloffset_Vertex3i)
+       GL_STUB(glVertex3iv, _gloffset_Vertex3iv)
+       GL_STUB(glVertex3s, _gloffset_Vertex3s)
+       GL_STUB(glVertex3sv, _gloffset_Vertex3sv)
+       GL_STUB(glVertex4d, _gloffset_Vertex4d)
+       GL_STUB(glVertex4dv, _gloffset_Vertex4dv)
+       GL_STUB(glVertex4f, _gloffset_Vertex4f)
+       GL_STUB(glVertex4fv, _gloffset_Vertex4fv)
+       GL_STUB(glVertex4i, _gloffset_Vertex4i)
+       GL_STUB(glVertex4iv, _gloffset_Vertex4iv)
+       GL_STUB(glVertex4s, _gloffset_Vertex4s)
+       GL_STUB(glVertex4sv, _gloffset_Vertex4sv)
+       GL_STUB(glClipPlane, _gloffset_ClipPlane)
+       GL_STUB(glColorMaterial, _gloffset_ColorMaterial)
+       GL_STUB(glCullFace, _gloffset_CullFace)
+       GL_STUB(glFogf, _gloffset_Fogf)
+       GL_STUB(glFogfv, _gloffset_Fogfv)
+       GL_STUB(glFogi, _gloffset_Fogi)
+       GL_STUB(glFogiv, _gloffset_Fogiv)
+       GL_STUB(glFrontFace, _gloffset_FrontFace)
+       GL_STUB(glHint, _gloffset_Hint)
+       GL_STUB(glLightf, _gloffset_Lightf)
+       GL_STUB(glLightfv, _gloffset_Lightfv)
+       GL_STUB(glLighti, _gloffset_Lighti)
+       GL_STUB(glLightiv, _gloffset_Lightiv)
+       GL_STUB(glLightModelf, _gloffset_LightModelf)
+       GL_STUB(glLightModelfv, _gloffset_LightModelfv)
+       GL_STUB(glLightModeli, _gloffset_LightModeli)
+       GL_STUB(glLightModeliv, _gloffset_LightModeliv)
+       GL_STUB(glLineStipple, _gloffset_LineStipple)
+       GL_STUB(glLineWidth, _gloffset_LineWidth)
+       GL_STUB(glMaterialf, _gloffset_Materialf)
+       GL_STUB(glMaterialfv, _gloffset_Materialfv)
+       GL_STUB(glMateriali, _gloffset_Materiali)
+       GL_STUB(glMaterialiv, _gloffset_Materialiv)
+       GL_STUB(glPointSize, _gloffset_PointSize)
+       GL_STUB(glPolygonMode, _gloffset_PolygonMode)
+       GL_STUB(glPolygonStipple, _gloffset_PolygonStipple)
+       GL_STUB(glScissor, _gloffset_Scissor)
+       GL_STUB(glShadeModel, _gloffset_ShadeModel)
+       GL_STUB(glTexParameterf, _gloffset_TexParameterf)
+       GL_STUB(glTexParameterfv, _gloffset_TexParameterfv)
+       GL_STUB(glTexParameteri, _gloffset_TexParameteri)
+       GL_STUB(glTexParameteriv, _gloffset_TexParameteriv)
+       GL_STUB(glTexImage1D, _gloffset_TexImage1D)
+       GL_STUB(glTexImage2D, _gloffset_TexImage2D)
+       GL_STUB(glTexEnvf, _gloffset_TexEnvf)
+       GL_STUB(glTexEnvfv, _gloffset_TexEnvfv)
+       GL_STUB(glTexEnvi, _gloffset_TexEnvi)
+       GL_STUB(glTexEnviv, _gloffset_TexEnviv)
+       GL_STUB(glTexGend, _gloffset_TexGend)
+       GL_STUB(glTexGendv, _gloffset_TexGendv)
+       GL_STUB(glTexGenf, _gloffset_TexGenf)
+       GL_STUB(glTexGenfv, _gloffset_TexGenfv)
+       GL_STUB(glTexGeni, _gloffset_TexGeni)
+       GL_STUB(glTexGeniv, _gloffset_TexGeniv)
+       GL_STUB(glFeedbackBuffer, _gloffset_FeedbackBuffer)
+       GL_STUB(glSelectBuffer, _gloffset_SelectBuffer)
+       GL_STUB(glRenderMode, _gloffset_RenderMode)
+       GL_STUB(glInitNames, _gloffset_InitNames)
+       GL_STUB(glLoadName, _gloffset_LoadName)
+       GL_STUB(glPassThrough, _gloffset_PassThrough)
+       GL_STUB(glPopName, _gloffset_PopName)
+       GL_STUB(glPushName, _gloffset_PushName)
+       GL_STUB(glDrawBuffer, _gloffset_DrawBuffer)
+       GL_STUB(glClear, _gloffset_Clear)
+       GL_STUB(glClearAccum, _gloffset_ClearAccum)
+       GL_STUB(glClearIndex, _gloffset_ClearIndex)
+       GL_STUB(glClearColor, _gloffset_ClearColor)
+       GL_STUB(glClearStencil, _gloffset_ClearStencil)
+       GL_STUB(glClearDepth, _gloffset_ClearDepth)
+       GL_STUB(glStencilMask, _gloffset_StencilMask)
+       GL_STUB(glColorMask, _gloffset_ColorMask)
+       GL_STUB(glDepthMask, _gloffset_DepthMask)
+       GL_STUB(glIndexMask, _gloffset_IndexMask)
+       GL_STUB(glAccum, _gloffset_Accum)
+       GL_STUB(glDisable, _gloffset_Disable)
+       GL_STUB(glEnable, _gloffset_Enable)
+       GL_STUB(glFinish, _gloffset_Finish)
+       GL_STUB(glFlush, _gloffset_Flush)
+       GL_STUB(glPopAttrib, _gloffset_PopAttrib)
+       GL_STUB(glPushAttrib, _gloffset_PushAttrib)
+       GL_STUB(glMap1d, _gloffset_Map1d)
+       GL_STUB(glMap1f, _gloffset_Map1f)
+       GL_STUB(glMap2d, _gloffset_Map2d)
+       GL_STUB(glMap2f, _gloffset_Map2f)
+       GL_STUB(glMapGrid1d, _gloffset_MapGrid1d)
+       GL_STUB(glMapGrid1f, _gloffset_MapGrid1f)
+       GL_STUB(glMapGrid2d, _gloffset_MapGrid2d)
+       GL_STUB(glMapGrid2f, _gloffset_MapGrid2f)
+       GL_STUB(glEvalCoord1d, _gloffset_EvalCoord1d)
+       GL_STUB(glEvalCoord1dv, _gloffset_EvalCoord1dv)
+       GL_STUB(glEvalCoord1f, _gloffset_EvalCoord1f)
+       GL_STUB(glEvalCoord1fv, _gloffset_EvalCoord1fv)
+       GL_STUB(glEvalCoord2d, _gloffset_EvalCoord2d)
+       GL_STUB(glEvalCoord2dv, _gloffset_EvalCoord2dv)
+       GL_STUB(glEvalCoord2f, _gloffset_EvalCoord2f)
+       GL_STUB(glEvalCoord2fv, _gloffset_EvalCoord2fv)
+       GL_STUB(glEvalMesh1, _gloffset_EvalMesh1)
+       GL_STUB(glEvalPoint1, _gloffset_EvalPoint1)
+       GL_STUB(glEvalMesh2, _gloffset_EvalMesh2)
+       GL_STUB(glEvalPoint2, _gloffset_EvalPoint2)
+       GL_STUB(glAlphaFunc, _gloffset_AlphaFunc)
+       GL_STUB(glBlendFunc, _gloffset_BlendFunc)
+       GL_STUB(glLogicOp, _gloffset_LogicOp)
+       GL_STUB(glStencilFunc, _gloffset_StencilFunc)
+       GL_STUB(glStencilOp, _gloffset_StencilOp)
+       GL_STUB(glDepthFunc, _gloffset_DepthFunc)
+       GL_STUB(glPixelZoom, _gloffset_PixelZoom)
+       GL_STUB(glPixelTransferf, _gloffset_PixelTransferf)
+       GL_STUB(glPixelTransferi, _gloffset_PixelTransferi)
+       GL_STUB(glPixelStoref, _gloffset_PixelStoref)
+       GL_STUB(glPixelStorei, _gloffset_PixelStorei)
+       GL_STUB(glPixelMapfv, _gloffset_PixelMapfv)
+       GL_STUB(glPixelMapuiv, _gloffset_PixelMapuiv)
+       GL_STUB(glPixelMapusv, _gloffset_PixelMapusv)
+       GL_STUB(glReadBuffer, _gloffset_ReadBuffer)
+       GL_STUB(glCopyPixels, _gloffset_CopyPixels)
+       GL_STUB(glReadPixels, _gloffset_ReadPixels)
+       GL_STUB(glDrawPixels, _gloffset_DrawPixels)
+       GL_STUB(glGetBooleanv, _gloffset_GetBooleanv)
+       GL_STUB(glGetClipPlane, _gloffset_GetClipPlane)
+       GL_STUB(glGetDoublev, _gloffset_GetDoublev)
+       GL_STUB(glGetError, _gloffset_GetError)
+       GL_STUB(glGetFloatv, _gloffset_GetFloatv)
+       GL_STUB(glGetIntegerv, _gloffset_GetIntegerv)
+       GL_STUB(glGetLightfv, _gloffset_GetLightfv)
+       GL_STUB(glGetLightiv, _gloffset_GetLightiv)
+       GL_STUB(glGetMapdv, _gloffset_GetMapdv)
+       GL_STUB(glGetMapfv, _gloffset_GetMapfv)
+       GL_STUB(glGetMapiv, _gloffset_GetMapiv)
+       GL_STUB(glGetMaterialfv, _gloffset_GetMaterialfv)
+       GL_STUB(glGetMaterialiv, _gloffset_GetMaterialiv)
+       GL_STUB(glGetPixelMapfv, _gloffset_GetPixelMapfv)
+       GL_STUB(glGetPixelMapuiv, _gloffset_GetPixelMapuiv)
+       GL_STUB(glGetPixelMapusv, _gloffset_GetPixelMapusv)
+       GL_STUB(glGetPolygonStipple, _gloffset_GetPolygonStipple)
+       GL_STUB(glGetString, _gloffset_GetString)
+       GL_STUB(glGetTexEnvfv, _gloffset_GetTexEnvfv)
+       GL_STUB(glGetTexEnviv, _gloffset_GetTexEnviv)
+       GL_STUB(glGetTexGendv, _gloffset_GetTexGendv)
+       GL_STUB(glGetTexGenfv, _gloffset_GetTexGenfv)
+       GL_STUB(glGetTexGeniv, _gloffset_GetTexGeniv)
+       GL_STUB(glGetTexImage, _gloffset_GetTexImage)
+       GL_STUB(glGetTexParameterfv, _gloffset_GetTexParameterfv)
+       GL_STUB(glGetTexParameteriv, _gloffset_GetTexParameteriv)
+       GL_STUB(glGetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv)
+       GL_STUB(glGetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv)
+       GL_STUB(glIsEnabled, _gloffset_IsEnabled)
+       GL_STUB(glIsList, _gloffset_IsList)
+       GL_STUB(glDepthRange, _gloffset_DepthRange)
+       GL_STUB(glFrustum, _gloffset_Frustum)
+       GL_STUB(glLoadIdentity, _gloffset_LoadIdentity)
+       GL_STUB(glLoadMatrixf, _gloffset_LoadMatrixf)
+       GL_STUB(glLoadMatrixd, _gloffset_LoadMatrixd)
+       GL_STUB(glMatrixMode, _gloffset_MatrixMode)
+       GL_STUB(glMultMatrixf, _gloffset_MultMatrixf)
+       GL_STUB(glMultMatrixd, _gloffset_MultMatrixd)
+       GL_STUB(glOrtho, _gloffset_Ortho)
+       GL_STUB(glPopMatrix, _gloffset_PopMatrix)
+       GL_STUB(glPushMatrix, _gloffset_PushMatrix)
+       GL_STUB(glRotated, _gloffset_Rotated)
+       GL_STUB(glRotatef, _gloffset_Rotatef)
+       GL_STUB(glScaled, _gloffset_Scaled)
+       GL_STUB(glScalef, _gloffset_Scalef)
+       GL_STUB(glTranslated, _gloffset_Translated)
+       GL_STUB(glTranslatef, _gloffset_Translatef)
+       GL_STUB(glViewport, _gloffset_Viewport)
+       GL_STUB(glArrayElement, _gloffset_ArrayElement)
+       GL_STUB(glBindTexture, _gloffset_BindTexture)
+       GL_STUB(glColorPointer, _gloffset_ColorPointer)
+       GL_STUB(glDisableClientState, _gloffset_DisableClientState)
+       GL_STUB(glDrawArrays, _gloffset_DrawArrays)
+       GL_STUB(glDrawElements, _gloffset_DrawElements)
+       GL_STUB(glEdgeFlagPointer, _gloffset_EdgeFlagPointer)
+       GL_STUB(glEnableClientState, _gloffset_EnableClientState)
+       GL_STUB(glIndexPointer, _gloffset_IndexPointer)
+       GL_STUB(glIndexub, _gloffset_Indexub)
+       GL_STUB(glIndexubv, _gloffset_Indexubv)
+       GL_STUB(glInterleavedArrays, _gloffset_InterleavedArrays)
+       GL_STUB(glNormalPointer, _gloffset_NormalPointer)
+       GL_STUB(glPolygonOffset, _gloffset_PolygonOffset)
+       GL_STUB(glTexCoordPointer, _gloffset_TexCoordPointer)
+       GL_STUB(glVertexPointer, _gloffset_VertexPointer)
+       GL_STUB(glAreTexturesResident, _gloffset_AreTexturesResident)
+       GL_STUB(glCopyTexImage1D, _gloffset_CopyTexImage1D)
+       GL_STUB(glCopyTexImage2D, _gloffset_CopyTexImage2D)
+       GL_STUB(glCopyTexSubImage1D, _gloffset_CopyTexSubImage1D)
+       GL_STUB(glCopyTexSubImage2D, _gloffset_CopyTexSubImage2D)
+       GL_STUB(glDeleteTextures, _gloffset_DeleteTextures)
+       GL_STUB(glGenTextures, _gloffset_GenTextures)
+       GL_STUB(glGetPointerv, _gloffset_GetPointerv)
+       GL_STUB(glIsTexture, _gloffset_IsTexture)
+       GL_STUB(glPrioritizeTextures, _gloffset_PrioritizeTextures)
+       GL_STUB(glTexSubImage1D, _gloffset_TexSubImage1D)
+       GL_STUB(glTexSubImage2D, _gloffset_TexSubImage2D)
+       GL_STUB(glPopClientAttrib, _gloffset_PopClientAttrib)
+       GL_STUB(glPushClientAttrib, _gloffset_PushClientAttrib)
+       GL_STUB(glBlendColor, _gloffset_BlendColor)
+       GL_STUB(glBlendEquation, _gloffset_BlendEquation)
+       GL_STUB(glDrawRangeElements, _gloffset_DrawRangeElements)
+       GL_STUB(glColorTable, _gloffset_ColorTable)
+       GL_STUB(glColorTableParameterfv, _gloffset_ColorTableParameterfv)
+       GL_STUB(glColorTableParameteriv, _gloffset_ColorTableParameteriv)
+       GL_STUB(glCopyColorTable, _gloffset_CopyColorTable)
+       GL_STUB(glGetColorTable, _gloffset_GetColorTable)
+       GL_STUB(glGetColorTableParameterfv, _gloffset_GetColorTableParameterfv)
+       GL_STUB(glGetColorTableParameteriv, _gloffset_GetColorTableParameteriv)
+       GL_STUB(glColorSubTable, _gloffset_ColorSubTable)
+       GL_STUB(glCopyColorSubTable, _gloffset_CopyColorSubTable)
+       GL_STUB(glConvolutionFilter1D, _gloffset_ConvolutionFilter1D)
+       GL_STUB(glConvolutionFilter2D, _gloffset_ConvolutionFilter2D)
+       GL_STUB(glConvolutionParameterf, _gloffset_ConvolutionParameterf)
+       GL_STUB(glConvolutionParameterfv, _gloffset_ConvolutionParameterfv)
+       GL_STUB(glConvolutionParameteri, _gloffset_ConvolutionParameteri)
+       GL_STUB(glConvolutionParameteriv, _gloffset_ConvolutionParameteriv)
+       GL_STUB(glCopyConvolutionFilter1D, _gloffset_CopyConvolutionFilter1D)
+       GL_STUB(glCopyConvolutionFilter2D, _gloffset_CopyConvolutionFilter2D)
+       GL_STUB(glGetConvolutionFilter, _gloffset_GetConvolutionFilter)
+       GL_STUB(glGetConvolutionParameterfv, _gloffset_GetConvolutionParameterfv)
+       GL_STUB(glGetConvolutionParameteriv, _gloffset_GetConvolutionParameteriv)
+       GL_STUB(glGetSeparableFilter, _gloffset_GetSeparableFilter)
+       GL_STUB(glSeparableFilter2D, _gloffset_SeparableFilter2D)
+       GL_STUB(glGetHistogram, _gloffset_GetHistogram)
+       GL_STUB(glGetHistogramParameterfv, _gloffset_GetHistogramParameterfv)
+       GL_STUB(glGetHistogramParameteriv, _gloffset_GetHistogramParameteriv)
+       GL_STUB(glGetMinmax, _gloffset_GetMinmax)
+       GL_STUB(glGetMinmaxParameterfv, _gloffset_GetMinmaxParameterfv)
+       GL_STUB(glGetMinmaxParameteriv, _gloffset_GetMinmaxParameteriv)
+       GL_STUB(glHistogram, _gloffset_Histogram)
+       GL_STUB(glMinmax, _gloffset_Minmax)
+       GL_STUB(glResetHistogram, _gloffset_ResetHistogram)
+       GL_STUB(glResetMinmax, _gloffset_ResetMinmax)
+       GL_STUB(glTexImage3D, _gloffset_TexImage3D)
+       GL_STUB(glTexSubImage3D, _gloffset_TexSubImage3D)
+       GL_STUB(glCopyTexSubImage3D, _gloffset_CopyTexSubImage3D)
+       GL_STUB(glActiveTextureARB, _gloffset_ActiveTextureARB)
+       GL_STUB(glClientActiveTextureARB, _gloffset_ClientActiveTextureARB)
+       GL_STUB(glMultiTexCoord1dARB, _gloffset_MultiTexCoord1dARB)
+       GL_STUB(glMultiTexCoord1dvARB, _gloffset_MultiTexCoord1dvARB)
+       GL_STUB(glMultiTexCoord1fARB, _gloffset_MultiTexCoord1fARB)
+       GL_STUB(glMultiTexCoord1fvARB, _gloffset_MultiTexCoord1fvARB)
+       GL_STUB(glMultiTexCoord1iARB, _gloffset_MultiTexCoord1iARB)
+       GL_STUB(glMultiTexCoord1ivARB, _gloffset_MultiTexCoord1ivARB)
+       GL_STUB(glMultiTexCoord1sARB, _gloffset_MultiTexCoord1sARB)
+       GL_STUB(glMultiTexCoord1svARB, _gloffset_MultiTexCoord1svARB)
+       GL_STUB(glMultiTexCoord2dARB, _gloffset_MultiTexCoord2dARB)
+       GL_STUB(glMultiTexCoord2dvARB, _gloffset_MultiTexCoord2dvARB)
+       GL_STUB(glMultiTexCoord2fARB, _gloffset_MultiTexCoord2fARB)
+       GL_STUB(glMultiTexCoord2fvARB, _gloffset_MultiTexCoord2fvARB)
+       GL_STUB(glMultiTexCoord2iARB, _gloffset_MultiTexCoord2iARB)
+       GL_STUB(glMultiTexCoord2ivARB, _gloffset_MultiTexCoord2ivARB)
+       GL_STUB(glMultiTexCoord2sARB, _gloffset_MultiTexCoord2sARB)
+       GL_STUB(glMultiTexCoord2svARB, _gloffset_MultiTexCoord2svARB)
+       GL_STUB(glMultiTexCoord3dARB, _gloffset_MultiTexCoord3dARB)
+       GL_STUB(glMultiTexCoord3dvARB, _gloffset_MultiTexCoord3dvARB)
+       GL_STUB(glMultiTexCoord3fARB, _gloffset_MultiTexCoord3fARB)
+       GL_STUB(glMultiTexCoord3fvARB, _gloffset_MultiTexCoord3fvARB)
+       GL_STUB(glMultiTexCoord3iARB, _gloffset_MultiTexCoord3iARB)
+       GL_STUB(glMultiTexCoord3ivARB, _gloffset_MultiTexCoord3ivARB)
+       GL_STUB(glMultiTexCoord3sARB, _gloffset_MultiTexCoord3sARB)
+       GL_STUB(glMultiTexCoord3svARB, _gloffset_MultiTexCoord3svARB)
+       GL_STUB(glMultiTexCoord4dARB, _gloffset_MultiTexCoord4dARB)
+       GL_STUB(glMultiTexCoord4dvARB, _gloffset_MultiTexCoord4dvARB)
+       GL_STUB(glMultiTexCoord4fARB, _gloffset_MultiTexCoord4fARB)
+       GL_STUB(glMultiTexCoord4fvARB, _gloffset_MultiTexCoord4fvARB)
+       GL_STUB(glMultiTexCoord4iARB, _gloffset_MultiTexCoord4iARB)
+       GL_STUB(glMultiTexCoord4ivARB, _gloffset_MultiTexCoord4ivARB)
+       GL_STUB(glMultiTexCoord4sARB, _gloffset_MultiTexCoord4sARB)
+       GL_STUB(glMultiTexCoord4svARB, _gloffset_MultiTexCoord4svARB)
+       GL_STUB(glAttachShader, _gloffset_AttachShader)
+       GL_STUB(glCreateProgram, _gloffset_CreateProgram)
+       GL_STUB(glCreateShader, _gloffset_CreateShader)
+       GL_STUB(glDeleteProgram, _gloffset_DeleteProgram)
+       GL_STUB(glDeleteShader, _gloffset_DeleteShader)
+       GL_STUB(glDetachShader, _gloffset_DetachShader)
+       GL_STUB(glGetAttachedShaders, _gloffset_GetAttachedShaders)
+       GL_STUB(glGetProgramInfoLog, _gloffset_GetProgramInfoLog)
+       GL_STUB(glGetProgramiv, _gloffset_GetProgramiv)
+       GL_STUB(glGetShaderInfoLog, _gloffset_GetShaderInfoLog)
+       GL_STUB(glGetShaderiv, _gloffset_GetShaderiv)
+       GL_STUB(glIsProgram, _gloffset_IsProgram)
+       GL_STUB(glIsShader, _gloffset_IsShader)
+       GL_STUB(glStencilFuncSeparate, _gloffset_StencilFuncSeparate)
+       GL_STUB(glStencilMaskSeparate, _gloffset_StencilMaskSeparate)
+       GL_STUB(glStencilOpSeparate, _gloffset_StencilOpSeparate)
+       GL_STUB(glUniformMatrix2x3fv, _gloffset_UniformMatrix2x3fv)
+       GL_STUB(glUniformMatrix2x4fv, _gloffset_UniformMatrix2x4fv)
+       GL_STUB(glUniformMatrix3x2fv, _gloffset_UniformMatrix3x2fv)
+       GL_STUB(glUniformMatrix3x4fv, _gloffset_UniformMatrix3x4fv)
+       GL_STUB(glUniformMatrix4x2fv, _gloffset_UniformMatrix4x2fv)
+       GL_STUB(glUniformMatrix4x3fv, _gloffset_UniformMatrix4x3fv)
+       GL_STUB(glDrawArraysInstanced, _gloffset_DrawArraysInstanced)
+       GL_STUB(glDrawElementsInstanced, _gloffset_DrawElementsInstanced)
+       GL_STUB(glLoadTransposeMatrixdARB, _gloffset_LoadTransposeMatrixdARB)
+       GL_STUB(glLoadTransposeMatrixfARB, _gloffset_LoadTransposeMatrixfARB)
+       GL_STUB(glMultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB)
+       GL_STUB(glMultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB)
+       GL_STUB(glSampleCoverageARB, _gloffset_SampleCoverageARB)
+       GL_STUB(glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB)
+       GL_STUB(glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB)
+       GL_STUB(glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB)
+       GL_STUB(glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB)
+       GL_STUB(glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB)
+       GL_STUB(glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB)
+       GL_STUB(glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB)
+       GL_STUB(glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB)
+       GL_STUB(glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB)
+       GL_STUB(glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB)
+       GL_STUB(glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB)
+       GL_STUB(glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB)
+       GL_STUB(glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB)
+       GL_STUB(glGetProgramStringARB, _gloffset_GetProgramStringARB)
+       GL_STUB(glGetProgramivARB, _gloffset_GetProgramivARB)
+       GL_STUB(glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvARB)
+       GL_STUB(glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvARB)
+       GL_STUB(glGetVertexAttribivARB, _gloffset_GetVertexAttribivARB)
+       GL_STUB(glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB)
+       GL_STUB(glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB)
+       GL_STUB(glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB)
+       GL_STUB(glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB)
+       GL_STUB(glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB)
+       GL_STUB(glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB)
+       GL_STUB(glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB)
+       GL_STUB(glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB)
+       GL_STUB(glProgramStringARB, _gloffset_ProgramStringARB)
+       GL_STUB(glVertexAttrib1dARB, _gloffset_VertexAttrib1dARB)
+       GL_STUB(glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB)
+       GL_STUB(glVertexAttrib1fARB, _gloffset_VertexAttrib1fARB)
+       GL_STUB(glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB)
+       GL_STUB(glVertexAttrib1sARB, _gloffset_VertexAttrib1sARB)
+       GL_STUB(glVertexAttrib1svARB, _gloffset_VertexAttrib1svARB)
+       GL_STUB(glVertexAttrib2dARB, _gloffset_VertexAttrib2dARB)
+       GL_STUB(glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB)
+       GL_STUB(glVertexAttrib2fARB, _gloffset_VertexAttrib2fARB)
+       GL_STUB(glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB)
+       GL_STUB(glVertexAttrib2sARB, _gloffset_VertexAttrib2sARB)
+       GL_STUB(glVertexAttrib2svARB, _gloffset_VertexAttrib2svARB)
+       GL_STUB(glVertexAttrib3dARB, _gloffset_VertexAttrib3dARB)
+       GL_STUB(glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB)
+       GL_STUB(glVertexAttrib3fARB, _gloffset_VertexAttrib3fARB)
+       GL_STUB(glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB)
+       GL_STUB(glVertexAttrib3sARB, _gloffset_VertexAttrib3sARB)
+       GL_STUB(glVertexAttrib3svARB, _gloffset_VertexAttrib3svARB)
+       GL_STUB(glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB)
+       GL_STUB(glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB)
+       GL_STUB(glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB)
+       GL_STUB(glVertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB)
+       GL_STUB(glVertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB)
+       GL_STUB(glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB)
+       GL_STUB(glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB)
+       GL_STUB(glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB)
+       GL_STUB(glVertexAttrib4dARB, _gloffset_VertexAttrib4dARB)
+       GL_STUB(glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB)
+       GL_STUB(glVertexAttrib4fARB, _gloffset_VertexAttrib4fARB)
+       GL_STUB(glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB)
+       GL_STUB(glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB)
+       GL_STUB(glVertexAttrib4sARB, _gloffset_VertexAttrib4sARB)
+       GL_STUB(glVertexAttrib4svARB, _gloffset_VertexAttrib4svARB)
+       GL_STUB(glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB)
+       GL_STUB(glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB)
+       GL_STUB(glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB)
+       GL_STUB(glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB)
+       GL_STUB(glBindBufferARB, _gloffset_BindBufferARB)
+       GL_STUB(glBufferDataARB, _gloffset_BufferDataARB)
+       GL_STUB(glBufferSubDataARB, _gloffset_BufferSubDataARB)
+       GL_STUB(glDeleteBuffersARB, _gloffset_DeleteBuffersARB)
+       GL_STUB(glGenBuffersARB, _gloffset_GenBuffersARB)
+       GL_STUB(glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB)
+       GL_STUB(glGetBufferPointervARB, _gloffset_GetBufferPointervARB)
+       GL_STUB(glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB)
+       GL_STUB(glIsBufferARB, _gloffset_IsBufferARB)
+       GL_STUB(glMapBufferARB, _gloffset_MapBufferARB)
+       GL_STUB(glUnmapBufferARB, _gloffset_UnmapBufferARB)
+       GL_STUB(glBeginQueryARB, _gloffset_BeginQueryARB)
+       GL_STUB(glDeleteQueriesARB, _gloffset_DeleteQueriesARB)
+       GL_STUB(glEndQueryARB, _gloffset_EndQueryARB)
+       GL_STUB(glGenQueriesARB, _gloffset_GenQueriesARB)
+       GL_STUB(glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB)
+       GL_STUB(glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB)
+       GL_STUB(glGetQueryivARB, _gloffset_GetQueryivARB)
+       GL_STUB(glIsQueryARB, _gloffset_IsQueryARB)
+       GL_STUB(glAttachObjectARB, _gloffset_AttachObjectARB)
+       GL_STUB(glCompileShaderARB, _gloffset_CompileShaderARB)
+       GL_STUB(glCreateProgramObjectARB, _gloffset_CreateProgramObjectARB)
+       GL_STUB(glCreateShaderObjectARB, _gloffset_CreateShaderObjectARB)
+       GL_STUB(glDeleteObjectARB, _gloffset_DeleteObjectARB)
+       GL_STUB(glDetachObjectARB, _gloffset_DetachObjectARB)
+       GL_STUB(glGetActiveUniformARB, _gloffset_GetActiveUniformARB)
+       GL_STUB(glGetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB)
+       GL_STUB(glGetHandleARB, _gloffset_GetHandleARB)
+       GL_STUB(glGetInfoLogARB, _gloffset_GetInfoLogARB)
+       GL_STUB(glGetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB)
+       GL_STUB(glGetObjectParameterivARB, _gloffset_GetObjectParameterivARB)
+       GL_STUB(glGetShaderSourceARB, _gloffset_GetShaderSourceARB)
+       GL_STUB(glGetUniformLocationARB, _gloffset_GetUniformLocationARB)
+       GL_STUB(glGetUniformfvARB, _gloffset_GetUniformfvARB)
+       GL_STUB(glGetUniformivARB, _gloffset_GetUniformivARB)
+       GL_STUB(glLinkProgramARB, _gloffset_LinkProgramARB)
+       GL_STUB(glShaderSourceARB, _gloffset_ShaderSourceARB)
+       GL_STUB(glUniform1fARB, _gloffset_Uniform1fARB)
+       GL_STUB(glUniform1fvARB, _gloffset_Uniform1fvARB)
+       GL_STUB(glUniform1iARB, _gloffset_Uniform1iARB)
+       GL_STUB(glUniform1ivARB, _gloffset_Uniform1ivARB)
+       GL_STUB(glUniform2fARB, _gloffset_Uniform2fARB)
+       GL_STUB(glUniform2fvARB, _gloffset_Uniform2fvARB)
+       GL_STUB(glUniform2iARB, _gloffset_Uniform2iARB)
+       GL_STUB(glUniform2ivARB, _gloffset_Uniform2ivARB)
+       GL_STUB(glUniform3fARB, _gloffset_Uniform3fARB)
+       GL_STUB(glUniform3fvARB, _gloffset_Uniform3fvARB)
+       GL_STUB(glUniform3iARB, _gloffset_Uniform3iARB)
+       GL_STUB(glUniform3ivARB, _gloffset_Uniform3ivARB)
+       GL_STUB(glUniform4fARB, _gloffset_Uniform4fARB)
+       GL_STUB(glUniform4fvARB, _gloffset_Uniform4fvARB)
+       GL_STUB(glUniform4iARB, _gloffset_Uniform4iARB)
+       GL_STUB(glUniform4ivARB, _gloffset_Uniform4ivARB)
+       GL_STUB(glUniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB)
+       GL_STUB(glUniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB)
+       GL_STUB(glUniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB)
+       GL_STUB(glUseProgramObjectARB, _gloffset_UseProgramObjectARB)
+       GL_STUB(glValidateProgramARB, _gloffset_ValidateProgramARB)
+       GL_STUB(glBindAttribLocationARB, _gloffset_BindAttribLocationARB)
+       GL_STUB(glGetActiveAttribARB, _gloffset_GetActiveAttribARB)
+       GL_STUB(glGetAttribLocationARB, _gloffset_GetAttribLocationARB)
+       GL_STUB(glDrawBuffersARB, _gloffset_DrawBuffersARB)
+       GL_STUB(glRenderbufferStorageMultisample, _gloffset_RenderbufferStorageMultisample)
+       GL_STUB(glFlushMappedBufferRange, _gloffset_FlushMappedBufferRange)
+       GL_STUB(glMapBufferRange, _gloffset_MapBufferRange)
+       GL_STUB(glBindVertexArray, _gloffset_BindVertexArray)
+       GL_STUB(glGenVertexArrays, _gloffset_GenVertexArrays)
+       GL_STUB(glCopyBufferSubData, _gloffset_CopyBufferSubData)
+       GL_STUB(glClientWaitSync, _gloffset_ClientWaitSync)
+       GL_STUB(glDeleteSync, _gloffset_DeleteSync)
+       GL_STUB(glFenceSync, _gloffset_FenceSync)
+       GL_STUB(glGetInteger64v, _gloffset_GetInteger64v)
+       GL_STUB(glGetSynciv, _gloffset_GetSynciv)
+       GL_STUB(glIsSync, _gloffset_IsSync)
+       GL_STUB(glWaitSync, _gloffset_WaitSync)
+       GL_STUB(glDrawElementsBaseVertex, _gloffset_DrawElementsBaseVertex)
+       GL_STUB(glDrawRangeElementsBaseVertex, _gloffset_DrawRangeElementsBaseVertex)
+       GL_STUB(glMultiDrawElementsBaseVertex, _gloffset_MultiDrawElementsBaseVertex)
+       GL_STUB(glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT)
+       GL_STUB(gl_dispatch_stub_580, _gloffset_GetPixelTexGenParameterfvSGIS)
+       HIDDEN(gl_dispatch_stub_580)
+       GL_STUB(gl_dispatch_stub_581, _gloffset_GetPixelTexGenParameterivSGIS)
+       HIDDEN(gl_dispatch_stub_581)
+       GL_STUB(gl_dispatch_stub_582, _gloffset_PixelTexGenParameterfSGIS)
+       HIDDEN(gl_dispatch_stub_582)
+       GL_STUB(gl_dispatch_stub_583, _gloffset_PixelTexGenParameterfvSGIS)
+       HIDDEN(gl_dispatch_stub_583)
+       GL_STUB(gl_dispatch_stub_584, _gloffset_PixelTexGenParameteriSGIS)
+       HIDDEN(gl_dispatch_stub_584)
+       GL_STUB(gl_dispatch_stub_585, _gloffset_PixelTexGenParameterivSGIS)
+       HIDDEN(gl_dispatch_stub_585)
+       GL_STUB(gl_dispatch_stub_586, _gloffset_SampleMaskSGIS)
+       HIDDEN(gl_dispatch_stub_586)
+       GL_STUB(gl_dispatch_stub_587, _gloffset_SamplePatternSGIS)
+       HIDDEN(gl_dispatch_stub_587)
+       GL_STUB(glColorPointerEXT, _gloffset_ColorPointerEXT)
+       GL_STUB(glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT)
+       GL_STUB(glIndexPointerEXT, _gloffset_IndexPointerEXT)
+       GL_STUB(glNormalPointerEXT, _gloffset_NormalPointerEXT)
+       GL_STUB(glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT)
+       GL_STUB(glVertexPointerEXT, _gloffset_VertexPointerEXT)
+       GL_STUB(glPointParameterfEXT, _gloffset_PointParameterfEXT)
+       GL_STUB(glPointParameterfvEXT, _gloffset_PointParameterfvEXT)
+       GL_STUB(glLockArraysEXT, _gloffset_LockArraysEXT)
+       GL_STUB(glUnlockArraysEXT, _gloffset_UnlockArraysEXT)
+       GL_STUB(gl_dispatch_stub_598, _gloffset_CullParameterdvEXT)
+       HIDDEN(gl_dispatch_stub_598)
+       GL_STUB(gl_dispatch_stub_599, _gloffset_CullParameterfvEXT)
+       HIDDEN(gl_dispatch_stub_599)
+       GL_STUB(glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT)
+       GL_STUB(glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT)
+       GL_STUB(glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT)
+       GL_STUB(glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT)
+       GL_STUB(glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT)
+       GL_STUB(glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT)
+       GL_STUB(glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT)
+       GL_STUB(glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT)
+       GL_STUB(glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT)
+       GL_STUB(glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT)
+       GL_STUB(glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT)
+       GL_STUB(glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT)
+       GL_STUB(glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT)
+       GL_STUB(glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT)
+       GL_STUB(glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT)
+       GL_STUB(glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT)
+       GL_STUB(glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT)
+       GL_STUB(glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT)
+       GL_STUB(glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT)
+       GL_STUB(glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT)
+       GL_STUB(glFogCoorddEXT, _gloffset_FogCoorddEXT)
+       GL_STUB(glFogCoorddvEXT, _gloffset_FogCoorddvEXT)
+       GL_STUB(glFogCoordfEXT, _gloffset_FogCoordfEXT)
+       GL_STUB(glFogCoordfvEXT, _gloffset_FogCoordfvEXT)
+       GL_STUB(gl_dispatch_stub_624, _gloffset_PixelTexGenSGIX)
+       HIDDEN(gl_dispatch_stub_624)
+       GL_STUB(glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT)
+       GL_STUB(glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV)
+       GL_STUB(glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV)
+       GL_STUB(glCombinerInputNV, _gloffset_CombinerInputNV)
+       GL_STUB(glCombinerOutputNV, _gloffset_CombinerOutputNV)
+       GL_STUB(glCombinerParameterfNV, _gloffset_CombinerParameterfNV)
+       GL_STUB(glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV)
+       GL_STUB(glCombinerParameteriNV, _gloffset_CombinerParameteriNV)
+       GL_STUB(glCombinerParameterivNV, _gloffset_CombinerParameterivNV)
+       GL_STUB(glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV)
+       GL_STUB(glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV)
+       GL_STUB(glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV)
+       GL_STUB(glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV)
+       GL_STUB(glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV)
+       GL_STUB(glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV)
+       GL_STUB(glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV)
+       GL_STUB(glResizeBuffersMESA, _gloffset_ResizeBuffersMESA)
+       GL_STUB(glWindowPos2dMESA, _gloffset_WindowPos2dMESA)
+       GL_STUB(glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA)
+       GL_STUB(glWindowPos2fMESA, _gloffset_WindowPos2fMESA)
+       GL_STUB(glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA)
+       GL_STUB(glWindowPos2iMESA, _gloffset_WindowPos2iMESA)
+       GL_STUB(glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA)
+       GL_STUB(glWindowPos2sMESA, _gloffset_WindowPos2sMESA)
+       GL_STUB(glWindowPos2svMESA, _gloffset_WindowPos2svMESA)
+       GL_STUB(glWindowPos3dMESA, _gloffset_WindowPos3dMESA)
+       GL_STUB(glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA)
+       GL_STUB(glWindowPos3fMESA, _gloffset_WindowPos3fMESA)
+       GL_STUB(glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA)
+       GL_STUB(glWindowPos3iMESA, _gloffset_WindowPos3iMESA)
+       GL_STUB(glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA)
+       GL_STUB(glWindowPos3sMESA, _gloffset_WindowPos3sMESA)
+       GL_STUB(glWindowPos3svMESA, _gloffset_WindowPos3svMESA)
+       GL_STUB(glWindowPos4dMESA, _gloffset_WindowPos4dMESA)
+       GL_STUB(glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA)
+       GL_STUB(glWindowPos4fMESA, _gloffset_WindowPos4fMESA)
+       GL_STUB(glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA)
+       GL_STUB(glWindowPos4iMESA, _gloffset_WindowPos4iMESA)
+       GL_STUB(glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA)
+       GL_STUB(glWindowPos4sMESA, _gloffset_WindowPos4sMESA)
+       GL_STUB(glWindowPos4svMESA, _gloffset_WindowPos4svMESA)
+       GL_STUB(gl_dispatch_stub_666, _gloffset_MultiModeDrawArraysIBM)
+       HIDDEN(gl_dispatch_stub_666)
+       GL_STUB(gl_dispatch_stub_667, _gloffset_MultiModeDrawElementsIBM)
+       HIDDEN(gl_dispatch_stub_667)
+       GL_STUB(gl_dispatch_stub_668, _gloffset_DeleteFencesNV)
+       HIDDEN(gl_dispatch_stub_668)
+       GL_STUB(gl_dispatch_stub_669, _gloffset_FinishFenceNV)
+       HIDDEN(gl_dispatch_stub_669)
+       GL_STUB(gl_dispatch_stub_670, _gloffset_GenFencesNV)
+       HIDDEN(gl_dispatch_stub_670)
+       GL_STUB(gl_dispatch_stub_671, _gloffset_GetFenceivNV)
+       HIDDEN(gl_dispatch_stub_671)
+       GL_STUB(gl_dispatch_stub_672, _gloffset_IsFenceNV)
+       HIDDEN(gl_dispatch_stub_672)
+       GL_STUB(gl_dispatch_stub_673, _gloffset_SetFenceNV)
+       HIDDEN(gl_dispatch_stub_673)
+       GL_STUB(gl_dispatch_stub_674, _gloffset_TestFenceNV)
+       HIDDEN(gl_dispatch_stub_674)
+       GL_STUB(glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV)
+       GL_STUB(glBindProgramNV, _gloffset_BindProgramNV)
+       GL_STUB(glDeleteProgramsNV, _gloffset_DeleteProgramsNV)
+       GL_STUB(glExecuteProgramNV, _gloffset_ExecuteProgramNV)
+       GL_STUB(glGenProgramsNV, _gloffset_GenProgramsNV)
+       GL_STUB(glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV)
+       GL_STUB(glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV)
+       GL_STUB(glGetProgramStringNV, _gloffset_GetProgramStringNV)
+       GL_STUB(glGetProgramivNV, _gloffset_GetProgramivNV)
+       GL_STUB(glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV)
+       GL_STUB(glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV)
+       GL_STUB(glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV)
+       GL_STUB(glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV)
+       GL_STUB(glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV)
+       GL_STUB(glIsProgramNV, _gloffset_IsProgramNV)
+       GL_STUB(glLoadProgramNV, _gloffset_LoadProgramNV)
+       GL_STUB(glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV)
+       GL_STUB(glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV)
+       GL_STUB(glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV)
+       GL_STUB(glTrackMatrixNV, _gloffset_TrackMatrixNV)
+       GL_STUB(glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV)
+       GL_STUB(glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV)
+       GL_STUB(glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV)
+       GL_STUB(glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV)
+       GL_STUB(glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV)
+       GL_STUB(glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV)
+       GL_STUB(glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV)
+       GL_STUB(glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV)
+       GL_STUB(glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV)
+       GL_STUB(glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV)
+       GL_STUB(glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV)
+       GL_STUB(glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV)
+       GL_STUB(glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV)
+       GL_STUB(glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV)
+       GL_STUB(glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV)
+       GL_STUB(glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV)
+       GL_STUB(glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV)
+       GL_STUB(glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV)
+       GL_STUB(glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV)
+       GL_STUB(glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV)
+       GL_STUB(glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV)
+       GL_STUB(glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV)
+       GL_STUB(glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV)
+       GL_STUB(glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV)
+       GL_STUB(glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV)
+       GL_STUB(glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV)
+       GL_STUB(glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV)
+       GL_STUB(glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV)
+       GL_STUB(glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV)
+       GL_STUB(glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV)
+       GL_STUB(glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV)
+       GL_STUB(glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV)
+       GL_STUB(glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV)
+       GL_STUB(glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV)
+       GL_STUB(glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV)
+       GL_STUB(glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV)
+       GL_STUB(glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV)
+       GL_STUB(glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV)
+       GL_STUB(glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV)
+       GL_STUB(glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV)
+       GL_STUB(glGetTexBumpParameterfvATI, _gloffset_GetTexBumpParameterfvATI)
+       GL_STUB(glGetTexBumpParameterivATI, _gloffset_GetTexBumpParameterivATI)
+       GL_STUB(glTexBumpParameterfvATI, _gloffset_TexBumpParameterfvATI)
+       GL_STUB(glTexBumpParameterivATI, _gloffset_TexBumpParameterivATI)
+       GL_STUB(glAlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI)
+       GL_STUB(glAlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI)
+       GL_STUB(glAlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI)
+       GL_STUB(glBeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI)
+       GL_STUB(glBindFragmentShaderATI, _gloffset_BindFragmentShaderATI)
+       GL_STUB(glColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI)
+       GL_STUB(glColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI)
+       GL_STUB(glColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI)
+       GL_STUB(glDeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI)
+       GL_STUB(glEndFragmentShaderATI, _gloffset_EndFragmentShaderATI)
+       GL_STUB(glGenFragmentShadersATI, _gloffset_GenFragmentShadersATI)
+       GL_STUB(glPassTexCoordATI, _gloffset_PassTexCoordATI)
+       GL_STUB(glSampleMapATI, _gloffset_SampleMapATI)
+       GL_STUB(glSetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI)
+       GL_STUB(glPointParameteriNV, _gloffset_PointParameteriNV)
+       GL_STUB(glPointParameterivNV, _gloffset_PointParameterivNV)
+       GL_STUB(gl_dispatch_stub_755, _gloffset_ActiveStencilFaceEXT)
+       HIDDEN(gl_dispatch_stub_755)
+       GL_STUB(gl_dispatch_stub_756, _gloffset_BindVertexArrayAPPLE)
+       HIDDEN(gl_dispatch_stub_756)
+       GL_STUB(gl_dispatch_stub_757, _gloffset_DeleteVertexArraysAPPLE)
+       HIDDEN(gl_dispatch_stub_757)
+       GL_STUB(gl_dispatch_stub_758, _gloffset_GenVertexArraysAPPLE)
+       HIDDEN(gl_dispatch_stub_758)
+       GL_STUB(gl_dispatch_stub_759, _gloffset_IsVertexArrayAPPLE)
+       HIDDEN(gl_dispatch_stub_759)
+       GL_STUB(glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV)
+       GL_STUB(glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV)
+       GL_STUB(glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV)
+       GL_STUB(glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV)
+       GL_STUB(glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV)
+       GL_STUB(glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV)
+       GL_STUB(gl_dispatch_stub_766, _gloffset_DepthBoundsEXT)
+       HIDDEN(gl_dispatch_stub_766)
+       GL_STUB(gl_dispatch_stub_767, _gloffset_BlendEquationSeparateEXT)
+       HIDDEN(gl_dispatch_stub_767)
+       GL_STUB(glBindFramebufferEXT, _gloffset_BindFramebufferEXT)
+       GL_STUB(glBindRenderbufferEXT, _gloffset_BindRenderbufferEXT)
+       GL_STUB(glCheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT)
+       GL_STUB(glDeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT)
+       GL_STUB(glDeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT)
+       GL_STUB(glFramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT)
+       GL_STUB(glFramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT)
+       GL_STUB(glFramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT)
+       GL_STUB(glFramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT)
+       GL_STUB(glGenFramebuffersEXT, _gloffset_GenFramebuffersEXT)
+       GL_STUB(glGenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT)
+       GL_STUB(glGenerateMipmapEXT, _gloffset_GenerateMipmapEXT)
+       GL_STUB(glGetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT)
+       GL_STUB(glGetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT)
+       GL_STUB(glIsFramebufferEXT, _gloffset_IsFramebufferEXT)
+       GL_STUB(glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT)
+       GL_STUB(glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT)
+       GL_STUB(gl_dispatch_stub_785, _gloffset_BlitFramebufferEXT)
+       HIDDEN(gl_dispatch_stub_785)
+       GL_STUB(gl_dispatch_stub_786, _gloffset_BufferParameteriAPPLE)
+       HIDDEN(gl_dispatch_stub_786)
+       GL_STUB(gl_dispatch_stub_787, _gloffset_FlushMappedBufferRangeAPPLE)
+       HIDDEN(gl_dispatch_stub_787)
+       GL_STUB(glFramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT)
+       GL_STUB(glColorMaskIndexedEXT, _gloffset_ColorMaskIndexedEXT)
+       GL_STUB(glDisableIndexedEXT, _gloffset_DisableIndexedEXT)
+       GL_STUB(glEnableIndexedEXT, _gloffset_EnableIndexedEXT)
+       GL_STUB(glGetBooleanIndexedvEXT, _gloffset_GetBooleanIndexedvEXT)
+       GL_STUB(glGetIntegerIndexedvEXT, _gloffset_GetIntegerIndexedvEXT)
+       GL_STUB(glIsEnabledIndexedEXT, _gloffset_IsEnabledIndexedEXT)
+       GL_STUB(glBeginConditionalRenderNV, _gloffset_BeginConditionalRenderNV)
+       GL_STUB(glEndConditionalRenderNV, _gloffset_EndConditionalRenderNV)
+       GL_STUB(glBeginTransformFeedbackEXT, _gloffset_BeginTransformFeedbackEXT)
+       GL_STUB(glBindBufferBaseEXT, _gloffset_BindBufferBaseEXT)
+       GL_STUB(glBindBufferOffsetEXT, _gloffset_BindBufferOffsetEXT)
+       GL_STUB(glBindBufferRangeEXT, _gloffset_BindBufferRangeEXT)
+       GL_STUB(glEndTransformFeedbackEXT, _gloffset_EndTransformFeedbackEXT)
+       GL_STUB(glGetTransformFeedbackVaryingEXT, _gloffset_GetTransformFeedbackVaryingEXT)
+       GL_STUB(glTransformFeedbackVaryingsEXT, _gloffset_TransformFeedbackVaryingsEXT)
+       GL_STUB(glProvokingVertexEXT, _gloffset_ProvokingVertexEXT)
+       GL_STUB(gl_dispatch_stub_805, _gloffset_GetTexParameterPointervAPPLE)
+       HIDDEN(gl_dispatch_stub_805)
+       GL_STUB(gl_dispatch_stub_806, _gloffset_TextureRangeAPPLE)
+       HIDDEN(gl_dispatch_stub_806)
+       GL_STUB(glGetObjectParameterivAPPLE, _gloffset_GetObjectParameterivAPPLE)
+       GL_STUB(glObjectPurgeableAPPLE, _gloffset_ObjectPurgeableAPPLE)
+       GL_STUB(glObjectUnpurgeableAPPLE, _gloffset_ObjectUnpurgeableAPPLE)
+       GL_STUB(gl_dispatch_stub_810, _gloffset_StencilFuncSeparateATI)
+       HIDDEN(gl_dispatch_stub_810)
+       GL_STUB(gl_dispatch_stub_811, _gloffset_ProgramEnvParameters4fvEXT)
+       HIDDEN(gl_dispatch_stub_811)
+       GL_STUB(gl_dispatch_stub_812, _gloffset_ProgramLocalParameters4fvEXT)
+       HIDDEN(gl_dispatch_stub_812)
+       GL_STUB(gl_dispatch_stub_813, _gloffset_GetQueryObjecti64vEXT)
+       HIDDEN(gl_dispatch_stub_813)
+       GL_STUB(gl_dispatch_stub_814, _gloffset_GetQueryObjectui64vEXT)
+       HIDDEN(gl_dispatch_stub_814)
+       GL_STUB(glEGLImageTargetRenderbufferStorageOES, _gloffset_EGLImageTargetRenderbufferStorageOES)
+       GL_STUB(glEGLImageTargetTexture2DOES, _gloffset_EGLImageTargetTexture2DOES)
+       GL_STUB_ALIAS(glArrayElementEXT, glArrayElement)
+       GL_STUB_ALIAS(glBindTextureEXT, glBindTexture)
+       GL_STUB_ALIAS(glDrawArraysEXT, glDrawArrays)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glAreTexturesResidentEXT, glAreTexturesResident)
+#endif
+       GL_STUB_ALIAS(glCopyTexImage1DEXT, glCopyTexImage1D)
+       GL_STUB_ALIAS(glCopyTexImage2DEXT, glCopyTexImage2D)
+       GL_STUB_ALIAS(glCopyTexSubImage1DEXT, glCopyTexSubImage1D)
+       GL_STUB_ALIAS(glCopyTexSubImage2DEXT, glCopyTexSubImage2D)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glDeleteTexturesEXT, glDeleteTextures)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGenTexturesEXT, glGenTextures)
+#endif
+       GL_STUB_ALIAS(glGetPointervEXT, glGetPointerv)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glIsTextureEXT, glIsTexture)
+#endif
+       GL_STUB_ALIAS(glPrioritizeTexturesEXT, glPrioritizeTextures)
+       GL_STUB_ALIAS(glTexSubImage1DEXT, glTexSubImage1D)
+       GL_STUB_ALIAS(glTexSubImage2DEXT, glTexSubImage2D)
+       GL_STUB_ALIAS(glBlendColorEXT, glBlendColor)
+       GL_STUB_ALIAS(glBlendEquationEXT, glBlendEquation)
+       GL_STUB_ALIAS(glDrawRangeElementsEXT, glDrawRangeElements)
+       GL_STUB_ALIAS(glColorTableSGI, glColorTable)
+       GL_STUB_ALIAS(glColorTableEXT, glColorTable)
+       GL_STUB_ALIAS(glColorTableParameterfvSGI, glColorTableParameterfv)
+       GL_STUB_ALIAS(glColorTableParameterivSGI, glColorTableParameteriv)
+       GL_STUB_ALIAS(glCopyColorTableSGI, glCopyColorTable)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetColorTableSGI, glGetColorTable)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetColorTableEXT, glGetColorTable)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetColorTableParameterfvSGI, glGetColorTableParameterfv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetColorTableParameterfvEXT, glGetColorTableParameterfv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetColorTableParameterivSGI, glGetColorTableParameteriv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetColorTableParameterivEXT, glGetColorTableParameteriv)
+#endif
+       GL_STUB_ALIAS(glColorSubTableEXT, glColorSubTable)
+       GL_STUB_ALIAS(glCopyColorSubTableEXT, glCopyColorSubTable)
+       GL_STUB_ALIAS(glConvolutionFilter1DEXT, glConvolutionFilter1D)
+       GL_STUB_ALIAS(glConvolutionFilter2DEXT, glConvolutionFilter2D)
+       GL_STUB_ALIAS(glConvolutionParameterfEXT, glConvolutionParameterf)
+       GL_STUB_ALIAS(glConvolutionParameterfvEXT, glConvolutionParameterfv)
+       GL_STUB_ALIAS(glConvolutionParameteriEXT, glConvolutionParameteri)
+       GL_STUB_ALIAS(glConvolutionParameterivEXT, glConvolutionParameteriv)
+       GL_STUB_ALIAS(glCopyConvolutionFilter1DEXT, glCopyConvolutionFilter1D)
+       GL_STUB_ALIAS(glCopyConvolutionFilter2DEXT, glCopyConvolutionFilter2D)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetConvolutionFilterEXT, glGetConvolutionFilter)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetConvolutionParameterfvEXT, glGetConvolutionParameterfv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetConvolutionParameterivEXT, glGetConvolutionParameteriv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetSeparableFilterEXT, glGetSeparableFilter)
+#endif
+       GL_STUB_ALIAS(glSeparableFilter2DEXT, glSeparableFilter2D)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetHistogramEXT, glGetHistogram)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetHistogramParameterfvEXT, glGetHistogramParameterfv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetHistogramParameterivEXT, glGetHistogramParameteriv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetMinmaxEXT, glGetMinmax)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetMinmaxParameterfvEXT, glGetMinmaxParameterfv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(glGetMinmaxParameterivEXT, glGetMinmaxParameteriv)
+#endif
+       GL_STUB_ALIAS(glHistogramEXT, glHistogram)
+       GL_STUB_ALIAS(glMinmaxEXT, glMinmax)
+       GL_STUB_ALIAS(glResetHistogramEXT, glResetHistogram)
+       GL_STUB_ALIAS(glResetMinmaxEXT, glResetMinmax)
+       GL_STUB_ALIAS(glTexImage3DEXT, glTexImage3D)
+       GL_STUB_ALIAS(glTexSubImage3DEXT, glTexSubImage3D)
+       GL_STUB_ALIAS(glCopyTexSubImage3DEXT, glCopyTexSubImage3D)
+       GL_STUB_ALIAS(glActiveTexture, glActiveTextureARB)
+       GL_STUB_ALIAS(glClientActiveTexture, glClientActiveTextureARB)
+       GL_STUB_ALIAS(glMultiTexCoord1d, glMultiTexCoord1dARB)
+       GL_STUB_ALIAS(glMultiTexCoord1dv, glMultiTexCoord1dvARB)
+       GL_STUB_ALIAS(glMultiTexCoord1f, glMultiTexCoord1fARB)
+       GL_STUB_ALIAS(glMultiTexCoord1fv, glMultiTexCoord1fvARB)
+       GL_STUB_ALIAS(glMultiTexCoord1i, glMultiTexCoord1iARB)
+       GL_STUB_ALIAS(glMultiTexCoord1iv, glMultiTexCoord1ivARB)
+       GL_STUB_ALIAS(glMultiTexCoord1s, glMultiTexCoord1sARB)
+       GL_STUB_ALIAS(glMultiTexCoord1sv, glMultiTexCoord1svARB)
+       GL_STUB_ALIAS(glMultiTexCoord2d, glMultiTexCoord2dARB)
+       GL_STUB_ALIAS(glMultiTexCoord2dv, glMultiTexCoord2dvARB)
+       GL_STUB_ALIAS(glMultiTexCoord2f, glMultiTexCoord2fARB)
+       GL_STUB_ALIAS(glMultiTexCoord2fv, glMultiTexCoord2fvARB)
+       GL_STUB_ALIAS(glMultiTexCoord2i, glMultiTexCoord2iARB)
+       GL_STUB_ALIAS(glMultiTexCoord2iv, glMultiTexCoord2ivARB)
+       GL_STUB_ALIAS(glMultiTexCoord2s, glMultiTexCoord2sARB)
+       GL_STUB_ALIAS(glMultiTexCoord2sv, glMultiTexCoord2svARB)
+       GL_STUB_ALIAS(glMultiTexCoord3d, glMultiTexCoord3dARB)
+       GL_STUB_ALIAS(glMultiTexCoord3dv, glMultiTexCoord3dvARB)
+       GL_STUB_ALIAS(glMultiTexCoord3f, glMultiTexCoord3fARB)
+       GL_STUB_ALIAS(glMultiTexCoord3fv, glMultiTexCoord3fvARB)
+       GL_STUB_ALIAS(glMultiTexCoord3i, glMultiTexCoord3iARB)
+       GL_STUB_ALIAS(glMultiTexCoord3iv, glMultiTexCoord3ivARB)
+       GL_STUB_ALIAS(glMultiTexCoord3s, glMultiTexCoord3sARB)
+       GL_STUB_ALIAS(glMultiTexCoord3sv, glMultiTexCoord3svARB)
+       GL_STUB_ALIAS(glMultiTexCoord4d, glMultiTexCoord4dARB)
+       GL_STUB_ALIAS(glMultiTexCoord4dv, glMultiTexCoord4dvARB)
+       GL_STUB_ALIAS(glMultiTexCoord4f, glMultiTexCoord4fARB)
+       GL_STUB_ALIAS(glMultiTexCoord4fv, glMultiTexCoord4fvARB)
+       GL_STUB_ALIAS(glMultiTexCoord4i, glMultiTexCoord4iARB)
+       GL_STUB_ALIAS(glMultiTexCoord4iv, glMultiTexCoord4ivARB)
+       GL_STUB_ALIAS(glMultiTexCoord4s, glMultiTexCoord4sARB)
+       GL_STUB_ALIAS(glMultiTexCoord4sv, glMultiTexCoord4svARB)
+       GL_STUB_ALIAS(glStencilOpSeparateATI, glStencilOpSeparate)
+       GL_STUB_ALIAS(glDrawArraysInstancedARB, glDrawArraysInstanced)
+       GL_STUB_ALIAS(glDrawArraysInstancedEXT, glDrawArraysInstanced)
+       GL_STUB_ALIAS(glDrawElementsInstancedARB, glDrawElementsInstanced)
+       GL_STUB_ALIAS(glDrawElementsInstancedEXT, glDrawElementsInstanced)
+       GL_STUB_ALIAS(glLoadTransposeMatrixd, glLoadTransposeMatrixdARB)
+       GL_STUB_ALIAS(glLoadTransposeMatrixf, glLoadTransposeMatrixfARB)
+       GL_STUB_ALIAS(glMultTransposeMatrixd, glMultTransposeMatrixdARB)
+       GL_STUB_ALIAS(glMultTransposeMatrixf, glMultTransposeMatrixfARB)
+       GL_STUB_ALIAS(glSampleCoverage, glSampleCoverageARB)
+       GL_STUB_ALIAS(glCompressedTexImage1D, glCompressedTexImage1DARB)
+       GL_STUB_ALIAS(glCompressedTexImage2D, glCompressedTexImage2DARB)
+       GL_STUB_ALIAS(glCompressedTexImage3D, glCompressedTexImage3DARB)
+       GL_STUB_ALIAS(glCompressedTexSubImage1D, glCompressedTexSubImage1DARB)
+       GL_STUB_ALIAS(glCompressedTexSubImage2D, glCompressedTexSubImage2DARB)
+       GL_STUB_ALIAS(glCompressedTexSubImage3D, glCompressedTexSubImage3DARB)
+       GL_STUB_ALIAS(glGetCompressedTexImage, glGetCompressedTexImageARB)
+       GL_STUB_ALIAS(glDisableVertexAttribArray, glDisableVertexAttribArrayARB)
+       GL_STUB_ALIAS(glEnableVertexAttribArray, glEnableVertexAttribArrayARB)
+       GL_STUB_ALIAS(glGetVertexAttribdv, glGetVertexAttribdvARB)
+       GL_STUB_ALIAS(glGetVertexAttribfv, glGetVertexAttribfvARB)
+       GL_STUB_ALIAS(glGetVertexAttribiv, glGetVertexAttribivARB)
+       GL_STUB_ALIAS(glProgramParameter4dNV, glProgramEnvParameter4dARB)
+       GL_STUB_ALIAS(glProgramParameter4dvNV, glProgramEnvParameter4dvARB)
+       GL_STUB_ALIAS(glProgramParameter4fNV, glProgramEnvParameter4fARB)
+       GL_STUB_ALIAS(glProgramParameter4fvNV, glProgramEnvParameter4fvARB)
+       GL_STUB_ALIAS(glVertexAttrib1d, glVertexAttrib1dARB)
+       GL_STUB_ALIAS(glVertexAttrib1dv, glVertexAttrib1dvARB)
+       GL_STUB_ALIAS(glVertexAttrib1f, glVertexAttrib1fARB)
+       GL_STUB_ALIAS(glVertexAttrib1fv, glVertexAttrib1fvARB)
+       GL_STUB_ALIAS(glVertexAttrib1s, glVertexAttrib1sARB)
+       GL_STUB_ALIAS(glVertexAttrib1sv, glVertexAttrib1svARB)
+       GL_STUB_ALIAS(glVertexAttrib2d, glVertexAttrib2dARB)
+       GL_STUB_ALIAS(glVertexAttrib2dv, glVertexAttrib2dvARB)
+       GL_STUB_ALIAS(glVertexAttrib2f, glVertexAttrib2fARB)
+       GL_STUB_ALIAS(glVertexAttrib2fv, glVertexAttrib2fvARB)
+       GL_STUB_ALIAS(glVertexAttrib2s, glVertexAttrib2sARB)
+       GL_STUB_ALIAS(glVertexAttrib2sv, glVertexAttrib2svARB)
+       GL_STUB_ALIAS(glVertexAttrib3d, glVertexAttrib3dARB)
+       GL_STUB_ALIAS(glVertexAttrib3dv, glVertexAttrib3dvARB)
+       GL_STUB_ALIAS(glVertexAttrib3f, glVertexAttrib3fARB)
+       GL_STUB_ALIAS(glVertexAttrib3fv, glVertexAttrib3fvARB)
+       GL_STUB_ALIAS(glVertexAttrib3s, glVertexAttrib3sARB)
+       GL_STUB_ALIAS(glVertexAttrib3sv, glVertexAttrib3svARB)
+       GL_STUB_ALIAS(glVertexAttrib4Nbv, glVertexAttrib4NbvARB)
+       GL_STUB_ALIAS(glVertexAttrib4Niv, glVertexAttrib4NivARB)
+       GL_STUB_ALIAS(glVertexAttrib4Nsv, glVertexAttrib4NsvARB)
+       GL_STUB_ALIAS(glVertexAttrib4Nub, glVertexAttrib4NubARB)
+       GL_STUB_ALIAS(glVertexAttrib4Nubv, glVertexAttrib4NubvARB)
+       GL_STUB_ALIAS(glVertexAttrib4Nuiv, glVertexAttrib4NuivARB)
+       GL_STUB_ALIAS(glVertexAttrib4Nusv, glVertexAttrib4NusvARB)
+       GL_STUB_ALIAS(glVertexAttrib4bv, glVertexAttrib4bvARB)
+       GL_STUB_ALIAS(glVertexAttrib4d, glVertexAttrib4dARB)
+       GL_STUB_ALIAS(glVertexAttrib4dv, glVertexAttrib4dvARB)
+       GL_STUB_ALIAS(glVertexAttrib4f, glVertexAttrib4fARB)
+       GL_STUB_ALIAS(glVertexAttrib4fv, glVertexAttrib4fvARB)
+       GL_STUB_ALIAS(glVertexAttrib4iv, glVertexAttrib4ivARB)
+       GL_STUB_ALIAS(glVertexAttrib4s, glVertexAttrib4sARB)
+       GL_STUB_ALIAS(glVertexAttrib4sv, glVertexAttrib4svARB)
+       GL_STUB_ALIAS(glVertexAttrib4ubv, glVertexAttrib4ubvARB)
+       GL_STUB_ALIAS(glVertexAttrib4uiv, glVertexAttrib4uivARB)
+       GL_STUB_ALIAS(glVertexAttrib4usv, glVertexAttrib4usvARB)
+       GL_STUB_ALIAS(glVertexAttribPointer, glVertexAttribPointerARB)
+       GL_STUB_ALIAS(glBindBuffer, glBindBufferARB)
+       GL_STUB_ALIAS(glBufferData, glBufferDataARB)
+       GL_STUB_ALIAS(glBufferSubData, glBufferSubDataARB)
+       GL_STUB_ALIAS(glDeleteBuffers, glDeleteBuffersARB)
+       GL_STUB_ALIAS(glGenBuffers, glGenBuffersARB)
+       GL_STUB_ALIAS(glGetBufferParameteriv, glGetBufferParameterivARB)
+       GL_STUB_ALIAS(glGetBufferPointerv, glGetBufferPointervARB)
+       GL_STUB_ALIAS(glGetBufferSubData, glGetBufferSubDataARB)
+       GL_STUB_ALIAS(glIsBuffer, glIsBufferARB)
+       GL_STUB_ALIAS(glMapBuffer, glMapBufferARB)
+       GL_STUB_ALIAS(glUnmapBuffer, glUnmapBufferARB)
+       GL_STUB_ALIAS(glBeginQuery, glBeginQueryARB)
+       GL_STUB_ALIAS(glDeleteQueries, glDeleteQueriesARB)
+       GL_STUB_ALIAS(glEndQuery, glEndQueryARB)
+       GL_STUB_ALIAS(glGenQueries, glGenQueriesARB)
+       GL_STUB_ALIAS(glGetQueryObjectiv, glGetQueryObjectivARB)
+       GL_STUB_ALIAS(glGetQueryObjectuiv, glGetQueryObjectuivARB)
+       GL_STUB_ALIAS(glGetQueryiv, glGetQueryivARB)
+       GL_STUB_ALIAS(glIsQuery, glIsQueryARB)
+       GL_STUB_ALIAS(glCompileShader, glCompileShaderARB)
+       GL_STUB_ALIAS(glGetActiveUniform, glGetActiveUniformARB)
+       GL_STUB_ALIAS(glGetShaderSource, glGetShaderSourceARB)
+       GL_STUB_ALIAS(glGetUniformLocation, glGetUniformLocationARB)
+       GL_STUB_ALIAS(glGetUniformfv, glGetUniformfvARB)
+       GL_STUB_ALIAS(glGetUniformiv, glGetUniformivARB)
+       GL_STUB_ALIAS(glLinkProgram, glLinkProgramARB)
+       GL_STUB_ALIAS(glShaderSource, glShaderSourceARB)
+       GL_STUB_ALIAS(glUniform1f, glUniform1fARB)
+       GL_STUB_ALIAS(glUniform1fv, glUniform1fvARB)
+       GL_STUB_ALIAS(glUniform1i, glUniform1iARB)
+       GL_STUB_ALIAS(glUniform1iv, glUniform1ivARB)
+       GL_STUB_ALIAS(glUniform2f, glUniform2fARB)
+       GL_STUB_ALIAS(glUniform2fv, glUniform2fvARB)
+       GL_STUB_ALIAS(glUniform2i, glUniform2iARB)
+       GL_STUB_ALIAS(glUniform2iv, glUniform2ivARB)
+       GL_STUB_ALIAS(glUniform3f, glUniform3fARB)
+       GL_STUB_ALIAS(glUniform3fv, glUniform3fvARB)
+       GL_STUB_ALIAS(glUniform3i, glUniform3iARB)
+       GL_STUB_ALIAS(glUniform3iv, glUniform3ivARB)
+       GL_STUB_ALIAS(glUniform4f, glUniform4fARB)
+       GL_STUB_ALIAS(glUniform4fv, glUniform4fvARB)
+       GL_STUB_ALIAS(glUniform4i, glUniform4iARB)
+       GL_STUB_ALIAS(glUniform4iv, glUniform4ivARB)
+       GL_STUB_ALIAS(glUniformMatrix2fv, glUniformMatrix2fvARB)
+       GL_STUB_ALIAS(glUniformMatrix3fv, glUniformMatrix3fvARB)
+       GL_STUB_ALIAS(glUniformMatrix4fv, glUniformMatrix4fvARB)
+       GL_STUB_ALIAS(glUseProgram, glUseProgramObjectARB)
+       GL_STUB_ALIAS(glValidateProgram, glValidateProgramARB)
+       GL_STUB_ALIAS(glBindAttribLocation, glBindAttribLocationARB)
+       GL_STUB_ALIAS(glGetActiveAttrib, glGetActiveAttribARB)
+       GL_STUB_ALIAS(glGetAttribLocation, glGetAttribLocationARB)
+       GL_STUB_ALIAS(glDrawBuffers, glDrawBuffersARB)
+       GL_STUB_ALIAS(glDrawBuffersATI, glDrawBuffersARB)
+       GL_STUB_ALIAS(glRenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisample)
+       GL_STUB_ALIAS(glPointParameterf, glPointParameterfEXT)
+       GL_STUB_ALIAS(glPointParameterfARB, glPointParameterfEXT)
+       GL_STUB_ALIAS(glPointParameterfSGIS, glPointParameterfEXT)
+       GL_STUB_ALIAS(glPointParameterfv, glPointParameterfvEXT)
+       GL_STUB_ALIAS(glPointParameterfvARB, glPointParameterfvEXT)
+       GL_STUB_ALIAS(glPointParameterfvSGIS, glPointParameterfvEXT)
+       GL_STUB_ALIAS(glSecondaryColor3b, glSecondaryColor3bEXT)
+       GL_STUB_ALIAS(glSecondaryColor3bv, glSecondaryColor3bvEXT)
+       GL_STUB_ALIAS(glSecondaryColor3d, glSecondaryColor3dEXT)
+       GL_STUB_ALIAS(glSecondaryColor3dv, glSecondaryColor3dvEXT)
+       GL_STUB_ALIAS(glSecondaryColor3f, glSecondaryColor3fEXT)
+       GL_STUB_ALIAS(glSecondaryColor3fv, glSecondaryColor3fvEXT)
+       GL_STUB_ALIAS(glSecondaryColor3i, glSecondaryColor3iEXT)
+       GL_STUB_ALIAS(glSecondaryColor3iv, glSecondaryColor3ivEXT)
+       GL_STUB_ALIAS(glSecondaryColor3s, glSecondaryColor3sEXT)
+       GL_STUB_ALIAS(glSecondaryColor3sv, glSecondaryColor3svEXT)
+       GL_STUB_ALIAS(glSecondaryColor3ub, glSecondaryColor3ubEXT)
+       GL_STUB_ALIAS(glSecondaryColor3ubv, glSecondaryColor3ubvEXT)
+       GL_STUB_ALIAS(glSecondaryColor3ui, glSecondaryColor3uiEXT)
+       GL_STUB_ALIAS(glSecondaryColor3uiv, glSecondaryColor3uivEXT)
+       GL_STUB_ALIAS(glSecondaryColor3us, glSecondaryColor3usEXT)
+       GL_STUB_ALIAS(glSecondaryColor3usv, glSecondaryColor3usvEXT)
+       GL_STUB_ALIAS(glSecondaryColorPointer, glSecondaryColorPointerEXT)
+       GL_STUB_ALIAS(glMultiDrawArrays, glMultiDrawArraysEXT)
+       GL_STUB_ALIAS(glMultiDrawElements, glMultiDrawElementsEXT)
+       GL_STUB_ALIAS(glFogCoordPointer, glFogCoordPointerEXT)
+       GL_STUB_ALIAS(glFogCoordd, glFogCoorddEXT)
+       GL_STUB_ALIAS(glFogCoorddv, glFogCoorddvEXT)
+       GL_STUB_ALIAS(glFogCoordf, glFogCoordfEXT)
+       GL_STUB_ALIAS(glFogCoordfv, glFogCoordfvEXT)
+       GL_STUB_ALIAS(glBlendFuncSeparate, glBlendFuncSeparateEXT)
+       GL_STUB_ALIAS(glBlendFuncSeparateINGR, glBlendFuncSeparateEXT)
+       GL_STUB_ALIAS(glWindowPos2d, glWindowPos2dMESA)
+       GL_STUB_ALIAS(glWindowPos2dARB, glWindowPos2dMESA)
+       GL_STUB_ALIAS(glWindowPos2dv, glWindowPos2dvMESA)
+       GL_STUB_ALIAS(glWindowPos2dvARB, glWindowPos2dvMESA)
+       GL_STUB_ALIAS(glWindowPos2f, glWindowPos2fMESA)
+       GL_STUB_ALIAS(glWindowPos2fARB, glWindowPos2fMESA)
+       GL_STUB_ALIAS(glWindowPos2fv, glWindowPos2fvMESA)
+       GL_STUB_ALIAS(glWindowPos2fvARB, glWindowPos2fvMESA)
+       GL_STUB_ALIAS(glWindowPos2i, glWindowPos2iMESA)
+       GL_STUB_ALIAS(glWindowPos2iARB, glWindowPos2iMESA)
+       GL_STUB_ALIAS(glWindowPos2iv, glWindowPos2ivMESA)
+       GL_STUB_ALIAS(glWindowPos2ivARB, glWindowPos2ivMESA)
+       GL_STUB_ALIAS(glWindowPos2s, glWindowPos2sMESA)
+       GL_STUB_ALIAS(glWindowPos2sARB, glWindowPos2sMESA)
+       GL_STUB_ALIAS(glWindowPos2sv, glWindowPos2svMESA)
+       GL_STUB_ALIAS(glWindowPos2svARB, glWindowPos2svMESA)
+       GL_STUB_ALIAS(glWindowPos3d, glWindowPos3dMESA)
+       GL_STUB_ALIAS(glWindowPos3dARB, glWindowPos3dMESA)
+       GL_STUB_ALIAS(glWindowPos3dv, glWindowPos3dvMESA)
+       GL_STUB_ALIAS(glWindowPos3dvARB, glWindowPos3dvMESA)
+       GL_STUB_ALIAS(glWindowPos3f, glWindowPos3fMESA)
+       GL_STUB_ALIAS(glWindowPos3fARB, glWindowPos3fMESA)
+       GL_STUB_ALIAS(glWindowPos3fv, glWindowPos3fvMESA)
+       GL_STUB_ALIAS(glWindowPos3fvARB, glWindowPos3fvMESA)
+       GL_STUB_ALIAS(glWindowPos3i, glWindowPos3iMESA)
+       GL_STUB_ALIAS(glWindowPos3iARB, glWindowPos3iMESA)
+       GL_STUB_ALIAS(glWindowPos3iv, glWindowPos3ivMESA)
+       GL_STUB_ALIAS(glWindowPos3ivARB, glWindowPos3ivMESA)
+       GL_STUB_ALIAS(glWindowPos3s, glWindowPos3sMESA)
+       GL_STUB_ALIAS(glWindowPos3sARB, glWindowPos3sMESA)
+       GL_STUB_ALIAS(glWindowPos3sv, glWindowPos3svMESA)
+       GL_STUB_ALIAS(glWindowPos3svARB, glWindowPos3svMESA)
+       GL_STUB_ALIAS(glBindProgramARB, glBindProgramNV)
+       GL_STUB_ALIAS(glDeleteProgramsARB, glDeleteProgramsNV)
+       GL_STUB_ALIAS(glGenProgramsARB, glGenProgramsNV)
+       GL_STUB_ALIAS(glGetVertexAttribPointerv, glGetVertexAttribPointervNV)
+       GL_STUB_ALIAS(glGetVertexAttribPointervARB, glGetVertexAttribPointervNV)
+       GL_STUB_ALIAS(glIsProgramARB, glIsProgramNV)
+       GL_STUB_ALIAS(glPointParameteri, glPointParameteriNV)
+       GL_STUB_ALIAS(glPointParameteriv, glPointParameterivNV)
+       GL_STUB_ALIAS(glBindFramebuffer, glBindFramebufferEXT)
+       GL_STUB_ALIAS(glBindRenderbuffer, glBindRenderbufferEXT)
+       GL_STUB_ALIAS(glCheckFramebufferStatus, glCheckFramebufferStatusEXT)
+       GL_STUB_ALIAS(glDeleteFramebuffers, glDeleteFramebuffersEXT)
+       GL_STUB_ALIAS(glDeleteRenderbuffers, glDeleteRenderbuffersEXT)
+       GL_STUB_ALIAS(glFramebufferRenderbuffer, glFramebufferRenderbufferEXT)
+       GL_STUB_ALIAS(glFramebufferTexture1D, glFramebufferTexture1DEXT)
+       GL_STUB_ALIAS(glFramebufferTexture2D, glFramebufferTexture2DEXT)
+       GL_STUB_ALIAS(glFramebufferTexture3D, glFramebufferTexture3DEXT)
+       GL_STUB_ALIAS(glGenFramebuffers, glGenFramebuffersEXT)
+       GL_STUB_ALIAS(glGenRenderbuffers, glGenRenderbuffersEXT)
+       GL_STUB_ALIAS(glGenerateMipmap, glGenerateMipmapEXT)
+       GL_STUB_ALIAS(glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameterivEXT)
+       GL_STUB_ALIAS(glGetRenderbufferParameteriv, glGetRenderbufferParameterivEXT)
+       GL_STUB_ALIAS(glIsFramebuffer, glIsFramebufferEXT)
+       GL_STUB_ALIAS(glIsRenderbuffer, glIsRenderbufferEXT)
+       GL_STUB_ALIAS(glRenderbufferStorage, glRenderbufferStorageEXT)
+       GL_STUB_ALIAS(glFramebufferTextureLayer, glFramebufferTextureLayerEXT)
+       GL_STUB_ALIAS(glBeginTransformFeedback, glBeginTransformFeedbackEXT)
+       GL_STUB_ALIAS(glBindBufferBase, glBindBufferBaseEXT)
+       GL_STUB_ALIAS(glBindBufferRange, glBindBufferRangeEXT)
+       GL_STUB_ALIAS(glEndTransformFeedback, glEndTransformFeedbackEXT)
+       GL_STUB_ALIAS(glGetTransformFeedbackVarying, glGetTransformFeedbackVaryingEXT)
+       GL_STUB_ALIAS(glTransformFeedbackVaryings, glTransformFeedbackVaryingsEXT)
+       GL_STUB_ALIAS(glProvokingVertex, glProvokingVertexEXT)
+
+       .globl  gl_dispatch_functions_end
+       HIDDEN(gl_dispatch_functions_end)
+gl_dispatch_functions_end:
diff --git a/src/mapi/glapi/glapi_x86-64.S b/src/mapi/glapi/glapi_x86-64.S
new file mode 100644 (file)
index 0000000..9693016
--- /dev/null
@@ -0,0 +1,31286 @@
+/* DO NOT EDIT - This file generated automatically by gl_x86-64_asm.py (from Mesa) script */
+
+/*
+ * (C) Copyright IBM Corporation 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.
+ */
+
+/* If we build with gcc's -fvisibility=hidden flag, we'll need to change
+ * the symbol visibility mode to 'default'.
+ */
+
+#include "x86/assyntax.h"
+
+#ifdef __GNUC__
+#  pragma GCC visibility push(default)
+#  define HIDDEN(x) .hidden x
+#else
+#  define HIDDEN(x)
+#endif
+
+# if defined(USE_MGL_NAMESPACE)
+#  define GL_PREFIX(n) GLNAME(CONCAT(mgl,n))
+#  define _glapi_Dispatch _mglapi_Dispatch
+# else
+#  define GL_PREFIX(n) GLNAME(CONCAT(gl,n))
+# endif
+
+#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)
+#  define THREADS
+#endif
+
+       .text
+
+#ifdef GLX_USE_TLS
+
+       .globl _x86_64_get_get_dispatch; HIDDEN(_x86_64_get_get_dispatch)
+_x86_64_get_get_dispatch:
+       lea     _x86_64_get_dispatch(%rip), %rax
+       ret
+
+       .p2align        4,,15
+_x86_64_get_dispatch:
+       movq    _glapi_tls_Dispatch@GOTTPOFF(%rip), %rax
+       movq    %fs:(%rax), %rax
+       ret
+       .size   _x86_64_get_dispatch, .-_x86_64_get_dispatch
+
+#elif defined(PTHREADS)
+
+       .extern _glapi_Dispatch
+       .extern _gl_DispatchTSD
+       .extern pthread_getspecific
+
+       .p2align        4,,15
+_x86_64_get_dispatch:
+       movq    _gl_DispatchTSD(%rip), %rdi
+       jmp     pthread_getspecific@PLT
+
+#elif defined(THREADS)
+
+       .extern _glapi_get_dispatch
+
+#endif
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(NewList)
+       .type   GL_PREFIX(NewList), @function
+GL_PREFIX(NewList):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    0(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    (%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    0(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    0(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(NewList), .-GL_PREFIX(NewList)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EndList)
+       .type   GL_PREFIX(EndList), @function
+GL_PREFIX(EndList):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    8(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    8(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    8(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EndList), .-GL_PREFIX(EndList)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CallList)
+       .type   GL_PREFIX(CallList), @function
+GL_PREFIX(CallList):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    16(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    16(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    16(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CallList), .-GL_PREFIX(CallList)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CallLists)
+       .type   GL_PREFIX(CallLists), @function
+GL_PREFIX(CallLists):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    24(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    24(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    24(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CallLists), .-GL_PREFIX(CallLists)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteLists)
+       .type   GL_PREFIX(DeleteLists), @function
+GL_PREFIX(DeleteLists):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    32(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    32(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    32(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteLists), .-GL_PREFIX(DeleteLists)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenLists)
+       .type   GL_PREFIX(GenLists), @function
+GL_PREFIX(GenLists):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    40(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    40(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    40(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenLists), .-GL_PREFIX(GenLists)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ListBase)
+       .type   GL_PREFIX(ListBase), @function
+GL_PREFIX(ListBase):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    48(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    48(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    48(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    48(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ListBase), .-GL_PREFIX(ListBase)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Begin)
+       .type   GL_PREFIX(Begin), @function
+GL_PREFIX(Begin):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    56(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    56(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    56(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    56(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Begin), .-GL_PREFIX(Begin)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Bitmap)
+       .type   GL_PREFIX(Bitmap), @function
+GL_PREFIX(Bitmap):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    64(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       movq    %rdx, 48(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    48(%rsp), %rdx
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    64(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    64(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       movq    %rdx, 48(%rsp)
+       call    _glapi_get_dispatch
+       movq    48(%rsp), %rdx
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    64(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Bitmap), .-GL_PREFIX(Bitmap)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3b)
+       .type   GL_PREFIX(Color3b), @function
+GL_PREFIX(Color3b):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    72(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    72(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    72(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    72(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3b), .-GL_PREFIX(Color3b)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3bv)
+       .type   GL_PREFIX(Color3bv), @function
+GL_PREFIX(Color3bv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    80(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    80(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    80(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    80(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3bv), .-GL_PREFIX(Color3bv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3d)
+       .type   GL_PREFIX(Color3d), @function
+GL_PREFIX(Color3d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    88(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    88(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    88(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    88(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3d), .-GL_PREFIX(Color3d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3dv)
+       .type   GL_PREFIX(Color3dv), @function
+GL_PREFIX(Color3dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    96(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    96(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    96(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    96(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3dv), .-GL_PREFIX(Color3dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3f)
+       .type   GL_PREFIX(Color3f), @function
+GL_PREFIX(Color3f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    104(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    104(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    104(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    104(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3f), .-GL_PREFIX(Color3f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3fv)
+       .type   GL_PREFIX(Color3fv), @function
+GL_PREFIX(Color3fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    112(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    112(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    112(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    112(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3fv), .-GL_PREFIX(Color3fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3i)
+       .type   GL_PREFIX(Color3i), @function
+GL_PREFIX(Color3i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    120(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    120(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    120(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    120(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3i), .-GL_PREFIX(Color3i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3iv)
+       .type   GL_PREFIX(Color3iv), @function
+GL_PREFIX(Color3iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    128(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    128(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    128(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    128(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3iv), .-GL_PREFIX(Color3iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3s)
+       .type   GL_PREFIX(Color3s), @function
+GL_PREFIX(Color3s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    136(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    136(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    136(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    136(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3s), .-GL_PREFIX(Color3s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3sv)
+       .type   GL_PREFIX(Color3sv), @function
+GL_PREFIX(Color3sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    144(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    144(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    144(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    144(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3sv), .-GL_PREFIX(Color3sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3ub)
+       .type   GL_PREFIX(Color3ub), @function
+GL_PREFIX(Color3ub):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    152(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    152(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    152(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    152(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3ub), .-GL_PREFIX(Color3ub)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3ubv)
+       .type   GL_PREFIX(Color3ubv), @function
+GL_PREFIX(Color3ubv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    160(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    160(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    160(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    160(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3ubv), .-GL_PREFIX(Color3ubv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3ui)
+       .type   GL_PREFIX(Color3ui), @function
+GL_PREFIX(Color3ui):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    168(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    168(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    168(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    168(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3ui), .-GL_PREFIX(Color3ui)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3uiv)
+       .type   GL_PREFIX(Color3uiv), @function
+GL_PREFIX(Color3uiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    176(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    176(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    176(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    176(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3uiv), .-GL_PREFIX(Color3uiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3us)
+       .type   GL_PREFIX(Color3us), @function
+GL_PREFIX(Color3us):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    184(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    184(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    184(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    184(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3us), .-GL_PREFIX(Color3us)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color3usv)
+       .type   GL_PREFIX(Color3usv), @function
+GL_PREFIX(Color3usv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    192(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    192(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    192(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    192(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color3usv), .-GL_PREFIX(Color3usv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4b)
+       .type   GL_PREFIX(Color4b), @function
+GL_PREFIX(Color4b):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    200(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    200(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    200(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    200(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4b), .-GL_PREFIX(Color4b)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4bv)
+       .type   GL_PREFIX(Color4bv), @function
+GL_PREFIX(Color4bv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    208(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    208(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    208(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    208(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4bv), .-GL_PREFIX(Color4bv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4d)
+       .type   GL_PREFIX(Color4d), @function
+GL_PREFIX(Color4d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    216(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    216(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    216(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    216(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4d), .-GL_PREFIX(Color4d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4dv)
+       .type   GL_PREFIX(Color4dv), @function
+GL_PREFIX(Color4dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    224(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    224(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    224(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    224(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4dv), .-GL_PREFIX(Color4dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4f)
+       .type   GL_PREFIX(Color4f), @function
+GL_PREFIX(Color4f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    232(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    232(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    232(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    232(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4f), .-GL_PREFIX(Color4f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4fv)
+       .type   GL_PREFIX(Color4fv), @function
+GL_PREFIX(Color4fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    240(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    240(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    240(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    240(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4fv), .-GL_PREFIX(Color4fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4i)
+       .type   GL_PREFIX(Color4i), @function
+GL_PREFIX(Color4i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    248(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    248(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    248(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    248(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4i), .-GL_PREFIX(Color4i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4iv)
+       .type   GL_PREFIX(Color4iv), @function
+GL_PREFIX(Color4iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    256(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    256(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    256(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    256(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4iv), .-GL_PREFIX(Color4iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4s)
+       .type   GL_PREFIX(Color4s), @function
+GL_PREFIX(Color4s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    264(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    264(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    264(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    264(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4s), .-GL_PREFIX(Color4s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4sv)
+       .type   GL_PREFIX(Color4sv), @function
+GL_PREFIX(Color4sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    272(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    272(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    272(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    272(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4sv), .-GL_PREFIX(Color4sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4ub)
+       .type   GL_PREFIX(Color4ub), @function
+GL_PREFIX(Color4ub):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    280(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    280(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    280(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    280(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4ub), .-GL_PREFIX(Color4ub)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4ubv)
+       .type   GL_PREFIX(Color4ubv), @function
+GL_PREFIX(Color4ubv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    288(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    288(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    288(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    288(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4ubv), .-GL_PREFIX(Color4ubv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4ui)
+       .type   GL_PREFIX(Color4ui), @function
+GL_PREFIX(Color4ui):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    296(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    296(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    296(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    296(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4ui), .-GL_PREFIX(Color4ui)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4uiv)
+       .type   GL_PREFIX(Color4uiv), @function
+GL_PREFIX(Color4uiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    304(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    304(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    304(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    304(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4uiv), .-GL_PREFIX(Color4uiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4us)
+       .type   GL_PREFIX(Color4us), @function
+GL_PREFIX(Color4us):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    312(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    312(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    312(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    312(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4us), .-GL_PREFIX(Color4us)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Color4usv)
+       .type   GL_PREFIX(Color4usv), @function
+GL_PREFIX(Color4usv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    320(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    320(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    320(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    320(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Color4usv), .-GL_PREFIX(Color4usv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EdgeFlag)
+       .type   GL_PREFIX(EdgeFlag), @function
+GL_PREFIX(EdgeFlag):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    328(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    328(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    328(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    328(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EdgeFlag), .-GL_PREFIX(EdgeFlag)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EdgeFlagv)
+       .type   GL_PREFIX(EdgeFlagv), @function
+GL_PREFIX(EdgeFlagv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    336(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    336(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    336(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    336(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EdgeFlagv), .-GL_PREFIX(EdgeFlagv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(End)
+       .type   GL_PREFIX(End), @function
+GL_PREFIX(End):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    344(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    344(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    344(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    344(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(End), .-GL_PREFIX(End)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexd)
+       .type   GL_PREFIX(Indexd), @function
+GL_PREFIX(Indexd):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    352(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    352(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    352(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    352(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexd), .-GL_PREFIX(Indexd)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexdv)
+       .type   GL_PREFIX(Indexdv), @function
+GL_PREFIX(Indexdv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    360(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    360(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    360(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    360(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexdv), .-GL_PREFIX(Indexdv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexf)
+       .type   GL_PREFIX(Indexf), @function
+GL_PREFIX(Indexf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    368(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    368(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    368(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    368(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexf), .-GL_PREFIX(Indexf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexfv)
+       .type   GL_PREFIX(Indexfv), @function
+GL_PREFIX(Indexfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    376(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    376(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    376(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    376(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexfv), .-GL_PREFIX(Indexfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexi)
+       .type   GL_PREFIX(Indexi), @function
+GL_PREFIX(Indexi):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    384(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    384(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    384(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    384(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexi), .-GL_PREFIX(Indexi)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexiv)
+       .type   GL_PREFIX(Indexiv), @function
+GL_PREFIX(Indexiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    392(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    392(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    392(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    392(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexiv), .-GL_PREFIX(Indexiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexs)
+       .type   GL_PREFIX(Indexs), @function
+GL_PREFIX(Indexs):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    400(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    400(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    400(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    400(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexs), .-GL_PREFIX(Indexs)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexsv)
+       .type   GL_PREFIX(Indexsv), @function
+GL_PREFIX(Indexsv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    408(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    408(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    408(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    408(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexsv), .-GL_PREFIX(Indexsv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3b)
+       .type   GL_PREFIX(Normal3b), @function
+GL_PREFIX(Normal3b):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    416(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    416(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    416(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    416(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3b), .-GL_PREFIX(Normal3b)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3bv)
+       .type   GL_PREFIX(Normal3bv), @function
+GL_PREFIX(Normal3bv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    424(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    424(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    424(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    424(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3bv), .-GL_PREFIX(Normal3bv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3d)
+       .type   GL_PREFIX(Normal3d), @function
+GL_PREFIX(Normal3d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    432(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    432(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    432(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    432(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3d), .-GL_PREFIX(Normal3d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3dv)
+       .type   GL_PREFIX(Normal3dv), @function
+GL_PREFIX(Normal3dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    440(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    440(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    440(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    440(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3dv), .-GL_PREFIX(Normal3dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3f)
+       .type   GL_PREFIX(Normal3f), @function
+GL_PREFIX(Normal3f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    448(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    448(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    448(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    448(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3f), .-GL_PREFIX(Normal3f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3fv)
+       .type   GL_PREFIX(Normal3fv), @function
+GL_PREFIX(Normal3fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    456(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    456(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    456(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    456(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3fv), .-GL_PREFIX(Normal3fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3i)
+       .type   GL_PREFIX(Normal3i), @function
+GL_PREFIX(Normal3i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    464(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    464(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    464(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    464(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3i), .-GL_PREFIX(Normal3i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3iv)
+       .type   GL_PREFIX(Normal3iv), @function
+GL_PREFIX(Normal3iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    472(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    472(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    472(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    472(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3iv), .-GL_PREFIX(Normal3iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3s)
+       .type   GL_PREFIX(Normal3s), @function
+GL_PREFIX(Normal3s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    480(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    480(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    480(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    480(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3s), .-GL_PREFIX(Normal3s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Normal3sv)
+       .type   GL_PREFIX(Normal3sv), @function
+GL_PREFIX(Normal3sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    488(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    488(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    488(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    488(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Normal3sv), .-GL_PREFIX(Normal3sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2d)
+       .type   GL_PREFIX(RasterPos2d), @function
+GL_PREFIX(RasterPos2d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    496(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    496(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    496(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    496(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2d), .-GL_PREFIX(RasterPos2d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2dv)
+       .type   GL_PREFIX(RasterPos2dv), @function
+GL_PREFIX(RasterPos2dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    504(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    504(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    504(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    504(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2dv), .-GL_PREFIX(RasterPos2dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2f)
+       .type   GL_PREFIX(RasterPos2f), @function
+GL_PREFIX(RasterPos2f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    512(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    512(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    512(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    512(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2f), .-GL_PREFIX(RasterPos2f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2fv)
+       .type   GL_PREFIX(RasterPos2fv), @function
+GL_PREFIX(RasterPos2fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    520(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    520(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    520(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    520(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2fv), .-GL_PREFIX(RasterPos2fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2i)
+       .type   GL_PREFIX(RasterPos2i), @function
+GL_PREFIX(RasterPos2i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    528(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    528(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    528(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    528(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2i), .-GL_PREFIX(RasterPos2i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2iv)
+       .type   GL_PREFIX(RasterPos2iv), @function
+GL_PREFIX(RasterPos2iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    536(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    536(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    536(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    536(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2iv), .-GL_PREFIX(RasterPos2iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2s)
+       .type   GL_PREFIX(RasterPos2s), @function
+GL_PREFIX(RasterPos2s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    544(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    544(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    544(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    544(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2s), .-GL_PREFIX(RasterPos2s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos2sv)
+       .type   GL_PREFIX(RasterPos2sv), @function
+GL_PREFIX(RasterPos2sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    552(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    552(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    552(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    552(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos2sv), .-GL_PREFIX(RasterPos2sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3d)
+       .type   GL_PREFIX(RasterPos3d), @function
+GL_PREFIX(RasterPos3d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    560(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    560(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    560(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    560(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3d), .-GL_PREFIX(RasterPos3d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3dv)
+       .type   GL_PREFIX(RasterPos3dv), @function
+GL_PREFIX(RasterPos3dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    568(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    568(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    568(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    568(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3dv), .-GL_PREFIX(RasterPos3dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3f)
+       .type   GL_PREFIX(RasterPos3f), @function
+GL_PREFIX(RasterPos3f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    576(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    576(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    576(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    576(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3f), .-GL_PREFIX(RasterPos3f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3fv)
+       .type   GL_PREFIX(RasterPos3fv), @function
+GL_PREFIX(RasterPos3fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    584(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    584(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    584(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    584(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3fv), .-GL_PREFIX(RasterPos3fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3i)
+       .type   GL_PREFIX(RasterPos3i), @function
+GL_PREFIX(RasterPos3i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    592(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    592(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    592(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    592(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3i), .-GL_PREFIX(RasterPos3i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3iv)
+       .type   GL_PREFIX(RasterPos3iv), @function
+GL_PREFIX(RasterPos3iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    600(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    600(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    600(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    600(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3iv), .-GL_PREFIX(RasterPos3iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3s)
+       .type   GL_PREFIX(RasterPos3s), @function
+GL_PREFIX(RasterPos3s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    608(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    608(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    608(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    608(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3s), .-GL_PREFIX(RasterPos3s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos3sv)
+       .type   GL_PREFIX(RasterPos3sv), @function
+GL_PREFIX(RasterPos3sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    616(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    616(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    616(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    616(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos3sv), .-GL_PREFIX(RasterPos3sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4d)
+       .type   GL_PREFIX(RasterPos4d), @function
+GL_PREFIX(RasterPos4d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    624(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    624(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    624(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    624(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4d), .-GL_PREFIX(RasterPos4d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4dv)
+       .type   GL_PREFIX(RasterPos4dv), @function
+GL_PREFIX(RasterPos4dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    632(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    632(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    632(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    632(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4dv), .-GL_PREFIX(RasterPos4dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4f)
+       .type   GL_PREFIX(RasterPos4f), @function
+GL_PREFIX(RasterPos4f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    640(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    640(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    640(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    640(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4f), .-GL_PREFIX(RasterPos4f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4fv)
+       .type   GL_PREFIX(RasterPos4fv), @function
+GL_PREFIX(RasterPos4fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    648(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    648(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    648(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    648(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4fv), .-GL_PREFIX(RasterPos4fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4i)
+       .type   GL_PREFIX(RasterPos4i), @function
+GL_PREFIX(RasterPos4i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    656(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    656(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    656(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    656(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4i), .-GL_PREFIX(RasterPos4i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4iv)
+       .type   GL_PREFIX(RasterPos4iv), @function
+GL_PREFIX(RasterPos4iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    664(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    664(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    664(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    664(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4iv), .-GL_PREFIX(RasterPos4iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4s)
+       .type   GL_PREFIX(RasterPos4s), @function
+GL_PREFIX(RasterPos4s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    672(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    672(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    672(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    672(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4s), .-GL_PREFIX(RasterPos4s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RasterPos4sv)
+       .type   GL_PREFIX(RasterPos4sv), @function
+GL_PREFIX(RasterPos4sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    680(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    680(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    680(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    680(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RasterPos4sv), .-GL_PREFIX(RasterPos4sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rectd)
+       .type   GL_PREFIX(Rectd), @function
+GL_PREFIX(Rectd):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    688(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    688(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    688(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    688(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rectd), .-GL_PREFIX(Rectd)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rectdv)
+       .type   GL_PREFIX(Rectdv), @function
+GL_PREFIX(Rectdv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    696(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    696(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    696(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    696(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rectdv), .-GL_PREFIX(Rectdv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rectf)
+       .type   GL_PREFIX(Rectf), @function
+GL_PREFIX(Rectf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    704(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    704(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    704(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    704(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rectf), .-GL_PREFIX(Rectf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rectfv)
+       .type   GL_PREFIX(Rectfv), @function
+GL_PREFIX(Rectfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    712(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    712(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    712(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    712(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rectfv), .-GL_PREFIX(Rectfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Recti)
+       .type   GL_PREFIX(Recti), @function
+GL_PREFIX(Recti):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    720(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    720(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    720(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    720(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Recti), .-GL_PREFIX(Recti)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rectiv)
+       .type   GL_PREFIX(Rectiv), @function
+GL_PREFIX(Rectiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    728(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    728(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    728(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    728(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rectiv), .-GL_PREFIX(Rectiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rects)
+       .type   GL_PREFIX(Rects), @function
+GL_PREFIX(Rects):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    736(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    736(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    736(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    736(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rects), .-GL_PREFIX(Rects)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rectsv)
+       .type   GL_PREFIX(Rectsv), @function
+GL_PREFIX(Rectsv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    744(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    744(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    744(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    744(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rectsv), .-GL_PREFIX(Rectsv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1d)
+       .type   GL_PREFIX(TexCoord1d), @function
+GL_PREFIX(TexCoord1d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    752(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    752(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    752(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    752(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1d), .-GL_PREFIX(TexCoord1d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1dv)
+       .type   GL_PREFIX(TexCoord1dv), @function
+GL_PREFIX(TexCoord1dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    760(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    760(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    760(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    760(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1dv), .-GL_PREFIX(TexCoord1dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1f)
+       .type   GL_PREFIX(TexCoord1f), @function
+GL_PREFIX(TexCoord1f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    768(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    768(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    768(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    768(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1f), .-GL_PREFIX(TexCoord1f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1fv)
+       .type   GL_PREFIX(TexCoord1fv), @function
+GL_PREFIX(TexCoord1fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    776(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    776(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    776(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    776(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1fv), .-GL_PREFIX(TexCoord1fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1i)
+       .type   GL_PREFIX(TexCoord1i), @function
+GL_PREFIX(TexCoord1i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    784(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    784(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    784(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    784(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1i), .-GL_PREFIX(TexCoord1i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1iv)
+       .type   GL_PREFIX(TexCoord1iv), @function
+GL_PREFIX(TexCoord1iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    792(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    792(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    792(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    792(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1iv), .-GL_PREFIX(TexCoord1iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1s)
+       .type   GL_PREFIX(TexCoord1s), @function
+GL_PREFIX(TexCoord1s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    800(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    800(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    800(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    800(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1s), .-GL_PREFIX(TexCoord1s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord1sv)
+       .type   GL_PREFIX(TexCoord1sv), @function
+GL_PREFIX(TexCoord1sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    808(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    808(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    808(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    808(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord1sv), .-GL_PREFIX(TexCoord1sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2d)
+       .type   GL_PREFIX(TexCoord2d), @function
+GL_PREFIX(TexCoord2d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    816(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    816(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    816(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    816(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2d), .-GL_PREFIX(TexCoord2d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2dv)
+       .type   GL_PREFIX(TexCoord2dv), @function
+GL_PREFIX(TexCoord2dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    824(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    824(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    824(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    824(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2dv), .-GL_PREFIX(TexCoord2dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2f)
+       .type   GL_PREFIX(TexCoord2f), @function
+GL_PREFIX(TexCoord2f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    832(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    832(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    832(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    832(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2f), .-GL_PREFIX(TexCoord2f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2fv)
+       .type   GL_PREFIX(TexCoord2fv), @function
+GL_PREFIX(TexCoord2fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    840(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    840(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    840(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    840(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2fv), .-GL_PREFIX(TexCoord2fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2i)
+       .type   GL_PREFIX(TexCoord2i), @function
+GL_PREFIX(TexCoord2i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    848(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    848(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    848(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    848(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2i), .-GL_PREFIX(TexCoord2i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2iv)
+       .type   GL_PREFIX(TexCoord2iv), @function
+GL_PREFIX(TexCoord2iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    856(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    856(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    856(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    856(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2iv), .-GL_PREFIX(TexCoord2iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2s)
+       .type   GL_PREFIX(TexCoord2s), @function
+GL_PREFIX(TexCoord2s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    864(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    864(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    864(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    864(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2s), .-GL_PREFIX(TexCoord2s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord2sv)
+       .type   GL_PREFIX(TexCoord2sv), @function
+GL_PREFIX(TexCoord2sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    872(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    872(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    872(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    872(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord2sv), .-GL_PREFIX(TexCoord2sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3d)
+       .type   GL_PREFIX(TexCoord3d), @function
+GL_PREFIX(TexCoord3d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    880(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    880(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    880(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    880(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3d), .-GL_PREFIX(TexCoord3d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3dv)
+       .type   GL_PREFIX(TexCoord3dv), @function
+GL_PREFIX(TexCoord3dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    888(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    888(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    888(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    888(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3dv), .-GL_PREFIX(TexCoord3dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3f)
+       .type   GL_PREFIX(TexCoord3f), @function
+GL_PREFIX(TexCoord3f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    896(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    896(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    896(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    896(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3f), .-GL_PREFIX(TexCoord3f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3fv)
+       .type   GL_PREFIX(TexCoord3fv), @function
+GL_PREFIX(TexCoord3fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    904(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    904(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    904(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    904(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3fv), .-GL_PREFIX(TexCoord3fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3i)
+       .type   GL_PREFIX(TexCoord3i), @function
+GL_PREFIX(TexCoord3i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    912(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    912(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    912(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    912(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3i), .-GL_PREFIX(TexCoord3i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3iv)
+       .type   GL_PREFIX(TexCoord3iv), @function
+GL_PREFIX(TexCoord3iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    920(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    920(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    920(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    920(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3iv), .-GL_PREFIX(TexCoord3iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3s)
+       .type   GL_PREFIX(TexCoord3s), @function
+GL_PREFIX(TexCoord3s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    928(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    928(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    928(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    928(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3s), .-GL_PREFIX(TexCoord3s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord3sv)
+       .type   GL_PREFIX(TexCoord3sv), @function
+GL_PREFIX(TexCoord3sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    936(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    936(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    936(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    936(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord3sv), .-GL_PREFIX(TexCoord3sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4d)
+       .type   GL_PREFIX(TexCoord4d), @function
+GL_PREFIX(TexCoord4d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    944(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    944(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    944(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    944(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4d), .-GL_PREFIX(TexCoord4d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4dv)
+       .type   GL_PREFIX(TexCoord4dv), @function
+GL_PREFIX(TexCoord4dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    952(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    952(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    952(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    952(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4dv), .-GL_PREFIX(TexCoord4dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4f)
+       .type   GL_PREFIX(TexCoord4f), @function
+GL_PREFIX(TexCoord4f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    960(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    960(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    960(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    960(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4f), .-GL_PREFIX(TexCoord4f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4fv)
+       .type   GL_PREFIX(TexCoord4fv), @function
+GL_PREFIX(TexCoord4fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    968(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    968(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    968(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    968(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4fv), .-GL_PREFIX(TexCoord4fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4i)
+       .type   GL_PREFIX(TexCoord4i), @function
+GL_PREFIX(TexCoord4i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    976(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    976(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    976(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    976(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4i), .-GL_PREFIX(TexCoord4i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4iv)
+       .type   GL_PREFIX(TexCoord4iv), @function
+GL_PREFIX(TexCoord4iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    984(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    984(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    984(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    984(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4iv), .-GL_PREFIX(TexCoord4iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4s)
+       .type   GL_PREFIX(TexCoord4s), @function
+GL_PREFIX(TexCoord4s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    992(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    992(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    992(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    992(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4s), .-GL_PREFIX(TexCoord4s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoord4sv)
+       .type   GL_PREFIX(TexCoord4sv), @function
+GL_PREFIX(TexCoord4sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1000(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1000(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1000(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1000(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoord4sv), .-GL_PREFIX(TexCoord4sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2d)
+       .type   GL_PREFIX(Vertex2d), @function
+GL_PREFIX(Vertex2d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1008(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1008(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1008(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1008(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2d), .-GL_PREFIX(Vertex2d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2dv)
+       .type   GL_PREFIX(Vertex2dv), @function
+GL_PREFIX(Vertex2dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1016(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1016(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1016(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1016(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2dv), .-GL_PREFIX(Vertex2dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2f)
+       .type   GL_PREFIX(Vertex2f), @function
+GL_PREFIX(Vertex2f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1024(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1024(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1024(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1024(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2f), .-GL_PREFIX(Vertex2f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2fv)
+       .type   GL_PREFIX(Vertex2fv), @function
+GL_PREFIX(Vertex2fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1032(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1032(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1032(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1032(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2fv), .-GL_PREFIX(Vertex2fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2i)
+       .type   GL_PREFIX(Vertex2i), @function
+GL_PREFIX(Vertex2i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1040(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1040(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1040(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1040(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2i), .-GL_PREFIX(Vertex2i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2iv)
+       .type   GL_PREFIX(Vertex2iv), @function
+GL_PREFIX(Vertex2iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1048(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1048(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1048(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1048(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2iv), .-GL_PREFIX(Vertex2iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2s)
+       .type   GL_PREFIX(Vertex2s), @function
+GL_PREFIX(Vertex2s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1056(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1056(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1056(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1056(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2s), .-GL_PREFIX(Vertex2s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex2sv)
+       .type   GL_PREFIX(Vertex2sv), @function
+GL_PREFIX(Vertex2sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1064(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1064(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1064(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1064(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex2sv), .-GL_PREFIX(Vertex2sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3d)
+       .type   GL_PREFIX(Vertex3d), @function
+GL_PREFIX(Vertex3d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1072(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1072(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1072(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1072(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3d), .-GL_PREFIX(Vertex3d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3dv)
+       .type   GL_PREFIX(Vertex3dv), @function
+GL_PREFIX(Vertex3dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1080(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1080(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1080(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1080(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3dv), .-GL_PREFIX(Vertex3dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3f)
+       .type   GL_PREFIX(Vertex3f), @function
+GL_PREFIX(Vertex3f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1088(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1088(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1088(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1088(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3f), .-GL_PREFIX(Vertex3f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3fv)
+       .type   GL_PREFIX(Vertex3fv), @function
+GL_PREFIX(Vertex3fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1096(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1096(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1096(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1096(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3fv), .-GL_PREFIX(Vertex3fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3i)
+       .type   GL_PREFIX(Vertex3i), @function
+GL_PREFIX(Vertex3i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1104(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1104(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1104(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1104(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3i), .-GL_PREFIX(Vertex3i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3iv)
+       .type   GL_PREFIX(Vertex3iv), @function
+GL_PREFIX(Vertex3iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1112(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1112(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1112(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1112(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3iv), .-GL_PREFIX(Vertex3iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3s)
+       .type   GL_PREFIX(Vertex3s), @function
+GL_PREFIX(Vertex3s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1120(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1120(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1120(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1120(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3s), .-GL_PREFIX(Vertex3s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex3sv)
+       .type   GL_PREFIX(Vertex3sv), @function
+GL_PREFIX(Vertex3sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1128(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1128(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1128(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1128(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex3sv), .-GL_PREFIX(Vertex3sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4d)
+       .type   GL_PREFIX(Vertex4d), @function
+GL_PREFIX(Vertex4d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1136(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    1136(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1136(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    1136(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4d), .-GL_PREFIX(Vertex4d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4dv)
+       .type   GL_PREFIX(Vertex4dv), @function
+GL_PREFIX(Vertex4dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1144(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1144(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1144(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1144(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4dv), .-GL_PREFIX(Vertex4dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4f)
+       .type   GL_PREFIX(Vertex4f), @function
+GL_PREFIX(Vertex4f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1152(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    1152(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1152(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    1152(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4f), .-GL_PREFIX(Vertex4f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4fv)
+       .type   GL_PREFIX(Vertex4fv), @function
+GL_PREFIX(Vertex4fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1160(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1160(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1160(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1160(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4fv), .-GL_PREFIX(Vertex4fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4i)
+       .type   GL_PREFIX(Vertex4i), @function
+GL_PREFIX(Vertex4i):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1168(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1168(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1168(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1168(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4i), .-GL_PREFIX(Vertex4i)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4iv)
+       .type   GL_PREFIX(Vertex4iv), @function
+GL_PREFIX(Vertex4iv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1176(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1176(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1176(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1176(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4iv), .-GL_PREFIX(Vertex4iv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4s)
+       .type   GL_PREFIX(Vertex4s), @function
+GL_PREFIX(Vertex4s):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1184(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1184(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1184(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1184(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4s), .-GL_PREFIX(Vertex4s)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Vertex4sv)
+       .type   GL_PREFIX(Vertex4sv), @function
+GL_PREFIX(Vertex4sv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1192(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1192(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1192(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1192(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Vertex4sv), .-GL_PREFIX(Vertex4sv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClipPlane)
+       .type   GL_PREFIX(ClipPlane), @function
+GL_PREFIX(ClipPlane):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1200(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1200(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1200(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1200(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClipPlane), .-GL_PREFIX(ClipPlane)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorMaterial)
+       .type   GL_PREFIX(ColorMaterial), @function
+GL_PREFIX(ColorMaterial):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1208(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1208(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1208(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1208(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorMaterial), .-GL_PREFIX(ColorMaterial)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CullFace)
+       .type   GL_PREFIX(CullFace), @function
+GL_PREFIX(CullFace):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1216(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1216(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1216(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1216(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CullFace), .-GL_PREFIX(CullFace)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Fogf)
+       .type   GL_PREFIX(Fogf), @function
+GL_PREFIX(Fogf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1224(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1224(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1224(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1224(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Fogf), .-GL_PREFIX(Fogf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Fogfv)
+       .type   GL_PREFIX(Fogfv), @function
+GL_PREFIX(Fogfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1232(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1232(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1232(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1232(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Fogfv), .-GL_PREFIX(Fogfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Fogi)
+       .type   GL_PREFIX(Fogi), @function
+GL_PREFIX(Fogi):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1240(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1240(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1240(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1240(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Fogi), .-GL_PREFIX(Fogi)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Fogiv)
+       .type   GL_PREFIX(Fogiv), @function
+GL_PREFIX(Fogiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1248(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1248(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1248(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1248(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Fogiv), .-GL_PREFIX(Fogiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FrontFace)
+       .type   GL_PREFIX(FrontFace), @function
+GL_PREFIX(FrontFace):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1256(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1256(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1256(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1256(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FrontFace), .-GL_PREFIX(FrontFace)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Hint)
+       .type   GL_PREFIX(Hint), @function
+GL_PREFIX(Hint):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1264(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1264(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1264(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1264(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Hint), .-GL_PREFIX(Hint)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Lightf)
+       .type   GL_PREFIX(Lightf), @function
+GL_PREFIX(Lightf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1272(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1272(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1272(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1272(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Lightf), .-GL_PREFIX(Lightf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Lightfv)
+       .type   GL_PREFIX(Lightfv), @function
+GL_PREFIX(Lightfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1280(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1280(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1280(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1280(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Lightfv), .-GL_PREFIX(Lightfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Lighti)
+       .type   GL_PREFIX(Lighti), @function
+GL_PREFIX(Lighti):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1288(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1288(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1288(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1288(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Lighti), .-GL_PREFIX(Lighti)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Lightiv)
+       .type   GL_PREFIX(Lightiv), @function
+GL_PREFIX(Lightiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1296(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1296(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1296(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1296(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Lightiv), .-GL_PREFIX(Lightiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LightModelf)
+       .type   GL_PREFIX(LightModelf), @function
+GL_PREFIX(LightModelf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1304(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1304(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1304(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1304(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LightModelf), .-GL_PREFIX(LightModelf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LightModelfv)
+       .type   GL_PREFIX(LightModelfv), @function
+GL_PREFIX(LightModelfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1312(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1312(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1312(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1312(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LightModelfv), .-GL_PREFIX(LightModelfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LightModeli)
+       .type   GL_PREFIX(LightModeli), @function
+GL_PREFIX(LightModeli):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1320(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1320(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1320(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1320(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LightModeli), .-GL_PREFIX(LightModeli)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LightModeliv)
+       .type   GL_PREFIX(LightModeliv), @function
+GL_PREFIX(LightModeliv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1328(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1328(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1328(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1328(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LightModeliv), .-GL_PREFIX(LightModeliv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LineStipple)
+       .type   GL_PREFIX(LineStipple), @function
+GL_PREFIX(LineStipple):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1336(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1336(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1336(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1336(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LineStipple), .-GL_PREFIX(LineStipple)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LineWidth)
+       .type   GL_PREFIX(LineWidth), @function
+GL_PREFIX(LineWidth):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1344(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1344(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1344(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1344(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LineWidth), .-GL_PREFIX(LineWidth)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Materialf)
+       .type   GL_PREFIX(Materialf), @function
+GL_PREFIX(Materialf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1352(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1352(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1352(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1352(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Materialf), .-GL_PREFIX(Materialf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Materialfv)
+       .type   GL_PREFIX(Materialfv), @function
+GL_PREFIX(Materialfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1360(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1360(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1360(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1360(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Materialfv), .-GL_PREFIX(Materialfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Materiali)
+       .type   GL_PREFIX(Materiali), @function
+GL_PREFIX(Materiali):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1368(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1368(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1368(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1368(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Materiali), .-GL_PREFIX(Materiali)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Materialiv)
+       .type   GL_PREFIX(Materialiv), @function
+GL_PREFIX(Materialiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1376(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1376(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1376(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1376(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Materialiv), .-GL_PREFIX(Materialiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PointSize)
+       .type   GL_PREFIX(PointSize), @function
+GL_PREFIX(PointSize):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1384(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1384(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1384(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1384(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PointSize), .-GL_PREFIX(PointSize)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PolygonMode)
+       .type   GL_PREFIX(PolygonMode), @function
+GL_PREFIX(PolygonMode):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1392(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1392(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1392(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1392(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PolygonMode), .-GL_PREFIX(PolygonMode)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PolygonStipple)
+       .type   GL_PREFIX(PolygonStipple), @function
+GL_PREFIX(PolygonStipple):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1400(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1400(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1400(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1400(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PolygonStipple), .-GL_PREFIX(PolygonStipple)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Scissor)
+       .type   GL_PREFIX(Scissor), @function
+GL_PREFIX(Scissor):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1408(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1408(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1408(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1408(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Scissor), .-GL_PREFIX(Scissor)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ShadeModel)
+       .type   GL_PREFIX(ShadeModel), @function
+GL_PREFIX(ShadeModel):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1416(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1416(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1416(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1416(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ShadeModel), .-GL_PREFIX(ShadeModel)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexParameterf)
+       .type   GL_PREFIX(TexParameterf), @function
+GL_PREFIX(TexParameterf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1424(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1424(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1424(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1424(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexParameterf), .-GL_PREFIX(TexParameterf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexParameterfv)
+       .type   GL_PREFIX(TexParameterfv), @function
+GL_PREFIX(TexParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1432(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1432(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1432(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1432(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexParameterfv), .-GL_PREFIX(TexParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexParameteri)
+       .type   GL_PREFIX(TexParameteri), @function
+GL_PREFIX(TexParameteri):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1440(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1440(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1440(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1440(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexParameteri), .-GL_PREFIX(TexParameteri)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexParameteriv)
+       .type   GL_PREFIX(TexParameteriv), @function
+GL_PREFIX(TexParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1448(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1448(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1448(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1448(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexParameteriv), .-GL_PREFIX(TexParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexImage1D)
+       .type   GL_PREFIX(TexImage1D), @function
+GL_PREFIX(TexImage1D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1456(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1456(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1456(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1456(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexImage1D), .-GL_PREFIX(TexImage1D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexImage2D)
+       .type   GL_PREFIX(TexImage2D), @function
+GL_PREFIX(TexImage2D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1464(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1464(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1464(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1464(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexImage2D), .-GL_PREFIX(TexImage2D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexEnvf)
+       .type   GL_PREFIX(TexEnvf), @function
+GL_PREFIX(TexEnvf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1472(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1472(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1472(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1472(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexEnvf), .-GL_PREFIX(TexEnvf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexEnvfv)
+       .type   GL_PREFIX(TexEnvfv), @function
+GL_PREFIX(TexEnvfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1480(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1480(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1480(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1480(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexEnvfv), .-GL_PREFIX(TexEnvfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexEnvi)
+       .type   GL_PREFIX(TexEnvi), @function
+GL_PREFIX(TexEnvi):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1488(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1488(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1488(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1488(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexEnvi), .-GL_PREFIX(TexEnvi)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexEnviv)
+       .type   GL_PREFIX(TexEnviv), @function
+GL_PREFIX(TexEnviv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1496(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1496(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1496(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1496(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexEnviv), .-GL_PREFIX(TexEnviv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexGend)
+       .type   GL_PREFIX(TexGend), @function
+GL_PREFIX(TexGend):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1504(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1504(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1504(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1504(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexGend), .-GL_PREFIX(TexGend)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexGendv)
+       .type   GL_PREFIX(TexGendv), @function
+GL_PREFIX(TexGendv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1512(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1512(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1512(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1512(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexGendv), .-GL_PREFIX(TexGendv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexGenf)
+       .type   GL_PREFIX(TexGenf), @function
+GL_PREFIX(TexGenf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1520(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1520(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1520(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1520(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexGenf), .-GL_PREFIX(TexGenf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexGenfv)
+       .type   GL_PREFIX(TexGenfv), @function
+GL_PREFIX(TexGenfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1528(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1528(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1528(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1528(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexGenfv), .-GL_PREFIX(TexGenfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexGeni)
+       .type   GL_PREFIX(TexGeni), @function
+GL_PREFIX(TexGeni):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1536(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1536(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1536(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1536(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexGeni), .-GL_PREFIX(TexGeni)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexGeniv)
+       .type   GL_PREFIX(TexGeniv), @function
+GL_PREFIX(TexGeniv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1544(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1544(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1544(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1544(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexGeniv), .-GL_PREFIX(TexGeniv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FeedbackBuffer)
+       .type   GL_PREFIX(FeedbackBuffer), @function
+GL_PREFIX(FeedbackBuffer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1552(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1552(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1552(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1552(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FeedbackBuffer), .-GL_PREFIX(FeedbackBuffer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SelectBuffer)
+       .type   GL_PREFIX(SelectBuffer), @function
+GL_PREFIX(SelectBuffer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1560(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1560(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1560(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1560(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SelectBuffer), .-GL_PREFIX(SelectBuffer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RenderMode)
+       .type   GL_PREFIX(RenderMode), @function
+GL_PREFIX(RenderMode):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1568(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1568(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1568(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1568(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RenderMode), .-GL_PREFIX(RenderMode)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(InitNames)
+       .type   GL_PREFIX(InitNames), @function
+GL_PREFIX(InitNames):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1576(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    1576(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1576(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    1576(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(InitNames), .-GL_PREFIX(InitNames)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LoadName)
+       .type   GL_PREFIX(LoadName), @function
+GL_PREFIX(LoadName):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1584(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1584(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1584(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1584(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LoadName), .-GL_PREFIX(LoadName)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PassThrough)
+       .type   GL_PREFIX(PassThrough), @function
+GL_PREFIX(PassThrough):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1592(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1592(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1592(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1592(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PassThrough), .-GL_PREFIX(PassThrough)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PopName)
+       .type   GL_PREFIX(PopName), @function
+GL_PREFIX(PopName):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1600(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    1600(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1600(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    1600(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PopName), .-GL_PREFIX(PopName)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PushName)
+       .type   GL_PREFIX(PushName), @function
+GL_PREFIX(PushName):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1608(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1608(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1608(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1608(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PushName), .-GL_PREFIX(PushName)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawBuffer)
+       .type   GL_PREFIX(DrawBuffer), @function
+GL_PREFIX(DrawBuffer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1616(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1616(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1616(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1616(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawBuffer), .-GL_PREFIX(DrawBuffer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Clear)
+       .type   GL_PREFIX(Clear), @function
+GL_PREFIX(Clear):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1624(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1624(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1624(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1624(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Clear), .-GL_PREFIX(Clear)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClearAccum)
+       .type   GL_PREFIX(ClearAccum), @function
+GL_PREFIX(ClearAccum):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1632(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    1632(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1632(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    1632(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClearAccum), .-GL_PREFIX(ClearAccum)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClearIndex)
+       .type   GL_PREFIX(ClearIndex), @function
+GL_PREFIX(ClearIndex):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1640(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1640(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1640(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1640(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClearIndex), .-GL_PREFIX(ClearIndex)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClearColor)
+       .type   GL_PREFIX(ClearColor), @function
+GL_PREFIX(ClearColor):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1648(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1648(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1648(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1648(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClearColor), .-GL_PREFIX(ClearColor)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClearStencil)
+       .type   GL_PREFIX(ClearStencil), @function
+GL_PREFIX(ClearStencil):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1656(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1656(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1656(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1656(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClearStencil), .-GL_PREFIX(ClearStencil)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClearDepth)
+       .type   GL_PREFIX(ClearDepth), @function
+GL_PREFIX(ClearDepth):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1664(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1664(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1664(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1664(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClearDepth), .-GL_PREFIX(ClearDepth)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(StencilMask)
+       .type   GL_PREFIX(StencilMask), @function
+GL_PREFIX(StencilMask):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1672(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1672(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1672(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1672(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(StencilMask), .-GL_PREFIX(StencilMask)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorMask)
+       .type   GL_PREFIX(ColorMask), @function
+GL_PREFIX(ColorMask):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1680(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1680(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1680(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1680(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorMask), .-GL_PREFIX(ColorMask)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DepthMask)
+       .type   GL_PREFIX(DepthMask), @function
+GL_PREFIX(DepthMask):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1688(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1688(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1688(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1688(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DepthMask), .-GL_PREFIX(DepthMask)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IndexMask)
+       .type   GL_PREFIX(IndexMask), @function
+GL_PREFIX(IndexMask):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1696(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1696(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1696(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1696(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IndexMask), .-GL_PREFIX(IndexMask)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Accum)
+       .type   GL_PREFIX(Accum), @function
+GL_PREFIX(Accum):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1704(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1704(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1704(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1704(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Accum), .-GL_PREFIX(Accum)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Disable)
+       .type   GL_PREFIX(Disable), @function
+GL_PREFIX(Disable):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1712(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1712(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1712(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1712(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Disable), .-GL_PREFIX(Disable)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Enable)
+       .type   GL_PREFIX(Enable), @function
+GL_PREFIX(Enable):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1720(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1720(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1720(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1720(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Enable), .-GL_PREFIX(Enable)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Finish)
+       .type   GL_PREFIX(Finish), @function
+GL_PREFIX(Finish):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1728(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    1728(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1728(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    1728(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Finish), .-GL_PREFIX(Finish)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Flush)
+       .type   GL_PREFIX(Flush), @function
+GL_PREFIX(Flush):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1736(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    1736(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1736(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    1736(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Flush), .-GL_PREFIX(Flush)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PopAttrib)
+       .type   GL_PREFIX(PopAttrib), @function
+GL_PREFIX(PopAttrib):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1744(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    1744(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1744(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    1744(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PopAttrib), .-GL_PREFIX(PopAttrib)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PushAttrib)
+       .type   GL_PREFIX(PushAttrib), @function
+GL_PREFIX(PushAttrib):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1752(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1752(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1752(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1752(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PushAttrib), .-GL_PREFIX(PushAttrib)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Map1d)
+       .type   GL_PREFIX(Map1d), @function
+GL_PREFIX(Map1d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1760(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %rcx, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %rcx
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1760(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1760(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %rcx, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %rcx
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1760(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Map1d), .-GL_PREFIX(Map1d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Map1f)
+       .type   GL_PREFIX(Map1f), @function
+GL_PREFIX(Map1f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1768(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %rcx, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %rcx
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1768(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1768(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %rcx, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %rcx
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1768(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Map1f), .-GL_PREFIX(Map1f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Map2d)
+       .type   GL_PREFIX(Map2d), @function
+GL_PREFIX(Map2d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1776(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $88, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       movq    %rcx, 56(%rsp)
+       movq    %r8, 64(%rsp)
+       movq    %r9, 72(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    72(%rsp), %r9
+       movq    64(%rsp), %r8
+       movq    56(%rsp), %rcx
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $88, %rsp
+       movq    1776(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1776(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $88, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       movq    %rcx, 56(%rsp)
+       movq    %r8, 64(%rsp)
+       movq    %r9, 72(%rsp)
+       call    _glapi_get_dispatch
+       movq    72(%rsp), %r9
+       movq    64(%rsp), %r8
+       movq    56(%rsp), %rcx
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $88, %rsp
+       movq    1776(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Map2d), .-GL_PREFIX(Map2d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Map2f)
+       .type   GL_PREFIX(Map2f), @function
+GL_PREFIX(Map2f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1784(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $88, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       movq    %rcx, 56(%rsp)
+       movq    %r8, 64(%rsp)
+       movq    %r9, 72(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    72(%rsp), %r9
+       movq    64(%rsp), %r8
+       movq    56(%rsp), %rcx
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $88, %rsp
+       movq    1784(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1784(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $88, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %rdx, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       movq    %rcx, 56(%rsp)
+       movq    %r8, 64(%rsp)
+       movq    %r9, 72(%rsp)
+       call    _glapi_get_dispatch
+       movq    72(%rsp), %r9
+       movq    64(%rsp), %r8
+       movq    56(%rsp), %rcx
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %rdx
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $88, %rsp
+       movq    1784(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Map2f), .-GL_PREFIX(Map2f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MapGrid1d)
+       .type   GL_PREFIX(MapGrid1d), @function
+GL_PREFIX(MapGrid1d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1792(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1792(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1792(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1792(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MapGrid1d), .-GL_PREFIX(MapGrid1d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MapGrid1f)
+       .type   GL_PREFIX(MapGrid1f), @function
+GL_PREFIX(MapGrid1f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1800(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1800(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1800(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1800(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MapGrid1f), .-GL_PREFIX(MapGrid1f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MapGrid2d)
+       .type   GL_PREFIX(MapGrid2d), @function
+GL_PREFIX(MapGrid2d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1808(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1808(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1808(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1808(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MapGrid2d), .-GL_PREFIX(MapGrid2d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MapGrid2f)
+       .type   GL_PREFIX(MapGrid2f), @function
+GL_PREFIX(MapGrid2f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1816(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1816(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1816(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %rsi, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %rsi
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    1816(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MapGrid2f), .-GL_PREFIX(MapGrid2f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord1d)
+       .type   GL_PREFIX(EvalCoord1d), @function
+GL_PREFIX(EvalCoord1d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1824(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1824(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1824(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1824(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord1d), .-GL_PREFIX(EvalCoord1d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord1dv)
+       .type   GL_PREFIX(EvalCoord1dv), @function
+GL_PREFIX(EvalCoord1dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1832(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1832(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1832(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1832(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord1dv), .-GL_PREFIX(EvalCoord1dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord1f)
+       .type   GL_PREFIX(EvalCoord1f), @function
+GL_PREFIX(EvalCoord1f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1840(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1840(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1840(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    1840(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord1f), .-GL_PREFIX(EvalCoord1f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord1fv)
+       .type   GL_PREFIX(EvalCoord1fv), @function
+GL_PREFIX(EvalCoord1fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1848(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1848(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1848(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1848(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord1fv), .-GL_PREFIX(EvalCoord1fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord2d)
+       .type   GL_PREFIX(EvalCoord2d), @function
+GL_PREFIX(EvalCoord2d):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1856(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1856(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1856(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1856(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord2d), .-GL_PREFIX(EvalCoord2d)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord2dv)
+       .type   GL_PREFIX(EvalCoord2dv), @function
+GL_PREFIX(EvalCoord2dv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1864(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1864(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1864(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1864(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord2dv), .-GL_PREFIX(EvalCoord2dv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord2f)
+       .type   GL_PREFIX(EvalCoord2f), @function
+GL_PREFIX(EvalCoord2f):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1872(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1872(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1872(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1872(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord2f), .-GL_PREFIX(EvalCoord2f)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalCoord2fv)
+       .type   GL_PREFIX(EvalCoord2fv), @function
+GL_PREFIX(EvalCoord2fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1880(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1880(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1880(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1880(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalCoord2fv), .-GL_PREFIX(EvalCoord2fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalMesh1)
+       .type   GL_PREFIX(EvalMesh1), @function
+GL_PREFIX(EvalMesh1):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1888(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1888(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1888(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1888(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalMesh1), .-GL_PREFIX(EvalMesh1)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalPoint1)
+       .type   GL_PREFIX(EvalPoint1), @function
+GL_PREFIX(EvalPoint1):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1896(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1896(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1896(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1896(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalPoint1), .-GL_PREFIX(EvalPoint1)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalMesh2)
+       .type   GL_PREFIX(EvalMesh2), @function
+GL_PREFIX(EvalMesh2):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1904(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1904(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1904(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1904(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalMesh2), .-GL_PREFIX(EvalMesh2)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EvalPoint2)
+       .type   GL_PREFIX(EvalPoint2), @function
+GL_PREFIX(EvalPoint2):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1912(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1912(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1912(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1912(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EvalPoint2), .-GL_PREFIX(EvalPoint2)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AlphaFunc)
+       .type   GL_PREFIX(AlphaFunc), @function
+GL_PREFIX(AlphaFunc):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1920(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1920(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1920(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1920(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AlphaFunc), .-GL_PREFIX(AlphaFunc)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BlendFunc)
+       .type   GL_PREFIX(BlendFunc), @function
+GL_PREFIX(BlendFunc):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1928(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1928(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1928(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1928(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BlendFunc), .-GL_PREFIX(BlendFunc)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LogicOp)
+       .type   GL_PREFIX(LogicOp), @function
+GL_PREFIX(LogicOp):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1936(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1936(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1936(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1936(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LogicOp), .-GL_PREFIX(LogicOp)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(StencilFunc)
+       .type   GL_PREFIX(StencilFunc), @function
+GL_PREFIX(StencilFunc):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1944(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1944(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1944(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1944(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(StencilFunc), .-GL_PREFIX(StencilFunc)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(StencilOp)
+       .type   GL_PREFIX(StencilOp), @function
+GL_PREFIX(StencilOp):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1952(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1952(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1952(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    1952(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(StencilOp), .-GL_PREFIX(StencilOp)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DepthFunc)
+       .type   GL_PREFIX(DepthFunc), @function
+GL_PREFIX(DepthFunc):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1960(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    1960(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1960(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    1960(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DepthFunc), .-GL_PREFIX(DepthFunc)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelZoom)
+       .type   GL_PREFIX(PixelZoom), @function
+GL_PREFIX(PixelZoom):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1968(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1968(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1968(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    1968(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelZoom), .-GL_PREFIX(PixelZoom)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelTransferf)
+       .type   GL_PREFIX(PixelTransferf), @function
+GL_PREFIX(PixelTransferf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1976(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1976(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1976(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1976(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelTransferf), .-GL_PREFIX(PixelTransferf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelTransferi)
+       .type   GL_PREFIX(PixelTransferi), @function
+GL_PREFIX(PixelTransferi):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1984(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1984(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1984(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    1984(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelTransferi), .-GL_PREFIX(PixelTransferi)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelStoref)
+       .type   GL_PREFIX(PixelStoref), @function
+GL_PREFIX(PixelStoref):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    1992(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1992(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    1992(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    1992(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelStoref), .-GL_PREFIX(PixelStoref)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelStorei)
+       .type   GL_PREFIX(PixelStorei), @function
+GL_PREFIX(PixelStorei):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2000(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2000(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2000(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2000(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelStorei), .-GL_PREFIX(PixelStorei)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelMapfv)
+       .type   GL_PREFIX(PixelMapfv), @function
+GL_PREFIX(PixelMapfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2008(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2008(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2008(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2008(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelMapfv), .-GL_PREFIX(PixelMapfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelMapuiv)
+       .type   GL_PREFIX(PixelMapuiv), @function
+GL_PREFIX(PixelMapuiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2016(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2016(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2016(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2016(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelMapuiv), .-GL_PREFIX(PixelMapuiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PixelMapusv)
+       .type   GL_PREFIX(PixelMapusv), @function
+GL_PREFIX(PixelMapusv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2024(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2024(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2024(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2024(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PixelMapusv), .-GL_PREFIX(PixelMapusv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ReadBuffer)
+       .type   GL_PREFIX(ReadBuffer), @function
+GL_PREFIX(ReadBuffer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2032(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2032(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2032(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2032(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ReadBuffer), .-GL_PREFIX(ReadBuffer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyPixels)
+       .type   GL_PREFIX(CopyPixels), @function
+GL_PREFIX(CopyPixels):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2040(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2040(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2040(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2040(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyPixels), .-GL_PREFIX(CopyPixels)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ReadPixels)
+       .type   GL_PREFIX(ReadPixels), @function
+GL_PREFIX(ReadPixels):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2048(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2048(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2048(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2048(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ReadPixels), .-GL_PREFIX(ReadPixels)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawPixels)
+       .type   GL_PREFIX(DrawPixels), @function
+GL_PREFIX(DrawPixels):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2056(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2056(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2056(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2056(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawPixels), .-GL_PREFIX(DrawPixels)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetBooleanv)
+       .type   GL_PREFIX(GetBooleanv), @function
+GL_PREFIX(GetBooleanv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2064(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2064(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2064(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2064(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetBooleanv), .-GL_PREFIX(GetBooleanv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetClipPlane)
+       .type   GL_PREFIX(GetClipPlane), @function
+GL_PREFIX(GetClipPlane):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2072(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2072(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2072(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2072(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetClipPlane), .-GL_PREFIX(GetClipPlane)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetDoublev)
+       .type   GL_PREFIX(GetDoublev), @function
+GL_PREFIX(GetDoublev):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2080(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2080(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2080(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2080(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetDoublev), .-GL_PREFIX(GetDoublev)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetError)
+       .type   GL_PREFIX(GetError), @function
+GL_PREFIX(GetError):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2088(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    2088(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2088(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    2088(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetError), .-GL_PREFIX(GetError)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetFloatv)
+       .type   GL_PREFIX(GetFloatv), @function
+GL_PREFIX(GetFloatv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2096(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2096(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2096(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2096(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetFloatv), .-GL_PREFIX(GetFloatv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetIntegerv)
+       .type   GL_PREFIX(GetIntegerv), @function
+GL_PREFIX(GetIntegerv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2104(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2104(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2104(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2104(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetIntegerv), .-GL_PREFIX(GetIntegerv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetLightfv)
+       .type   GL_PREFIX(GetLightfv), @function
+GL_PREFIX(GetLightfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2112(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2112(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2112(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2112(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetLightfv), .-GL_PREFIX(GetLightfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetLightiv)
+       .type   GL_PREFIX(GetLightiv), @function
+GL_PREFIX(GetLightiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2120(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2120(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2120(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2120(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetLightiv), .-GL_PREFIX(GetLightiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMapdv)
+       .type   GL_PREFIX(GetMapdv), @function
+GL_PREFIX(GetMapdv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2128(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2128(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2128(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2128(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMapdv), .-GL_PREFIX(GetMapdv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMapfv)
+       .type   GL_PREFIX(GetMapfv), @function
+GL_PREFIX(GetMapfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2136(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2136(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2136(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2136(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMapfv), .-GL_PREFIX(GetMapfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMapiv)
+       .type   GL_PREFIX(GetMapiv), @function
+GL_PREFIX(GetMapiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2144(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2144(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2144(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2144(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMapiv), .-GL_PREFIX(GetMapiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMaterialfv)
+       .type   GL_PREFIX(GetMaterialfv), @function
+GL_PREFIX(GetMaterialfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2152(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2152(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2152(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2152(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMaterialfv), .-GL_PREFIX(GetMaterialfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMaterialiv)
+       .type   GL_PREFIX(GetMaterialiv), @function
+GL_PREFIX(GetMaterialiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2160(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2160(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2160(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2160(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMaterialiv), .-GL_PREFIX(GetMaterialiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetPixelMapfv)
+       .type   GL_PREFIX(GetPixelMapfv), @function
+GL_PREFIX(GetPixelMapfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2168(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2168(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2168(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2168(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetPixelMapfv), .-GL_PREFIX(GetPixelMapfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetPixelMapuiv)
+       .type   GL_PREFIX(GetPixelMapuiv), @function
+GL_PREFIX(GetPixelMapuiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2176(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2176(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2176(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2176(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetPixelMapuiv), .-GL_PREFIX(GetPixelMapuiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetPixelMapusv)
+       .type   GL_PREFIX(GetPixelMapusv), @function
+GL_PREFIX(GetPixelMapusv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2184(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2184(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2184(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2184(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetPixelMapusv), .-GL_PREFIX(GetPixelMapusv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetPolygonStipple)
+       .type   GL_PREFIX(GetPolygonStipple), @function
+GL_PREFIX(GetPolygonStipple):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2192(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2192(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2192(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2192(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetPolygonStipple), .-GL_PREFIX(GetPolygonStipple)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetString)
+       .type   GL_PREFIX(GetString), @function
+GL_PREFIX(GetString):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2200(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2200(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2200(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2200(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetString), .-GL_PREFIX(GetString)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexEnvfv)
+       .type   GL_PREFIX(GetTexEnvfv), @function
+GL_PREFIX(GetTexEnvfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2208(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2208(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2208(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2208(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexEnvfv), .-GL_PREFIX(GetTexEnvfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexEnviv)
+       .type   GL_PREFIX(GetTexEnviv), @function
+GL_PREFIX(GetTexEnviv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2216(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2216(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2216(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2216(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexEnviv), .-GL_PREFIX(GetTexEnviv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexGendv)
+       .type   GL_PREFIX(GetTexGendv), @function
+GL_PREFIX(GetTexGendv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2224(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2224(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2224(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2224(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexGendv), .-GL_PREFIX(GetTexGendv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexGenfv)
+       .type   GL_PREFIX(GetTexGenfv), @function
+GL_PREFIX(GetTexGenfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2232(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2232(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2232(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2232(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexGenfv), .-GL_PREFIX(GetTexGenfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexGeniv)
+       .type   GL_PREFIX(GetTexGeniv), @function
+GL_PREFIX(GetTexGeniv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2240(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2240(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2240(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2240(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexGeniv), .-GL_PREFIX(GetTexGeniv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexImage)
+       .type   GL_PREFIX(GetTexImage), @function
+GL_PREFIX(GetTexImage):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2248(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2248(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2248(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2248(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexImage), .-GL_PREFIX(GetTexImage)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexParameterfv)
+       .type   GL_PREFIX(GetTexParameterfv), @function
+GL_PREFIX(GetTexParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2256(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2256(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2256(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2256(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexParameterfv), .-GL_PREFIX(GetTexParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexParameteriv)
+       .type   GL_PREFIX(GetTexParameteriv), @function
+GL_PREFIX(GetTexParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2264(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2264(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2264(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2264(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexParameteriv), .-GL_PREFIX(GetTexParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexLevelParameterfv)
+       .type   GL_PREFIX(GetTexLevelParameterfv), @function
+GL_PREFIX(GetTexLevelParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2272(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2272(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2272(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2272(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexLevelParameterfv), .-GL_PREFIX(GetTexLevelParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexLevelParameteriv)
+       .type   GL_PREFIX(GetTexLevelParameteriv), @function
+GL_PREFIX(GetTexLevelParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2280(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2280(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2280(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2280(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexLevelParameteriv), .-GL_PREFIX(GetTexLevelParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsEnabled)
+       .type   GL_PREFIX(IsEnabled), @function
+GL_PREFIX(IsEnabled):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2288(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2288(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2288(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2288(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsEnabled), .-GL_PREFIX(IsEnabled)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsList)
+       .type   GL_PREFIX(IsList), @function
+GL_PREFIX(IsList):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2296(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2296(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2296(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2296(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsList), .-GL_PREFIX(IsList)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DepthRange)
+       .type   GL_PREFIX(DepthRange), @function
+GL_PREFIX(DepthRange):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2304(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2304(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2304(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2304(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DepthRange), .-GL_PREFIX(DepthRange)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Frustum)
+       .type   GL_PREFIX(Frustum), @function
+GL_PREFIX(Frustum):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2312(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       movq    %xmm4, 32(%rsp)
+       movq    %xmm5, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm5
+       movq    32(%rsp), %xmm4
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $56, %rsp
+       movq    2312(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2312(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       movq    %xmm4, 32(%rsp)
+       movq    %xmm5, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm5
+       movq    32(%rsp), %xmm4
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $56, %rsp
+       movq    2312(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Frustum), .-GL_PREFIX(Frustum)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LoadIdentity)
+       .type   GL_PREFIX(LoadIdentity), @function
+GL_PREFIX(LoadIdentity):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2320(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    2320(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2320(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    2320(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LoadIdentity), .-GL_PREFIX(LoadIdentity)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LoadMatrixf)
+       .type   GL_PREFIX(LoadMatrixf), @function
+GL_PREFIX(LoadMatrixf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2328(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2328(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2328(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2328(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LoadMatrixf), .-GL_PREFIX(LoadMatrixf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LoadMatrixd)
+       .type   GL_PREFIX(LoadMatrixd), @function
+GL_PREFIX(LoadMatrixd):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2336(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2336(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2336(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2336(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LoadMatrixd), .-GL_PREFIX(LoadMatrixd)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MatrixMode)
+       .type   GL_PREFIX(MatrixMode), @function
+GL_PREFIX(MatrixMode):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2344(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2344(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2344(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2344(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MatrixMode), .-GL_PREFIX(MatrixMode)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultMatrixf)
+       .type   GL_PREFIX(MultMatrixf), @function
+GL_PREFIX(MultMatrixf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2352(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2352(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2352(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2352(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultMatrixf), .-GL_PREFIX(MultMatrixf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultMatrixd)
+       .type   GL_PREFIX(MultMatrixd), @function
+GL_PREFIX(MultMatrixd):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2360(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2360(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2360(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2360(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultMatrixd), .-GL_PREFIX(MultMatrixd)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Ortho)
+       .type   GL_PREFIX(Ortho), @function
+GL_PREFIX(Ortho):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2368(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       movq    %xmm4, 32(%rsp)
+       movq    %xmm5, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm5
+       movq    32(%rsp), %xmm4
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $56, %rsp
+       movq    2368(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2368(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       movq    %xmm4, 32(%rsp)
+       movq    %xmm5, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm5
+       movq    32(%rsp), %xmm4
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $56, %rsp
+       movq    2368(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Ortho), .-GL_PREFIX(Ortho)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PopMatrix)
+       .type   GL_PREFIX(PopMatrix), @function
+GL_PREFIX(PopMatrix):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2376(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    2376(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2376(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    2376(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PopMatrix), .-GL_PREFIX(PopMatrix)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PushMatrix)
+       .type   GL_PREFIX(PushMatrix), @function
+GL_PREFIX(PushMatrix):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2384(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    2384(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2384(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    2384(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PushMatrix), .-GL_PREFIX(PushMatrix)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rotated)
+       .type   GL_PREFIX(Rotated), @function
+GL_PREFIX(Rotated):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2392(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    2392(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2392(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    2392(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rotated), .-GL_PREFIX(Rotated)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Rotatef)
+       .type   GL_PREFIX(Rotatef), @function
+GL_PREFIX(Rotatef):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2400(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    2400(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2400(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    2400(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Rotatef), .-GL_PREFIX(Rotatef)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Scaled)
+       .type   GL_PREFIX(Scaled), @function
+GL_PREFIX(Scaled):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2408(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2408(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2408(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2408(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Scaled), .-GL_PREFIX(Scaled)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Scalef)
+       .type   GL_PREFIX(Scalef), @function
+GL_PREFIX(Scalef):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2416(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2416(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2416(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2416(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Scalef), .-GL_PREFIX(Scalef)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Translated)
+       .type   GL_PREFIX(Translated), @function
+GL_PREFIX(Translated):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2424(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2424(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2424(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2424(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Translated), .-GL_PREFIX(Translated)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Translatef)
+       .type   GL_PREFIX(Translatef), @function
+GL_PREFIX(Translatef):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2432(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2432(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2432(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2432(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Translatef), .-GL_PREFIX(Translatef)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Viewport)
+       .type   GL_PREFIX(Viewport), @function
+GL_PREFIX(Viewport):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2440(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2440(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2440(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2440(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Viewport), .-GL_PREFIX(Viewport)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ArrayElement)
+       .type   GL_PREFIX(ArrayElement), @function
+GL_PREFIX(ArrayElement):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2448(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2448(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2448(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2448(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ArrayElement), .-GL_PREFIX(ArrayElement)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindTexture)
+       .type   GL_PREFIX(BindTexture), @function
+GL_PREFIX(BindTexture):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2456(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2456(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2456(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2456(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindTexture), .-GL_PREFIX(BindTexture)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorPointer)
+       .type   GL_PREFIX(ColorPointer), @function
+GL_PREFIX(ColorPointer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2464(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2464(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2464(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2464(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorPointer), .-GL_PREFIX(ColorPointer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DisableClientState)
+       .type   GL_PREFIX(DisableClientState), @function
+GL_PREFIX(DisableClientState):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2472(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2472(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2472(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2472(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DisableClientState), .-GL_PREFIX(DisableClientState)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawArrays)
+       .type   GL_PREFIX(DrawArrays), @function
+GL_PREFIX(DrawArrays):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2480(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2480(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2480(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2480(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawArrays), .-GL_PREFIX(DrawArrays)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawElements)
+       .type   GL_PREFIX(DrawElements), @function
+GL_PREFIX(DrawElements):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2488(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2488(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2488(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2488(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawElements), .-GL_PREFIX(DrawElements)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EdgeFlagPointer)
+       .type   GL_PREFIX(EdgeFlagPointer), @function
+GL_PREFIX(EdgeFlagPointer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2496(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2496(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2496(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2496(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EdgeFlagPointer), .-GL_PREFIX(EdgeFlagPointer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EnableClientState)
+       .type   GL_PREFIX(EnableClientState), @function
+GL_PREFIX(EnableClientState):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2504(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2504(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2504(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2504(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EnableClientState), .-GL_PREFIX(EnableClientState)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IndexPointer)
+       .type   GL_PREFIX(IndexPointer), @function
+GL_PREFIX(IndexPointer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2512(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2512(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2512(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2512(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IndexPointer), .-GL_PREFIX(IndexPointer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexub)
+       .type   GL_PREFIX(Indexub), @function
+GL_PREFIX(Indexub):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2520(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2520(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2520(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2520(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexub), .-GL_PREFIX(Indexub)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Indexubv)
+       .type   GL_PREFIX(Indexubv), @function
+GL_PREFIX(Indexubv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2528(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2528(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2528(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2528(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Indexubv), .-GL_PREFIX(Indexubv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(InterleavedArrays)
+       .type   GL_PREFIX(InterleavedArrays), @function
+GL_PREFIX(InterleavedArrays):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2536(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2536(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2536(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2536(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(InterleavedArrays), .-GL_PREFIX(InterleavedArrays)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(NormalPointer)
+       .type   GL_PREFIX(NormalPointer), @function
+GL_PREFIX(NormalPointer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2544(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2544(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2544(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2544(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(NormalPointer), .-GL_PREFIX(NormalPointer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PolygonOffset)
+       .type   GL_PREFIX(PolygonOffset), @function
+GL_PREFIX(PolygonOffset):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2552(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2552(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2552(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    2552(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PolygonOffset), .-GL_PREFIX(PolygonOffset)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoordPointer)
+       .type   GL_PREFIX(TexCoordPointer), @function
+GL_PREFIX(TexCoordPointer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2560(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2560(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2560(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2560(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoordPointer), .-GL_PREFIX(TexCoordPointer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexPointer)
+       .type   GL_PREFIX(VertexPointer), @function
+GL_PREFIX(VertexPointer):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2568(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2568(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2568(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2568(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexPointer), .-GL_PREFIX(VertexPointer)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AreTexturesResident)
+       .type   GL_PREFIX(AreTexturesResident), @function
+GL_PREFIX(AreTexturesResident):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2576(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2576(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2576(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2576(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AreTexturesResident), .-GL_PREFIX(AreTexturesResident)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyTexImage1D)
+       .type   GL_PREFIX(CopyTexImage1D), @function
+GL_PREFIX(CopyTexImage1D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2584(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2584(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2584(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2584(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyTexImage1D), .-GL_PREFIX(CopyTexImage1D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyTexImage2D)
+       .type   GL_PREFIX(CopyTexImage2D), @function
+GL_PREFIX(CopyTexImage2D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2592(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2592(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2592(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2592(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyTexImage2D), .-GL_PREFIX(CopyTexImage2D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyTexSubImage1D)
+       .type   GL_PREFIX(CopyTexSubImage1D), @function
+GL_PREFIX(CopyTexSubImage1D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2600(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2600(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2600(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2600(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyTexSubImage1D), .-GL_PREFIX(CopyTexSubImage1D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyTexSubImage2D)
+       .type   GL_PREFIX(CopyTexSubImage2D), @function
+GL_PREFIX(CopyTexSubImage2D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2608(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2608(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2608(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2608(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyTexSubImage2D), .-GL_PREFIX(CopyTexSubImage2D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteTextures)
+       .type   GL_PREFIX(DeleteTextures), @function
+GL_PREFIX(DeleteTextures):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2616(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2616(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2616(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2616(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteTextures), .-GL_PREFIX(DeleteTextures)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenTextures)
+       .type   GL_PREFIX(GenTextures), @function
+GL_PREFIX(GenTextures):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2624(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2624(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2624(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2624(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenTextures), .-GL_PREFIX(GenTextures)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetPointerv)
+       .type   GL_PREFIX(GetPointerv), @function
+GL_PREFIX(GetPointerv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2632(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2632(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2632(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    2632(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetPointerv), .-GL_PREFIX(GetPointerv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsTexture)
+       .type   GL_PREFIX(IsTexture), @function
+GL_PREFIX(IsTexture):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2640(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2640(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2640(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2640(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsTexture), .-GL_PREFIX(IsTexture)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PrioritizeTextures)
+       .type   GL_PREFIX(PrioritizeTextures), @function
+GL_PREFIX(PrioritizeTextures):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2648(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2648(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2648(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2648(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PrioritizeTextures), .-GL_PREFIX(PrioritizeTextures)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexSubImage1D)
+       .type   GL_PREFIX(TexSubImage1D), @function
+GL_PREFIX(TexSubImage1D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2656(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2656(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2656(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2656(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexSubImage1D), .-GL_PREFIX(TexSubImage1D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexSubImage2D)
+       .type   GL_PREFIX(TexSubImage2D), @function
+GL_PREFIX(TexSubImage2D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2664(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2664(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2664(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2664(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexSubImage2D), .-GL_PREFIX(TexSubImage2D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PopClientAttrib)
+       .type   GL_PREFIX(PopClientAttrib), @function
+GL_PREFIX(PopClientAttrib):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2672(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    2672(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2672(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    2672(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PopClientAttrib), .-GL_PREFIX(PopClientAttrib)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PushClientAttrib)
+       .type   GL_PREFIX(PushClientAttrib), @function
+GL_PREFIX(PushClientAttrib):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2680(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2680(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2680(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2680(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PushClientAttrib), .-GL_PREFIX(PushClientAttrib)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BlendColor)
+       .type   GL_PREFIX(BlendColor), @function
+GL_PREFIX(BlendColor):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2688(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2688(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2688(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2688(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BlendColor), .-GL_PREFIX(BlendColor)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BlendEquation)
+       .type   GL_PREFIX(BlendEquation), @function
+GL_PREFIX(BlendEquation):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2696(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2696(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2696(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2696(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BlendEquation), .-GL_PREFIX(BlendEquation)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawRangeElements)
+       .type   GL_PREFIX(DrawRangeElements), @function
+GL_PREFIX(DrawRangeElements):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2704(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2704(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2704(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2704(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawRangeElements), .-GL_PREFIX(DrawRangeElements)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorTable)
+       .type   GL_PREFIX(ColorTable), @function
+GL_PREFIX(ColorTable):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2712(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2712(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2712(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2712(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorTable), .-GL_PREFIX(ColorTable)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorTableParameterfv)
+       .type   GL_PREFIX(ColorTableParameterfv), @function
+GL_PREFIX(ColorTableParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2720(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2720(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2720(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2720(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorTableParameterfv), .-GL_PREFIX(ColorTableParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorTableParameteriv)
+       .type   GL_PREFIX(ColorTableParameteriv), @function
+GL_PREFIX(ColorTableParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2728(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2728(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2728(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2728(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorTableParameteriv), .-GL_PREFIX(ColorTableParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyColorTable)
+       .type   GL_PREFIX(CopyColorTable), @function
+GL_PREFIX(CopyColorTable):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2736(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2736(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2736(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2736(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyColorTable), .-GL_PREFIX(CopyColorTable)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetColorTable)
+       .type   GL_PREFIX(GetColorTable), @function
+GL_PREFIX(GetColorTable):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2744(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2744(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2744(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2744(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetColorTable), .-GL_PREFIX(GetColorTable)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetColorTableParameterfv)
+       .type   GL_PREFIX(GetColorTableParameterfv), @function
+GL_PREFIX(GetColorTableParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2752(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2752(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2752(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2752(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetColorTableParameterfv), .-GL_PREFIX(GetColorTableParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetColorTableParameteriv)
+       .type   GL_PREFIX(GetColorTableParameteriv), @function
+GL_PREFIX(GetColorTableParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2760(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2760(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2760(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2760(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetColorTableParameteriv), .-GL_PREFIX(GetColorTableParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorSubTable)
+       .type   GL_PREFIX(ColorSubTable), @function
+GL_PREFIX(ColorSubTable):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2768(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2768(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2768(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2768(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorSubTable), .-GL_PREFIX(ColorSubTable)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyColorSubTable)
+       .type   GL_PREFIX(CopyColorSubTable), @function
+GL_PREFIX(CopyColorSubTable):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2776(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2776(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2776(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2776(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyColorSubTable), .-GL_PREFIX(CopyColorSubTable)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ConvolutionFilter1D)
+       .type   GL_PREFIX(ConvolutionFilter1D), @function
+GL_PREFIX(ConvolutionFilter1D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2784(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2784(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2784(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2784(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ConvolutionFilter1D), .-GL_PREFIX(ConvolutionFilter1D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ConvolutionFilter2D)
+       .type   GL_PREFIX(ConvolutionFilter2D), @function
+GL_PREFIX(ConvolutionFilter2D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2792(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2792(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2792(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2792(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ConvolutionFilter2D), .-GL_PREFIX(ConvolutionFilter2D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ConvolutionParameterf)
+       .type   GL_PREFIX(ConvolutionParameterf), @function
+GL_PREFIX(ConvolutionParameterf):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2800(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    2800(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2800(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    2800(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ConvolutionParameterf), .-GL_PREFIX(ConvolutionParameterf)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ConvolutionParameterfv)
+       .type   GL_PREFIX(ConvolutionParameterfv), @function
+GL_PREFIX(ConvolutionParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2808(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2808(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2808(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2808(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ConvolutionParameterfv), .-GL_PREFIX(ConvolutionParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ConvolutionParameteri)
+       .type   GL_PREFIX(ConvolutionParameteri), @function
+GL_PREFIX(ConvolutionParameteri):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2816(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2816(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2816(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2816(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ConvolutionParameteri), .-GL_PREFIX(ConvolutionParameteri)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ConvolutionParameteriv)
+       .type   GL_PREFIX(ConvolutionParameteriv), @function
+GL_PREFIX(ConvolutionParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2824(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2824(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2824(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2824(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ConvolutionParameteriv), .-GL_PREFIX(ConvolutionParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyConvolutionFilter1D)
+       .type   GL_PREFIX(CopyConvolutionFilter1D), @function
+GL_PREFIX(CopyConvolutionFilter1D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2832(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2832(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2832(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2832(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyConvolutionFilter1D), .-GL_PREFIX(CopyConvolutionFilter1D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyConvolutionFilter2D)
+       .type   GL_PREFIX(CopyConvolutionFilter2D), @function
+GL_PREFIX(CopyConvolutionFilter2D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2840(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2840(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2840(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2840(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyConvolutionFilter2D), .-GL_PREFIX(CopyConvolutionFilter2D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetConvolutionFilter)
+       .type   GL_PREFIX(GetConvolutionFilter), @function
+GL_PREFIX(GetConvolutionFilter):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2848(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2848(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2848(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2848(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetConvolutionFilter), .-GL_PREFIX(GetConvolutionFilter)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetConvolutionParameterfv)
+       .type   GL_PREFIX(GetConvolutionParameterfv), @function
+GL_PREFIX(GetConvolutionParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2856(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2856(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2856(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2856(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetConvolutionParameterfv), .-GL_PREFIX(GetConvolutionParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetConvolutionParameteriv)
+       .type   GL_PREFIX(GetConvolutionParameteriv), @function
+GL_PREFIX(GetConvolutionParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2864(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2864(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2864(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2864(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetConvolutionParameteriv), .-GL_PREFIX(GetConvolutionParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetSeparableFilter)
+       .type   GL_PREFIX(GetSeparableFilter), @function
+GL_PREFIX(GetSeparableFilter):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2872(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2872(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2872(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2872(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetSeparableFilter), .-GL_PREFIX(GetSeparableFilter)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SeparableFilter2D)
+       .type   GL_PREFIX(SeparableFilter2D), @function
+GL_PREFIX(SeparableFilter2D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2880(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2880(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2880(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2880(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SeparableFilter2D), .-GL_PREFIX(SeparableFilter2D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetHistogram)
+       .type   GL_PREFIX(GetHistogram), @function
+GL_PREFIX(GetHistogram):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2888(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2888(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2888(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2888(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetHistogram), .-GL_PREFIX(GetHistogram)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetHistogramParameterfv)
+       .type   GL_PREFIX(GetHistogramParameterfv), @function
+GL_PREFIX(GetHistogramParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2896(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2896(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2896(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2896(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetHistogramParameterfv), .-GL_PREFIX(GetHistogramParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetHistogramParameteriv)
+       .type   GL_PREFIX(GetHistogramParameteriv), @function
+GL_PREFIX(GetHistogramParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2904(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2904(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2904(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2904(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetHistogramParameteriv), .-GL_PREFIX(GetHistogramParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMinmax)
+       .type   GL_PREFIX(GetMinmax), @function
+GL_PREFIX(GetMinmax):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2912(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2912(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2912(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2912(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMinmax), .-GL_PREFIX(GetMinmax)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMinmaxParameterfv)
+       .type   GL_PREFIX(GetMinmaxParameterfv), @function
+GL_PREFIX(GetMinmaxParameterfv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2920(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2920(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2920(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2920(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMinmaxParameterfv), .-GL_PREFIX(GetMinmaxParameterfv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetMinmaxParameteriv)
+       .type   GL_PREFIX(GetMinmaxParameteriv), @function
+GL_PREFIX(GetMinmaxParameteriv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2928(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2928(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2928(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2928(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetMinmaxParameteriv), .-GL_PREFIX(GetMinmaxParameteriv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Histogram)
+       .type   GL_PREFIX(Histogram), @function
+GL_PREFIX(Histogram):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2936(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2936(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2936(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2936(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Histogram), .-GL_PREFIX(Histogram)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Minmax)
+       .type   GL_PREFIX(Minmax), @function
+GL_PREFIX(Minmax):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2944(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2944(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2944(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2944(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Minmax), .-GL_PREFIX(Minmax)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ResetHistogram)
+       .type   GL_PREFIX(ResetHistogram), @function
+GL_PREFIX(ResetHistogram):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2952(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2952(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2952(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2952(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ResetHistogram), .-GL_PREFIX(ResetHistogram)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ResetMinmax)
+       .type   GL_PREFIX(ResetMinmax), @function
+GL_PREFIX(ResetMinmax):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2960(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2960(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2960(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2960(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ResetMinmax), .-GL_PREFIX(ResetMinmax)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexImage3D)
+       .type   GL_PREFIX(TexImage3D), @function
+GL_PREFIX(TexImage3D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2968(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2968(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2968(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2968(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexImage3D), .-GL_PREFIX(TexImage3D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexSubImage3D)
+       .type   GL_PREFIX(TexSubImage3D), @function
+GL_PREFIX(TexSubImage3D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2976(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2976(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2976(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2976(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexSubImage3D), .-GL_PREFIX(TexSubImage3D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyTexSubImage3D)
+       .type   GL_PREFIX(CopyTexSubImage3D), @function
+GL_PREFIX(CopyTexSubImage3D):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2984(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2984(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2984(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    2984(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyTexSubImage3D), .-GL_PREFIX(CopyTexSubImage3D)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ActiveTextureARB)
+       .type   GL_PREFIX(ActiveTextureARB), @function
+GL_PREFIX(ActiveTextureARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    2992(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    2992(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    2992(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    2992(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ActiveTextureARB), .-GL_PREFIX(ActiveTextureARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClientActiveTextureARB)
+       .type   GL_PREFIX(ClientActiveTextureARB), @function
+GL_PREFIX(ClientActiveTextureARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3000(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3000(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3000(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3000(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClientActiveTextureARB), .-GL_PREFIX(ClientActiveTextureARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1dARB)
+       .type   GL_PREFIX(MultiTexCoord1dARB), @function
+GL_PREFIX(MultiTexCoord1dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3008(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3008(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3008(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3008(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1dARB), .-GL_PREFIX(MultiTexCoord1dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1dvARB)
+       .type   GL_PREFIX(MultiTexCoord1dvARB), @function
+GL_PREFIX(MultiTexCoord1dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3016(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3016(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3016(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3016(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1dvARB), .-GL_PREFIX(MultiTexCoord1dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1fARB)
+       .type   GL_PREFIX(MultiTexCoord1fARB), @function
+GL_PREFIX(MultiTexCoord1fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3024(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3024(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3024(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3024(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1fARB), .-GL_PREFIX(MultiTexCoord1fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1fvARB)
+       .type   GL_PREFIX(MultiTexCoord1fvARB), @function
+GL_PREFIX(MultiTexCoord1fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3032(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3032(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3032(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3032(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1fvARB), .-GL_PREFIX(MultiTexCoord1fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1iARB)
+       .type   GL_PREFIX(MultiTexCoord1iARB), @function
+GL_PREFIX(MultiTexCoord1iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3040(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3040(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3040(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3040(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1iARB), .-GL_PREFIX(MultiTexCoord1iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1ivARB)
+       .type   GL_PREFIX(MultiTexCoord1ivARB), @function
+GL_PREFIX(MultiTexCoord1ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3048(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3048(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3048(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3048(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1ivARB), .-GL_PREFIX(MultiTexCoord1ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1sARB)
+       .type   GL_PREFIX(MultiTexCoord1sARB), @function
+GL_PREFIX(MultiTexCoord1sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3056(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3056(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3056(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3056(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1sARB), .-GL_PREFIX(MultiTexCoord1sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord1svARB)
+       .type   GL_PREFIX(MultiTexCoord1svARB), @function
+GL_PREFIX(MultiTexCoord1svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3064(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3064(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3064(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3064(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord1svARB), .-GL_PREFIX(MultiTexCoord1svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2dARB)
+       .type   GL_PREFIX(MultiTexCoord2dARB), @function
+GL_PREFIX(MultiTexCoord2dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3072(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3072(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3072(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3072(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2dARB), .-GL_PREFIX(MultiTexCoord2dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2dvARB)
+       .type   GL_PREFIX(MultiTexCoord2dvARB), @function
+GL_PREFIX(MultiTexCoord2dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3080(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3080(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3080(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3080(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2dvARB), .-GL_PREFIX(MultiTexCoord2dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2fARB)
+       .type   GL_PREFIX(MultiTexCoord2fARB), @function
+GL_PREFIX(MultiTexCoord2fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3088(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3088(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3088(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3088(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2fARB), .-GL_PREFIX(MultiTexCoord2fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2fvARB)
+       .type   GL_PREFIX(MultiTexCoord2fvARB), @function
+GL_PREFIX(MultiTexCoord2fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3096(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3096(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3096(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3096(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2fvARB), .-GL_PREFIX(MultiTexCoord2fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2iARB)
+       .type   GL_PREFIX(MultiTexCoord2iARB), @function
+GL_PREFIX(MultiTexCoord2iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3104(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3104(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3104(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3104(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2iARB), .-GL_PREFIX(MultiTexCoord2iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2ivARB)
+       .type   GL_PREFIX(MultiTexCoord2ivARB), @function
+GL_PREFIX(MultiTexCoord2ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3112(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3112(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3112(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3112(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2ivARB), .-GL_PREFIX(MultiTexCoord2ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2sARB)
+       .type   GL_PREFIX(MultiTexCoord2sARB), @function
+GL_PREFIX(MultiTexCoord2sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3120(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3120(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3120(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3120(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2sARB), .-GL_PREFIX(MultiTexCoord2sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord2svARB)
+       .type   GL_PREFIX(MultiTexCoord2svARB), @function
+GL_PREFIX(MultiTexCoord2svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3128(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3128(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3128(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3128(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord2svARB), .-GL_PREFIX(MultiTexCoord2svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3dARB)
+       .type   GL_PREFIX(MultiTexCoord3dARB), @function
+GL_PREFIX(MultiTexCoord3dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3136(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3136(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3136(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3136(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3dARB), .-GL_PREFIX(MultiTexCoord3dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3dvARB)
+       .type   GL_PREFIX(MultiTexCoord3dvARB), @function
+GL_PREFIX(MultiTexCoord3dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3144(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3144(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3144(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3144(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3dvARB), .-GL_PREFIX(MultiTexCoord3dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3fARB)
+       .type   GL_PREFIX(MultiTexCoord3fARB), @function
+GL_PREFIX(MultiTexCoord3fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3152(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3152(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3152(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3152(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3fARB), .-GL_PREFIX(MultiTexCoord3fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3fvARB)
+       .type   GL_PREFIX(MultiTexCoord3fvARB), @function
+GL_PREFIX(MultiTexCoord3fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3160(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3160(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3160(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3160(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3fvARB), .-GL_PREFIX(MultiTexCoord3fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3iARB)
+       .type   GL_PREFIX(MultiTexCoord3iARB), @function
+GL_PREFIX(MultiTexCoord3iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3168(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3168(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3168(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3168(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3iARB), .-GL_PREFIX(MultiTexCoord3iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3ivARB)
+       .type   GL_PREFIX(MultiTexCoord3ivARB), @function
+GL_PREFIX(MultiTexCoord3ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3176(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3176(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3176(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3176(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3ivARB), .-GL_PREFIX(MultiTexCoord3ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3sARB)
+       .type   GL_PREFIX(MultiTexCoord3sARB), @function
+GL_PREFIX(MultiTexCoord3sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3184(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3184(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3184(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3184(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3sARB), .-GL_PREFIX(MultiTexCoord3sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord3svARB)
+       .type   GL_PREFIX(MultiTexCoord3svARB), @function
+GL_PREFIX(MultiTexCoord3svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3192(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3192(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3192(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3192(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord3svARB), .-GL_PREFIX(MultiTexCoord3svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4dARB)
+       .type   GL_PREFIX(MultiTexCoord4dARB), @function
+GL_PREFIX(MultiTexCoord4dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3200(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3200(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3200(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _glapi_get_dispatch
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3200(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4dARB), .-GL_PREFIX(MultiTexCoord4dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4dvARB)
+       .type   GL_PREFIX(MultiTexCoord4dvARB), @function
+GL_PREFIX(MultiTexCoord4dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3208(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3208(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3208(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3208(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4dvARB), .-GL_PREFIX(MultiTexCoord4dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4fARB)
+       .type   GL_PREFIX(MultiTexCoord4fARB), @function
+GL_PREFIX(MultiTexCoord4fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3216(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3216(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3216(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _glapi_get_dispatch
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3216(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4fARB), .-GL_PREFIX(MultiTexCoord4fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4fvARB)
+       .type   GL_PREFIX(MultiTexCoord4fvARB), @function
+GL_PREFIX(MultiTexCoord4fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3224(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3224(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3224(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3224(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4fvARB), .-GL_PREFIX(MultiTexCoord4fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4iARB)
+       .type   GL_PREFIX(MultiTexCoord4iARB), @function
+GL_PREFIX(MultiTexCoord4iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3232(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3232(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3232(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3232(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4iARB), .-GL_PREFIX(MultiTexCoord4iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4ivARB)
+       .type   GL_PREFIX(MultiTexCoord4ivARB), @function
+GL_PREFIX(MultiTexCoord4ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3240(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3240(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3240(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3240(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4ivARB), .-GL_PREFIX(MultiTexCoord4ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4sARB)
+       .type   GL_PREFIX(MultiTexCoord4sARB), @function
+GL_PREFIX(MultiTexCoord4sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3248(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3248(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3248(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3248(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4sARB), .-GL_PREFIX(MultiTexCoord4sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiTexCoord4svARB)
+       .type   GL_PREFIX(MultiTexCoord4svARB), @function
+GL_PREFIX(MultiTexCoord4svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3256(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3256(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3256(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3256(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiTexCoord4svARB), .-GL_PREFIX(MultiTexCoord4svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AttachShader)
+       .type   GL_PREFIX(AttachShader), @function
+GL_PREFIX(AttachShader):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3264(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3264(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3264(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3264(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AttachShader), .-GL_PREFIX(AttachShader)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CreateProgram)
+       .type   GL_PREFIX(CreateProgram), @function
+GL_PREFIX(CreateProgram):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3272(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    3272(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3272(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    3272(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CreateProgram), .-GL_PREFIX(CreateProgram)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CreateShader)
+       .type   GL_PREFIX(CreateShader), @function
+GL_PREFIX(CreateShader):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3280(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3280(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3280(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3280(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CreateShader), .-GL_PREFIX(CreateShader)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteProgram)
+       .type   GL_PREFIX(DeleteProgram), @function
+GL_PREFIX(DeleteProgram):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3288(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3288(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3288(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3288(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteProgram), .-GL_PREFIX(DeleteProgram)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteShader)
+       .type   GL_PREFIX(DeleteShader), @function
+GL_PREFIX(DeleteShader):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3296(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3296(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3296(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3296(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteShader), .-GL_PREFIX(DeleteShader)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DetachShader)
+       .type   GL_PREFIX(DetachShader), @function
+GL_PREFIX(DetachShader):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3304(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3304(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3304(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3304(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DetachShader), .-GL_PREFIX(DetachShader)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetAttachedShaders)
+       .type   GL_PREFIX(GetAttachedShaders), @function
+GL_PREFIX(GetAttachedShaders):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3312(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3312(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3312(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3312(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetAttachedShaders), .-GL_PREFIX(GetAttachedShaders)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramInfoLog)
+       .type   GL_PREFIX(GetProgramInfoLog), @function
+GL_PREFIX(GetProgramInfoLog):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3320(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3320(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3320(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3320(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramInfoLog), .-GL_PREFIX(GetProgramInfoLog)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramiv)
+       .type   GL_PREFIX(GetProgramiv), @function
+GL_PREFIX(GetProgramiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3328(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3328(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3328(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3328(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramiv), .-GL_PREFIX(GetProgramiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetShaderInfoLog)
+       .type   GL_PREFIX(GetShaderInfoLog), @function
+GL_PREFIX(GetShaderInfoLog):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3336(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3336(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3336(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3336(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetShaderInfoLog), .-GL_PREFIX(GetShaderInfoLog)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetShaderiv)
+       .type   GL_PREFIX(GetShaderiv), @function
+GL_PREFIX(GetShaderiv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3344(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3344(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3344(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3344(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetShaderiv), .-GL_PREFIX(GetShaderiv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsProgram)
+       .type   GL_PREFIX(IsProgram), @function
+GL_PREFIX(IsProgram):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3352(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3352(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3352(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3352(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsProgram), .-GL_PREFIX(IsProgram)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsShader)
+       .type   GL_PREFIX(IsShader), @function
+GL_PREFIX(IsShader):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3360(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3360(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3360(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3360(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsShader), .-GL_PREFIX(IsShader)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(StencilFuncSeparate)
+       .type   GL_PREFIX(StencilFuncSeparate), @function
+GL_PREFIX(StencilFuncSeparate):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3368(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3368(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3368(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3368(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(StencilFuncSeparate), .-GL_PREFIX(StencilFuncSeparate)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(StencilMaskSeparate)
+       .type   GL_PREFIX(StencilMaskSeparate), @function
+GL_PREFIX(StencilMaskSeparate):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3376(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3376(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3376(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3376(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(StencilMaskSeparate), .-GL_PREFIX(StencilMaskSeparate)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(StencilOpSeparate)
+       .type   GL_PREFIX(StencilOpSeparate), @function
+GL_PREFIX(StencilOpSeparate):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3384(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3384(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3384(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3384(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(StencilOpSeparate), .-GL_PREFIX(StencilOpSeparate)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix2x3fv)
+       .type   GL_PREFIX(UniformMatrix2x3fv), @function
+GL_PREFIX(UniformMatrix2x3fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3392(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3392(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3392(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3392(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix2x3fv), .-GL_PREFIX(UniformMatrix2x3fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix2x4fv)
+       .type   GL_PREFIX(UniformMatrix2x4fv), @function
+GL_PREFIX(UniformMatrix2x4fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3400(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3400(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3400(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3400(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix2x4fv), .-GL_PREFIX(UniformMatrix2x4fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix3x2fv)
+       .type   GL_PREFIX(UniformMatrix3x2fv), @function
+GL_PREFIX(UniformMatrix3x2fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3408(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3408(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3408(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3408(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix3x2fv), .-GL_PREFIX(UniformMatrix3x2fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix3x4fv)
+       .type   GL_PREFIX(UniformMatrix3x4fv), @function
+GL_PREFIX(UniformMatrix3x4fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3416(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3416(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3416(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3416(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix3x4fv), .-GL_PREFIX(UniformMatrix3x4fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix4x2fv)
+       .type   GL_PREFIX(UniformMatrix4x2fv), @function
+GL_PREFIX(UniformMatrix4x2fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3424(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3424(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3424(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3424(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix4x2fv), .-GL_PREFIX(UniformMatrix4x2fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix4x3fv)
+       .type   GL_PREFIX(UniformMatrix4x3fv), @function
+GL_PREFIX(UniformMatrix4x3fv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3432(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3432(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3432(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3432(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix4x3fv), .-GL_PREFIX(UniformMatrix4x3fv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawArraysInstanced)
+       .type   GL_PREFIX(DrawArraysInstanced), @function
+GL_PREFIX(DrawArraysInstanced):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3440(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3440(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3440(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3440(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawArraysInstanced), .-GL_PREFIX(DrawArraysInstanced)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawElementsInstanced)
+       .type   GL_PREFIX(DrawElementsInstanced), @function
+GL_PREFIX(DrawElementsInstanced):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3448(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3448(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3448(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3448(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawElementsInstanced), .-GL_PREFIX(DrawElementsInstanced)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LoadTransposeMatrixdARB)
+       .type   GL_PREFIX(LoadTransposeMatrixdARB), @function
+GL_PREFIX(LoadTransposeMatrixdARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3456(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3456(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3456(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3456(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LoadTransposeMatrixdARB), .-GL_PREFIX(LoadTransposeMatrixdARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LoadTransposeMatrixfARB)
+       .type   GL_PREFIX(LoadTransposeMatrixfARB), @function
+GL_PREFIX(LoadTransposeMatrixfARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3464(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3464(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3464(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3464(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LoadTransposeMatrixfARB), .-GL_PREFIX(LoadTransposeMatrixfARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultTransposeMatrixdARB)
+       .type   GL_PREFIX(MultTransposeMatrixdARB), @function
+GL_PREFIX(MultTransposeMatrixdARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3472(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3472(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3472(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3472(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultTransposeMatrixdARB), .-GL_PREFIX(MultTransposeMatrixdARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultTransposeMatrixfARB)
+       .type   GL_PREFIX(MultTransposeMatrixfARB), @function
+GL_PREFIX(MultTransposeMatrixfARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3480(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3480(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3480(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3480(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultTransposeMatrixfARB), .-GL_PREFIX(MultTransposeMatrixfARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SampleCoverageARB)
+       .type   GL_PREFIX(SampleCoverageARB), @function
+GL_PREFIX(SampleCoverageARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3488(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3488(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3488(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3488(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SampleCoverageARB), .-GL_PREFIX(SampleCoverageARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CompressedTexImage1DARB)
+       .type   GL_PREFIX(CompressedTexImage1DARB), @function
+GL_PREFIX(CompressedTexImage1DARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3496(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3496(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3496(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3496(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CompressedTexImage1DARB), .-GL_PREFIX(CompressedTexImage1DARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CompressedTexImage2DARB)
+       .type   GL_PREFIX(CompressedTexImage2DARB), @function
+GL_PREFIX(CompressedTexImage2DARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3504(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3504(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3504(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3504(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CompressedTexImage2DARB), .-GL_PREFIX(CompressedTexImage2DARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CompressedTexImage3DARB)
+       .type   GL_PREFIX(CompressedTexImage3DARB), @function
+GL_PREFIX(CompressedTexImage3DARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3512(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3512(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3512(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3512(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CompressedTexImage3DARB), .-GL_PREFIX(CompressedTexImage3DARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CompressedTexSubImage1DARB)
+       .type   GL_PREFIX(CompressedTexSubImage1DARB), @function
+GL_PREFIX(CompressedTexSubImage1DARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3520(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3520(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3520(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3520(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CompressedTexSubImage1DARB), .-GL_PREFIX(CompressedTexSubImage1DARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CompressedTexSubImage2DARB)
+       .type   GL_PREFIX(CompressedTexSubImage2DARB), @function
+GL_PREFIX(CompressedTexSubImage2DARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3528(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3528(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3528(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3528(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CompressedTexSubImage2DARB), .-GL_PREFIX(CompressedTexSubImage2DARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CompressedTexSubImage3DARB)
+       .type   GL_PREFIX(CompressedTexSubImage3DARB), @function
+GL_PREFIX(CompressedTexSubImage3DARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3536(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3536(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3536(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3536(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CompressedTexSubImage3DARB), .-GL_PREFIX(CompressedTexSubImage3DARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetCompressedTexImageARB)
+       .type   GL_PREFIX(GetCompressedTexImageARB), @function
+GL_PREFIX(GetCompressedTexImageARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3544(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3544(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3544(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3544(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetCompressedTexImageARB), .-GL_PREFIX(GetCompressedTexImageARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DisableVertexAttribArrayARB)
+       .type   GL_PREFIX(DisableVertexAttribArrayARB), @function
+GL_PREFIX(DisableVertexAttribArrayARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3552(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3552(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3552(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3552(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DisableVertexAttribArrayARB), .-GL_PREFIX(DisableVertexAttribArrayARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EnableVertexAttribArrayARB)
+       .type   GL_PREFIX(EnableVertexAttribArrayARB), @function
+GL_PREFIX(EnableVertexAttribArrayARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3560(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    3560(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3560(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    3560(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EnableVertexAttribArrayARB), .-GL_PREFIX(EnableVertexAttribArrayARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramEnvParameterdvARB)
+       .type   GL_PREFIX(GetProgramEnvParameterdvARB), @function
+GL_PREFIX(GetProgramEnvParameterdvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3568(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3568(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3568(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3568(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramEnvParameterdvARB), .-GL_PREFIX(GetProgramEnvParameterdvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramEnvParameterfvARB)
+       .type   GL_PREFIX(GetProgramEnvParameterfvARB), @function
+GL_PREFIX(GetProgramEnvParameterfvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3576(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3576(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3576(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3576(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramEnvParameterfvARB), .-GL_PREFIX(GetProgramEnvParameterfvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramLocalParameterdvARB)
+       .type   GL_PREFIX(GetProgramLocalParameterdvARB), @function
+GL_PREFIX(GetProgramLocalParameterdvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3584(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3584(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3584(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3584(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramLocalParameterdvARB), .-GL_PREFIX(GetProgramLocalParameterdvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramLocalParameterfvARB)
+       .type   GL_PREFIX(GetProgramLocalParameterfvARB), @function
+GL_PREFIX(GetProgramLocalParameterfvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3592(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3592(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3592(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3592(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramLocalParameterfvARB), .-GL_PREFIX(GetProgramLocalParameterfvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramStringARB)
+       .type   GL_PREFIX(GetProgramStringARB), @function
+GL_PREFIX(GetProgramStringARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3600(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3600(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3600(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3600(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramStringARB), .-GL_PREFIX(GetProgramStringARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramivARB)
+       .type   GL_PREFIX(GetProgramivARB), @function
+GL_PREFIX(GetProgramivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3608(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3608(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3608(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3608(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramivARB), .-GL_PREFIX(GetProgramivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetVertexAttribdvARB)
+       .type   GL_PREFIX(GetVertexAttribdvARB), @function
+GL_PREFIX(GetVertexAttribdvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3616(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3616(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3616(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3616(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetVertexAttribdvARB), .-GL_PREFIX(GetVertexAttribdvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetVertexAttribfvARB)
+       .type   GL_PREFIX(GetVertexAttribfvARB), @function
+GL_PREFIX(GetVertexAttribfvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3624(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3624(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3624(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3624(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetVertexAttribfvARB), .-GL_PREFIX(GetVertexAttribfvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetVertexAttribivARB)
+       .type   GL_PREFIX(GetVertexAttribivARB), @function
+GL_PREFIX(GetVertexAttribivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3632(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3632(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3632(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3632(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetVertexAttribivARB), .-GL_PREFIX(GetVertexAttribivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramEnvParameter4dARB)
+       .type   GL_PREFIX(ProgramEnvParameter4dARB), @function
+GL_PREFIX(ProgramEnvParameter4dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3640(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3640(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3640(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3640(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramEnvParameter4dARB), .-GL_PREFIX(ProgramEnvParameter4dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramEnvParameter4dvARB)
+       .type   GL_PREFIX(ProgramEnvParameter4dvARB), @function
+GL_PREFIX(ProgramEnvParameter4dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3648(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3648(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3648(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3648(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramEnvParameter4dvARB), .-GL_PREFIX(ProgramEnvParameter4dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramEnvParameter4fARB)
+       .type   GL_PREFIX(ProgramEnvParameter4fARB), @function
+GL_PREFIX(ProgramEnvParameter4fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3656(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3656(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3656(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3656(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramEnvParameter4fARB), .-GL_PREFIX(ProgramEnvParameter4fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramEnvParameter4fvARB)
+       .type   GL_PREFIX(ProgramEnvParameter4fvARB), @function
+GL_PREFIX(ProgramEnvParameter4fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3664(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3664(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3664(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3664(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramEnvParameter4fvARB), .-GL_PREFIX(ProgramEnvParameter4fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramLocalParameter4dARB)
+       .type   GL_PREFIX(ProgramLocalParameter4dARB), @function
+GL_PREFIX(ProgramLocalParameter4dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3672(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3672(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3672(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3672(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramLocalParameter4dARB), .-GL_PREFIX(ProgramLocalParameter4dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramLocalParameter4dvARB)
+       .type   GL_PREFIX(ProgramLocalParameter4dvARB), @function
+GL_PREFIX(ProgramLocalParameter4dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3680(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3680(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3680(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3680(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramLocalParameter4dvARB), .-GL_PREFIX(ProgramLocalParameter4dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramLocalParameter4fARB)
+       .type   GL_PREFIX(ProgramLocalParameter4fARB), @function
+GL_PREFIX(ProgramLocalParameter4fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3688(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3688(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3688(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %xmm0, 16(%rsp)
+       movq    %xmm1, 24(%rsp)
+       movq    %xmm2, 32(%rsp)
+       movq    %xmm3, 40(%rsp)
+       call    _glapi_get_dispatch
+       movq    40(%rsp), %xmm3
+       movq    32(%rsp), %xmm2
+       movq    24(%rsp), %xmm1
+       movq    16(%rsp), %xmm0
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    3688(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramLocalParameter4fARB), .-GL_PREFIX(ProgramLocalParameter4fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramLocalParameter4fvARB)
+       .type   GL_PREFIX(ProgramLocalParameter4fvARB), @function
+GL_PREFIX(ProgramLocalParameter4fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3696(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3696(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3696(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3696(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramLocalParameter4fvARB), .-GL_PREFIX(ProgramLocalParameter4fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramStringARB)
+       .type   GL_PREFIX(ProgramStringARB), @function
+GL_PREFIX(ProgramStringARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3704(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3704(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3704(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3704(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramStringARB), .-GL_PREFIX(ProgramStringARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1dARB)
+       .type   GL_PREFIX(VertexAttrib1dARB), @function
+GL_PREFIX(VertexAttrib1dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3712(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3712(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3712(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3712(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1dARB), .-GL_PREFIX(VertexAttrib1dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1dvARB)
+       .type   GL_PREFIX(VertexAttrib1dvARB), @function
+GL_PREFIX(VertexAttrib1dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3720(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3720(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3720(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3720(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1dvARB), .-GL_PREFIX(VertexAttrib1dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1fARB)
+       .type   GL_PREFIX(VertexAttrib1fARB), @function
+GL_PREFIX(VertexAttrib1fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3728(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3728(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3728(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3728(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1fARB), .-GL_PREFIX(VertexAttrib1fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1fvARB)
+       .type   GL_PREFIX(VertexAttrib1fvARB), @function
+GL_PREFIX(VertexAttrib1fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3736(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3736(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3736(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3736(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1fvARB), .-GL_PREFIX(VertexAttrib1fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1sARB)
+       .type   GL_PREFIX(VertexAttrib1sARB), @function
+GL_PREFIX(VertexAttrib1sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3744(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3744(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3744(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3744(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1sARB), .-GL_PREFIX(VertexAttrib1sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1svARB)
+       .type   GL_PREFIX(VertexAttrib1svARB), @function
+GL_PREFIX(VertexAttrib1svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3752(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3752(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3752(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3752(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1svARB), .-GL_PREFIX(VertexAttrib1svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2dARB)
+       .type   GL_PREFIX(VertexAttrib2dARB), @function
+GL_PREFIX(VertexAttrib2dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3760(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3760(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3760(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3760(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2dARB), .-GL_PREFIX(VertexAttrib2dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2dvARB)
+       .type   GL_PREFIX(VertexAttrib2dvARB), @function
+GL_PREFIX(VertexAttrib2dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3768(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3768(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3768(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3768(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2dvARB), .-GL_PREFIX(VertexAttrib2dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2fARB)
+       .type   GL_PREFIX(VertexAttrib2fARB), @function
+GL_PREFIX(VertexAttrib2fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3776(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3776(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3776(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    3776(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2fARB), .-GL_PREFIX(VertexAttrib2fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2fvARB)
+       .type   GL_PREFIX(VertexAttrib2fvARB), @function
+GL_PREFIX(VertexAttrib2fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3784(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3784(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3784(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3784(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2fvARB), .-GL_PREFIX(VertexAttrib2fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2sARB)
+       .type   GL_PREFIX(VertexAttrib2sARB), @function
+GL_PREFIX(VertexAttrib2sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3792(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3792(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3792(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3792(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2sARB), .-GL_PREFIX(VertexAttrib2sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2svARB)
+       .type   GL_PREFIX(VertexAttrib2svARB), @function
+GL_PREFIX(VertexAttrib2svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3800(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3800(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3800(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3800(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2svARB), .-GL_PREFIX(VertexAttrib2svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3dARB)
+       .type   GL_PREFIX(VertexAttrib3dARB), @function
+GL_PREFIX(VertexAttrib3dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3808(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3808(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3808(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3808(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3dARB), .-GL_PREFIX(VertexAttrib3dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3dvARB)
+       .type   GL_PREFIX(VertexAttrib3dvARB), @function
+GL_PREFIX(VertexAttrib3dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3816(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3816(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3816(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3816(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3dvARB), .-GL_PREFIX(VertexAttrib3dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3fARB)
+       .type   GL_PREFIX(VertexAttrib3fARB), @function
+GL_PREFIX(VertexAttrib3fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3824(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3824(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3824(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3824(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3fARB), .-GL_PREFIX(VertexAttrib3fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3fvARB)
+       .type   GL_PREFIX(VertexAttrib3fvARB), @function
+GL_PREFIX(VertexAttrib3fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3832(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3832(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3832(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3832(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3fvARB), .-GL_PREFIX(VertexAttrib3fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3sARB)
+       .type   GL_PREFIX(VertexAttrib3sARB), @function
+GL_PREFIX(VertexAttrib3sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3840(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3840(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3840(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3840(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3sARB), .-GL_PREFIX(VertexAttrib3sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3svARB)
+       .type   GL_PREFIX(VertexAttrib3svARB), @function
+GL_PREFIX(VertexAttrib3svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3848(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3848(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3848(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3848(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3svARB), .-GL_PREFIX(VertexAttrib3svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4NbvARB)
+       .type   GL_PREFIX(VertexAttrib4NbvARB), @function
+GL_PREFIX(VertexAttrib4NbvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3856(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3856(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3856(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3856(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4NbvARB), .-GL_PREFIX(VertexAttrib4NbvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4NivARB)
+       .type   GL_PREFIX(VertexAttrib4NivARB), @function
+GL_PREFIX(VertexAttrib4NivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3864(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3864(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3864(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3864(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4NivARB), .-GL_PREFIX(VertexAttrib4NivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4NsvARB)
+       .type   GL_PREFIX(VertexAttrib4NsvARB), @function
+GL_PREFIX(VertexAttrib4NsvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3872(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3872(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3872(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3872(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4NsvARB), .-GL_PREFIX(VertexAttrib4NsvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4NubARB)
+       .type   GL_PREFIX(VertexAttrib4NubARB), @function
+GL_PREFIX(VertexAttrib4NubARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3880(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3880(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3880(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3880(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4NubARB), .-GL_PREFIX(VertexAttrib4NubARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4NubvARB)
+       .type   GL_PREFIX(VertexAttrib4NubvARB), @function
+GL_PREFIX(VertexAttrib4NubvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3888(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3888(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3888(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3888(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4NubvARB), .-GL_PREFIX(VertexAttrib4NubvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4NuivARB)
+       .type   GL_PREFIX(VertexAttrib4NuivARB), @function
+GL_PREFIX(VertexAttrib4NuivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3896(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3896(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3896(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3896(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4NuivARB), .-GL_PREFIX(VertexAttrib4NuivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4NusvARB)
+       .type   GL_PREFIX(VertexAttrib4NusvARB), @function
+GL_PREFIX(VertexAttrib4NusvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3904(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3904(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3904(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3904(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4NusvARB), .-GL_PREFIX(VertexAttrib4NusvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4bvARB)
+       .type   GL_PREFIX(VertexAttrib4bvARB), @function
+GL_PREFIX(VertexAttrib4bvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3912(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3912(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3912(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3912(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4bvARB), .-GL_PREFIX(VertexAttrib4bvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4dARB)
+       .type   GL_PREFIX(VertexAttrib4dARB), @function
+GL_PREFIX(VertexAttrib4dARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3920(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3920(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3920(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _glapi_get_dispatch
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3920(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4dARB), .-GL_PREFIX(VertexAttrib4dARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4dvARB)
+       .type   GL_PREFIX(VertexAttrib4dvARB), @function
+GL_PREFIX(VertexAttrib4dvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3928(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3928(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3928(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3928(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4dvARB), .-GL_PREFIX(VertexAttrib4dvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4fARB)
+       .type   GL_PREFIX(VertexAttrib4fARB), @function
+GL_PREFIX(VertexAttrib4fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3936(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3936(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3936(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _glapi_get_dispatch
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    3936(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4fARB), .-GL_PREFIX(VertexAttrib4fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4fvARB)
+       .type   GL_PREFIX(VertexAttrib4fvARB), @function
+GL_PREFIX(VertexAttrib4fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3944(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3944(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3944(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3944(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4fvARB), .-GL_PREFIX(VertexAttrib4fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4ivARB)
+       .type   GL_PREFIX(VertexAttrib4ivARB), @function
+GL_PREFIX(VertexAttrib4ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3952(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3952(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3952(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3952(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4ivARB), .-GL_PREFIX(VertexAttrib4ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4sARB)
+       .type   GL_PREFIX(VertexAttrib4sARB), @function
+GL_PREFIX(VertexAttrib4sARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3960(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3960(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3960(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    3960(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4sARB), .-GL_PREFIX(VertexAttrib4sARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4svARB)
+       .type   GL_PREFIX(VertexAttrib4svARB), @function
+GL_PREFIX(VertexAttrib4svARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3968(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3968(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3968(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3968(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4svARB), .-GL_PREFIX(VertexAttrib4svARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4ubvARB)
+       .type   GL_PREFIX(VertexAttrib4ubvARB), @function
+GL_PREFIX(VertexAttrib4ubvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3976(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3976(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3976(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3976(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4ubvARB), .-GL_PREFIX(VertexAttrib4ubvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4uivARB)
+       .type   GL_PREFIX(VertexAttrib4uivARB), @function
+GL_PREFIX(VertexAttrib4uivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3984(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3984(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3984(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3984(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4uivARB), .-GL_PREFIX(VertexAttrib4uivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4usvARB)
+       .type   GL_PREFIX(VertexAttrib4usvARB), @function
+GL_PREFIX(VertexAttrib4usvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    3992(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3992(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    3992(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    3992(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4usvARB), .-GL_PREFIX(VertexAttrib4usvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribPointerARB)
+       .type   GL_PREFIX(VertexAttribPointerARB), @function
+GL_PREFIX(VertexAttribPointerARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4000(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4000(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4000(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4000(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribPointerARB), .-GL_PREFIX(VertexAttribPointerARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindBufferARB)
+       .type   GL_PREFIX(BindBufferARB), @function
+GL_PREFIX(BindBufferARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4008(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4008(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4008(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4008(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindBufferARB), .-GL_PREFIX(BindBufferARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BufferDataARB)
+       .type   GL_PREFIX(BufferDataARB), @function
+GL_PREFIX(BufferDataARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4016(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4016(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4016(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4016(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BufferDataARB), .-GL_PREFIX(BufferDataARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BufferSubDataARB)
+       .type   GL_PREFIX(BufferSubDataARB), @function
+GL_PREFIX(BufferSubDataARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4024(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4024(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4024(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4024(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BufferSubDataARB), .-GL_PREFIX(BufferSubDataARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteBuffersARB)
+       .type   GL_PREFIX(DeleteBuffersARB), @function
+GL_PREFIX(DeleteBuffersARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4032(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4032(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4032(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4032(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteBuffersARB), .-GL_PREFIX(DeleteBuffersARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenBuffersARB)
+       .type   GL_PREFIX(GenBuffersARB), @function
+GL_PREFIX(GenBuffersARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4040(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4040(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4040(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4040(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenBuffersARB), .-GL_PREFIX(GenBuffersARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetBufferParameterivARB)
+       .type   GL_PREFIX(GetBufferParameterivARB), @function
+GL_PREFIX(GetBufferParameterivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4048(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4048(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4048(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4048(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetBufferParameterivARB), .-GL_PREFIX(GetBufferParameterivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetBufferPointervARB)
+       .type   GL_PREFIX(GetBufferPointervARB), @function
+GL_PREFIX(GetBufferPointervARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4056(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4056(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4056(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4056(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetBufferPointervARB), .-GL_PREFIX(GetBufferPointervARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetBufferSubDataARB)
+       .type   GL_PREFIX(GetBufferSubDataARB), @function
+GL_PREFIX(GetBufferSubDataARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4064(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4064(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4064(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4064(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetBufferSubDataARB), .-GL_PREFIX(GetBufferSubDataARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsBufferARB)
+       .type   GL_PREFIX(IsBufferARB), @function
+GL_PREFIX(IsBufferARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4072(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4072(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4072(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4072(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsBufferARB), .-GL_PREFIX(IsBufferARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MapBufferARB)
+       .type   GL_PREFIX(MapBufferARB), @function
+GL_PREFIX(MapBufferARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4080(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4080(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4080(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4080(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MapBufferARB), .-GL_PREFIX(MapBufferARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UnmapBufferARB)
+       .type   GL_PREFIX(UnmapBufferARB), @function
+GL_PREFIX(UnmapBufferARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4088(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4088(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4088(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4088(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UnmapBufferARB), .-GL_PREFIX(UnmapBufferARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BeginQueryARB)
+       .type   GL_PREFIX(BeginQueryARB), @function
+GL_PREFIX(BeginQueryARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4096(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4096(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4096(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4096(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BeginQueryARB), .-GL_PREFIX(BeginQueryARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteQueriesARB)
+       .type   GL_PREFIX(DeleteQueriesARB), @function
+GL_PREFIX(DeleteQueriesARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4104(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4104(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4104(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4104(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteQueriesARB), .-GL_PREFIX(DeleteQueriesARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EndQueryARB)
+       .type   GL_PREFIX(EndQueryARB), @function
+GL_PREFIX(EndQueryARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4112(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4112(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4112(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4112(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EndQueryARB), .-GL_PREFIX(EndQueryARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenQueriesARB)
+       .type   GL_PREFIX(GenQueriesARB), @function
+GL_PREFIX(GenQueriesARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4120(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4120(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4120(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4120(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenQueriesARB), .-GL_PREFIX(GenQueriesARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetQueryObjectivARB)
+       .type   GL_PREFIX(GetQueryObjectivARB), @function
+GL_PREFIX(GetQueryObjectivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4128(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4128(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4128(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4128(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetQueryObjectivARB), .-GL_PREFIX(GetQueryObjectivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetQueryObjectuivARB)
+       .type   GL_PREFIX(GetQueryObjectuivARB), @function
+GL_PREFIX(GetQueryObjectuivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4136(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4136(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4136(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4136(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetQueryObjectuivARB), .-GL_PREFIX(GetQueryObjectuivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetQueryivARB)
+       .type   GL_PREFIX(GetQueryivARB), @function
+GL_PREFIX(GetQueryivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4144(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4144(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4144(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4144(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetQueryivARB), .-GL_PREFIX(GetQueryivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsQueryARB)
+       .type   GL_PREFIX(IsQueryARB), @function
+GL_PREFIX(IsQueryARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4152(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4152(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4152(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4152(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsQueryARB), .-GL_PREFIX(IsQueryARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AttachObjectARB)
+       .type   GL_PREFIX(AttachObjectARB), @function
+GL_PREFIX(AttachObjectARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4160(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4160(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4160(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4160(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AttachObjectARB), .-GL_PREFIX(AttachObjectARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CompileShaderARB)
+       .type   GL_PREFIX(CompileShaderARB), @function
+GL_PREFIX(CompileShaderARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4168(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4168(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4168(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4168(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CompileShaderARB), .-GL_PREFIX(CompileShaderARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CreateProgramObjectARB)
+       .type   GL_PREFIX(CreateProgramObjectARB), @function
+GL_PREFIX(CreateProgramObjectARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4176(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    4176(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4176(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    4176(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CreateProgramObjectARB), .-GL_PREFIX(CreateProgramObjectARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CreateShaderObjectARB)
+       .type   GL_PREFIX(CreateShaderObjectARB), @function
+GL_PREFIX(CreateShaderObjectARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4184(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4184(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4184(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4184(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CreateShaderObjectARB), .-GL_PREFIX(CreateShaderObjectARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteObjectARB)
+       .type   GL_PREFIX(DeleteObjectARB), @function
+GL_PREFIX(DeleteObjectARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4192(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4192(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4192(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4192(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteObjectARB), .-GL_PREFIX(DeleteObjectARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DetachObjectARB)
+       .type   GL_PREFIX(DetachObjectARB), @function
+GL_PREFIX(DetachObjectARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4200(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4200(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4200(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4200(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DetachObjectARB), .-GL_PREFIX(DetachObjectARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetActiveUniformARB)
+       .type   GL_PREFIX(GetActiveUniformARB), @function
+GL_PREFIX(GetActiveUniformARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4208(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4208(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4208(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4208(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetActiveUniformARB), .-GL_PREFIX(GetActiveUniformARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetAttachedObjectsARB)
+       .type   GL_PREFIX(GetAttachedObjectsARB), @function
+GL_PREFIX(GetAttachedObjectsARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4216(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4216(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4216(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4216(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetAttachedObjectsARB), .-GL_PREFIX(GetAttachedObjectsARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetHandleARB)
+       .type   GL_PREFIX(GetHandleARB), @function
+GL_PREFIX(GetHandleARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4224(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4224(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4224(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4224(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetHandleARB), .-GL_PREFIX(GetHandleARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetInfoLogARB)
+       .type   GL_PREFIX(GetInfoLogARB), @function
+GL_PREFIX(GetInfoLogARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4232(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4232(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4232(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4232(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetInfoLogARB), .-GL_PREFIX(GetInfoLogARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetObjectParameterfvARB)
+       .type   GL_PREFIX(GetObjectParameterfvARB), @function
+GL_PREFIX(GetObjectParameterfvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4240(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4240(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4240(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4240(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetObjectParameterfvARB), .-GL_PREFIX(GetObjectParameterfvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetObjectParameterivARB)
+       .type   GL_PREFIX(GetObjectParameterivARB), @function
+GL_PREFIX(GetObjectParameterivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4248(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4248(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4248(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4248(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetObjectParameterivARB), .-GL_PREFIX(GetObjectParameterivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetShaderSourceARB)
+       .type   GL_PREFIX(GetShaderSourceARB), @function
+GL_PREFIX(GetShaderSourceARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4256(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4256(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4256(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4256(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetShaderSourceARB), .-GL_PREFIX(GetShaderSourceARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetUniformLocationARB)
+       .type   GL_PREFIX(GetUniformLocationARB), @function
+GL_PREFIX(GetUniformLocationARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4264(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4264(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4264(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4264(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetUniformLocationARB), .-GL_PREFIX(GetUniformLocationARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetUniformfvARB)
+       .type   GL_PREFIX(GetUniformfvARB), @function
+GL_PREFIX(GetUniformfvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4272(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4272(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4272(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4272(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetUniformfvARB), .-GL_PREFIX(GetUniformfvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetUniformivARB)
+       .type   GL_PREFIX(GetUniformivARB), @function
+GL_PREFIX(GetUniformivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4280(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4280(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4280(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4280(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetUniformivARB), .-GL_PREFIX(GetUniformivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LinkProgramARB)
+       .type   GL_PREFIX(LinkProgramARB), @function
+GL_PREFIX(LinkProgramARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4288(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4288(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4288(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4288(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LinkProgramARB), .-GL_PREFIX(LinkProgramARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ShaderSourceARB)
+       .type   GL_PREFIX(ShaderSourceARB), @function
+GL_PREFIX(ShaderSourceARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4296(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4296(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4296(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4296(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ShaderSourceARB), .-GL_PREFIX(ShaderSourceARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform1fARB)
+       .type   GL_PREFIX(Uniform1fARB), @function
+GL_PREFIX(Uniform1fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4304(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4304(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4304(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4304(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform1fARB), .-GL_PREFIX(Uniform1fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform1fvARB)
+       .type   GL_PREFIX(Uniform1fvARB), @function
+GL_PREFIX(Uniform1fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4312(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4312(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4312(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4312(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform1fvARB), .-GL_PREFIX(Uniform1fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform1iARB)
+       .type   GL_PREFIX(Uniform1iARB), @function
+GL_PREFIX(Uniform1iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4320(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4320(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4320(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4320(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform1iARB), .-GL_PREFIX(Uniform1iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform1ivARB)
+       .type   GL_PREFIX(Uniform1ivARB), @function
+GL_PREFIX(Uniform1ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4328(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4328(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4328(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4328(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform1ivARB), .-GL_PREFIX(Uniform1ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform2fARB)
+       .type   GL_PREFIX(Uniform2fARB), @function
+GL_PREFIX(Uniform2fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4336(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4336(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4336(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4336(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform2fARB), .-GL_PREFIX(Uniform2fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform2fvARB)
+       .type   GL_PREFIX(Uniform2fvARB), @function
+GL_PREFIX(Uniform2fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4344(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4344(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4344(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4344(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform2fvARB), .-GL_PREFIX(Uniform2fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform2iARB)
+       .type   GL_PREFIX(Uniform2iARB), @function
+GL_PREFIX(Uniform2iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4352(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4352(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4352(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4352(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform2iARB), .-GL_PREFIX(Uniform2iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform2ivARB)
+       .type   GL_PREFIX(Uniform2ivARB), @function
+GL_PREFIX(Uniform2ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4360(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4360(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4360(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4360(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform2ivARB), .-GL_PREFIX(Uniform2ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform3fARB)
+       .type   GL_PREFIX(Uniform3fARB), @function
+GL_PREFIX(Uniform3fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4368(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    4368(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4368(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    4368(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform3fARB), .-GL_PREFIX(Uniform3fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform3fvARB)
+       .type   GL_PREFIX(Uniform3fvARB), @function
+GL_PREFIX(Uniform3fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4376(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4376(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4376(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4376(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform3fvARB), .-GL_PREFIX(Uniform3fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform3iARB)
+       .type   GL_PREFIX(Uniform3iARB), @function
+GL_PREFIX(Uniform3iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4384(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4384(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4384(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4384(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform3iARB), .-GL_PREFIX(Uniform3iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform3ivARB)
+       .type   GL_PREFIX(Uniform3ivARB), @function
+GL_PREFIX(Uniform3ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4392(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4392(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4392(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4392(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform3ivARB), .-GL_PREFIX(Uniform3ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform4fARB)
+       .type   GL_PREFIX(Uniform4fARB), @function
+GL_PREFIX(Uniform4fARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4400(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    4400(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4400(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _glapi_get_dispatch
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    4400(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform4fARB), .-GL_PREFIX(Uniform4fARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform4fvARB)
+       .type   GL_PREFIX(Uniform4fvARB), @function
+GL_PREFIX(Uniform4fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4408(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4408(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4408(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4408(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform4fvARB), .-GL_PREFIX(Uniform4fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform4iARB)
+       .type   GL_PREFIX(Uniform4iARB), @function
+GL_PREFIX(Uniform4iARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4416(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4416(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4416(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4416(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform4iARB), .-GL_PREFIX(Uniform4iARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(Uniform4ivARB)
+       .type   GL_PREFIX(Uniform4ivARB), @function
+GL_PREFIX(Uniform4ivARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4424(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4424(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4424(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4424(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(Uniform4ivARB), .-GL_PREFIX(Uniform4ivARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix2fvARB)
+       .type   GL_PREFIX(UniformMatrix2fvARB), @function
+GL_PREFIX(UniformMatrix2fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4432(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4432(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4432(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4432(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix2fvARB), .-GL_PREFIX(UniformMatrix2fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix3fvARB)
+       .type   GL_PREFIX(UniformMatrix3fvARB), @function
+GL_PREFIX(UniformMatrix3fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4440(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4440(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4440(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4440(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix3fvARB), .-GL_PREFIX(UniformMatrix3fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UniformMatrix4fvARB)
+       .type   GL_PREFIX(UniformMatrix4fvARB), @function
+GL_PREFIX(UniformMatrix4fvARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4448(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4448(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4448(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4448(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UniformMatrix4fvARB), .-GL_PREFIX(UniformMatrix4fvARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UseProgramObjectARB)
+       .type   GL_PREFIX(UseProgramObjectARB), @function
+GL_PREFIX(UseProgramObjectARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4456(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4456(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4456(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4456(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UseProgramObjectARB), .-GL_PREFIX(UseProgramObjectARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ValidateProgramARB)
+       .type   GL_PREFIX(ValidateProgramARB), @function
+GL_PREFIX(ValidateProgramARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4464(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4464(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4464(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4464(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ValidateProgramARB), .-GL_PREFIX(ValidateProgramARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindAttribLocationARB)
+       .type   GL_PREFIX(BindAttribLocationARB), @function
+GL_PREFIX(BindAttribLocationARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4472(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4472(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4472(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4472(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindAttribLocationARB), .-GL_PREFIX(BindAttribLocationARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetActiveAttribARB)
+       .type   GL_PREFIX(GetActiveAttribARB), @function
+GL_PREFIX(GetActiveAttribARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4480(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4480(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4480(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4480(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetActiveAttribARB), .-GL_PREFIX(GetActiveAttribARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetAttribLocationARB)
+       .type   GL_PREFIX(GetAttribLocationARB), @function
+GL_PREFIX(GetAttribLocationARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4488(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4488(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4488(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4488(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetAttribLocationARB), .-GL_PREFIX(GetAttribLocationARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawBuffersARB)
+       .type   GL_PREFIX(DrawBuffersARB), @function
+GL_PREFIX(DrawBuffersARB):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4496(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4496(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4496(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4496(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawBuffersARB), .-GL_PREFIX(DrawBuffersARB)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RenderbufferStorageMultisample)
+       .type   GL_PREFIX(RenderbufferStorageMultisample), @function
+GL_PREFIX(RenderbufferStorageMultisample):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4504(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4504(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4504(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4504(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RenderbufferStorageMultisample), .-GL_PREFIX(RenderbufferStorageMultisample)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FlushMappedBufferRange)
+       .type   GL_PREFIX(FlushMappedBufferRange), @function
+GL_PREFIX(FlushMappedBufferRange):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4512(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4512(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4512(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4512(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FlushMappedBufferRange), .-GL_PREFIX(FlushMappedBufferRange)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MapBufferRange)
+       .type   GL_PREFIX(MapBufferRange), @function
+GL_PREFIX(MapBufferRange):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4520(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4520(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4520(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4520(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MapBufferRange), .-GL_PREFIX(MapBufferRange)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindVertexArray)
+       .type   GL_PREFIX(BindVertexArray), @function
+GL_PREFIX(BindVertexArray):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4528(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4528(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4528(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4528(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindVertexArray), .-GL_PREFIX(BindVertexArray)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenVertexArrays)
+       .type   GL_PREFIX(GenVertexArrays), @function
+GL_PREFIX(GenVertexArrays):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4536(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4536(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4536(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4536(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenVertexArrays), .-GL_PREFIX(GenVertexArrays)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CopyBufferSubData)
+       .type   GL_PREFIX(CopyBufferSubData), @function
+GL_PREFIX(CopyBufferSubData):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4544(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4544(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4544(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4544(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CopyBufferSubData), .-GL_PREFIX(CopyBufferSubData)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ClientWaitSync)
+       .type   GL_PREFIX(ClientWaitSync), @function
+GL_PREFIX(ClientWaitSync):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4552(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4552(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4552(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4552(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ClientWaitSync), .-GL_PREFIX(ClientWaitSync)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteSync)
+       .type   GL_PREFIX(DeleteSync), @function
+GL_PREFIX(DeleteSync):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4560(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4560(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4560(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4560(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteSync), .-GL_PREFIX(DeleteSync)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FenceSync)
+       .type   GL_PREFIX(FenceSync), @function
+GL_PREFIX(FenceSync):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4568(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4568(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4568(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4568(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FenceSync), .-GL_PREFIX(FenceSync)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetInteger64v)
+       .type   GL_PREFIX(GetInteger64v), @function
+GL_PREFIX(GetInteger64v):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4576(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4576(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4576(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4576(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetInteger64v), .-GL_PREFIX(GetInteger64v)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetSynciv)
+       .type   GL_PREFIX(GetSynciv), @function
+GL_PREFIX(GetSynciv):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4584(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4584(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4584(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4584(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetSynciv), .-GL_PREFIX(GetSynciv)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsSync)
+       .type   GL_PREFIX(IsSync), @function
+GL_PREFIX(IsSync):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4592(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4592(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4592(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4592(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsSync), .-GL_PREFIX(IsSync)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WaitSync)
+       .type   GL_PREFIX(WaitSync), @function
+GL_PREFIX(WaitSync):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4600(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4600(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4600(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4600(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WaitSync), .-GL_PREFIX(WaitSync)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawElementsBaseVertex)
+       .type   GL_PREFIX(DrawElementsBaseVertex), @function
+GL_PREFIX(DrawElementsBaseVertex):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4608(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4608(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4608(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4608(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawElementsBaseVertex), .-GL_PREFIX(DrawElementsBaseVertex)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DrawRangeElementsBaseVertex)
+       .type   GL_PREFIX(DrawRangeElementsBaseVertex), @function
+GL_PREFIX(DrawRangeElementsBaseVertex):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4616(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4616(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4616(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4616(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DrawRangeElementsBaseVertex), .-GL_PREFIX(DrawRangeElementsBaseVertex)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiDrawElementsBaseVertex)
+       .type   GL_PREFIX(MultiDrawElementsBaseVertex), @function
+GL_PREFIX(MultiDrawElementsBaseVertex):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4624(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4624(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4624(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4624(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiDrawElementsBaseVertex), .-GL_PREFIX(MultiDrawElementsBaseVertex)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PolygonOffsetEXT)
+       .type   GL_PREFIX(PolygonOffsetEXT), @function
+GL_PREFIX(PolygonOffsetEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4632(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    4632(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4632(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    4632(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PolygonOffsetEXT), .-GL_PREFIX(PolygonOffsetEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_580)
+       .type   GL_PREFIX(_dispatch_stub_580), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_580))
+GL_PREFIX(_dispatch_stub_580):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4640(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4640(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4640(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4640(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_580), .-GL_PREFIX(_dispatch_stub_580)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_581)
+       .type   GL_PREFIX(_dispatch_stub_581), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_581))
+GL_PREFIX(_dispatch_stub_581):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4648(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4648(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4648(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4648(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_581), .-GL_PREFIX(_dispatch_stub_581)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_582)
+       .type   GL_PREFIX(_dispatch_stub_582), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_582))
+GL_PREFIX(_dispatch_stub_582):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4656(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4656(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4656(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4656(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_582), .-GL_PREFIX(_dispatch_stub_582)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_583)
+       .type   GL_PREFIX(_dispatch_stub_583), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_583))
+GL_PREFIX(_dispatch_stub_583):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4664(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4664(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4664(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4664(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_583), .-GL_PREFIX(_dispatch_stub_583)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_584)
+       .type   GL_PREFIX(_dispatch_stub_584), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_584))
+GL_PREFIX(_dispatch_stub_584):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4672(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4672(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4672(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4672(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_584), .-GL_PREFIX(_dispatch_stub_584)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_585)
+       .type   GL_PREFIX(_dispatch_stub_585), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_585))
+GL_PREFIX(_dispatch_stub_585):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4680(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4680(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4680(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4680(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_585), .-GL_PREFIX(_dispatch_stub_585)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_586)
+       .type   GL_PREFIX(_dispatch_stub_586), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_586))
+GL_PREFIX(_dispatch_stub_586):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4688(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4688(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4688(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4688(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_586), .-GL_PREFIX(_dispatch_stub_586)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_587)
+       .type   GL_PREFIX(_dispatch_stub_587), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_587))
+GL_PREFIX(_dispatch_stub_587):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4696(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4696(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4696(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4696(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_587), .-GL_PREFIX(_dispatch_stub_587)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorPointerEXT)
+       .type   GL_PREFIX(ColorPointerEXT), @function
+GL_PREFIX(ColorPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4704(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4704(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4704(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4704(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorPointerEXT), .-GL_PREFIX(ColorPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EdgeFlagPointerEXT)
+       .type   GL_PREFIX(EdgeFlagPointerEXT), @function
+GL_PREFIX(EdgeFlagPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4712(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4712(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4712(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4712(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EdgeFlagPointerEXT), .-GL_PREFIX(EdgeFlagPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IndexPointerEXT)
+       .type   GL_PREFIX(IndexPointerEXT), @function
+GL_PREFIX(IndexPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4720(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4720(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4720(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4720(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IndexPointerEXT), .-GL_PREFIX(IndexPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(NormalPointerEXT)
+       .type   GL_PREFIX(NormalPointerEXT), @function
+GL_PREFIX(NormalPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4728(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4728(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4728(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4728(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(NormalPointerEXT), .-GL_PREFIX(NormalPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexCoordPointerEXT)
+       .type   GL_PREFIX(TexCoordPointerEXT), @function
+GL_PREFIX(TexCoordPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4736(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4736(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4736(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4736(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexCoordPointerEXT), .-GL_PREFIX(TexCoordPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexPointerEXT)
+       .type   GL_PREFIX(VertexPointerEXT), @function
+GL_PREFIX(VertexPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4744(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4744(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4744(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4744(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexPointerEXT), .-GL_PREFIX(VertexPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PointParameterfEXT)
+       .type   GL_PREFIX(PointParameterfEXT), @function
+GL_PREFIX(PointParameterfEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4752(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4752(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4752(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    4752(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PointParameterfEXT), .-GL_PREFIX(PointParameterfEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PointParameterfvEXT)
+       .type   GL_PREFIX(PointParameterfvEXT), @function
+GL_PREFIX(PointParameterfvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4760(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4760(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4760(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4760(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PointParameterfvEXT), .-GL_PREFIX(PointParameterfvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LockArraysEXT)
+       .type   GL_PREFIX(LockArraysEXT), @function
+GL_PREFIX(LockArraysEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4768(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4768(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4768(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4768(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LockArraysEXT), .-GL_PREFIX(LockArraysEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(UnlockArraysEXT)
+       .type   GL_PREFIX(UnlockArraysEXT), @function
+GL_PREFIX(UnlockArraysEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4776(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    4776(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4776(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    4776(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(UnlockArraysEXT), .-GL_PREFIX(UnlockArraysEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_598)
+       .type   GL_PREFIX(_dispatch_stub_598), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_598))
+GL_PREFIX(_dispatch_stub_598):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4784(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4784(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4784(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4784(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_598), .-GL_PREFIX(_dispatch_stub_598)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_599)
+       .type   GL_PREFIX(_dispatch_stub_599), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_599))
+GL_PREFIX(_dispatch_stub_599):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4792(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4792(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4792(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    4792(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_599), .-GL_PREFIX(_dispatch_stub_599)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3bEXT)
+       .type   GL_PREFIX(SecondaryColor3bEXT), @function
+GL_PREFIX(SecondaryColor3bEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4800(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4800(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4800(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4800(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3bEXT), .-GL_PREFIX(SecondaryColor3bEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3bvEXT)
+       .type   GL_PREFIX(SecondaryColor3bvEXT), @function
+GL_PREFIX(SecondaryColor3bvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4808(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4808(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4808(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4808(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3bvEXT), .-GL_PREFIX(SecondaryColor3bvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3dEXT)
+       .type   GL_PREFIX(SecondaryColor3dEXT), @function
+GL_PREFIX(SecondaryColor3dEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4816(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    4816(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4816(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    4816(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3dEXT), .-GL_PREFIX(SecondaryColor3dEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3dvEXT)
+       .type   GL_PREFIX(SecondaryColor3dvEXT), @function
+GL_PREFIX(SecondaryColor3dvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4824(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4824(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4824(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4824(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3dvEXT), .-GL_PREFIX(SecondaryColor3dvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3fEXT)
+       .type   GL_PREFIX(SecondaryColor3fEXT), @function
+GL_PREFIX(SecondaryColor3fEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4832(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    4832(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4832(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    4832(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3fEXT), .-GL_PREFIX(SecondaryColor3fEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3fvEXT)
+       .type   GL_PREFIX(SecondaryColor3fvEXT), @function
+GL_PREFIX(SecondaryColor3fvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4840(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4840(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4840(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4840(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3fvEXT), .-GL_PREFIX(SecondaryColor3fvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3iEXT)
+       .type   GL_PREFIX(SecondaryColor3iEXT), @function
+GL_PREFIX(SecondaryColor3iEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4848(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4848(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4848(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4848(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3iEXT), .-GL_PREFIX(SecondaryColor3iEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3ivEXT)
+       .type   GL_PREFIX(SecondaryColor3ivEXT), @function
+GL_PREFIX(SecondaryColor3ivEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4856(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4856(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4856(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4856(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3ivEXT), .-GL_PREFIX(SecondaryColor3ivEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3sEXT)
+       .type   GL_PREFIX(SecondaryColor3sEXT), @function
+GL_PREFIX(SecondaryColor3sEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4864(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4864(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4864(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4864(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3sEXT), .-GL_PREFIX(SecondaryColor3sEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3svEXT)
+       .type   GL_PREFIX(SecondaryColor3svEXT), @function
+GL_PREFIX(SecondaryColor3svEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4872(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4872(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4872(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4872(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3svEXT), .-GL_PREFIX(SecondaryColor3svEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3ubEXT)
+       .type   GL_PREFIX(SecondaryColor3ubEXT), @function
+GL_PREFIX(SecondaryColor3ubEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4880(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4880(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4880(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4880(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3ubEXT), .-GL_PREFIX(SecondaryColor3ubEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3ubvEXT)
+       .type   GL_PREFIX(SecondaryColor3ubvEXT), @function
+GL_PREFIX(SecondaryColor3ubvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4888(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4888(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4888(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4888(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3ubvEXT), .-GL_PREFIX(SecondaryColor3ubvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3uiEXT)
+       .type   GL_PREFIX(SecondaryColor3uiEXT), @function
+GL_PREFIX(SecondaryColor3uiEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4896(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4896(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4896(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4896(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3uiEXT), .-GL_PREFIX(SecondaryColor3uiEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3uivEXT)
+       .type   GL_PREFIX(SecondaryColor3uivEXT), @function
+GL_PREFIX(SecondaryColor3uivEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4904(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4904(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4904(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4904(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3uivEXT), .-GL_PREFIX(SecondaryColor3uivEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3usEXT)
+       .type   GL_PREFIX(SecondaryColor3usEXT), @function
+GL_PREFIX(SecondaryColor3usEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4912(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4912(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4912(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4912(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3usEXT), .-GL_PREFIX(SecondaryColor3usEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColor3usvEXT)
+       .type   GL_PREFIX(SecondaryColor3usvEXT), @function
+GL_PREFIX(SecondaryColor3usvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4920(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4920(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4920(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4920(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColor3usvEXT), .-GL_PREFIX(SecondaryColor3usvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SecondaryColorPointerEXT)
+       .type   GL_PREFIX(SecondaryColorPointerEXT), @function
+GL_PREFIX(SecondaryColorPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4928(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4928(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4928(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4928(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SecondaryColorPointerEXT), .-GL_PREFIX(SecondaryColorPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiDrawArraysEXT)
+       .type   GL_PREFIX(MultiDrawArraysEXT), @function
+GL_PREFIX(MultiDrawArraysEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4936(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4936(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4936(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4936(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiDrawArraysEXT), .-GL_PREFIX(MultiDrawArraysEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(MultiDrawElementsEXT)
+       .type   GL_PREFIX(MultiDrawElementsEXT), @function
+GL_PREFIX(MultiDrawElementsEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4944(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4944(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4944(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4944(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(MultiDrawElementsEXT), .-GL_PREFIX(MultiDrawElementsEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FogCoordPointerEXT)
+       .type   GL_PREFIX(FogCoordPointerEXT), @function
+GL_PREFIX(FogCoordPointerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4952(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4952(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4952(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    4952(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FogCoordPointerEXT), .-GL_PREFIX(FogCoordPointerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FogCoorddEXT)
+       .type   GL_PREFIX(FogCoorddEXT), @function
+GL_PREFIX(FogCoorddEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4960(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    4960(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4960(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    4960(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FogCoorddEXT), .-GL_PREFIX(FogCoorddEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FogCoorddvEXT)
+       .type   GL_PREFIX(FogCoorddvEXT), @function
+GL_PREFIX(FogCoorddvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4968(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4968(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4968(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4968(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FogCoorddvEXT), .-GL_PREFIX(FogCoorddvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FogCoordfEXT)
+       .type   GL_PREFIX(FogCoordfEXT), @function
+GL_PREFIX(FogCoordfEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4976(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    4976(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4976(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $8, %rsp
+       movq    %xmm0, (%rsp)
+       call    _glapi_get_dispatch
+       movq    (%rsp), %xmm0
+       addq    $8, %rsp
+       movq    4976(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FogCoordfEXT), .-GL_PREFIX(FogCoordfEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FogCoordfvEXT)
+       .type   GL_PREFIX(FogCoordfvEXT), @function
+GL_PREFIX(FogCoordfvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4984(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4984(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4984(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4984(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FogCoordfvEXT), .-GL_PREFIX(FogCoordfvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_624)
+       .type   GL_PREFIX(_dispatch_stub_624), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_624))
+GL_PREFIX(_dispatch_stub_624):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    4992(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    4992(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    4992(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    4992(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_624), .-GL_PREFIX(_dispatch_stub_624)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BlendFuncSeparateEXT)
+       .type   GL_PREFIX(BlendFuncSeparateEXT), @function
+GL_PREFIX(BlendFuncSeparateEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5000(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5000(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5000(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5000(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BlendFuncSeparateEXT), .-GL_PREFIX(BlendFuncSeparateEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FlushVertexArrayRangeNV)
+       .type   GL_PREFIX(FlushVertexArrayRangeNV), @function
+GL_PREFIX(FlushVertexArrayRangeNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5008(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    5008(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5008(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    5008(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FlushVertexArrayRangeNV), .-GL_PREFIX(FlushVertexArrayRangeNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexArrayRangeNV)
+       .type   GL_PREFIX(VertexArrayRangeNV), @function
+GL_PREFIX(VertexArrayRangeNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5016(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5016(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5016(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5016(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexArrayRangeNV), .-GL_PREFIX(VertexArrayRangeNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CombinerInputNV)
+       .type   GL_PREFIX(CombinerInputNV), @function
+GL_PREFIX(CombinerInputNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5024(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5024(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5024(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5024(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CombinerInputNV), .-GL_PREFIX(CombinerInputNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CombinerOutputNV)
+       .type   GL_PREFIX(CombinerOutputNV), @function
+GL_PREFIX(CombinerOutputNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5032(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5032(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5032(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5032(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CombinerOutputNV), .-GL_PREFIX(CombinerOutputNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CombinerParameterfNV)
+       .type   GL_PREFIX(CombinerParameterfNV), @function
+GL_PREFIX(CombinerParameterfNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5040(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5040(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5040(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5040(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CombinerParameterfNV), .-GL_PREFIX(CombinerParameterfNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CombinerParameterfvNV)
+       .type   GL_PREFIX(CombinerParameterfvNV), @function
+GL_PREFIX(CombinerParameterfvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5048(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5048(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5048(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5048(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CombinerParameterfvNV), .-GL_PREFIX(CombinerParameterfvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CombinerParameteriNV)
+       .type   GL_PREFIX(CombinerParameteriNV), @function
+GL_PREFIX(CombinerParameteriNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5056(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5056(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5056(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5056(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CombinerParameteriNV), .-GL_PREFIX(CombinerParameteriNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CombinerParameterivNV)
+       .type   GL_PREFIX(CombinerParameterivNV), @function
+GL_PREFIX(CombinerParameterivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5064(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5064(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5064(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5064(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CombinerParameterivNV), .-GL_PREFIX(CombinerParameterivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FinalCombinerInputNV)
+       .type   GL_PREFIX(FinalCombinerInputNV), @function
+GL_PREFIX(FinalCombinerInputNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5072(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5072(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5072(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5072(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FinalCombinerInputNV), .-GL_PREFIX(FinalCombinerInputNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetCombinerInputParameterfvNV)
+       .type   GL_PREFIX(GetCombinerInputParameterfvNV), @function
+GL_PREFIX(GetCombinerInputParameterfvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5080(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5080(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5080(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5080(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetCombinerInputParameterfvNV), .-GL_PREFIX(GetCombinerInputParameterfvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetCombinerInputParameterivNV)
+       .type   GL_PREFIX(GetCombinerInputParameterivNV), @function
+GL_PREFIX(GetCombinerInputParameterivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5088(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5088(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5088(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5088(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetCombinerInputParameterivNV), .-GL_PREFIX(GetCombinerInputParameterivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetCombinerOutputParameterfvNV)
+       .type   GL_PREFIX(GetCombinerOutputParameterfvNV), @function
+GL_PREFIX(GetCombinerOutputParameterfvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5096(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5096(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5096(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5096(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetCombinerOutputParameterfvNV), .-GL_PREFIX(GetCombinerOutputParameterfvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetCombinerOutputParameterivNV)
+       .type   GL_PREFIX(GetCombinerOutputParameterivNV), @function
+GL_PREFIX(GetCombinerOutputParameterivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5104(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5104(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5104(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5104(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetCombinerOutputParameterivNV), .-GL_PREFIX(GetCombinerOutputParameterivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetFinalCombinerInputParameterfvNV)
+       .type   GL_PREFIX(GetFinalCombinerInputParameterfvNV), @function
+GL_PREFIX(GetFinalCombinerInputParameterfvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5112(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5112(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5112(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5112(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetFinalCombinerInputParameterfvNV), .-GL_PREFIX(GetFinalCombinerInputParameterfvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetFinalCombinerInputParameterivNV)
+       .type   GL_PREFIX(GetFinalCombinerInputParameterivNV), @function
+GL_PREFIX(GetFinalCombinerInputParameterivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5120(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5120(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5120(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5120(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetFinalCombinerInputParameterivNV), .-GL_PREFIX(GetFinalCombinerInputParameterivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ResizeBuffersMESA)
+       .type   GL_PREFIX(ResizeBuffersMESA), @function
+GL_PREFIX(ResizeBuffersMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5128(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    5128(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5128(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    5128(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ResizeBuffersMESA), .-GL_PREFIX(ResizeBuffersMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2dMESA)
+       .type   GL_PREFIX(WindowPos2dMESA), @function
+GL_PREFIX(WindowPos2dMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5136(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5136(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5136(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5136(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2dMESA), .-GL_PREFIX(WindowPos2dMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2dvMESA)
+       .type   GL_PREFIX(WindowPos2dvMESA), @function
+GL_PREFIX(WindowPos2dvMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5144(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5144(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5144(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5144(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2dvMESA), .-GL_PREFIX(WindowPos2dvMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2fMESA)
+       .type   GL_PREFIX(WindowPos2fMESA), @function
+GL_PREFIX(WindowPos2fMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5152(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5152(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5152(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5152(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2fMESA), .-GL_PREFIX(WindowPos2fMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2fvMESA)
+       .type   GL_PREFIX(WindowPos2fvMESA), @function
+GL_PREFIX(WindowPos2fvMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5160(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5160(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5160(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5160(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2fvMESA), .-GL_PREFIX(WindowPos2fvMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2iMESA)
+       .type   GL_PREFIX(WindowPos2iMESA), @function
+GL_PREFIX(WindowPos2iMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5168(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5168(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5168(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5168(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2iMESA), .-GL_PREFIX(WindowPos2iMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2ivMESA)
+       .type   GL_PREFIX(WindowPos2ivMESA), @function
+GL_PREFIX(WindowPos2ivMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5176(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5176(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5176(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5176(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2ivMESA), .-GL_PREFIX(WindowPos2ivMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2sMESA)
+       .type   GL_PREFIX(WindowPos2sMESA), @function
+GL_PREFIX(WindowPos2sMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5184(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5184(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5184(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5184(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2sMESA), .-GL_PREFIX(WindowPos2sMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos2svMESA)
+       .type   GL_PREFIX(WindowPos2svMESA), @function
+GL_PREFIX(WindowPos2svMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5192(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5192(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5192(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5192(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos2svMESA), .-GL_PREFIX(WindowPos2svMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3dMESA)
+       .type   GL_PREFIX(WindowPos3dMESA), @function
+GL_PREFIX(WindowPos3dMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5200(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5200(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5200(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5200(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3dMESA), .-GL_PREFIX(WindowPos3dMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3dvMESA)
+       .type   GL_PREFIX(WindowPos3dvMESA), @function
+GL_PREFIX(WindowPos3dvMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5208(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5208(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5208(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5208(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3dvMESA), .-GL_PREFIX(WindowPos3dvMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3fMESA)
+       .type   GL_PREFIX(WindowPos3fMESA), @function
+GL_PREFIX(WindowPos3fMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5216(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5216(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5216(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $24, %rsp
+       movq    5216(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3fMESA), .-GL_PREFIX(WindowPos3fMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3fvMESA)
+       .type   GL_PREFIX(WindowPos3fvMESA), @function
+GL_PREFIX(WindowPos3fvMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5224(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5224(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5224(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5224(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3fvMESA), .-GL_PREFIX(WindowPos3fvMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3iMESA)
+       .type   GL_PREFIX(WindowPos3iMESA), @function
+GL_PREFIX(WindowPos3iMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5232(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5232(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5232(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5232(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3iMESA), .-GL_PREFIX(WindowPos3iMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3ivMESA)
+       .type   GL_PREFIX(WindowPos3ivMESA), @function
+GL_PREFIX(WindowPos3ivMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5240(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5240(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5240(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5240(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3ivMESA), .-GL_PREFIX(WindowPos3ivMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3sMESA)
+       .type   GL_PREFIX(WindowPos3sMESA), @function
+GL_PREFIX(WindowPos3sMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5248(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5248(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5248(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5248(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3sMESA), .-GL_PREFIX(WindowPos3sMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos3svMESA)
+       .type   GL_PREFIX(WindowPos3svMESA), @function
+GL_PREFIX(WindowPos3svMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5256(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5256(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5256(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5256(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos3svMESA), .-GL_PREFIX(WindowPos3svMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4dMESA)
+       .type   GL_PREFIX(WindowPos4dMESA), @function
+GL_PREFIX(WindowPos4dMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5264(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    5264(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5264(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    5264(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4dMESA), .-GL_PREFIX(WindowPos4dMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4dvMESA)
+       .type   GL_PREFIX(WindowPos4dvMESA), @function
+GL_PREFIX(WindowPos4dvMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5272(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5272(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5272(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5272(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4dvMESA), .-GL_PREFIX(WindowPos4dvMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4fMESA)
+       .type   GL_PREFIX(WindowPos4fMESA), @function
+GL_PREFIX(WindowPos4fMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5280(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    5280(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5280(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %xmm0, (%rsp)
+       movq    %xmm1, 8(%rsp)
+       movq    %xmm2, 16(%rsp)
+       movq    %xmm3, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm3
+       movq    16(%rsp), %xmm2
+       movq    8(%rsp), %xmm1
+       movq    (%rsp), %xmm0
+       addq    $40, %rsp
+       movq    5280(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4fMESA), .-GL_PREFIX(WindowPos4fMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4fvMESA)
+       .type   GL_PREFIX(WindowPos4fvMESA), @function
+GL_PREFIX(WindowPos4fvMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5288(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5288(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5288(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5288(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4fvMESA), .-GL_PREFIX(WindowPos4fvMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4iMESA)
+       .type   GL_PREFIX(WindowPos4iMESA), @function
+GL_PREFIX(WindowPos4iMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5296(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5296(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5296(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5296(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4iMESA), .-GL_PREFIX(WindowPos4iMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4ivMESA)
+       .type   GL_PREFIX(WindowPos4ivMESA), @function
+GL_PREFIX(WindowPos4ivMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5304(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5304(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5304(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5304(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4ivMESA), .-GL_PREFIX(WindowPos4ivMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4sMESA)
+       .type   GL_PREFIX(WindowPos4sMESA), @function
+GL_PREFIX(WindowPos4sMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5312(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5312(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5312(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5312(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4sMESA), .-GL_PREFIX(WindowPos4sMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(WindowPos4svMESA)
+       .type   GL_PREFIX(WindowPos4svMESA), @function
+GL_PREFIX(WindowPos4svMESA):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5320(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5320(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5320(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5320(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(WindowPos4svMESA), .-GL_PREFIX(WindowPos4svMESA)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_666)
+       .type   GL_PREFIX(_dispatch_stub_666), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_666))
+GL_PREFIX(_dispatch_stub_666):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5328(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5328(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5328(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5328(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_666), .-GL_PREFIX(_dispatch_stub_666)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_667)
+       .type   GL_PREFIX(_dispatch_stub_667), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_667))
+GL_PREFIX(_dispatch_stub_667):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5336(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5336(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5336(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5336(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_667), .-GL_PREFIX(_dispatch_stub_667)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_668)
+       .type   GL_PREFIX(_dispatch_stub_668), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_668))
+GL_PREFIX(_dispatch_stub_668):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5344(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5344(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5344(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5344(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_668), .-GL_PREFIX(_dispatch_stub_668)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_669)
+       .type   GL_PREFIX(_dispatch_stub_669), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_669))
+GL_PREFIX(_dispatch_stub_669):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5352(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5352(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5352(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5352(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_669), .-GL_PREFIX(_dispatch_stub_669)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_670)
+       .type   GL_PREFIX(_dispatch_stub_670), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_670))
+GL_PREFIX(_dispatch_stub_670):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5360(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5360(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5360(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5360(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_670), .-GL_PREFIX(_dispatch_stub_670)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_671)
+       .type   GL_PREFIX(_dispatch_stub_671), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_671))
+GL_PREFIX(_dispatch_stub_671):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5368(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5368(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5368(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5368(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_671), .-GL_PREFIX(_dispatch_stub_671)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_672)
+       .type   GL_PREFIX(_dispatch_stub_672), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_672))
+GL_PREFIX(_dispatch_stub_672):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5376(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5376(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5376(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5376(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_672), .-GL_PREFIX(_dispatch_stub_672)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_673)
+       .type   GL_PREFIX(_dispatch_stub_673), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_673))
+GL_PREFIX(_dispatch_stub_673):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5384(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5384(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5384(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5384(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_673), .-GL_PREFIX(_dispatch_stub_673)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_674)
+       .type   GL_PREFIX(_dispatch_stub_674), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_674))
+GL_PREFIX(_dispatch_stub_674):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5392(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5392(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5392(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5392(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_674), .-GL_PREFIX(_dispatch_stub_674)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AreProgramsResidentNV)
+       .type   GL_PREFIX(AreProgramsResidentNV), @function
+GL_PREFIX(AreProgramsResidentNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5400(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5400(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5400(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5400(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AreProgramsResidentNV), .-GL_PREFIX(AreProgramsResidentNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindProgramNV)
+       .type   GL_PREFIX(BindProgramNV), @function
+GL_PREFIX(BindProgramNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5408(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5408(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5408(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5408(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindProgramNV), .-GL_PREFIX(BindProgramNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteProgramsNV)
+       .type   GL_PREFIX(DeleteProgramsNV), @function
+GL_PREFIX(DeleteProgramsNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5416(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5416(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5416(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5416(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteProgramsNV), .-GL_PREFIX(DeleteProgramsNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ExecuteProgramNV)
+       .type   GL_PREFIX(ExecuteProgramNV), @function
+GL_PREFIX(ExecuteProgramNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5424(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5424(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5424(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5424(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ExecuteProgramNV), .-GL_PREFIX(ExecuteProgramNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenProgramsNV)
+       .type   GL_PREFIX(GenProgramsNV), @function
+GL_PREFIX(GenProgramsNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5432(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5432(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5432(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5432(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenProgramsNV), .-GL_PREFIX(GenProgramsNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramParameterdvNV)
+       .type   GL_PREFIX(GetProgramParameterdvNV), @function
+GL_PREFIX(GetProgramParameterdvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5440(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5440(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5440(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5440(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramParameterdvNV), .-GL_PREFIX(GetProgramParameterdvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramParameterfvNV)
+       .type   GL_PREFIX(GetProgramParameterfvNV), @function
+GL_PREFIX(GetProgramParameterfvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5448(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5448(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5448(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5448(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramParameterfvNV), .-GL_PREFIX(GetProgramParameterfvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramStringNV)
+       .type   GL_PREFIX(GetProgramStringNV), @function
+GL_PREFIX(GetProgramStringNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5456(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5456(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5456(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5456(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramStringNV), .-GL_PREFIX(GetProgramStringNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramivNV)
+       .type   GL_PREFIX(GetProgramivNV), @function
+GL_PREFIX(GetProgramivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5464(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5464(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5464(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5464(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramivNV), .-GL_PREFIX(GetProgramivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTrackMatrixivNV)
+       .type   GL_PREFIX(GetTrackMatrixivNV), @function
+GL_PREFIX(GetTrackMatrixivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5472(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5472(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5472(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5472(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTrackMatrixivNV), .-GL_PREFIX(GetTrackMatrixivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetVertexAttribPointervNV)
+       .type   GL_PREFIX(GetVertexAttribPointervNV), @function
+GL_PREFIX(GetVertexAttribPointervNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5480(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5480(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5480(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5480(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetVertexAttribPointervNV), .-GL_PREFIX(GetVertexAttribPointervNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetVertexAttribdvNV)
+       .type   GL_PREFIX(GetVertexAttribdvNV), @function
+GL_PREFIX(GetVertexAttribdvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5488(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5488(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5488(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5488(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetVertexAttribdvNV), .-GL_PREFIX(GetVertexAttribdvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetVertexAttribfvNV)
+       .type   GL_PREFIX(GetVertexAttribfvNV), @function
+GL_PREFIX(GetVertexAttribfvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5496(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5496(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5496(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5496(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetVertexAttribfvNV), .-GL_PREFIX(GetVertexAttribfvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetVertexAttribivNV)
+       .type   GL_PREFIX(GetVertexAttribivNV), @function
+GL_PREFIX(GetVertexAttribivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5504(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5504(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5504(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5504(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetVertexAttribivNV), .-GL_PREFIX(GetVertexAttribivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsProgramNV)
+       .type   GL_PREFIX(IsProgramNV), @function
+GL_PREFIX(IsProgramNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5512(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5512(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5512(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5512(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsProgramNV), .-GL_PREFIX(IsProgramNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(LoadProgramNV)
+       .type   GL_PREFIX(LoadProgramNV), @function
+GL_PREFIX(LoadProgramNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5520(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5520(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5520(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5520(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(LoadProgramNV), .-GL_PREFIX(LoadProgramNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramParameters4dvNV)
+       .type   GL_PREFIX(ProgramParameters4dvNV), @function
+GL_PREFIX(ProgramParameters4dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5528(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5528(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5528(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5528(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramParameters4dvNV), .-GL_PREFIX(ProgramParameters4dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramParameters4fvNV)
+       .type   GL_PREFIX(ProgramParameters4fvNV), @function
+GL_PREFIX(ProgramParameters4fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5536(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5536(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5536(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5536(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramParameters4fvNV), .-GL_PREFIX(ProgramParameters4fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RequestResidentProgramsNV)
+       .type   GL_PREFIX(RequestResidentProgramsNV), @function
+GL_PREFIX(RequestResidentProgramsNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5544(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5544(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5544(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5544(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RequestResidentProgramsNV), .-GL_PREFIX(RequestResidentProgramsNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TrackMatrixNV)
+       .type   GL_PREFIX(TrackMatrixNV), @function
+GL_PREFIX(TrackMatrixNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5552(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5552(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5552(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5552(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TrackMatrixNV), .-GL_PREFIX(TrackMatrixNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1dNV)
+       .type   GL_PREFIX(VertexAttrib1dNV), @function
+GL_PREFIX(VertexAttrib1dNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5560(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5560(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5560(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5560(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1dNV), .-GL_PREFIX(VertexAttrib1dNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1dvNV)
+       .type   GL_PREFIX(VertexAttrib1dvNV), @function
+GL_PREFIX(VertexAttrib1dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5568(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5568(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5568(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5568(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1dvNV), .-GL_PREFIX(VertexAttrib1dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1fNV)
+       .type   GL_PREFIX(VertexAttrib1fNV), @function
+GL_PREFIX(VertexAttrib1fNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5576(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5576(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5576(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       call    _glapi_get_dispatch
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5576(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1fNV), .-GL_PREFIX(VertexAttrib1fNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1fvNV)
+       .type   GL_PREFIX(VertexAttrib1fvNV), @function
+GL_PREFIX(VertexAttrib1fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5584(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5584(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5584(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5584(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1fvNV), .-GL_PREFIX(VertexAttrib1fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1sNV)
+       .type   GL_PREFIX(VertexAttrib1sNV), @function
+GL_PREFIX(VertexAttrib1sNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5592(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5592(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5592(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5592(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1sNV), .-GL_PREFIX(VertexAttrib1sNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib1svNV)
+       .type   GL_PREFIX(VertexAttrib1svNV), @function
+GL_PREFIX(VertexAttrib1svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5600(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5600(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5600(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5600(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib1svNV), .-GL_PREFIX(VertexAttrib1svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2dNV)
+       .type   GL_PREFIX(VertexAttrib2dNV), @function
+GL_PREFIX(VertexAttrib2dNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5608(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5608(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5608(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5608(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2dNV), .-GL_PREFIX(VertexAttrib2dNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2dvNV)
+       .type   GL_PREFIX(VertexAttrib2dvNV), @function
+GL_PREFIX(VertexAttrib2dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5616(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5616(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5616(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5616(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2dvNV), .-GL_PREFIX(VertexAttrib2dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2fNV)
+       .type   GL_PREFIX(VertexAttrib2fNV), @function
+GL_PREFIX(VertexAttrib2fNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5624(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5624(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5624(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $24, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       call    _glapi_get_dispatch
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $24, %rsp
+       movq    5624(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2fNV), .-GL_PREFIX(VertexAttrib2fNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2fvNV)
+       .type   GL_PREFIX(VertexAttrib2fvNV), @function
+GL_PREFIX(VertexAttrib2fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5632(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5632(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5632(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5632(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2fvNV), .-GL_PREFIX(VertexAttrib2fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2sNV)
+       .type   GL_PREFIX(VertexAttrib2sNV), @function
+GL_PREFIX(VertexAttrib2sNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5640(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5640(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5640(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5640(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2sNV), .-GL_PREFIX(VertexAttrib2sNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib2svNV)
+       .type   GL_PREFIX(VertexAttrib2svNV), @function
+GL_PREFIX(VertexAttrib2svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5648(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5648(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5648(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5648(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib2svNV), .-GL_PREFIX(VertexAttrib2svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3dNV)
+       .type   GL_PREFIX(VertexAttrib3dNV), @function
+GL_PREFIX(VertexAttrib3dNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5656(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5656(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5656(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5656(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3dNV), .-GL_PREFIX(VertexAttrib3dNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3dvNV)
+       .type   GL_PREFIX(VertexAttrib3dvNV), @function
+GL_PREFIX(VertexAttrib3dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5664(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5664(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5664(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5664(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3dvNV), .-GL_PREFIX(VertexAttrib3dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3fNV)
+       .type   GL_PREFIX(VertexAttrib3fNV), @function
+GL_PREFIX(VertexAttrib3fNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5672(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5672(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5672(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       call    _glapi_get_dispatch
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5672(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3fNV), .-GL_PREFIX(VertexAttrib3fNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3fvNV)
+       .type   GL_PREFIX(VertexAttrib3fvNV), @function
+GL_PREFIX(VertexAttrib3fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5680(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5680(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5680(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5680(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3fvNV), .-GL_PREFIX(VertexAttrib3fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3sNV)
+       .type   GL_PREFIX(VertexAttrib3sNV), @function
+GL_PREFIX(VertexAttrib3sNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5688(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5688(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5688(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5688(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3sNV), .-GL_PREFIX(VertexAttrib3sNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib3svNV)
+       .type   GL_PREFIX(VertexAttrib3svNV), @function
+GL_PREFIX(VertexAttrib3svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5696(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5696(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5696(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5696(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib3svNV), .-GL_PREFIX(VertexAttrib3svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4dNV)
+       .type   GL_PREFIX(VertexAttrib4dNV), @function
+GL_PREFIX(VertexAttrib4dNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5704(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5704(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5704(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _glapi_get_dispatch
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5704(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4dNV), .-GL_PREFIX(VertexAttrib4dNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4dvNV)
+       .type   GL_PREFIX(VertexAttrib4dvNV), @function
+GL_PREFIX(VertexAttrib4dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5712(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5712(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5712(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5712(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4dvNV), .-GL_PREFIX(VertexAttrib4dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4fNV)
+       .type   GL_PREFIX(VertexAttrib4fNV), @function
+GL_PREFIX(VertexAttrib4fNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5720(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5720(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5720(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $40, %rsp
+       movq    %rdi, (%rsp)
+       movq    %xmm0, 8(%rsp)
+       movq    %xmm1, 16(%rsp)
+       movq    %xmm2, 24(%rsp)
+       movq    %xmm3, 32(%rsp)
+       call    _glapi_get_dispatch
+       movq    32(%rsp), %xmm3
+       movq    24(%rsp), %xmm2
+       movq    16(%rsp), %xmm1
+       movq    8(%rsp), %xmm0
+       movq    (%rsp), %rdi
+       addq    $40, %rsp
+       movq    5720(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4fNV), .-GL_PREFIX(VertexAttrib4fNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4fvNV)
+       .type   GL_PREFIX(VertexAttrib4fvNV), @function
+GL_PREFIX(VertexAttrib4fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5728(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5728(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5728(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5728(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4fvNV), .-GL_PREFIX(VertexAttrib4fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4sNV)
+       .type   GL_PREFIX(VertexAttrib4sNV), @function
+GL_PREFIX(VertexAttrib4sNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5736(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5736(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5736(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5736(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4sNV), .-GL_PREFIX(VertexAttrib4sNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4svNV)
+       .type   GL_PREFIX(VertexAttrib4svNV), @function
+GL_PREFIX(VertexAttrib4svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5744(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5744(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5744(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5744(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4svNV), .-GL_PREFIX(VertexAttrib4svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4ubNV)
+       .type   GL_PREFIX(VertexAttrib4ubNV), @function
+GL_PREFIX(VertexAttrib4ubNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5752(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5752(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5752(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5752(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4ubNV), .-GL_PREFIX(VertexAttrib4ubNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttrib4ubvNV)
+       .type   GL_PREFIX(VertexAttrib4ubvNV), @function
+GL_PREFIX(VertexAttrib4ubvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5760(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5760(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5760(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5760(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttrib4ubvNV), .-GL_PREFIX(VertexAttrib4ubvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribPointerNV)
+       .type   GL_PREFIX(VertexAttribPointerNV), @function
+GL_PREFIX(VertexAttribPointerNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5768(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5768(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5768(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5768(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribPointerNV), .-GL_PREFIX(VertexAttribPointerNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs1dvNV)
+       .type   GL_PREFIX(VertexAttribs1dvNV), @function
+GL_PREFIX(VertexAttribs1dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5776(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5776(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5776(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5776(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs1dvNV), .-GL_PREFIX(VertexAttribs1dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs1fvNV)
+       .type   GL_PREFIX(VertexAttribs1fvNV), @function
+GL_PREFIX(VertexAttribs1fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5784(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5784(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5784(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5784(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs1fvNV), .-GL_PREFIX(VertexAttribs1fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs1svNV)
+       .type   GL_PREFIX(VertexAttribs1svNV), @function
+GL_PREFIX(VertexAttribs1svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5792(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5792(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5792(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5792(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs1svNV), .-GL_PREFIX(VertexAttribs1svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs2dvNV)
+       .type   GL_PREFIX(VertexAttribs2dvNV), @function
+GL_PREFIX(VertexAttribs2dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5800(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5800(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5800(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5800(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs2dvNV), .-GL_PREFIX(VertexAttribs2dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs2fvNV)
+       .type   GL_PREFIX(VertexAttribs2fvNV), @function
+GL_PREFIX(VertexAttribs2fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5808(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5808(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5808(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5808(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs2fvNV), .-GL_PREFIX(VertexAttribs2fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs2svNV)
+       .type   GL_PREFIX(VertexAttribs2svNV), @function
+GL_PREFIX(VertexAttribs2svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5816(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5816(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5816(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5816(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs2svNV), .-GL_PREFIX(VertexAttribs2svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs3dvNV)
+       .type   GL_PREFIX(VertexAttribs3dvNV), @function
+GL_PREFIX(VertexAttribs3dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5824(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5824(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5824(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5824(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs3dvNV), .-GL_PREFIX(VertexAttribs3dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs3fvNV)
+       .type   GL_PREFIX(VertexAttribs3fvNV), @function
+GL_PREFIX(VertexAttribs3fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5832(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5832(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5832(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5832(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs3fvNV), .-GL_PREFIX(VertexAttribs3fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs3svNV)
+       .type   GL_PREFIX(VertexAttribs3svNV), @function
+GL_PREFIX(VertexAttribs3svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5840(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5840(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5840(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5840(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs3svNV), .-GL_PREFIX(VertexAttribs3svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs4dvNV)
+       .type   GL_PREFIX(VertexAttribs4dvNV), @function
+GL_PREFIX(VertexAttribs4dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5848(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5848(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5848(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5848(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs4dvNV), .-GL_PREFIX(VertexAttribs4dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs4fvNV)
+       .type   GL_PREFIX(VertexAttribs4fvNV), @function
+GL_PREFIX(VertexAttribs4fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5856(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5856(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5856(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5856(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs4fvNV), .-GL_PREFIX(VertexAttribs4fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs4svNV)
+       .type   GL_PREFIX(VertexAttribs4svNV), @function
+GL_PREFIX(VertexAttribs4svNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5864(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5864(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5864(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5864(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs4svNV), .-GL_PREFIX(VertexAttribs4svNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(VertexAttribs4ubvNV)
+       .type   GL_PREFIX(VertexAttribs4ubvNV), @function
+GL_PREFIX(VertexAttribs4ubvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5872(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5872(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5872(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5872(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(VertexAttribs4ubvNV), .-GL_PREFIX(VertexAttribs4ubvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexBumpParameterfvATI)
+       .type   GL_PREFIX(GetTexBumpParameterfvATI), @function
+GL_PREFIX(GetTexBumpParameterfvATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5880(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5880(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5880(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5880(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexBumpParameterfvATI), .-GL_PREFIX(GetTexBumpParameterfvATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTexBumpParameterivATI)
+       .type   GL_PREFIX(GetTexBumpParameterivATI), @function
+GL_PREFIX(GetTexBumpParameterivATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5888(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5888(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5888(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5888(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTexBumpParameterivATI), .-GL_PREFIX(GetTexBumpParameterivATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexBumpParameterfvATI)
+       .type   GL_PREFIX(TexBumpParameterfvATI), @function
+GL_PREFIX(TexBumpParameterfvATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5896(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5896(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5896(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5896(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexBumpParameterfvATI), .-GL_PREFIX(TexBumpParameterfvATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TexBumpParameterivATI)
+       .type   GL_PREFIX(TexBumpParameterivATI), @function
+GL_PREFIX(TexBumpParameterivATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5904(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5904(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5904(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    5904(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TexBumpParameterivATI), .-GL_PREFIX(TexBumpParameterivATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AlphaFragmentOp1ATI)
+       .type   GL_PREFIX(AlphaFragmentOp1ATI), @function
+GL_PREFIX(AlphaFragmentOp1ATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5912(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5912(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5912(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5912(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AlphaFragmentOp1ATI), .-GL_PREFIX(AlphaFragmentOp1ATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AlphaFragmentOp2ATI)
+       .type   GL_PREFIX(AlphaFragmentOp2ATI), @function
+GL_PREFIX(AlphaFragmentOp2ATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5920(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5920(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5920(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5920(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AlphaFragmentOp2ATI), .-GL_PREFIX(AlphaFragmentOp2ATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(AlphaFragmentOp3ATI)
+       .type   GL_PREFIX(AlphaFragmentOp3ATI), @function
+GL_PREFIX(AlphaFragmentOp3ATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5928(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5928(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5928(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5928(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(AlphaFragmentOp3ATI), .-GL_PREFIX(AlphaFragmentOp3ATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BeginFragmentShaderATI)
+       .type   GL_PREFIX(BeginFragmentShaderATI), @function
+GL_PREFIX(BeginFragmentShaderATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5936(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    5936(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5936(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    5936(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BeginFragmentShaderATI), .-GL_PREFIX(BeginFragmentShaderATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindFragmentShaderATI)
+       .type   GL_PREFIX(BindFragmentShaderATI), @function
+GL_PREFIX(BindFragmentShaderATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5944(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5944(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5944(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5944(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindFragmentShaderATI), .-GL_PREFIX(BindFragmentShaderATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorFragmentOp1ATI)
+       .type   GL_PREFIX(ColorFragmentOp1ATI), @function
+GL_PREFIX(ColorFragmentOp1ATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5952(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5952(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5952(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5952(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorFragmentOp1ATI), .-GL_PREFIX(ColorFragmentOp1ATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorFragmentOp2ATI)
+       .type   GL_PREFIX(ColorFragmentOp2ATI), @function
+GL_PREFIX(ColorFragmentOp2ATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5960(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5960(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5960(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5960(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorFragmentOp2ATI), .-GL_PREFIX(ColorFragmentOp2ATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorFragmentOp3ATI)
+       .type   GL_PREFIX(ColorFragmentOp3ATI), @function
+GL_PREFIX(ColorFragmentOp3ATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5968(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5968(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5968(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    5968(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorFragmentOp3ATI), .-GL_PREFIX(ColorFragmentOp3ATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteFragmentShaderATI)
+       .type   GL_PREFIX(DeleteFragmentShaderATI), @function
+GL_PREFIX(DeleteFragmentShaderATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5976(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5976(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5976(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5976(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteFragmentShaderATI), .-GL_PREFIX(DeleteFragmentShaderATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EndFragmentShaderATI)
+       .type   GL_PREFIX(EndFragmentShaderATI), @function
+GL_PREFIX(EndFragmentShaderATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5984(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    5984(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5984(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    5984(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EndFragmentShaderATI), .-GL_PREFIX(EndFragmentShaderATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenFragmentShadersATI)
+       .type   GL_PREFIX(GenFragmentShadersATI), @function
+GL_PREFIX(GenFragmentShadersATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    5992(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    5992(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    5992(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    5992(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenFragmentShadersATI), .-GL_PREFIX(GenFragmentShadersATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PassTexCoordATI)
+       .type   GL_PREFIX(PassTexCoordATI), @function
+GL_PREFIX(PassTexCoordATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6000(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6000(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6000(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6000(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PassTexCoordATI), .-GL_PREFIX(PassTexCoordATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SampleMapATI)
+       .type   GL_PREFIX(SampleMapATI), @function
+GL_PREFIX(SampleMapATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6008(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6008(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6008(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6008(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SampleMapATI), .-GL_PREFIX(SampleMapATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(SetFragmentShaderConstantATI)
+       .type   GL_PREFIX(SetFragmentShaderConstantATI), @function
+GL_PREFIX(SetFragmentShaderConstantATI):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6016(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6016(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6016(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6016(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(SetFragmentShaderConstantATI), .-GL_PREFIX(SetFragmentShaderConstantATI)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PointParameteriNV)
+       .type   GL_PREFIX(PointParameteriNV), @function
+GL_PREFIX(PointParameteriNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6024(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6024(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6024(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6024(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PointParameteriNV), .-GL_PREFIX(PointParameteriNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(PointParameterivNV)
+       .type   GL_PREFIX(PointParameterivNV), @function
+GL_PREFIX(PointParameterivNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6032(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6032(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6032(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6032(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(PointParameterivNV), .-GL_PREFIX(PointParameterivNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_755)
+       .type   GL_PREFIX(_dispatch_stub_755), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_755))
+GL_PREFIX(_dispatch_stub_755):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6040(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6040(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6040(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6040(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_755), .-GL_PREFIX(_dispatch_stub_755)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_756)
+       .type   GL_PREFIX(_dispatch_stub_756), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_756))
+GL_PREFIX(_dispatch_stub_756):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6048(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6048(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6048(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6048(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_756), .-GL_PREFIX(_dispatch_stub_756)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_757)
+       .type   GL_PREFIX(_dispatch_stub_757), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_757))
+GL_PREFIX(_dispatch_stub_757):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6056(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6056(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6056(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6056(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_757), .-GL_PREFIX(_dispatch_stub_757)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_758)
+       .type   GL_PREFIX(_dispatch_stub_758), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_758))
+GL_PREFIX(_dispatch_stub_758):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6064(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6064(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6064(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6064(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_758), .-GL_PREFIX(_dispatch_stub_758)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_759)
+       .type   GL_PREFIX(_dispatch_stub_759), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_759))
+GL_PREFIX(_dispatch_stub_759):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6072(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6072(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6072(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6072(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_759), .-GL_PREFIX(_dispatch_stub_759)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramNamedParameterdvNV)
+       .type   GL_PREFIX(GetProgramNamedParameterdvNV), @function
+GL_PREFIX(GetProgramNamedParameterdvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6080(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6080(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6080(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6080(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramNamedParameterdvNV), .-GL_PREFIX(GetProgramNamedParameterdvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetProgramNamedParameterfvNV)
+       .type   GL_PREFIX(GetProgramNamedParameterfvNV), @function
+GL_PREFIX(GetProgramNamedParameterfvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6088(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6088(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6088(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6088(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetProgramNamedParameterfvNV), .-GL_PREFIX(GetProgramNamedParameterfvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramNamedParameter4dNV)
+       .type   GL_PREFIX(ProgramNamedParameter4dNV), @function
+GL_PREFIX(ProgramNamedParameter4dNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6096(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %rdx, 16(%rsp)
+       movq    %xmm0, 24(%rsp)
+       movq    %xmm1, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %xmm1
+       movq    24(%rsp), %xmm0
+       movq    16(%rsp), %rdx
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    6096(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6096(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %rdx, 16(%rsp)
+       movq    %xmm0, 24(%rsp)
+       movq    %xmm1, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       call    _glapi_get_dispatch
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %xmm1
+       movq    24(%rsp), %xmm0
+       movq    16(%rsp), %rdx
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    6096(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramNamedParameter4dNV), .-GL_PREFIX(ProgramNamedParameter4dNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramNamedParameter4dvNV)
+       .type   GL_PREFIX(ProgramNamedParameter4dvNV), @function
+GL_PREFIX(ProgramNamedParameter4dvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6104(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6104(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6104(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6104(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramNamedParameter4dvNV), .-GL_PREFIX(ProgramNamedParameter4dvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramNamedParameter4fNV)
+       .type   GL_PREFIX(ProgramNamedParameter4fNV), @function
+GL_PREFIX(ProgramNamedParameter4fNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6112(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %rdx, 16(%rsp)
+       movq    %xmm0, 24(%rsp)
+       movq    %xmm1, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       call    _x86_64_get_dispatch@PLT
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %xmm1
+       movq    24(%rsp), %xmm0
+       movq    16(%rsp), %rdx
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    6112(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6112(%rax), %r11
+       jmp     *%r11
+1:
+       subq    $56, %rsp
+       movq    %rdi, (%rsp)
+       movq    %rsi, 8(%rsp)
+       movq    %rdx, 16(%rsp)
+       movq    %xmm0, 24(%rsp)
+       movq    %xmm1, 32(%rsp)
+       movq    %xmm2, 40(%rsp)
+       movq    %xmm3, 48(%rsp)
+       call    _glapi_get_dispatch
+       movq    48(%rsp), %xmm3
+       movq    40(%rsp), %xmm2
+       movq    32(%rsp), %xmm1
+       movq    24(%rsp), %xmm0
+       movq    16(%rsp), %rdx
+       movq    8(%rsp), %rsi
+       movq    (%rsp), %rdi
+       addq    $56, %rsp
+       movq    6112(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramNamedParameter4fNV), .-GL_PREFIX(ProgramNamedParameter4fNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProgramNamedParameter4fvNV)
+       .type   GL_PREFIX(ProgramNamedParameter4fvNV), @function
+GL_PREFIX(ProgramNamedParameter4fvNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6120(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6120(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6120(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6120(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProgramNamedParameter4fvNV), .-GL_PREFIX(ProgramNamedParameter4fvNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_766)
+       .type   GL_PREFIX(_dispatch_stub_766), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_766))
+GL_PREFIX(_dispatch_stub_766):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6128(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6128(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6128(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6128(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_766), .-GL_PREFIX(_dispatch_stub_766)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_767)
+       .type   GL_PREFIX(_dispatch_stub_767), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_767))
+GL_PREFIX(_dispatch_stub_767):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6136(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6136(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6136(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6136(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_767), .-GL_PREFIX(_dispatch_stub_767)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindFramebufferEXT)
+       .type   GL_PREFIX(BindFramebufferEXT), @function
+GL_PREFIX(BindFramebufferEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6144(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6144(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6144(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6144(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindFramebufferEXT), .-GL_PREFIX(BindFramebufferEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindRenderbufferEXT)
+       .type   GL_PREFIX(BindRenderbufferEXT), @function
+GL_PREFIX(BindRenderbufferEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6152(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6152(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6152(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6152(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindRenderbufferEXT), .-GL_PREFIX(BindRenderbufferEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(CheckFramebufferStatusEXT)
+       .type   GL_PREFIX(CheckFramebufferStatusEXT), @function
+GL_PREFIX(CheckFramebufferStatusEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6160(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6160(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6160(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6160(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(CheckFramebufferStatusEXT), .-GL_PREFIX(CheckFramebufferStatusEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteFramebuffersEXT)
+       .type   GL_PREFIX(DeleteFramebuffersEXT), @function
+GL_PREFIX(DeleteFramebuffersEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6168(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6168(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6168(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6168(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteFramebuffersEXT), .-GL_PREFIX(DeleteFramebuffersEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DeleteRenderbuffersEXT)
+       .type   GL_PREFIX(DeleteRenderbuffersEXT), @function
+GL_PREFIX(DeleteRenderbuffersEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6176(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6176(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6176(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6176(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DeleteRenderbuffersEXT), .-GL_PREFIX(DeleteRenderbuffersEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FramebufferRenderbufferEXT)
+       .type   GL_PREFIX(FramebufferRenderbufferEXT), @function
+GL_PREFIX(FramebufferRenderbufferEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6184(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6184(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6184(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6184(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FramebufferRenderbufferEXT), .-GL_PREFIX(FramebufferRenderbufferEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FramebufferTexture1DEXT)
+       .type   GL_PREFIX(FramebufferTexture1DEXT), @function
+GL_PREFIX(FramebufferTexture1DEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6192(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6192(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6192(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6192(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FramebufferTexture1DEXT), .-GL_PREFIX(FramebufferTexture1DEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FramebufferTexture2DEXT)
+       .type   GL_PREFIX(FramebufferTexture2DEXT), @function
+GL_PREFIX(FramebufferTexture2DEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6200(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6200(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6200(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6200(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FramebufferTexture2DEXT), .-GL_PREFIX(FramebufferTexture2DEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FramebufferTexture3DEXT)
+       .type   GL_PREFIX(FramebufferTexture3DEXT), @function
+GL_PREFIX(FramebufferTexture3DEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6208(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6208(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6208(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6208(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FramebufferTexture3DEXT), .-GL_PREFIX(FramebufferTexture3DEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenFramebuffersEXT)
+       .type   GL_PREFIX(GenFramebuffersEXT), @function
+GL_PREFIX(GenFramebuffersEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6216(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6216(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6216(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6216(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenFramebuffersEXT), .-GL_PREFIX(GenFramebuffersEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenRenderbuffersEXT)
+       .type   GL_PREFIX(GenRenderbuffersEXT), @function
+GL_PREFIX(GenRenderbuffersEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6224(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6224(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6224(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6224(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenRenderbuffersEXT), .-GL_PREFIX(GenRenderbuffersEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GenerateMipmapEXT)
+       .type   GL_PREFIX(GenerateMipmapEXT), @function
+GL_PREFIX(GenerateMipmapEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6232(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6232(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6232(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6232(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GenerateMipmapEXT), .-GL_PREFIX(GenerateMipmapEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetFramebufferAttachmentParameterivEXT)
+       .type   GL_PREFIX(GetFramebufferAttachmentParameterivEXT), @function
+GL_PREFIX(GetFramebufferAttachmentParameterivEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6240(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6240(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6240(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6240(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetFramebufferAttachmentParameterivEXT), .-GL_PREFIX(GetFramebufferAttachmentParameterivEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetRenderbufferParameterivEXT)
+       .type   GL_PREFIX(GetRenderbufferParameterivEXT), @function
+GL_PREFIX(GetRenderbufferParameterivEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6248(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6248(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6248(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6248(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetRenderbufferParameterivEXT), .-GL_PREFIX(GetRenderbufferParameterivEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsFramebufferEXT)
+       .type   GL_PREFIX(IsFramebufferEXT), @function
+GL_PREFIX(IsFramebufferEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6256(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6256(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6256(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6256(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsFramebufferEXT), .-GL_PREFIX(IsFramebufferEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsRenderbufferEXT)
+       .type   GL_PREFIX(IsRenderbufferEXT), @function
+GL_PREFIX(IsRenderbufferEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6264(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6264(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6264(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6264(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsRenderbufferEXT), .-GL_PREFIX(IsRenderbufferEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(RenderbufferStorageEXT)
+       .type   GL_PREFIX(RenderbufferStorageEXT), @function
+GL_PREFIX(RenderbufferStorageEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6272(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6272(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6272(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6272(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(RenderbufferStorageEXT), .-GL_PREFIX(RenderbufferStorageEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_785)
+       .type   GL_PREFIX(_dispatch_stub_785), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_785))
+GL_PREFIX(_dispatch_stub_785):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6280(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6280(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6280(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6280(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_785), .-GL_PREFIX(_dispatch_stub_785)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_786)
+       .type   GL_PREFIX(_dispatch_stub_786), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_786))
+GL_PREFIX(_dispatch_stub_786):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6288(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6288(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6288(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6288(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_786), .-GL_PREFIX(_dispatch_stub_786)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_787)
+       .type   GL_PREFIX(_dispatch_stub_787), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_787))
+GL_PREFIX(_dispatch_stub_787):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6296(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6296(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6296(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6296(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_787), .-GL_PREFIX(_dispatch_stub_787)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(FramebufferTextureLayerEXT)
+       .type   GL_PREFIX(FramebufferTextureLayerEXT), @function
+GL_PREFIX(FramebufferTextureLayerEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6304(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6304(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6304(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6304(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(FramebufferTextureLayerEXT), .-GL_PREFIX(FramebufferTextureLayerEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ColorMaskIndexedEXT)
+       .type   GL_PREFIX(ColorMaskIndexedEXT), @function
+GL_PREFIX(ColorMaskIndexedEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6312(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6312(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6312(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6312(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ColorMaskIndexedEXT), .-GL_PREFIX(ColorMaskIndexedEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(DisableIndexedEXT)
+       .type   GL_PREFIX(DisableIndexedEXT), @function
+GL_PREFIX(DisableIndexedEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6320(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6320(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6320(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6320(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(DisableIndexedEXT), .-GL_PREFIX(DisableIndexedEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EnableIndexedEXT)
+       .type   GL_PREFIX(EnableIndexedEXT), @function
+GL_PREFIX(EnableIndexedEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6328(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6328(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6328(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6328(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EnableIndexedEXT), .-GL_PREFIX(EnableIndexedEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetBooleanIndexedvEXT)
+       .type   GL_PREFIX(GetBooleanIndexedvEXT), @function
+GL_PREFIX(GetBooleanIndexedvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6336(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6336(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6336(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6336(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetBooleanIndexedvEXT), .-GL_PREFIX(GetBooleanIndexedvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetIntegerIndexedvEXT)
+       .type   GL_PREFIX(GetIntegerIndexedvEXT), @function
+GL_PREFIX(GetIntegerIndexedvEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6344(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6344(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6344(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6344(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetIntegerIndexedvEXT), .-GL_PREFIX(GetIntegerIndexedvEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(IsEnabledIndexedEXT)
+       .type   GL_PREFIX(IsEnabledIndexedEXT), @function
+GL_PREFIX(IsEnabledIndexedEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6352(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6352(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6352(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6352(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(IsEnabledIndexedEXT), .-GL_PREFIX(IsEnabledIndexedEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BeginConditionalRenderNV)
+       .type   GL_PREFIX(BeginConditionalRenderNV), @function
+GL_PREFIX(BeginConditionalRenderNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6360(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6360(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6360(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6360(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BeginConditionalRenderNV), .-GL_PREFIX(BeginConditionalRenderNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EndConditionalRenderNV)
+       .type   GL_PREFIX(EndConditionalRenderNV), @function
+GL_PREFIX(EndConditionalRenderNV):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6368(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    6368(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6368(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    6368(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EndConditionalRenderNV), .-GL_PREFIX(EndConditionalRenderNV)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BeginTransformFeedbackEXT)
+       .type   GL_PREFIX(BeginTransformFeedbackEXT), @function
+GL_PREFIX(BeginTransformFeedbackEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6376(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6376(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6376(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6376(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BeginTransformFeedbackEXT), .-GL_PREFIX(BeginTransformFeedbackEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindBufferBaseEXT)
+       .type   GL_PREFIX(BindBufferBaseEXT), @function
+GL_PREFIX(BindBufferBaseEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6384(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6384(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6384(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6384(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindBufferBaseEXT), .-GL_PREFIX(BindBufferBaseEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindBufferOffsetEXT)
+       .type   GL_PREFIX(BindBufferOffsetEXT), @function
+GL_PREFIX(BindBufferOffsetEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6392(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6392(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6392(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6392(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindBufferOffsetEXT), .-GL_PREFIX(BindBufferOffsetEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(BindBufferRangeEXT)
+       .type   GL_PREFIX(BindBufferRangeEXT), @function
+GL_PREFIX(BindBufferRangeEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6400(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _x86_64_get_dispatch@PLT
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6400(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6400(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       call    _glapi_get_dispatch
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6400(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(BindBufferRangeEXT), .-GL_PREFIX(BindBufferRangeEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EndTransformFeedbackEXT)
+       .type   GL_PREFIX(EndTransformFeedbackEXT), @function
+GL_PREFIX(EndTransformFeedbackEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6408(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       movq    6408(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6408(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       movq    6408(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EndTransformFeedbackEXT), .-GL_PREFIX(EndTransformFeedbackEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetTransformFeedbackVaryingEXT)
+       .type   GL_PREFIX(GetTransformFeedbackVaryingEXT), @function
+GL_PREFIX(GetTransformFeedbackVaryingEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6416(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6416(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6416(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %r8
+       pushq   %r9
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %r9
+       popq    %r8
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6416(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetTransformFeedbackVaryingEXT), .-GL_PREFIX(GetTransformFeedbackVaryingEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(TransformFeedbackVaryingsEXT)
+       .type   GL_PREFIX(TransformFeedbackVaryingsEXT), @function
+GL_PREFIX(TransformFeedbackVaryingsEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6424(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6424(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6424(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6424(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(TransformFeedbackVaryingsEXT), .-GL_PREFIX(TransformFeedbackVaryingsEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ProvokingVertexEXT)
+       .type   GL_PREFIX(ProvokingVertexEXT), @function
+GL_PREFIX(ProvokingVertexEXT):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6432(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdi
+       movq    6432(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6432(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       call    _glapi_get_dispatch
+       popq    %rdi
+       movq    6432(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ProvokingVertexEXT), .-GL_PREFIX(ProvokingVertexEXT)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_805)
+       .type   GL_PREFIX(_dispatch_stub_805), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_805))
+GL_PREFIX(_dispatch_stub_805):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6440(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6440(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6440(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6440(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_805), .-GL_PREFIX(_dispatch_stub_805)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_806)
+       .type   GL_PREFIX(_dispatch_stub_806), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_806))
+GL_PREFIX(_dispatch_stub_806):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6448(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6448(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6448(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6448(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_806), .-GL_PREFIX(_dispatch_stub_806)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(GetObjectParameterivAPPLE)
+       .type   GL_PREFIX(GetObjectParameterivAPPLE), @function
+GL_PREFIX(GetObjectParameterivAPPLE):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6456(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6456(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6456(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6456(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(GetObjectParameterivAPPLE), .-GL_PREFIX(GetObjectParameterivAPPLE)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ObjectPurgeableAPPLE)
+       .type   GL_PREFIX(ObjectPurgeableAPPLE), @function
+GL_PREFIX(ObjectPurgeableAPPLE):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6464(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6464(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6464(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6464(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ObjectPurgeableAPPLE), .-GL_PREFIX(ObjectPurgeableAPPLE)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(ObjectUnpurgeableAPPLE)
+       .type   GL_PREFIX(ObjectUnpurgeableAPPLE), @function
+GL_PREFIX(ObjectUnpurgeableAPPLE):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6472(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6472(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6472(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6472(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(ObjectUnpurgeableAPPLE), .-GL_PREFIX(ObjectUnpurgeableAPPLE)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_810)
+       .type   GL_PREFIX(_dispatch_stub_810), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_810))
+GL_PREFIX(_dispatch_stub_810):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6480(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6480(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6480(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6480(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_810), .-GL_PREFIX(_dispatch_stub_810)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_811)
+       .type   GL_PREFIX(_dispatch_stub_811), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_811))
+GL_PREFIX(_dispatch_stub_811):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6488(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6488(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6488(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6488(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_811), .-GL_PREFIX(_dispatch_stub_811)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_812)
+       .type   GL_PREFIX(_dispatch_stub_812), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_812))
+GL_PREFIX(_dispatch_stub_812):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6496(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6496(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6496(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       pushq   %rcx
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rcx
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6496(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_812), .-GL_PREFIX(_dispatch_stub_812)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_813)
+       .type   GL_PREFIX(_dispatch_stub_813), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_813))
+GL_PREFIX(_dispatch_stub_813):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6504(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6504(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6504(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6504(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_813), .-GL_PREFIX(_dispatch_stub_813)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(_dispatch_stub_814)
+       .type   GL_PREFIX(_dispatch_stub_814), @function
+       HIDDEN(GL_PREFIX(_dispatch_stub_814))
+GL_PREFIX(_dispatch_stub_814):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6512(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _x86_64_get_dispatch@PLT
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6512(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6512(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rdx
+       call    _glapi_get_dispatch
+       popq    %rdx
+       popq    %rsi
+       popq    %rdi
+       movq    6512(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(_dispatch_stub_814), .-GL_PREFIX(_dispatch_stub_814)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EGLImageTargetRenderbufferStorageOES)
+       .type   GL_PREFIX(EGLImageTargetRenderbufferStorageOES), @function
+GL_PREFIX(EGLImageTargetRenderbufferStorageOES):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6520(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6520(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6520(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6520(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EGLImageTargetRenderbufferStorageOES), .-GL_PREFIX(EGLImageTargetRenderbufferStorageOES)
+
+       .p2align        4,,15
+       .globl  GL_PREFIX(EGLImageTargetTexture2DOES)
+       .type   GL_PREFIX(EGLImageTargetTexture2DOES), @function
+GL_PREFIX(EGLImageTargetTexture2DOES):
+#if defined(GLX_USE_TLS)
+       call    _x86_64_get_dispatch@PLT
+       movq    6528(%rax), %r11
+       jmp     *%r11
+#elif defined(PTHREADS)
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _x86_64_get_dispatch@PLT
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6528(%rax), %r11
+       jmp     *%r11
+#else
+       movq    _glapi_Dispatch(%rip), %rax
+       testq   %rax, %rax
+       je      1f
+       movq    6528(%rax), %r11
+       jmp     *%r11
+1:
+       pushq   %rdi
+       pushq   %rsi
+       pushq   %rbp
+       call    _glapi_get_dispatch
+       popq    %rbp
+       popq    %rsi
+       popq    %rdi
+       movq    6528(%rax), %r11
+       jmp     *%r11
+#endif /* defined(GLX_USE_TLS) */
+       .size   GL_PREFIX(EGLImageTargetTexture2DOES), .-GL_PREFIX(EGLImageTargetTexture2DOES)
+
+       .globl GL_PREFIX(ArrayElementEXT) ; .set GL_PREFIX(ArrayElementEXT), GL_PREFIX(ArrayElement)
+       .globl GL_PREFIX(BindTextureEXT) ; .set GL_PREFIX(BindTextureEXT), GL_PREFIX(BindTexture)
+       .globl GL_PREFIX(DrawArraysEXT) ; .set GL_PREFIX(DrawArraysEXT), GL_PREFIX(DrawArrays)
+#ifndef GLX_INDIRECT_RENDERING
+       .globl GL_PREFIX(AreTexturesResidentEXT) ; .set GL_PREFIX(AreTexturesResidentEXT), GL_PREFIX(AreTexturesResident)
+#endif
+       .globl GL_PREFIX(CopyTexImage1DEXT) ; .set GL_PREFIX(CopyTexImage1DEXT), GL_PREFIX(CopyTexImage1D)
+       .globl GL_PREFIX(CopyTexImage2DEXT) ; .set GL_PREFIX(CopyTexImage2DEXT), GL_PREFIX(CopyTexImage2D)
+       .globl GL_PREFIX(CopyTexSubImage1DEXT) ; .set GL_PREFIX(CopyTexSubImage1DEXT), GL_PREFIX(CopyTexSubImage1D)
+       .globl GL_PREFIX(CopyTexSubImage2DEXT) ; .set GL_PREFIX(CopyTexSubImage2DEXT), GL_PREFIX(CopyTexSubImage2D)
+#ifndef GLX_INDIRECT_RENDERING
+       .globl GL_PREFIX(DeleteTexturesEXT) ; .set GL_PREFIX(DeleteTexturesEXT), GL_PREFIX(DeleteTextures)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       .globl GL_PREFIX(GenTexturesEXT) ; .set GL_PREFIX(GenTexturesEXT), GL_PREFIX(GenTextures)
+#endif
+       .globl GL_PREFIX(GetPointervEXT) ; .set GL_PREFIX(GetPointervEXT), GL_PREFIX(GetPointerv)
+#ifndef GLX_INDIRECT_RENDERING
+       .globl GL_PREFIX(IsTextureEXT) ; .set GL_PREFIX(IsTextureEXT), GL_PREFIX(IsTexture)
+#endif
+       .globl GL_PREFIX(PrioritizeTexturesEXT) ; .set GL_PREFIX(PrioritizeTexturesEXT), GL_PREFIX(PrioritizeTextures)
+       .globl GL_PREFIX(TexSubImage1DEXT) ; .set GL_PREFIX(TexSubImage1DEXT), GL_PREFIX(TexSubImage1D)
+       .globl GL_PREFIX(TexSubImage2DEXT) ; .set GL_PREFIX(TexSubImage2DEXT), GL_PREFIX(TexSubImage2D)
+       .globl GL_PREFIX(BlendColorEXT) ; .set GL_PREFIX(BlendColorEXT), GL_PREFIX(BlendColor)
+       .globl GL_PREFIX(BlendEquationEXT) ; .set GL_PREFIX(BlendEquationEXT), GL_PREFIX(BlendEquation)
+       .globl GL_PREFIX(DrawRangeElementsEXT) ; .set GL_PREFIX(DrawRangeElementsEXT), GL_PREFIX(DrawRangeElements)
+       .globl GL_PREFIX(ColorTableEXT) ; .set GL_PREFIX(ColorTableEXT), GL_PREFIX(ColorTable)
+#ifndef GLX_INDIRECT_RENDERING
+       .globl GL_PREFIX(GetColorTableEXT) ; .set GL_PREFIX(GetColorTableEXT), GL_PREFIX(GetColorTable)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       .globl GL_PREFIX(GetColorTableParameterfvEXT) ; .set GL_PREFIX(GetColorTableParameterfvEXT), GL_PREFIX(GetColorTableParameterfv)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       .globl GL_PREFIX(GetColorTableParameterivEXT) ; .set GL_PREFIX(GetColorTableParameterivEXT), GL_PREFIX(GetColorTableParameteriv)
+#endif
+       .globl GL_PREFIX(TexImage3DEXT) ; .set GL_PREFIX(TexImage3DEXT), GL_PREFIX(TexImage3D)
+       .globl GL_PREFIX(TexSubImage3DEXT) ; .set GL_PREFIX(TexSubImage3DEXT), GL_PREFIX(TexSubImage3D)
+       .globl GL_PREFIX(CopyTexSubImage3DEXT) ; .set GL_PREFIX(CopyTexSubImage3DEXT), GL_PREFIX(CopyTexSubImage3D)
+       .globl GL_PREFIX(ActiveTexture) ; .set GL_PREFIX(ActiveTexture), GL_PREFIX(ActiveTextureARB)
+       .globl GL_PREFIX(ClientActiveTexture) ; .set GL_PREFIX(ClientActiveTexture), GL_PREFIX(ClientActiveTextureARB)
+       .globl GL_PREFIX(MultiTexCoord1d) ; .set GL_PREFIX(MultiTexCoord1d), GL_PREFIX(MultiTexCoord1dARB)
+       .globl GL_PREFIX(MultiTexCoord1dv) ; .set GL_PREFIX(MultiTexCoord1dv), GL_PREFIX(MultiTexCoord1dvARB)
+       .globl GL_PREFIX(MultiTexCoord1f) ; .set GL_PREFIX(MultiTexCoord1f), GL_PREFIX(MultiTexCoord1fARB)
+       .globl GL_PREFIX(MultiTexCoord1fv) ; .set GL_PREFIX(MultiTexCoord1fv), GL_PREFIX(MultiTexCoord1fvARB)
+       .globl GL_PREFIX(MultiTexCoord1i) ; .set GL_PREFIX(MultiTexCoord1i), GL_PREFIX(MultiTexCoord1iARB)
+       .globl GL_PREFIX(MultiTexCoord1iv) ; .set GL_PREFIX(MultiTexCoord1iv), GL_PREFIX(MultiTexCoord1ivARB)
+       .globl GL_PREFIX(MultiTexCoord1s) ; .set GL_PREFIX(MultiTexCoord1s), GL_PREFIX(MultiTexCoord1sARB)
+       .globl GL_PREFIX(MultiTexCoord1sv) ; .set GL_PREFIX(MultiTexCoord1sv), GL_PREFIX(MultiTexCoord1svARB)
+       .globl GL_PREFIX(MultiTexCoord2d) ; .set GL_PREFIX(MultiTexCoord2d), GL_PREFIX(MultiTexCoord2dARB)
+       .globl GL_PREFIX(MultiTexCoord2dv) ; .set GL_PREFIX(MultiTexCoord2dv), GL_PREFIX(MultiTexCoord2dvARB)
+       .globl GL_PREFIX(MultiTexCoord2f) ; .set GL_PREFIX(MultiTexCoord2f), GL_PREFIX(MultiTexCoord2fARB)
+       .globl GL_PREFIX(MultiTexCoord2fv) ; .set GL_PREFIX(MultiTexCoord2fv), GL_PREFIX(MultiTexCoord2fvARB)
+       .globl GL_PREFIX(MultiTexCoord2i) ; .set GL_PREFIX(MultiTexCoord2i), GL_PREFIX(MultiTexCoord2iARB)
+       .globl GL_PREFIX(MultiTexCoord2iv) ; .set GL_PREFIX(MultiTexCoord2iv), GL_PREFIX(MultiTexCoord2ivARB)
+       .globl GL_PREFIX(MultiTexCoord2s) ; .set GL_PREFIX(MultiTexCoord2s), GL_PREFIX(MultiTexCoord2sARB)
+       .globl GL_PREFIX(MultiTexCoord2sv) ; .set GL_PREFIX(MultiTexCoord2sv), GL_PREFIX(MultiTexCoord2svARB)
+       .globl GL_PREFIX(MultiTexCoord3d) ; .set GL_PREFIX(MultiTexCoord3d), GL_PREFIX(MultiTexCoord3dARB)
+       .globl GL_PREFIX(MultiTexCoord3dv) ; .set GL_PREFIX(MultiTexCoord3dv), GL_PREFIX(MultiTexCoord3dvARB)
+       .globl GL_PREFIX(MultiTexCoord3f) ; .set GL_PREFIX(MultiTexCoord3f), GL_PREFIX(MultiTexCoord3fARB)
+       .globl GL_PREFIX(MultiTexCoord3fv) ; .set GL_PREFIX(MultiTexCoord3fv), GL_PREFIX(MultiTexCoord3fvARB)
+       .globl GL_PREFIX(MultiTexCoord3i) ; .set GL_PREFIX(MultiTexCoord3i), GL_PREFIX(MultiTexCoord3iARB)
+       .globl GL_PREFIX(MultiTexCoord3iv) ; .set GL_PREFIX(MultiTexCoord3iv), GL_PREFIX(MultiTexCoord3ivARB)
+       .globl GL_PREFIX(MultiTexCoord3s) ; .set GL_PREFIX(MultiTexCoord3s), GL_PREFIX(MultiTexCoord3sARB)
+       .globl GL_PREFIX(MultiTexCoord3sv) ; .set GL_PREFIX(MultiTexCoord3sv), GL_PREFIX(MultiTexCoord3svARB)
+       .globl GL_PREFIX(MultiTexCoord4d) ; .set GL_PREFIX(MultiTexCoord4d), GL_PREFIX(MultiTexCoord4dARB)
+       .globl GL_PREFIX(MultiTexCoord4dv) ; .set GL_PREFIX(MultiTexCoord4dv), GL_PREFIX(MultiTexCoord4dvARB)
+       .globl GL_PREFIX(MultiTexCoord4f) ; .set GL_PREFIX(MultiTexCoord4f), GL_PREFIX(MultiTexCoord4fARB)
+       .globl GL_PREFIX(MultiTexCoord4fv) ; .set GL_PREFIX(MultiTexCoord4fv), GL_PREFIX(MultiTexCoord4fvARB)
+       .globl GL_PREFIX(MultiTexCoord4i) ; .set GL_PREFIX(MultiTexCoord4i), GL_PREFIX(MultiTexCoord4iARB)
+       .globl GL_PREFIX(MultiTexCoord4iv) ; .set GL_PREFIX(MultiTexCoord4iv), GL_PREFIX(MultiTexCoord4ivARB)
+       .globl GL_PREFIX(MultiTexCoord4s) ; .set GL_PREFIX(MultiTexCoord4s), GL_PREFIX(MultiTexCoord4sARB)
+       .globl GL_PREFIX(MultiTexCoord4sv) ; .set GL_PREFIX(MultiTexCoord4sv), GL_PREFIX(MultiTexCoord4svARB)
+       .globl GL_PREFIX(DrawArraysInstancedARB) ; .set GL_PREFIX(DrawArraysInstancedARB), GL_PREFIX(DrawArraysInstanced)
+       .globl GL_PREFIX(DrawArraysInstancedEXT) ; .set GL_PREFIX(DrawArraysInstancedEXT), GL_PREFIX(DrawArraysInstanced)
+       .globl GL_PREFIX(DrawElementsInstancedARB) ; .set GL_PREFIX(DrawElementsInstancedARB), GL_PREFIX(DrawElementsInstanced)
+       .globl GL_PREFIX(DrawElementsInstancedEXT) ; .set GL_PREFIX(DrawElementsInstancedEXT), GL_PREFIX(DrawElementsInstanced)
+       .globl GL_PREFIX(LoadTransposeMatrixd) ; .set GL_PREFIX(LoadTransposeMatrixd), GL_PREFIX(LoadTransposeMatrixdARB)
+       .globl GL_PREFIX(LoadTransposeMatrixf) ; .set GL_PREFIX(LoadTransposeMatrixf), GL_PREFIX(LoadTransposeMatrixfARB)
+       .globl GL_PREFIX(MultTransposeMatrixd) ; .set GL_PREFIX(MultTransposeMatrixd), GL_PREFIX(MultTransposeMatrixdARB)
+       .globl GL_PREFIX(MultTransposeMatrixf) ; .set GL_PREFIX(MultTransposeMatrixf), GL_PREFIX(MultTransposeMatrixfARB)
+       .globl GL_PREFIX(SampleCoverage) ; .set GL_PREFIX(SampleCoverage), GL_PREFIX(SampleCoverageARB)
+       .globl GL_PREFIX(CompressedTexImage1D) ; .set GL_PREFIX(CompressedTexImage1D), GL_PREFIX(CompressedTexImage1DARB)
+       .globl GL_PREFIX(CompressedTexImage2D) ; .set GL_PREFIX(CompressedTexImage2D), GL_PREFIX(CompressedTexImage2DARB)
+       .globl GL_PREFIX(CompressedTexImage3D) ; .set GL_PREFIX(CompressedTexImage3D), GL_PREFIX(CompressedTexImage3DARB)
+       .globl GL_PREFIX(CompressedTexSubImage1D) ; .set GL_PREFIX(CompressedTexSubImage1D), GL_PREFIX(CompressedTexSubImage1DARB)
+       .globl GL_PREFIX(CompressedTexSubImage2D) ; .set GL_PREFIX(CompressedTexSubImage2D), GL_PREFIX(CompressedTexSubImage2DARB)
+       .globl GL_PREFIX(CompressedTexSubImage3D) ; .set GL_PREFIX(CompressedTexSubImage3D), GL_PREFIX(CompressedTexSubImage3DARB)
+       .globl GL_PREFIX(GetCompressedTexImage) ; .set GL_PREFIX(GetCompressedTexImage), GL_PREFIX(GetCompressedTexImageARB)
+       .globl GL_PREFIX(DisableVertexAttribArray) ; .set GL_PREFIX(DisableVertexAttribArray), GL_PREFIX(DisableVertexAttribArrayARB)
+       .globl GL_PREFIX(EnableVertexAttribArray) ; .set GL_PREFIX(EnableVertexAttribArray), GL_PREFIX(EnableVertexAttribArrayARB)
+       .globl GL_PREFIX(GetVertexAttribdv) ; .set GL_PREFIX(GetVertexAttribdv), GL_PREFIX(GetVertexAttribdvARB)
+       .globl GL_PREFIX(GetVertexAttribfv) ; .set GL_PREFIX(GetVertexAttribfv), GL_PREFIX(GetVertexAttribfvARB)
+       .globl GL_PREFIX(GetVertexAttribiv) ; .set GL_PREFIX(GetVertexAttribiv), GL_PREFIX(GetVertexAttribivARB)
+       .globl GL_PREFIX(ProgramParameter4dNV) ; .set GL_PREFIX(ProgramParameter4dNV), GL_PREFIX(ProgramEnvParameter4dARB)
+       .globl GL_PREFIX(ProgramParameter4dvNV) ; .set GL_PREFIX(ProgramParameter4dvNV), GL_PREFIX(ProgramEnvParameter4dvARB)
+       .globl GL_PREFIX(ProgramParameter4fNV) ; .set GL_PREFIX(ProgramParameter4fNV), GL_PREFIX(ProgramEnvParameter4fARB)
+       .globl GL_PREFIX(ProgramParameter4fvNV) ; .set GL_PREFIX(ProgramParameter4fvNV), GL_PREFIX(ProgramEnvParameter4fvARB)
+       .globl GL_PREFIX(VertexAttrib1d) ; .set GL_PREFIX(VertexAttrib1d), GL_PREFIX(VertexAttrib1dARB)
+       .globl GL_PREFIX(VertexAttrib1dv) ; .set GL_PREFIX(VertexAttrib1dv), GL_PREFIX(VertexAttrib1dvARB)
+       .globl GL_PREFIX(VertexAttrib1f) ; .set GL_PREFIX(VertexAttrib1f), GL_PREFIX(VertexAttrib1fARB)
+       .globl GL_PREFIX(VertexAttrib1fv) ; .set GL_PREFIX(VertexAttrib1fv), GL_PREFIX(VertexAttrib1fvARB)
+       .globl GL_PREFIX(VertexAttrib1s) ; .set GL_PREFIX(VertexAttrib1s), GL_PREFIX(VertexAttrib1sARB)
+       .globl GL_PREFIX(VertexAttrib1sv) ; .set GL_PREFIX(VertexAttrib1sv), GL_PREFIX(VertexAttrib1svARB)
+       .globl GL_PREFIX(VertexAttrib2d) ; .set GL_PREFIX(VertexAttrib2d), GL_PREFIX(VertexAttrib2dARB)
+       .globl GL_PREFIX(VertexAttrib2dv) ; .set GL_PREFIX(VertexAttrib2dv), GL_PREFIX(VertexAttrib2dvARB)
+       .globl GL_PREFIX(VertexAttrib2f) ; .set GL_PREFIX(VertexAttrib2f), GL_PREFIX(VertexAttrib2fARB)
+       .globl GL_PREFIX(VertexAttrib2fv) ; .set GL_PREFIX(VertexAttrib2fv), GL_PREFIX(VertexAttrib2fvARB)
+       .globl GL_PREFIX(VertexAttrib2s) ; .set GL_PREFIX(VertexAttrib2s), GL_PREFIX(VertexAttrib2sARB)
+       .globl GL_PREFIX(VertexAttrib2sv) ; .set GL_PREFIX(VertexAttrib2sv), GL_PREFIX(VertexAttrib2svARB)
+       .globl GL_PREFIX(VertexAttrib3d) ; .set GL_PREFIX(VertexAttrib3d), GL_PREFIX(VertexAttrib3dARB)
+       .globl GL_PREFIX(VertexAttrib3dv) ; .set GL_PREFIX(VertexAttrib3dv), GL_PREFIX(VertexAttrib3dvARB)
+       .globl GL_PREFIX(VertexAttrib3f) ; .set GL_PREFIX(VertexAttrib3f), GL_PREFIX(VertexAttrib3fARB)
+       .globl GL_PREFIX(VertexAttrib3fv) ; .set GL_PREFIX(VertexAttrib3fv), GL_PREFIX(VertexAttrib3fvARB)
+       .globl GL_PREFIX(VertexAttrib3s) ; .set GL_PREFIX(VertexAttrib3s), GL_PREFIX(VertexAttrib3sARB)
+       .globl GL_PREFIX(VertexAttrib3sv) ; .set GL_PREFIX(VertexAttrib3sv), GL_PREFIX(VertexAttrib3svARB)
+       .globl GL_PREFIX(VertexAttrib4Nbv) ; .set GL_PREFIX(VertexAttrib4Nbv), GL_PREFIX(VertexAttrib4NbvARB)
+       .globl GL_PREFIX(VertexAttrib4Niv) ; .set GL_PREFIX(VertexAttrib4Niv), GL_PREFIX(VertexAttrib4NivARB)
+       .globl GL_PREFIX(VertexAttrib4Nsv) ; .set GL_PREFIX(VertexAttrib4Nsv), GL_PREFIX(VertexAttrib4NsvARB)
+       .globl GL_PREFIX(VertexAttrib4Nub) ; .set GL_PREFIX(VertexAttrib4Nub), GL_PREFIX(VertexAttrib4NubARB)
+       .globl GL_PREFIX(VertexAttrib4Nubv) ; .set GL_PREFIX(VertexAttrib4Nubv), GL_PREFIX(VertexAttrib4NubvARB)
+       .globl GL_PREFIX(VertexAttrib4Nuiv) ; .set GL_PREFIX(VertexAttrib4Nuiv), GL_PREFIX(VertexAttrib4NuivARB)
+       .globl GL_PREFIX(VertexAttrib4Nusv) ; .set GL_PREFIX(VertexAttrib4Nusv), GL_PREFIX(VertexAttrib4NusvARB)
+       .globl GL_PREFIX(VertexAttrib4bv) ; .set GL_PREFIX(VertexAttrib4bv), GL_PREFIX(VertexAttrib4bvARB)
+       .globl GL_PREFIX(VertexAttrib4d) ; .set GL_PREFIX(VertexAttrib4d), GL_PREFIX(VertexAttrib4dARB)
+       .globl GL_PREFIX(VertexAttrib4dv) ; .set GL_PREFIX(VertexAttrib4dv), GL_PREFIX(VertexAttrib4dvARB)
+       .globl GL_PREFIX(VertexAttrib4f) ; .set GL_PREFIX(VertexAttrib4f), GL_PREFIX(VertexAttrib4fARB)
+       .globl GL_PREFIX(VertexAttrib4fv) ; .set GL_PREFIX(VertexAttrib4fv), GL_PREFIX(VertexAttrib4fvARB)
+       .globl GL_PREFIX(VertexAttrib4iv) ; .set GL_PREFIX(VertexAttrib4iv), GL_PREFIX(VertexAttrib4ivARB)
+       .globl GL_PREFIX(VertexAttrib4s) ; .set GL_PREFIX(VertexAttrib4s), GL_PREFIX(VertexAttrib4sARB)
+       .globl GL_PREFIX(VertexAttrib4sv) ; .set GL_PREFIX(VertexAttrib4sv), GL_PREFIX(VertexAttrib4svARB)
+       .globl GL_PREFIX(VertexAttrib4ubv) ; .set GL_PREFIX(VertexAttrib4ubv), GL_PREFIX(VertexAttrib4ubvARB)
+       .globl GL_PREFIX(VertexAttrib4uiv) ; .set GL_PREFIX(VertexAttrib4uiv), GL_PREFIX(VertexAttrib4uivARB)
+       .globl GL_PREFIX(VertexAttrib4usv) ; .set GL_PREFIX(VertexAttrib4usv), GL_PREFIX(VertexAttrib4usvARB)
+       .globl GL_PREFIX(VertexAttribPointer) ; .set GL_PREFIX(VertexAttribPointer), GL_PREFIX(VertexAttribPointerARB)
+       .globl GL_PREFIX(BindBuffer) ; .set GL_PREFIX(BindBuffer), GL_PREFIX(BindBufferARB)
+       .globl GL_PREFIX(BufferData) ; .set GL_PREFIX(BufferData), GL_PREFIX(BufferDataARB)
+       .globl GL_PREFIX(BufferSubData) ; .set GL_PREFIX(BufferSubData), GL_PREFIX(BufferSubDataARB)
+       .globl GL_PREFIX(DeleteBuffers) ; .set GL_PREFIX(DeleteBuffers), GL_PREFIX(DeleteBuffersARB)
+       .globl GL_PREFIX(GenBuffers) ; .set GL_PREFIX(GenBuffers), GL_PREFIX(GenBuffersARB)
+       .globl GL_PREFIX(GetBufferParameteriv) ; .set GL_PREFIX(GetBufferParameteriv), GL_PREFIX(GetBufferParameterivARB)
+       .globl GL_PREFIX(GetBufferPointerv) ; .set GL_PREFIX(GetBufferPointerv), GL_PREFIX(GetBufferPointervARB)
+       .globl GL_PREFIX(GetBufferSubData) ; .set GL_PREFIX(GetBufferSubData), GL_PREFIX(GetBufferSubDataARB)
+       .globl GL_PREFIX(IsBuffer) ; .set GL_PREFIX(IsBuffer), GL_PREFIX(IsBufferARB)
+       .globl GL_PREFIX(MapBuffer) ; .set GL_PREFIX(MapBuffer), GL_PREFIX(MapBufferARB)
+       .globl GL_PREFIX(UnmapBuffer) ; .set GL_PREFIX(UnmapBuffer), GL_PREFIX(UnmapBufferARB)
+       .globl GL_PREFIX(BeginQuery) ; .set GL_PREFIX(BeginQuery), GL_PREFIX(BeginQueryARB)
+       .globl GL_PREFIX(DeleteQueries) ; .set GL_PREFIX(DeleteQueries), GL_PREFIX(DeleteQueriesARB)
+       .globl GL_PREFIX(EndQuery) ; .set GL_PREFIX(EndQuery), GL_PREFIX(EndQueryARB)
+       .globl GL_PREFIX(GenQueries) ; .set GL_PREFIX(GenQueries), GL_PREFIX(GenQueriesARB)
+       .globl GL_PREFIX(GetQueryObjectiv) ; .set GL_PREFIX(GetQueryObjectiv), GL_PREFIX(GetQueryObjectivARB)
+       .globl GL_PREFIX(GetQueryObjectuiv) ; .set GL_PREFIX(GetQueryObjectuiv), GL_PREFIX(GetQueryObjectuivARB)
+       .globl GL_PREFIX(GetQueryiv) ; .set GL_PREFIX(GetQueryiv), GL_PREFIX(GetQueryivARB)
+       .globl GL_PREFIX(IsQuery) ; .set GL_PREFIX(IsQuery), GL_PREFIX(IsQueryARB)
+       .globl GL_PREFIX(CompileShader) ; .set GL_PREFIX(CompileShader), GL_PREFIX(CompileShaderARB)
+       .globl GL_PREFIX(GetActiveUniform) ; .set GL_PREFIX(GetActiveUniform), GL_PREFIX(GetActiveUniformARB)
+       .globl GL_PREFIX(GetShaderSource) ; .set GL_PREFIX(GetShaderSource), GL_PREFIX(GetShaderSourceARB)
+       .globl GL_PREFIX(GetUniformLocation) ; .set GL_PREFIX(GetUniformLocation), GL_PREFIX(GetUniformLocationARB)
+       .globl GL_PREFIX(GetUniformfv) ; .set GL_PREFIX(GetUniformfv), GL_PREFIX(GetUniformfvARB)
+       .globl GL_PREFIX(GetUniformiv) ; .set GL_PREFIX(GetUniformiv), GL_PREFIX(GetUniformivARB)
+       .globl GL_PREFIX(LinkProgram) ; .set GL_PREFIX(LinkProgram), GL_PREFIX(LinkProgramARB)
+       .globl GL_PREFIX(ShaderSource) ; .set GL_PREFIX(ShaderSource), GL_PREFIX(ShaderSourceARB)
+       .globl GL_PREFIX(Uniform1f) ; .set GL_PREFIX(Uniform1f), GL_PREFIX(Uniform1fARB)
+       .globl GL_PREFIX(Uniform1fv) ; .set GL_PREFIX(Uniform1fv), GL_PREFIX(Uniform1fvARB)
+       .globl GL_PREFIX(Uniform1i) ; .set GL_PREFIX(Uniform1i), GL_PREFIX(Uniform1iARB)
+       .globl GL_PREFIX(Uniform1iv) ; .set GL_PREFIX(Uniform1iv), GL_PREFIX(Uniform1ivARB)
+       .globl GL_PREFIX(Uniform2f) ; .set GL_PREFIX(Uniform2f), GL_PREFIX(Uniform2fARB)
+       .globl GL_PREFIX(Uniform2fv) ; .set GL_PREFIX(Uniform2fv), GL_PREFIX(Uniform2fvARB)
+       .globl GL_PREFIX(Uniform2i) ; .set GL_PREFIX(Uniform2i), GL_PREFIX(Uniform2iARB)
+       .globl GL_PREFIX(Uniform2iv) ; .set GL_PREFIX(Uniform2iv), GL_PREFIX(Uniform2ivARB)
+       .globl GL_PREFIX(Uniform3f) ; .set GL_PREFIX(Uniform3f), GL_PREFIX(Uniform3fARB)
+       .globl GL_PREFIX(Uniform3fv) ; .set GL_PREFIX(Uniform3fv), GL_PREFIX(Uniform3fvARB)
+       .globl GL_PREFIX(Uniform3i) ; .set GL_PREFIX(Uniform3i), GL_PREFIX(Uniform3iARB)
+       .globl GL_PREFIX(Uniform3iv) ; .set GL_PREFIX(Uniform3iv), GL_PREFIX(Uniform3ivARB)
+       .globl GL_PREFIX(Uniform4f) ; .set GL_PREFIX(Uniform4f), GL_PREFIX(Uniform4fARB)
+       .globl GL_PREFIX(Uniform4fv) ; .set GL_PREFIX(Uniform4fv), GL_PREFIX(Uniform4fvARB)
+       .globl GL_PREFIX(Uniform4i) ; .set GL_PREFIX(Uniform4i), GL_PREFIX(Uniform4iARB)
+       .globl GL_PREFIX(Uniform4iv) ; .set GL_PREFIX(Uniform4iv), GL_PREFIX(Uniform4ivARB)
+       .globl GL_PREFIX(UniformMatrix2fv) ; .set GL_PREFIX(UniformMatrix2fv), GL_PREFIX(UniformMatrix2fvARB)
+       .globl GL_PREFIX(UniformMatrix3fv) ; .set GL_PREFIX(UniformMatrix3fv), GL_PREFIX(UniformMatrix3fvARB)
+       .globl GL_PREFIX(UniformMatrix4fv) ; .set GL_PREFIX(UniformMatrix4fv), GL_PREFIX(UniformMatrix4fvARB)
+       .globl GL_PREFIX(UseProgram) ; .set GL_PREFIX(UseProgram), GL_PREFIX(UseProgramObjectARB)
+       .globl GL_PREFIX(ValidateProgram) ; .set GL_PREFIX(ValidateProgram), GL_PREFIX(ValidateProgramARB)
+       .globl GL_PREFIX(BindAttribLocation) ; .set GL_PREFIX(BindAttribLocation), GL_PREFIX(BindAttribLocationARB)
+       .globl GL_PREFIX(GetActiveAttrib) ; .set GL_PREFIX(GetActiveAttrib), GL_PREFIX(GetActiveAttribARB)
+       .globl GL_PREFIX(GetAttribLocation) ; .set GL_PREFIX(GetAttribLocation), GL_PREFIX(GetAttribLocationARB)
+       .globl GL_PREFIX(DrawBuffers) ; .set GL_PREFIX(DrawBuffers), GL_PREFIX(DrawBuffersARB)
+       .globl GL_PREFIX(DrawBuffersATI) ; .set GL_PREFIX(DrawBuffersATI), GL_PREFIX(DrawBuffersARB)
+       .globl GL_PREFIX(RenderbufferStorageMultisampleEXT) ; .set GL_PREFIX(RenderbufferStorageMultisampleEXT), GL_PREFIX(RenderbufferStorageMultisample)
+       .globl GL_PREFIX(PointParameterf) ; .set GL_PREFIX(PointParameterf), GL_PREFIX(PointParameterfEXT)
+       .globl GL_PREFIX(PointParameterfARB) ; .set GL_PREFIX(PointParameterfARB), GL_PREFIX(PointParameterfEXT)
+       .globl GL_PREFIX(PointParameterfv) ; .set GL_PREFIX(PointParameterfv), GL_PREFIX(PointParameterfvEXT)
+       .globl GL_PREFIX(PointParameterfvARB) ; .set GL_PREFIX(PointParameterfvARB), GL_PREFIX(PointParameterfvEXT)
+       .globl GL_PREFIX(SecondaryColor3b) ; .set GL_PREFIX(SecondaryColor3b), GL_PREFIX(SecondaryColor3bEXT)
+       .globl GL_PREFIX(SecondaryColor3bv) ; .set GL_PREFIX(SecondaryColor3bv), GL_PREFIX(SecondaryColor3bvEXT)
+       .globl GL_PREFIX(SecondaryColor3d) ; .set GL_PREFIX(SecondaryColor3d), GL_PREFIX(SecondaryColor3dEXT)
+       .globl GL_PREFIX(SecondaryColor3dv) ; .set GL_PREFIX(SecondaryColor3dv), GL_PREFIX(SecondaryColor3dvEXT)
+       .globl GL_PREFIX(SecondaryColor3f) ; .set GL_PREFIX(SecondaryColor3f), GL_PREFIX(SecondaryColor3fEXT)
+       .globl GL_PREFIX(SecondaryColor3fv) ; .set GL_PREFIX(SecondaryColor3fv), GL_PREFIX(SecondaryColor3fvEXT)
+       .globl GL_PREFIX(SecondaryColor3i) ; .set GL_PREFIX(SecondaryColor3i), GL_PREFIX(SecondaryColor3iEXT)
+       .globl GL_PREFIX(SecondaryColor3iv) ; .set GL_PREFIX(SecondaryColor3iv), GL_PREFIX(SecondaryColor3ivEXT)
+       .globl GL_PREFIX(SecondaryColor3s) ; .set GL_PREFIX(SecondaryColor3s), GL_PREFIX(SecondaryColor3sEXT)
+       .globl GL_PREFIX(SecondaryColor3sv) ; .set GL_PREFIX(SecondaryColor3sv), GL_PREFIX(SecondaryColor3svEXT)
+       .globl GL_PREFIX(SecondaryColor3ub) ; .set GL_PREFIX(SecondaryColor3ub), GL_PREFIX(SecondaryColor3ubEXT)
+       .globl GL_PREFIX(SecondaryColor3ubv) ; .set GL_PREFIX(SecondaryColor3ubv), GL_PREFIX(SecondaryColor3ubvEXT)
+       .globl GL_PREFIX(SecondaryColor3ui) ; .set GL_PREFIX(SecondaryColor3ui), GL_PREFIX(SecondaryColor3uiEXT)
+       .globl GL_PREFIX(SecondaryColor3uiv) ; .set GL_PREFIX(SecondaryColor3uiv), GL_PREFIX(SecondaryColor3uivEXT)
+       .globl GL_PREFIX(SecondaryColor3us) ; .set GL_PREFIX(SecondaryColor3us), GL_PREFIX(SecondaryColor3usEXT)
+       .globl GL_PREFIX(SecondaryColor3usv) ; .set GL_PREFIX(SecondaryColor3usv), GL_PREFIX(SecondaryColor3usvEXT)
+       .globl GL_PREFIX(SecondaryColorPointer) ; .set GL_PREFIX(SecondaryColorPointer), GL_PREFIX(SecondaryColorPointerEXT)
+       .globl GL_PREFIX(MultiDrawArrays) ; .set GL_PREFIX(MultiDrawArrays), GL_PREFIX(MultiDrawArraysEXT)
+       .globl GL_PREFIX(MultiDrawElements) ; .set GL_PREFIX(MultiDrawElements), GL_PREFIX(MultiDrawElementsEXT)
+       .globl GL_PREFIX(FogCoordPointer) ; .set GL_PREFIX(FogCoordPointer), GL_PREFIX(FogCoordPointerEXT)
+       .globl GL_PREFIX(FogCoordd) ; .set GL_PREFIX(FogCoordd), GL_PREFIX(FogCoorddEXT)
+       .globl GL_PREFIX(FogCoorddv) ; .set GL_PREFIX(FogCoorddv), GL_PREFIX(FogCoorddvEXT)
+       .globl GL_PREFIX(FogCoordf) ; .set GL_PREFIX(FogCoordf), GL_PREFIX(FogCoordfEXT)
+       .globl GL_PREFIX(FogCoordfv) ; .set GL_PREFIX(FogCoordfv), GL_PREFIX(FogCoordfvEXT)
+       .globl GL_PREFIX(BlendFuncSeparate) ; .set GL_PREFIX(BlendFuncSeparate), GL_PREFIX(BlendFuncSeparateEXT)
+       .globl GL_PREFIX(WindowPos2d) ; .set GL_PREFIX(WindowPos2d), GL_PREFIX(WindowPos2dMESA)
+       .globl GL_PREFIX(WindowPos2dARB) ; .set GL_PREFIX(WindowPos2dARB), GL_PREFIX(WindowPos2dMESA)
+       .globl GL_PREFIX(WindowPos2dv) ; .set GL_PREFIX(WindowPos2dv), GL_PREFIX(WindowPos2dvMESA)
+       .globl GL_PREFIX(WindowPos2dvARB) ; .set GL_PREFIX(WindowPos2dvARB), GL_PREFIX(WindowPos2dvMESA)
+       .globl GL_PREFIX(WindowPos2f) ; .set GL_PREFIX(WindowPos2f), GL_PREFIX(WindowPos2fMESA)
+       .globl GL_PREFIX(WindowPos2fARB) ; .set GL_PREFIX(WindowPos2fARB), GL_PREFIX(WindowPos2fMESA)
+       .globl GL_PREFIX(WindowPos2fv) ; .set GL_PREFIX(WindowPos2fv), GL_PREFIX(WindowPos2fvMESA)
+       .globl GL_PREFIX(WindowPos2fvARB) ; .set GL_PREFIX(WindowPos2fvARB), GL_PREFIX(WindowPos2fvMESA)
+       .globl GL_PREFIX(WindowPos2i) ; .set GL_PREFIX(WindowPos2i), GL_PREFIX(WindowPos2iMESA)
+       .globl GL_PREFIX(WindowPos2iARB) ; .set GL_PREFIX(WindowPos2iARB), GL_PREFIX(WindowPos2iMESA)
+       .globl GL_PREFIX(WindowPos2iv) ; .set GL_PREFIX(WindowPos2iv), GL_PREFIX(WindowPos2ivMESA)
+       .globl GL_PREFIX(WindowPos2ivARB) ; .set GL_PREFIX(WindowPos2ivARB), GL_PREFIX(WindowPos2ivMESA)
+       .globl GL_PREFIX(WindowPos2s) ; .set GL_PREFIX(WindowPos2s), GL_PREFIX(WindowPos2sMESA)
+       .globl GL_PREFIX(WindowPos2sARB) ; .set GL_PREFIX(WindowPos2sARB), GL_PREFIX(WindowPos2sMESA)
+       .globl GL_PREFIX(WindowPos2sv) ; .set GL_PREFIX(WindowPos2sv), GL_PREFIX(WindowPos2svMESA)
+       .globl GL_PREFIX(WindowPos2svARB) ; .set GL_PREFIX(WindowPos2svARB), GL_PREFIX(WindowPos2svMESA)
+       .globl GL_PREFIX(WindowPos3d) ; .set GL_PREFIX(WindowPos3d), GL_PREFIX(WindowPos3dMESA)
+       .globl GL_PREFIX(WindowPos3dARB) ; .set GL_PREFIX(WindowPos3dARB), GL_PREFIX(WindowPos3dMESA)
+       .globl GL_PREFIX(WindowPos3dv) ; .set GL_PREFIX(WindowPos3dv), GL_PREFIX(WindowPos3dvMESA)
+       .globl GL_PREFIX(WindowPos3dvARB) ; .set GL_PREFIX(WindowPos3dvARB), GL_PREFIX(WindowPos3dvMESA)
+       .globl GL_PREFIX(WindowPos3f) ; .set GL_PREFIX(WindowPos3f), GL_PREFIX(WindowPos3fMESA)
+       .globl GL_PREFIX(WindowPos3fARB) ; .set GL_PREFIX(WindowPos3fARB), GL_PREFIX(WindowPos3fMESA)
+       .globl GL_PREFIX(WindowPos3fv) ; .set GL_PREFIX(WindowPos3fv), GL_PREFIX(WindowPos3fvMESA)
+       .globl GL_PREFIX(WindowPos3fvARB) ; .set GL_PREFIX(WindowPos3fvARB), GL_PREFIX(WindowPos3fvMESA)
+       .globl GL_PREFIX(WindowPos3i) ; .set GL_PREFIX(WindowPos3i), GL_PREFIX(WindowPos3iMESA)
+       .globl GL_PREFIX(WindowPos3iARB) ; .set GL_PREFIX(WindowPos3iARB), GL_PREFIX(WindowPos3iMESA)
+       .globl GL_PREFIX(WindowPos3iv) ; .set GL_PREFIX(WindowPos3iv), GL_PREFIX(WindowPos3ivMESA)
+       .globl GL_PREFIX(WindowPos3ivARB) ; .set GL_PREFIX(WindowPos3ivARB), GL_PREFIX(WindowPos3ivMESA)
+       .globl GL_PREFIX(WindowPos3s) ; .set GL_PREFIX(WindowPos3s), GL_PREFIX(WindowPos3sMESA)
+       .globl GL_PREFIX(WindowPos3sARB) ; .set GL_PREFIX(WindowPos3sARB), GL_PREFIX(WindowPos3sMESA)
+       .globl GL_PREFIX(WindowPos3sv) ; .set GL_PREFIX(WindowPos3sv), GL_PREFIX(WindowPos3svMESA)
+       .globl GL_PREFIX(WindowPos3svARB) ; .set GL_PREFIX(WindowPos3svARB), GL_PREFIX(WindowPos3svMESA)
+       .globl GL_PREFIX(BindProgramARB) ; .set GL_PREFIX(BindProgramARB), GL_PREFIX(BindProgramNV)
+       .globl GL_PREFIX(DeleteProgramsARB) ; .set GL_PREFIX(DeleteProgramsARB), GL_PREFIX(DeleteProgramsNV)
+       .globl GL_PREFIX(GenProgramsARB) ; .set GL_PREFIX(GenProgramsARB), GL_PREFIX(GenProgramsNV)
+       .globl GL_PREFIX(GetVertexAttribPointerv) ; .set GL_PREFIX(GetVertexAttribPointerv), GL_PREFIX(GetVertexAttribPointervNV)
+       .globl GL_PREFIX(GetVertexAttribPointervARB) ; .set GL_PREFIX(GetVertexAttribPointervARB), GL_PREFIX(GetVertexAttribPointervNV)
+       .globl GL_PREFIX(IsProgramARB) ; .set GL_PREFIX(IsProgramARB), GL_PREFIX(IsProgramNV)
+       .globl GL_PREFIX(PointParameteri) ; .set GL_PREFIX(PointParameteri), GL_PREFIX(PointParameteriNV)
+       .globl GL_PREFIX(PointParameteriv) ; .set GL_PREFIX(PointParameteriv), GL_PREFIX(PointParameterivNV)
+       .globl GL_PREFIX(DeleteVertexArrays) ; .set GL_PREFIX(DeleteVertexArrays), GL_PREFIX(_dispatch_stub_757)
+       .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_759)
+       .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_767)
+       .globl GL_PREFIX(BindFramebuffer) ; .set GL_PREFIX(BindFramebuffer), GL_PREFIX(BindFramebufferEXT)
+       .globl GL_PREFIX(BindRenderbuffer) ; .set GL_PREFIX(BindRenderbuffer), GL_PREFIX(BindRenderbufferEXT)
+       .globl GL_PREFIX(CheckFramebufferStatus) ; .set GL_PREFIX(CheckFramebufferStatus), GL_PREFIX(CheckFramebufferStatusEXT)
+       .globl GL_PREFIX(DeleteFramebuffers) ; .set GL_PREFIX(DeleteFramebuffers), GL_PREFIX(DeleteFramebuffersEXT)
+       .globl GL_PREFIX(DeleteRenderbuffers) ; .set GL_PREFIX(DeleteRenderbuffers), GL_PREFIX(DeleteRenderbuffersEXT)
+       .globl GL_PREFIX(FramebufferRenderbuffer) ; .set GL_PREFIX(FramebufferRenderbuffer), GL_PREFIX(FramebufferRenderbufferEXT)
+       .globl GL_PREFIX(FramebufferTexture1D) ; .set GL_PREFIX(FramebufferTexture1D), GL_PREFIX(FramebufferTexture1DEXT)
+       .globl GL_PREFIX(FramebufferTexture2D) ; .set GL_PREFIX(FramebufferTexture2D), GL_PREFIX(FramebufferTexture2DEXT)
+       .globl GL_PREFIX(FramebufferTexture3D) ; .set GL_PREFIX(FramebufferTexture3D), GL_PREFIX(FramebufferTexture3DEXT)
+       .globl GL_PREFIX(GenFramebuffers) ; .set GL_PREFIX(GenFramebuffers), GL_PREFIX(GenFramebuffersEXT)
+       .globl GL_PREFIX(GenRenderbuffers) ; .set GL_PREFIX(GenRenderbuffers), GL_PREFIX(GenRenderbuffersEXT)
+       .globl GL_PREFIX(GenerateMipmap) ; .set GL_PREFIX(GenerateMipmap), GL_PREFIX(GenerateMipmapEXT)
+       .globl GL_PREFIX(GetFramebufferAttachmentParameteriv) ; .set GL_PREFIX(GetFramebufferAttachmentParameteriv), GL_PREFIX(GetFramebufferAttachmentParameterivEXT)
+       .globl GL_PREFIX(GetRenderbufferParameteriv) ; .set GL_PREFIX(GetRenderbufferParameteriv), GL_PREFIX(GetRenderbufferParameterivEXT)
+       .globl GL_PREFIX(IsFramebuffer) ; .set GL_PREFIX(IsFramebuffer), GL_PREFIX(IsFramebufferEXT)
+       .globl GL_PREFIX(IsRenderbuffer) ; .set GL_PREFIX(IsRenderbuffer), GL_PREFIX(IsRenderbufferEXT)
+       .globl GL_PREFIX(RenderbufferStorage) ; .set GL_PREFIX(RenderbufferStorage), GL_PREFIX(RenderbufferStorageEXT)
+       .globl GL_PREFIX(BlitFramebuffer) ; .set GL_PREFIX(BlitFramebuffer), GL_PREFIX(_dispatch_stub_785)
+       .globl GL_PREFIX(FramebufferTextureLayer) ; .set GL_PREFIX(FramebufferTextureLayer), GL_PREFIX(FramebufferTextureLayerEXT)
+       .globl GL_PREFIX(BeginTransformFeedback) ; .set GL_PREFIX(BeginTransformFeedback), GL_PREFIX(BeginTransformFeedbackEXT)
+       .globl GL_PREFIX(BindBufferBase) ; .set GL_PREFIX(BindBufferBase), GL_PREFIX(BindBufferBaseEXT)
+       .globl GL_PREFIX(BindBufferRange) ; .set GL_PREFIX(BindBufferRange), GL_PREFIX(BindBufferRangeEXT)
+       .globl GL_PREFIX(EndTransformFeedback) ; .set GL_PREFIX(EndTransformFeedback), GL_PREFIX(EndTransformFeedbackEXT)
+       .globl GL_PREFIX(GetTransformFeedbackVarying) ; .set GL_PREFIX(GetTransformFeedbackVarying), GL_PREFIX(GetTransformFeedbackVaryingEXT)
+       .globl GL_PREFIX(TransformFeedbackVaryings) ; .set GL_PREFIX(TransformFeedbackVaryings), GL_PREFIX(TransformFeedbackVaryingsEXT)
+       .globl GL_PREFIX(ProvokingVertex) ; .set GL_PREFIX(ProvokingVertex), GL_PREFIX(ProvokingVertexEXT)
+
+#if defined(GLX_USE_TLS) && defined(__linux__)
+       .section ".note.ABI-tag", "a"
+       .p2align 2
+       .long   1f - 0f   /* name length */
+       .long   3f - 2f   /* data length */
+       .long   1         /* note length */
+0:     .asciz "GNU"      /* vendor name */
+1:     .p2align 2
+2:     .long   0         /* note data: the ABI tag */
+       .long   2,4,20    /* Minimum kernel version w/TLS */
+3:     .p2align 2        /* pad out section */
+#endif /* GLX_USE_TLS */
+
+#if defined (__ELF__) && defined (__linux__)
+       .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/src/mapi/glapi/glapi_x86.S b/src/mapi/glapi/glapi_x86.S
new file mode 100644 (file)
index 0000000..317f595
--- /dev/null
@@ -0,0 +1,1316 @@
+/* DO NOT EDIT - This file generated automatically by gl_x86_asm.py (from Mesa) script */
+
+/*
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ * (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
+ * BRIAN PAUL, 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 "x86/assyntax.h"
+#include "glapi/glapioffsets.h"
+
+#if defined(STDCALL_API)
+# if defined(USE_MGL_NAMESPACE)
+#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))
+# else
+#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))
+# endif
+#else
+# if defined(USE_MGL_NAMESPACE)
+#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))
+#  define _glapi_Dispatch _mglapi_Dispatch
+# else
+#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))
+# endif
+#endif
+
+#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))
+
+#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)
+#define GLOBL_FN(x) GLOBL x ; .type x, function
+#else
+#define GLOBL_FN(x) GLOBL x
+#endif
+
+#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)
+#  define THREADS
+#endif
+
+#ifdef GLX_USE_TLS
+
+#ifdef GLX_X86_READONLY_TEXT
+# define CTX_INSNS MOV_L(GS:(EAX), EAX)
+#else
+# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */
+#endif
+
+#  define GL_STUB(fn,off,fn_alt)                       \
+ALIGNTEXT16;                                           \
+GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
+GL_PREFIX(fn, fn_alt):                                 \
+       CALL(_x86_get_dispatch) ;                       \
+       CTX_INSNS ;                                     \
+       JMP(GL_OFFSET(off))
+
+#elif defined(PTHREADS)
+#  define GL_STUB(fn,off,fn_alt)                       \
+ALIGNTEXT16;                                           \
+GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
+GL_PREFIX(fn, fn_alt):                                 \
+       MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;  \
+       TEST_L(EAX, EAX) ;                              \
+       JE(1f) ;                                        \
+       JMP(GL_OFFSET(off)) ;                           \
+1:     CALL(_x86_get_dispatch) ;                       \
+       JMP(GL_OFFSET(off))
+#elif defined(THREADS)
+#  define GL_STUB(fn,off,fn_alt)                       \
+ALIGNTEXT16;                                           \
+GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
+GL_PREFIX(fn, fn_alt):                                 \
+       MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;  \
+       TEST_L(EAX, EAX) ;                              \
+       JE(1f) ;                                        \
+       JMP(GL_OFFSET(off)) ;                           \
+1:     CALL(_glapi_get_dispatch) ;                     \
+       JMP(GL_OFFSET(off))
+#else /* Non-threaded version. */
+#  define GL_STUB(fn,off,fn_alt)                       \
+ALIGNTEXT16;                                           \
+GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
+GL_PREFIX(fn, fn_alt):                                 \
+       MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;  \
+       JMP(GL_OFFSET(off))
+#endif
+
+#ifdef HAVE_ALIAS
+#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt) \
+       .globl  GL_PREFIX(fn, fn_alt) ;                 \
+       .set    GL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)
+#else
+#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt) \
+    GL_STUB(fn, off, fn_alt)
+#endif
+
+SEG_TEXT
+
+#ifdef GLX_USE_TLS
+
+       GLOBL   GLNAME(_x86_get_dispatch)
+       HIDDEN(GLNAME(_x86_get_dispatch))
+ALIGNTEXT16
+GLNAME(_x86_get_dispatch):
+       call    1f
+1:     popl    %eax
+       addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax
+       movl    _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax
+       ret
+
+#elif defined(PTHREADS)
+EXTERN GLNAME(_glapi_Dispatch)
+EXTERN GLNAME(_gl_DispatchTSD)
+EXTERN GLNAME(pthread_getspecific)
+
+ALIGNTEXT16
+GLNAME(_x86_get_dispatch):
+       SUB_L(CONST(24), ESP)
+       PUSH_L(GLNAME(_gl_DispatchTSD))
+       CALL(GLNAME(pthread_getspecific))
+       ADD_L(CONST(28), ESP)
+       RET
+#elif defined(THREADS)
+EXTERN GLNAME(_glapi_get_dispatch)
+#endif
+
+#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )
+               .section        wtext, "awx", @progbits
+#endif /* defined( GLX_USE_TLS ) */
+
+               ALIGNTEXT16
+               GLOBL GLNAME(gl_dispatch_functions_start)
+               HIDDEN(GLNAME(gl_dispatch_functions_start))
+GLNAME(gl_dispatch_functions_start):
+
+       GL_STUB(NewList, _gloffset_NewList, NewList@8)
+       GL_STUB(EndList, _gloffset_EndList, EndList@0)
+       GL_STUB(CallList, _gloffset_CallList, CallList@4)
+       GL_STUB(CallLists, _gloffset_CallLists, CallLists@12)
+       GL_STUB(DeleteLists, _gloffset_DeleteLists, DeleteLists@8)
+       GL_STUB(GenLists, _gloffset_GenLists, GenLists@4)
+       GL_STUB(ListBase, _gloffset_ListBase, ListBase@4)
+       GL_STUB(Begin, _gloffset_Begin, Begin@4)
+       GL_STUB(Bitmap, _gloffset_Bitmap, Bitmap@28)
+       GL_STUB(Color3b, _gloffset_Color3b, Color3b@12)
+       GL_STUB(Color3bv, _gloffset_Color3bv, Color3bv@4)
+       GL_STUB(Color3d, _gloffset_Color3d, Color3d@24)
+       GL_STUB(Color3dv, _gloffset_Color3dv, Color3dv@4)
+       GL_STUB(Color3f, _gloffset_Color3f, Color3f@12)
+       GL_STUB(Color3fv, _gloffset_Color3fv, Color3fv@4)
+       GL_STUB(Color3i, _gloffset_Color3i, Color3i@12)
+       GL_STUB(Color3iv, _gloffset_Color3iv, Color3iv@4)
+       GL_STUB(Color3s, _gloffset_Color3s, Color3s@12)
+       GL_STUB(Color3sv, _gloffset_Color3sv, Color3sv@4)
+       GL_STUB(Color3ub, _gloffset_Color3ub, Color3ub@12)
+       GL_STUB(Color3ubv, _gloffset_Color3ubv, Color3ubv@4)
+       GL_STUB(Color3ui, _gloffset_Color3ui, Color3ui@12)
+       GL_STUB(Color3uiv, _gloffset_Color3uiv, Color3uiv@4)
+       GL_STUB(Color3us, _gloffset_Color3us, Color3us@12)
+       GL_STUB(Color3usv, _gloffset_Color3usv, Color3usv@4)
+       GL_STUB(Color4b, _gloffset_Color4b, Color4b@16)
+       GL_STUB(Color4bv, _gloffset_Color4bv, Color4bv@4)
+       GL_STUB(Color4d, _gloffset_Color4d, Color4d@32)
+       GL_STUB(Color4dv, _gloffset_Color4dv, Color4dv@4)
+       GL_STUB(Color4f, _gloffset_Color4f, Color4f@16)
+       GL_STUB(Color4fv, _gloffset_Color4fv, Color4fv@4)
+       GL_STUB(Color4i, _gloffset_Color4i, Color4i@16)
+       GL_STUB(Color4iv, _gloffset_Color4iv, Color4iv@4)
+       GL_STUB(Color4s, _gloffset_Color4s, Color4s@16)
+       GL_STUB(Color4sv, _gloffset_Color4sv, Color4sv@4)
+       GL_STUB(Color4ub, _gloffset_Color4ub, Color4ub@16)
+       GL_STUB(Color4ubv, _gloffset_Color4ubv, Color4ubv@4)
+       GL_STUB(Color4ui, _gloffset_Color4ui, Color4ui@16)
+       GL_STUB(Color4uiv, _gloffset_Color4uiv, Color4uiv@4)
+       GL_STUB(Color4us, _gloffset_Color4us, Color4us@16)
+       GL_STUB(Color4usv, _gloffset_Color4usv, Color4usv@4)
+       GL_STUB(EdgeFlag, _gloffset_EdgeFlag, EdgeFlag@4)
+       GL_STUB(EdgeFlagv, _gloffset_EdgeFlagv, EdgeFlagv@4)
+       GL_STUB(End, _gloffset_End, End@0)
+       GL_STUB(Indexd, _gloffset_Indexd, Indexd@8)
+       GL_STUB(Indexdv, _gloffset_Indexdv, Indexdv@4)
+       GL_STUB(Indexf, _gloffset_Indexf, Indexf@4)
+       GL_STUB(Indexfv, _gloffset_Indexfv, Indexfv@4)
+       GL_STUB(Indexi, _gloffset_Indexi, Indexi@4)
+       GL_STUB(Indexiv, _gloffset_Indexiv, Indexiv@4)
+       GL_STUB(Indexs, _gloffset_Indexs, Indexs@4)
+       GL_STUB(Indexsv, _gloffset_Indexsv, Indexsv@4)
+       GL_STUB(Normal3b, _gloffset_Normal3b, Normal3b@12)
+       GL_STUB(Normal3bv, _gloffset_Normal3bv, Normal3bv@4)
+       GL_STUB(Normal3d, _gloffset_Normal3d, Normal3d@24)
+       GL_STUB(Normal3dv, _gloffset_Normal3dv, Normal3dv@4)
+       GL_STUB(Normal3f, _gloffset_Normal3f, Normal3f@12)
+       GL_STUB(Normal3fv, _gloffset_Normal3fv, Normal3fv@4)
+       GL_STUB(Normal3i, _gloffset_Normal3i, Normal3i@12)
+       GL_STUB(Normal3iv, _gloffset_Normal3iv, Normal3iv@4)
+       GL_STUB(Normal3s, _gloffset_Normal3s, Normal3s@12)
+       GL_STUB(Normal3sv, _gloffset_Normal3sv, Normal3sv@4)
+       GL_STUB(RasterPos2d, _gloffset_RasterPos2d, RasterPos2d@16)
+       GL_STUB(RasterPos2dv, _gloffset_RasterPos2dv, RasterPos2dv@4)
+       GL_STUB(RasterPos2f, _gloffset_RasterPos2f, RasterPos2f@8)
+       GL_STUB(RasterPos2fv, _gloffset_RasterPos2fv, RasterPos2fv@4)
+       GL_STUB(RasterPos2i, _gloffset_RasterPos2i, RasterPos2i@8)
+       GL_STUB(RasterPos2iv, _gloffset_RasterPos2iv, RasterPos2iv@4)
+       GL_STUB(RasterPos2s, _gloffset_RasterPos2s, RasterPos2s@8)
+       GL_STUB(RasterPos2sv, _gloffset_RasterPos2sv, RasterPos2sv@4)
+       GL_STUB(RasterPos3d, _gloffset_RasterPos3d, RasterPos3d@24)
+       GL_STUB(RasterPos3dv, _gloffset_RasterPos3dv, RasterPos3dv@4)
+       GL_STUB(RasterPos3f, _gloffset_RasterPos3f, RasterPos3f@12)
+       GL_STUB(RasterPos3fv, _gloffset_RasterPos3fv, RasterPos3fv@4)
+       GL_STUB(RasterPos3i, _gloffset_RasterPos3i, RasterPos3i@12)
+       GL_STUB(RasterPos3iv, _gloffset_RasterPos3iv, RasterPos3iv@4)
+       GL_STUB(RasterPos3s, _gloffset_RasterPos3s, RasterPos3s@12)
+       GL_STUB(RasterPos3sv, _gloffset_RasterPos3sv, RasterPos3sv@4)
+       GL_STUB(RasterPos4d, _gloffset_RasterPos4d, RasterPos4d@32)
+       GL_STUB(RasterPos4dv, _gloffset_RasterPos4dv, RasterPos4dv@4)
+       GL_STUB(RasterPos4f, _gloffset_RasterPos4f, RasterPos4f@16)
+       GL_STUB(RasterPos4fv, _gloffset_RasterPos4fv, RasterPos4fv@4)
+       GL_STUB(RasterPos4i, _gloffset_RasterPos4i, RasterPos4i@16)
+       GL_STUB(RasterPos4iv, _gloffset_RasterPos4iv, RasterPos4iv@4)
+       GL_STUB(RasterPos4s, _gloffset_RasterPos4s, RasterPos4s@16)
+       GL_STUB(RasterPos4sv, _gloffset_RasterPos4sv, RasterPos4sv@4)
+       GL_STUB(Rectd, _gloffset_Rectd, Rectd@32)
+       GL_STUB(Rectdv, _gloffset_Rectdv, Rectdv@8)
+       GL_STUB(Rectf, _gloffset_Rectf, Rectf@16)
+       GL_STUB(Rectfv, _gloffset_Rectfv, Rectfv@8)
+       GL_STUB(Recti, _gloffset_Recti, Recti@16)
+       GL_STUB(Rectiv, _gloffset_Rectiv, Rectiv@8)
+       GL_STUB(Rects, _gloffset_Rects, Rects@16)
+       GL_STUB(Rectsv, _gloffset_Rectsv, Rectsv@8)
+       GL_STUB(TexCoord1d, _gloffset_TexCoord1d, TexCoord1d@8)
+       GL_STUB(TexCoord1dv, _gloffset_TexCoord1dv, TexCoord1dv@4)
+       GL_STUB(TexCoord1f, _gloffset_TexCoord1f, TexCoord1f@4)
+       GL_STUB(TexCoord1fv, _gloffset_TexCoord1fv, TexCoord1fv@4)
+       GL_STUB(TexCoord1i, _gloffset_TexCoord1i, TexCoord1i@4)
+       GL_STUB(TexCoord1iv, _gloffset_TexCoord1iv, TexCoord1iv@4)
+       GL_STUB(TexCoord1s, _gloffset_TexCoord1s, TexCoord1s@4)
+       GL_STUB(TexCoord1sv, _gloffset_TexCoord1sv, TexCoord1sv@4)
+       GL_STUB(TexCoord2d, _gloffset_TexCoord2d, TexCoord2d@16)
+       GL_STUB(TexCoord2dv, _gloffset_TexCoord2dv, TexCoord2dv@4)
+       GL_STUB(TexCoord2f, _gloffset_TexCoord2f, TexCoord2f@8)
+       GL_STUB(TexCoord2fv, _gloffset_TexCoord2fv, TexCoord2fv@4)
+       GL_STUB(TexCoord2i, _gloffset_TexCoord2i, TexCoord2i@8)
+       GL_STUB(TexCoord2iv, _gloffset_TexCoord2iv, TexCoord2iv@4)
+       GL_STUB(TexCoord2s, _gloffset_TexCoord2s, TexCoord2s@8)
+       GL_STUB(TexCoord2sv, _gloffset_TexCoord2sv, TexCoord2sv@4)
+       GL_STUB(TexCoord3d, _gloffset_TexCoord3d, TexCoord3d@24)
+       GL_STUB(TexCoord3dv, _gloffset_TexCoord3dv, TexCoord3dv@4)
+       GL_STUB(TexCoord3f, _gloffset_TexCoord3f, TexCoord3f@12)
+       GL_STUB(TexCoord3fv, _gloffset_TexCoord3fv, TexCoord3fv@4)
+       GL_STUB(TexCoord3i, _gloffset_TexCoord3i, TexCoord3i@12)
+       GL_STUB(TexCoord3iv, _gloffset_TexCoord3iv, TexCoord3iv@4)
+       GL_STUB(TexCoord3s, _gloffset_TexCoord3s, TexCoord3s@12)
+       GL_STUB(TexCoord3sv, _gloffset_TexCoord3sv, TexCoord3sv@4)
+       GL_STUB(TexCoord4d, _gloffset_TexCoord4d, TexCoord4d@32)
+       GL_STUB(TexCoord4dv, _gloffset_TexCoord4dv, TexCoord4dv@4)
+       GL_STUB(TexCoord4f, _gloffset_TexCoord4f, TexCoord4f@16)
+       GL_STUB(TexCoord4fv, _gloffset_TexCoord4fv, TexCoord4fv@4)
+       GL_STUB(TexCoord4i, _gloffset_TexCoord4i, TexCoord4i@16)
+       GL_STUB(TexCoord4iv, _gloffset_TexCoord4iv, TexCoord4iv@4)
+       GL_STUB(TexCoord4s, _gloffset_TexCoord4s, TexCoord4s@16)
+       GL_STUB(TexCoord4sv, _gloffset_TexCoord4sv, TexCoord4sv@4)
+       GL_STUB(Vertex2d, _gloffset_Vertex2d, Vertex2d@16)
+       GL_STUB(Vertex2dv, _gloffset_Vertex2dv, Vertex2dv@4)
+       GL_STUB(Vertex2f, _gloffset_Vertex2f, Vertex2f@8)
+       GL_STUB(Vertex2fv, _gloffset_Vertex2fv, Vertex2fv@4)
+       GL_STUB(Vertex2i, _gloffset_Vertex2i, Vertex2i@8)
+       GL_STUB(Vertex2iv, _gloffset_Vertex2iv, Vertex2iv@4)
+       GL_STUB(Vertex2s, _gloffset_Vertex2s, Vertex2s@8)
+       GL_STUB(Vertex2sv, _gloffset_Vertex2sv, Vertex2sv@4)
+       GL_STUB(Vertex3d, _gloffset_Vertex3d, Vertex3d@24)
+       GL_STUB(Vertex3dv, _gloffset_Vertex3dv, Vertex3dv@4)
+       GL_STUB(Vertex3f, _gloffset_Vertex3f, Vertex3f@12)
+       GL_STUB(Vertex3fv, _gloffset_Vertex3fv, Vertex3fv@4)
+       GL_STUB(Vertex3i, _gloffset_Vertex3i, Vertex3i@12)
+       GL_STUB(Vertex3iv, _gloffset_Vertex3iv, Vertex3iv@4)
+       GL_STUB(Vertex3s, _gloffset_Vertex3s, Vertex3s@12)
+       GL_STUB(Vertex3sv, _gloffset_Vertex3sv, Vertex3sv@4)
+       GL_STUB(Vertex4d, _gloffset_Vertex4d, Vertex4d@32)
+       GL_STUB(Vertex4dv, _gloffset_Vertex4dv, Vertex4dv@4)
+       GL_STUB(Vertex4f, _gloffset_Vertex4f, Vertex4f@16)
+       GL_STUB(Vertex4fv, _gloffset_Vertex4fv, Vertex4fv@4)
+       GL_STUB(Vertex4i, _gloffset_Vertex4i, Vertex4i@16)
+       GL_STUB(Vertex4iv, _gloffset_Vertex4iv, Vertex4iv@4)
+       GL_STUB(Vertex4s, _gloffset_Vertex4s, Vertex4s@16)
+       GL_STUB(Vertex4sv, _gloffset_Vertex4sv, Vertex4sv@4)
+       GL_STUB(ClipPlane, _gloffset_ClipPlane, ClipPlane@8)
+       GL_STUB(ColorMaterial, _gloffset_ColorMaterial, ColorMaterial@8)
+       GL_STUB(CullFace, _gloffset_CullFace, CullFace@4)
+       GL_STUB(Fogf, _gloffset_Fogf, Fogf@8)
+       GL_STUB(Fogfv, _gloffset_Fogfv, Fogfv@8)
+       GL_STUB(Fogi, _gloffset_Fogi, Fogi@8)
+       GL_STUB(Fogiv, _gloffset_Fogiv, Fogiv@8)
+       GL_STUB(FrontFace, _gloffset_FrontFace, FrontFace@4)
+       GL_STUB(Hint, _gloffset_Hint, Hint@8)
+       GL_STUB(Lightf, _gloffset_Lightf, Lightf@12)
+       GL_STUB(Lightfv, _gloffset_Lightfv, Lightfv@12)
+       GL_STUB(Lighti, _gloffset_Lighti, Lighti@12)
+       GL_STUB(Lightiv, _gloffset_Lightiv, Lightiv@12)
+       GL_STUB(LightModelf, _gloffset_LightModelf, LightModelf@8)
+       GL_STUB(LightModelfv, _gloffset_LightModelfv, LightModelfv@8)
+       GL_STUB(LightModeli, _gloffset_LightModeli, LightModeli@8)
+       GL_STUB(LightModeliv, _gloffset_LightModeliv, LightModeliv@8)
+       GL_STUB(LineStipple, _gloffset_LineStipple, LineStipple@8)
+       GL_STUB(LineWidth, _gloffset_LineWidth, LineWidth@4)
+       GL_STUB(Materialf, _gloffset_Materialf, Materialf@12)
+       GL_STUB(Materialfv, _gloffset_Materialfv, Materialfv@12)
+       GL_STUB(Materiali, _gloffset_Materiali, Materiali@12)
+       GL_STUB(Materialiv, _gloffset_Materialiv, Materialiv@12)
+       GL_STUB(PointSize, _gloffset_PointSize, PointSize@4)
+       GL_STUB(PolygonMode, _gloffset_PolygonMode, PolygonMode@8)
+       GL_STUB(PolygonStipple, _gloffset_PolygonStipple, PolygonStipple@4)
+       GL_STUB(Scissor, _gloffset_Scissor, Scissor@16)
+       GL_STUB(ShadeModel, _gloffset_ShadeModel, ShadeModel@4)
+       GL_STUB(TexParameterf, _gloffset_TexParameterf, TexParameterf@12)
+       GL_STUB(TexParameterfv, _gloffset_TexParameterfv, TexParameterfv@12)
+       GL_STUB(TexParameteri, _gloffset_TexParameteri, TexParameteri@12)
+       GL_STUB(TexParameteriv, _gloffset_TexParameteriv, TexParameteriv@12)
+       GL_STUB(TexImage1D, _gloffset_TexImage1D, TexImage1D@32)
+       GL_STUB(TexImage2D, _gloffset_TexImage2D, TexImage2D@36)
+       GL_STUB(TexEnvf, _gloffset_TexEnvf, TexEnvf@12)
+       GL_STUB(TexEnvfv, _gloffset_TexEnvfv, TexEnvfv@12)
+       GL_STUB(TexEnvi, _gloffset_TexEnvi, TexEnvi@12)
+       GL_STUB(TexEnviv, _gloffset_TexEnviv, TexEnviv@12)
+       GL_STUB(TexGend, _gloffset_TexGend, TexGend@16)
+       GL_STUB(TexGendv, _gloffset_TexGendv, TexGendv@12)
+       GL_STUB(TexGenf, _gloffset_TexGenf, TexGenf@12)
+       GL_STUB(TexGenfv, _gloffset_TexGenfv, TexGenfv@12)
+       GL_STUB(TexGeni, _gloffset_TexGeni, TexGeni@12)
+       GL_STUB(TexGeniv, _gloffset_TexGeniv, TexGeniv@12)
+       GL_STUB(FeedbackBuffer, _gloffset_FeedbackBuffer, FeedbackBuffer@12)
+       GL_STUB(SelectBuffer, _gloffset_SelectBuffer, SelectBuffer@8)
+       GL_STUB(RenderMode, _gloffset_RenderMode, RenderMode@4)
+       GL_STUB(InitNames, _gloffset_InitNames, InitNames@0)
+       GL_STUB(LoadName, _gloffset_LoadName, LoadName@4)
+       GL_STUB(PassThrough, _gloffset_PassThrough, PassThrough@4)
+       GL_STUB(PopName, _gloffset_PopName, PopName@0)
+       GL_STUB(PushName, _gloffset_PushName, PushName@4)
+       GL_STUB(DrawBuffer, _gloffset_DrawBuffer, DrawBuffer@4)
+       GL_STUB(Clear, _gloffset_Clear, Clear@4)
+       GL_STUB(ClearAccum, _gloffset_ClearAccum, ClearAccum@16)
+       GL_STUB(ClearIndex, _gloffset_ClearIndex, ClearIndex@4)
+       GL_STUB(ClearColor, _gloffset_ClearColor, ClearColor@16)
+       GL_STUB(ClearStencil, _gloffset_ClearStencil, ClearStencil@4)
+       GL_STUB(ClearDepth, _gloffset_ClearDepth, ClearDepth@8)
+       GL_STUB(StencilMask, _gloffset_StencilMask, StencilMask@4)
+       GL_STUB(ColorMask, _gloffset_ColorMask, ColorMask@16)
+       GL_STUB(DepthMask, _gloffset_DepthMask, DepthMask@4)
+       GL_STUB(IndexMask, _gloffset_IndexMask, IndexMask@4)
+       GL_STUB(Accum, _gloffset_Accum, Accum@8)
+       GL_STUB(Disable, _gloffset_Disable, Disable@4)
+       GL_STUB(Enable, _gloffset_Enable, Enable@4)
+       GL_STUB(Finish, _gloffset_Finish, Finish@0)
+       GL_STUB(Flush, _gloffset_Flush, Flush@0)
+       GL_STUB(PopAttrib, _gloffset_PopAttrib, PopAttrib@0)
+       GL_STUB(PushAttrib, _gloffset_PushAttrib, PushAttrib@4)
+       GL_STUB(Map1d, _gloffset_Map1d, Map1d@32)
+       GL_STUB(Map1f, _gloffset_Map1f, Map1f@24)
+       GL_STUB(Map2d, _gloffset_Map2d, Map2d@56)
+       GL_STUB(Map2f, _gloffset_Map2f, Map2f@40)
+       GL_STUB(MapGrid1d, _gloffset_MapGrid1d, MapGrid1d@20)
+       GL_STUB(MapGrid1f, _gloffset_MapGrid1f, MapGrid1f@12)
+       GL_STUB(MapGrid2d, _gloffset_MapGrid2d, MapGrid2d@40)
+       GL_STUB(MapGrid2f, _gloffset_MapGrid2f, MapGrid2f@24)
+       GL_STUB(EvalCoord1d, _gloffset_EvalCoord1d, EvalCoord1d@8)
+       GL_STUB(EvalCoord1dv, _gloffset_EvalCoord1dv, EvalCoord1dv@4)
+       GL_STUB(EvalCoord1f, _gloffset_EvalCoord1f, EvalCoord1f@4)
+       GL_STUB(EvalCoord1fv, _gloffset_EvalCoord1fv, EvalCoord1fv@4)
+       GL_STUB(EvalCoord2d, _gloffset_EvalCoord2d, EvalCoord2d@16)
+       GL_STUB(EvalCoord2dv, _gloffset_EvalCoord2dv, EvalCoord2dv@4)
+       GL_STUB(EvalCoord2f, _gloffset_EvalCoord2f, EvalCoord2f@8)
+       GL_STUB(EvalCoord2fv, _gloffset_EvalCoord2fv, EvalCoord2fv@4)
+       GL_STUB(EvalMesh1, _gloffset_EvalMesh1, EvalMesh1@12)
+       GL_STUB(EvalPoint1, _gloffset_EvalPoint1, EvalPoint1@4)
+       GL_STUB(EvalMesh2, _gloffset_EvalMesh2, EvalMesh2@20)
+       GL_STUB(EvalPoint2, _gloffset_EvalPoint2, EvalPoint2@8)
+       GL_STUB(AlphaFunc, _gloffset_AlphaFunc, AlphaFunc@8)
+       GL_STUB(BlendFunc, _gloffset_BlendFunc, BlendFunc@8)
+       GL_STUB(LogicOp, _gloffset_LogicOp, LogicOp@4)
+       GL_STUB(StencilFunc, _gloffset_StencilFunc, StencilFunc@12)
+       GL_STUB(StencilOp, _gloffset_StencilOp, StencilOp@12)
+       GL_STUB(DepthFunc, _gloffset_DepthFunc, DepthFunc@4)
+       GL_STUB(PixelZoom, _gloffset_PixelZoom, PixelZoom@8)
+       GL_STUB(PixelTransferf, _gloffset_PixelTransferf, PixelTransferf@8)
+       GL_STUB(PixelTransferi, _gloffset_PixelTransferi, PixelTransferi@8)
+       GL_STUB(PixelStoref, _gloffset_PixelStoref, PixelStoref@8)
+       GL_STUB(PixelStorei, _gloffset_PixelStorei, PixelStorei@8)
+       GL_STUB(PixelMapfv, _gloffset_PixelMapfv, PixelMapfv@12)
+       GL_STUB(PixelMapuiv, _gloffset_PixelMapuiv, PixelMapuiv@12)
+       GL_STUB(PixelMapusv, _gloffset_PixelMapusv, PixelMapusv@12)
+       GL_STUB(ReadBuffer, _gloffset_ReadBuffer, ReadBuffer@4)
+       GL_STUB(CopyPixels, _gloffset_CopyPixels, CopyPixels@20)
+       GL_STUB(ReadPixels, _gloffset_ReadPixels, ReadPixels@28)
+       GL_STUB(DrawPixels, _gloffset_DrawPixels, DrawPixels@20)
+       GL_STUB(GetBooleanv, _gloffset_GetBooleanv, GetBooleanv@8)
+       GL_STUB(GetClipPlane, _gloffset_GetClipPlane, GetClipPlane@8)
+       GL_STUB(GetDoublev, _gloffset_GetDoublev, GetDoublev@8)
+       GL_STUB(GetError, _gloffset_GetError, GetError@0)
+       GL_STUB(GetFloatv, _gloffset_GetFloatv, GetFloatv@8)
+       GL_STUB(GetIntegerv, _gloffset_GetIntegerv, GetIntegerv@8)
+       GL_STUB(GetLightfv, _gloffset_GetLightfv, GetLightfv@12)
+       GL_STUB(GetLightiv, _gloffset_GetLightiv, GetLightiv@12)
+       GL_STUB(GetMapdv, _gloffset_GetMapdv, GetMapdv@12)
+       GL_STUB(GetMapfv, _gloffset_GetMapfv, GetMapfv@12)
+       GL_STUB(GetMapiv, _gloffset_GetMapiv, GetMapiv@12)
+       GL_STUB(GetMaterialfv, _gloffset_GetMaterialfv, GetMaterialfv@12)
+       GL_STUB(GetMaterialiv, _gloffset_GetMaterialiv, GetMaterialiv@12)
+       GL_STUB(GetPixelMapfv, _gloffset_GetPixelMapfv, GetPixelMapfv@8)
+       GL_STUB(GetPixelMapuiv, _gloffset_GetPixelMapuiv, GetPixelMapuiv@8)
+       GL_STUB(GetPixelMapusv, _gloffset_GetPixelMapusv, GetPixelMapusv@8)
+       GL_STUB(GetPolygonStipple, _gloffset_GetPolygonStipple, GetPolygonStipple@4)
+       GL_STUB(GetString, _gloffset_GetString, GetString@4)
+       GL_STUB(GetTexEnvfv, _gloffset_GetTexEnvfv, GetTexEnvfv@12)
+       GL_STUB(GetTexEnviv, _gloffset_GetTexEnviv, GetTexEnviv@12)
+       GL_STUB(GetTexGendv, _gloffset_GetTexGendv, GetTexGendv@12)
+       GL_STUB(GetTexGenfv, _gloffset_GetTexGenfv, GetTexGenfv@12)
+       GL_STUB(GetTexGeniv, _gloffset_GetTexGeniv, GetTexGeniv@12)
+       GL_STUB(GetTexImage, _gloffset_GetTexImage, GetTexImage@20)
+       GL_STUB(GetTexParameterfv, _gloffset_GetTexParameterfv, GetTexParameterfv@12)
+       GL_STUB(GetTexParameteriv, _gloffset_GetTexParameteriv, GetTexParameteriv@12)
+       GL_STUB(GetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv, GetTexLevelParameterfv@16)
+       GL_STUB(GetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv, GetTexLevelParameteriv@16)
+       GL_STUB(IsEnabled, _gloffset_IsEnabled, IsEnabled@4)
+       GL_STUB(IsList, _gloffset_IsList, IsList@4)
+       GL_STUB(DepthRange, _gloffset_DepthRange, DepthRange@16)
+       GL_STUB(Frustum, _gloffset_Frustum, Frustum@48)
+       GL_STUB(LoadIdentity, _gloffset_LoadIdentity, LoadIdentity@0)
+       GL_STUB(LoadMatrixf, _gloffset_LoadMatrixf, LoadMatrixf@4)
+       GL_STUB(LoadMatrixd, _gloffset_LoadMatrixd, LoadMatrixd@4)
+       GL_STUB(MatrixMode, _gloffset_MatrixMode, MatrixMode@4)
+       GL_STUB(MultMatrixf, _gloffset_MultMatrixf, MultMatrixf@4)
+       GL_STUB(MultMatrixd, _gloffset_MultMatrixd, MultMatrixd@4)
+       GL_STUB(Ortho, _gloffset_Ortho, Ortho@48)
+       GL_STUB(PopMatrix, _gloffset_PopMatrix, PopMatrix@0)
+       GL_STUB(PushMatrix, _gloffset_PushMatrix, PushMatrix@0)
+       GL_STUB(Rotated, _gloffset_Rotated, Rotated@32)
+       GL_STUB(Rotatef, _gloffset_Rotatef, Rotatef@16)
+       GL_STUB(Scaled, _gloffset_Scaled, Scaled@24)
+       GL_STUB(Scalef, _gloffset_Scalef, Scalef@12)
+       GL_STUB(Translated, _gloffset_Translated, Translated@24)
+       GL_STUB(Translatef, _gloffset_Translatef, Translatef@12)
+       GL_STUB(Viewport, _gloffset_Viewport, Viewport@16)
+       GL_STUB(ArrayElement, _gloffset_ArrayElement, ArrayElement@4)
+       GL_STUB(BindTexture, _gloffset_BindTexture, BindTexture@8)
+       GL_STUB(ColorPointer, _gloffset_ColorPointer, ColorPointer@16)
+       GL_STUB(DisableClientState, _gloffset_DisableClientState, DisableClientState@4)
+       GL_STUB(DrawArrays, _gloffset_DrawArrays, DrawArrays@12)
+       GL_STUB(DrawElements, _gloffset_DrawElements, DrawElements@16)
+       GL_STUB(EdgeFlagPointer, _gloffset_EdgeFlagPointer, EdgeFlagPointer@8)
+       GL_STUB(EnableClientState, _gloffset_EnableClientState, EnableClientState@4)
+       GL_STUB(IndexPointer, _gloffset_IndexPointer, IndexPointer@12)
+       GL_STUB(Indexub, _gloffset_Indexub, Indexub@4)
+       GL_STUB(Indexubv, _gloffset_Indexubv, Indexubv@4)
+       GL_STUB(InterleavedArrays, _gloffset_InterleavedArrays, InterleavedArrays@12)
+       GL_STUB(NormalPointer, _gloffset_NormalPointer, NormalPointer@12)
+       GL_STUB(PolygonOffset, _gloffset_PolygonOffset, PolygonOffset@8)
+       GL_STUB(TexCoordPointer, _gloffset_TexCoordPointer, TexCoordPointer@16)
+       GL_STUB(VertexPointer, _gloffset_VertexPointer, VertexPointer@16)
+       GL_STUB(AreTexturesResident, _gloffset_AreTexturesResident, AreTexturesResident@12)
+       GL_STUB(CopyTexImage1D, _gloffset_CopyTexImage1D, CopyTexImage1D@28)
+       GL_STUB(CopyTexImage2D, _gloffset_CopyTexImage2D, CopyTexImage2D@32)
+       GL_STUB(CopyTexSubImage1D, _gloffset_CopyTexSubImage1D, CopyTexSubImage1D@24)
+       GL_STUB(CopyTexSubImage2D, _gloffset_CopyTexSubImage2D, CopyTexSubImage2D@32)
+       GL_STUB(DeleteTextures, _gloffset_DeleteTextures, DeleteTextures@8)
+       GL_STUB(GenTextures, _gloffset_GenTextures, GenTextures@8)
+       GL_STUB(GetPointerv, _gloffset_GetPointerv, GetPointerv@8)
+       GL_STUB(IsTexture, _gloffset_IsTexture, IsTexture@4)
+       GL_STUB(PrioritizeTextures, _gloffset_PrioritizeTextures, PrioritizeTextures@12)
+       GL_STUB(TexSubImage1D, _gloffset_TexSubImage1D, TexSubImage1D@28)
+       GL_STUB(TexSubImage2D, _gloffset_TexSubImage2D, TexSubImage2D@36)
+       GL_STUB(PopClientAttrib, _gloffset_PopClientAttrib, PopClientAttrib@0)
+       GL_STUB(PushClientAttrib, _gloffset_PushClientAttrib, PushClientAttrib@4)
+       GL_STUB(BlendColor, _gloffset_BlendColor, BlendColor@16)
+       GL_STUB(BlendEquation, _gloffset_BlendEquation, BlendEquation@4)
+       GL_STUB(DrawRangeElements, _gloffset_DrawRangeElements, DrawRangeElements@24)
+       GL_STUB(ColorTable, _gloffset_ColorTable, ColorTable@24)
+       GL_STUB(ColorTableParameterfv, _gloffset_ColorTableParameterfv, ColorTableParameterfv@12)
+       GL_STUB(ColorTableParameteriv, _gloffset_ColorTableParameteriv, ColorTableParameteriv@12)
+       GL_STUB(CopyColorTable, _gloffset_CopyColorTable, CopyColorTable@20)
+       GL_STUB(GetColorTable, _gloffset_GetColorTable, GetColorTable@16)
+       GL_STUB(GetColorTableParameterfv, _gloffset_GetColorTableParameterfv, GetColorTableParameterfv@12)
+       GL_STUB(GetColorTableParameteriv, _gloffset_GetColorTableParameteriv, GetColorTableParameteriv@12)
+       GL_STUB(ColorSubTable, _gloffset_ColorSubTable, ColorSubTable@24)
+       GL_STUB(CopyColorSubTable, _gloffset_CopyColorSubTable, CopyColorSubTable@20)
+       GL_STUB(ConvolutionFilter1D, _gloffset_ConvolutionFilter1D, ConvolutionFilter1D@24)
+       GL_STUB(ConvolutionFilter2D, _gloffset_ConvolutionFilter2D, ConvolutionFilter2D@28)
+       GL_STUB(ConvolutionParameterf, _gloffset_ConvolutionParameterf, ConvolutionParameterf@12)
+       GL_STUB(ConvolutionParameterfv, _gloffset_ConvolutionParameterfv, ConvolutionParameterfv@12)
+       GL_STUB(ConvolutionParameteri, _gloffset_ConvolutionParameteri, ConvolutionParameteri@12)
+       GL_STUB(ConvolutionParameteriv, _gloffset_ConvolutionParameteriv, ConvolutionParameteriv@12)
+       GL_STUB(CopyConvolutionFilter1D, _gloffset_CopyConvolutionFilter1D, CopyConvolutionFilter1D@20)
+       GL_STUB(CopyConvolutionFilter2D, _gloffset_CopyConvolutionFilter2D, CopyConvolutionFilter2D@24)
+       GL_STUB(GetConvolutionFilter, _gloffset_GetConvolutionFilter, GetConvolutionFilter@16)
+       GL_STUB(GetConvolutionParameterfv, _gloffset_GetConvolutionParameterfv, GetConvolutionParameterfv@12)
+       GL_STUB(GetConvolutionParameteriv, _gloffset_GetConvolutionParameteriv, GetConvolutionParameteriv@12)
+       GL_STUB(GetSeparableFilter, _gloffset_GetSeparableFilter, GetSeparableFilter@24)
+       GL_STUB(SeparableFilter2D, _gloffset_SeparableFilter2D, SeparableFilter2D@32)
+       GL_STUB(GetHistogram, _gloffset_GetHistogram, GetHistogram@20)
+       GL_STUB(GetHistogramParameterfv, _gloffset_GetHistogramParameterfv, GetHistogramParameterfv@12)
+       GL_STUB(GetHistogramParameteriv, _gloffset_GetHistogramParameteriv, GetHistogramParameteriv@12)
+       GL_STUB(GetMinmax, _gloffset_GetMinmax, GetMinmax@20)
+       GL_STUB(GetMinmaxParameterfv, _gloffset_GetMinmaxParameterfv, GetMinmaxParameterfv@12)
+       GL_STUB(GetMinmaxParameteriv, _gloffset_GetMinmaxParameteriv, GetMinmaxParameteriv@12)
+       GL_STUB(Histogram, _gloffset_Histogram, Histogram@16)
+       GL_STUB(Minmax, _gloffset_Minmax, Minmax@12)
+       GL_STUB(ResetHistogram, _gloffset_ResetHistogram, ResetHistogram@4)
+       GL_STUB(ResetMinmax, _gloffset_ResetMinmax, ResetMinmax@4)
+       GL_STUB(TexImage3D, _gloffset_TexImage3D, TexImage3D@40)
+       GL_STUB(TexSubImage3D, _gloffset_TexSubImage3D, TexSubImage3D@44)
+       GL_STUB(CopyTexSubImage3D, _gloffset_CopyTexSubImage3D, CopyTexSubImage3D@36)
+       GL_STUB(ActiveTextureARB, _gloffset_ActiveTextureARB, ActiveTextureARB@4)
+       GL_STUB(ClientActiveTextureARB, _gloffset_ClientActiveTextureARB, ClientActiveTextureARB@4)
+       GL_STUB(MultiTexCoord1dARB, _gloffset_MultiTexCoord1dARB, MultiTexCoord1dARB@12)
+       GL_STUB(MultiTexCoord1dvARB, _gloffset_MultiTexCoord1dvARB, MultiTexCoord1dvARB@8)
+       GL_STUB(MultiTexCoord1fARB, _gloffset_MultiTexCoord1fARB, MultiTexCoord1fARB@8)
+       GL_STUB(MultiTexCoord1fvARB, _gloffset_MultiTexCoord1fvARB, MultiTexCoord1fvARB@8)
+       GL_STUB(MultiTexCoord1iARB, _gloffset_MultiTexCoord1iARB, MultiTexCoord1iARB@8)
+       GL_STUB(MultiTexCoord1ivARB, _gloffset_MultiTexCoord1ivARB, MultiTexCoord1ivARB@8)
+       GL_STUB(MultiTexCoord1sARB, _gloffset_MultiTexCoord1sARB, MultiTexCoord1sARB@8)
+       GL_STUB(MultiTexCoord1svARB, _gloffset_MultiTexCoord1svARB, MultiTexCoord1svARB@8)
+       GL_STUB(MultiTexCoord2dARB, _gloffset_MultiTexCoord2dARB, MultiTexCoord2dARB@20)
+       GL_STUB(MultiTexCoord2dvARB, _gloffset_MultiTexCoord2dvARB, MultiTexCoord2dvARB@8)
+       GL_STUB(MultiTexCoord2fARB, _gloffset_MultiTexCoord2fARB, MultiTexCoord2fARB@12)
+       GL_STUB(MultiTexCoord2fvARB, _gloffset_MultiTexCoord2fvARB, MultiTexCoord2fvARB@8)
+       GL_STUB(MultiTexCoord2iARB, _gloffset_MultiTexCoord2iARB, MultiTexCoord2iARB@12)
+       GL_STUB(MultiTexCoord2ivARB, _gloffset_MultiTexCoord2ivARB, MultiTexCoord2ivARB@8)
+       GL_STUB(MultiTexCoord2sARB, _gloffset_MultiTexCoord2sARB, MultiTexCoord2sARB@12)
+       GL_STUB(MultiTexCoord2svARB, _gloffset_MultiTexCoord2svARB, MultiTexCoord2svARB@8)
+       GL_STUB(MultiTexCoord3dARB, _gloffset_MultiTexCoord3dARB, MultiTexCoord3dARB@28)
+       GL_STUB(MultiTexCoord3dvARB, _gloffset_MultiTexCoord3dvARB, MultiTexCoord3dvARB@8)
+       GL_STUB(MultiTexCoord3fARB, _gloffset_MultiTexCoord3fARB, MultiTexCoord3fARB@16)
+       GL_STUB(MultiTexCoord3fvARB, _gloffset_MultiTexCoord3fvARB, MultiTexCoord3fvARB@8)
+       GL_STUB(MultiTexCoord3iARB, _gloffset_MultiTexCoord3iARB, MultiTexCoord3iARB@16)
+       GL_STUB(MultiTexCoord3ivARB, _gloffset_MultiTexCoord3ivARB, MultiTexCoord3ivARB@8)
+       GL_STUB(MultiTexCoord3sARB, _gloffset_MultiTexCoord3sARB, MultiTexCoord3sARB@16)
+       GL_STUB(MultiTexCoord3svARB, _gloffset_MultiTexCoord3svARB, MultiTexCoord3svARB@8)
+       GL_STUB(MultiTexCoord4dARB, _gloffset_MultiTexCoord4dARB, MultiTexCoord4dARB@36)
+       GL_STUB(MultiTexCoord4dvARB, _gloffset_MultiTexCoord4dvARB, MultiTexCoord4dvARB@8)
+       GL_STUB(MultiTexCoord4fARB, _gloffset_MultiTexCoord4fARB, MultiTexCoord4fARB@20)
+       GL_STUB(MultiTexCoord4fvARB, _gloffset_MultiTexCoord4fvARB, MultiTexCoord4fvARB@8)
+       GL_STUB(MultiTexCoord4iARB, _gloffset_MultiTexCoord4iARB, MultiTexCoord4iARB@20)
+       GL_STUB(MultiTexCoord4ivARB, _gloffset_MultiTexCoord4ivARB, MultiTexCoord4ivARB@8)
+       GL_STUB(MultiTexCoord4sARB, _gloffset_MultiTexCoord4sARB, MultiTexCoord4sARB@20)
+       GL_STUB(MultiTexCoord4svARB, _gloffset_MultiTexCoord4svARB, MultiTexCoord4svARB@8)
+       GL_STUB(AttachShader, _gloffset_AttachShader, AttachShader@8)
+       GL_STUB(CreateProgram, _gloffset_CreateProgram, CreateProgram@0)
+       GL_STUB(CreateShader, _gloffset_CreateShader, CreateShader@4)
+       GL_STUB(DeleteProgram, _gloffset_DeleteProgram, DeleteProgram@4)
+       GL_STUB(DeleteShader, _gloffset_DeleteShader, DeleteShader@4)
+       GL_STUB(DetachShader, _gloffset_DetachShader, DetachShader@8)
+       GL_STUB(GetAttachedShaders, _gloffset_GetAttachedShaders, GetAttachedShaders@16)
+       GL_STUB(GetProgramInfoLog, _gloffset_GetProgramInfoLog, GetProgramInfoLog@16)
+       GL_STUB(GetProgramiv, _gloffset_GetProgramiv, GetProgramiv@12)
+       GL_STUB(GetShaderInfoLog, _gloffset_GetShaderInfoLog, GetShaderInfoLog@16)
+       GL_STUB(GetShaderiv, _gloffset_GetShaderiv, GetShaderiv@12)
+       GL_STUB(IsProgram, _gloffset_IsProgram, IsProgram@4)
+       GL_STUB(IsShader, _gloffset_IsShader, IsShader@4)
+       GL_STUB(StencilFuncSeparate, _gloffset_StencilFuncSeparate, StencilFuncSeparate@16)
+       GL_STUB(StencilMaskSeparate, _gloffset_StencilMaskSeparate, StencilMaskSeparate@8)
+       GL_STUB(StencilOpSeparate, _gloffset_StencilOpSeparate, StencilOpSeparate@16)
+       GL_STUB(UniformMatrix2x3fv, _gloffset_UniformMatrix2x3fv, UniformMatrix2x3fv@16)
+       GL_STUB(UniformMatrix2x4fv, _gloffset_UniformMatrix2x4fv, UniformMatrix2x4fv@16)
+       GL_STUB(UniformMatrix3x2fv, _gloffset_UniformMatrix3x2fv, UniformMatrix3x2fv@16)
+       GL_STUB(UniformMatrix3x4fv, _gloffset_UniformMatrix3x4fv, UniformMatrix3x4fv@16)
+       GL_STUB(UniformMatrix4x2fv, _gloffset_UniformMatrix4x2fv, UniformMatrix4x2fv@16)
+       GL_STUB(UniformMatrix4x3fv, _gloffset_UniformMatrix4x3fv, UniformMatrix4x3fv@16)
+       GL_STUB(DrawArraysInstanced, _gloffset_DrawArraysInstanced, DrawArraysInstanced@16)
+       GL_STUB(DrawElementsInstanced, _gloffset_DrawElementsInstanced, DrawElementsInstanced@20)
+       GL_STUB(LoadTransposeMatrixdARB, _gloffset_LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4)
+       GL_STUB(LoadTransposeMatrixfARB, _gloffset_LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4)
+       GL_STUB(MultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB, MultTransposeMatrixdARB@4)
+       GL_STUB(MultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB, MultTransposeMatrixfARB@4)
+       GL_STUB(SampleCoverageARB, _gloffset_SampleCoverageARB, SampleCoverageARB@8)
+       GL_STUB(CompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB, CompressedTexImage1DARB@28)
+       GL_STUB(CompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB, CompressedTexImage2DARB@32)
+       GL_STUB(CompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB, CompressedTexImage3DARB@36)
+       GL_STUB(CompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28)
+       GL_STUB(CompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36)
+       GL_STUB(CompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44)
+       GL_STUB(GetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB, GetCompressedTexImageARB@12)
+       GL_STUB(DisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4)
+       GL_STUB(EnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4)
+       GL_STUB(GetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB, GetProgramEnvParameterdvARB@12)
+       GL_STUB(GetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB, GetProgramEnvParameterfvARB@12)
+       GL_STUB(GetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB, GetProgramLocalParameterdvARB@12)
+       GL_STUB(GetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB, GetProgramLocalParameterfvARB@12)
+       GL_STUB(GetProgramStringARB, _gloffset_GetProgramStringARB, GetProgramStringARB@12)
+       GL_STUB(GetProgramivARB, _gloffset_GetProgramivARB, GetProgramivARB@12)
+       GL_STUB(GetVertexAttribdvARB, _gloffset_GetVertexAttribdvARB, GetVertexAttribdvARB@12)
+       GL_STUB(GetVertexAttribfvARB, _gloffset_GetVertexAttribfvARB, GetVertexAttribfvARB@12)
+       GL_STUB(GetVertexAttribivARB, _gloffset_GetVertexAttribivARB, GetVertexAttribivARB@12)
+       GL_STUB(ProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40)
+       GL_STUB(ProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12)
+       GL_STUB(ProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24)
+       GL_STUB(ProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12)
+       GL_STUB(ProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB, ProgramLocalParameter4dARB@40)
+       GL_STUB(ProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB, ProgramLocalParameter4dvARB@12)
+       GL_STUB(ProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB, ProgramLocalParameter4fARB@24)
+       GL_STUB(ProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB, ProgramLocalParameter4fvARB@12)
+       GL_STUB(ProgramStringARB, _gloffset_ProgramStringARB, ProgramStringARB@16)
+       GL_STUB(VertexAttrib1dARB, _gloffset_VertexAttrib1dARB, VertexAttrib1dARB@12)
+       GL_STUB(VertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB, VertexAttrib1dvARB@8)
+       GL_STUB(VertexAttrib1fARB, _gloffset_VertexAttrib1fARB, VertexAttrib1fARB@8)
+       GL_STUB(VertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB, VertexAttrib1fvARB@8)
+       GL_STUB(VertexAttrib1sARB, _gloffset_VertexAttrib1sARB, VertexAttrib1sARB@8)
+       GL_STUB(VertexAttrib1svARB, _gloffset_VertexAttrib1svARB, VertexAttrib1svARB@8)
+       GL_STUB(VertexAttrib2dARB, _gloffset_VertexAttrib2dARB, VertexAttrib2dARB@20)
+       GL_STUB(VertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB, VertexAttrib2dvARB@8)
+       GL_STUB(VertexAttrib2fARB, _gloffset_VertexAttrib2fARB, VertexAttrib2fARB@12)
+       GL_STUB(VertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB, VertexAttrib2fvARB@8)
+       GL_STUB(VertexAttrib2sARB, _gloffset_VertexAttrib2sARB, VertexAttrib2sARB@12)
+       GL_STUB(VertexAttrib2svARB, _gloffset_VertexAttrib2svARB, VertexAttrib2svARB@8)
+       GL_STUB(VertexAttrib3dARB, _gloffset_VertexAttrib3dARB, VertexAttrib3dARB@28)
+       GL_STUB(VertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB, VertexAttrib3dvARB@8)
+       GL_STUB(VertexAttrib3fARB, _gloffset_VertexAttrib3fARB, VertexAttrib3fARB@16)
+       GL_STUB(VertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB, VertexAttrib3fvARB@8)
+       GL_STUB(VertexAttrib3sARB, _gloffset_VertexAttrib3sARB, VertexAttrib3sARB@16)
+       GL_STUB(VertexAttrib3svARB, _gloffset_VertexAttrib3svARB, VertexAttrib3svARB@8)
+       GL_STUB(VertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB, VertexAttrib4NbvARB@8)
+       GL_STUB(VertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB, VertexAttrib4NivARB@8)
+       GL_STUB(VertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB, VertexAttrib4NsvARB@8)
+       GL_STUB(VertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB, VertexAttrib4NubARB@20)
+       GL_STUB(VertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB, VertexAttrib4NubvARB@8)
+       GL_STUB(VertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB, VertexAttrib4NuivARB@8)
+       GL_STUB(VertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB, VertexAttrib4NusvARB@8)
+       GL_STUB(VertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB, VertexAttrib4bvARB@8)
+       GL_STUB(VertexAttrib4dARB, _gloffset_VertexAttrib4dARB, VertexAttrib4dARB@36)
+       GL_STUB(VertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB, VertexAttrib4dvARB@8)
+       GL_STUB(VertexAttrib4fARB, _gloffset_VertexAttrib4fARB, VertexAttrib4fARB@20)
+       GL_STUB(VertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB, VertexAttrib4fvARB@8)
+       GL_STUB(VertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB, VertexAttrib4ivARB@8)
+       GL_STUB(VertexAttrib4sARB, _gloffset_VertexAttrib4sARB, VertexAttrib4sARB@20)
+       GL_STUB(VertexAttrib4svARB, _gloffset_VertexAttrib4svARB, VertexAttrib4svARB@8)
+       GL_STUB(VertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB, VertexAttrib4ubvARB@8)
+       GL_STUB(VertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB, VertexAttrib4uivARB@8)
+       GL_STUB(VertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB, VertexAttrib4usvARB@8)
+       GL_STUB(VertexAttribPointerARB, _gloffset_VertexAttribPointerARB, VertexAttribPointerARB@24)
+       GL_STUB(BindBufferARB, _gloffset_BindBufferARB, BindBufferARB@8)
+       GL_STUB(BufferDataARB, _gloffset_BufferDataARB, BufferDataARB@16)
+       GL_STUB(BufferSubDataARB, _gloffset_BufferSubDataARB, BufferSubDataARB@16)
+       GL_STUB(DeleteBuffersARB, _gloffset_DeleteBuffersARB, DeleteBuffersARB@8)
+       GL_STUB(GenBuffersARB, _gloffset_GenBuffersARB, GenBuffersARB@8)
+       GL_STUB(GetBufferParameterivARB, _gloffset_GetBufferParameterivARB, GetBufferParameterivARB@12)
+       GL_STUB(GetBufferPointervARB, _gloffset_GetBufferPointervARB, GetBufferPointervARB@12)
+       GL_STUB(GetBufferSubDataARB, _gloffset_GetBufferSubDataARB, GetBufferSubDataARB@16)
+       GL_STUB(IsBufferARB, _gloffset_IsBufferARB, IsBufferARB@4)
+       GL_STUB(MapBufferARB, _gloffset_MapBufferARB, MapBufferARB@8)
+       GL_STUB(UnmapBufferARB, _gloffset_UnmapBufferARB, UnmapBufferARB@4)
+       GL_STUB(BeginQueryARB, _gloffset_BeginQueryARB, BeginQueryARB@8)
+       GL_STUB(DeleteQueriesARB, _gloffset_DeleteQueriesARB, DeleteQueriesARB@8)
+       GL_STUB(EndQueryARB, _gloffset_EndQueryARB, EndQueryARB@4)
+       GL_STUB(GenQueriesARB, _gloffset_GenQueriesARB, GenQueriesARB@8)
+       GL_STUB(GetQueryObjectivARB, _gloffset_GetQueryObjectivARB, GetQueryObjectivARB@12)
+       GL_STUB(GetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB, GetQueryObjectuivARB@12)
+       GL_STUB(GetQueryivARB, _gloffset_GetQueryivARB, GetQueryivARB@12)
+       GL_STUB(IsQueryARB, _gloffset_IsQueryARB, IsQueryARB@4)
+       GL_STUB(AttachObjectARB, _gloffset_AttachObjectARB, AttachObjectARB@8)
+       GL_STUB(CompileShaderARB, _gloffset_CompileShaderARB, CompileShaderARB@4)
+       GL_STUB(CreateProgramObjectARB, _gloffset_CreateProgramObjectARB, CreateProgramObjectARB@0)
+       GL_STUB(CreateShaderObjectARB, _gloffset_CreateShaderObjectARB, CreateShaderObjectARB@4)
+       GL_STUB(DeleteObjectARB, _gloffset_DeleteObjectARB, DeleteObjectARB@4)
+       GL_STUB(DetachObjectARB, _gloffset_DetachObjectARB, DetachObjectARB@8)
+       GL_STUB(GetActiveUniformARB, _gloffset_GetActiveUniformARB, GetActiveUniformARB@28)
+       GL_STUB(GetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB, GetAttachedObjectsARB@16)
+       GL_STUB(GetHandleARB, _gloffset_GetHandleARB, GetHandleARB@4)
+       GL_STUB(GetInfoLogARB, _gloffset_GetInfoLogARB, GetInfoLogARB@16)
+       GL_STUB(GetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB, GetObjectParameterfvARB@12)
+       GL_STUB(GetObjectParameterivARB, _gloffset_GetObjectParameterivARB, GetObjectParameterivARB@12)
+       GL_STUB(GetShaderSourceARB, _gloffset_GetShaderSourceARB, GetShaderSourceARB@16)
+       GL_STUB(GetUniformLocationARB, _gloffset_GetUniformLocationARB, GetUniformLocationARB@8)
+       GL_STUB(GetUniformfvARB, _gloffset_GetUniformfvARB, GetUniformfvARB@12)
+       GL_STUB(GetUniformivARB, _gloffset_GetUniformivARB, GetUniformivARB@12)
+       GL_STUB(LinkProgramARB, _gloffset_LinkProgramARB, LinkProgramARB@4)
+       GL_STUB(ShaderSourceARB, _gloffset_ShaderSourceARB, ShaderSourceARB@16)
+       GL_STUB(Uniform1fARB, _gloffset_Uniform1fARB, Uniform1fARB@8)
+       GL_STUB(Uniform1fvARB, _gloffset_Uniform1fvARB, Uniform1fvARB@12)
+       GL_STUB(Uniform1iARB, _gloffset_Uniform1iARB, Uniform1iARB@8)
+       GL_STUB(Uniform1ivARB, _gloffset_Uniform1ivARB, Uniform1ivARB@12)
+       GL_STUB(Uniform2fARB, _gloffset_Uniform2fARB, Uniform2fARB@12)
+       GL_STUB(Uniform2fvARB, _gloffset_Uniform2fvARB, Uniform2fvARB@12)
+       GL_STUB(Uniform2iARB, _gloffset_Uniform2iARB, Uniform2iARB@12)
+       GL_STUB(Uniform2ivARB, _gloffset_Uniform2ivARB, Uniform2ivARB@12)
+       GL_STUB(Uniform3fARB, _gloffset_Uniform3fARB, Uniform3fARB@16)
+       GL_STUB(Uniform3fvARB, _gloffset_Uniform3fvARB, Uniform3fvARB@12)
+       GL_STUB(Uniform3iARB, _gloffset_Uniform3iARB, Uniform3iARB@16)
+       GL_STUB(Uniform3ivARB, _gloffset_Uniform3ivARB, Uniform3ivARB@12)
+       GL_STUB(Uniform4fARB, _gloffset_Uniform4fARB, Uniform4fARB@20)
+       GL_STUB(Uniform4fvARB, _gloffset_Uniform4fvARB, Uniform4fvARB@12)
+       GL_STUB(Uniform4iARB, _gloffset_Uniform4iARB, Uniform4iARB@20)
+       GL_STUB(Uniform4ivARB, _gloffset_Uniform4ivARB, Uniform4ivARB@12)
+       GL_STUB(UniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB, UniformMatrix2fvARB@16)
+       GL_STUB(UniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB, UniformMatrix3fvARB@16)
+       GL_STUB(UniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB, UniformMatrix4fvARB@16)
+       GL_STUB(UseProgramObjectARB, _gloffset_UseProgramObjectARB, UseProgramObjectARB@4)
+       GL_STUB(ValidateProgramARB, _gloffset_ValidateProgramARB, ValidateProgramARB@4)
+       GL_STUB(BindAttribLocationARB, _gloffset_BindAttribLocationARB, BindAttribLocationARB@12)
+       GL_STUB(GetActiveAttribARB, _gloffset_GetActiveAttribARB, GetActiveAttribARB@28)
+       GL_STUB(GetAttribLocationARB, _gloffset_GetAttribLocationARB, GetAttribLocationARB@8)
+       GL_STUB(DrawBuffersARB, _gloffset_DrawBuffersARB, DrawBuffersARB@8)
+       GL_STUB(RenderbufferStorageMultisample, _gloffset_RenderbufferStorageMultisample, RenderbufferStorageMultisample@20)
+       GL_STUB(FlushMappedBufferRange, _gloffset_FlushMappedBufferRange, FlushMappedBufferRange@12)
+       GL_STUB(MapBufferRange, _gloffset_MapBufferRange, MapBufferRange@16)
+       GL_STUB(BindVertexArray, _gloffset_BindVertexArray, BindVertexArray@4)
+       GL_STUB(GenVertexArrays, _gloffset_GenVertexArrays, GenVertexArrays@8)
+       GL_STUB(CopyBufferSubData, _gloffset_CopyBufferSubData, CopyBufferSubData@20)
+       GL_STUB(ClientWaitSync, _gloffset_ClientWaitSync, ClientWaitSync@12)
+       GL_STUB(DeleteSync, _gloffset_DeleteSync, DeleteSync@4)
+       GL_STUB(FenceSync, _gloffset_FenceSync, FenceSync@8)
+       GL_STUB(GetInteger64v, _gloffset_GetInteger64v, GetInteger64v@8)
+       GL_STUB(GetSynciv, _gloffset_GetSynciv, GetSynciv@20)
+       GL_STUB(IsSync, _gloffset_IsSync, IsSync@4)
+       GL_STUB(WaitSync, _gloffset_WaitSync, WaitSync@12)
+       GL_STUB(DrawElementsBaseVertex, _gloffset_DrawElementsBaseVertex, DrawElementsBaseVertex@20)
+       GL_STUB(DrawRangeElementsBaseVertex, _gloffset_DrawRangeElementsBaseVertex, DrawRangeElementsBaseVertex@28)
+       GL_STUB(MultiDrawElementsBaseVertex, _gloffset_MultiDrawElementsBaseVertex, MultiDrawElementsBaseVertex@24)
+       GL_STUB(PolygonOffsetEXT, _gloffset_PolygonOffsetEXT, PolygonOffsetEXT@8)
+       GL_STUB(_dispatch_stub_580, _gloffset_GetPixelTexGenParameterfvSGIS, _dispatch_stub_580@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_580, _dispatch_stub_580@8))
+       GL_STUB(_dispatch_stub_581, _gloffset_GetPixelTexGenParameterivSGIS, _dispatch_stub_581@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_581, _dispatch_stub_581@8))
+       GL_STUB(_dispatch_stub_582, _gloffset_PixelTexGenParameterfSGIS, _dispatch_stub_582@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_582, _dispatch_stub_582@8))
+       GL_STUB(_dispatch_stub_583, _gloffset_PixelTexGenParameterfvSGIS, _dispatch_stub_583@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_583, _dispatch_stub_583@8))
+       GL_STUB(_dispatch_stub_584, _gloffset_PixelTexGenParameteriSGIS, _dispatch_stub_584@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_584, _dispatch_stub_584@8))
+       GL_STUB(_dispatch_stub_585, _gloffset_PixelTexGenParameterivSGIS, _dispatch_stub_585@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_585, _dispatch_stub_585@8))
+       GL_STUB(_dispatch_stub_586, _gloffset_SampleMaskSGIS, _dispatch_stub_586@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_586, _dispatch_stub_586@8))
+       GL_STUB(_dispatch_stub_587, _gloffset_SamplePatternSGIS, _dispatch_stub_587@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_587, _dispatch_stub_587@4))
+       GL_STUB(ColorPointerEXT, _gloffset_ColorPointerEXT, ColorPointerEXT@20)
+       GL_STUB(EdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT, EdgeFlagPointerEXT@12)
+       GL_STUB(IndexPointerEXT, _gloffset_IndexPointerEXT, IndexPointerEXT@16)
+       GL_STUB(NormalPointerEXT, _gloffset_NormalPointerEXT, NormalPointerEXT@16)
+       GL_STUB(TexCoordPointerEXT, _gloffset_TexCoordPointerEXT, TexCoordPointerEXT@20)
+       GL_STUB(VertexPointerEXT, _gloffset_VertexPointerEXT, VertexPointerEXT@20)
+       GL_STUB(PointParameterfEXT, _gloffset_PointParameterfEXT, PointParameterfEXT@8)
+       GL_STUB(PointParameterfvEXT, _gloffset_PointParameterfvEXT, PointParameterfvEXT@8)
+       GL_STUB(LockArraysEXT, _gloffset_LockArraysEXT, LockArraysEXT@8)
+       GL_STUB(UnlockArraysEXT, _gloffset_UnlockArraysEXT, UnlockArraysEXT@0)
+       GL_STUB(_dispatch_stub_598, _gloffset_CullParameterdvEXT, _dispatch_stub_598@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_598, _dispatch_stub_598@8))
+       GL_STUB(_dispatch_stub_599, _gloffset_CullParameterfvEXT, _dispatch_stub_599@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_599, _dispatch_stub_599@8))
+       GL_STUB(SecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT, SecondaryColor3bEXT@12)
+       GL_STUB(SecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT, SecondaryColor3bvEXT@4)
+       GL_STUB(SecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT, SecondaryColor3dEXT@24)
+       GL_STUB(SecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT, SecondaryColor3dvEXT@4)
+       GL_STUB(SecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT, SecondaryColor3fEXT@12)
+       GL_STUB(SecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT, SecondaryColor3fvEXT@4)
+       GL_STUB(SecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT, SecondaryColor3iEXT@12)
+       GL_STUB(SecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT, SecondaryColor3ivEXT@4)
+       GL_STUB(SecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT, SecondaryColor3sEXT@12)
+       GL_STUB(SecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT, SecondaryColor3svEXT@4)
+       GL_STUB(SecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT, SecondaryColor3ubEXT@12)
+       GL_STUB(SecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4)
+       GL_STUB(SecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT, SecondaryColor3uiEXT@12)
+       GL_STUB(SecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT, SecondaryColor3uivEXT@4)
+       GL_STUB(SecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT, SecondaryColor3usEXT@12)
+       GL_STUB(SecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT, SecondaryColor3usvEXT@4)
+       GL_STUB(SecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT, SecondaryColorPointerEXT@16)
+       GL_STUB(MultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT, MultiDrawArraysEXT@16)
+       GL_STUB(MultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT, MultiDrawElementsEXT@20)
+       GL_STUB(FogCoordPointerEXT, _gloffset_FogCoordPointerEXT, FogCoordPointerEXT@12)
+       GL_STUB(FogCoorddEXT, _gloffset_FogCoorddEXT, FogCoorddEXT@8)
+       GL_STUB(FogCoorddvEXT, _gloffset_FogCoorddvEXT, FogCoorddvEXT@4)
+       GL_STUB(FogCoordfEXT, _gloffset_FogCoordfEXT, FogCoordfEXT@4)
+       GL_STUB(FogCoordfvEXT, _gloffset_FogCoordfvEXT, FogCoordfvEXT@4)
+       GL_STUB(_dispatch_stub_624, _gloffset_PixelTexGenSGIX, _dispatch_stub_624@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_624, _dispatch_stub_624@4))
+       GL_STUB(BlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
+       GL_STUB(FlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV, FlushVertexArrayRangeNV@0)
+       GL_STUB(VertexArrayRangeNV, _gloffset_VertexArrayRangeNV, VertexArrayRangeNV@8)
+       GL_STUB(CombinerInputNV, _gloffset_CombinerInputNV, CombinerInputNV@24)
+       GL_STUB(CombinerOutputNV, _gloffset_CombinerOutputNV, CombinerOutputNV@40)
+       GL_STUB(CombinerParameterfNV, _gloffset_CombinerParameterfNV, CombinerParameterfNV@8)
+       GL_STUB(CombinerParameterfvNV, _gloffset_CombinerParameterfvNV, CombinerParameterfvNV@8)
+       GL_STUB(CombinerParameteriNV, _gloffset_CombinerParameteriNV, CombinerParameteriNV@8)
+       GL_STUB(CombinerParameterivNV, _gloffset_CombinerParameterivNV, CombinerParameterivNV@8)
+       GL_STUB(FinalCombinerInputNV, _gloffset_FinalCombinerInputNV, FinalCombinerInputNV@16)
+       GL_STUB(GetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV, GetCombinerInputParameterfvNV@20)
+       GL_STUB(GetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV, GetCombinerInputParameterivNV@20)
+       GL_STUB(GetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV, GetCombinerOutputParameterfvNV@16)
+       GL_STUB(GetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV, GetCombinerOutputParameterivNV@16)
+       GL_STUB(GetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV, GetFinalCombinerInputParameterfvNV@12)
+       GL_STUB(GetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV, GetFinalCombinerInputParameterivNV@12)
+       GL_STUB(ResizeBuffersMESA, _gloffset_ResizeBuffersMESA, ResizeBuffersMESA@0)
+       GL_STUB(WindowPos2dMESA, _gloffset_WindowPos2dMESA, WindowPos2dMESA@16)
+       GL_STUB(WindowPos2dvMESA, _gloffset_WindowPos2dvMESA, WindowPos2dvMESA@4)
+       GL_STUB(WindowPos2fMESA, _gloffset_WindowPos2fMESA, WindowPos2fMESA@8)
+       GL_STUB(WindowPos2fvMESA, _gloffset_WindowPos2fvMESA, WindowPos2fvMESA@4)
+       GL_STUB(WindowPos2iMESA, _gloffset_WindowPos2iMESA, WindowPos2iMESA@8)
+       GL_STUB(WindowPos2ivMESA, _gloffset_WindowPos2ivMESA, WindowPos2ivMESA@4)
+       GL_STUB(WindowPos2sMESA, _gloffset_WindowPos2sMESA, WindowPos2sMESA@8)
+       GL_STUB(WindowPos2svMESA, _gloffset_WindowPos2svMESA, WindowPos2svMESA@4)
+       GL_STUB(WindowPos3dMESA, _gloffset_WindowPos3dMESA, WindowPos3dMESA@24)
+       GL_STUB(WindowPos3dvMESA, _gloffset_WindowPos3dvMESA, WindowPos3dvMESA@4)
+       GL_STUB(WindowPos3fMESA, _gloffset_WindowPos3fMESA, WindowPos3fMESA@12)
+       GL_STUB(WindowPos3fvMESA, _gloffset_WindowPos3fvMESA, WindowPos3fvMESA@4)
+       GL_STUB(WindowPos3iMESA, _gloffset_WindowPos3iMESA, WindowPos3iMESA@12)
+       GL_STUB(WindowPos3ivMESA, _gloffset_WindowPos3ivMESA, WindowPos3ivMESA@4)
+       GL_STUB(WindowPos3sMESA, _gloffset_WindowPos3sMESA, WindowPos3sMESA@12)
+       GL_STUB(WindowPos3svMESA, _gloffset_WindowPos3svMESA, WindowPos3svMESA@4)
+       GL_STUB(WindowPos4dMESA, _gloffset_WindowPos4dMESA, WindowPos4dMESA@32)
+       GL_STUB(WindowPos4dvMESA, _gloffset_WindowPos4dvMESA, WindowPos4dvMESA@4)
+       GL_STUB(WindowPos4fMESA, _gloffset_WindowPos4fMESA, WindowPos4fMESA@16)
+       GL_STUB(WindowPos4fvMESA, _gloffset_WindowPos4fvMESA, WindowPos4fvMESA@4)
+       GL_STUB(WindowPos4iMESA, _gloffset_WindowPos4iMESA, WindowPos4iMESA@16)
+       GL_STUB(WindowPos4ivMESA, _gloffset_WindowPos4ivMESA, WindowPos4ivMESA@4)
+       GL_STUB(WindowPos4sMESA, _gloffset_WindowPos4sMESA, WindowPos4sMESA@16)
+       GL_STUB(WindowPos4svMESA, _gloffset_WindowPos4svMESA, WindowPos4svMESA@4)
+       GL_STUB(_dispatch_stub_666, _gloffset_MultiModeDrawArraysIBM, _dispatch_stub_666@20)
+       HIDDEN(GL_PREFIX(_dispatch_stub_666, _dispatch_stub_666@20))
+       GL_STUB(_dispatch_stub_667, _gloffset_MultiModeDrawElementsIBM, _dispatch_stub_667@24)
+       HIDDEN(GL_PREFIX(_dispatch_stub_667, _dispatch_stub_667@24))
+       GL_STUB(_dispatch_stub_668, _gloffset_DeleteFencesNV, _dispatch_stub_668@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_668, _dispatch_stub_668@8))
+       GL_STUB(_dispatch_stub_669, _gloffset_FinishFenceNV, _dispatch_stub_669@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_669, _dispatch_stub_669@4))
+       GL_STUB(_dispatch_stub_670, _gloffset_GenFencesNV, _dispatch_stub_670@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_670, _dispatch_stub_670@8))
+       GL_STUB(_dispatch_stub_671, _gloffset_GetFenceivNV, _dispatch_stub_671@12)
+       HIDDEN(GL_PREFIX(_dispatch_stub_671, _dispatch_stub_671@12))
+       GL_STUB(_dispatch_stub_672, _gloffset_IsFenceNV, _dispatch_stub_672@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_672, _dispatch_stub_672@4))
+       GL_STUB(_dispatch_stub_673, _gloffset_SetFenceNV, _dispatch_stub_673@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_673, _dispatch_stub_673@8))
+       GL_STUB(_dispatch_stub_674, _gloffset_TestFenceNV, _dispatch_stub_674@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_674, _dispatch_stub_674@4))
+       GL_STUB(AreProgramsResidentNV, _gloffset_AreProgramsResidentNV, AreProgramsResidentNV@12)
+       GL_STUB(BindProgramNV, _gloffset_BindProgramNV, BindProgramNV@8)
+       GL_STUB(DeleteProgramsNV, _gloffset_DeleteProgramsNV, DeleteProgramsNV@8)
+       GL_STUB(ExecuteProgramNV, _gloffset_ExecuteProgramNV, ExecuteProgramNV@12)
+       GL_STUB(GenProgramsNV, _gloffset_GenProgramsNV, GenProgramsNV@8)
+       GL_STUB(GetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV, GetProgramParameterdvNV@16)
+       GL_STUB(GetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV, GetProgramParameterfvNV@16)
+       GL_STUB(GetProgramStringNV, _gloffset_GetProgramStringNV, GetProgramStringNV@12)
+       GL_STUB(GetProgramivNV, _gloffset_GetProgramivNV, GetProgramivNV@12)
+       GL_STUB(GetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV, GetTrackMatrixivNV@16)
+       GL_STUB(GetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
+       GL_STUB(GetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV, GetVertexAttribdvNV@12)
+       GL_STUB(GetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV, GetVertexAttribfvNV@12)
+       GL_STUB(GetVertexAttribivNV, _gloffset_GetVertexAttribivNV, GetVertexAttribivNV@12)
+       GL_STUB(IsProgramNV, _gloffset_IsProgramNV, IsProgramNV@4)
+       GL_STUB(LoadProgramNV, _gloffset_LoadProgramNV, LoadProgramNV@16)
+       GL_STUB(ProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV, ProgramParameters4dvNV@16)
+       GL_STUB(ProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV, ProgramParameters4fvNV@16)
+       GL_STUB(RequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV, RequestResidentProgramsNV@8)
+       GL_STUB(TrackMatrixNV, _gloffset_TrackMatrixNV, TrackMatrixNV@16)
+       GL_STUB(VertexAttrib1dNV, _gloffset_VertexAttrib1dNV, VertexAttrib1dNV@12)
+       GL_STUB(VertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV, VertexAttrib1dvNV@8)
+       GL_STUB(VertexAttrib1fNV, _gloffset_VertexAttrib1fNV, VertexAttrib1fNV@8)
+       GL_STUB(VertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV, VertexAttrib1fvNV@8)
+       GL_STUB(VertexAttrib1sNV, _gloffset_VertexAttrib1sNV, VertexAttrib1sNV@8)
+       GL_STUB(VertexAttrib1svNV, _gloffset_VertexAttrib1svNV, VertexAttrib1svNV@8)
+       GL_STUB(VertexAttrib2dNV, _gloffset_VertexAttrib2dNV, VertexAttrib2dNV@20)
+       GL_STUB(VertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV, VertexAttrib2dvNV@8)
+       GL_STUB(VertexAttrib2fNV, _gloffset_VertexAttrib2fNV, VertexAttrib2fNV@12)
+       GL_STUB(VertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV, VertexAttrib2fvNV@8)
+       GL_STUB(VertexAttrib2sNV, _gloffset_VertexAttrib2sNV, VertexAttrib2sNV@12)
+       GL_STUB(VertexAttrib2svNV, _gloffset_VertexAttrib2svNV, VertexAttrib2svNV@8)
+       GL_STUB(VertexAttrib3dNV, _gloffset_VertexAttrib3dNV, VertexAttrib3dNV@28)
+       GL_STUB(VertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV, VertexAttrib3dvNV@8)
+       GL_STUB(VertexAttrib3fNV, _gloffset_VertexAttrib3fNV, VertexAttrib3fNV@16)
+       GL_STUB(VertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV, VertexAttrib3fvNV@8)
+       GL_STUB(VertexAttrib3sNV, _gloffset_VertexAttrib3sNV, VertexAttrib3sNV@16)
+       GL_STUB(VertexAttrib3svNV, _gloffset_VertexAttrib3svNV, VertexAttrib3svNV@8)
+       GL_STUB(VertexAttrib4dNV, _gloffset_VertexAttrib4dNV, VertexAttrib4dNV@36)
+       GL_STUB(VertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV, VertexAttrib4dvNV@8)
+       GL_STUB(VertexAttrib4fNV, _gloffset_VertexAttrib4fNV, VertexAttrib4fNV@20)
+       GL_STUB(VertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV, VertexAttrib4fvNV@8)
+       GL_STUB(VertexAttrib4sNV, _gloffset_VertexAttrib4sNV, VertexAttrib4sNV@20)
+       GL_STUB(VertexAttrib4svNV, _gloffset_VertexAttrib4svNV, VertexAttrib4svNV@8)
+       GL_STUB(VertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV, VertexAttrib4ubNV@20)
+       GL_STUB(VertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV, VertexAttrib4ubvNV@8)
+       GL_STUB(VertexAttribPointerNV, _gloffset_VertexAttribPointerNV, VertexAttribPointerNV@20)
+       GL_STUB(VertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV, VertexAttribs1dvNV@12)
+       GL_STUB(VertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV, VertexAttribs1fvNV@12)
+       GL_STUB(VertexAttribs1svNV, _gloffset_VertexAttribs1svNV, VertexAttribs1svNV@12)
+       GL_STUB(VertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV, VertexAttribs2dvNV@12)
+       GL_STUB(VertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV, VertexAttribs2fvNV@12)
+       GL_STUB(VertexAttribs2svNV, _gloffset_VertexAttribs2svNV, VertexAttribs2svNV@12)
+       GL_STUB(VertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV, VertexAttribs3dvNV@12)
+       GL_STUB(VertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV, VertexAttribs3fvNV@12)
+       GL_STUB(VertexAttribs3svNV, _gloffset_VertexAttribs3svNV, VertexAttribs3svNV@12)
+       GL_STUB(VertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV, VertexAttribs4dvNV@12)
+       GL_STUB(VertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV, VertexAttribs4fvNV@12)
+       GL_STUB(VertexAttribs4svNV, _gloffset_VertexAttribs4svNV, VertexAttribs4svNV@12)
+       GL_STUB(VertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV, VertexAttribs4ubvNV@12)
+       GL_STUB(GetTexBumpParameterfvATI, _gloffset_GetTexBumpParameterfvATI, GetTexBumpParameterfvATI@8)
+       GL_STUB(GetTexBumpParameterivATI, _gloffset_GetTexBumpParameterivATI, GetTexBumpParameterivATI@8)
+       GL_STUB(TexBumpParameterfvATI, _gloffset_TexBumpParameterfvATI, TexBumpParameterfvATI@8)
+       GL_STUB(TexBumpParameterivATI, _gloffset_TexBumpParameterivATI, TexBumpParameterivATI@8)
+       GL_STUB(AlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI, AlphaFragmentOp1ATI@24)
+       GL_STUB(AlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI, AlphaFragmentOp2ATI@36)
+       GL_STUB(AlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI, AlphaFragmentOp3ATI@48)
+       GL_STUB(BeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI, BeginFragmentShaderATI@0)
+       GL_STUB(BindFragmentShaderATI, _gloffset_BindFragmentShaderATI, BindFragmentShaderATI@4)
+       GL_STUB(ColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI, ColorFragmentOp1ATI@28)
+       GL_STUB(ColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI, ColorFragmentOp2ATI@40)
+       GL_STUB(ColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI, ColorFragmentOp3ATI@52)
+       GL_STUB(DeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI, DeleteFragmentShaderATI@4)
+       GL_STUB(EndFragmentShaderATI, _gloffset_EndFragmentShaderATI, EndFragmentShaderATI@0)
+       GL_STUB(GenFragmentShadersATI, _gloffset_GenFragmentShadersATI, GenFragmentShadersATI@4)
+       GL_STUB(PassTexCoordATI, _gloffset_PassTexCoordATI, PassTexCoordATI@12)
+       GL_STUB(SampleMapATI, _gloffset_SampleMapATI, SampleMapATI@12)
+       GL_STUB(SetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI, SetFragmentShaderConstantATI@8)
+       GL_STUB(PointParameteriNV, _gloffset_PointParameteriNV, PointParameteriNV@8)
+       GL_STUB(PointParameterivNV, _gloffset_PointParameterivNV, PointParameterivNV@8)
+       GL_STUB(_dispatch_stub_755, _gloffset_ActiveStencilFaceEXT, _dispatch_stub_755@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_755, _dispatch_stub_755@4))
+       GL_STUB(_dispatch_stub_756, _gloffset_BindVertexArrayAPPLE, _dispatch_stub_756@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_756, _dispatch_stub_756@4))
+       GL_STUB(_dispatch_stub_757, _gloffset_DeleteVertexArraysAPPLE, _dispatch_stub_757@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_757, _dispatch_stub_757@8))
+       GL_STUB(_dispatch_stub_758, _gloffset_GenVertexArraysAPPLE, _dispatch_stub_758@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_758, _dispatch_stub_758@8))
+       GL_STUB(_dispatch_stub_759, _gloffset_IsVertexArrayAPPLE, _dispatch_stub_759@4)
+       HIDDEN(GL_PREFIX(_dispatch_stub_759, _dispatch_stub_759@4))
+       GL_STUB(GetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV, GetProgramNamedParameterdvNV@16)
+       GL_STUB(GetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV, GetProgramNamedParameterfvNV@16)
+       GL_STUB(ProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV, ProgramNamedParameter4dNV@44)
+       GL_STUB(ProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV, ProgramNamedParameter4dvNV@16)
+       GL_STUB(ProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV, ProgramNamedParameter4fNV@28)
+       GL_STUB(ProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV, ProgramNamedParameter4fvNV@16)
+       GL_STUB(_dispatch_stub_766, _gloffset_DepthBoundsEXT, _dispatch_stub_766@16)
+       HIDDEN(GL_PREFIX(_dispatch_stub_766, _dispatch_stub_766@16))
+       GL_STUB(_dispatch_stub_767, _gloffset_BlendEquationSeparateEXT, _dispatch_stub_767@8)
+       HIDDEN(GL_PREFIX(_dispatch_stub_767, _dispatch_stub_767@8))
+       GL_STUB(BindFramebufferEXT, _gloffset_BindFramebufferEXT, BindFramebufferEXT@8)
+       GL_STUB(BindRenderbufferEXT, _gloffset_BindRenderbufferEXT, BindRenderbufferEXT@8)
+       GL_STUB(CheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4)
+       GL_STUB(DeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT, DeleteFramebuffersEXT@8)
+       GL_STUB(DeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8)
+       GL_STUB(FramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16)
+       GL_STUB(FramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT, FramebufferTexture1DEXT@20)
+       GL_STUB(FramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT, FramebufferTexture2DEXT@20)
+       GL_STUB(FramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT, FramebufferTexture3DEXT@24)
+       GL_STUB(GenFramebuffersEXT, _gloffset_GenFramebuffersEXT, GenFramebuffersEXT@8)
+       GL_STUB(GenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT, GenRenderbuffersEXT@8)
+       GL_STUB(GenerateMipmapEXT, _gloffset_GenerateMipmapEXT, GenerateMipmapEXT@4)
+       GL_STUB(GetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16)
+       GL_STUB(GetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12)
+       GL_STUB(IsFramebufferEXT, _gloffset_IsFramebufferEXT, IsFramebufferEXT@4)
+       GL_STUB(IsRenderbufferEXT, _gloffset_IsRenderbufferEXT, IsRenderbufferEXT@4)
+       GL_STUB(RenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT, RenderbufferStorageEXT@16)
+       GL_STUB(_dispatch_stub_785, _gloffset_BlitFramebufferEXT, _dispatch_stub_785@40)
+       HIDDEN(GL_PREFIX(_dispatch_stub_785, _dispatch_stub_785@40))
+       GL_STUB(_dispatch_stub_786, _gloffset_BufferParameteriAPPLE, _dispatch_stub_786@12)
+       HIDDEN(GL_PREFIX(_dispatch_stub_786, _dispatch_stub_786@12))
+       GL_STUB(_dispatch_stub_787, _gloffset_FlushMappedBufferRangeAPPLE, _dispatch_stub_787@12)
+       HIDDEN(GL_PREFIX(_dispatch_stub_787, _dispatch_stub_787@12))
+       GL_STUB(FramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
+       GL_STUB(ColorMaskIndexedEXT, _gloffset_ColorMaskIndexedEXT, ColorMaskIndexedEXT@20)
+       GL_STUB(DisableIndexedEXT, _gloffset_DisableIndexedEXT, DisableIndexedEXT@8)
+       GL_STUB(EnableIndexedEXT, _gloffset_EnableIndexedEXT, EnableIndexedEXT@8)
+       GL_STUB(GetBooleanIndexedvEXT, _gloffset_GetBooleanIndexedvEXT, GetBooleanIndexedvEXT@12)
+       GL_STUB(GetIntegerIndexedvEXT, _gloffset_GetIntegerIndexedvEXT, GetIntegerIndexedvEXT@12)
+       GL_STUB(IsEnabledIndexedEXT, _gloffset_IsEnabledIndexedEXT, IsEnabledIndexedEXT@8)
+       GL_STUB(BeginConditionalRenderNV, _gloffset_BeginConditionalRenderNV, BeginConditionalRenderNV@8)
+       GL_STUB(EndConditionalRenderNV, _gloffset_EndConditionalRenderNV, EndConditionalRenderNV@0)
+       GL_STUB(BeginTransformFeedbackEXT, _gloffset_BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4)
+       GL_STUB(BindBufferBaseEXT, _gloffset_BindBufferBaseEXT, BindBufferBaseEXT@12)
+       GL_STUB(BindBufferOffsetEXT, _gloffset_BindBufferOffsetEXT, BindBufferOffsetEXT@16)
+       GL_STUB(BindBufferRangeEXT, _gloffset_BindBufferRangeEXT, BindBufferRangeEXT@20)
+       GL_STUB(EndTransformFeedbackEXT, _gloffset_EndTransformFeedbackEXT, EndTransformFeedbackEXT@0)
+       GL_STUB(GetTransformFeedbackVaryingEXT, _gloffset_GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28)
+       GL_STUB(TransformFeedbackVaryingsEXT, _gloffset_TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16)
+       GL_STUB(ProvokingVertexEXT, _gloffset_ProvokingVertexEXT, ProvokingVertexEXT@4)
+       GL_STUB(_dispatch_stub_805, _gloffset_GetTexParameterPointervAPPLE, _dispatch_stub_805@12)
+       HIDDEN(GL_PREFIX(_dispatch_stub_805, _dispatch_stub_805@12))
+       GL_STUB(_dispatch_stub_806, _gloffset_TextureRangeAPPLE, _dispatch_stub_806@12)
+       HIDDEN(GL_PREFIX(_dispatch_stub_806, _dispatch_stub_806@12))
+       GL_STUB(GetObjectParameterivAPPLE, _gloffset_GetObjectParameterivAPPLE, GetObjectParameterivAPPLE@16)
+       GL_STUB(ObjectPurgeableAPPLE, _gloffset_ObjectPurgeableAPPLE, ObjectPurgeableAPPLE@12)
+       GL_STUB(ObjectUnpurgeableAPPLE, _gloffset_ObjectUnpurgeableAPPLE, ObjectUnpurgeableAPPLE@12)
+       GL_STUB(_dispatch_stub_810, _gloffset_StencilFuncSeparateATI, _dispatch_stub_810@16)
+       HIDDEN(GL_PREFIX(_dispatch_stub_810, _dispatch_stub_810@16))
+       GL_STUB(_dispatch_stub_811, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_811@16)
+       HIDDEN(GL_PREFIX(_dispatch_stub_811, _dispatch_stub_811@16))
+       GL_STUB(_dispatch_stub_812, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_812@16)
+       HIDDEN(GL_PREFIX(_dispatch_stub_812, _dispatch_stub_812@16))
+       GL_STUB(_dispatch_stub_813, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_813@12)
+       HIDDEN(GL_PREFIX(_dispatch_stub_813, _dispatch_stub_813@12))
+       GL_STUB(_dispatch_stub_814, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_814@12)
+       HIDDEN(GL_PREFIX(_dispatch_stub_814, _dispatch_stub_814@12))
+       GL_STUB(EGLImageTargetRenderbufferStorageOES, _gloffset_EGLImageTargetRenderbufferStorageOES, EGLImageTargetRenderbufferStorageOES@8)
+       GL_STUB(EGLImageTargetTexture2DOES, _gloffset_EGLImageTargetTexture2DOES, EGLImageTargetTexture2DOES@8)
+       GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4)
+       GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8)
+       GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(AreTexturesResidentEXT, _gloffset_AreTexturesResident, AreTexturesResidentEXT@12, AreTexturesResident, AreTexturesResident@12)
+#endif
+       GL_STUB_ALIAS(CopyTexImage1DEXT, _gloffset_CopyTexImage1D, CopyTexImage1DEXT@28, CopyTexImage1D, CopyTexImage1D@28)
+       GL_STUB_ALIAS(CopyTexImage2DEXT, _gloffset_CopyTexImage2D, CopyTexImage2DEXT@32, CopyTexImage2D, CopyTexImage2D@32)
+       GL_STUB_ALIAS(CopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D, CopyTexSubImage1DEXT@24, CopyTexSubImage1D, CopyTexSubImage1D@24)
+       GL_STUB_ALIAS(CopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D, CopyTexSubImage2DEXT@32, CopyTexSubImage2D, CopyTexSubImage2D@32)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(DeleteTexturesEXT, _gloffset_DeleteTextures, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(GenTexturesEXT, _gloffset_GenTextures, GenTexturesEXT@8, GenTextures, GenTextures@8)
+#endif
+       GL_STUB_ALIAS(GetPointervEXT, _gloffset_GetPointerv, GetPointervEXT@8, GetPointerv, GetPointerv@8)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(IsTextureEXT, _gloffset_IsTexture, IsTextureEXT@4, IsTexture, IsTexture@4)
+#endif
+       GL_STUB_ALIAS(PrioritizeTexturesEXT, _gloffset_PrioritizeTextures, PrioritizeTexturesEXT@12, PrioritizeTextures, PrioritizeTextures@12)
+       GL_STUB_ALIAS(TexSubImage1DEXT, _gloffset_TexSubImage1D, TexSubImage1DEXT@28, TexSubImage1D, TexSubImage1D@28)
+       GL_STUB_ALIAS(TexSubImage2DEXT, _gloffset_TexSubImage2D, TexSubImage2DEXT@36, TexSubImage2D, TexSubImage2D@36)
+       GL_STUB_ALIAS(BlendColorEXT, _gloffset_BlendColor, BlendColorEXT@16, BlendColor, BlendColor@16)
+       GL_STUB_ALIAS(BlendEquationEXT, _gloffset_BlendEquation, BlendEquationEXT@4, BlendEquation, BlendEquation@4)
+       GL_STUB_ALIAS(DrawRangeElementsEXT, _gloffset_DrawRangeElements, DrawRangeElementsEXT@24, DrawRangeElements, DrawRangeElements@24)
+       GL_STUB_ALIAS(ColorTableEXT, _gloffset_ColorTable, ColorTableEXT@24, ColorTable, ColorTable@24)
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(GetColorTableEXT, _gloffset_GetColorTable, GetColorTableEXT@16, GetColorTable, GetColorTable@16)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(GetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv, GetColorTableParameterfvEXT@12, GetColorTableParameterfv, GetColorTableParameterfv@12)
+#endif
+#ifndef GLX_INDIRECT_RENDERING
+       GL_STUB_ALIAS(GetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv, GetColorTableParameterivEXT@12, GetColorTableParameteriv, GetColorTableParameteriv@12)
+#endif
+       GL_STUB_ALIAS(TexImage3DEXT, _gloffset_TexImage3D, TexImage3DEXT@40, TexImage3D, TexImage3D@40)
+       GL_STUB_ALIAS(TexSubImage3DEXT, _gloffset_TexSubImage3D, TexSubImage3DEXT@44, TexSubImage3D, TexSubImage3D@44)
+       GL_STUB_ALIAS(CopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D, CopyTexSubImage3DEXT@36, CopyTexSubImage3D, CopyTexSubImage3D@36)
+       GL_STUB_ALIAS(ActiveTexture, _gloffset_ActiveTextureARB, ActiveTexture@4, ActiveTextureARB, ActiveTextureARB@4)
+       GL_STUB_ALIAS(ClientActiveTexture, _gloffset_ClientActiveTextureARB, ClientActiveTexture@4, ClientActiveTextureARB, ClientActiveTextureARB@4)
+       GL_STUB_ALIAS(MultiTexCoord1d, _gloffset_MultiTexCoord1dARB, MultiTexCoord1d@12, MultiTexCoord1dARB, MultiTexCoord1dARB@12)
+       GL_STUB_ALIAS(MultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB, MultiTexCoord1dv@8, MultiTexCoord1dvARB, MultiTexCoord1dvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord1f, _gloffset_MultiTexCoord1fARB, MultiTexCoord1f@8, MultiTexCoord1fARB, MultiTexCoord1fARB@8)
+       GL_STUB_ALIAS(MultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB, MultiTexCoord1fv@8, MultiTexCoord1fvARB, MultiTexCoord1fvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord1i, _gloffset_MultiTexCoord1iARB, MultiTexCoord1i@8, MultiTexCoord1iARB, MultiTexCoord1iARB@8)
+       GL_STUB_ALIAS(MultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB, MultiTexCoord1iv@8, MultiTexCoord1ivARB, MultiTexCoord1ivARB@8)
+       GL_STUB_ALIAS(MultiTexCoord1s, _gloffset_MultiTexCoord1sARB, MultiTexCoord1s@8, MultiTexCoord1sARB, MultiTexCoord1sARB@8)
+       GL_STUB_ALIAS(MultiTexCoord1sv, _gloffset_MultiTexCoord1svARB, MultiTexCoord1sv@8, MultiTexCoord1svARB, MultiTexCoord1svARB@8)
+       GL_STUB_ALIAS(MultiTexCoord2d, _gloffset_MultiTexCoord2dARB, MultiTexCoord2d@20, MultiTexCoord2dARB, MultiTexCoord2dARB@20)
+       GL_STUB_ALIAS(MultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB, MultiTexCoord2dv@8, MultiTexCoord2dvARB, MultiTexCoord2dvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord2f, _gloffset_MultiTexCoord2fARB, MultiTexCoord2f@12, MultiTexCoord2fARB, MultiTexCoord2fARB@12)
+       GL_STUB_ALIAS(MultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB, MultiTexCoord2fv@8, MultiTexCoord2fvARB, MultiTexCoord2fvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord2i, _gloffset_MultiTexCoord2iARB, MultiTexCoord2i@12, MultiTexCoord2iARB, MultiTexCoord2iARB@12)
+       GL_STUB_ALIAS(MultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB, MultiTexCoord2iv@8, MultiTexCoord2ivARB, MultiTexCoord2ivARB@8)
+       GL_STUB_ALIAS(MultiTexCoord2s, _gloffset_MultiTexCoord2sARB, MultiTexCoord2s@12, MultiTexCoord2sARB, MultiTexCoord2sARB@12)
+       GL_STUB_ALIAS(MultiTexCoord2sv, _gloffset_MultiTexCoord2svARB, MultiTexCoord2sv@8, MultiTexCoord2svARB, MultiTexCoord2svARB@8)
+       GL_STUB_ALIAS(MultiTexCoord3d, _gloffset_MultiTexCoord3dARB, MultiTexCoord3d@28, MultiTexCoord3dARB, MultiTexCoord3dARB@28)
+       GL_STUB_ALIAS(MultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB, MultiTexCoord3dv@8, MultiTexCoord3dvARB, MultiTexCoord3dvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord3f, _gloffset_MultiTexCoord3fARB, MultiTexCoord3f@16, MultiTexCoord3fARB, MultiTexCoord3fARB@16)
+       GL_STUB_ALIAS(MultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB, MultiTexCoord3fv@8, MultiTexCoord3fvARB, MultiTexCoord3fvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord3i, _gloffset_MultiTexCoord3iARB, MultiTexCoord3i@16, MultiTexCoord3iARB, MultiTexCoord3iARB@16)
+       GL_STUB_ALIAS(MultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB, MultiTexCoord3iv@8, MultiTexCoord3ivARB, MultiTexCoord3ivARB@8)
+       GL_STUB_ALIAS(MultiTexCoord3s, _gloffset_MultiTexCoord3sARB, MultiTexCoord3s@16, MultiTexCoord3sARB, MultiTexCoord3sARB@16)
+       GL_STUB_ALIAS(MultiTexCoord3sv, _gloffset_MultiTexCoord3svARB, MultiTexCoord3sv@8, MultiTexCoord3svARB, MultiTexCoord3svARB@8)
+       GL_STUB_ALIAS(MultiTexCoord4d, _gloffset_MultiTexCoord4dARB, MultiTexCoord4d@36, MultiTexCoord4dARB, MultiTexCoord4dARB@36)
+       GL_STUB_ALIAS(MultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB, MultiTexCoord4dv@8, MultiTexCoord4dvARB, MultiTexCoord4dvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord4f, _gloffset_MultiTexCoord4fARB, MultiTexCoord4f@20, MultiTexCoord4fARB, MultiTexCoord4fARB@20)
+       GL_STUB_ALIAS(MultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB, MultiTexCoord4fv@8, MultiTexCoord4fvARB, MultiTexCoord4fvARB@8)
+       GL_STUB_ALIAS(MultiTexCoord4i, _gloffset_MultiTexCoord4iARB, MultiTexCoord4i@20, MultiTexCoord4iARB, MultiTexCoord4iARB@20)
+       GL_STUB_ALIAS(MultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB, MultiTexCoord4iv@8, MultiTexCoord4ivARB, MultiTexCoord4ivARB@8)
+       GL_STUB_ALIAS(MultiTexCoord4s, _gloffset_MultiTexCoord4sARB, MultiTexCoord4s@20, MultiTexCoord4sARB, MultiTexCoord4sARB@20)
+       GL_STUB_ALIAS(MultiTexCoord4sv, _gloffset_MultiTexCoord4svARB, MultiTexCoord4sv@8, MultiTexCoord4svARB, MultiTexCoord4svARB@8)
+       GL_STUB_ALIAS(DrawArraysInstancedARB, _gloffset_DrawArraysInstanced, DrawArraysInstancedARB@16, DrawArraysInstanced, DrawArraysInstanced@16)
+       GL_STUB_ALIAS(DrawArraysInstancedEXT, _gloffset_DrawArraysInstanced, DrawArraysInstancedEXT@16, DrawArraysInstanced, DrawArraysInstanced@16)
+       GL_STUB_ALIAS(DrawElementsInstancedARB, _gloffset_DrawElementsInstanced, DrawElementsInstancedARB@20, DrawElementsInstanced, DrawElementsInstanced@20)
+       GL_STUB_ALIAS(DrawElementsInstancedEXT, _gloffset_DrawElementsInstanced, DrawElementsInstancedEXT@20, DrawElementsInstanced, DrawElementsInstanced@20)
+       GL_STUB_ALIAS(LoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB, LoadTransposeMatrixd@4, LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4)
+       GL_STUB_ALIAS(LoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB, LoadTransposeMatrixf@4, LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4)
+       GL_STUB_ALIAS(MultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB, MultTransposeMatrixd@4, MultTransposeMatrixdARB, MultTransposeMatrixdARB@4)
+       GL_STUB_ALIAS(MultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB, MultTransposeMatrixf@4, MultTransposeMatrixfARB, MultTransposeMatrixfARB@4)
+       GL_STUB_ALIAS(SampleCoverage, _gloffset_SampleCoverageARB, SampleCoverage@8, SampleCoverageARB, SampleCoverageARB@8)
+       GL_STUB_ALIAS(CompressedTexImage1D, _gloffset_CompressedTexImage1DARB, CompressedTexImage1D@28, CompressedTexImage1DARB, CompressedTexImage1DARB@28)
+       GL_STUB_ALIAS(CompressedTexImage2D, _gloffset_CompressedTexImage2DARB, CompressedTexImage2D@32, CompressedTexImage2DARB, CompressedTexImage2DARB@32)
+       GL_STUB_ALIAS(CompressedTexImage3D, _gloffset_CompressedTexImage3DARB, CompressedTexImage3D@36, CompressedTexImage3DARB, CompressedTexImage3DARB@36)
+       GL_STUB_ALIAS(CompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB, CompressedTexSubImage1D@28, CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28)
+       GL_STUB_ALIAS(CompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB, CompressedTexSubImage2D@36, CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36)
+       GL_STUB_ALIAS(CompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB, CompressedTexSubImage3D@44, CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44)
+       GL_STUB_ALIAS(GetCompressedTexImage, _gloffset_GetCompressedTexImageARB, GetCompressedTexImage@12, GetCompressedTexImageARB, GetCompressedTexImageARB@12)
+       GL_STUB_ALIAS(DisableVertexAttribArray, _gloffset_DisableVertexAttribArrayARB, DisableVertexAttribArray@4, DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4)
+       GL_STUB_ALIAS(EnableVertexAttribArray, _gloffset_EnableVertexAttribArrayARB, EnableVertexAttribArray@4, EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4)
+       GL_STUB_ALIAS(GetVertexAttribdv, _gloffset_GetVertexAttribdvARB, GetVertexAttribdv@12, GetVertexAttribdvARB, GetVertexAttribdvARB@12)
+       GL_STUB_ALIAS(GetVertexAttribfv, _gloffset_GetVertexAttribfvARB, GetVertexAttribfv@12, GetVertexAttribfvARB, GetVertexAttribfvARB@12)
+       GL_STUB_ALIAS(GetVertexAttribiv, _gloffset_GetVertexAttribivARB, GetVertexAttribiv@12, GetVertexAttribivARB, GetVertexAttribivARB@12)
+       GL_STUB_ALIAS(ProgramParameter4dNV, _gloffset_ProgramEnvParameter4dARB, ProgramParameter4dNV@40, ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40)
+       GL_STUB_ALIAS(ProgramParameter4dvNV, _gloffset_ProgramEnvParameter4dvARB, ProgramParameter4dvNV@12, ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12)
+       GL_STUB_ALIAS(ProgramParameter4fNV, _gloffset_ProgramEnvParameter4fARB, ProgramParameter4fNV@24, ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24)
+       GL_STUB_ALIAS(ProgramParameter4fvNV, _gloffset_ProgramEnvParameter4fvARB, ProgramParameter4fvNV@12, ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12)
+       GL_STUB_ALIAS(VertexAttrib1d, _gloffset_VertexAttrib1dARB, VertexAttrib1d@12, VertexAttrib1dARB, VertexAttrib1dARB@12)
+       GL_STUB_ALIAS(VertexAttrib1dv, _gloffset_VertexAttrib1dvARB, VertexAttrib1dv@8, VertexAttrib1dvARB, VertexAttrib1dvARB@8)
+       GL_STUB_ALIAS(VertexAttrib1f, _gloffset_VertexAttrib1fARB, VertexAttrib1f@8, VertexAttrib1fARB, VertexAttrib1fARB@8)
+       GL_STUB_ALIAS(VertexAttrib1fv, _gloffset_VertexAttrib1fvARB, VertexAttrib1fv@8, VertexAttrib1fvARB, VertexAttrib1fvARB@8)
+       GL_STUB_ALIAS(VertexAttrib1s, _gloffset_VertexAttrib1sARB, VertexAttrib1s@8, VertexAttrib1sARB, VertexAttrib1sARB@8)
+       GL_STUB_ALIAS(VertexAttrib1sv, _gloffset_VertexAttrib1svARB, VertexAttrib1sv@8, VertexAttrib1svARB, VertexAttrib1svARB@8)
+       GL_STUB_ALIAS(VertexAttrib2d, _gloffset_VertexAttrib2dARB, VertexAttrib2d@20, VertexAttrib2dARB, VertexAttrib2dARB@20)
+       GL_STUB_ALIAS(VertexAttrib2dv, _gloffset_VertexAttrib2dvARB, VertexAttrib2dv@8, VertexAttrib2dvARB, VertexAttrib2dvARB@8)
+       GL_STUB_ALIAS(VertexAttrib2f, _gloffset_VertexAttrib2fARB, VertexAttrib2f@12, VertexAttrib2fARB, VertexAttrib2fARB@12)
+       GL_STUB_ALIAS(VertexAttrib2fv, _gloffset_VertexAttrib2fvARB, VertexAttrib2fv@8, VertexAttrib2fvARB, VertexAttrib2fvARB@8)
+       GL_STUB_ALIAS(VertexAttrib2s, _gloffset_VertexAttrib2sARB, VertexAttrib2s@12, VertexAttrib2sARB, VertexAttrib2sARB@12)
+       GL_STUB_ALIAS(VertexAttrib2sv, _gloffset_VertexAttrib2svARB, VertexAttrib2sv@8, VertexAttrib2svARB, VertexAttrib2svARB@8)
+       GL_STUB_ALIAS(VertexAttrib3d, _gloffset_VertexAttrib3dARB, VertexAttrib3d@28, VertexAttrib3dARB, VertexAttrib3dARB@28)
+       GL_STUB_ALIAS(VertexAttrib3dv, _gloffset_VertexAttrib3dvARB, VertexAttrib3dv@8, VertexAttrib3dvARB, VertexAttrib3dvARB@8)
+       GL_STUB_ALIAS(VertexAttrib3f, _gloffset_VertexAttrib3fARB, VertexAttrib3f@16, VertexAttrib3fARB, VertexAttrib3fARB@16)
+       GL_STUB_ALIAS(VertexAttrib3fv, _gloffset_VertexAttrib3fvARB, VertexAttrib3fv@8, VertexAttrib3fvARB, VertexAttrib3fvARB@8)
+       GL_STUB_ALIAS(VertexAttrib3s, _gloffset_VertexAttrib3sARB, VertexAttrib3s@16, VertexAttrib3sARB, VertexAttrib3sARB@16)
+       GL_STUB_ALIAS(VertexAttrib3sv, _gloffset_VertexAttrib3svARB, VertexAttrib3sv@8, VertexAttrib3svARB, VertexAttrib3svARB@8)
+       GL_STUB_ALIAS(VertexAttrib4Nbv, _gloffset_VertexAttrib4NbvARB, VertexAttrib4Nbv@8, VertexAttrib4NbvARB, VertexAttrib4NbvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4Niv, _gloffset_VertexAttrib4NivARB, VertexAttrib4Niv@8, VertexAttrib4NivARB, VertexAttrib4NivARB@8)
+       GL_STUB_ALIAS(VertexAttrib4Nsv, _gloffset_VertexAttrib4NsvARB, VertexAttrib4Nsv@8, VertexAttrib4NsvARB, VertexAttrib4NsvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4Nub, _gloffset_VertexAttrib4NubARB, VertexAttrib4Nub@20, VertexAttrib4NubARB, VertexAttrib4NubARB@20)
+       GL_STUB_ALIAS(VertexAttrib4Nubv, _gloffset_VertexAttrib4NubvARB, VertexAttrib4Nubv@8, VertexAttrib4NubvARB, VertexAttrib4NubvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4Nuiv, _gloffset_VertexAttrib4NuivARB, VertexAttrib4Nuiv@8, VertexAttrib4NuivARB, VertexAttrib4NuivARB@8)
+       GL_STUB_ALIAS(VertexAttrib4Nusv, _gloffset_VertexAttrib4NusvARB, VertexAttrib4Nusv@8, VertexAttrib4NusvARB, VertexAttrib4NusvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4bv, _gloffset_VertexAttrib4bvARB, VertexAttrib4bv@8, VertexAttrib4bvARB, VertexAttrib4bvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4d, _gloffset_VertexAttrib4dARB, VertexAttrib4d@36, VertexAttrib4dARB, VertexAttrib4dARB@36)
+       GL_STUB_ALIAS(VertexAttrib4dv, _gloffset_VertexAttrib4dvARB, VertexAttrib4dv@8, VertexAttrib4dvARB, VertexAttrib4dvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4f, _gloffset_VertexAttrib4fARB, VertexAttrib4f@20, VertexAttrib4fARB, VertexAttrib4fARB@20)
+       GL_STUB_ALIAS(VertexAttrib4fv, _gloffset_VertexAttrib4fvARB, VertexAttrib4fv@8, VertexAttrib4fvARB, VertexAttrib4fvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4iv, _gloffset_VertexAttrib4ivARB, VertexAttrib4iv@8, VertexAttrib4ivARB, VertexAttrib4ivARB@8)
+       GL_STUB_ALIAS(VertexAttrib4s, _gloffset_VertexAttrib4sARB, VertexAttrib4s@20, VertexAttrib4sARB, VertexAttrib4sARB@20)
+       GL_STUB_ALIAS(VertexAttrib4sv, _gloffset_VertexAttrib4svARB, VertexAttrib4sv@8, VertexAttrib4svARB, VertexAttrib4svARB@8)
+       GL_STUB_ALIAS(VertexAttrib4ubv, _gloffset_VertexAttrib4ubvARB, VertexAttrib4ubv@8, VertexAttrib4ubvARB, VertexAttrib4ubvARB@8)
+       GL_STUB_ALIAS(VertexAttrib4uiv, _gloffset_VertexAttrib4uivARB, VertexAttrib4uiv@8, VertexAttrib4uivARB, VertexAttrib4uivARB@8)
+       GL_STUB_ALIAS(VertexAttrib4usv, _gloffset_VertexAttrib4usvARB, VertexAttrib4usv@8, VertexAttrib4usvARB, VertexAttrib4usvARB@8)
+       GL_STUB_ALIAS(VertexAttribPointer, _gloffset_VertexAttribPointerARB, VertexAttribPointer@24, VertexAttribPointerARB, VertexAttribPointerARB@24)
+       GL_STUB_ALIAS(BindBuffer, _gloffset_BindBufferARB, BindBuffer@8, BindBufferARB, BindBufferARB@8)
+       GL_STUB_ALIAS(BufferData, _gloffset_BufferDataARB, BufferData@16, BufferDataARB, BufferDataARB@16)
+       GL_STUB_ALIAS(BufferSubData, _gloffset_BufferSubDataARB, BufferSubData@16, BufferSubDataARB, BufferSubDataARB@16)
+       GL_STUB_ALIAS(DeleteBuffers, _gloffset_DeleteBuffersARB, DeleteBuffers@8, DeleteBuffersARB, DeleteBuffersARB@8)
+       GL_STUB_ALIAS(GenBuffers, _gloffset_GenBuffersARB, GenBuffers@8, GenBuffersARB, GenBuffersARB@8)
+       GL_STUB_ALIAS(GetBufferParameteriv, _gloffset_GetBufferParameterivARB, GetBufferParameteriv@12, GetBufferParameterivARB, GetBufferParameterivARB@12)
+       GL_STUB_ALIAS(GetBufferPointerv, _gloffset_GetBufferPointervARB, GetBufferPointerv@12, GetBufferPointervARB, GetBufferPointervARB@12)
+       GL_STUB_ALIAS(GetBufferSubData, _gloffset_GetBufferSubDataARB, GetBufferSubData@16, GetBufferSubDataARB, GetBufferSubDataARB@16)
+       GL_STUB_ALIAS(IsBuffer, _gloffset_IsBufferARB, IsBuffer@4, IsBufferARB, IsBufferARB@4)
+       GL_STUB_ALIAS(MapBuffer, _gloffset_MapBufferARB, MapBuffer@8, MapBufferARB, MapBufferARB@8)
+       GL_STUB_ALIAS(UnmapBuffer, _gloffset_UnmapBufferARB, UnmapBuffer@4, UnmapBufferARB, UnmapBufferARB@4)
+       GL_STUB_ALIAS(BeginQuery, _gloffset_BeginQueryARB, BeginQuery@8, BeginQueryARB, BeginQueryARB@8)
+       GL_STUB_ALIAS(DeleteQueries, _gloffset_DeleteQueriesARB, DeleteQueries@8, DeleteQueriesARB, DeleteQueriesARB@8)
+       GL_STUB_ALIAS(EndQuery, _gloffset_EndQueryARB, EndQuery@4, EndQueryARB, EndQueryARB@4)
+       GL_STUB_ALIAS(GenQueries, _gloffset_GenQueriesARB, GenQueries@8, GenQueriesARB, GenQueriesARB@8)
+       GL_STUB_ALIAS(GetQueryObjectiv, _gloffset_GetQueryObjectivARB, GetQueryObjectiv@12, GetQueryObjectivARB, GetQueryObjectivARB@12)
+       GL_STUB_ALIAS(GetQueryObjectuiv, _gloffset_GetQueryObjectuivARB, GetQueryObjectuiv@12, GetQueryObjectuivARB, GetQueryObjectuivARB@12)
+       GL_STUB_ALIAS(GetQueryiv, _gloffset_GetQueryivARB, GetQueryiv@12, GetQueryivARB, GetQueryivARB@12)
+       GL_STUB_ALIAS(IsQuery, _gloffset_IsQueryARB, IsQuery@4, IsQueryARB, IsQueryARB@4)
+       GL_STUB_ALIAS(CompileShader, _gloffset_CompileShaderARB, CompileShader@4, CompileShaderARB, CompileShaderARB@4)
+       GL_STUB_ALIAS(GetActiveUniform, _gloffset_GetActiveUniformARB, GetActiveUniform@28, GetActiveUniformARB, GetActiveUniformARB@28)
+       GL_STUB_ALIAS(GetShaderSource, _gloffset_GetShaderSourceARB, GetShaderSource@16, GetShaderSourceARB, GetShaderSourceARB@16)
+       GL_STUB_ALIAS(GetUniformLocation, _gloffset_GetUniformLocationARB, GetUniformLocation@8, GetUniformLocationARB, GetUniformLocationARB@8)
+       GL_STUB_ALIAS(GetUniformfv, _gloffset_GetUniformfvARB, GetUniformfv@12, GetUniformfvARB, GetUniformfvARB@12)
+       GL_STUB_ALIAS(GetUniformiv, _gloffset_GetUniformivARB, GetUniformiv@12, GetUniformivARB, GetUniformivARB@12)
+       GL_STUB_ALIAS(LinkProgram, _gloffset_LinkProgramARB, LinkProgram@4, LinkProgramARB, LinkProgramARB@4)
+       GL_STUB_ALIAS(ShaderSource, _gloffset_ShaderSourceARB, ShaderSource@16, ShaderSourceARB, ShaderSourceARB@16)
+       GL_STUB_ALIAS(Uniform1f, _gloffset_Uniform1fARB, Uniform1f@8, Uniform1fARB, Uniform1fARB@8)
+       GL_STUB_ALIAS(Uniform1fv, _gloffset_Uniform1fvARB, Uniform1fv@12, Uniform1fvARB, Uniform1fvARB@12)
+       GL_STUB_ALIAS(Uniform1i, _gloffset_Uniform1iARB, Uniform1i@8, Uniform1iARB, Uniform1iARB@8)
+       GL_STUB_ALIAS(Uniform1iv, _gloffset_Uniform1ivARB, Uniform1iv@12, Uniform1ivARB, Uniform1ivARB@12)
+       GL_STUB_ALIAS(Uniform2f, _gloffset_Uniform2fARB, Uniform2f@12, Uniform2fARB, Uniform2fARB@12)
+       GL_STUB_ALIAS(Uniform2fv, _gloffset_Uniform2fvARB, Uniform2fv@12, Uniform2fvARB, Uniform2fvARB@12)
+       GL_STUB_ALIAS(Uniform2i, _gloffset_Uniform2iARB, Uniform2i@12, Uniform2iARB, Uniform2iARB@12)
+       GL_STUB_ALIAS(Uniform2iv, _gloffset_Uniform2ivARB, Uniform2iv@12, Uniform2ivARB, Uniform2ivARB@12)
+       GL_STUB_ALIAS(Uniform3f, _gloffset_Uniform3fARB, Uniform3f@16, Uniform3fARB, Uniform3fARB@16)
+       GL_STUB_ALIAS(Uniform3fv, _gloffset_Uniform3fvARB, Uniform3fv@12, Uniform3fvARB, Uniform3fvARB@12)
+       GL_STUB_ALIAS(Uniform3i, _gloffset_Uniform3iARB, Uniform3i@16, Uniform3iARB, Uniform3iARB@16)
+       GL_STUB_ALIAS(Uniform3iv, _gloffset_Uniform3ivARB, Uniform3iv@12, Uniform3ivARB, Uniform3ivARB@12)
+       GL_STUB_ALIAS(Uniform4f, _gloffset_Uniform4fARB, Uniform4f@20, Uniform4fARB, Uniform4fARB@20)
+       GL_STUB_ALIAS(Uniform4fv, _gloffset_Uniform4fvARB, Uniform4fv@12, Uniform4fvARB, Uniform4fvARB@12)
+       GL_STUB_ALIAS(Uniform4i, _gloffset_Uniform4iARB, Uniform4i@20, Uniform4iARB, Uniform4iARB@20)
+       GL_STUB_ALIAS(Uniform4iv, _gloffset_Uniform4ivARB, Uniform4iv@12, Uniform4ivARB, Uniform4ivARB@12)
+       GL_STUB_ALIAS(UniformMatrix2fv, _gloffset_UniformMatrix2fvARB, UniformMatrix2fv@16, UniformMatrix2fvARB, UniformMatrix2fvARB@16)
+       GL_STUB_ALIAS(UniformMatrix3fv, _gloffset_UniformMatrix3fvARB, UniformMatrix3fv@16, UniformMatrix3fvARB, UniformMatrix3fvARB@16)
+       GL_STUB_ALIAS(UniformMatrix4fv, _gloffset_UniformMatrix4fvARB, UniformMatrix4fv@16, UniformMatrix4fvARB, UniformMatrix4fvARB@16)
+       GL_STUB_ALIAS(UseProgram, _gloffset_UseProgramObjectARB, UseProgram@4, UseProgramObjectARB, UseProgramObjectARB@4)
+       GL_STUB_ALIAS(ValidateProgram, _gloffset_ValidateProgramARB, ValidateProgram@4, ValidateProgramARB, ValidateProgramARB@4)
+       GL_STUB_ALIAS(BindAttribLocation, _gloffset_BindAttribLocationARB, BindAttribLocation@12, BindAttribLocationARB, BindAttribLocationARB@12)
+       GL_STUB_ALIAS(GetActiveAttrib, _gloffset_GetActiveAttribARB, GetActiveAttrib@28, GetActiveAttribARB, GetActiveAttribARB@28)
+       GL_STUB_ALIAS(GetAttribLocation, _gloffset_GetAttribLocationARB, GetAttribLocation@8, GetAttribLocationARB, GetAttribLocationARB@8)
+       GL_STUB_ALIAS(DrawBuffers, _gloffset_DrawBuffersARB, DrawBuffers@8, DrawBuffersARB, DrawBuffersARB@8)
+       GL_STUB_ALIAS(DrawBuffersATI, _gloffset_DrawBuffersARB, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8)
+       GL_STUB_ALIAS(RenderbufferStorageMultisampleEXT, _gloffset_RenderbufferStorageMultisample, RenderbufferStorageMultisampleEXT@20, RenderbufferStorageMultisample, RenderbufferStorageMultisample@20)
+       GL_STUB_ALIAS(PointParameterf, _gloffset_PointParameterfEXT, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8)
+       GL_STUB_ALIAS(PointParameterfARB, _gloffset_PointParameterfEXT, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8)
+       GL_STUB_ALIAS(PointParameterfv, _gloffset_PointParameterfvEXT, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8)
+       GL_STUB_ALIAS(PointParameterfvARB, _gloffset_PointParameterfvEXT, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8)
+       GL_STUB_ALIAS(SecondaryColor3b, _gloffset_SecondaryColor3bEXT, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12)
+       GL_STUB_ALIAS(SecondaryColor3bv, _gloffset_SecondaryColor3bvEXT, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4)
+       GL_STUB_ALIAS(SecondaryColor3d, _gloffset_SecondaryColor3dEXT, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24)
+       GL_STUB_ALIAS(SecondaryColor3dv, _gloffset_SecondaryColor3dvEXT, SecondaryColor3dv@4, SecondaryColor3dvEXT, SecondaryColor3dvEXT@4)
+       GL_STUB_ALIAS(SecondaryColor3f, _gloffset_SecondaryColor3fEXT, SecondaryColor3f@12, SecondaryColor3fEXT, SecondaryColor3fEXT@12)
+       GL_STUB_ALIAS(SecondaryColor3fv, _gloffset_SecondaryColor3fvEXT, SecondaryColor3fv@4, SecondaryColor3fvEXT, SecondaryColor3fvEXT@4)
+       GL_STUB_ALIAS(SecondaryColor3i, _gloffset_SecondaryColor3iEXT, SecondaryColor3i@12, SecondaryColor3iEXT, SecondaryColor3iEXT@12)
+       GL_STUB_ALIAS(SecondaryColor3iv, _gloffset_SecondaryColor3ivEXT, SecondaryColor3iv@4, SecondaryColor3ivEXT, SecondaryColor3ivEXT@4)
+       GL_STUB_ALIAS(SecondaryColor3s, _gloffset_SecondaryColor3sEXT, SecondaryColor3s@12, SecondaryColor3sEXT, SecondaryColor3sEXT@12)
+       GL_STUB_ALIAS(SecondaryColor3sv, _gloffset_SecondaryColor3svEXT, SecondaryColor3sv@4, SecondaryColor3svEXT, SecondaryColor3svEXT@4)
+       GL_STUB_ALIAS(SecondaryColor3ub, _gloffset_SecondaryColor3ubEXT, SecondaryColor3ub@12, SecondaryColor3ubEXT, SecondaryColor3ubEXT@12)
+       GL_STUB_ALIAS(SecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT, SecondaryColor3ubv@4, SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4)
+       GL_STUB_ALIAS(SecondaryColor3ui, _gloffset_SecondaryColor3uiEXT, SecondaryColor3ui@12, SecondaryColor3uiEXT, SecondaryColor3uiEXT@12)
+       GL_STUB_ALIAS(SecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT, SecondaryColor3uiv@4, SecondaryColor3uivEXT, SecondaryColor3uivEXT@4)
+       GL_STUB_ALIAS(SecondaryColor3us, _gloffset_SecondaryColor3usEXT, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12)
+       GL_STUB_ALIAS(SecondaryColor3usv, _gloffset_SecondaryColor3usvEXT, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4)
+       GL_STUB_ALIAS(SecondaryColorPointer, _gloffset_SecondaryColorPointerEXT, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16)
+       GL_STUB_ALIAS(MultiDrawArrays, _gloffset_MultiDrawArraysEXT, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16)
+       GL_STUB_ALIAS(MultiDrawElements, _gloffset_MultiDrawElementsEXT, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20)
+       GL_STUB_ALIAS(FogCoordPointer, _gloffset_FogCoordPointerEXT, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12)
+       GL_STUB_ALIAS(FogCoordd, _gloffset_FogCoorddEXT, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8)
+       GL_STUB_ALIAS(FogCoorddv, _gloffset_FogCoorddvEXT, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4)
+       GL_STUB_ALIAS(FogCoordf, _gloffset_FogCoordfEXT, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4)
+       GL_STUB_ALIAS(FogCoordfv, _gloffset_FogCoordfvEXT, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4)
+       GL_STUB_ALIAS(BlendFuncSeparate, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
+       GL_STUB_ALIAS(WindowPos2d, _gloffset_WindowPos2dMESA, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16)
+       GL_STUB_ALIAS(WindowPos2dARB, _gloffset_WindowPos2dMESA, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16)
+       GL_STUB_ALIAS(WindowPos2dv, _gloffset_WindowPos2dvMESA, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
+       GL_STUB_ALIAS(WindowPos2dvARB, _gloffset_WindowPos2dvMESA, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
+       GL_STUB_ALIAS(WindowPos2f, _gloffset_WindowPos2fMESA, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8)
+       GL_STUB_ALIAS(WindowPos2fARB, _gloffset_WindowPos2fMESA, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8)
+       GL_STUB_ALIAS(WindowPos2fv, _gloffset_WindowPos2fvMESA, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
+       GL_STUB_ALIAS(WindowPos2fvARB, _gloffset_WindowPos2fvMESA, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
+       GL_STUB_ALIAS(WindowPos2i, _gloffset_WindowPos2iMESA, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8)
+       GL_STUB_ALIAS(WindowPos2iARB, _gloffset_WindowPos2iMESA, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8)
+       GL_STUB_ALIAS(WindowPos2iv, _gloffset_WindowPos2ivMESA, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
+       GL_STUB_ALIAS(WindowPos2ivARB, _gloffset_WindowPos2ivMESA, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
+       GL_STUB_ALIAS(WindowPos2s, _gloffset_WindowPos2sMESA, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8)
+       GL_STUB_ALIAS(WindowPos2sARB, _gloffset_WindowPos2sMESA, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8)
+       GL_STUB_ALIAS(WindowPos2sv, _gloffset_WindowPos2svMESA, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4)
+       GL_STUB_ALIAS(WindowPos2svARB, _gloffset_WindowPos2svMESA, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4)
+       GL_STUB_ALIAS(WindowPos3d, _gloffset_WindowPos3dMESA, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24)
+       GL_STUB_ALIAS(WindowPos3dARB, _gloffset_WindowPos3dMESA, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24)
+       GL_STUB_ALIAS(WindowPos3dv, _gloffset_WindowPos3dvMESA, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
+       GL_STUB_ALIAS(WindowPos3dvARB, _gloffset_WindowPos3dvMESA, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
+       GL_STUB_ALIAS(WindowPos3f, _gloffset_WindowPos3fMESA, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12)
+       GL_STUB_ALIAS(WindowPos3fARB, _gloffset_WindowPos3fMESA, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12)
+       GL_STUB_ALIAS(WindowPos3fv, _gloffset_WindowPos3fvMESA, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
+       GL_STUB_ALIAS(WindowPos3fvARB, _gloffset_WindowPos3fvMESA, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
+       GL_STUB_ALIAS(WindowPos3i, _gloffset_WindowPos3iMESA, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12)
+       GL_STUB_ALIAS(WindowPos3iARB, _gloffset_WindowPos3iMESA, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12)
+       GL_STUB_ALIAS(WindowPos3iv, _gloffset_WindowPos3ivMESA, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
+       GL_STUB_ALIAS(WindowPos3ivARB, _gloffset_WindowPos3ivMESA, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
+       GL_STUB_ALIAS(WindowPos3s, _gloffset_WindowPos3sMESA, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12)
+       GL_STUB_ALIAS(WindowPos3sARB, _gloffset_WindowPos3sMESA, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12)
+       GL_STUB_ALIAS(WindowPos3sv, _gloffset_WindowPos3svMESA, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4)
+       GL_STUB_ALIAS(WindowPos3svARB, _gloffset_WindowPos3svMESA, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4)
+       GL_STUB_ALIAS(BindProgramARB, _gloffset_BindProgramNV, BindProgramARB@8, BindProgramNV, BindProgramNV@8)
+       GL_STUB_ALIAS(DeleteProgramsARB, _gloffset_DeleteProgramsNV, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8)
+       GL_STUB_ALIAS(GenProgramsARB, _gloffset_GenProgramsNV, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8)
+       GL_STUB_ALIAS(GetVertexAttribPointerv, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointerv@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
+       GL_STUB_ALIAS(GetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
+       GL_STUB_ALIAS(IsProgramARB, _gloffset_IsProgramNV, IsProgramARB@4, IsProgramNV, IsProgramNV@4)
+       GL_STUB_ALIAS(PointParameteri, _gloffset_PointParameteriNV, PointParameteri@8, PointParameteriNV, PointParameteriNV@8)
+       GL_STUB_ALIAS(PointParameteriv, _gloffset_PointParameterivNV, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8)
+       GL_STUB_ALIAS(DeleteVertexArrays, _gloffset_DeleteVertexArraysAPPLE, DeleteVertexArrays@8, _dispatch_stub_757, _dispatch_stub_757@8)
+       GL_STUB_ALIAS(IsVertexArray, _gloffset_IsVertexArrayAPPLE, IsVertexArray@4, _dispatch_stub_759, _dispatch_stub_759@4)
+       GL_STUB_ALIAS(BlendEquationSeparate, _gloffset_BlendEquationSeparateEXT, BlendEquationSeparate@8, _dispatch_stub_767, _dispatch_stub_767@8)
+       GL_STUB_ALIAS(BindFramebuffer, _gloffset_BindFramebufferEXT, BindFramebuffer@8, BindFramebufferEXT, BindFramebufferEXT@8)
+       GL_STUB_ALIAS(BindRenderbuffer, _gloffset_BindRenderbufferEXT, BindRenderbuffer@8, BindRenderbufferEXT, BindRenderbufferEXT@8)
+       GL_STUB_ALIAS(CheckFramebufferStatus, _gloffset_CheckFramebufferStatusEXT, CheckFramebufferStatus@4, CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4)
+       GL_STUB_ALIAS(DeleteFramebuffers, _gloffset_DeleteFramebuffersEXT, DeleteFramebuffers@8, DeleteFramebuffersEXT, DeleteFramebuffersEXT@8)
+       GL_STUB_ALIAS(DeleteRenderbuffers, _gloffset_DeleteRenderbuffersEXT, DeleteRenderbuffers@8, DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8)
+       GL_STUB_ALIAS(FramebufferRenderbuffer, _gloffset_FramebufferRenderbufferEXT, FramebufferRenderbuffer@16, FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16)
+       GL_STUB_ALIAS(FramebufferTexture1D, _gloffset_FramebufferTexture1DEXT, FramebufferTexture1D@20, FramebufferTexture1DEXT, FramebufferTexture1DEXT@20)
+       GL_STUB_ALIAS(FramebufferTexture2D, _gloffset_FramebufferTexture2DEXT, FramebufferTexture2D@20, FramebufferTexture2DEXT, FramebufferTexture2DEXT@20)
+       GL_STUB_ALIAS(FramebufferTexture3D, _gloffset_FramebufferTexture3DEXT, FramebufferTexture3D@24, FramebufferTexture3DEXT, FramebufferTexture3DEXT@24)
+       GL_STUB_ALIAS(GenFramebuffers, _gloffset_GenFramebuffersEXT, GenFramebuffers@8, GenFramebuffersEXT, GenFramebuffersEXT@8)
+       GL_STUB_ALIAS(GenRenderbuffers, _gloffset_GenRenderbuffersEXT, GenRenderbuffers@8, GenRenderbuffersEXT, GenRenderbuffersEXT@8)
+       GL_STUB_ALIAS(GenerateMipmap, _gloffset_GenerateMipmapEXT, GenerateMipmap@4, GenerateMipmapEXT, GenerateMipmapEXT@4)
+       GL_STUB_ALIAS(GetFramebufferAttachmentParameteriv, _gloffset_GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameteriv@16, GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16)
+       GL_STUB_ALIAS(GetRenderbufferParameteriv, _gloffset_GetRenderbufferParameterivEXT, GetRenderbufferParameteriv@12, GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12)
+       GL_STUB_ALIAS(IsFramebuffer, _gloffset_IsFramebufferEXT, IsFramebuffer@4, IsFramebufferEXT, IsFramebufferEXT@4)
+       GL_STUB_ALIAS(IsRenderbuffer, _gloffset_IsRenderbufferEXT, IsRenderbuffer@4, IsRenderbufferEXT, IsRenderbufferEXT@4)
+       GL_STUB_ALIAS(RenderbufferStorage, _gloffset_RenderbufferStorageEXT, RenderbufferStorage@16, RenderbufferStorageEXT, RenderbufferStorageEXT@16)
+       GL_STUB_ALIAS(BlitFramebuffer, _gloffset_BlitFramebufferEXT, BlitFramebuffer@40, _dispatch_stub_785, _dispatch_stub_785@40)
+       GL_STUB_ALIAS(FramebufferTextureLayer, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
+       GL_STUB_ALIAS(BeginTransformFeedback, _gloffset_BeginTransformFeedbackEXT, BeginTransformFeedback@4, BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4)
+       GL_STUB_ALIAS(BindBufferBase, _gloffset_BindBufferBaseEXT, BindBufferBase@12, BindBufferBaseEXT, BindBufferBaseEXT@12)
+       GL_STUB_ALIAS(BindBufferRange, _gloffset_BindBufferRangeEXT, BindBufferRange@20, BindBufferRangeEXT, BindBufferRangeEXT@20)
+       GL_STUB_ALIAS(EndTransformFeedback, _gloffset_EndTransformFeedbackEXT, EndTransformFeedback@0, EndTransformFeedbackEXT, EndTransformFeedbackEXT@0)
+       GL_STUB_ALIAS(GetTransformFeedbackVarying, _gloffset_GetTransformFeedbackVaryingEXT, GetTransformFeedbackVarying@28, GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28)
+       GL_STUB_ALIAS(TransformFeedbackVaryings, _gloffset_TransformFeedbackVaryingsEXT, TransformFeedbackVaryings@16, TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16)
+       GL_STUB_ALIAS(ProvokingVertex, _gloffset_ProvokingVertexEXT, ProvokingVertex@4, ProvokingVertexEXT, ProvokingVertexEXT@4)
+
+               GLOBL   GLNAME(gl_dispatch_functions_end)
+               HIDDEN(GLNAME(gl_dispatch_functions_end))
+               ALIGNTEXT16
+GLNAME(gl_dispatch_functions_end):
+
+#if defined(GLX_USE_TLS) && defined(__linux__)
+       .section ".note.ABI-tag", "a"
+       .p2align 2
+       .long   1f - 0f   /* name length */
+       .long   3f - 2f   /* data length */
+       .long   1         /* note length */
+0:     .asciz "GNU"      /* vendor name */
+1:     .p2align 2
+2:     .long   0         /* note data: the ABI tag */
+       .long   2,4,20    /* Minimum kernel version w/TLS */
+3:     .p2align 2        /* pad out section */
+#endif /* GLX_USE_TLS */
+
+#if defined (__ELF__) && defined (__linux__)
+       .section .note.GNU-stack,"",%progbits
+#endif
diff --git a/src/mapi/glapi/glapidispatch.h b/src/mapi/glapi/glapidispatch.h
new file mode 100644 (file)
index 0000000..f66876f
--- /dev/null
@@ -0,0 +1,4161 @@
+/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */
+
+/*
+ * (C) Copyright IBM Corporation 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.
+ */
+
+#if !defined( _GLAPI_DISPATCH_H_ )
+#  define _GLAPI_DISPATCH_H_
+
+
+/* this file should not be included directly in mesa */
+
+/**
+ * \file glapidispatch.h
+ * Macros for handling GL dispatch tables.
+ *
+ * For each known GL function, there are 3 macros in this file.  The first
+ * macro is named CALL_FuncName and is used to call that GL function using
+ * the specified dispatch table.  The other 2 macros, called GET_FuncName
+ * can SET_FuncName, are used to get and set the dispatch pointer for the
+ * named function in the specified dispatch table.
+ */
+
+#define CALL_by_offset(disp, cast, offset, parameters) \
+    (*(cast (GET_by_offset(disp, offset)))) parameters
+#define GET_by_offset(disp, offset) \
+    (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL
+#define SET_by_offset(disp, offset, fn) \
+    do { \
+        if ( (offset) < 0 ) { \
+            /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\n", */ \
+            /*         __func__, __LINE__, disp, offset, # fn); */ \
+            /* abort(); */ \
+        } \
+        else { \
+            ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \
+        } \
+    } while(0)
+
+#define CALL_NewList(disp, parameters) (*((disp)->NewList)) parameters
+#define GET_NewList(disp) ((disp)->NewList)
+#define SET_NewList(disp, fn) ((disp)->NewList = fn)
+#define CALL_EndList(disp, parameters) (*((disp)->EndList)) parameters
+#define GET_EndList(disp) ((disp)->EndList)
+#define SET_EndList(disp, fn) ((disp)->EndList = fn)
+#define CALL_CallList(disp, parameters) (*((disp)->CallList)) parameters
+#define GET_CallList(disp) ((disp)->CallList)
+#define SET_CallList(disp, fn) ((disp)->CallList = fn)
+#define CALL_CallLists(disp, parameters) (*((disp)->CallLists)) parameters
+#define GET_CallLists(disp) ((disp)->CallLists)
+#define SET_CallLists(disp, fn) ((disp)->CallLists = fn)
+#define CALL_DeleteLists(disp, parameters) (*((disp)->DeleteLists)) parameters
+#define GET_DeleteLists(disp) ((disp)->DeleteLists)
+#define SET_DeleteLists(disp, fn) ((disp)->DeleteLists = fn)
+#define CALL_GenLists(disp, parameters) (*((disp)->GenLists)) parameters
+#define GET_GenLists(disp) ((disp)->GenLists)
+#define SET_GenLists(disp, fn) ((disp)->GenLists = fn)
+#define CALL_ListBase(disp, parameters) (*((disp)->ListBase)) parameters
+#define GET_ListBase(disp) ((disp)->ListBase)
+#define SET_ListBase(disp, fn) ((disp)->ListBase = fn)
+#define CALL_Begin(disp, parameters) (*((disp)->Begin)) parameters
+#define GET_Begin(disp) ((disp)->Begin)
+#define SET_Begin(disp, fn) ((disp)->Begin = fn)
+#define CALL_Bitmap(disp, parameters) (*((disp)->Bitmap)) parameters
+#define GET_Bitmap(disp) ((disp)->Bitmap)
+#define SET_Bitmap(disp, fn) ((disp)->Bitmap = fn)
+#define CALL_Color3b(disp, parameters) (*((disp)->Color3b)) parameters
+#define GET_Color3b(disp) ((disp)->Color3b)
+#define SET_Color3b(disp, fn) ((disp)->Color3b = fn)
+#define CALL_Color3bv(disp, parameters) (*((disp)->Color3bv)) parameters
+#define GET_Color3bv(disp) ((disp)->Color3bv)
+#define SET_Color3bv(disp, fn) ((disp)->Color3bv = fn)
+#define CALL_Color3d(disp, parameters) (*((disp)->Color3d)) parameters
+#define GET_Color3d(disp) ((disp)->Color3d)
+#define SET_Color3d(disp, fn) ((disp)->Color3d = fn)
+#define CALL_Color3dv(disp, parameters) (*((disp)->Color3dv)) parameters
+#define GET_Color3dv(disp) ((disp)->Color3dv)
+#define SET_Color3dv(disp, fn) ((disp)->Color3dv = fn)
+#define CALL_Color3f(disp, parameters) (*((disp)->Color3f)) parameters
+#define GET_Color3f(disp) ((disp)->Color3f)
+#define SET_Color3f(disp, fn) ((disp)->Color3f = fn)
+#define CALL_Color3fv(disp, parameters) (*((disp)->Color3fv)) parameters
+#define GET_Color3fv(disp) ((disp)->Color3fv)
+#define SET_Color3fv(disp, fn) ((disp)->Color3fv = fn)
+#define CALL_Color3i(disp, parameters) (*((disp)->Color3i)) parameters
+#define GET_Color3i(disp) ((disp)->Color3i)
+#define SET_Color3i(disp, fn) ((disp)->Color3i = fn)
+#define CALL_Color3iv(disp, parameters) (*((disp)->Color3iv)) parameters
+#define GET_Color3iv(disp) ((disp)->Color3iv)
+#define SET_Color3iv(disp, fn) ((disp)->Color3iv = fn)
+#define CALL_Color3s(disp, parameters) (*((disp)->Color3s)) parameters
+#define GET_Color3s(disp) ((disp)->Color3s)
+#define SET_Color3s(disp, fn) ((disp)->Color3s = fn)
+#define CALL_Color3sv(disp, parameters) (*((disp)->Color3sv)) parameters
+#define GET_Color3sv(disp) ((disp)->Color3sv)
+#define SET_Color3sv(disp, fn) ((disp)->Color3sv = fn)
+#define CALL_Color3ub(disp, parameters) (*((disp)->Color3ub)) parameters
+#define GET_Color3ub(disp) ((disp)->Color3ub)
+#define SET_Color3ub(disp, fn) ((disp)->Color3ub = fn)
+#define CALL_Color3ubv(disp, parameters) (*((disp)->Color3ubv)) parameters
+#define GET_Color3ubv(disp) ((disp)->Color3ubv)
+#define SET_Color3ubv(disp, fn) ((disp)->Color3ubv = fn)
+#define CALL_Color3ui(disp, parameters) (*((disp)->Color3ui)) parameters
+#define GET_Color3ui(disp) ((disp)->Color3ui)
+#define SET_Color3ui(disp, fn) ((disp)->Color3ui = fn)
+#define CALL_Color3uiv(disp, parameters) (*((disp)->Color3uiv)) parameters
+#define GET_Color3uiv(disp) ((disp)->Color3uiv)
+#define SET_Color3uiv(disp, fn) ((disp)->Color3uiv = fn)
+#define CALL_Color3us(disp, parameters) (*((disp)->Color3us)) parameters
+#define GET_Color3us(disp) ((disp)->Color3us)
+#define SET_Color3us(disp, fn) ((disp)->Color3us = fn)
+#define CALL_Color3usv(disp, parameters) (*((disp)->Color3usv)) parameters
+#define GET_Color3usv(disp) ((disp)->Color3usv)
+#define SET_Color3usv(disp, fn) ((disp)->Color3usv = fn)
+#define CALL_Color4b(disp, parameters) (*((disp)->Color4b)) parameters
+#define GET_Color4b(disp) ((disp)->Color4b)
+#define SET_Color4b(disp, fn) ((disp)->Color4b = fn)
+#define CALL_Color4bv(disp, parameters) (*((disp)->Color4bv)) parameters
+#define GET_Color4bv(disp) ((disp)->Color4bv)
+#define SET_Color4bv(disp, fn) ((disp)->Color4bv = fn)
+#define CALL_Color4d(disp, parameters) (*((disp)->Color4d)) parameters
+#define GET_Color4d(disp) ((disp)->Color4d)
+#define SET_Color4d(disp, fn) ((disp)->Color4d = fn)
+#define CALL_Color4dv(disp, parameters) (*((disp)->Color4dv)) parameters
+#define GET_Color4dv(disp) ((disp)->Color4dv)
+#define SET_Color4dv(disp, fn) ((disp)->Color4dv = fn)
+#define CALL_Color4f(disp, parameters) (*((disp)->Color4f)) parameters
+#define GET_Color4f(disp) ((disp)->Color4f)
+#define SET_Color4f(disp, fn) ((disp)->Color4f = fn)
+#define CALL_Color4fv(disp, parameters) (*((disp)->Color4fv)) parameters
+#define GET_Color4fv(disp) ((disp)->Color4fv)
+#define SET_Color4fv(disp, fn) ((disp)->Color4fv = fn)
+#define CALL_Color4i(disp, parameters) (*((disp)->Color4i)) parameters
+#define GET_Color4i(disp) ((disp)->Color4i)
+#define SET_Color4i(disp, fn) ((disp)->Color4i = fn)
+#define CALL_Color4iv(disp, parameters) (*((disp)->Color4iv)) parameters
+#define GET_Color4iv(disp) ((disp)->Color4iv)
+#define SET_Color4iv(disp, fn) ((disp)->Color4iv = fn)
+#define CALL_Color4s(disp, parameters) (*((disp)->Color4s)) parameters
+#define GET_Color4s(disp) ((disp)->Color4s)
+#define SET_Color4s(disp, fn) ((disp)->Color4s = fn)
+#define CALL_Color4sv(disp, parameters) (*((disp)->Color4sv)) parameters
+#define GET_Color4sv(disp) ((disp)->Color4sv)
+#define SET_Color4sv(disp, fn) ((disp)->Color4sv = fn)
+#define CALL_Color4ub(disp, parameters) (*((disp)->Color4ub)) parameters
+#define GET_Color4ub(disp) ((disp)->Color4ub)
+#define SET_Color4ub(disp, fn) ((disp)->Color4ub = fn)
+#define CALL_Color4ubv(disp, parameters) (*((disp)->Color4ubv)) parameters
+#define GET_Color4ubv(disp) ((disp)->Color4ubv)
+#define SET_Color4ubv(disp, fn) ((disp)->Color4ubv = fn)
+#define CALL_Color4ui(disp, parameters) (*((disp)->Color4ui)) parameters
+#define GET_Color4ui(disp) ((disp)->Color4ui)
+#define SET_Color4ui(disp, fn) ((disp)->Color4ui = fn)
+#define CALL_Color4uiv(disp, parameters) (*((disp)->Color4uiv)) parameters
+#define GET_Color4uiv(disp) ((disp)->Color4uiv)
+#define SET_Color4uiv(disp, fn) ((disp)->Color4uiv = fn)
+#define CALL_Color4us(disp, parameters) (*((disp)->Color4us)) parameters
+#define GET_Color4us(disp) ((disp)->Color4us)
+#define SET_Color4us(disp, fn) ((disp)->Color4us = fn)
+#define CALL_Color4usv(disp, parameters) (*((disp)->Color4usv)) parameters
+#define GET_Color4usv(disp) ((disp)->Color4usv)
+#define SET_Color4usv(disp, fn) ((disp)->Color4usv = fn)
+#define CALL_EdgeFlag(disp, parameters) (*((disp)->EdgeFlag)) parameters
+#define GET_EdgeFlag(disp) ((disp)->EdgeFlag)
+#define SET_EdgeFlag(disp, fn) ((disp)->EdgeFlag = fn)
+#define CALL_EdgeFlagv(disp, parameters) (*((disp)->EdgeFlagv)) parameters
+#define GET_EdgeFlagv(disp) ((disp)->EdgeFlagv)
+#define SET_EdgeFlagv(disp, fn) ((disp)->EdgeFlagv = fn)
+#define CALL_End(disp, parameters) (*((disp)->End)) parameters
+#define GET_End(disp) ((disp)->End)
+#define SET_End(disp, fn) ((disp)->End = fn)
+#define CALL_Indexd(disp, parameters) (*((disp)->Indexd)) parameters
+#define GET_Indexd(disp) ((disp)->Indexd)
+#define SET_Indexd(disp, fn) ((disp)->Indexd = fn)
+#define CALL_Indexdv(disp, parameters) (*((disp)->Indexdv)) parameters
+#define GET_Indexdv(disp) ((disp)->Indexdv)
+#define SET_Indexdv(disp, fn) ((disp)->Indexdv = fn)
+#define CALL_Indexf(disp, parameters) (*((disp)->Indexf)) parameters
+#define GET_Indexf(disp) ((disp)->Indexf)
+#define SET_Indexf(disp, fn) ((disp)->Indexf = fn)
+#define CALL_Indexfv(disp, parameters) (*((disp)->Indexfv)) parameters
+#define GET_Indexfv(disp) ((disp)->Indexfv)
+#define SET_Indexfv(disp, fn) ((disp)->Indexfv = fn)
+#define CALL_Indexi(disp, parameters) (*((disp)->Indexi)) parameters
+#define GET_Indexi(disp) ((disp)->Indexi)
+#define SET_Indexi(disp, fn) ((disp)->Indexi = fn)
+#define CALL_Indexiv(disp, parameters) (*((disp)->Indexiv)) parameters
+#define GET_Indexiv(disp) ((disp)->Indexiv)
+#define SET_Indexiv(disp, fn) ((disp)->Indexiv = fn)
+#define CALL_Indexs(disp, parameters) (*((disp)->Indexs)) parameters
+#define GET_Indexs(disp) ((disp)->Indexs)
+#define SET_Indexs(disp, fn) ((disp)->Indexs = fn)
+#define CALL_Indexsv(disp, parameters) (*((disp)->Indexsv)) parameters
+#define GET_Indexsv(disp) ((disp)->Indexsv)
+#define SET_Indexsv(disp, fn) ((disp)->Indexsv = fn)
+#define CALL_Normal3b(disp, parameters) (*((disp)->Normal3b)) parameters
+#define GET_Normal3b(disp) ((disp)->Normal3b)
+#define SET_Normal3b(disp, fn) ((disp)->Normal3b = fn)
+#define CALL_Normal3bv(disp, parameters) (*((disp)->Normal3bv)) parameters
+#define GET_Normal3bv(disp) ((disp)->Normal3bv)
+#define SET_Normal3bv(disp, fn) ((disp)->Normal3bv = fn)
+#define CALL_Normal3d(disp, parameters) (*((disp)->Normal3d)) parameters
+#define GET_Normal3d(disp) ((disp)->Normal3d)
+#define SET_Normal3d(disp, fn) ((disp)->Normal3d = fn)
+#define CALL_Normal3dv(disp, parameters) (*((disp)->Normal3dv)) parameters
+#define GET_Normal3dv(disp) ((disp)->Normal3dv)
+#define SET_Normal3dv(disp, fn) ((disp)->Normal3dv = fn)
+#define CALL_Normal3f(disp, parameters) (*((disp)->Normal3f)) parameters
+#define GET_Normal3f(disp) ((disp)->Normal3f)
+#define SET_Normal3f(disp, fn) ((disp)->Normal3f = fn)
+#define CALL_Normal3fv(disp, parameters) (*((disp)->Normal3fv)) parameters
+#define GET_Normal3fv(disp) ((disp)->Normal3fv)
+#define SET_Normal3fv(disp, fn) ((disp)->Normal3fv = fn)
+#define CALL_Normal3i(disp, parameters) (*((disp)->Normal3i)) parameters
+#define GET_Normal3i(disp) ((disp)->Normal3i)
+#define SET_Normal3i(disp, fn) ((disp)->Normal3i = fn)
+#define CALL_Normal3iv(disp, parameters) (*((disp)->Normal3iv)) parameters
+#define GET_Normal3iv(disp) ((disp)->Normal3iv)
+#define SET_Normal3iv(disp, fn) ((disp)->Normal3iv = fn)
+#define CALL_Normal3s(disp, parameters) (*((disp)->Normal3s)) parameters
+#define GET_Normal3s(disp) ((disp)->Normal3s)
+#define SET_Normal3s(disp, fn) ((disp)->Normal3s = fn)
+#define CALL_Normal3sv(disp, parameters) (*((disp)->Normal3sv)) parameters
+#define GET_Normal3sv(disp) ((disp)->Normal3sv)
+#define SET_Normal3sv(disp, fn) ((disp)->Normal3sv = fn)
+#define CALL_RasterPos2d(disp, parameters) (*((disp)->RasterPos2d)) parameters
+#define GET_RasterPos2d(disp) ((disp)->RasterPos2d)
+#define SET_RasterPos2d(disp, fn) ((disp)->RasterPos2d = fn)
+#define CALL_RasterPos2dv(disp, parameters) (*((disp)->RasterPos2dv)) parameters
+#define GET_RasterPos2dv(disp) ((disp)->RasterPos2dv)
+#define SET_RasterPos2dv(disp, fn) ((disp)->RasterPos2dv = fn)
+#define CALL_RasterPos2f(disp, parameters) (*((disp)->RasterPos2f)) parameters
+#define GET_RasterPos2f(disp) ((disp)->RasterPos2f)
+#define SET_RasterPos2f(disp, fn) ((disp)->RasterPos2f = fn)
+#define CALL_RasterPos2fv(disp, parameters) (*((disp)->RasterPos2fv)) parameters
+#define GET_RasterPos2fv(disp) ((disp)->RasterPos2fv)
+#define SET_RasterPos2fv(disp, fn) ((disp)->RasterPos2fv = fn)
+#define CALL_RasterPos2i(disp, parameters) (*((disp)->RasterPos2i)) parameters
+#define GET_RasterPos2i(disp) ((disp)->RasterPos2i)
+#define SET_RasterPos2i(disp, fn) ((disp)->RasterPos2i = fn)
+#define CALL_RasterPos2iv(disp, parameters) (*((disp)->RasterPos2iv)) parameters
+#define GET_RasterPos2iv(disp) ((disp)->RasterPos2iv)
+#define SET_RasterPos2iv(disp, fn) ((disp)->RasterPos2iv = fn)
+#define CALL_RasterPos2s(disp, parameters) (*((disp)->RasterPos2s)) parameters
+#define GET_RasterPos2s(disp) ((disp)->RasterPos2s)
+#define SET_RasterPos2s(disp, fn) ((disp)->RasterPos2s = fn)
+#define CALL_RasterPos2sv(disp, parameters) (*((disp)->RasterPos2sv)) parameters
+#define GET_RasterPos2sv(disp) ((disp)->RasterPos2sv)
+#define SET_RasterPos2sv(disp, fn) ((disp)->RasterPos2sv = fn)
+#define CALL_RasterPos3d(disp, parameters) (*((disp)->RasterPos3d)) parameters
+#define GET_RasterPos3d(disp) ((disp)->RasterPos3d)
+#define SET_RasterPos3d(disp, fn) ((disp)->RasterPos3d = fn)
+#define CALL_RasterPos3dv(disp, parameters) (*((disp)->RasterPos3dv)) parameters
+#define GET_RasterPos3dv(disp) ((disp)->RasterPos3dv)
+#define SET_RasterPos3dv(disp, fn) ((disp)->RasterPos3dv = fn)
+#define CALL_RasterPos3f(disp, parameters) (*((disp)->RasterPos3f)) parameters
+#define GET_RasterPos3f(disp) ((disp)->RasterPos3f)
+#define SET_RasterPos3f(disp, fn) ((disp)->RasterPos3f = fn)
+#define CALL_RasterPos3fv(disp, parameters) (*((disp)->RasterPos3fv)) parameters
+#define GET_RasterPos3fv(disp) ((disp)->RasterPos3fv)
+#define SET_RasterPos3fv(disp, fn) ((disp)->RasterPos3fv = fn)
+#define CALL_RasterPos3i(disp, parameters) (*((disp)->RasterPos3i)) parameters
+#define GET_RasterPos3i(disp) ((disp)->RasterPos3i)
+#define SET_RasterPos3i(disp, fn) ((disp)->RasterPos3i = fn)
+#define CALL_RasterPos3iv(disp, parameters) (*((disp)->RasterPos3iv)) parameters
+#define GET_RasterPos3iv(disp) ((disp)->RasterPos3iv)
+#define SET_RasterPos3iv(disp, fn) ((disp)->RasterPos3iv = fn)
+#define CALL_RasterPos3s(disp, parameters) (*((disp)->RasterPos3s)) parameters
+#define GET_RasterPos3s(disp) ((disp)->RasterPos3s)
+#define SET_RasterPos3s(disp, fn) ((disp)->RasterPos3s = fn)
+#define CALL_RasterPos3sv(disp, parameters) (*((disp)->RasterPos3sv)) parameters
+#define GET_RasterPos3sv(disp) ((disp)->RasterPos3sv)
+#define SET_RasterPos3sv(disp, fn) ((disp)->RasterPos3sv = fn)
+#define CALL_RasterPos4d(disp, parameters) (*((disp)->RasterPos4d)) parameters
+#define GET_RasterPos4d(disp) ((disp)->RasterPos4d)
+#define SET_RasterPos4d(disp, fn) ((disp)->RasterPos4d = fn)
+#define CALL_RasterPos4dv(disp, parameters) (*((disp)->RasterPos4dv)) parameters
+#define GET_RasterPos4dv(disp) ((disp)->RasterPos4dv)
+#define SET_RasterPos4dv(disp, fn) ((disp)->RasterPos4dv = fn)
+#define CALL_RasterPos4f(disp, parameters) (*((disp)->RasterPos4f)) parameters
+#define GET_RasterPos4f(disp) ((disp)->RasterPos4f)
+#define SET_RasterPos4f(disp, fn) ((disp)->RasterPos4f = fn)
+#define CALL_RasterPos4fv(disp, parameters) (*((disp)->RasterPos4fv)) parameters
+#define GET_RasterPos4fv(disp) ((disp)->RasterPos4fv)
+#define SET_RasterPos4fv(disp, fn) ((disp)->RasterPos4fv = fn)
+#define CALL_RasterPos4i(disp, parameters) (*((disp)->RasterPos4i)) parameters
+#define GET_RasterPos4i(disp) ((disp)->RasterPos4i)
+#define SET_RasterPos4i(disp, fn) ((disp)->RasterPos4i = fn)
+#define CALL_RasterPos4iv(disp, parameters) (*((disp)->RasterPos4iv)) parameters
+#define GET_RasterPos4iv(disp) ((disp)->RasterPos4iv)
+#define SET_RasterPos4iv(disp, fn) ((disp)->RasterPos4iv = fn)
+#define CALL_RasterPos4s(disp, parameters) (*((disp)->RasterPos4s)) parameters
+#define GET_RasterPos4s(disp) ((disp)->RasterPos4s)
+#define SET_RasterPos4s(disp, fn) ((disp)->RasterPos4s = fn)
+#define CALL_RasterPos4sv(disp, parameters) (*((disp)->RasterPos4sv)) parameters
+#define GET_RasterPos4sv(disp) ((disp)->RasterPos4sv)
+#define SET_RasterPos4sv(disp, fn) ((disp)->RasterPos4sv = fn)
+#define CALL_Rectd(disp, parameters) (*((disp)->Rectd)) parameters
+#define GET_Rectd(disp) ((disp)->Rectd)
+#define SET_Rectd(disp, fn) ((disp)->Rectd = fn)
+#define CALL_Rectdv(disp, parameters) (*((disp)->Rectdv)) parameters
+#define GET_Rectdv(disp) ((disp)->Rectdv)
+#define SET_Rectdv(disp, fn) ((disp)->Rectdv = fn)
+#define CALL_Rectf(disp, parameters) (*((disp)->Rectf)) parameters
+#define GET_Rectf(disp) ((disp)->Rectf)
+#define SET_Rectf(disp, fn) ((disp)->Rectf = fn)
+#define CALL_Rectfv(disp, parameters) (*((disp)->Rectfv)) parameters
+#define GET_Rectfv(disp) ((disp)->Rectfv)
+#define SET_Rectfv(disp, fn) ((disp)->Rectfv = fn)
+#define CALL_Recti(disp, parameters) (*((disp)->Recti)) parameters
+#define GET_Recti(disp) ((disp)->Recti)
+#define SET_Recti(disp, fn) ((disp)->Recti = fn)
+#define CALL_Rectiv(disp, parameters) (*((disp)->Rectiv)) parameters
+#define GET_Rectiv(disp) ((disp)->Rectiv)
+#define SET_Rectiv(disp, fn) ((disp)->Rectiv = fn)
+#define CALL_Rects(disp, parameters) (*((disp)->Rects)) parameters
+#define GET_Rects(disp) ((disp)->Rects)
+#define SET_Rects(disp, fn) ((disp)->Rects = fn)
+#define CALL_Rectsv(disp, parameters) (*((disp)->Rectsv)) parameters
+#define GET_Rectsv(disp) ((disp)->Rectsv)
+#define SET_Rectsv(disp, fn) ((disp)->Rectsv = fn)
+#define CALL_TexCoord1d(disp, parameters) (*((disp)->TexCoord1d)) parameters
+#define GET_TexCoord1d(disp) ((disp)->TexCoord1d)
+#define SET_TexCoord1d(disp, fn) ((disp)->TexCoord1d = fn)
+#define CALL_TexCoord1dv(disp, parameters) (*((disp)->TexCoord1dv)) parameters
+#define GET_TexCoord1dv(disp) ((disp)->TexCoord1dv)
+#define SET_TexCoord1dv(disp, fn) ((disp)->TexCoord1dv = fn)
+#define CALL_TexCoord1f(disp, parameters) (*((disp)->TexCoord1f)) parameters
+#define GET_TexCoord1f(disp) ((disp)->TexCoord1f)
+#define SET_TexCoord1f(disp, fn) ((disp)->TexCoord1f = fn)
+#define CALL_TexCoord1fv(disp, parameters) (*((disp)->TexCoord1fv)) parameters
+#define GET_TexCoord1fv(disp) ((disp)->TexCoord1fv)
+#define SET_TexCoord1fv(disp, fn) ((disp)->TexCoord1fv = fn)
+#define CALL_TexCoord1i(disp, parameters) (*((disp)->TexCoord1i)) parameters
+#define GET_TexCoord1i(disp) ((disp)->TexCoord1i)
+#define SET_TexCoord1i(disp, fn) ((disp)->TexCoord1i = fn)
+#define CALL_TexCoord1iv(disp, parameters) (*((disp)->TexCoord1iv)) parameters
+#define GET_TexCoord1iv(disp) ((disp)->TexCoord1iv)
+#define SET_TexCoord1iv(disp, fn) ((disp)->TexCoord1iv = fn)
+#define CALL_TexCoord1s(disp, parameters) (*((disp)->TexCoord1s)) parameters
+#define GET_TexCoord1s(disp) ((disp)->TexCoord1s)
+#define SET_TexCoord1s(disp, fn) ((disp)->TexCoord1s = fn)
+#define CALL_TexCoord1sv(disp, parameters) (*((disp)->TexCoord1sv)) parameters
+#define GET_TexCoord1sv(disp) ((disp)->TexCoord1sv)
+#define SET_TexCoord1sv(disp, fn) ((disp)->TexCoord1sv = fn)
+#define CALL_TexCoord2d(disp, parameters) (*((disp)->TexCoord2d)) parameters
+#define GET_TexCoord2d(disp) ((disp)->TexCoord2d)
+#define SET_TexCoord2d(disp, fn) ((disp)->TexCoord2d = fn)
+#define CALL_TexCoord2dv(disp, parameters) (*((disp)->TexCoord2dv)) parameters
+#define GET_TexCoord2dv(disp) ((disp)->TexCoord2dv)
+#define SET_TexCoord2dv(disp, fn) ((disp)->TexCoord2dv = fn)
+#define CALL_TexCoord2f(disp, parameters) (*((disp)->TexCoord2f)) parameters
+#define GET_TexCoord2f(disp) ((disp)->TexCoord2f)
+#define SET_TexCoord2f(disp, fn) ((disp)->TexCoord2f = fn)
+#define CALL_TexCoord2fv(disp, parameters) (*((disp)->TexCoord2fv)) parameters
+#define GET_TexCoord2fv(disp) ((disp)->TexCoord2fv)
+#define SET_TexCoord2fv(disp, fn) ((disp)->TexCoord2fv = fn)
+#define CALL_TexCoord2i(disp, parameters) (*((disp)->TexCoord2i)) parameters
+#define GET_TexCoord2i(disp) ((disp)->TexCoord2i)
+#define SET_TexCoord2i(disp, fn) ((disp)->TexCoord2i = fn)
+#define CALL_TexCoord2iv(disp, parameters) (*((disp)->TexCoord2iv)) parameters
+#define GET_TexCoord2iv(disp) ((disp)->TexCoord2iv)
+#define SET_TexCoord2iv(disp, fn) ((disp)->TexCoord2iv = fn)
+#define CALL_TexCoord2s(disp, parameters) (*((disp)->TexCoord2s)) parameters
+#define GET_TexCoord2s(disp) ((disp)->TexCoord2s)
+#define SET_TexCoord2s(disp, fn) ((disp)->TexCoord2s = fn)
+#define CALL_TexCoord2sv(disp, parameters) (*((disp)->TexCoord2sv)) parameters
+#define GET_TexCoord2sv(disp) ((disp)->TexCoord2sv)
+#define SET_TexCoord2sv(disp, fn) ((disp)->TexCoord2sv = fn)
+#define CALL_TexCoord3d(disp, parameters) (*((disp)->TexCoord3d)) parameters
+#define GET_TexCoord3d(disp) ((disp)->TexCoord3d)
+#define SET_TexCoord3d(disp, fn) ((disp)->TexCoord3d = fn)
+#define CALL_TexCoord3dv(disp, parameters) (*((disp)->TexCoord3dv)) parameters
+#define GET_TexCoord3dv(disp) ((disp)->TexCoord3dv)
+#define SET_TexCoord3dv(disp, fn) ((disp)->TexCoord3dv = fn)
+#define CALL_TexCoord3f(disp, parameters) (*((disp)->TexCoord3f)) parameters
+#define GET_TexCoord3f(disp) ((disp)->TexCoord3f)
+#define SET_TexCoord3f(disp, fn) ((disp)->TexCoord3f = fn)
+#define CALL_TexCoord3fv(disp, parameters) (*((disp)->TexCoord3fv)) parameters
+#define GET_TexCoord3fv(disp) ((disp)->TexCoord3fv)
+#define SET_TexCoord3fv(disp, fn) ((disp)->TexCoord3fv = fn)
+#define CALL_TexCoord3i(disp, parameters) (*((disp)->TexCoord3i)) parameters
+#define GET_TexCoord3i(disp) ((disp)->TexCoord3i)
+#define SET_TexCoord3i(disp, fn) ((disp)->TexCoord3i = fn)
+#define CALL_TexCoord3iv(disp, parameters) (*((disp)->TexCoord3iv)) parameters
+#define GET_TexCoord3iv(disp) ((disp)->TexCoord3iv)
+#define SET_TexCoord3iv(disp, fn) ((disp)->TexCoord3iv = fn)
+#define CALL_TexCoord3s(disp, parameters) (*((disp)->TexCoord3s)) parameters
+#define GET_TexCoord3s(disp) ((disp)->TexCoord3s)
+#define SET_TexCoord3s(disp, fn) ((disp)->TexCoord3s = fn)
+#define CALL_TexCoord3sv(disp, parameters) (*((disp)->TexCoord3sv)) parameters
+#define GET_TexCoord3sv(disp) ((disp)->TexCoord3sv)
+#define SET_TexCoord3sv(disp, fn) ((disp)->TexCoord3sv = fn)
+#define CALL_TexCoord4d(disp, parameters) (*((disp)->TexCoord4d)) parameters
+#define GET_TexCoord4d(disp) ((disp)->TexCoord4d)
+#define SET_TexCoord4d(disp, fn) ((disp)->TexCoord4d = fn)
+#define CALL_TexCoord4dv(disp, parameters) (*((disp)->TexCoord4dv)) parameters
+#define GET_TexCoord4dv(disp) ((disp)->TexCoord4dv)
+#define SET_TexCoord4dv(disp, fn) ((disp)->TexCoord4dv = fn)
+#define CALL_TexCoord4f(disp, parameters) (*((disp)->TexCoord4f)) parameters
+#define GET_TexCoord4f(disp) ((disp)->TexCoord4f)
+#define SET_TexCoord4f(disp, fn) ((disp)->TexCoord4f = fn)
+#define CALL_TexCoord4fv(disp, parameters) (*((disp)->TexCoord4fv)) parameters
+#define GET_TexCoord4fv(disp) ((disp)->TexCoord4fv)
+#define SET_TexCoord4fv(disp, fn) ((disp)->TexCoord4fv = fn)
+#define CALL_TexCoord4i(disp, parameters) (*((disp)->TexCoord4i)) parameters
+#define GET_TexCoord4i(disp) ((disp)->TexCoord4i)
+#define SET_TexCoord4i(disp, fn) ((disp)->TexCoord4i = fn)
+#define CALL_TexCoord4iv(disp, parameters) (*((disp)->TexCoord4iv)) parameters
+#define GET_TexCoord4iv(disp) ((disp)->TexCoord4iv)
+#define SET_TexCoord4iv(disp, fn) ((disp)->TexCoord4iv = fn)
+#define CALL_TexCoord4s(disp, parameters) (*((disp)->TexCoord4s)) parameters
+#define GET_TexCoord4s(disp) ((disp)->TexCoord4s)
+#define SET_TexCoord4s(disp, fn) ((disp)->TexCoord4s = fn)
+#define CALL_TexCoord4sv(disp, parameters) (*((disp)->TexCoord4sv)) parameters
+#define GET_TexCoord4sv(disp) ((disp)->TexCoord4sv)
+#define SET_TexCoord4sv(disp, fn) ((disp)->TexCoord4sv = fn)
+#define CALL_Vertex2d(disp, parameters) (*((disp)->Vertex2d)) parameters
+#define GET_Vertex2d(disp) ((disp)->Vertex2d)
+#define SET_Vertex2d(disp, fn) ((disp)->Vertex2d = fn)
+#define CALL_Vertex2dv(disp, parameters) (*((disp)->Vertex2dv)) parameters
+#define GET_Vertex2dv(disp) ((disp)->Vertex2dv)
+#define SET_Vertex2dv(disp, fn) ((disp)->Vertex2dv = fn)
+#define CALL_Vertex2f(disp, parameters) (*((disp)->Vertex2f)) parameters
+#define GET_Vertex2f(disp) ((disp)->Vertex2f)
+#define SET_Vertex2f(disp, fn) ((disp)->Vertex2f = fn)
+#define CALL_Vertex2fv(disp, parameters) (*((disp)->Vertex2fv)) parameters
+#define GET_Vertex2fv(disp) ((disp)->Vertex2fv)
+#define SET_Vertex2fv(disp, fn) ((disp)->Vertex2fv = fn)
+#define CALL_Vertex2i(disp, parameters) (*((disp)->Vertex2i)) parameters
+#define GET_Vertex2i(disp) ((disp)->Vertex2i)
+#define SET_Vertex2i(disp, fn) ((disp)->Vertex2i = fn)
+#define CALL_Vertex2iv(disp, parameters) (*((disp)->Vertex2iv)) parameters
+#define GET_Vertex2iv(disp) ((disp)->Vertex2iv)
+#define SET_Vertex2iv(disp, fn) ((disp)->Vertex2iv = fn)
+#define CALL_Vertex2s(disp, parameters) (*((disp)->Vertex2s)) parameters
+#define GET_Vertex2s(disp) ((disp)->Vertex2s)
+#define SET_Vertex2s(disp, fn) ((disp)->Vertex2s = fn)
+#define CALL_Vertex2sv(disp, parameters) (*((disp)->Vertex2sv)) parameters
+#define GET_Vertex2sv(disp) ((disp)->Vertex2sv)
+#define SET_Vertex2sv(disp, fn) ((disp)->Vertex2sv = fn)
+#define CALL_Vertex3d(disp, parameters) (*((disp)->Vertex3d)) parameters
+#define GET_Vertex3d(disp) ((disp)->Vertex3d)
+#define SET_Vertex3d(disp, fn) ((disp)->Vertex3d = fn)
+#define CALL_Vertex3dv(disp, parameters) (*((disp)->Vertex3dv)) parameters
+#define GET_Vertex3dv(disp) ((disp)->Vertex3dv)
+#define SET_Vertex3dv(disp, fn) ((disp)->Vertex3dv = fn)
+#define CALL_Vertex3f(disp, parameters) (*((disp)->Vertex3f)) parameters
+#define GET_Vertex3f(disp) ((disp)->Vertex3f)
+#define SET_Vertex3f(disp, fn) ((disp)->Vertex3f = fn)
+#define CALL_Vertex3fv(disp, parameters) (*((disp)->Vertex3fv)) parameters
+#define GET_Vertex3fv(disp) ((disp)->Vertex3fv)
+#define SET_Vertex3fv(disp, fn) ((disp)->Vertex3fv = fn)
+#define CALL_Vertex3i(disp, parameters) (*((disp)->Vertex3i)) parameters
+#define GET_Vertex3i(disp) ((disp)->Vertex3i)
+#define SET_Vertex3i(disp, fn) ((disp)->Vertex3i = fn)
+#define CALL_Vertex3iv(disp, parameters) (*((disp)->Vertex3iv)) parameters
+#define GET_Vertex3iv(disp) ((disp)->Vertex3iv)
+#define SET_Vertex3iv(disp, fn) ((disp)->Vertex3iv = fn)
+#define CALL_Vertex3s(disp, parameters) (*((disp)->Vertex3s)) parameters
+#define GET_Vertex3s(disp) ((disp)->Vertex3s)
+#define SET_Vertex3s(disp, fn) ((disp)->Vertex3s = fn)
+#define CALL_Vertex3sv(disp, parameters) (*((disp)->Vertex3sv)) parameters
+#define GET_Vertex3sv(disp) ((disp)->Vertex3sv)
+#define SET_Vertex3sv(disp, fn) ((disp)->Vertex3sv = fn)
+#define CALL_Vertex4d(disp, parameters) (*((disp)->Vertex4d)) parameters
+#define GET_Vertex4d(disp) ((disp)->Vertex4d)
+#define SET_Vertex4d(disp, fn) ((disp)->Vertex4d = fn)
+#define CALL_Vertex4dv(disp, parameters) (*((disp)->Vertex4dv)) parameters
+#define GET_Vertex4dv(disp) ((disp)->Vertex4dv)
+#define SET_Vertex4dv(disp, fn) ((disp)->Vertex4dv = fn)
+#define CALL_Vertex4f(disp, parameters) (*((disp)->Vertex4f)) parameters
+#define GET_Vertex4f(disp) ((disp)->Vertex4f)
+#define SET_Vertex4f(disp, fn) ((disp)->Vertex4f = fn)
+#define CALL_Vertex4fv(disp, parameters) (*((disp)->Vertex4fv)) parameters
+#define GET_Vertex4fv(disp) ((disp)->Vertex4fv)
+#define SET_Vertex4fv(disp, fn) ((disp)->Vertex4fv = fn)
+#define CALL_Vertex4i(disp, parameters) (*((disp)->Vertex4i)) parameters
+#define GET_Vertex4i(disp) ((disp)->Vertex4i)
+#define SET_Vertex4i(disp, fn) ((disp)->Vertex4i = fn)
+#define CALL_Vertex4iv(disp, parameters) (*((disp)->Vertex4iv)) parameters
+#define GET_Vertex4iv(disp) ((disp)->Vertex4iv)
+#define SET_Vertex4iv(disp, fn) ((disp)->Vertex4iv = fn)
+#define CALL_Vertex4s(disp, parameters) (*((disp)->Vertex4s)) parameters
+#define GET_Vertex4s(disp) ((disp)->Vertex4s)
+#define SET_Vertex4s(disp, fn) ((disp)->Vertex4s = fn)
+#define CALL_Vertex4sv(disp, parameters) (*((disp)->Vertex4sv)) parameters
+#define GET_Vertex4sv(disp) ((disp)->Vertex4sv)
+#define SET_Vertex4sv(disp, fn) ((disp)->Vertex4sv = fn)
+#define CALL_ClipPlane(disp, parameters) (*((disp)->ClipPlane)) parameters
+#define GET_ClipPlane(disp) ((disp)->ClipPlane)
+#define SET_ClipPlane(disp, fn) ((disp)->ClipPlane = fn)
+#define CALL_ColorMaterial(disp, parameters) (*((disp)->ColorMaterial)) parameters
+#define GET_ColorMaterial(disp) ((disp)->ColorMaterial)
+#define SET_ColorMaterial(disp, fn) ((disp)->ColorMaterial = fn)
+#define CALL_CullFace(disp, parameters) (*((disp)->CullFace)) parameters
+#define GET_CullFace(disp) ((disp)->CullFace)
+#define SET_CullFace(disp, fn) ((disp)->CullFace = fn)
+#define CALL_Fogf(disp, parameters) (*((disp)->Fogf)) parameters
+#define GET_Fogf(disp) ((disp)->Fogf)
+#define SET_Fogf(disp, fn) ((disp)->Fogf = fn)
+#define CALL_Fogfv(disp, parameters) (*((disp)->Fogfv)) parameters
+#define GET_Fogfv(disp) ((disp)->Fogfv)
+#define SET_Fogfv(disp, fn) ((disp)->Fogfv = fn)
+#define CALL_Fogi(disp, parameters) (*((disp)->Fogi)) parameters
+#define GET_Fogi(disp) ((disp)->Fogi)
+#define SET_Fogi(disp, fn) ((disp)->Fogi = fn)
+#define CALL_Fogiv(disp, parameters) (*((disp)->Fogiv)) parameters
+#define GET_Fogiv(disp) ((disp)->Fogiv)
+#define SET_Fogiv(disp, fn) ((disp)->Fogiv = fn)
+#define CALL_FrontFace(disp, parameters) (*((disp)->FrontFace)) parameters
+#define GET_FrontFace(disp) ((disp)->FrontFace)
+#define SET_FrontFace(disp, fn) ((disp)->FrontFace = fn)
+#define CALL_Hint(disp, parameters) (*((disp)->Hint)) parameters
+#define GET_Hint(disp) ((disp)->Hint)
+#define SET_Hint(disp, fn) ((disp)->Hint = fn)
+#define CALL_Lightf(disp, parameters) (*((disp)->Lightf)) parameters
+#define GET_Lightf(disp) ((disp)->Lightf)
+#define SET_Lightf(disp, fn) ((disp)->Lightf = fn)
+#define CALL_Lightfv(disp, parameters) (*((disp)->Lightfv)) parameters
+#define GET_Lightfv(disp) ((disp)->Lightfv)
+#define SET_Lightfv(disp, fn) ((disp)->Lightfv = fn)
+#define CALL_Lighti(disp, parameters) (*((disp)->Lighti)) parameters
+#define GET_Lighti(disp) ((disp)->Lighti)
+#define SET_Lighti(disp, fn) ((disp)->Lighti = fn)
+#define CALL_Lightiv(disp, parameters) (*((disp)->Lightiv)) parameters
+#define GET_Lightiv(disp) ((disp)->Lightiv)
+#define SET_Lightiv(disp, fn) ((disp)->Lightiv = fn)
+#define CALL_LightModelf(disp, parameters) (*((disp)->LightModelf)) parameters
+#define GET_LightModelf(disp) ((disp)->LightModelf)
+#define SET_LightModelf(disp, fn) ((disp)->LightModelf = fn)
+#define CALL_LightModelfv(disp, parameters) (*((disp)->LightModelfv)) parameters
+#define GET_LightModelfv(disp) ((disp)->LightModelfv)
+#define SET_LightModelfv(disp, fn) ((disp)->LightModelfv = fn)
+#define CALL_LightModeli(disp, parameters) (*((disp)->LightModeli)) parameters
+#define GET_LightModeli(disp) ((disp)->LightModeli)
+#define SET_LightModeli(disp, fn) ((disp)->LightModeli = fn)
+#define CALL_LightModeliv(disp, parameters) (*((disp)->LightModeliv)) parameters
+#define GET_LightModeliv(disp) ((disp)->LightModeliv)
+#define SET_LightModeliv(disp, fn) ((disp)->LightModeliv = fn)
+#define CALL_LineStipple(disp, parameters) (*((disp)->LineStipple)) parameters
+#define GET_LineStipple(disp) ((disp)->LineStipple)
+#define SET_LineStipple(disp, fn) ((disp)->LineStipple = fn)
+#define CALL_LineWidth(disp, parameters) (*((disp)->LineWidth)) parameters
+#define GET_LineWidth(disp) ((disp)->LineWidth)
+#define SET_LineWidth(disp, fn) ((disp)->LineWidth = fn)
+#define CALL_Materialf(disp, parameters) (*((disp)->Materialf)) parameters
+#define GET_Materialf(disp) ((disp)->Materialf)
+#define SET_Materialf(disp, fn) ((disp)->Materialf = fn)
+#define CALL_Materialfv(disp, parameters) (*((disp)->Materialfv)) parameters
+#define GET_Materialfv(disp) ((disp)->Materialfv)
+#define SET_Materialfv(disp, fn) ((disp)->Materialfv = fn)
+#define CALL_Materiali(disp, parameters) (*((disp)->Materiali)) parameters
+#define GET_Materiali(disp) ((disp)->Materiali)
+#define SET_Materiali(disp, fn) ((disp)->Materiali = fn)
+#define CALL_Materialiv(disp, parameters) (*((disp)->Materialiv)) parameters
+#define GET_Materialiv(disp) ((disp)->Materialiv)
+#define SET_Materialiv(disp, fn) ((disp)->Materialiv = fn)
+#define CALL_PointSize(disp, parameters) (*((disp)->PointSize)) parameters
+#define GET_PointSize(disp) ((disp)->PointSize)
+#define SET_PointSize(disp, fn) ((disp)->PointSize = fn)
+#define CALL_PolygonMode(disp, parameters) (*((disp)->PolygonMode)) parameters
+#define GET_PolygonMode(disp) ((disp)->PolygonMode)
+#define SET_PolygonMode(disp, fn) ((disp)->PolygonMode = fn)
+#define CALL_PolygonStipple(disp, parameters) (*((disp)->PolygonStipple)) parameters
+#define GET_PolygonStipple(disp) ((disp)->PolygonStipple)
+#define SET_PolygonStipple(disp, fn) ((disp)->PolygonStipple = fn)
+#define CALL_Scissor(disp, parameters) (*((disp)->Scissor)) parameters
+#define GET_Scissor(disp) ((disp)->Scissor)
+#define SET_Scissor(disp, fn) ((disp)->Scissor = fn)
+#define CALL_ShadeModel(disp, parameters) (*((disp)->ShadeModel)) parameters
+#define GET_ShadeModel(disp) ((disp)->ShadeModel)
+#define SET_ShadeModel(disp, fn) ((disp)->ShadeModel = fn)
+#define CALL_TexParameterf(disp, parameters) (*((disp)->TexParameterf)) parameters
+#define GET_TexParameterf(disp) ((disp)->TexParameterf)
+#define SET_TexParameterf(disp, fn) ((disp)->TexParameterf = fn)
+#define CALL_TexParameterfv(disp, parameters) (*((disp)->TexParameterfv)) parameters
+#define GET_TexParameterfv(disp) ((disp)->TexParameterfv)
+#define SET_TexParameterfv(disp, fn) ((disp)->TexParameterfv = fn)
+#define CALL_TexParameteri(disp, parameters) (*((disp)->TexParameteri)) parameters
+#define GET_TexParameteri(disp) ((disp)->TexParameteri)
+#define SET_TexParameteri(disp, fn) ((disp)->TexParameteri = fn)
+#define CALL_TexParameteriv(disp, parameters) (*((disp)->TexParameteriv)) parameters
+#define GET_TexParameteriv(disp) ((disp)->TexParameteriv)
+#define SET_TexParameteriv(disp, fn) ((disp)->TexParameteriv = fn)
+#define CALL_TexImage1D(disp, parameters) (*((disp)->TexImage1D)) parameters
+#define GET_TexImage1D(disp) ((disp)->TexImage1D)
+#define SET_TexImage1D(disp, fn) ((disp)->TexImage1D = fn)
+#define CALL_TexImage2D(disp, parameters) (*((disp)->TexImage2D)) parameters
+#define GET_TexImage2D(disp) ((disp)->TexImage2D)
+#define SET_TexImage2D(disp, fn) ((disp)->TexImage2D = fn)
+#define CALL_TexEnvf(disp, parameters) (*((disp)->TexEnvf)) parameters
+#define GET_TexEnvf(disp) ((disp)->TexEnvf)
+#define SET_TexEnvf(disp, fn) ((disp)->TexEnvf = fn)
+#define CALL_TexEnvfv(disp, parameters) (*((disp)->TexEnvfv)) parameters
+#define GET_TexEnvfv(disp) ((disp)->TexEnvfv)
+#define SET_TexEnvfv(disp, fn) ((disp)->TexEnvfv = fn)
+#define CALL_TexEnvi(disp, parameters) (*((disp)->TexEnvi)) parameters
+#define GET_TexEnvi(disp) ((disp)->TexEnvi)
+#define SET_TexEnvi(disp, fn) ((disp)->TexEnvi = fn)
+#define CALL_TexEnviv(disp, parameters) (*((disp)->TexEnviv)) parameters
+#define GET_TexEnviv(disp) ((disp)->TexEnviv)
+#define SET_TexEnviv(disp, fn) ((disp)->TexEnviv = fn)
+#define CALL_TexGend(disp, parameters) (*((disp)->TexGend)) parameters
+#define GET_TexGend(disp) ((disp)->TexGend)
+#define SET_TexGend(disp, fn) ((disp)->TexGend = fn)
+#define CALL_TexGendv(disp, parameters) (*((disp)->TexGendv)) parameters
+#define GET_TexGendv(disp) ((disp)->TexGendv)
+#define SET_TexGendv(disp, fn) ((disp)->TexGendv = fn)
+#define CALL_TexGenf(disp, parameters) (*((disp)->TexGenf)) parameters
+#define GET_TexGenf(disp) ((disp)->TexGenf)
+#define SET_TexGenf(disp, fn) ((disp)->TexGenf = fn)
+#define CALL_TexGenfv(disp, parameters) (*((disp)->TexGenfv)) parameters
+#define GET_TexGenfv(disp) ((disp)->TexGenfv)
+#define SET_TexGenfv(disp, fn) ((disp)->TexGenfv = fn)
+#define CALL_TexGeni(disp, parameters) (*((disp)->TexGeni)) parameters
+#define GET_TexGeni(disp) ((disp)->TexGeni)
+#define SET_TexGeni(disp, fn) ((disp)->TexGeni = fn)
+#define CALL_TexGeniv(disp, parameters) (*((disp)->TexGeniv)) parameters
+#define GET_TexGeniv(disp) ((disp)->TexGeniv)
+#define SET_TexGeniv(disp, fn) ((disp)->TexGeniv = fn)
+#define CALL_FeedbackBuffer(disp, parameters) (*((disp)->FeedbackBuffer)) parameters
+#define GET_FeedbackBuffer(disp) ((disp)->FeedbackBuffer)
+#define SET_FeedbackBuffer(disp, fn) ((disp)->FeedbackBuffer = fn)
+#define CALL_SelectBuffer(disp, parameters) (*((disp)->SelectBuffer)) parameters
+#define GET_SelectBuffer(disp) ((disp)->SelectBuffer)
+#define SET_SelectBuffer(disp, fn) ((disp)->SelectBuffer = fn)
+#define CALL_RenderMode(disp, parameters) (*((disp)->RenderMode)) parameters
+#define GET_RenderMode(disp) ((disp)->RenderMode)
+#define SET_RenderMode(disp, fn) ((disp)->RenderMode = fn)
+#define CALL_InitNames(disp, parameters) (*((disp)->InitNames)) parameters
+#define GET_InitNames(disp) ((disp)->InitNames)
+#define SET_InitNames(disp, fn) ((disp)->InitNames = fn)
+#define CALL_LoadName(disp, parameters) (*((disp)->LoadName)) parameters
+#define GET_LoadName(disp) ((disp)->LoadName)
+#define SET_LoadName(disp, fn) ((disp)->LoadName = fn)
+#define CALL_PassThrough(disp, parameters) (*((disp)->PassThrough)) parameters
+#define GET_PassThrough(disp) ((disp)->PassThrough)
+#define SET_PassThrough(disp, fn) ((disp)->PassThrough = fn)
+#define CALL_PopName(disp, parameters) (*((disp)->PopName)) parameters
+#define GET_PopName(disp) ((disp)->PopName)
+#define SET_PopName(disp, fn) ((disp)->PopName = fn)
+#define CALL_PushName(disp, parameters) (*((disp)->PushName)) parameters
+#define GET_PushName(disp) ((disp)->PushName)
+#define SET_PushName(disp, fn) ((disp)->PushName = fn)
+#define CALL_DrawBuffer(disp, parameters) (*((disp)->DrawBuffer)) parameters
+#define GET_DrawBuffer(disp) ((disp)->DrawBuffer)
+#define SET_DrawBuffer(disp, fn) ((disp)->DrawBuffer = fn)
+#define CALL_Clear(disp, parameters) (*((disp)->Clear)) parameters
+#define GET_Clear(disp) ((disp)->Clear)
+#define SET_Clear(disp, fn) ((disp)->Clear = fn)
+#define CALL_ClearAccum(disp, parameters) (*((disp)->ClearAccum)) parameters
+#define GET_ClearAccum(disp) ((disp)->ClearAccum)
+#define SET_ClearAccum(disp, fn) ((disp)->ClearAccum = fn)
+#define CALL_ClearIndex(disp, parameters) (*((disp)->ClearIndex)) parameters
+#define GET_ClearIndex(disp) ((disp)->ClearIndex)
+#define SET_ClearIndex(disp, fn) ((disp)->ClearIndex = fn)
+#define CALL_ClearColor(disp, parameters) (*((disp)->ClearColor)) parameters
+#define GET_ClearColor(disp) ((disp)->ClearColor)
+#define SET_ClearColor(disp, fn) ((disp)->ClearColor = fn)
+#define CALL_ClearStencil(disp, parameters) (*((disp)->ClearStencil)) parameters
+#define GET_ClearStencil(disp) ((disp)->ClearStencil)
+#define SET_ClearStencil(disp, fn) ((disp)->ClearStencil = fn)
+#define CALL_ClearDepth(disp, parameters) (*((disp)->ClearDepth)) parameters
+#define GET_ClearDepth(disp) ((disp)->ClearDepth)
+#define SET_ClearDepth(disp, fn) ((disp)->ClearDepth = fn)
+#define CALL_StencilMask(disp, parameters) (*((disp)->StencilMask)) parameters
+#define GET_StencilMask(disp) ((disp)->StencilMask)
+#define SET_StencilMask(disp, fn) ((disp)->StencilMask = fn)
+#define CALL_ColorMask(disp, parameters) (*((disp)->ColorMask)) parameters
+#define GET_ColorMask(disp) ((disp)->ColorMask)
+#define SET_ColorMask(disp, fn) ((disp)->ColorMask = fn)
+#define CALL_DepthMask(disp, parameters) (*((disp)->DepthMask)) parameters
+#define GET_DepthMask(disp) ((disp)->DepthMask)
+#define SET_DepthMask(disp, fn) ((disp)->DepthMask = fn)
+#define CALL_IndexMask(disp, parameters) (*((disp)->IndexMask)) parameters
+#define GET_IndexMask(disp) ((disp)->IndexMask)
+#define SET_IndexMask(disp, fn) ((disp)->IndexMask = fn)
+#define CALL_Accum(disp, parameters) (*((disp)->Accum)) parameters
+#define GET_Accum(disp) ((disp)->Accum)
+#define SET_Accum(disp, fn) ((disp)->Accum = fn)
+#define CALL_Disable(disp, parameters) (*((disp)->Disable)) parameters
+#define GET_Disable(disp) ((disp)->Disable)
+#define SET_Disable(disp, fn) ((disp)->Disable = fn)
+#define CALL_Enable(disp, parameters) (*((disp)->Enable)) parameters
+#define GET_Enable(disp) ((disp)->Enable)
+#define SET_Enable(disp, fn) ((disp)->Enable = fn)
+#define CALL_Finish(disp, parameters) (*((disp)->Finish)) parameters
+#define GET_Finish(disp) ((disp)->Finish)
+#define SET_Finish(disp, fn) ((disp)->Finish = fn)
+#define CALL_Flush(disp, parameters) (*((disp)->Flush)) parameters
+#define GET_Flush(disp) ((disp)->Flush)
+#define SET_Flush(disp, fn) ((disp)->Flush = fn)
+#define CALL_PopAttrib(disp, parameters) (*((disp)->PopAttrib)) parameters
+#define GET_PopAttrib(disp) ((disp)->PopAttrib)
+#define SET_PopAttrib(disp, fn) ((disp)->PopAttrib = fn)
+#define CALL_PushAttrib(disp, parameters) (*((disp)->PushAttrib)) parameters
+#define GET_PushAttrib(disp) ((disp)->PushAttrib)
+#define SET_PushAttrib(disp, fn) ((disp)->PushAttrib = fn)
+#define CALL_Map1d(disp, parameters) (*((disp)->Map1d)) parameters
+#define GET_Map1d(disp) ((disp)->Map1d)
+#define SET_Map1d(disp, fn) ((disp)->Map1d = fn)
+#define CALL_Map1f(disp, parameters) (*((disp)->Map1f)) parameters
+#define GET_Map1f(disp) ((disp)->Map1f)
+#define SET_Map1f(disp, fn) ((disp)->Map1f = fn)
+#define CALL_Map2d(disp, parameters) (*((disp)->Map2d)) parameters
+#define GET_Map2d(disp) ((disp)->Map2d)
+#define SET_Map2d(disp, fn) ((disp)->Map2d = fn)
+#define CALL_Map2f(disp, parameters) (*((disp)->Map2f)) parameters
+#define GET_Map2f(disp) ((disp)->Map2f)
+#define SET_Map2f(disp, fn) ((disp)->Map2f = fn)
+#define CALL_MapGrid1d(disp, parameters) (*((disp)->MapGrid1d)) parameters
+#define GET_MapGrid1d(disp) ((disp)->MapGrid1d)
+#define SET_MapGrid1d(disp, fn) ((disp)->MapGrid1d = fn)
+#define CALL_MapGrid1f(disp, parameters) (*((disp)->MapGrid1f)) parameters
+#define GET_MapGrid1f(disp) ((disp)->MapGrid1f)
+#define SET_MapGrid1f(disp, fn) ((disp)->MapGrid1f = fn)
+#define CALL_MapGrid2d(disp, parameters) (*((disp)->MapGrid2d)) parameters
+#define GET_MapGrid2d(disp) ((disp)->MapGrid2d)
+#define SET_MapGrid2d(disp, fn) ((disp)->MapGrid2d = fn)
+#define CALL_MapGrid2f(disp, parameters) (*((disp)->MapGrid2f)) parameters
+#define GET_MapGrid2f(disp) ((disp)->MapGrid2f)
+#define SET_MapGrid2f(disp, fn) ((disp)->MapGrid2f = fn)
+#define CALL_EvalCoord1d(disp, parameters) (*((disp)->EvalCoord1d)) parameters
+#define GET_EvalCoord1d(disp) ((disp)->EvalCoord1d)
+#define SET_EvalCoord1d(disp, fn) ((disp)->EvalCoord1d = fn)
+#define CALL_EvalCoord1dv(disp, parameters) (*((disp)->EvalCoord1dv)) parameters
+#define GET_EvalCoord1dv(disp) ((disp)->EvalCoord1dv)
+#define SET_EvalCoord1dv(disp, fn) ((disp)->EvalCoord1dv = fn)
+#define CALL_EvalCoord1f(disp, parameters) (*((disp)->EvalCoord1f)) parameters
+#define GET_EvalCoord1f(disp) ((disp)->EvalCoord1f)
+#define SET_EvalCoord1f(disp, fn) ((disp)->EvalCoord1f = fn)
+#define CALL_EvalCoord1fv(disp, parameters) (*((disp)->EvalCoord1fv)) parameters
+#define GET_EvalCoord1fv(disp) ((disp)->EvalCoord1fv)
+#define SET_EvalCoord1fv(disp, fn) ((disp)->EvalCoord1fv = fn)
+#define CALL_EvalCoord2d(disp, parameters) (*((disp)->EvalCoord2d)) parameters
+#define GET_EvalCoord2d(disp) ((disp)->EvalCoord2d)
+#define SET_EvalCoord2d(disp, fn) ((disp)->EvalCoord2d = fn)
+#define CALL_EvalCoord2dv(disp, parameters) (*((disp)->EvalCoord2dv)) parameters
+#define GET_EvalCoord2dv(disp) ((disp)->EvalCoord2dv)
+#define SET_EvalCoord2dv(disp, fn) ((disp)->EvalCoord2dv = fn)
+#define CALL_EvalCoord2f(disp, parameters) (*((disp)->EvalCoord2f)) parameters
+#define GET_EvalCoord2f(disp) ((disp)->EvalCoord2f)
+#define SET_EvalCoord2f(disp, fn) ((disp)->EvalCoord2f = fn)
+#define CALL_EvalCoord2fv(disp, parameters) (*((disp)->EvalCoord2fv)) parameters
+#define GET_EvalCoord2fv(disp) ((disp)->EvalCoord2fv)
+#define SET_EvalCoord2fv(disp, fn) ((disp)->EvalCoord2fv = fn)
+#define CALL_EvalMesh1(disp, parameters) (*((disp)->EvalMesh1)) parameters
+#define GET_EvalMesh1(disp) ((disp)->EvalMesh1)
+#define SET_EvalMesh1(disp, fn) ((disp)->EvalMesh1 = fn)
+#define CALL_EvalPoint1(disp, parameters) (*((disp)->EvalPoint1)) parameters
+#define GET_EvalPoint1(disp) ((disp)->EvalPoint1)
+#define SET_EvalPoint1(disp, fn) ((disp)->EvalPoint1 = fn)
+#define CALL_EvalMesh2(disp, parameters) (*((disp)->EvalMesh2)) parameters
+#define GET_EvalMesh2(disp) ((disp)->EvalMesh2)
+#define SET_EvalMesh2(disp, fn) ((disp)->EvalMesh2 = fn)
+#define CALL_EvalPoint2(disp, parameters) (*((disp)->EvalPoint2)) parameters
+#define GET_EvalPoint2(disp) ((disp)->EvalPoint2)
+#define SET_EvalPoint2(disp, fn) ((disp)->EvalPoint2 = fn)
+#define CALL_AlphaFunc(disp, parameters) (*((disp)->AlphaFunc)) parameters
+#define GET_AlphaFunc(disp) ((disp)->AlphaFunc)
+#define SET_AlphaFunc(disp, fn) ((disp)->AlphaFunc = fn)
+#define CALL_BlendFunc(disp, parameters) (*((disp)->BlendFunc)) parameters
+#define GET_BlendFunc(disp) ((disp)->BlendFunc)
+#define SET_BlendFunc(disp, fn) ((disp)->BlendFunc = fn)
+#define CALL_LogicOp(disp, parameters) (*((disp)->LogicOp)) parameters
+#define GET_LogicOp(disp) ((disp)->LogicOp)
+#define SET_LogicOp(disp, fn) ((disp)->LogicOp = fn)
+#define CALL_StencilFunc(disp, parameters) (*((disp)->StencilFunc)) parameters
+#define GET_StencilFunc(disp) ((disp)->StencilFunc)
+#define SET_StencilFunc(disp, fn) ((disp)->StencilFunc = fn)
+#define CALL_StencilOp(disp, parameters) (*((disp)->StencilOp)) parameters
+#define GET_StencilOp(disp) ((disp)->StencilOp)
+#define SET_StencilOp(disp, fn) ((disp)->StencilOp = fn)
+#define CALL_DepthFunc(disp, parameters) (*((disp)->DepthFunc)) parameters
+#define GET_DepthFunc(disp) ((disp)->DepthFunc)
+#define SET_DepthFunc(disp, fn) ((disp)->DepthFunc = fn)
+#define CALL_PixelZoom(disp, parameters) (*((disp)->PixelZoom)) parameters
+#define GET_PixelZoom(disp) ((disp)->PixelZoom)
+#define SET_PixelZoom(disp, fn) ((disp)->PixelZoom = fn)
+#define CALL_PixelTransferf(disp, parameters) (*((disp)->PixelTransferf)) parameters
+#define GET_PixelTransferf(disp) ((disp)->PixelTransferf)
+#define SET_PixelTransferf(disp, fn) ((disp)->PixelTransferf = fn)
+#define CALL_PixelTransferi(disp, parameters) (*((disp)->PixelTransferi)) parameters
+#define GET_PixelTransferi(disp) ((disp)->PixelTransferi)
+#define SET_PixelTransferi(disp, fn) ((disp)->PixelTransferi = fn)
+#define CALL_PixelStoref(disp, parameters) (*((disp)->PixelStoref)) parameters
+#define GET_PixelStoref(disp) ((disp)->PixelStoref)
+#define SET_PixelStoref(disp, fn) ((disp)->PixelStoref = fn)
+#define CALL_PixelStorei(disp, parameters) (*((disp)->PixelStorei)) parameters
+#define GET_PixelStorei(disp) ((disp)->PixelStorei)
+#define SET_PixelStorei(disp, fn) ((disp)->PixelStorei = fn)
+#define CALL_PixelMapfv(disp, parameters) (*((disp)->PixelMapfv)) parameters
+#define GET_PixelMapfv(disp) ((disp)->PixelMapfv)
+#define SET_PixelMapfv(disp, fn) ((disp)->PixelMapfv = fn)
+#define CALL_PixelMapuiv(disp, parameters) (*((disp)->PixelMapuiv)) parameters
+#define GET_PixelMapuiv(disp) ((disp)->PixelMapuiv)
+#define SET_PixelMapuiv(disp, fn) ((disp)->PixelMapuiv = fn)
+#define CALL_PixelMapusv(disp, parameters) (*((disp)->PixelMapusv)) parameters
+#define GET_PixelMapusv(disp) ((disp)->PixelMapusv)
+#define SET_PixelMapusv(disp, fn) ((disp)->PixelMapusv = fn)
+#define CALL_ReadBuffer(disp, parameters) (*((disp)->ReadBuffer)) parameters
+#define GET_ReadBuffer(disp) ((disp)->ReadBuffer)
+#define SET_ReadBuffer(disp, fn) ((disp)->ReadBuffer = fn)
+#define CALL_CopyPixels(disp, parameters) (*((disp)->CopyPixels)) parameters
+#define GET_CopyPixels(disp) ((disp)->CopyPixels)
+#define SET_CopyPixels(disp, fn) ((disp)->CopyPixels = fn)
+#define CALL_ReadPixels(disp, parameters) (*((disp)->ReadPixels)) parameters
+#define GET_ReadPixels(disp) ((disp)->ReadPixels)
+#define SET_ReadPixels(disp, fn) ((disp)->ReadPixels = fn)
+#define CALL_DrawPixels(disp, parameters) (*((disp)->DrawPixels)) parameters
+#define GET_DrawPixels(disp) ((disp)->DrawPixels)
+#define SET_DrawPixels(disp, fn) ((disp)->DrawPixels = fn)
+#define CALL_GetBooleanv(disp, parameters) (*((disp)->GetBooleanv)) parameters
+#define GET_GetBooleanv(disp) ((disp)->GetBooleanv)
+#define SET_GetBooleanv(disp, fn) ((disp)->GetBooleanv = fn)
+#define CALL_GetClipPlane(disp, parameters) (*((disp)->GetClipPlane)) parameters
+#define GET_GetClipPlane(disp) ((disp)->GetClipPlane)
+#define SET_GetClipPlane(disp, fn) ((disp)->GetClipPlane = fn)
+#define CALL_GetDoublev(disp, parameters) (*((disp)->GetDoublev)) parameters
+#define GET_GetDoublev(disp) ((disp)->GetDoublev)
+#define SET_GetDoublev(disp, fn) ((disp)->GetDoublev = fn)
+#define CALL_GetError(disp, parameters) (*((disp)->GetError)) parameters
+#define GET_GetError(disp) ((disp)->GetError)
+#define SET_GetError(disp, fn) ((disp)->GetError = fn)
+#define CALL_GetFloatv(disp, parameters) (*((disp)->GetFloatv)) parameters
+#define GET_GetFloatv(disp) ((disp)->GetFloatv)
+#define SET_GetFloatv(disp, fn) ((disp)->GetFloatv = fn)
+#define CALL_GetIntegerv(disp, parameters) (*((disp)->GetIntegerv)) parameters
+#define GET_GetIntegerv(disp) ((disp)->GetIntegerv)
+#define SET_GetIntegerv(disp, fn) ((disp)->GetIntegerv = fn)
+#define CALL_GetLightfv(disp, parameters) (*((disp)->GetLightfv)) parameters
+#define GET_GetLightfv(disp) ((disp)->GetLightfv)
+#define SET_GetLightfv(disp, fn) ((disp)->GetLightfv = fn)
+#define CALL_GetLightiv(disp, parameters) (*((disp)->GetLightiv)) parameters
+#define GET_GetLightiv(disp) ((disp)->GetLightiv)
+#define SET_GetLightiv(disp, fn) ((disp)->GetLightiv = fn)
+#define CALL_GetMapdv(disp, parameters) (*((disp)->GetMapdv)) parameters
+#define GET_GetMapdv(disp) ((disp)->GetMapdv)
+#define SET_GetMapdv(disp, fn) ((disp)->GetMapdv = fn)
+#define CALL_GetMapfv(disp, parameters) (*((disp)->GetMapfv)) parameters
+#define GET_GetMapfv(disp) ((disp)->GetMapfv)
+#define SET_GetMapfv(disp, fn) ((disp)->GetMapfv = fn)
+#define CALL_GetMapiv(disp, parameters) (*((disp)->GetMapiv)) parameters
+#define GET_GetMapiv(disp) ((disp)->GetMapiv)
+#define SET_GetMapiv(disp, fn) ((disp)->GetMapiv = fn)
+#define CALL_GetMaterialfv(disp, parameters) (*((disp)->GetMaterialfv)) parameters
+#define GET_GetMaterialfv(disp) ((disp)->GetMaterialfv)
+#define SET_GetMaterialfv(disp, fn) ((disp)->GetMaterialfv = fn)
+#define CALL_GetMaterialiv(disp, parameters) (*((disp)->GetMaterialiv)) parameters
+#define GET_GetMaterialiv(disp) ((disp)->GetMaterialiv)
+#define SET_GetMaterialiv(disp, fn) ((disp)->GetMaterialiv = fn)
+#define CALL_GetPixelMapfv(disp, parameters) (*((disp)->GetPixelMapfv)) parameters
+#define GET_GetPixelMapfv(disp) ((disp)->GetPixelMapfv)
+#define SET_GetPixelMapfv(disp, fn) ((disp)->GetPixelMapfv = fn)
+#define CALL_GetPixelMapuiv(disp, parameters) (*((disp)->GetPixelMapuiv)) parameters
+#define GET_GetPixelMapuiv(disp) ((disp)->GetPixelMapuiv)
+#define SET_GetPixelMapuiv(disp, fn) ((disp)->GetPixelMapuiv = fn)
+#define CALL_GetPixelMapusv(disp, parameters) (*((disp)->GetPixelMapusv)) parameters
+#define GET_GetPixelMapusv(disp) ((disp)->GetPixelMapusv)
+#define SET_GetPixelMapusv(disp, fn) ((disp)->GetPixelMapusv = fn)
+#define CALL_GetPolygonStipple(disp, parameters) (*((disp)->GetPolygonStipple)) parameters
+#define GET_GetPolygonStipple(disp) ((disp)->GetPolygonStipple)
+#define SET_GetPolygonStipple(disp, fn) ((disp)->GetPolygonStipple = fn)
+#define CALL_GetString(disp, parameters) (*((disp)->GetString)) parameters
+#define GET_GetString(disp) ((disp)->GetString)
+#define SET_GetString(disp, fn) ((disp)->GetString = fn)
+#define CALL_GetTexEnvfv(disp, parameters) (*((disp)->GetTexEnvfv)) parameters
+#define GET_GetTexEnvfv(disp) ((disp)->GetTexEnvfv)
+#define SET_GetTexEnvfv(disp, fn) ((disp)->GetTexEnvfv = fn)
+#define CALL_GetTexEnviv(disp, parameters) (*((disp)->GetTexEnviv)) parameters
+#define GET_GetTexEnviv(disp) ((disp)->GetTexEnviv)
+#define SET_GetTexEnviv(disp, fn) ((disp)->GetTexEnviv = fn)
+#define CALL_GetTexGendv(disp, parameters) (*((disp)->GetTexGendv)) parameters
+#define GET_GetTexGendv(disp) ((disp)->GetTexGendv)
+#define SET_GetTexGendv(disp, fn) ((disp)->GetTexGendv = fn)
+#define CALL_GetTexGenfv(disp, parameters) (*((disp)->GetTexGenfv)) parameters
+#define GET_GetTexGenfv(disp) ((disp)->GetTexGenfv)
+#define SET_GetTexGenfv(disp, fn) ((disp)->GetTexGenfv = fn)
+#define CALL_GetTexGeniv(disp, parameters) (*((disp)->GetTexGeniv)) parameters
+#define GET_GetTexGeniv(disp) ((disp)->GetTexGeniv)
+#define SET_GetTexGeniv(disp, fn) ((disp)->GetTexGeniv = fn)
+#define CALL_GetTexImage(disp, parameters) (*((disp)->GetTexImage)) parameters
+#define GET_GetTexImage(disp) ((disp)->GetTexImage)
+#define SET_GetTexImage(disp, fn) ((disp)->GetTexImage = fn)
+#define CALL_GetTexParameterfv(disp, parameters) (*((disp)->GetTexParameterfv)) parameters
+#define GET_GetTexParameterfv(disp) ((disp)->GetTexParameterfv)
+#define SET_GetTexParameterfv(disp, fn) ((disp)->GetTexParameterfv = fn)
+#define CALL_GetTexParameteriv(disp, parameters) (*((disp)->GetTexParameteriv)) parameters
+#define GET_GetTexParameteriv(disp) ((disp)->GetTexParameteriv)
+#define SET_GetTexParameteriv(disp, fn) ((disp)->GetTexParameteriv = fn)
+#define CALL_GetTexLevelParameterfv(disp, parameters) (*((disp)->GetTexLevelParameterfv)) parameters
+#define GET_GetTexLevelParameterfv(disp) ((disp)->GetTexLevelParameterfv)
+#define SET_GetTexLevelParameterfv(disp, fn) ((disp)->GetTexLevelParameterfv = fn)
+#define CALL_GetTexLevelParameteriv(disp, parameters) (*((disp)->GetTexLevelParameteriv)) parameters
+#define GET_GetTexLevelParameteriv(disp) ((disp)->GetTexLevelParameteriv)
+#define SET_GetTexLevelParameteriv(disp, fn) ((disp)->GetTexLevelParameteriv = fn)
+#define CALL_IsEnabled(disp, parameters) (*((disp)->IsEnabled)) parameters
+#define GET_IsEnabled(disp) ((disp)->IsEnabled)
+#define SET_IsEnabled(disp, fn) ((disp)->IsEnabled = fn)
+#define CALL_IsList(disp, parameters) (*((disp)->IsList)) parameters
+#define GET_IsList(disp) ((disp)->IsList)
+#define SET_IsList(disp, fn) ((disp)->IsList = fn)
+#define CALL_DepthRange(disp, parameters) (*((disp)->DepthRange)) parameters
+#define GET_DepthRange(disp) ((disp)->DepthRange)
+#define SET_DepthRange(disp, fn) ((disp)->DepthRange = fn)
+#define CALL_Frustum(disp, parameters) (*((disp)->Frustum)) parameters
+#define GET_Frustum(disp) ((disp)->Frustum)
+#define SET_Frustum(disp, fn) ((disp)->Frustum = fn)
+#define CALL_LoadIdentity(disp, parameters) (*((disp)->LoadIdentity)) parameters
+#define GET_LoadIdentity(disp) ((disp)->LoadIdentity)
+#define SET_LoadIdentity(disp, fn) ((disp)->LoadIdentity = fn)
+#define CALL_LoadMatrixf(disp, parameters) (*((disp)->LoadMatrixf)) parameters
+#define GET_LoadMatrixf(disp) ((disp)->LoadMatrixf)
+#define SET_LoadMatrixf(disp, fn) ((disp)->LoadMatrixf = fn)
+#define CALL_LoadMatrixd(disp, parameters) (*((disp)->LoadMatrixd)) parameters
+#define GET_LoadMatrixd(disp) ((disp)->LoadMatrixd)
+#define SET_LoadMatrixd(disp, fn) ((disp)->LoadMatrixd = fn)
+#define CALL_MatrixMode(disp, parameters) (*((disp)->MatrixMode)) parameters
+#define GET_MatrixMode(disp) ((disp)->MatrixMode)
+#define SET_MatrixMode(disp, fn) ((disp)->MatrixMode = fn)
+#define CALL_MultMatrixf(disp, parameters) (*((disp)->MultMatrixf)) parameters
+#define GET_MultMatrixf(disp) ((disp)->MultMatrixf)
+#define SET_MultMatrixf(disp, fn) ((disp)->MultMatrixf = fn)
+#define CALL_MultMatrixd(disp, parameters) (*((disp)->MultMatrixd)) parameters
+#define GET_MultMatrixd(disp) ((disp)->MultMatrixd)
+#define SET_MultMatrixd(disp, fn) ((disp)->MultMatrixd = fn)
+#define CALL_Ortho(disp, parameters) (*((disp)->Ortho)) parameters
+#define GET_Ortho(disp) ((disp)->Ortho)
+#define SET_Ortho(disp, fn) ((disp)->Ortho = fn)
+#define CALL_PopMatrix(disp, parameters) (*((disp)->PopMatrix)) parameters
+#define GET_PopMatrix(disp) ((disp)->PopMatrix)
+#define SET_PopMatrix(disp, fn) ((disp)->PopMatrix = fn)
+#define CALL_PushMatrix(disp, parameters) (*((disp)->PushMatrix)) parameters
+#define GET_PushMatrix(disp) ((disp)->PushMatrix)
+#define SET_PushMatrix(disp, fn) ((disp)->PushMatrix = fn)
+#define CALL_Rotated(disp, parameters) (*((disp)->Rotated)) parameters
+#define GET_Rotated(disp) ((disp)->Rotated)
+#define SET_Rotated(disp, fn) ((disp)->Rotated = fn)
+#define CALL_Rotatef(disp, parameters) (*((disp)->Rotatef)) parameters
+#define GET_Rotatef(disp) ((disp)->Rotatef)
+#define SET_Rotatef(disp, fn) ((disp)->Rotatef = fn)
+#define CALL_Scaled(disp, parameters) (*((disp)->Scaled)) parameters
+#define GET_Scaled(disp) ((disp)->Scaled)
+#define SET_Scaled(disp, fn) ((disp)->Scaled = fn)
+#define CALL_Scalef(disp, parameters) (*((disp)->Scalef)) parameters
+#define GET_Scalef(disp) ((disp)->Scalef)
+#define SET_Scalef(disp, fn) ((disp)->Scalef = fn)
+#define CALL_Translated(disp, parameters) (*((disp)->Translated)) parameters
+#define GET_Translated(disp) ((disp)->Translated)
+#define SET_Translated(disp, fn) ((disp)->Translated = fn)
+#define CALL_Translatef(disp, parameters) (*((disp)->Translatef)) parameters
+#define GET_Translatef(disp) ((disp)->Translatef)
+#define SET_Translatef(disp, fn) ((disp)->Translatef = fn)
+#define CALL_Viewport(disp, parameters) (*((disp)->Viewport)) parameters
+#define GET_Viewport(disp) ((disp)->Viewport)
+#define SET_Viewport(disp, fn) ((disp)->Viewport = fn)
+#define CALL_ArrayElement(disp, parameters) (*((disp)->ArrayElement)) parameters
+#define GET_ArrayElement(disp) ((disp)->ArrayElement)
+#define SET_ArrayElement(disp, fn) ((disp)->ArrayElement = fn)
+#define CALL_BindTexture(disp, parameters) (*((disp)->BindTexture)) parameters
+#define GET_BindTexture(disp) ((disp)->BindTexture)
+#define SET_BindTexture(disp, fn) ((disp)->BindTexture = fn)
+#define CALL_ColorPointer(disp, parameters) (*((disp)->ColorPointer)) parameters
+#define GET_ColorPointer(disp) ((disp)->ColorPointer)
+#define SET_ColorPointer(disp, fn) ((disp)->ColorPointer = fn)
+#define CALL_DisableClientState(disp, parameters) (*((disp)->DisableClientState)) parameters
+#define GET_DisableClientState(disp) ((disp)->DisableClientState)
+#define SET_DisableClientState(disp, fn) ((disp)->DisableClientState = fn)
+#define CALL_DrawArrays(disp, parameters) (*((disp)->DrawArrays)) parameters
+#define GET_DrawArrays(disp) ((disp)->DrawArrays)
+#define SET_DrawArrays(disp, fn) ((disp)->DrawArrays = fn)
+#define CALL_DrawElements(disp, parameters) (*((disp)->DrawElements)) parameters
+#define GET_DrawElements(disp) ((disp)->DrawElements)
+#define SET_DrawElements(disp, fn) ((disp)->DrawElements = fn)
+#define CALL_EdgeFlagPointer(disp, parameters) (*((disp)->EdgeFlagPointer)) parameters
+#define GET_EdgeFlagPointer(disp) ((disp)->EdgeFlagPointer)
+#define SET_EdgeFlagPointer(disp, fn) ((disp)->EdgeFlagPointer = fn)
+#define CALL_EnableClientState(disp, parameters) (*((disp)->EnableClientState)) parameters
+#define GET_EnableClientState(disp) ((disp)->EnableClientState)
+#define SET_EnableClientState(disp, fn) ((disp)->EnableClientState = fn)
+#define CALL_IndexPointer(disp, parameters) (*((disp)->IndexPointer)) parameters
+#define GET_IndexPointer(disp) ((disp)->IndexPointer)
+#define SET_IndexPointer(disp, fn) ((disp)->IndexPointer = fn)
+#define CALL_Indexub(disp, parameters) (*((disp)->Indexub)) parameters
+#define GET_Indexub(disp) ((disp)->Indexub)
+#define SET_Indexub(disp, fn) ((disp)->Indexub = fn)
+#define CALL_Indexubv(disp, parameters) (*((disp)->Indexubv)) parameters
+#define GET_Indexubv(disp) ((disp)->Indexubv)
+#define SET_Indexubv(disp, fn) ((disp)->Indexubv = fn)
+#define CALL_InterleavedArrays(disp, parameters) (*((disp)->InterleavedArrays)) parameters
+#define GET_InterleavedArrays(disp) ((disp)->InterleavedArrays)
+#define SET_InterleavedArrays(disp, fn) ((disp)->InterleavedArrays = fn)
+#define CALL_NormalPointer(disp, parameters) (*((disp)->NormalPointer)) parameters
+#define GET_NormalPointer(disp) ((disp)->NormalPointer)
+#define SET_NormalPointer(disp, fn) ((disp)->NormalPointer = fn)
+#define CALL_PolygonOffset(disp, parameters) (*((disp)->PolygonOffset)) parameters
+#define GET_PolygonOffset(disp) ((disp)->PolygonOffset)
+#define SET_PolygonOffset(disp, fn) ((disp)->PolygonOffset = fn)
+#define CALL_TexCoordPointer(disp, parameters) (*((disp)->TexCoordPointer)) parameters
+#define GET_TexCoordPointer(disp) ((disp)->TexCoordPointer)
+#define SET_TexCoordPointer(disp, fn) ((disp)->TexCoordPointer = fn)
+#define CALL_VertexPointer(disp, parameters) (*((disp)->VertexPointer)) parameters
+#define GET_VertexPointer(disp) ((disp)->VertexPointer)
+#define SET_VertexPointer(disp, fn) ((disp)->VertexPointer = fn)
+#define CALL_AreTexturesResident(disp, parameters) (*((disp)->AreTexturesResident)) parameters
+#define GET_AreTexturesResident(disp) ((disp)->AreTexturesResident)
+#define SET_AreTexturesResident(disp, fn) ((disp)->AreTexturesResident = fn)
+#define CALL_CopyTexImage1D(disp, parameters) (*((disp)->CopyTexImage1D)) parameters
+#define GET_CopyTexImage1D(disp) ((disp)->CopyTexImage1D)
+#define SET_CopyTexImage1D(disp, fn) ((disp)->CopyTexImage1D = fn)
+#define CALL_CopyTexImage2D(disp, parameters) (*((disp)->CopyTexImage2D)) parameters
+#define GET_CopyTexImage2D(disp) ((disp)->CopyTexImage2D)
+#define SET_CopyTexImage2D(disp, fn) ((disp)->CopyTexImage2D = fn)
+#define CALL_CopyTexSubImage1D(disp, parameters) (*((disp)->CopyTexSubImage1D)) parameters
+#define GET_CopyTexSubImage1D(disp) ((disp)->CopyTexSubImage1D)
+#define SET_CopyTexSubImage1D(disp, fn) ((disp)->CopyTexSubImage1D = fn)
+#define CALL_CopyTexSubImage2D(disp, parameters) (*((disp)->CopyTexSubImage2D)) parameters
+#define GET_CopyTexSubImage2D(disp) ((disp)->CopyTexSubImage2D)
+#define SET_CopyTexSubImage2D(disp, fn) ((disp)->CopyTexSubImage2D = fn)
+#define CALL_DeleteTextures(disp, parameters) (*((disp)->DeleteTextures)) parameters
+#define GET_DeleteTextures(disp) ((disp)->DeleteTextures)
+#define SET_DeleteTextures(disp, fn) ((disp)->DeleteTextures = fn)
+#define CALL_GenTextures(disp, parameters) (*((disp)->GenTextures)) parameters
+#define GET_GenTextures(disp) ((disp)->GenTextures)
+#define SET_GenTextures(disp, fn) ((disp)->GenTextures = fn)
+#define CALL_GetPointerv(disp, parameters) (*((disp)->GetPointerv)) parameters
+#define GET_GetPointerv(disp) ((disp)->GetPointerv)
+#define SET_GetPointerv(disp, fn) ((disp)->GetPointerv = fn)
+#define CALL_IsTexture(disp, parameters) (*((disp)->IsTexture)) parameters
+#define GET_IsTexture(disp) ((disp)->IsTexture)
+#define SET_IsTexture(disp, fn) ((disp)->IsTexture = fn)
+#define CALL_PrioritizeTextures(disp, parameters) (*((disp)->PrioritizeTextures)) parameters
+#define GET_PrioritizeTextures(disp) ((disp)->PrioritizeTextures)
+#define SET_PrioritizeTextures(disp, fn) ((disp)->PrioritizeTextures = fn)
+#define CALL_TexSubImage1D(disp, parameters) (*((disp)->TexSubImage1D)) parameters
+#define GET_TexSubImage1D(disp) ((disp)->TexSubImage1D)
+#define SET_TexSubImage1D(disp, fn) ((disp)->TexSubImage1D = fn)
+#define CALL_TexSubImage2D(disp, parameters) (*((disp)->TexSubImage2D)) parameters
+#define GET_TexSubImage2D(disp) ((disp)->TexSubImage2D)
+#define SET_TexSubImage2D(disp, fn) ((disp)->TexSubImage2D = fn)
+#define CALL_PopClientAttrib(disp, parameters) (*((disp)->PopClientAttrib)) parameters
+#define GET_PopClientAttrib(disp) ((disp)->PopClientAttrib)
+#define SET_PopClientAttrib(disp, fn) ((disp)->PopClientAttrib = fn)
+#define CALL_PushClientAttrib(disp, parameters) (*((disp)->PushClientAttrib)) parameters
+#define GET_PushClientAttrib(disp) ((disp)->PushClientAttrib)
+#define SET_PushClientAttrib(disp, fn) ((disp)->PushClientAttrib = fn)
+#define CALL_BlendColor(disp, parameters) (*((disp)->BlendColor)) parameters
+#define GET_BlendColor(disp) ((disp)->BlendColor)
+#define SET_BlendColor(disp, fn) ((disp)->BlendColor = fn)
+#define CALL_BlendEquation(disp, parameters) (*((disp)->BlendEquation)) parameters
+#define GET_BlendEquation(disp) ((disp)->BlendEquation)
+#define SET_BlendEquation(disp, fn) ((disp)->BlendEquation = fn)
+#define CALL_DrawRangeElements(disp, parameters) (*((disp)->DrawRangeElements)) parameters
+#define GET_DrawRangeElements(disp) ((disp)->DrawRangeElements)
+#define SET_DrawRangeElements(disp, fn) ((disp)->DrawRangeElements = fn)
+#define CALL_ColorTable(disp, parameters) (*((disp)->ColorTable)) parameters
+#define GET_ColorTable(disp) ((disp)->ColorTable)
+#define SET_ColorTable(disp, fn) ((disp)->ColorTable = fn)
+#define CALL_ColorTableParameterfv(disp, parameters) (*((disp)->ColorTableParameterfv)) parameters
+#define GET_ColorTableParameterfv(disp) ((disp)->ColorTableParameterfv)
+#define SET_ColorTableParameterfv(disp, fn) ((disp)->ColorTableParameterfv = fn)
+#define CALL_ColorTableParameteriv(disp, parameters) (*((disp)->ColorTableParameteriv)) parameters
+#define GET_ColorTableParameteriv(disp) ((disp)->ColorTableParameteriv)
+#define SET_ColorTableParameteriv(disp, fn) ((disp)->ColorTableParameteriv = fn)
+#define CALL_CopyColorTable(disp, parameters) (*((disp)->CopyColorTable)) parameters
+#define GET_CopyColorTable(disp) ((disp)->CopyColorTable)
+#define SET_CopyColorTable(disp, fn) ((disp)->CopyColorTable = fn)
+#define CALL_GetColorTable(disp, parameters) (*((disp)->GetColorTable)) parameters
+#define GET_GetColorTable(disp) ((disp)->GetColorTable)
+#define SET_GetColorTable(disp, fn) ((disp)->GetColorTable = fn)
+#define CALL_GetColorTableParameterfv(disp, parameters) (*((disp)->GetColorTableParameterfv)) parameters
+#define GET_GetColorTableParameterfv(disp) ((disp)->GetColorTableParameterfv)
+#define SET_GetColorTableParameterfv(disp, fn) ((disp)->GetColorTableParameterfv = fn)
+#define CALL_GetColorTableParameteriv(disp, parameters) (*((disp)->GetColorTableParameteriv)) parameters
+#define GET_GetColorTableParameteriv(disp) ((disp)->GetColorTableParameteriv)
+#define SET_GetColorTableParameteriv(disp, fn) ((disp)->GetColorTableParameteriv = fn)
+#define CALL_ColorSubTable(disp, parameters) (*((disp)->ColorSubTable)) parameters
+#define GET_ColorSubTable(disp) ((disp)->ColorSubTable)
+#define SET_ColorSubTable(disp, fn) ((disp)->ColorSubTable = fn)
+#define CALL_CopyColorSubTable(disp, parameters) (*((disp)->CopyColorSubTable)) parameters
+#define GET_CopyColorSubTable(disp) ((disp)->CopyColorSubTable)
+#define SET_CopyColorSubTable(disp, fn) ((disp)->CopyColorSubTable = fn)
+#define CALL_ConvolutionFilter1D(disp, parameters) (*((disp)->ConvolutionFilter1D)) parameters
+#define GET_ConvolutionFilter1D(disp) ((disp)->ConvolutionFilter1D)
+#define SET_ConvolutionFilter1D(disp, fn) ((disp)->ConvolutionFilter1D = fn)
+#define CALL_ConvolutionFilter2D(disp, parameters) (*((disp)->ConvolutionFilter2D)) parameters
+#define GET_ConvolutionFilter2D(disp) ((disp)->ConvolutionFilter2D)
+#define SET_ConvolutionFilter2D(disp, fn) ((disp)->ConvolutionFilter2D = fn)
+#define CALL_ConvolutionParameterf(disp, parameters) (*((disp)->ConvolutionParameterf)) parameters
+#define GET_ConvolutionParameterf(disp) ((disp)->ConvolutionParameterf)
+#define SET_ConvolutionParameterf(disp, fn) ((disp)->ConvolutionParameterf = fn)
+#define CALL_ConvolutionParameterfv(disp, parameters) (*((disp)->ConvolutionParameterfv)) parameters
+#define GET_ConvolutionParameterfv(disp) ((disp)->ConvolutionParameterfv)
+#define SET_ConvolutionParameterfv(disp, fn) ((disp)->ConvolutionParameterfv = fn)
+#define CALL_ConvolutionParameteri(disp, parameters) (*((disp)->ConvolutionParameteri)) parameters
+#define GET_ConvolutionParameteri(disp) ((disp)->ConvolutionParameteri)
+#define SET_ConvolutionParameteri(disp, fn) ((disp)->ConvolutionParameteri = fn)
+#define CALL_ConvolutionParameteriv(disp, parameters) (*((disp)->ConvolutionParameteriv)) parameters
+#define GET_ConvolutionParameteriv(disp) ((disp)->ConvolutionParameteriv)
+#define SET_ConvolutionParameteriv(disp, fn) ((disp)->ConvolutionParameteriv = fn)
+#define CALL_CopyConvolutionFilter1D(disp, parameters) (*((disp)->CopyConvolutionFilter1D)) parameters
+#define GET_CopyConvolutionFilter1D(disp) ((disp)->CopyConvolutionFilter1D)
+#define SET_CopyConvolutionFilter1D(disp, fn) ((disp)->CopyConvolutionFilter1D = fn)
+#define CALL_CopyConvolutionFilter2D(disp, parameters) (*((disp)->CopyConvolutionFilter2D)) parameters
+#define GET_CopyConvolutionFilter2D(disp) ((disp)->CopyConvolutionFilter2D)
+#define SET_CopyConvolutionFilter2D(disp, fn) ((disp)->CopyConvolutionFilter2D = fn)
+#define CALL_GetConvolutionFilter(disp, parameters) (*((disp)->GetConvolutionFilter)) parameters
+#define GET_GetConvolutionFilter(disp) ((disp)->GetConvolutionFilter)
+#define SET_GetConvolutionFilter(disp, fn) ((disp)->GetConvolutionFilter = fn)
+#define CALL_GetConvolutionParameterfv(disp, parameters) (*((disp)->GetConvolutionParameterfv)) parameters
+#define GET_GetConvolutionParameterfv(disp) ((disp)->GetConvolutionParameterfv)
+#define SET_GetConvolutionParameterfv(disp, fn) ((disp)->GetConvolutionParameterfv = fn)
+#define CALL_GetConvolutionParameteriv(disp, parameters) (*((disp)->GetConvolutionParameteriv)) parameters
+#define GET_GetConvolutionParameteriv(disp) ((disp)->GetConvolutionParameteriv)
+#define SET_GetConvolutionParameteriv(disp, fn) ((disp)->GetConvolutionParameteriv = fn)
+#define CALL_GetSeparableFilter(disp, parameters) (*((disp)->GetSeparableFilter)) parameters
+#define GET_GetSeparableFilter(disp) ((disp)->GetSeparableFilter)
+#define SET_GetSeparableFilter(disp, fn) ((disp)->GetSeparableFilter = fn)
+#define CALL_SeparableFilter2D(disp, parameters) (*((disp)->SeparableFilter2D)) parameters
+#define GET_SeparableFilter2D(disp) ((disp)->SeparableFilter2D)
+#define SET_SeparableFilter2D(disp, fn) ((disp)->SeparableFilter2D = fn)
+#define CALL_GetHistogram(disp, parameters) (*((disp)->GetHistogram)) parameters
+#define GET_GetHistogram(disp) ((disp)->GetHistogram)
+#define SET_GetHistogram(disp, fn) ((disp)->GetHistogram = fn)
+#define CALL_GetHistogramParameterfv(disp, parameters) (*((disp)->GetHistogramParameterfv)) parameters
+#define GET_GetHistogramParameterfv(disp) ((disp)->GetHistogramParameterfv)
+#define SET_GetHistogramParameterfv(disp, fn) ((disp)->GetHistogramParameterfv = fn)
+#define CALL_GetHistogramParameteriv(disp, parameters) (*((disp)->GetHistogramParameteriv)) parameters
+#define GET_GetHistogramParameteriv(disp) ((disp)->GetHistogramParameteriv)
+#define SET_GetHistogramParameteriv(disp, fn) ((disp)->GetHistogramParameteriv = fn)
+#define CALL_GetMinmax(disp, parameters) (*((disp)->GetMinmax)) parameters
+#define GET_GetMinmax(disp) ((disp)->GetMinmax)
+#define SET_GetMinmax(disp, fn) ((disp)->GetMinmax = fn)
+#define CALL_GetMinmaxParameterfv(disp, parameters) (*((disp)->GetMinmaxParameterfv)) parameters
+#define GET_GetMinmaxParameterfv(disp) ((disp)->GetMinmaxParameterfv)
+#define SET_GetMinmaxParameterfv(disp, fn) ((disp)->GetMinmaxParameterfv = fn)
+#define CALL_GetMinmaxParameteriv(disp, parameters) (*((disp)->GetMinmaxParameteriv)) parameters
+#define GET_GetMinmaxParameteriv(disp) ((disp)->GetMinmaxParameteriv)
+#define SET_GetMinmaxParameteriv(disp, fn) ((disp)->GetMinmaxParameteriv = fn)
+#define CALL_Histogram(disp, parameters) (*((disp)->Histogram)) parameters
+#define GET_Histogram(disp) ((disp)->Histogram)
+#define SET_Histogram(disp, fn) ((disp)->Histogram = fn)
+#define CALL_Minmax(disp, parameters) (*((disp)->Minmax)) parameters
+#define GET_Minmax(disp) ((disp)->Minmax)
+#define SET_Minmax(disp, fn) ((disp)->Minmax = fn)
+#define CALL_ResetHistogram(disp, parameters) (*((disp)->ResetHistogram)) parameters
+#define GET_ResetHistogram(disp) ((disp)->ResetHistogram)
+#define SET_ResetHistogram(disp, fn) ((disp)->ResetHistogram = fn)
+#define CALL_ResetMinmax(disp, parameters) (*((disp)->ResetMinmax)) parameters
+#define GET_ResetMinmax(disp) ((disp)->ResetMinmax)
+#define SET_ResetMinmax(disp, fn) ((disp)->ResetMinmax = fn)
+#define CALL_TexImage3D(disp, parameters) (*((disp)->TexImage3D)) parameters
+#define GET_TexImage3D(disp) ((disp)->TexImage3D)
+#define SET_TexImage3D(disp, fn) ((disp)->TexImage3D = fn)
+#define CALL_TexSubImage3D(disp, parameters) (*((disp)->TexSubImage3D)) parameters
+#define GET_TexSubImage3D(disp) ((disp)->TexSubImage3D)
+#define SET_TexSubImage3D(disp, fn) ((disp)->TexSubImage3D = fn)
+#define CALL_CopyTexSubImage3D(disp, parameters) (*((disp)->CopyTexSubImage3D)) parameters
+#define GET_CopyTexSubImage3D(disp) ((disp)->CopyTexSubImage3D)
+#define SET_CopyTexSubImage3D(disp, fn) ((disp)->CopyTexSubImage3D = fn)
+#define CALL_ActiveTextureARB(disp, parameters) (*((disp)->ActiveTextureARB)) parameters
+#define GET_ActiveTextureARB(disp) ((disp)->ActiveTextureARB)
+#define SET_ActiveTextureARB(disp, fn) ((disp)->ActiveTextureARB = fn)
+#define CALL_ClientActiveTextureARB(disp, parameters) (*((disp)->ClientActiveTextureARB)) parameters
+#define GET_ClientActiveTextureARB(disp) ((disp)->ClientActiveTextureARB)
+#define SET_ClientActiveTextureARB(disp, fn) ((disp)->ClientActiveTextureARB = fn)
+#define CALL_MultiTexCoord1dARB(disp, parameters) (*((disp)->MultiTexCoord1dARB)) parameters
+#define GET_MultiTexCoord1dARB(disp) ((disp)->MultiTexCoord1dARB)
+#define SET_MultiTexCoord1dARB(disp, fn) ((disp)->MultiTexCoord1dARB = fn)
+#define CALL_MultiTexCoord1dvARB(disp, parameters) (*((disp)->MultiTexCoord1dvARB)) parameters
+#define GET_MultiTexCoord1dvARB(disp) ((disp)->MultiTexCoord1dvARB)
+#define SET_MultiTexCoord1dvARB(disp, fn) ((disp)->MultiTexCoord1dvARB = fn)
+#define CALL_MultiTexCoord1fARB(disp, parameters) (*((disp)->MultiTexCoord1fARB)) parameters
+#define GET_MultiTexCoord1fARB(disp) ((disp)->MultiTexCoord1fARB)
+#define SET_MultiTexCoord1fARB(disp, fn) ((disp)->MultiTexCoord1fARB = fn)
+#define CALL_MultiTexCoord1fvARB(disp, parameters) (*((disp)->MultiTexCoord1fvARB)) parameters
+#define GET_MultiTexCoord1fvARB(disp) ((disp)->MultiTexCoord1fvARB)
+#define SET_MultiTexCoord1fvARB(disp, fn) ((disp)->MultiTexCoord1fvARB = fn)
+#define CALL_MultiTexCoord1iARB(disp, parameters) (*((disp)->MultiTexCoord1iARB)) parameters
+#define GET_MultiTexCoord1iARB(disp) ((disp)->MultiTexCoord1iARB)
+#define SET_MultiTexCoord1iARB(disp, fn) ((disp)->MultiTexCoord1iARB = fn)
+#define CALL_MultiTexCoord1ivARB(disp, parameters) (*((disp)->MultiTexCoord1ivARB)) parameters
+#define GET_MultiTexCoord1ivARB(disp) ((disp)->MultiTexCoord1ivARB)
+#define SET_MultiTexCoord1ivARB(disp, fn) ((disp)->MultiTexCoord1ivARB = fn)
+#define CALL_MultiTexCoord1sARB(disp, parameters) (*((disp)->MultiTexCoord1sARB)) parameters
+#define GET_MultiTexCoord1sARB(disp) ((disp)->MultiTexCoord1sARB)
+#define SET_MultiTexCoord1sARB(disp, fn) ((disp)->MultiTexCoord1sARB = fn)
+#define CALL_MultiTexCoord1svARB(disp, parameters) (*((disp)->MultiTexCoord1svARB)) parameters
+#define GET_MultiTexCoord1svARB(disp) ((disp)->MultiTexCoord1svARB)
+#define SET_MultiTexCoord1svARB(disp, fn) ((disp)->MultiTexCoord1svARB = fn)
+#define CALL_MultiTexCoord2dARB(disp, parameters) (*((disp)->MultiTexCoord2dARB)) parameters
+#define GET_MultiTexCoord2dARB(disp) ((disp)->MultiTexCoord2dARB)
+#define SET_MultiTexCoord2dARB(disp, fn) ((disp)->MultiTexCoord2dARB = fn)
+#define CALL_MultiTexCoord2dvARB(disp, parameters) (*((disp)->MultiTexCoord2dvARB)) parameters
+#define GET_MultiTexCoord2dvARB(disp) ((disp)->MultiTexCoord2dvARB)
+#define SET_MultiTexCoord2dvARB(disp, fn) ((disp)->MultiTexCoord2dvARB = fn)
+#define CALL_MultiTexCoord2fARB(disp, parameters) (*((disp)->MultiTexCoord2fARB)) parameters
+#define GET_MultiTexCoord2fARB(disp) ((disp)->MultiTexCoord2fARB)
+#define SET_MultiTexCoord2fARB(disp, fn) ((disp)->MultiTexCoord2fARB = fn)
+#define CALL_MultiTexCoord2fvARB(disp, parameters) (*((disp)->MultiTexCoord2fvARB)) parameters
+#define GET_MultiTexCoord2fvARB(disp) ((disp)->MultiTexCoord2fvARB)
+#define SET_MultiTexCoord2fvARB(disp, fn) ((disp)->MultiTexCoord2fvARB = fn)
+#define CALL_MultiTexCoord2iARB(disp, parameters) (*((disp)->MultiTexCoord2iARB)) parameters
+#define GET_MultiTexCoord2iARB(disp) ((disp)->MultiTexCoord2iARB)
+#define SET_MultiTexCoord2iARB(disp, fn) ((disp)->MultiTexCoord2iARB = fn)
+#define CALL_MultiTexCoord2ivARB(disp, parameters) (*((disp)->MultiTexCoord2ivARB)) parameters
+#define GET_MultiTexCoord2ivARB(disp) ((disp)->MultiTexCoord2ivARB)
+#define SET_MultiTexCoord2ivARB(disp, fn) ((disp)->MultiTexCoord2ivARB = fn)
+#define CALL_MultiTexCoord2sARB(disp, parameters) (*((disp)->MultiTexCoord2sARB)) parameters
+#define GET_MultiTexCoord2sARB(disp) ((disp)->MultiTexCoord2sARB)
+#define SET_MultiTexCoord2sARB(disp, fn) ((disp)->MultiTexCoord2sARB = fn)
+#define CALL_MultiTexCoord2svARB(disp, parameters) (*((disp)->MultiTexCoord2svARB)) parameters
+#define GET_MultiTexCoord2svARB(disp) ((disp)->MultiTexCoord2svARB)
+#define SET_MultiTexCoord2svARB(disp, fn) ((disp)->MultiTexCoord2svARB = fn)
+#define CALL_MultiTexCoord3dARB(disp, parameters) (*((disp)->MultiTexCoord3dARB)) parameters
+#define GET_MultiTexCoord3dARB(disp) ((disp)->MultiTexCoord3dARB)
+#define SET_MultiTexCoord3dARB(disp, fn) ((disp)->MultiTexCoord3dARB = fn)
+#define CALL_MultiTexCoord3dvARB(disp, parameters) (*((disp)->MultiTexCoord3dvARB)) parameters
+#define GET_MultiTexCoord3dvARB(disp) ((disp)->MultiTexCoord3dvARB)
+#define SET_MultiTexCoord3dvARB(disp, fn) ((disp)->MultiTexCoord3dvARB = fn)
+#define CALL_MultiTexCoord3fARB(disp, parameters) (*((disp)->MultiTexCoord3fARB)) parameters
+#define GET_MultiTexCoord3fARB(disp) ((disp)->MultiTexCoord3fARB)
+#define SET_MultiTexCoord3fARB(disp, fn) ((disp)->MultiTexCoord3fARB = fn)
+#define CALL_MultiTexCoord3fvARB(disp, parameters) (*((disp)->MultiTexCoord3fvARB)) parameters
+#define GET_MultiTexCoord3fvARB(disp) ((disp)->MultiTexCoord3fvARB)
+#define SET_MultiTexCoord3fvARB(disp, fn) ((disp)->MultiTexCoord3fvARB = fn)
+#define CALL_MultiTexCoord3iARB(disp, parameters) (*((disp)->MultiTexCoord3iARB)) parameters
+#define GET_MultiTexCoord3iARB(disp) ((disp)->MultiTexCoord3iARB)
+#define SET_MultiTexCoord3iARB(disp, fn) ((disp)->MultiTexCoord3iARB = fn)
+#define CALL_MultiTexCoord3ivARB(disp, parameters) (*((disp)->MultiTexCoord3ivARB)) parameters
+#define GET_MultiTexCoord3ivARB(disp) ((disp)->MultiTexCoord3ivARB)
+#define SET_MultiTexCoord3ivARB(disp, fn) ((disp)->MultiTexCoord3ivARB = fn)
+#define CALL_MultiTexCoord3sARB(disp, parameters) (*((disp)->MultiTexCoord3sARB)) parameters
+#define GET_MultiTexCoord3sARB(disp) ((disp)->MultiTexCoord3sARB)
+#define SET_MultiTexCoord3sARB(disp, fn) ((disp)->MultiTexCoord3sARB = fn)
+#define CALL_MultiTexCoord3svARB(disp, parameters) (*((disp)->MultiTexCoord3svARB)) parameters
+#define GET_MultiTexCoord3svARB(disp) ((disp)->MultiTexCoord3svARB)
+#define SET_MultiTexCoord3svARB(disp, fn) ((disp)->MultiTexCoord3svARB = fn)
+#define CALL_MultiTexCoord4dARB(disp, parameters) (*((disp)->MultiTexCoord4dARB)) parameters
+#define GET_MultiTexCoord4dARB(disp) ((disp)->MultiTexCoord4dARB)
+#define SET_MultiTexCoord4dARB(disp, fn) ((disp)->MultiTexCoord4dARB = fn)
+#define CALL_MultiTexCoord4dvARB(disp, parameters) (*((disp)->MultiTexCoord4dvARB)) parameters
+#define GET_MultiTexCoord4dvARB(disp) ((disp)->MultiTexCoord4dvARB)
+#define SET_MultiTexCoord4dvARB(disp, fn) ((disp)->MultiTexCoord4dvARB = fn)
+#define CALL_MultiTexCoord4fARB(disp, parameters) (*((disp)->MultiTexCoord4fARB)) parameters
+#define GET_MultiTexCoord4fARB(disp) ((disp)->MultiTexCoord4fARB)
+#define SET_MultiTexCoord4fARB(disp, fn) ((disp)->MultiTexCoord4fARB = fn)
+#define CALL_MultiTexCoord4fvARB(disp, parameters) (*((disp)->MultiTexCoord4fvARB)) parameters
+#define GET_MultiTexCoord4fvARB(disp) ((disp)->MultiTexCoord4fvARB)
+#define SET_MultiTexCoord4fvARB(disp, fn) ((disp)->MultiTexCoord4fvARB = fn)
+#define CALL_MultiTexCoord4iARB(disp, parameters) (*((disp)->MultiTexCoord4iARB)) parameters
+#define GET_MultiTexCoord4iARB(disp) ((disp)->MultiTexCoord4iARB)
+#define SET_MultiTexCoord4iARB(disp, fn) ((disp)->MultiTexCoord4iARB = fn)
+#define CALL_MultiTexCoord4ivARB(disp, parameters) (*((disp)->MultiTexCoord4ivARB)) parameters
+#define GET_MultiTexCoord4ivARB(disp) ((disp)->MultiTexCoord4ivARB)
+#define SET_MultiTexCoord4ivARB(disp, fn) ((disp)->MultiTexCoord4ivARB = fn)
+#define CALL_MultiTexCoord4sARB(disp, parameters) (*((disp)->MultiTexCoord4sARB)) parameters
+#define GET_MultiTexCoord4sARB(disp) ((disp)->MultiTexCoord4sARB)
+#define SET_MultiTexCoord4sARB(disp, fn) ((disp)->MultiTexCoord4sARB = fn)
+#define CALL_MultiTexCoord4svARB(disp, parameters) (*((disp)->MultiTexCoord4svARB)) parameters
+#define GET_MultiTexCoord4svARB(disp) ((disp)->MultiTexCoord4svARB)
+#define SET_MultiTexCoord4svARB(disp, fn) ((disp)->MultiTexCoord4svARB = fn)
+
+#if !defined(_GLAPI_USE_REMAP_TABLE)
+
+#define CALL_AttachShader(disp, parameters) (*((disp)->AttachShader)) parameters
+#define GET_AttachShader(disp) ((disp)->AttachShader)
+#define SET_AttachShader(disp, fn) ((disp)->AttachShader = fn)
+#define CALL_CreateProgram(disp, parameters) (*((disp)->CreateProgram)) parameters
+#define GET_CreateProgram(disp) ((disp)->CreateProgram)
+#define SET_CreateProgram(disp, fn) ((disp)->CreateProgram = fn)
+#define CALL_CreateShader(disp, parameters) (*((disp)->CreateShader)) parameters
+#define GET_CreateShader(disp) ((disp)->CreateShader)
+#define SET_CreateShader(disp, fn) ((disp)->CreateShader = fn)
+#define CALL_DeleteProgram(disp, parameters) (*((disp)->DeleteProgram)) parameters
+#define GET_DeleteProgram(disp) ((disp)->DeleteProgram)
+#define SET_DeleteProgram(disp, fn) ((disp)->DeleteProgram = fn)
+#define CALL_DeleteShader(disp, parameters) (*((disp)->DeleteShader)) parameters
+#define GET_DeleteShader(disp) ((disp)->DeleteShader)
+#define SET_DeleteShader(disp, fn) ((disp)->DeleteShader = fn)
+#define CALL_DetachShader(disp, parameters) (*((disp)->DetachShader)) parameters
+#define GET_DetachShader(disp) ((disp)->DetachShader)
+#define SET_DetachShader(disp, fn) ((disp)->DetachShader = fn)
+#define CALL_GetAttachedShaders(disp, parameters) (*((disp)->GetAttachedShaders)) parameters
+#define GET_GetAttachedShaders(disp) ((disp)->GetAttachedShaders)
+#define SET_GetAttachedShaders(disp, fn) ((disp)->GetAttachedShaders = fn)
+#define CALL_GetProgramInfoLog(disp, parameters) (*((disp)->GetProgramInfoLog)) parameters
+#define GET_GetProgramInfoLog(disp) ((disp)->GetProgramInfoLog)
+#define SET_GetProgramInfoLog(disp, fn) ((disp)->GetProgramInfoLog = fn)
+#define CALL_GetProgramiv(disp, parameters) (*((disp)->GetProgramiv)) parameters
+#define GET_GetProgramiv(disp) ((disp)->GetProgramiv)
+#define SET_GetProgramiv(disp, fn) ((disp)->GetProgramiv = fn)
+#define CALL_GetShaderInfoLog(disp, parameters) (*((disp)->GetShaderInfoLog)) parameters
+#define GET_GetShaderInfoLog(disp) ((disp)->GetShaderInfoLog)
+#define SET_GetShaderInfoLog(disp, fn) ((disp)->GetShaderInfoLog = fn)
+#define CALL_GetShaderiv(disp, parameters) (*((disp)->GetShaderiv)) parameters
+#define GET_GetShaderiv(disp) ((disp)->GetShaderiv)
+#define SET_GetShaderiv(disp, fn) ((disp)->GetShaderiv = fn)
+#define CALL_IsProgram(disp, parameters) (*((disp)->IsProgram)) parameters
+#define GET_IsProgram(disp) ((disp)->IsProgram)
+#define SET_IsProgram(disp, fn) ((disp)->IsProgram = fn)
+#define CALL_IsShader(disp, parameters) (*((disp)->IsShader)) parameters
+#define GET_IsShader(disp) ((disp)->IsShader)
+#define SET_IsShader(disp, fn) ((disp)->IsShader = fn)
+#define CALL_StencilFuncSeparate(disp, parameters) (*((disp)->StencilFuncSeparate)) parameters
+#define GET_StencilFuncSeparate(disp) ((disp)->StencilFuncSeparate)
+#define SET_StencilFuncSeparate(disp, fn) ((disp)->StencilFuncSeparate = fn)
+#define CALL_StencilMaskSeparate(disp, parameters) (*((disp)->StencilMaskSeparate)) parameters
+#define GET_StencilMaskSeparate(disp) ((disp)->StencilMaskSeparate)
+#define SET_StencilMaskSeparate(disp, fn) ((disp)->StencilMaskSeparate = fn)
+#define CALL_StencilOpSeparate(disp, parameters) (*((disp)->StencilOpSeparate)) parameters
+#define GET_StencilOpSeparate(disp) ((disp)->StencilOpSeparate)
+#define SET_StencilOpSeparate(disp, fn) ((disp)->StencilOpSeparate = fn)
+#define CALL_UniformMatrix2x3fv(disp, parameters) (*((disp)->UniformMatrix2x3fv)) parameters
+#define GET_UniformMatrix2x3fv(disp) ((disp)->UniformMatrix2x3fv)
+#define SET_UniformMatrix2x3fv(disp, fn) ((disp)->UniformMatrix2x3fv = fn)
+#define CALL_UniformMatrix2x4fv(disp, parameters) (*((disp)->UniformMatrix2x4fv)) parameters
+#define GET_UniformMatrix2x4fv(disp) ((disp)->UniformMatrix2x4fv)
+#define SET_UniformMatrix2x4fv(disp, fn) ((disp)->UniformMatrix2x4fv = fn)
+#define CALL_UniformMatrix3x2fv(disp, parameters) (*((disp)->UniformMatrix3x2fv)) parameters
+#define GET_UniformMatrix3x2fv(disp) ((disp)->UniformMatrix3x2fv)
+#define SET_UniformMatrix3x2fv(disp, fn) ((disp)->UniformMatrix3x2fv = fn)
+#define CALL_UniformMatrix3x4fv(disp, parameters) (*((disp)->UniformMatrix3x4fv)) parameters
+#define GET_UniformMatrix3x4fv(disp) ((disp)->UniformMatrix3x4fv)
+#define SET_UniformMatrix3x4fv(disp, fn) ((disp)->UniformMatrix3x4fv = fn)
+#define CALL_UniformMatrix4x2fv(disp, parameters) (*((disp)->UniformMatrix4x2fv)) parameters
+#define GET_UniformMatrix4x2fv(disp) ((disp)->UniformMatrix4x2fv)
+#define SET_UniformMatrix4x2fv(disp, fn) ((disp)->UniformMatrix4x2fv = fn)
+#define CALL_UniformMatrix4x3fv(disp, parameters) (*((disp)->UniformMatrix4x3fv)) parameters
+#define GET_UniformMatrix4x3fv(disp) ((disp)->UniformMatrix4x3fv)
+#define SET_UniformMatrix4x3fv(disp, fn) ((disp)->UniformMatrix4x3fv = fn)
+#define CALL_DrawArraysInstanced(disp, parameters) (*((disp)->DrawArraysInstanced)) parameters
+#define GET_DrawArraysInstanced(disp) ((disp)->DrawArraysInstanced)
+#define SET_DrawArraysInstanced(disp, fn) ((disp)->DrawArraysInstanced = fn)
+#define CALL_DrawElementsInstanced(disp, parameters) (*((disp)->DrawElementsInstanced)) parameters
+#define GET_DrawElementsInstanced(disp) ((disp)->DrawElementsInstanced)
+#define SET_DrawElementsInstanced(disp, fn) ((disp)->DrawElementsInstanced = fn)
+#define CALL_LoadTransposeMatrixdARB(disp, parameters) (*((disp)->LoadTransposeMatrixdARB)) parameters
+#define GET_LoadTransposeMatrixdARB(disp) ((disp)->LoadTransposeMatrixdARB)
+#define SET_LoadTransposeMatrixdARB(disp, fn) ((disp)->LoadTransposeMatrixdARB = fn)
+#define CALL_LoadTransposeMatrixfARB(disp, parameters) (*((disp)->LoadTransposeMatrixfARB)) parameters
+#define GET_LoadTransposeMatrixfARB(disp) ((disp)->LoadTransposeMatrixfARB)
+#define SET_LoadTransposeMatrixfARB(disp, fn) ((disp)->LoadTransposeMatrixfARB = fn)
+#define CALL_MultTransposeMatrixdARB(disp, parameters) (*((disp)->MultTransposeMatrixdARB)) parameters
+#define GET_MultTransposeMatrixdARB(disp) ((disp)->MultTransposeMatrixdARB)
+#define SET_MultTransposeMatrixdARB(disp, fn) ((disp)->MultTransposeMatrixdARB = fn)
+#define CALL_MultTransposeMatrixfARB(disp, parameters) (*((disp)->MultTransposeMatrixfARB)) parameters
+#define GET_MultTransposeMatrixfARB(disp) ((disp)->MultTransposeMatrixfARB)
+#define SET_MultTransposeMatrixfARB(disp, fn) ((disp)->MultTransposeMatrixfARB = fn)
+#define CALL_SampleCoverageARB(disp, parameters) (*((disp)->SampleCoverageARB)) parameters
+#define GET_SampleCoverageARB(disp) ((disp)->SampleCoverageARB)
+#define SET_SampleCoverageARB(disp, fn) ((disp)->SampleCoverageARB = fn)
+#define CALL_CompressedTexImage1DARB(disp, parameters) (*((disp)->CompressedTexImage1DARB)) parameters
+#define GET_CompressedTexImage1DARB(disp) ((disp)->CompressedTexImage1DARB)
+#define SET_CompressedTexImage1DARB(disp, fn) ((disp)->CompressedTexImage1DARB = fn)
+#define CALL_CompressedTexImage2DARB(disp, parameters) (*((disp)->CompressedTexImage2DARB)) parameters
+#define GET_CompressedTexImage2DARB(disp) ((disp)->CompressedTexImage2DARB)
+#define SET_CompressedTexImage2DARB(disp, fn) ((disp)->CompressedTexImage2DARB = fn)
+#define CALL_CompressedTexImage3DARB(disp, parameters) (*((disp)->CompressedTexImage3DARB)) parameters
+#define GET_CompressedTexImage3DARB(disp) ((disp)->CompressedTexImage3DARB)
+#define SET_CompressedTexImage3DARB(disp, fn) ((disp)->CompressedTexImage3DARB = fn)
+#define CALL_CompressedTexSubImage1DARB(disp, parameters) (*((disp)->CompressedTexSubImage1DARB)) parameters
+#define GET_CompressedTexSubImage1DARB(disp) ((disp)->CompressedTexSubImage1DARB)
+#define SET_CompressedTexSubImage1DARB(disp, fn) ((disp)->CompressedTexSubImage1DARB = fn)
+#define CALL_CompressedTexSubImage2DARB(disp, parameters) (*((disp)->CompressedTexSubImage2DARB)) parameters
+#define GET_CompressedTexSubImage2DARB(disp) ((disp)->CompressedTexSubImage2DARB)
+#define SET_CompressedTexSubImage2DARB(disp, fn) ((disp)->CompressedTexSubImage2DARB = fn)
+#define CALL_CompressedTexSubImage3DARB(disp, parameters) (*((disp)->CompressedTexSubImage3DARB)) parameters
+#define GET_CompressedTexSubImage3DARB(disp) ((disp)->CompressedTexSubImage3DARB)
+#define SET_CompressedTexSubImage3DARB(disp, fn) ((disp)->CompressedTexSubImage3DARB = fn)
+#define CALL_GetCompressedTexImageARB(disp, parameters) (*((disp)->GetCompressedTexImageARB)) parameters
+#define GET_GetCompressedTexImageARB(disp) ((disp)->GetCompressedTexImageARB)
+#define SET_GetCompressedTexImageARB(disp, fn) ((disp)->GetCompressedTexImageARB = fn)
+#define CALL_DisableVertexAttribArrayARB(disp, parameters) (*((disp)->DisableVertexAttribArrayARB)) parameters
+#define GET_DisableVertexAttribArrayARB(disp) ((disp)->DisableVertexAttribArrayARB)
+#define SET_DisableVertexAttribArrayARB(disp, fn) ((disp)->DisableVertexAttribArrayARB = fn)
+#define CALL_EnableVertexAttribArrayARB(disp, parameters) (*((disp)->EnableVertexAttribArrayARB)) parameters
+#define GET_EnableVertexAttribArrayARB(disp) ((disp)->EnableVertexAttribArrayARB)
+#define SET_EnableVertexAttribArrayARB(disp, fn) ((disp)->EnableVertexAttribArrayARB = fn)
+#define CALL_GetProgramEnvParameterdvARB(disp, parameters) (*((disp)->GetProgramEnvParameterdvARB)) parameters
+#define GET_GetProgramEnvParameterdvARB(disp) ((disp)->GetProgramEnvParameterdvARB)
+#define SET_GetProgramEnvParameterdvARB(disp, fn) ((disp)->GetProgramEnvParameterdvARB = fn)
+#define CALL_GetProgramEnvParameterfvARB(disp, parameters) (*((disp)->GetProgramEnvParameterfvARB)) parameters
+#define GET_GetProgramEnvParameterfvARB(disp) ((disp)->GetProgramEnvParameterfvARB)
+#define SET_GetProgramEnvParameterfvARB(disp, fn) ((disp)->GetProgramEnvParameterfvARB = fn)
+#define CALL_GetProgramLocalParameterdvARB(disp, parameters) (*((disp)->GetProgramLocalParameterdvARB)) parameters
+#define GET_GetProgramLocalParameterdvARB(disp) ((disp)->GetProgramLocalParameterdvARB)
+#define SET_GetProgramLocalParameterdvARB(disp, fn) ((disp)->GetProgramLocalParameterdvARB = fn)
+#define CALL_GetProgramLocalParameterfvARB(disp, parameters) (*((disp)->GetProgramLocalParameterfvARB)) parameters
+#define GET_GetProgramLocalParameterfvARB(disp) ((disp)->GetProgramLocalParameterfvARB)
+#define SET_GetProgramLocalParameterfvARB(disp, fn) ((disp)->GetProgramLocalParameterfvARB = fn)
+#define CALL_GetProgramStringARB(disp, parameters) (*((disp)->GetProgramStringARB)) parameters
+#define GET_GetProgramStringARB(disp) ((disp)->GetProgramStringARB)
+#define SET_GetProgramStringARB(disp, fn) ((disp)->GetProgramStringARB = fn)
+#define CALL_GetProgramivARB(disp, parameters) (*((disp)->GetProgramivARB)) parameters
+#define GET_GetProgramivARB(disp) ((disp)->GetProgramivARB)
+#define SET_GetProgramivARB(disp, fn) ((disp)->GetProgramivARB = fn)
+#define CALL_GetVertexAttribdvARB(disp, parameters) (*((disp)->GetVertexAttribdvARB)) parameters
+#define GET_GetVertexAttribdvARB(disp) ((disp)->GetVertexAttribdvARB)
+#define SET_GetVertexAttribdvARB(disp, fn) ((disp)->GetVertexAttribdvARB = fn)
+#define CALL_GetVertexAttribfvARB(disp, parameters) (*((disp)->GetVertexAttribfvARB)) parameters
+#define GET_GetVertexAttribfvARB(disp) ((disp)->GetVertexAttribfvARB)
+#define SET_GetVertexAttribfvARB(disp, fn) ((disp)->GetVertexAttribfvARB = fn)
+#define CALL_GetVertexAttribivARB(disp, parameters) (*((disp)->GetVertexAttribivARB)) parameters
+#define GET_GetVertexAttribivARB(disp) ((disp)->GetVertexAttribivARB)
+#define SET_GetVertexAttribivARB(disp, fn) ((disp)->GetVertexAttribivARB = fn)
+#define CALL_ProgramEnvParameter4dARB(disp, parameters) (*((disp)->ProgramEnvParameter4dARB)) parameters
+#define GET_ProgramEnvParameter4dARB(disp) ((disp)->ProgramEnvParameter4dARB)
+#define SET_ProgramEnvParameter4dARB(disp, fn) ((disp)->ProgramEnvParameter4dARB = fn)
+#define CALL_ProgramEnvParameter4dvARB(disp, parameters) (*((disp)->ProgramEnvParameter4dvARB)) parameters
+#define GET_ProgramEnvParameter4dvARB(disp) ((disp)->ProgramEnvParameter4dvARB)
+#define SET_ProgramEnvParameter4dvARB(disp, fn) ((disp)->ProgramEnvParameter4dvARB = fn)
+#define CALL_ProgramEnvParameter4fARB(disp, parameters) (*((disp)->ProgramEnvParameter4fARB)) parameters
+#define GET_ProgramEnvParameter4fARB(disp) ((disp)->ProgramEnvParameter4fARB)
+#define SET_ProgramEnvParameter4fARB(disp, fn) ((disp)->ProgramEnvParameter4fARB = fn)
+#define CALL_ProgramEnvParameter4fvARB(disp, parameters) (*((disp)->ProgramEnvParameter4fvARB)) parameters
+#define GET_ProgramEnvParameter4fvARB(disp) ((disp)->ProgramEnvParameter4fvARB)
+#define SET_ProgramEnvParameter4fvARB(disp, fn) ((disp)->ProgramEnvParameter4fvARB = fn)
+#define CALL_ProgramLocalParameter4dARB(disp, parameters) (*((disp)->ProgramLocalParameter4dARB)) parameters
+#define GET_ProgramLocalParameter4dARB(disp) ((disp)->ProgramLocalParameter4dARB)
+#define SET_ProgramLocalParameter4dARB(disp, fn) ((disp)->ProgramLocalParameter4dARB = fn)
+#define CALL_ProgramLocalParameter4dvARB(disp, parameters) (*((disp)->ProgramLocalParameter4dvARB)) parameters
+#define GET_ProgramLocalParameter4dvARB(disp) ((disp)->ProgramLocalParameter4dvARB)
+#define SET_ProgramLocalParameter4dvARB(disp, fn) ((disp)->ProgramLocalParameter4dvARB = fn)
+#define CALL_ProgramLocalParameter4fARB(disp, parameters) (*((disp)->ProgramLocalParameter4fARB)) parameters
+#define GET_ProgramLocalParameter4fARB(disp) ((disp)->ProgramLocalParameter4fARB)
+#define SET_ProgramLocalParameter4fARB(disp, fn) ((disp)->ProgramLocalParameter4fARB = fn)
+#define CALL_ProgramLocalParameter4fvARB(disp, parameters) (*((disp)->ProgramLocalParameter4fvARB)) parameters
+#define GET_ProgramLocalParameter4fvARB(disp) ((disp)->ProgramLocalParameter4fvARB)
+#define SET_ProgramLocalParameter4fvARB(disp, fn) ((disp)->ProgramLocalParameter4fvARB = fn)
+#define CALL_ProgramStringARB(disp, parameters) (*((disp)->ProgramStringARB)) parameters
+#define GET_ProgramStringARB(disp) ((disp)->ProgramStringARB)
+#define SET_ProgramStringARB(disp, fn) ((disp)->ProgramStringARB = fn)
+#define CALL_VertexAttrib1dARB(disp, parameters) (*((disp)->VertexAttrib1dARB)) parameters
+#define GET_VertexAttrib1dARB(disp) ((disp)->VertexAttrib1dARB)
+#define SET_VertexAttrib1dARB(disp, fn) ((disp)->VertexAttrib1dARB = fn)
+#define CALL_VertexAttrib1dvARB(disp, parameters) (*((disp)->VertexAttrib1dvARB)) parameters
+#define GET_VertexAttrib1dvARB(disp) ((disp)->VertexAttrib1dvARB)
+#define SET_VertexAttrib1dvARB(disp, fn) ((disp)->VertexAttrib1dvARB = fn)
+#define CALL_VertexAttrib1fARB(disp, parameters) (*((disp)->VertexAttrib1fARB)) parameters
+#define GET_VertexAttrib1fARB(disp) ((disp)->VertexAttrib1fARB)
+#define SET_VertexAttrib1fARB(disp, fn) ((disp)->VertexAttrib1fARB = fn)
+#define CALL_VertexAttrib1fvARB(disp, parameters) (*((disp)->VertexAttrib1fvARB)) parameters
+#define GET_VertexAttrib1fvARB(disp) ((disp)->VertexAttrib1fvARB)
+#define SET_VertexAttrib1fvARB(disp, fn) ((disp)->VertexAttrib1fvARB = fn)
+#define CALL_VertexAttrib1sARB(disp, parameters) (*((disp)->VertexAttrib1sARB)) parameters
+#define GET_VertexAttrib1sARB(disp) ((disp)->VertexAttrib1sARB)
+#define SET_VertexAttrib1sARB(disp, fn) ((disp)->VertexAttrib1sARB = fn)
+#define CALL_VertexAttrib1svARB(disp, parameters) (*((disp)->VertexAttrib1svARB)) parameters
+#define GET_VertexAttrib1svARB(disp) ((disp)->VertexAttrib1svARB)
+#define SET_VertexAttrib1svARB(disp, fn) ((disp)->VertexAttrib1svARB = fn)
+#define CALL_VertexAttrib2dARB(disp, parameters) (*((disp)->VertexAttrib2dARB)) parameters
+#define GET_VertexAttrib2dARB(disp) ((disp)->VertexAttrib2dARB)
+#define SET_VertexAttrib2dARB(disp, fn) ((disp)->VertexAttrib2dARB = fn)
+#define CALL_VertexAttrib2dvARB(disp, parameters) (*((disp)->VertexAttrib2dvARB)) parameters
+#define GET_VertexAttrib2dvARB(disp) ((disp)->VertexAttrib2dvARB)
+#define SET_VertexAttrib2dvARB(disp, fn) ((disp)->VertexAttrib2dvARB = fn)
+#define CALL_VertexAttrib2fARB(disp, parameters) (*((disp)->VertexAttrib2fARB)) parameters
+#define GET_VertexAttrib2fARB(disp) ((disp)->VertexAttrib2fARB)
+#define SET_VertexAttrib2fARB(disp, fn) ((disp)->VertexAttrib2fARB = fn)
+#define CALL_VertexAttrib2fvARB(disp, parameters) (*((disp)->VertexAttrib2fvARB)) parameters
+#define GET_VertexAttrib2fvARB(disp) ((disp)->VertexAttrib2fvARB)
+#define SET_VertexAttrib2fvARB(disp, fn) ((disp)->VertexAttrib2fvARB = fn)
+#define CALL_VertexAttrib2sARB(disp, parameters) (*((disp)->VertexAttrib2sARB)) parameters
+#define GET_VertexAttrib2sARB(disp) ((disp)->VertexAttrib2sARB)
+#define SET_VertexAttrib2sARB(disp, fn) ((disp)->VertexAttrib2sARB = fn)
+#define CALL_VertexAttrib2svARB(disp, parameters) (*((disp)->VertexAttrib2svARB)) parameters
+#define GET_VertexAttrib2svARB(disp) ((disp)->VertexAttrib2svARB)
+#define SET_VertexAttrib2svARB(disp, fn) ((disp)->VertexAttrib2svARB = fn)
+#define CALL_VertexAttrib3dARB(disp, parameters) (*((disp)->VertexAttrib3dARB)) parameters
+#define GET_VertexAttrib3dARB(disp) ((disp)->VertexAttrib3dARB)
+#define SET_VertexAttrib3dARB(disp, fn) ((disp)->VertexAttrib3dARB = fn)
+#define CALL_VertexAttrib3dvARB(disp, parameters) (*((disp)->VertexAttrib3dvARB)) parameters
+#define GET_VertexAttrib3dvARB(disp) ((disp)->VertexAttrib3dvARB)
+#define SET_VertexAttrib3dvARB(disp, fn) ((disp)->VertexAttrib3dvARB = fn)
+#define CALL_VertexAttrib3fARB(disp, parameters) (*((disp)->VertexAttrib3fARB)) parameters
+#define GET_VertexAttrib3fARB(disp) ((disp)->VertexAttrib3fARB)
+#define SET_VertexAttrib3fARB(disp, fn) ((disp)->VertexAttrib3fARB = fn)
+#define CALL_VertexAttrib3fvARB(disp, parameters) (*((disp)->VertexAttrib3fvARB)) parameters
+#define GET_VertexAttrib3fvARB(disp) ((disp)->VertexAttrib3fvARB)
+#define SET_VertexAttrib3fvARB(disp, fn) ((disp)->VertexAttrib3fvARB = fn)
+#define CALL_VertexAttrib3sARB(disp, parameters) (*((disp)->VertexAttrib3sARB)) parameters
+#define GET_VertexAttrib3sARB(disp) ((disp)->VertexAttrib3sARB)
+#define SET_VertexAttrib3sARB(disp, fn) ((disp)->VertexAttrib3sARB = fn)
+#define CALL_VertexAttrib3svARB(disp, parameters) (*((disp)->VertexAttrib3svARB)) parameters
+#define GET_VertexAttrib3svARB(disp) ((disp)->VertexAttrib3svARB)
+#define SET_VertexAttrib3svARB(disp, fn) ((disp)->VertexAttrib3svARB = fn)
+#define CALL_VertexAttrib4NbvARB(disp, parameters) (*((disp)->VertexAttrib4NbvARB)) parameters
+#define GET_VertexAttrib4NbvARB(disp) ((disp)->VertexAttrib4NbvARB)
+#define SET_VertexAttrib4NbvARB(disp, fn) ((disp)->VertexAttrib4NbvARB = fn)
+#define CALL_VertexAttrib4NivARB(disp, parameters) (*((disp)->VertexAttrib4NivARB)) parameters
+#define GET_VertexAttrib4NivARB(disp) ((disp)->VertexAttrib4NivARB)
+#define SET_VertexAttrib4NivARB(disp, fn) ((disp)->VertexAttrib4NivARB = fn)
+#define CALL_VertexAttrib4NsvARB(disp, parameters) (*((disp)->VertexAttrib4NsvARB)) parameters
+#define GET_VertexAttrib4NsvARB(disp) ((disp)->VertexAttrib4NsvARB)
+#define SET_VertexAttrib4NsvARB(disp, fn) ((disp)->VertexAttrib4NsvARB = fn)
+#define CALL_VertexAttrib4NubARB(disp, parameters) (*((disp)->VertexAttrib4NubARB)) parameters
+#define GET_VertexAttrib4NubARB(disp) ((disp)->VertexAttrib4NubARB)
+#define SET_VertexAttrib4NubARB(disp, fn) ((disp)->VertexAttrib4NubARB = fn)
+#define CALL_VertexAttrib4NubvARB(disp, parameters) (*((disp)->VertexAttrib4NubvARB)) parameters
+#define GET_VertexAttrib4NubvARB(disp) ((disp)->VertexAttrib4NubvARB)
+#define SET_VertexAttrib4NubvARB(disp, fn) ((disp)->VertexAttrib4NubvARB = fn)
+#define CALL_VertexAttrib4NuivARB(disp, parameters) (*((disp)->VertexAttrib4NuivARB)) parameters
+#define GET_VertexAttrib4NuivARB(disp) ((disp)->VertexAttrib4NuivARB)
+#define SET_VertexAttrib4NuivARB(disp, fn) ((disp)->VertexAttrib4NuivARB = fn)
+#define CALL_VertexAttrib4NusvARB(disp, parameters) (*((disp)->VertexAttrib4NusvARB)) parameters
+#define GET_VertexAttrib4NusvARB(disp) ((disp)->VertexAttrib4NusvARB)
+#define SET_VertexAttrib4NusvARB(disp, fn) ((disp)->VertexAttrib4NusvARB = fn)
+#define CALL_VertexAttrib4bvARB(disp, parameters) (*((disp)->VertexAttrib4bvARB)) parameters
+#define GET_VertexAttrib4bvARB(disp) ((disp)->VertexAttrib4bvARB)
+#define SET_VertexAttrib4bvARB(disp, fn) ((disp)->VertexAttrib4bvARB = fn)
+#define CALL_VertexAttrib4dARB(disp, parameters) (*((disp)->VertexAttrib4dARB)) parameters
+#define GET_VertexAttrib4dARB(disp) ((disp)->VertexAttrib4dARB)
+#define SET_VertexAttrib4dARB(disp, fn) ((disp)->VertexAttrib4dARB = fn)
+#define CALL_VertexAttrib4dvARB(disp, parameters) (*((disp)->VertexAttrib4dvARB)) parameters
+#define GET_VertexAttrib4dvARB(disp) ((disp)->VertexAttrib4dvARB)
+#define SET_VertexAttrib4dvARB(disp, fn) ((disp)->VertexAttrib4dvARB = fn)
+#define CALL_VertexAttrib4fARB(disp, parameters) (*((disp)->VertexAttrib4fARB)) parameters
+#define GET_VertexAttrib4fARB(disp) ((disp)->VertexAttrib4fARB)
+#define SET_VertexAttrib4fARB(disp, fn) ((disp)->VertexAttrib4fARB = fn)
+#define CALL_VertexAttrib4fvARB(disp, parameters) (*((disp)->VertexAttrib4fvARB)) parameters
+#define GET_VertexAttrib4fvARB(disp) ((disp)->VertexAttrib4fvARB)
+#define SET_VertexAttrib4fvARB(disp, fn) ((disp)->VertexAttrib4fvARB = fn)
+#define CALL_VertexAttrib4ivARB(disp, parameters) (*((disp)->VertexAttrib4ivARB)) parameters
+#define GET_VertexAttrib4ivARB(disp) ((disp)->VertexAttrib4ivARB)
+#define SET_VertexAttrib4ivARB(disp, fn) ((disp)->VertexAttrib4ivARB = fn)
+#define CALL_VertexAttrib4sARB(disp, parameters) (*((disp)->VertexAttrib4sARB)) parameters
+#define GET_VertexAttrib4sARB(disp) ((disp)->VertexAttrib4sARB)
+#define SET_VertexAttrib4sARB(disp, fn) ((disp)->VertexAttrib4sARB = fn)
+#define CALL_VertexAttrib4svARB(disp, parameters) (*((disp)->VertexAttrib4svARB)) parameters
+#define GET_VertexAttrib4svARB(disp) ((disp)->VertexAttrib4svARB)
+#define SET_VertexAttrib4svARB(disp, fn) ((disp)->VertexAttrib4svARB = fn)
+#define CALL_VertexAttrib4ubvARB(disp, parameters) (*((disp)->VertexAttrib4ubvARB)) parameters
+#define GET_VertexAttrib4ubvARB(disp) ((disp)->VertexAttrib4ubvARB)
+#define SET_VertexAttrib4ubvARB(disp, fn) ((disp)->VertexAttrib4ubvARB = fn)
+#define CALL_VertexAttrib4uivARB(disp, parameters) (*((disp)->VertexAttrib4uivARB)) parameters
+#define GET_VertexAttrib4uivARB(disp) ((disp)->VertexAttrib4uivARB)
+#define SET_VertexAttrib4uivARB(disp, fn) ((disp)->VertexAttrib4uivARB = fn)
+#define CALL_VertexAttrib4usvARB(disp, parameters) (*((disp)->VertexAttrib4usvARB)) parameters
+#define GET_VertexAttrib4usvARB(disp) ((disp)->VertexAttrib4usvARB)
+#define SET_VertexAttrib4usvARB(disp, fn) ((disp)->VertexAttrib4usvARB = fn)
+#define CALL_VertexAttribPointerARB(disp, parameters) (*((disp)->VertexAttribPointerARB)) parameters
+#define GET_VertexAttribPointerARB(disp) ((disp)->VertexAttribPointerARB)
+#define SET_VertexAttribPointerARB(disp, fn) ((disp)->VertexAttribPointerARB = fn)
+#define CALL_BindBufferARB(disp, parameters) (*((disp)->BindBufferARB)) parameters
+#define GET_BindBufferARB(disp) ((disp)->BindBufferARB)
+#define SET_BindBufferARB(disp, fn) ((disp)->BindBufferARB = fn)
+#define CALL_BufferDataARB(disp, parameters) (*((disp)->BufferDataARB)) parameters
+#define GET_BufferDataARB(disp) ((disp)->BufferDataARB)
+#define SET_BufferDataARB(disp, fn) ((disp)->BufferDataARB = fn)
+#define CALL_BufferSubDataARB(disp, parameters) (*((disp)->BufferSubDataARB)) parameters
+#define GET_BufferSubDataARB(disp) ((disp)->BufferSubDataARB)
+#define SET_BufferSubDataARB(disp, fn) ((disp)->BufferSubDataARB = fn)
+#define CALL_DeleteBuffersARB(disp, parameters) (*((disp)->DeleteBuffersARB)) parameters
+#define GET_DeleteBuffersARB(disp) ((disp)->DeleteBuffersARB)
+#define SET_DeleteBuffersARB(disp, fn) ((disp)->DeleteBuffersARB = fn)
+#define CALL_GenBuffersARB(disp, parameters) (*((disp)->GenBuffersARB)) parameters
+#define GET_GenBuffersARB(disp) ((disp)->GenBuffersARB)
+#define SET_GenBuffersARB(disp, fn) ((disp)->GenBuffersARB = fn)
+#define CALL_GetBufferParameterivARB(disp, parameters) (*((disp)->GetBufferParameterivARB)) parameters
+#define GET_GetBufferParameterivARB(disp) ((disp)->GetBufferParameterivARB)
+#define SET_GetBufferParameterivARB(disp, fn) ((disp)->GetBufferParameterivARB = fn)
+#define CALL_GetBufferPointervARB(disp, parameters) (*((disp)->GetBufferPointervARB)) parameters
+#define GET_GetBufferPointervARB(disp) ((disp)->GetBufferPointervARB)
+#define SET_GetBufferPointervARB(disp, fn) ((disp)->GetBufferPointervARB = fn)
+#define CALL_GetBufferSubDataARB(disp, parameters) (*((disp)->GetBufferSubDataARB)) parameters
+#define GET_GetBufferSubDataARB(disp) ((disp)->GetBufferSubDataARB)
+#define SET_GetBufferSubDataARB(disp, fn) ((disp)->GetBufferSubDataARB = fn)
+#define CALL_IsBufferARB(disp, parameters) (*((disp)->IsBufferARB)) parameters
+#define GET_IsBufferARB(disp) ((disp)->IsBufferARB)
+#define SET_IsBufferARB(disp, fn) ((disp)->IsBufferARB = fn)
+#define CALL_MapBufferARB(disp, parameters) (*((disp)->MapBufferARB)) parameters
+#define GET_MapBufferARB(disp) ((disp)->MapBufferARB)
+#define SET_MapBufferARB(disp, fn) ((disp)->MapBufferARB = fn)
+#define CALL_UnmapBufferARB(disp, parameters) (*((disp)->UnmapBufferARB)) parameters
+#define GET_UnmapBufferARB(disp) ((disp)->UnmapBufferARB)
+#define SET_UnmapBufferARB(disp, fn) ((disp)->UnmapBufferARB = fn)
+#define CALL_BeginQueryARB(disp, parameters) (*((disp)->BeginQueryARB)) parameters
+#define GET_BeginQueryARB(disp) ((disp)->BeginQueryARB)
+#define SET_BeginQueryARB(disp, fn) ((disp)->BeginQueryARB = fn)
+#define CALL_DeleteQueriesARB(disp, parameters) (*((disp)->DeleteQueriesARB)) parameters
+#define GET_DeleteQueriesARB(disp) ((disp)->DeleteQueriesARB)
+#define SET_DeleteQueriesARB(disp, fn) ((disp)->DeleteQueriesARB = fn)
+#define CALL_EndQueryARB(disp, parameters) (*((disp)->EndQueryARB)) parameters
+#define GET_EndQueryARB(disp) ((disp)->EndQueryARB)
+#define SET_EndQueryARB(disp, fn) ((disp)->EndQueryARB = fn)
+#define CALL_GenQueriesARB(disp, parameters) (*((disp)->GenQueriesARB)) parameters
+#define GET_GenQueriesARB(disp) ((disp)->GenQueriesARB)
+#define SET_GenQueriesARB(disp, fn) ((disp)->GenQueriesARB = fn)
+#define CALL_GetQueryObjectivARB(disp, parameters) (*((disp)->GetQueryObjectivARB)) parameters
+#define GET_GetQueryObjectivARB(disp) ((disp)->GetQueryObjectivARB)
+#define SET_GetQueryObjectivARB(disp, fn) ((disp)->GetQueryObjectivARB = fn)
+#define CALL_GetQueryObjectuivARB(disp, parameters) (*((disp)->GetQueryObjectuivARB)) parameters
+#define GET_GetQueryObjectuivARB(disp) ((disp)->GetQueryObjectuivARB)
+#define SET_GetQueryObjectuivARB(disp, fn) ((disp)->GetQueryObjectuivARB = fn)
+#define CALL_GetQueryivARB(disp, parameters) (*((disp)->GetQueryivARB)) parameters
+#define GET_GetQueryivARB(disp) ((disp)->GetQueryivARB)
+#define SET_GetQueryivARB(disp, fn) ((disp)->GetQueryivARB = fn)
+#define CALL_IsQueryARB(disp, parameters) (*((disp)->IsQueryARB)) parameters
+#define GET_IsQueryARB(disp) ((disp)->IsQueryARB)
+#define SET_IsQueryARB(disp, fn) ((disp)->IsQueryARB = fn)
+#define CALL_AttachObjectARB(disp, parameters) (*((disp)->AttachObjectARB)) parameters
+#define GET_AttachObjectARB(disp) ((disp)->AttachObjectARB)
+#define SET_AttachObjectARB(disp, fn) ((disp)->AttachObjectARB = fn)
+#define CALL_CompileShaderARB(disp, parameters) (*((disp)->CompileShaderARB)) parameters
+#define GET_CompileShaderARB(disp) ((disp)->CompileShaderARB)
+#define SET_CompileShaderARB(disp, fn) ((disp)->CompileShaderARB = fn)
+#define CALL_CreateProgramObjectARB(disp, parameters) (*((disp)->CreateProgramObjectARB)) parameters
+#define GET_CreateProgramObjectARB(disp) ((disp)->CreateProgramObjectARB)
+#define SET_CreateProgramObjectARB(disp, fn) ((disp)->CreateProgramObjectARB = fn)
+#define CALL_CreateShaderObjectARB(disp, parameters) (*((disp)->CreateShaderObjectARB)) parameters
+#define GET_CreateShaderObjectARB(disp) ((disp)->CreateShaderObjectARB)
+#define SET_CreateShaderObjectARB(disp, fn) ((disp)->CreateShaderObjectARB = fn)
+#define CALL_DeleteObjectARB(disp, parameters) (*((disp)->DeleteObjectARB)) parameters
+#define GET_DeleteObjectARB(disp) ((disp)->DeleteObjectARB)
+#define SET_DeleteObjectARB(disp, fn) ((disp)->DeleteObjectARB = fn)
+#define CALL_DetachObjectARB(disp, parameters) (*((disp)->DetachObjectARB)) parameters
+#define GET_DetachObjectARB(disp) ((disp)->DetachObjectARB)
+#define SET_DetachObjectARB(disp, fn) ((disp)->DetachObjectARB = fn)
+#define CALL_GetActiveUniformARB(disp, parameters) (*((disp)->GetActiveUniformARB)) parameters
+#define GET_GetActiveUniformARB(disp) ((disp)->GetActiveUniformARB)
+#define SET_GetActiveUniformARB(disp, fn) ((disp)->GetActiveUniformARB = fn)
+#define CALL_GetAttachedObjectsARB(disp, parameters) (*((disp)->GetAttachedObjectsARB)) parameters
+#define GET_GetAttachedObjectsARB(disp) ((disp)->GetAttachedObjectsARB)
+#define SET_GetAttachedObjectsARB(disp, fn) ((disp)->GetAttachedObjectsARB = fn)
+#define CALL_GetHandleARB(disp, parameters) (*((disp)->GetHandleARB)) parameters
+#define GET_GetHandleARB(disp) ((disp)->GetHandleARB)
+#define SET_GetHandleARB(disp, fn) ((disp)->GetHandleARB = fn)
+#define CALL_GetInfoLogARB(disp, parameters) (*((disp)->GetInfoLogARB)) parameters
+#define GET_GetInfoLogARB(disp) ((disp)->GetInfoLogARB)
+#define SET_GetInfoLogARB(disp, fn) ((disp)->GetInfoLogARB = fn)
+#define CALL_GetObjectParameterfvARB(disp, parameters) (*((disp)->GetObjectParameterfvARB)) parameters
+#define GET_GetObjectParameterfvARB(disp) ((disp)->GetObjectParameterfvARB)
+#define SET_GetObjectParameterfvARB(disp, fn) ((disp)->GetObjectParameterfvARB = fn)
+#define CALL_GetObjectParameterivARB(disp, parameters) (*((disp)->GetObjectParameterivARB)) parameters
+#define GET_GetObjectParameterivARB(disp) ((disp)->GetObjectParameterivARB)
+#define SET_GetObjectParameterivARB(disp, fn) ((disp)->GetObjectParameterivARB = fn)
+#define CALL_GetShaderSourceARB(disp, parameters) (*((disp)->GetShaderSourceARB)) parameters
+#define GET_GetShaderSourceARB(disp) ((disp)->GetShaderSourceARB)
+#define SET_GetShaderSourceARB(disp, fn) ((disp)->GetShaderSourceARB = fn)
+#define CALL_GetUniformLocationARB(disp, parameters) (*((disp)->GetUniformLocationARB)) parameters
+#define GET_GetUniformLocationARB(disp) ((disp)->GetUniformLocationARB)
+#define SET_GetUniformLocationARB(disp, fn) ((disp)->GetUniformLocationARB = fn)
+#define CALL_GetUniformfvARB(disp, parameters) (*((disp)->GetUniformfvARB)) parameters
+#define GET_GetUniformfvARB(disp) ((disp)->GetUniformfvARB)
+#define SET_GetUniformfvARB(disp, fn) ((disp)->GetUniformfvARB = fn)
+#define CALL_GetUniformivARB(disp, parameters) (*((disp)->GetUniformivARB)) parameters
+#define GET_GetUniformivARB(disp) ((disp)->GetUniformivARB)
+#define SET_GetUniformivARB(disp, fn) ((disp)->GetUniformivARB = fn)
+#define CALL_LinkProgramARB(disp, parameters) (*((disp)->LinkProgramARB)) parameters
+#define GET_LinkProgramARB(disp) ((disp)->LinkProgramARB)
+#define SET_LinkProgramARB(disp, fn) ((disp)->LinkProgramARB = fn)
+#define CALL_ShaderSourceARB(disp, parameters) (*((disp)->ShaderSourceARB)) parameters
+#define GET_ShaderSourceARB(disp) ((disp)->ShaderSourceARB)
+#define SET_ShaderSourceARB(disp, fn) ((disp)->ShaderSourceARB = fn)
+#define CALL_Uniform1fARB(disp, parameters) (*((disp)->Uniform1fARB)) parameters
+#define GET_Uniform1fARB(disp) ((disp)->Uniform1fARB)
+#define SET_Uniform1fARB(disp, fn) ((disp)->Uniform1fARB = fn)
+#define CALL_Uniform1fvARB(disp, parameters) (*((disp)->Uniform1fvARB)) parameters
+#define GET_Uniform1fvARB(disp) ((disp)->Uniform1fvARB)
+#define SET_Uniform1fvARB(disp, fn) ((disp)->Uniform1fvARB = fn)
+#define CALL_Uniform1iARB(disp, parameters) (*((disp)->Uniform1iARB)) parameters
+#define GET_Uniform1iARB(disp) ((disp)->Uniform1iARB)
+#define SET_Uniform1iARB(disp, fn) ((disp)->Uniform1iARB = fn)
+#define CALL_Uniform1ivARB(disp, parameters) (*((disp)->Uniform1ivARB)) parameters
+#define GET_Uniform1ivARB(disp) ((disp)->Uniform1ivARB)
+#define SET_Uniform1ivARB(disp, fn) ((disp)->Uniform1ivARB = fn)
+#define CALL_Uniform2fARB(disp, parameters) (*((disp)->Uniform2fARB)) parameters
+#define GET_Uniform2fARB(disp) ((disp)->Uniform2fARB)
+#define SET_Uniform2fARB(disp, fn) ((disp)->Uniform2fARB = fn)
+#define CALL_Uniform2fvARB(disp, parameters) (*((disp)->Uniform2fvARB)) parameters
+#define GET_Uniform2fvARB(disp) ((disp)->Uniform2fvARB)
+#define SET_Uniform2fvARB(disp, fn) ((disp)->Uniform2fvARB = fn)
+#define CALL_Uniform2iARB(disp, parameters) (*((disp)->Uniform2iARB)) parameters
+#define GET_Uniform2iARB(disp) ((disp)->Uniform2iARB)
+#define SET_Uniform2iARB(disp, fn) ((disp)->Uniform2iARB = fn)
+#define CALL_Uniform2ivARB(disp, parameters) (*((disp)->Uniform2ivARB)) parameters
+#define GET_Uniform2ivARB(disp) ((disp)->Uniform2ivARB)
+#define SET_Uniform2ivARB(disp, fn) ((disp)->Uniform2ivARB = fn)
+#define CALL_Uniform3fARB(disp, parameters) (*((disp)->Uniform3fARB)) parameters
+#define GET_Uniform3fARB(disp) ((disp)->Uniform3fARB)
+#define SET_Uniform3fARB(disp, fn) ((disp)->Uniform3fARB = fn)
+#define CALL_Uniform3fvARB(disp, parameters) (*((disp)->Uniform3fvARB)) parameters
+#define GET_Uniform3fvARB(disp) ((disp)->Uniform3fvARB)
+#define SET_Uniform3fvARB(disp, fn) ((disp)->Uniform3fvARB = fn)
+#define CALL_Uniform3iARB(disp, parameters) (*((disp)->Uniform3iARB)) parameters
+#define GET_Uniform3iARB(disp) ((disp)->Uniform3iARB)
+#define SET_Uniform3iARB(disp, fn) ((disp)->Uniform3iARB = fn)
+#define CALL_Uniform3ivARB(disp, parameters) (*((disp)->Uniform3ivARB)) parameters
+#define GET_Uniform3ivARB(disp) ((disp)->Uniform3ivARB)
+#define SET_Uniform3ivARB(disp, fn) ((disp)->Uniform3ivARB = fn)
+#define CALL_Uniform4fARB(disp, parameters) (*((disp)->Uniform4fARB)) parameters
+#define GET_Uniform4fARB(disp) ((disp)->Uniform4fARB)
+#define SET_Uniform4fARB(disp, fn) ((disp)->Uniform4fARB = fn)
+#define CALL_Uniform4fvARB(disp, parameters) (*((disp)->Uniform4fvARB)) parameters
+#define GET_Uniform4fvARB(disp) ((disp)->Uniform4fvARB)
+#define SET_Uniform4fvARB(disp, fn) ((disp)->Uniform4fvARB = fn)
+#define CALL_Uniform4iARB(disp, parameters) (*((disp)->Uniform4iARB)) parameters
+#define GET_Uniform4iARB(disp) ((disp)->Uniform4iARB)
+#define SET_Uniform4iARB(disp, fn) ((disp)->Uniform4iARB = fn)
+#define CALL_Uniform4ivARB(disp, parameters) (*((disp)->Uniform4ivARB)) parameters
+#define GET_Uniform4ivARB(disp) ((disp)->Uniform4ivARB)
+#define SET_Uniform4ivARB(disp, fn) ((disp)->Uniform4ivARB = fn)
+#define CALL_UniformMatrix2fvARB(disp, parameters) (*((disp)->UniformMatrix2fvARB)) parameters
+#define GET_UniformMatrix2fvARB(disp) ((disp)->UniformMatrix2fvARB)
+#define SET_UniformMatrix2fvARB(disp, fn) ((disp)->UniformMatrix2fvARB = fn)
+#define CALL_UniformMatrix3fvARB(disp, parameters) (*((disp)->UniformMatrix3fvARB)) parameters
+#define GET_UniformMatrix3fvARB(disp) ((disp)->UniformMatrix3fvARB)
+#define SET_UniformMatrix3fvARB(disp, fn) ((disp)->UniformMatrix3fvARB = fn)
+#define CALL_UniformMatrix4fvARB(disp, parameters) (*((disp)->UniformMatrix4fvARB)) parameters
+#define GET_UniformMatrix4fvARB(disp) ((disp)->UniformMatrix4fvARB)
+#define SET_UniformMatrix4fvARB(disp, fn) ((disp)->UniformMatrix4fvARB = fn)
+#define CALL_UseProgramObjectARB(disp, parameters) (*((disp)->UseProgramObjectARB)) parameters
+#define GET_UseProgramObjectARB(disp) ((disp)->UseProgramObjectARB)
+#define SET_UseProgramObjectARB(disp, fn) ((disp)->UseProgramObjectARB = fn)
+#define CALL_ValidateProgramARB(disp, parameters) (*((disp)->ValidateProgramARB)) parameters
+#define GET_ValidateProgramARB(disp) ((disp)->ValidateProgramARB)
+#define SET_ValidateProgramARB(disp, fn) ((disp)->ValidateProgramARB = fn)
+#define CALL_BindAttribLocationARB(disp, parameters) (*((disp)->BindAttribLocationARB)) parameters
+#define GET_BindAttribLocationARB(disp) ((disp)->BindAttribLocationARB)
+#define SET_BindAttribLocationARB(disp, fn) ((disp)->BindAttribLocationARB = fn)
+#define CALL_GetActiveAttribARB(disp, parameters) (*((disp)->GetActiveAttribARB)) parameters
+#define GET_GetActiveAttribARB(disp) ((disp)->GetActiveAttribARB)
+#define SET_GetActiveAttribARB(disp, fn) ((disp)->GetActiveAttribARB = fn)
+#define CALL_GetAttribLocationARB(disp, parameters) (*((disp)->GetAttribLocationARB)) parameters
+#define GET_GetAttribLocationARB(disp) ((disp)->GetAttribLocationARB)
+#define SET_GetAttribLocationARB(disp, fn) ((disp)->GetAttribLocationARB = fn)
+#define CALL_DrawBuffersARB(disp, parameters) (*((disp)->DrawBuffersARB)) parameters
+#define GET_DrawBuffersARB(disp) ((disp)->DrawBuffersARB)
+#define SET_DrawBuffersARB(disp, fn) ((disp)->DrawBuffersARB = fn)
+#define CALL_RenderbufferStorageMultisample(disp, parameters) (*((disp)->RenderbufferStorageMultisample)) parameters
+#define GET_RenderbufferStorageMultisample(disp) ((disp)->RenderbufferStorageMultisample)
+#define SET_RenderbufferStorageMultisample(disp, fn) ((disp)->RenderbufferStorageMultisample = fn)
+#define CALL_FlushMappedBufferRange(disp, parameters) (*((disp)->FlushMappedBufferRange)) parameters
+#define GET_FlushMappedBufferRange(disp) ((disp)->FlushMappedBufferRange)
+#define SET_FlushMappedBufferRange(disp, fn) ((disp)->FlushMappedBufferRange = fn)
+#define CALL_MapBufferRange(disp, parameters) (*((disp)->MapBufferRange)) parameters
+#define GET_MapBufferRange(disp) ((disp)->MapBufferRange)
+#define SET_MapBufferRange(disp, fn) ((disp)->MapBufferRange = fn)
+#define CALL_BindVertexArray(disp, parameters) (*((disp)->BindVertexArray)) parameters
+#define GET_BindVertexArray(disp) ((disp)->BindVertexArray)
+#define SET_BindVertexArray(disp, fn) ((disp)->BindVertexArray = fn)
+#define CALL_GenVertexArrays(disp, parameters) (*((disp)->GenVertexArrays)) parameters
+#define GET_GenVertexArrays(disp) ((disp)->GenVertexArrays)
+#define SET_GenVertexArrays(disp, fn) ((disp)->GenVertexArrays = fn)
+#define CALL_CopyBufferSubData(disp, parameters) (*((disp)->CopyBufferSubData)) parameters
+#define GET_CopyBufferSubData(disp) ((disp)->CopyBufferSubData)
+#define SET_CopyBufferSubData(disp, fn) ((disp)->CopyBufferSubData = fn)
+#define CALL_ClientWaitSync(disp, parameters) (*((disp)->ClientWaitSync)) parameters
+#define GET_ClientWaitSync(disp) ((disp)->ClientWaitSync)
+#define SET_ClientWaitSync(disp, fn) ((disp)->ClientWaitSync = fn)
+#define CALL_DeleteSync(disp, parameters) (*((disp)->DeleteSync)) parameters
+#define GET_DeleteSync(disp) ((disp)->DeleteSync)
+#define SET_DeleteSync(disp, fn) ((disp)->DeleteSync = fn)
+#define CALL_FenceSync(disp, parameters) (*((disp)->FenceSync)) parameters
+#define GET_FenceSync(disp) ((disp)->FenceSync)
+#define SET_FenceSync(disp, fn) ((disp)->FenceSync = fn)
+#define CALL_GetInteger64v(disp, parameters) (*((disp)->GetInteger64v)) parameters
+#define GET_GetInteger64v(disp) ((disp)->GetInteger64v)
+#define SET_GetInteger64v(disp, fn) ((disp)->GetInteger64v = fn)
+#define CALL_GetSynciv(disp, parameters) (*((disp)->GetSynciv)) parameters
+#define GET_GetSynciv(disp) ((disp)->GetSynciv)
+#define SET_GetSynciv(disp, fn) ((disp)->GetSynciv = fn)
+#define CALL_IsSync(disp, parameters) (*((disp)->IsSync)) parameters
+#define GET_IsSync(disp) ((disp)->IsSync)
+#define SET_IsSync(disp, fn) ((disp)->IsSync = fn)
+#define CALL_WaitSync(disp, parameters) (*((disp)->WaitSync)) parameters
+#define GET_WaitSync(disp) ((disp)->WaitSync)
+#define SET_WaitSync(disp, fn) ((disp)->WaitSync = fn)
+#define CALL_DrawElementsBaseVertex(disp, parameters) (*((disp)->DrawElementsBaseVertex)) parameters
+#define GET_DrawElementsBaseVertex(disp) ((disp)->DrawElementsBaseVertex)
+#define SET_DrawElementsBaseVertex(disp, fn) ((disp)->DrawElementsBaseVertex = fn)
+#define CALL_DrawRangeElementsBaseVertex(disp, parameters) (*((disp)->DrawRangeElementsBaseVertex)) parameters
+#define GET_DrawRangeElementsBaseVertex(disp) ((disp)->DrawRangeElementsBaseVertex)
+#define SET_DrawRangeElementsBaseVertex(disp, fn) ((disp)->DrawRangeElementsBaseVertex = fn)
+#define CALL_MultiDrawElementsBaseVertex(disp, parameters) (*((disp)->MultiDrawElementsBaseVertex)) parameters
+#define GET_MultiDrawElementsBaseVertex(disp) ((disp)->MultiDrawElementsBaseVertex)
+#define SET_MultiDrawElementsBaseVertex(disp, fn) ((disp)->MultiDrawElementsBaseVertex = fn)
+#define CALL_PolygonOffsetEXT(disp, parameters) (*((disp)->PolygonOffsetEXT)) parameters
+#define GET_PolygonOffsetEXT(disp) ((disp)->PolygonOffsetEXT)
+#define SET_PolygonOffsetEXT(disp, fn) ((disp)->PolygonOffsetEXT = fn)
+#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) (*((disp)->GetPixelTexGenParameterfvSGIS)) parameters
+#define GET_GetPixelTexGenParameterfvSGIS(disp) ((disp)->GetPixelTexGenParameterfvSGIS)
+#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) ((disp)->GetPixelTexGenParameterfvSGIS = fn)
+#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) (*((disp)->GetPixelTexGenParameterivSGIS)) parameters
+#define GET_GetPixelTexGenParameterivSGIS(disp) ((disp)->GetPixelTexGenParameterivSGIS)
+#define SET_GetPixelTexGenParameterivSGIS(disp, fn) ((disp)->GetPixelTexGenParameterivSGIS = fn)
+#define CALL_PixelTexGenParameterfSGIS(disp, parameters) (*((disp)->PixelTexGenParameterfSGIS)) parameters
+#define GET_PixelTexGenParameterfSGIS(disp) ((disp)->PixelTexGenParameterfSGIS)
+#define SET_PixelTexGenParameterfSGIS(disp, fn) ((disp)->PixelTexGenParameterfSGIS = fn)
+#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) (*((disp)->PixelTexGenParameterfvSGIS)) parameters
+#define GET_PixelTexGenParameterfvSGIS(disp) ((disp)->PixelTexGenParameterfvSGIS)
+#define SET_PixelTexGenParameterfvSGIS(disp, fn) ((disp)->PixelTexGenParameterfvSGIS = fn)
+#define CALL_PixelTexGenParameteriSGIS(disp, parameters) (*((disp)->PixelTexGenParameteriSGIS)) parameters
+#define GET_PixelTexGenParameteriSGIS(disp) ((disp)->PixelTexGenParameteriSGIS)
+#define SET_PixelTexGenParameteriSGIS(disp, fn) ((disp)->PixelTexGenParameteriSGIS = fn)
+#define CALL_PixelTexGenParameterivSGIS(disp, parameters) (*((disp)->PixelTexGenParameterivSGIS)) parameters
+#define GET_PixelTexGenParameterivSGIS(disp) ((disp)->PixelTexGenParameterivSGIS)
+#define SET_PixelTexGenParameterivSGIS(disp, fn) ((disp)->PixelTexGenParameterivSGIS = fn)
+#define CALL_SampleMaskSGIS(disp, parameters) (*((disp)->SampleMaskSGIS)) parameters
+#define GET_SampleMaskSGIS(disp) ((disp)->SampleMaskSGIS)
+#define SET_SampleMaskSGIS(disp, fn) ((disp)->SampleMaskSGIS = fn)
+#define CALL_SamplePatternSGIS(disp, parameters) (*((disp)->SamplePatternSGIS)) parameters
+#define GET_SamplePatternSGIS(disp) ((disp)->SamplePatternSGIS)
+#define SET_SamplePatternSGIS(disp, fn) ((disp)->SamplePatternSGIS = fn)
+#define CALL_ColorPointerEXT(disp, parameters) (*((disp)->ColorPointerEXT)) parameters
+#define GET_ColorPointerEXT(disp) ((disp)->ColorPointerEXT)
+#define SET_ColorPointerEXT(disp, fn) ((disp)->ColorPointerEXT = fn)
+#define CALL_EdgeFlagPointerEXT(disp, parameters) (*((disp)->EdgeFlagPointerEXT)) parameters
+#define GET_EdgeFlagPointerEXT(disp) ((disp)->EdgeFlagPointerEXT)
+#define SET_EdgeFlagPointerEXT(disp, fn) ((disp)->EdgeFlagPointerEXT = fn)
+#define CALL_IndexPointerEXT(disp, parameters) (*((disp)->IndexPointerEXT)) parameters
+#define GET_IndexPointerEXT(disp) ((disp)->IndexPointerEXT)
+#define SET_IndexPointerEXT(disp, fn) ((disp)->IndexPointerEXT = fn)
+#define CALL_NormalPointerEXT(disp, parameters) (*((disp)->NormalPointerEXT)) parameters
+#define GET_NormalPointerEXT(disp) ((disp)->NormalPointerEXT)
+#define SET_NormalPointerEXT(disp, fn) ((disp)->NormalPointerEXT = fn)
+#define CALL_TexCoordPointerEXT(disp, parameters) (*((disp)->TexCoordPointerEXT)) parameters
+#define GET_TexCoordPointerEXT(disp) ((disp)->TexCoordPointerEXT)
+#define SET_TexCoordPointerEXT(disp, fn) ((disp)->TexCoordPointerEXT = fn)
+#define CALL_VertexPointerEXT(disp, parameters) (*((disp)->VertexPointerEXT)) parameters
+#define GET_VertexPointerEXT(disp) ((disp)->VertexPointerEXT)
+#define SET_VertexPointerEXT(disp, fn) ((disp)->VertexPointerEXT = fn)
+#define CALL_PointParameterfEXT(disp, parameters) (*((disp)->PointParameterfEXT)) parameters
+#define GET_PointParameterfEXT(disp) ((disp)->PointParameterfEXT)
+#define SET_PointParameterfEXT(disp, fn) ((disp)->PointParameterfEXT = fn)
+#define CALL_PointParameterfvEXT(disp, parameters) (*((disp)->PointParameterfvEXT)) parameters
+#define GET_PointParameterfvEXT(disp) ((disp)->PointParameterfvEXT)
+#define SET_PointParameterfvEXT(disp, fn) ((disp)->PointParameterfvEXT = fn)
+#define CALL_LockArraysEXT(disp, parameters) (*((disp)->LockArraysEXT)) parameters
+#define GET_LockArraysEXT(disp) ((disp)->LockArraysEXT)
+#define SET_LockArraysEXT(disp, fn) ((disp)->LockArraysEXT = fn)
+#define CALL_UnlockArraysEXT(disp, parameters) (*((disp)->UnlockArraysEXT)) parameters
+#define GET_UnlockArraysEXT(disp) ((disp)->UnlockArraysEXT)
+#define SET_UnlockArraysEXT(disp, fn) ((disp)->UnlockArraysEXT = fn)
+#define CALL_CullParameterdvEXT(disp, parameters) (*((disp)->CullParameterdvEXT)) parameters
+#define GET_CullParameterdvEXT(disp) ((disp)->CullParameterdvEXT)
+#define SET_CullParameterdvEXT(disp, fn) ((disp)->CullParameterdvEXT = fn)
+#define CALL_CullParameterfvEXT(disp, parameters) (*((disp)->CullParameterfvEXT)) parameters
+#define GET_CullParameterfvEXT(disp) ((disp)->CullParameterfvEXT)
+#define SET_CullParameterfvEXT(disp, fn) ((disp)->CullParameterfvEXT = fn)
+#define CALL_SecondaryColor3bEXT(disp, parameters) (*((disp)->SecondaryColor3bEXT)) parameters
+#define GET_SecondaryColor3bEXT(disp) ((disp)->SecondaryColor3bEXT)
+#define SET_SecondaryColor3bEXT(disp, fn) ((disp)->SecondaryColor3bEXT = fn)
+#define CALL_SecondaryColor3bvEXT(disp, parameters) (*((disp)->SecondaryColor3bvEXT)) parameters
+#define GET_SecondaryColor3bvEXT(disp) ((disp)->SecondaryColor3bvEXT)
+#define SET_SecondaryColor3bvEXT(disp, fn) ((disp)->SecondaryColor3bvEXT = fn)
+#define CALL_SecondaryColor3dEXT(disp, parameters) (*((disp)->SecondaryColor3dEXT)) parameters
+#define GET_SecondaryColor3dEXT(disp) ((disp)->SecondaryColor3dEXT)
+#define SET_SecondaryColor3dEXT(disp, fn) ((disp)->SecondaryColor3dEXT = fn)
+#define CALL_SecondaryColor3dvEXT(disp, parameters) (*((disp)->SecondaryColor3dvEXT)) parameters
+#define GET_SecondaryColor3dvEXT(disp) ((disp)->SecondaryColor3dvEXT)
+#define SET_SecondaryColor3dvEXT(disp, fn) ((disp)->SecondaryColor3dvEXT = fn)
+#define CALL_SecondaryColor3fEXT(disp, parameters) (*((disp)->SecondaryColor3fEXT)) parameters
+#define GET_SecondaryColor3fEXT(disp) ((disp)->SecondaryColor3fEXT)
+#define SET_SecondaryColor3fEXT(disp, fn) ((disp)->SecondaryColor3fEXT = fn)
+#define CALL_SecondaryColor3fvEXT(disp, parameters) (*((disp)->SecondaryColor3fvEXT)) parameters
+#define GET_SecondaryColor3fvEXT(disp) ((disp)->SecondaryColor3fvEXT)
+#define SET_SecondaryColor3fvEXT(disp, fn) ((disp)->SecondaryColor3fvEXT = fn)
+#define CALL_SecondaryColor3iEXT(disp, parameters) (*((disp)->SecondaryColor3iEXT)) parameters
+#define GET_SecondaryColor3iEXT(disp) ((disp)->SecondaryColor3iEXT)
+#define SET_SecondaryColor3iEXT(disp, fn) ((disp)->SecondaryColor3iEXT = fn)
+#define CALL_SecondaryColor3ivEXT(disp, parameters) (*((disp)->SecondaryColor3ivEXT)) parameters
+#define GET_SecondaryColor3ivEXT(disp) ((disp)->SecondaryColor3ivEXT)
+#define SET_SecondaryColor3ivEXT(disp, fn) ((disp)->SecondaryColor3ivEXT = fn)
+#define CALL_SecondaryColor3sEXT(disp, parameters) (*((disp)->SecondaryColor3sEXT)) parameters
+#define GET_SecondaryColor3sEXT(disp) ((disp)->SecondaryColor3sEXT)
+#define SET_SecondaryColor3sEXT(disp, fn) ((disp)->SecondaryColor3sEXT = fn)
+#define CALL_SecondaryColor3svEXT(disp, parameters) (*((disp)->SecondaryColor3svEXT)) parameters
+#define GET_SecondaryColor3svEXT(disp) ((disp)->SecondaryColor3svEXT)
+#define SET_SecondaryColor3svEXT(disp, fn) ((disp)->SecondaryColor3svEXT = fn)
+#define CALL_SecondaryColor3ubEXT(disp, parameters) (*((disp)->SecondaryColor3ubEXT)) parameters
+#define GET_SecondaryColor3ubEXT(disp) ((disp)->SecondaryColor3ubEXT)
+#define SET_SecondaryColor3ubEXT(disp, fn) ((disp)->SecondaryColor3ubEXT = fn)
+#define CALL_SecondaryColor3ubvEXT(disp, parameters) (*((disp)->SecondaryColor3ubvEXT)) parameters
+#define GET_SecondaryColor3ubvEXT(disp) ((disp)->SecondaryColor3ubvEXT)
+#define SET_SecondaryColor3ubvEXT(disp, fn) ((disp)->SecondaryColor3ubvEXT = fn)
+#define CALL_SecondaryColor3uiEXT(disp, parameters) (*((disp)->SecondaryColor3uiEXT)) parameters
+#define GET_SecondaryColor3uiEXT(disp) ((disp)->SecondaryColor3uiEXT)
+#define SET_SecondaryColor3uiEXT(disp, fn) ((disp)->SecondaryColor3uiEXT = fn)
+#define CALL_SecondaryColor3uivEXT(disp, parameters) (*((disp)->SecondaryColor3uivEXT)) parameters
+#define GET_SecondaryColor3uivEXT(disp) ((disp)->SecondaryColor3uivEXT)
+#define SET_SecondaryColor3uivEXT(disp, fn) ((disp)->SecondaryColor3uivEXT = fn)
+#define CALL_SecondaryColor3usEXT(disp, parameters) (*((disp)->SecondaryColor3usEXT)) parameters
+#define GET_SecondaryColor3usEXT(disp) ((disp)->SecondaryColor3usEXT)
+#define SET_SecondaryColor3usEXT(disp, fn) ((disp)->SecondaryColor3usEXT = fn)
+#define CALL_SecondaryColor3usvEXT(disp, parameters) (*((disp)->SecondaryColor3usvEXT)) parameters
+#define GET_SecondaryColor3usvEXT(disp) ((disp)->SecondaryColor3usvEXT)
+#define SET_SecondaryColor3usvEXT(disp, fn) ((disp)->SecondaryColor3usvEXT = fn)
+#define CALL_SecondaryColorPointerEXT(disp, parameters) (*((disp)->SecondaryColorPointerEXT)) parameters
+#define GET_SecondaryColorPointerEXT(disp) ((disp)->SecondaryColorPointerEXT)
+#define SET_SecondaryColorPointerEXT(disp, fn) ((disp)->SecondaryColorPointerEXT = fn)
+#define CALL_MultiDrawArraysEXT(disp, parameters) (*((disp)->MultiDrawArraysEXT)) parameters
+#define GET_MultiDrawArraysEXT(disp) ((disp)->MultiDrawArraysEXT)
+#define SET_MultiDrawArraysEXT(disp, fn) ((disp)->MultiDrawArraysEXT = fn)
+#define CALL_MultiDrawElementsEXT(disp, parameters) (*((disp)->MultiDrawElementsEXT)) parameters
+#define GET_MultiDrawElementsEXT(disp) ((disp)->MultiDrawElementsEXT)
+#define SET_MultiDrawElementsEXT(disp, fn) ((disp)->MultiDrawElementsEXT = fn)
+#define CALL_FogCoordPointerEXT(disp, parameters) (*((disp)->FogCoordPointerEXT)) parameters
+#define GET_FogCoordPointerEXT(disp) ((disp)->FogCoordPointerEXT)
+#define SET_FogCoordPointerEXT(disp, fn) ((disp)->FogCoordPointerEXT = fn)
+#define CALL_FogCoorddEXT(disp, parameters) (*((disp)->FogCoorddEXT)) parameters
+#define GET_FogCoorddEXT(disp) ((disp)->FogCoorddEXT)
+#define SET_FogCoorddEXT(disp, fn) ((disp)->FogCoorddEXT = fn)
+#define CALL_FogCoorddvEXT(disp, parameters) (*((disp)->FogCoorddvEXT)) parameters
+#define GET_FogCoorddvEXT(disp) ((disp)->FogCoorddvEXT)
+#define SET_FogCoorddvEXT(disp, fn) ((disp)->FogCoorddvEXT = fn)
+#define CALL_FogCoordfEXT(disp, parameters) (*((disp)->FogCoordfEXT)) parameters
+#define GET_FogCoordfEXT(disp) ((disp)->FogCoordfEXT)
+#define SET_FogCoordfEXT(disp, fn) ((disp)->FogCoordfEXT = fn)
+#define CALL_FogCoordfvEXT(disp, parameters) (*((disp)->FogCoordfvEXT)) parameters
+#define GET_FogCoordfvEXT(disp) ((disp)->FogCoordfvEXT)
+#define SET_FogCoordfvEXT(disp, fn) ((disp)->FogCoordfvEXT = fn)
+#define CALL_PixelTexGenSGIX(disp, parameters) (*((disp)->PixelTexGenSGIX)) parameters
+#define GET_PixelTexGenSGIX(disp) ((disp)->PixelTexGenSGIX)
+#define SET_PixelTexGenSGIX(disp, fn) ((disp)->PixelTexGenSGIX = fn)
+#define CALL_BlendFuncSeparateEXT(disp, parameters) (*((disp)->BlendFuncSeparateEXT)) parameters
+#define GET_BlendFuncSeparateEXT(disp) ((disp)->BlendFuncSeparateEXT)
+#define SET_BlendFuncSeparateEXT(disp, fn) ((disp)->BlendFuncSeparateEXT = fn)
+#define CALL_FlushVertexArrayRangeNV(disp, parameters) (*((disp)->FlushVertexArrayRangeNV)) parameters
+#define GET_FlushVertexArrayRangeNV(disp) ((disp)->FlushVertexArrayRangeNV)
+#define SET_FlushVertexArrayRangeNV(disp, fn) ((disp)->FlushVertexArrayRangeNV = fn)
+#define CALL_VertexArrayRangeNV(disp, parameters) (*((disp)->VertexArrayRangeNV)) parameters
+#define GET_VertexArrayRangeNV(disp) ((disp)->VertexArrayRangeNV)
+#define SET_VertexArrayRangeNV(disp, fn) ((disp)->VertexArrayRangeNV = fn)
+#define CALL_CombinerInputNV(disp, parameters) (*((disp)->CombinerInputNV)) parameters
+#define GET_CombinerInputNV(disp) ((disp)->CombinerInputNV)
+#define SET_CombinerInputNV(disp, fn) ((disp)->CombinerInputNV = fn)
+#define CALL_CombinerOutputNV(disp, parameters) (*((disp)->CombinerOutputNV)) parameters
+#define GET_CombinerOutputNV(disp) ((disp)->CombinerOutputNV)
+#define SET_CombinerOutputNV(disp, fn) ((disp)->CombinerOutputNV = fn)
+#define CALL_CombinerParameterfNV(disp, parameters) (*((disp)->CombinerParameterfNV)) parameters
+#define GET_CombinerParameterfNV(disp) ((disp)->CombinerParameterfNV)
+#define SET_CombinerParameterfNV(disp, fn) ((disp)->CombinerParameterfNV = fn)
+#define CALL_CombinerParameterfvNV(disp, parameters) (*((disp)->CombinerParameterfvNV)) parameters
+#define GET_CombinerParameterfvNV(disp) ((disp)->CombinerParameterfvNV)
+#define SET_CombinerParameterfvNV(disp, fn) ((disp)->CombinerParameterfvNV = fn)
+#define CALL_CombinerParameteriNV(disp, parameters) (*((disp)->CombinerParameteriNV)) parameters
+#define GET_CombinerParameteriNV(disp) ((disp)->CombinerParameteriNV)
+#define SET_CombinerParameteriNV(disp, fn) ((disp)->CombinerParameteriNV = fn)
+#define CALL_CombinerParameterivNV(disp, parameters) (*((disp)->CombinerParameterivNV)) parameters
+#define GET_CombinerParameterivNV(disp) ((disp)->CombinerParameterivNV)
+#define SET_CombinerParameterivNV(disp, fn) ((disp)->CombinerParameterivNV = fn)
+#define CALL_FinalCombinerInputNV(disp, parameters) (*((disp)->FinalCombinerInputNV)) parameters
+#define GET_FinalCombinerInputNV(disp) ((disp)->FinalCombinerInputNV)
+#define SET_FinalCombinerInputNV(disp, fn) ((disp)->FinalCombinerInputNV = fn)
+#define CALL_GetCombinerInputParameterfvNV(disp, parameters) (*((disp)->GetCombinerInputParameterfvNV)) parameters
+#define GET_GetCombinerInputParameterfvNV(disp) ((disp)->GetCombinerInputParameterfvNV)
+#define SET_GetCombinerInputParameterfvNV(disp, fn) ((disp)->GetCombinerInputParameterfvNV = fn)
+#define CALL_GetCombinerInputParameterivNV(disp, parameters) (*((disp)->GetCombinerInputParameterivNV)) parameters
+#define GET_GetCombinerInputParameterivNV(disp) ((disp)->GetCombinerInputParameterivNV)
+#define SET_GetCombinerInputParameterivNV(disp, fn) ((disp)->GetCombinerInputParameterivNV = fn)
+#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) (*((disp)->GetCombinerOutputParameterfvNV)) parameters
+#define GET_GetCombinerOutputParameterfvNV(disp) ((disp)->GetCombinerOutputParameterfvNV)
+#define SET_GetCombinerOutputParameterfvNV(disp, fn) ((disp)->GetCombinerOutputParameterfvNV = fn)
+#define CALL_GetCombinerOutputParameterivNV(disp, parameters) (*((disp)->GetCombinerOutputParameterivNV)) parameters
+#define GET_GetCombinerOutputParameterivNV(disp) ((disp)->GetCombinerOutputParameterivNV)
+#define SET_GetCombinerOutputParameterivNV(disp, fn) ((disp)->GetCombinerOutputParameterivNV = fn)
+#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) (*((disp)->GetFinalCombinerInputParameterfvNV)) parameters
+#define GET_GetFinalCombinerInputParameterfvNV(disp) ((disp)->GetFinalCombinerInputParameterfvNV)
+#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) ((disp)->GetFinalCombinerInputParameterfvNV = fn)
+#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) (*((disp)->GetFinalCombinerInputParameterivNV)) parameters
+#define GET_GetFinalCombinerInputParameterivNV(disp) ((disp)->GetFinalCombinerInputParameterivNV)
+#define SET_GetFinalCombinerInputParameterivNV(disp, fn) ((disp)->GetFinalCombinerInputParameterivNV = fn)
+#define CALL_ResizeBuffersMESA(disp, parameters) (*((disp)->ResizeBuffersMESA)) parameters
+#define GET_ResizeBuffersMESA(disp) ((disp)->ResizeBuffersMESA)
+#define SET_ResizeBuffersMESA(disp, fn) ((disp)->ResizeBuffersMESA = fn)
+#define CALL_WindowPos2dMESA(disp, parameters) (*((disp)->WindowPos2dMESA)) parameters
+#define GET_WindowPos2dMESA(disp) ((disp)->WindowPos2dMESA)
+#define SET_WindowPos2dMESA(disp, fn) ((disp)->WindowPos2dMESA = fn)
+#define CALL_WindowPos2dvMESA(disp, parameters) (*((disp)->WindowPos2dvMESA)) parameters
+#define GET_WindowPos2dvMESA(disp) ((disp)->WindowPos2dvMESA)
+#define SET_WindowPos2dvMESA(disp, fn) ((disp)->WindowPos2dvMESA = fn)
+#define CALL_WindowPos2fMESA(disp, parameters) (*((disp)->WindowPos2fMESA)) parameters
+#define GET_WindowPos2fMESA(disp) ((disp)->WindowPos2fMESA)
+#define SET_WindowPos2fMESA(disp, fn) ((disp)->WindowPos2fMESA = fn)
+#define CALL_WindowPos2fvMESA(disp, parameters) (*((disp)->WindowPos2fvMESA)) parameters
+#define GET_WindowPos2fvMESA(disp) ((disp)->WindowPos2fvMESA)
+#define SET_WindowPos2fvMESA(disp, fn) ((disp)->WindowPos2fvMESA = fn)
+#define CALL_WindowPos2iMESA(disp, parameters) (*((disp)->WindowPos2iMESA)) parameters
+#define GET_WindowPos2iMESA(disp) ((disp)->WindowPos2iMESA)
+#define SET_WindowPos2iMESA(disp, fn) ((disp)->WindowPos2iMESA = fn)
+#define CALL_WindowPos2ivMESA(disp, parameters) (*((disp)->WindowPos2ivMESA)) parameters
+#define GET_WindowPos2ivMESA(disp) ((disp)->WindowPos2ivMESA)
+#define SET_WindowPos2ivMESA(disp, fn) ((disp)->WindowPos2ivMESA = fn)
+#define CALL_WindowPos2sMESA(disp, parameters) (*((disp)->WindowPos2sMESA)) parameters
+#define GET_WindowPos2sMESA(disp) ((disp)->WindowPos2sMESA)
+#define SET_WindowPos2sMESA(disp, fn) ((disp)->WindowPos2sMESA = fn)
+#define CALL_WindowPos2svMESA(disp, parameters) (*((disp)->WindowPos2svMESA)) parameters
+#define GET_WindowPos2svMESA(disp) ((disp)->WindowPos2svMESA)
+#define SET_WindowPos2svMESA(disp, fn) ((disp)->WindowPos2svMESA = fn)
+#define CALL_WindowPos3dMESA(disp, parameters) (*((disp)->WindowPos3dMESA)) parameters
+#define GET_WindowPos3dMESA(disp) ((disp)->WindowPos3dMESA)
+#define SET_WindowPos3dMESA(disp, fn) ((disp)->WindowPos3dMESA = fn)
+#define CALL_WindowPos3dvMESA(disp, parameters) (*((disp)->WindowPos3dvMESA)) parameters
+#define GET_WindowPos3dvMESA(disp) ((disp)->WindowPos3dvMESA)
+#define SET_WindowPos3dvMESA(disp, fn) ((disp)->WindowPos3dvMESA = fn)
+#define CALL_WindowPos3fMESA(disp, parameters) (*((disp)->WindowPos3fMESA)) parameters
+#define GET_WindowPos3fMESA(disp) ((disp)->WindowPos3fMESA)
+#define SET_WindowPos3fMESA(disp, fn) ((disp)->WindowPos3fMESA = fn)
+#define CALL_WindowPos3fvMESA(disp, parameters) (*((disp)->WindowPos3fvMESA)) parameters
+#define GET_WindowPos3fvMESA(disp) ((disp)->WindowPos3fvMESA)
+#define SET_WindowPos3fvMESA(disp, fn) ((disp)->WindowPos3fvMESA = fn)
+#define CALL_WindowPos3iMESA(disp, parameters) (*((disp)->WindowPos3iMESA)) parameters
+#define GET_WindowPos3iMESA(disp) ((disp)->WindowPos3iMESA)
+#define SET_WindowPos3iMESA(disp, fn) ((disp)->WindowPos3iMESA = fn)
+#define CALL_WindowPos3ivMESA(disp, parameters) (*((disp)->WindowPos3ivMESA)) parameters
+#define GET_WindowPos3ivMESA(disp) ((disp)->WindowPos3ivMESA)
+#define SET_WindowPos3ivMESA(disp, fn) ((disp)->WindowPos3ivMESA = fn)
+#define CALL_WindowPos3sMESA(disp, parameters) (*((disp)->WindowPos3sMESA)) parameters
+#define GET_WindowPos3sMESA(disp) ((disp)->WindowPos3sMESA)
+#define SET_WindowPos3sMESA(disp, fn) ((disp)->WindowPos3sMESA = fn)
+#define CALL_WindowPos3svMESA(disp, parameters) (*((disp)->WindowPos3svMESA)) parameters
+#define GET_WindowPos3svMESA(disp) ((disp)->WindowPos3svMESA)
+#define SET_WindowPos3svMESA(disp, fn) ((disp)->WindowPos3svMESA = fn)
+#define CALL_WindowPos4dMESA(disp, parameters) (*((disp)->WindowPos4dMESA)) parameters
+#define GET_WindowPos4dMESA(disp) ((disp)->WindowPos4dMESA)
+#define SET_WindowPos4dMESA(disp, fn) ((disp)->WindowPos4dMESA = fn)
+#define CALL_WindowPos4dvMESA(disp, parameters) (*((disp)->WindowPos4dvMESA)) parameters
+#define GET_WindowPos4dvMESA(disp) ((disp)->WindowPos4dvMESA)
+#define SET_WindowPos4dvMESA(disp, fn) ((disp)->WindowPos4dvMESA = fn)
+#define CALL_WindowPos4fMESA(disp, parameters) (*((disp)->WindowPos4fMESA)) parameters
+#define GET_WindowPos4fMESA(disp) ((disp)->WindowPos4fMESA)
+#define SET_WindowPos4fMESA(disp, fn) ((disp)->WindowPos4fMESA = fn)
+#define CALL_WindowPos4fvMESA(disp, parameters) (*((disp)->WindowPos4fvMESA)) parameters
+#define GET_WindowPos4fvMESA(disp) ((disp)->WindowPos4fvMESA)
+#define SET_WindowPos4fvMESA(disp, fn) ((disp)->WindowPos4fvMESA = fn)
+#define CALL_WindowPos4iMESA(disp, parameters) (*((disp)->WindowPos4iMESA)) parameters
+#define GET_WindowPos4iMESA(disp) ((disp)->WindowPos4iMESA)
+#define SET_WindowPos4iMESA(disp, fn) ((disp)->WindowPos4iMESA = fn)
+#define CALL_WindowPos4ivMESA(disp, parameters) (*((disp)->WindowPos4ivMESA)) parameters
+#define GET_WindowPos4ivMESA(disp) ((disp)->WindowPos4ivMESA)
+#define SET_WindowPos4ivMESA(disp, fn) ((disp)->WindowPos4ivMESA = fn)
+#define CALL_WindowPos4sMESA(disp, parameters) (*((disp)->WindowPos4sMESA)) parameters
+#define GET_WindowPos4sMESA(disp) ((disp)->WindowPos4sMESA)
+#define SET_WindowPos4sMESA(disp, fn) ((disp)->WindowPos4sMESA = fn)
+#define CALL_WindowPos4svMESA(disp, parameters) (*((disp)->WindowPos4svMESA)) parameters
+#define GET_WindowPos4svMESA(disp) ((disp)->WindowPos4svMESA)
+#define SET_WindowPos4svMESA(disp, fn) ((disp)->WindowPos4svMESA = fn)
+#define CALL_MultiModeDrawArraysIBM(disp, parameters) (*((disp)->MultiModeDrawArraysIBM)) parameters
+#define GET_MultiModeDrawArraysIBM(disp) ((disp)->MultiModeDrawArraysIBM)
+#define SET_MultiModeDrawArraysIBM(disp, fn) ((disp)->MultiModeDrawArraysIBM = fn)
+#define CALL_MultiModeDrawElementsIBM(disp, parameters) (*((disp)->MultiModeDrawElementsIBM)) parameters
+#define GET_MultiModeDrawElementsIBM(disp) ((disp)->MultiModeDrawElementsIBM)
+#define SET_MultiModeDrawElementsIBM(disp, fn) ((disp)->MultiModeDrawElementsIBM = fn)
+#define CALL_DeleteFencesNV(disp, parameters) (*((disp)->DeleteFencesNV)) parameters
+#define GET_DeleteFencesNV(disp) ((disp)->DeleteFencesNV)
+#define SET_DeleteFencesNV(disp, fn) ((disp)->DeleteFencesNV = fn)
+#define CALL_FinishFenceNV(disp, parameters) (*((disp)->FinishFenceNV)) parameters
+#define GET_FinishFenceNV(disp) ((disp)->FinishFenceNV)
+#define SET_FinishFenceNV(disp, fn) ((disp)->FinishFenceNV = fn)
+#define CALL_GenFencesNV(disp, parameters) (*((disp)->GenFencesNV)) parameters
+#define GET_GenFencesNV(disp) ((disp)->GenFencesNV)
+#define SET_GenFencesNV(disp, fn) ((disp)->GenFencesNV = fn)
+#define CALL_GetFenceivNV(disp, parameters) (*((disp)->GetFenceivNV)) parameters
+#define GET_GetFenceivNV(disp) ((disp)->GetFenceivNV)
+#define SET_GetFenceivNV(disp, fn) ((disp)->GetFenceivNV = fn)
+#define CALL_IsFenceNV(disp, parameters) (*((disp)->IsFenceNV)) parameters
+#define GET_IsFenceNV(disp) ((disp)->IsFenceNV)
+#define SET_IsFenceNV(disp, fn) ((disp)->IsFenceNV = fn)
+#define CALL_SetFenceNV(disp, parameters) (*((disp)->SetFenceNV)) parameters
+#define GET_SetFenceNV(disp) ((disp)->SetFenceNV)
+#define SET_SetFenceNV(disp, fn) ((disp)->SetFenceNV = fn)
+#define CALL_TestFenceNV(disp, parameters) (*((disp)->TestFenceNV)) parameters
+#define GET_TestFenceNV(disp) ((disp)->TestFenceNV)
+#define SET_TestFenceNV(disp, fn) ((disp)->TestFenceNV = fn)
+#define CALL_AreProgramsResidentNV(disp, parameters) (*((disp)->AreProgramsResidentNV)) parameters
+#define GET_AreProgramsResidentNV(disp) ((disp)->AreProgramsResidentNV)
+#define SET_AreProgramsResidentNV(disp, fn) ((disp)->AreProgramsResidentNV = fn)
+#define CALL_BindProgramNV(disp, parameters) (*((disp)->BindProgramNV)) parameters
+#define GET_BindProgramNV(disp) ((disp)->BindProgramNV)
+#define SET_BindProgramNV(disp, fn) ((disp)->BindProgramNV = fn)
+#define CALL_DeleteProgramsNV(disp, parameters) (*((disp)->DeleteProgramsNV)) parameters
+#define GET_DeleteProgramsNV(disp) ((disp)->DeleteProgramsNV)
+#define SET_DeleteProgramsNV(disp, fn) ((disp)->DeleteProgramsNV = fn)
+#define CALL_ExecuteProgramNV(disp, parameters) (*((disp)->ExecuteProgramNV)) parameters
+#define GET_ExecuteProgramNV(disp) ((disp)->ExecuteProgramNV)
+#define SET_ExecuteProgramNV(disp, fn) ((disp)->ExecuteProgramNV = fn)
+#define CALL_GenProgramsNV(disp, parameters) (*((disp)->GenProgramsNV)) parameters
+#define GET_GenProgramsNV(disp) ((disp)->GenProgramsNV)
+#define SET_GenProgramsNV(disp, fn) ((disp)->GenProgramsNV = fn)
+#define CALL_GetProgramParameterdvNV(disp, parameters) (*((disp)->GetProgramParameterdvNV)) parameters
+#define GET_GetProgramParameterdvNV(disp) ((disp)->GetProgramParameterdvNV)
+#define SET_GetProgramParameterdvNV(disp, fn) ((disp)->GetProgramParameterdvNV = fn)
+#define CALL_GetProgramParameterfvNV(disp, parameters) (*((disp)->GetProgramParameterfvNV)) parameters
+#define GET_GetProgramParameterfvNV(disp) ((disp)->GetProgramParameterfvNV)
+#define SET_GetProgramParameterfvNV(disp, fn) ((disp)->GetProgramParameterfvNV = fn)
+#define CALL_GetProgramStringNV(disp, parameters) (*((disp)->GetProgramStringNV)) parameters
+#define GET_GetProgramStringNV(disp) ((disp)->GetProgramStringNV)
+#define SET_GetProgramStringNV(disp, fn) ((disp)->GetProgramStringNV = fn)
+#define CALL_GetProgramivNV(disp, parameters) (*((disp)->GetProgramivNV)) parameters
+#define GET_GetProgramivNV(disp) ((disp)->GetProgramivNV)
+#define SET_GetProgramivNV(disp, fn) ((disp)->GetProgramivNV = fn)
+#define CALL_GetTrackMatrixivNV(disp, parameters) (*((disp)->GetTrackMatrixivNV)) parameters
+#define GET_GetTrackMatrixivNV(disp) ((disp)->GetTrackMatrixivNV)
+#define SET_GetTrackMatrixivNV(disp, fn) ((disp)->GetTrackMatrixivNV = fn)
+#define CALL_GetVertexAttribPointervNV(disp, parameters) (*((disp)->GetVertexAttribPointervNV)) parameters
+#define GET_GetVertexAttribPointervNV(disp) ((disp)->GetVertexAttribPointervNV)
+#define SET_GetVertexAttribPointervNV(disp, fn) ((disp)->GetVertexAttribPointervNV = fn)
+#define CALL_GetVertexAttribdvNV(disp, parameters) (*((disp)->GetVertexAttribdvNV)) parameters
+#define GET_GetVertexAttribdvNV(disp) ((disp)->GetVertexAttribdvNV)
+#define SET_GetVertexAttribdvNV(disp, fn) ((disp)->GetVertexAttribdvNV = fn)
+#define CALL_GetVertexAttribfvNV(disp, parameters) (*((disp)->GetVertexAttribfvNV)) parameters
+#define GET_GetVertexAttribfvNV(disp) ((disp)->GetVertexAttribfvNV)
+#define SET_GetVertexAttribfvNV(disp, fn) ((disp)->GetVertexAttribfvNV = fn)
+#define CALL_GetVertexAttribivNV(disp, parameters) (*((disp)->GetVertexAttribivNV)) parameters
+#define GET_GetVertexAttribivNV(disp) ((disp)->GetVertexAttribivNV)
+#define SET_GetVertexAttribivNV(disp, fn) ((disp)->GetVertexAttribivNV = fn)
+#define CALL_IsProgramNV(disp, parameters) (*((disp)->IsProgramNV)) parameters
+#define GET_IsProgramNV(disp) ((disp)->IsProgramNV)
+#define SET_IsProgramNV(disp, fn) ((disp)->IsProgramNV = fn)
+#define CALL_LoadProgramNV(disp, parameters) (*((disp)->LoadProgramNV)) parameters
+#define GET_LoadProgramNV(disp) ((disp)->LoadProgramNV)
+#define SET_LoadProgramNV(disp, fn) ((disp)->LoadProgramNV = fn)
+#define CALL_ProgramParameters4dvNV(disp, parameters) (*((disp)->ProgramParameters4dvNV)) parameters
+#define GET_ProgramParameters4dvNV(disp) ((disp)->ProgramParameters4dvNV)
+#define SET_ProgramParameters4dvNV(disp, fn) ((disp)->ProgramParameters4dvNV = fn)
+#define CALL_ProgramParameters4fvNV(disp, parameters) (*((disp)->ProgramParameters4fvNV)) parameters
+#define GET_ProgramParameters4fvNV(disp) ((disp)->ProgramParameters4fvNV)
+#define SET_ProgramParameters4fvNV(disp, fn) ((disp)->ProgramParameters4fvNV = fn)
+#define CALL_RequestResidentProgramsNV(disp, parameters) (*((disp)->RequestResidentProgramsNV)) parameters
+#define GET_RequestResidentProgramsNV(disp) ((disp)->RequestResidentProgramsNV)
+#define SET_RequestResidentProgramsNV(disp, fn) ((disp)->RequestResidentProgramsNV = fn)
+#define CALL_TrackMatrixNV(disp, parameters) (*((disp)->TrackMatrixNV)) parameters
+#define GET_TrackMatrixNV(disp) ((disp)->TrackMatrixNV)
+#define SET_TrackMatrixNV(disp, fn) ((disp)->TrackMatrixNV = fn)
+#define CALL_VertexAttrib1dNV(disp, parameters) (*((disp)->VertexAttrib1dNV)) parameters
+#define GET_VertexAttrib1dNV(disp) ((disp)->VertexAttrib1dNV)
+#define SET_VertexAttrib1dNV(disp, fn) ((disp)->VertexAttrib1dNV = fn)
+#define CALL_VertexAttrib1dvNV(disp, parameters) (*((disp)->VertexAttrib1dvNV)) parameters
+#define GET_VertexAttrib1dvNV(disp) ((disp)->VertexAttrib1dvNV)
+#define SET_VertexAttrib1dvNV(disp, fn) ((disp)->VertexAttrib1dvNV = fn)
+#define CALL_VertexAttrib1fNV(disp, parameters) (*((disp)->VertexAttrib1fNV)) parameters
+#define GET_VertexAttrib1fNV(disp) ((disp)->VertexAttrib1fNV)
+#define SET_VertexAttrib1fNV(disp, fn) ((disp)->VertexAttrib1fNV = fn)
+#define CALL_VertexAttrib1fvNV(disp, parameters) (*((disp)->VertexAttrib1fvNV)) parameters
+#define GET_VertexAttrib1fvNV(disp) ((disp)->VertexAttrib1fvNV)
+#define SET_VertexAttrib1fvNV(disp, fn) ((disp)->VertexAttrib1fvNV = fn)
+#define CALL_VertexAttrib1sNV(disp, parameters) (*((disp)->VertexAttrib1sNV)) parameters
+#define GET_VertexAttrib1sNV(disp) ((disp)->VertexAttrib1sNV)
+#define SET_VertexAttrib1sNV(disp, fn) ((disp)->VertexAttrib1sNV = fn)
+#define CALL_VertexAttrib1svNV(disp, parameters) (*((disp)->VertexAttrib1svNV)) parameters
+#define GET_VertexAttrib1svNV(disp) ((disp)->VertexAttrib1svNV)
+#define SET_VertexAttrib1svNV(disp, fn) ((disp)->VertexAttrib1svNV = fn)
+#define CALL_VertexAttrib2dNV(disp, parameters) (*((disp)->VertexAttrib2dNV)) parameters
+#define GET_VertexAttrib2dNV(disp) ((disp)->VertexAttrib2dNV)
+#define SET_VertexAttrib2dNV(disp, fn) ((disp)->VertexAttrib2dNV = fn)
+#define CALL_VertexAttrib2dvNV(disp, parameters) (*((disp)->VertexAttrib2dvNV)) parameters
+#define GET_VertexAttrib2dvNV(disp) ((disp)->VertexAttrib2dvNV)
+#define SET_VertexAttrib2dvNV(disp, fn) ((disp)->VertexAttrib2dvNV = fn)
+#define CALL_VertexAttrib2fNV(disp, parameters) (*((disp)->VertexAttrib2fNV)) parameters
+#define GET_VertexAttrib2fNV(disp) ((disp)->VertexAttrib2fNV)
+#define SET_VertexAttrib2fNV(disp, fn) ((disp)->VertexAttrib2fNV = fn)
+#define CALL_VertexAttrib2fvNV(disp, parameters) (*((disp)->VertexAttrib2fvNV)) parameters
+#define GET_VertexAttrib2fvNV(disp) ((disp)->VertexAttrib2fvNV)
+#define SET_VertexAttrib2fvNV(disp, fn) ((disp)->VertexAttrib2fvNV = fn)
+#define CALL_VertexAttrib2sNV(disp, parameters) (*((disp)->VertexAttrib2sNV)) parameters
+#define GET_VertexAttrib2sNV(disp) ((disp)->VertexAttrib2sNV)
+#define SET_VertexAttrib2sNV(disp, fn) ((disp)->VertexAttrib2sNV = fn)
+#define CALL_VertexAttrib2svNV(disp, parameters) (*((disp)->VertexAttrib2svNV)) parameters
+#define GET_VertexAttrib2svNV(disp) ((disp)->VertexAttrib2svNV)
+#define SET_VertexAttrib2svNV(disp, fn) ((disp)->VertexAttrib2svNV = fn)
+#define CALL_VertexAttrib3dNV(disp, parameters) (*((disp)->VertexAttrib3dNV)) parameters
+#define GET_VertexAttrib3dNV(disp) ((disp)->VertexAttrib3dNV)
+#define SET_VertexAttrib3dNV(disp, fn) ((disp)->VertexAttrib3dNV = fn)
+#define CALL_VertexAttrib3dvNV(disp, parameters) (*((disp)->VertexAttrib3dvNV)) parameters
+#define GET_VertexAttrib3dvNV(disp) ((disp)->VertexAttrib3dvNV)
+#define SET_VertexAttrib3dvNV(disp, fn) ((disp)->VertexAttrib3dvNV = fn)
+#define CALL_VertexAttrib3fNV(disp, parameters) (*((disp)->VertexAttrib3fNV)) parameters
+#define GET_VertexAttrib3fNV(disp) ((disp)->VertexAttrib3fNV)
+#define SET_VertexAttrib3fNV(disp, fn) ((disp)->VertexAttrib3fNV = fn)
+#define CALL_VertexAttrib3fvNV(disp, parameters) (*((disp)->VertexAttrib3fvNV)) parameters
+#define GET_VertexAttrib3fvNV(disp) ((disp)->VertexAttrib3fvNV)
+#define SET_VertexAttrib3fvNV(disp, fn) ((disp)->VertexAttrib3fvNV = fn)
+#define CALL_VertexAttrib3sNV(disp, parameters) (*((disp)->VertexAttrib3sNV)) parameters
+#define GET_VertexAttrib3sNV(disp) ((disp)->VertexAttrib3sNV)
+#define SET_VertexAttrib3sNV(disp, fn) ((disp)->VertexAttrib3sNV = fn)
+#define CALL_VertexAttrib3svNV(disp, parameters) (*((disp)->VertexAttrib3svNV)) parameters
+#define GET_VertexAttrib3svNV(disp) ((disp)->VertexAttrib3svNV)
+#define SET_VertexAttrib3svNV(disp, fn) ((disp)->VertexAttrib3svNV = fn)
+#define CALL_VertexAttrib4dNV(disp, parameters) (*((disp)->VertexAttrib4dNV)) parameters
+#define GET_VertexAttrib4dNV(disp) ((disp)->VertexAttrib4dNV)
+#define SET_VertexAttrib4dNV(disp, fn) ((disp)->VertexAttrib4dNV = fn)
+#define CALL_VertexAttrib4dvNV(disp, parameters) (*((disp)->VertexAttrib4dvNV)) parameters
+#define GET_VertexAttrib4dvNV(disp) ((disp)->VertexAttrib4dvNV)
+#define SET_VertexAttrib4dvNV(disp, fn) ((disp)->VertexAttrib4dvNV = fn)
+#define CALL_VertexAttrib4fNV(disp, parameters) (*((disp)->VertexAttrib4fNV)) parameters
+#define GET_VertexAttrib4fNV(disp) ((disp)->VertexAttrib4fNV)
+#define SET_VertexAttrib4fNV(disp, fn) ((disp)->VertexAttrib4fNV = fn)
+#define CALL_VertexAttrib4fvNV(disp, parameters) (*((disp)->VertexAttrib4fvNV)) parameters
+#define GET_VertexAttrib4fvNV(disp) ((disp)->VertexAttrib4fvNV)
+#define SET_VertexAttrib4fvNV(disp, fn) ((disp)->VertexAttrib4fvNV = fn)
+#define CALL_VertexAttrib4sNV(disp, parameters) (*((disp)->VertexAttrib4sNV)) parameters
+#define GET_VertexAttrib4sNV(disp) ((disp)->VertexAttrib4sNV)
+#define SET_VertexAttrib4sNV(disp, fn) ((disp)->VertexAttrib4sNV = fn)
+#define CALL_VertexAttrib4svNV(disp, parameters) (*((disp)->VertexAttrib4svNV)) parameters
+#define GET_VertexAttrib4svNV(disp) ((disp)->VertexAttrib4svNV)
+#define SET_VertexAttrib4svNV(disp, fn) ((disp)->VertexAttrib4svNV = fn)
+#define CALL_VertexAttrib4ubNV(disp, parameters) (*((disp)->VertexAttrib4ubNV)) parameters
+#define GET_VertexAttrib4ubNV(disp) ((disp)->VertexAttrib4ubNV)
+#define SET_VertexAttrib4ubNV(disp, fn) ((disp)->VertexAttrib4ubNV = fn)
+#define CALL_VertexAttrib4ubvNV(disp, parameters) (*((disp)->VertexAttrib4ubvNV)) parameters
+#define GET_VertexAttrib4ubvNV(disp) ((disp)->VertexAttrib4ubvNV)
+#define SET_VertexAttrib4ubvNV(disp, fn) ((disp)->VertexAttrib4ubvNV = fn)
+#define CALL_VertexAttribPointerNV(disp, parameters) (*((disp)->VertexAttribPointerNV)) parameters
+#define GET_VertexAttribPointerNV(disp) ((disp)->VertexAttribPointerNV)
+#define SET_VertexAttribPointerNV(disp, fn) ((disp)->VertexAttribPointerNV = fn)
+#define CALL_VertexAttribs1dvNV(disp, parameters) (*((disp)->VertexAttribs1dvNV)) parameters
+#define GET_VertexAttribs1dvNV(disp) ((disp)->VertexAttribs1dvNV)
+#define SET_VertexAttribs1dvNV(disp, fn) ((disp)->VertexAttribs1dvNV = fn)
+#define CALL_VertexAttribs1fvNV(disp, parameters) (*((disp)->VertexAttribs1fvNV)) parameters
+#define GET_VertexAttribs1fvNV(disp) ((disp)->VertexAttribs1fvNV)
+#define SET_VertexAttribs1fvNV(disp, fn) ((disp)->VertexAttribs1fvNV = fn)
+#define CALL_VertexAttribs1svNV(disp, parameters) (*((disp)->VertexAttribs1svNV)) parameters
+#define GET_VertexAttribs1svNV(disp) ((disp)->VertexAttribs1svNV)
+#define SET_VertexAttribs1svNV(disp, fn) ((disp)->VertexAttribs1svNV = fn)
+#define CALL_VertexAttribs2dvNV(disp, parameters) (*((disp)->VertexAttribs2dvNV)) parameters
+#define GET_VertexAttribs2dvNV(disp) ((disp)->VertexAttribs2dvNV)
+#define SET_VertexAttribs2dvNV(disp, fn) ((disp)->VertexAttribs2dvNV = fn)
+#define CALL_VertexAttribs2fvNV(disp, parameters) (*((disp)->VertexAttribs2fvNV)) parameters
+#define GET_VertexAttribs2fvNV(disp) ((disp)->VertexAttribs2fvNV)
+#define SET_VertexAttribs2fvNV(disp, fn) ((disp)->VertexAttribs2fvNV = fn)
+#define CALL_VertexAttribs2svNV(disp, parameters) (*((disp)->VertexAttribs2svNV)) parameters
+#define GET_VertexAttribs2svNV(disp) ((disp)->VertexAttribs2svNV)
+#define SET_VertexAttribs2svNV(disp, fn) ((disp)->VertexAttribs2svNV = fn)
+#define CALL_VertexAttribs3dvNV(disp, parameters) (*((disp)->VertexAttribs3dvNV)) parameters
+#define GET_VertexAttribs3dvNV(disp) ((disp)->VertexAttribs3dvNV)
+#define SET_VertexAttribs3dvNV(disp, fn) ((disp)->VertexAttribs3dvNV = fn)
+#define CALL_VertexAttribs3fvNV(disp, parameters) (*((disp)->VertexAttribs3fvNV)) parameters
+#define GET_VertexAttribs3fvNV(disp) ((disp)->VertexAttribs3fvNV)
+#define SET_VertexAttribs3fvNV(disp, fn) ((disp)->VertexAttribs3fvNV = fn)
+#define CALL_VertexAttribs3svNV(disp, parameters) (*((disp)->VertexAttribs3svNV)) parameters
+#define GET_VertexAttribs3svNV(disp) ((disp)->VertexAttribs3svNV)
+#define SET_VertexAttribs3svNV(disp, fn) ((disp)->VertexAttribs3svNV = fn)
+#define CALL_VertexAttribs4dvNV(disp, parameters) (*((disp)->VertexAttribs4dvNV)) parameters
+#define GET_VertexAttribs4dvNV(disp) ((disp)->VertexAttribs4dvNV)
+#define SET_VertexAttribs4dvNV(disp, fn) ((disp)->VertexAttribs4dvNV = fn)
+#define CALL_VertexAttribs4fvNV(disp, parameters) (*((disp)->VertexAttribs4fvNV)) parameters
+#define GET_VertexAttribs4fvNV(disp) ((disp)->VertexAttribs4fvNV)
+#define SET_VertexAttribs4fvNV(disp, fn) ((disp)->VertexAttribs4fvNV = fn)
+#define CALL_VertexAttribs4svNV(disp, parameters) (*((disp)->VertexAttribs4svNV)) parameters
+#define GET_VertexAttribs4svNV(disp) ((disp)->VertexAttribs4svNV)
+#define SET_VertexAttribs4svNV(disp, fn) ((disp)->VertexAttribs4svNV = fn)
+#define CALL_VertexAttribs4ubvNV(disp, parameters) (*((disp)->VertexAttribs4ubvNV)) parameters
+#define GET_VertexAttribs4ubvNV(disp) ((disp)->VertexAttribs4ubvNV)
+#define SET_VertexAttribs4ubvNV(disp, fn) ((disp)->VertexAttribs4ubvNV = fn)
+#define CALL_GetTexBumpParameterfvATI(disp, parameters) (*((disp)->GetTexBumpParameterfvATI)) parameters
+#define GET_GetTexBumpParameterfvATI(disp) ((disp)->GetTexBumpParameterfvATI)
+#define SET_GetTexBumpParameterfvATI(disp, fn) ((disp)->GetTexBumpParameterfvATI = fn)
+#define CALL_GetTexBumpParameterivATI(disp, parameters) (*((disp)->GetTexBumpParameterivATI)) parameters
+#define GET_GetTexBumpParameterivATI(disp) ((disp)->GetTexBumpParameterivATI)
+#define SET_GetTexBumpParameterivATI(disp, fn) ((disp)->GetTexBumpParameterivATI = fn)
+#define CALL_TexBumpParameterfvATI(disp, parameters) (*((disp)->TexBumpParameterfvATI)) parameters
+#define GET_TexBumpParameterfvATI(disp) ((disp)->TexBumpParameterfvATI)
+#define SET_TexBumpParameterfvATI(disp, fn) ((disp)->TexBumpParameterfvATI = fn)
+#define CALL_TexBumpParameterivATI(disp, parameters) (*((disp)->TexBumpParameterivATI)) parameters
+#define GET_TexBumpParameterivATI(disp) ((disp)->TexBumpParameterivATI)
+#define SET_TexBumpParameterivATI(disp, fn) ((disp)->TexBumpParameterivATI = fn)
+#define CALL_AlphaFragmentOp1ATI(disp, parameters) (*((disp)->AlphaFragmentOp1ATI)) parameters
+#define GET_AlphaFragmentOp1ATI(disp) ((disp)->AlphaFragmentOp1ATI)
+#define SET_AlphaFragmentOp1ATI(disp, fn) ((disp)->AlphaFragmentOp1ATI = fn)
+#define CALL_AlphaFragmentOp2ATI(disp, parameters) (*((disp)->AlphaFragmentOp2ATI)) parameters
+#define GET_AlphaFragmentOp2ATI(disp) ((disp)->AlphaFragmentOp2ATI)
+#define SET_AlphaFragmentOp2ATI(disp, fn) ((disp)->AlphaFragmentOp2ATI = fn)
+#define CALL_AlphaFragmentOp3ATI(disp, parameters) (*((disp)->AlphaFragmentOp3ATI)) parameters
+#define GET_AlphaFragmentOp3ATI(disp) ((disp)->AlphaFragmentOp3ATI)
+#define SET_AlphaFragmentOp3ATI(disp, fn) ((disp)->AlphaFragmentOp3ATI = fn)
+#define CALL_BeginFragmentShaderATI(disp, parameters) (*((disp)->BeginFragmentShaderATI)) parameters
+#define GET_BeginFragmentShaderATI(disp) ((disp)->BeginFragmentShaderATI)
+#define SET_BeginFragmentShaderATI(disp, fn) ((disp)->BeginFragmentShaderATI = fn)
+#define CALL_BindFragmentShaderATI(disp, parameters) (*((disp)->BindFragmentShaderATI)) parameters
+#define GET_BindFragmentShaderATI(disp) ((disp)->BindFragmentShaderATI)
+#define SET_BindFragmentShaderATI(disp, fn) ((disp)->BindFragmentShaderATI = fn)
+#define CALL_ColorFragmentOp1ATI(disp, parameters) (*((disp)->ColorFragmentOp1ATI)) parameters
+#define GET_ColorFragmentOp1ATI(disp) ((disp)->ColorFragmentOp1ATI)
+#define SET_ColorFragmentOp1ATI(disp, fn) ((disp)->ColorFragmentOp1ATI = fn)
+#define CALL_ColorFragmentOp2ATI(disp, parameters) (*((disp)->ColorFragmentOp2ATI)) parameters
+#define GET_ColorFragmentOp2ATI(disp) ((disp)->ColorFragmentOp2ATI)
+#define SET_ColorFragmentOp2ATI(disp, fn) ((disp)->ColorFragmentOp2ATI = fn)
+#define CALL_ColorFragmentOp3ATI(disp, parameters) (*((disp)->ColorFragmentOp3ATI)) parameters
+#define GET_ColorFragmentOp3ATI(disp) ((disp)->ColorFragmentOp3ATI)
+#define SET_ColorFragmentOp3ATI(disp, fn) ((disp)->ColorFragmentOp3ATI = fn)
+#define CALL_DeleteFragmentShaderATI(disp, parameters) (*((disp)->DeleteFragmentShaderATI)) parameters
+#define GET_DeleteFragmentShaderATI(disp) ((disp)->DeleteFragmentShaderATI)
+#define SET_DeleteFragmentShaderATI(disp, fn) ((disp)->DeleteFragmentShaderATI = fn)
+#define CALL_EndFragmentShaderATI(disp, parameters) (*((disp)->EndFragmentShaderATI)) parameters
+#define GET_EndFragmentShaderATI(disp) ((disp)->EndFragmentShaderATI)
+#define SET_EndFragmentShaderATI(disp, fn) ((disp)->EndFragmentShaderATI = fn)
+#define CALL_GenFragmentShadersATI(disp, parameters) (*((disp)->GenFragmentShadersATI)) parameters
+#define GET_GenFragmentShadersATI(disp) ((disp)->GenFragmentShadersATI)
+#define SET_GenFragmentShadersATI(disp, fn) ((disp)->GenFragmentShadersATI = fn)
+#define CALL_PassTexCoordATI(disp, parameters) (*((disp)->PassTexCoordATI)) parameters
+#define GET_PassTexCoordATI(disp) ((disp)->PassTexCoordATI)
+#define SET_PassTexCoordATI(disp, fn) ((disp)->PassTexCoordATI = fn)
+#define CALL_SampleMapATI(disp, parameters) (*((disp)->SampleMapATI)) parameters
+#define GET_SampleMapATI(disp) ((disp)->SampleMapATI)
+#define SET_SampleMapATI(disp, fn) ((disp)->SampleMapATI = fn)
+#define CALL_SetFragmentShaderConstantATI(disp, parameters) (*((disp)->SetFragmentShaderConstantATI)) parameters
+#define GET_SetFragmentShaderConstantATI(disp) ((disp)->SetFragmentShaderConstantATI)
+#define SET_SetFragmentShaderConstantATI(disp, fn) ((disp)->SetFragmentShaderConstantATI = fn)
+#define CALL_PointParameteriNV(disp, parameters) (*((disp)->PointParameteriNV)) parameters
+#define GET_PointParameteriNV(disp) ((disp)->PointParameteriNV)
+#define SET_PointParameteriNV(disp, fn) ((disp)->PointParameteriNV = fn)
+#define CALL_PointParameterivNV(disp, parameters) (*((disp)->PointParameterivNV)) parameters
+#define GET_PointParameterivNV(disp) ((disp)->PointParameterivNV)
+#define SET_PointParameterivNV(disp, fn) ((disp)->PointParameterivNV = fn)
+#define CALL_ActiveStencilFaceEXT(disp, parameters) (*((disp)->ActiveStencilFaceEXT)) parameters
+#define GET_ActiveStencilFaceEXT(disp) ((disp)->ActiveStencilFaceEXT)
+#define SET_ActiveStencilFaceEXT(disp, fn) ((disp)->ActiveStencilFaceEXT = fn)
+#define CALL_BindVertexArrayAPPLE(disp, parameters) (*((disp)->BindVertexArrayAPPLE)) parameters
+#define GET_BindVertexArrayAPPLE(disp) ((disp)->BindVertexArrayAPPLE)
+#define SET_BindVertexArrayAPPLE(disp, fn) ((disp)->BindVertexArrayAPPLE = fn)
+#define CALL_DeleteVertexArraysAPPLE(disp, parameters) (*((disp)->DeleteVertexArraysAPPLE)) parameters
+#define GET_DeleteVertexArraysAPPLE(disp) ((disp)->DeleteVertexArraysAPPLE)
+#define SET_DeleteVertexArraysAPPLE(disp, fn) ((disp)->DeleteVertexArraysAPPLE = fn)
+#define CALL_GenVertexArraysAPPLE(disp, parameters) (*((disp)->GenVertexArraysAPPLE)) parameters
+#define GET_GenVertexArraysAPPLE(disp) ((disp)->GenVertexArraysAPPLE)
+#define SET_GenVertexArraysAPPLE(disp, fn) ((disp)->GenVertexArraysAPPLE = fn)
+#define CALL_IsVertexArrayAPPLE(disp, parameters) (*((disp)->IsVertexArrayAPPLE)) parameters
+#define GET_IsVertexArrayAPPLE(disp) ((disp)->IsVertexArrayAPPLE)
+#define SET_IsVertexArrayAPPLE(disp, fn) ((disp)->IsVertexArrayAPPLE = fn)
+#define CALL_GetProgramNamedParameterdvNV(disp, parameters) (*((disp)->GetProgramNamedParameterdvNV)) parameters
+#define GET_GetProgramNamedParameterdvNV(disp) ((disp)->GetProgramNamedParameterdvNV)
+#define SET_GetProgramNamedParameterdvNV(disp, fn) ((disp)->GetProgramNamedParameterdvNV = fn)
+#define CALL_GetProgramNamedParameterfvNV(disp, parameters) (*((disp)->GetProgramNamedParameterfvNV)) parameters
+#define GET_GetProgramNamedParameterfvNV(disp) ((disp)->GetProgramNamedParameterfvNV)
+#define SET_GetProgramNamedParameterfvNV(disp, fn) ((disp)->GetProgramNamedParameterfvNV = fn)
+#define CALL_ProgramNamedParameter4dNV(disp, parameters) (*((disp)->ProgramNamedParameter4dNV)) parameters
+#define GET_ProgramNamedParameter4dNV(disp) ((disp)->ProgramNamedParameter4dNV)
+#define SET_ProgramNamedParameter4dNV(disp, fn) ((disp)->ProgramNamedParameter4dNV = fn)
+#define CALL_ProgramNamedParameter4dvNV(disp, parameters) (*((disp)->ProgramNamedParameter4dvNV)) parameters
+#define GET_ProgramNamedParameter4dvNV(disp) ((disp)->ProgramNamedParameter4dvNV)
+#define SET_ProgramNamedParameter4dvNV(disp, fn) ((disp)->ProgramNamedParameter4dvNV = fn)
+#define CALL_ProgramNamedParameter4fNV(disp, parameters) (*((disp)->ProgramNamedParameter4fNV)) parameters
+#define GET_ProgramNamedParameter4fNV(disp) ((disp)->ProgramNamedParameter4fNV)
+#define SET_ProgramNamedParameter4fNV(disp, fn) ((disp)->ProgramNamedParameter4fNV = fn)
+#define CALL_ProgramNamedParameter4fvNV(disp, parameters) (*((disp)->ProgramNamedParameter4fvNV)) parameters
+#define GET_ProgramNamedParameter4fvNV(disp) ((disp)->ProgramNamedParameter4fvNV)
+#define SET_ProgramNamedParameter4fvNV(disp, fn) ((disp)->ProgramNamedParameter4fvNV = fn)
+#define CALL_DepthBoundsEXT(disp, parameters) (*((disp)->DepthBoundsEXT)) parameters
+#define GET_DepthBoundsEXT(disp) ((disp)->DepthBoundsEXT)
+#define SET_DepthBoundsEXT(disp, fn) ((disp)->DepthBoundsEXT = fn)
+#define CALL_BlendEquationSeparateEXT(disp, parameters) (*((disp)->BlendEquationSeparateEXT)) parameters
+#define GET_BlendEquationSeparateEXT(disp) ((disp)->BlendEquationSeparateEXT)
+#define SET_BlendEquationSeparateEXT(disp, fn) ((disp)->BlendEquationSeparateEXT = fn)
+#define CALL_BindFramebufferEXT(disp, parameters) (*((disp)->BindFramebufferEXT)) parameters
+#define GET_BindFramebufferEXT(disp) ((disp)->BindFramebufferEXT)
+#define SET_BindFramebufferEXT(disp, fn) ((disp)->BindFramebufferEXT = fn)
+#define CALL_BindRenderbufferEXT(disp, parameters) (*((disp)->BindRenderbufferEXT)) parameters
+#define GET_BindRenderbufferEXT(disp) ((disp)->BindRenderbufferEXT)
+#define SET_BindRenderbufferEXT(disp, fn) ((disp)->BindRenderbufferEXT = fn)
+#define CALL_CheckFramebufferStatusEXT(disp, parameters) (*((disp)->CheckFramebufferStatusEXT)) parameters
+#define GET_CheckFramebufferStatusEXT(disp) ((disp)->CheckFramebufferStatusEXT)
+#define SET_CheckFramebufferStatusEXT(disp, fn) ((disp)->CheckFramebufferStatusEXT = fn)
+#define CALL_DeleteFramebuffersEXT(disp, parameters) (*((disp)->DeleteFramebuffersEXT)) parameters
+#define GET_DeleteFramebuffersEXT(disp) ((disp)->DeleteFramebuffersEXT)
+#define SET_DeleteFramebuffersEXT(disp, fn) ((disp)->DeleteFramebuffersEXT = fn)
+#define CALL_DeleteRenderbuffersEXT(disp, parameters) (*((disp)->DeleteRenderbuffersEXT)) parameters
+#define GET_DeleteRenderbuffersEXT(disp) ((disp)->DeleteRenderbuffersEXT)
+#define SET_DeleteRenderbuffersEXT(disp, fn) ((disp)->DeleteRenderbuffersEXT = fn)
+#define CALL_FramebufferRenderbufferEXT(disp, parameters) (*((disp)->FramebufferRenderbufferEXT)) parameters
+#define GET_FramebufferRenderbufferEXT(disp) ((disp)->FramebufferRenderbufferEXT)
+#define SET_FramebufferRenderbufferEXT(disp, fn) ((disp)->FramebufferRenderbufferEXT = fn)
+#define CALL_FramebufferTexture1DEXT(disp, parameters) (*((disp)->FramebufferTexture1DEXT)) parameters
+#define GET_FramebufferTexture1DEXT(disp) ((disp)->FramebufferTexture1DEXT)
+#define SET_FramebufferTexture1DEXT(disp, fn) ((disp)->FramebufferTexture1DEXT = fn)
+#define CALL_FramebufferTexture2DEXT(disp, parameters) (*((disp)->FramebufferTexture2DEXT)) parameters
+#define GET_FramebufferTexture2DEXT(disp) ((disp)->FramebufferTexture2DEXT)
+#define SET_FramebufferTexture2DEXT(disp, fn) ((disp)->FramebufferTexture2DEXT = fn)
+#define CALL_FramebufferTexture3DEXT(disp, parameters) (*((disp)->FramebufferTexture3DEXT)) parameters
+#define GET_FramebufferTexture3DEXT(disp) ((disp)->FramebufferTexture3DEXT)
+#define SET_FramebufferTexture3DEXT(disp, fn) ((disp)->FramebufferTexture3DEXT = fn)
+#define CALL_GenFramebuffersEXT(disp, parameters) (*((disp)->GenFramebuffersEXT)) parameters
+#define GET_GenFramebuffersEXT(disp) ((disp)->GenFramebuffersEXT)
+#define SET_GenFramebuffersEXT(disp, fn) ((disp)->GenFramebuffersEXT = fn)
+#define CALL_GenRenderbuffersEXT(disp, parameters) (*((disp)->GenRenderbuffersEXT)) parameters
+#define GET_GenRenderbuffersEXT(disp) ((disp)->GenRenderbuffersEXT)
+#define SET_GenRenderbuffersEXT(disp, fn) ((disp)->GenRenderbuffersEXT = fn)
+#define CALL_GenerateMipmapEXT(disp, parameters) (*((disp)->GenerateMipmapEXT)) parameters
+#define GET_GenerateMipmapEXT(disp) ((disp)->GenerateMipmapEXT)
+#define SET_GenerateMipmapEXT(disp, fn) ((disp)->GenerateMipmapEXT = fn)
+#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) (*((disp)->GetFramebufferAttachmentParameterivEXT)) parameters
+#define GET_GetFramebufferAttachmentParameterivEXT(disp) ((disp)->GetFramebufferAttachmentParameterivEXT)
+#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) ((disp)->GetFramebufferAttachmentParameterivEXT = fn)
+#define CALL_GetRenderbufferParameterivEXT(disp, parameters) (*((disp)->GetRenderbufferParameterivEXT)) parameters
+#define GET_GetRenderbufferParameterivEXT(disp) ((disp)->GetRenderbufferParameterivEXT)
+#define SET_GetRenderbufferParameterivEXT(disp, fn) ((disp)->GetRenderbufferParameterivEXT = fn)
+#define CALL_IsFramebufferEXT(disp, parameters) (*((disp)->IsFramebufferEXT)) parameters
+#define GET_IsFramebufferEXT(disp) ((disp)->IsFramebufferEXT)
+#define SET_IsFramebufferEXT(disp, fn) ((disp)->IsFramebufferEXT = fn)
+#define CALL_IsRenderbufferEXT(disp, parameters) (*((disp)->IsRenderbufferEXT)) parameters
+#define GET_IsRenderbufferEXT(disp) ((disp)->IsRenderbufferEXT)
+#define SET_IsRenderbufferEXT(disp, fn) ((disp)->IsRenderbufferEXT = fn)
+#define CALL_RenderbufferStorageEXT(disp, parameters) (*((disp)->RenderbufferStorageEXT)) parameters
+#define GET_RenderbufferStorageEXT(disp) ((disp)->RenderbufferStorageEXT)
+#define SET_RenderbufferStorageEXT(disp, fn) ((disp)->RenderbufferStorageEXT = fn)
+#define CALL_BlitFramebufferEXT(disp, parameters) (*((disp)->BlitFramebufferEXT)) parameters
+#define GET_BlitFramebufferEXT(disp) ((disp)->BlitFramebufferEXT)
+#define SET_BlitFramebufferEXT(disp, fn) ((disp)->BlitFramebufferEXT = fn)
+#define CALL_BufferParameteriAPPLE(disp, parameters) (*((disp)->BufferParameteriAPPLE)) parameters
+#define GET_BufferParameteriAPPLE(disp) ((disp)->BufferParameteriAPPLE)
+#define SET_BufferParameteriAPPLE(disp, fn) ((disp)->BufferParameteriAPPLE = fn)
+#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) (*((disp)->FlushMappedBufferRangeAPPLE)) parameters
+#define GET_FlushMappedBufferRangeAPPLE(disp) ((disp)->FlushMappedBufferRangeAPPLE)
+#define SET_FlushMappedBufferRangeAPPLE(disp, fn) ((disp)->FlushMappedBufferRangeAPPLE = fn)
+#define CALL_FramebufferTextureLayerEXT(disp, parameters) (*((disp)->FramebufferTextureLayerEXT)) parameters
+#define GET_FramebufferTextureLayerEXT(disp) ((disp)->FramebufferTextureLayerEXT)
+#define SET_FramebufferTextureLayerEXT(disp, fn) ((disp)->FramebufferTextureLayerEXT = fn)
+#define CALL_ColorMaskIndexedEXT(disp, parameters) (*((disp)->ColorMaskIndexedEXT)) parameters
+#define GET_ColorMaskIndexedEXT(disp) ((disp)->ColorMaskIndexedEXT)
+#define SET_ColorMaskIndexedEXT(disp, fn) ((disp)->ColorMaskIndexedEXT = fn)
+#define CALL_DisableIndexedEXT(disp, parameters) (*((disp)->DisableIndexedEXT)) parameters
+#define GET_DisableIndexedEXT(disp) ((disp)->DisableIndexedEXT)
+#define SET_DisableIndexedEXT(disp, fn) ((disp)->DisableIndexedEXT = fn)
+#define CALL_EnableIndexedEXT(disp, parameters) (*((disp)->EnableIndexedEXT)) parameters
+#define GET_EnableIndexedEXT(disp) ((disp)->EnableIndexedEXT)
+#define SET_EnableIndexedEXT(disp, fn) ((disp)->EnableIndexedEXT = fn)
+#define CALL_GetBooleanIndexedvEXT(disp, parameters) (*((disp)->GetBooleanIndexedvEXT)) parameters
+#define GET_GetBooleanIndexedvEXT(disp) ((disp)->GetBooleanIndexedvEXT)
+#define SET_GetBooleanIndexedvEXT(disp, fn) ((disp)->GetBooleanIndexedvEXT = fn)
+#define CALL_GetIntegerIndexedvEXT(disp, parameters) (*((disp)->GetIntegerIndexedvEXT)) parameters
+#define GET_GetIntegerIndexedvEXT(disp) ((disp)->GetIntegerIndexedvEXT)
+#define SET_GetIntegerIndexedvEXT(disp, fn) ((disp)->GetIntegerIndexedvEXT = fn)
+#define CALL_IsEnabledIndexedEXT(disp, parameters) (*((disp)->IsEnabledIndexedEXT)) parameters
+#define GET_IsEnabledIndexedEXT(disp) ((disp)->IsEnabledIndexedEXT)
+#define SET_IsEnabledIndexedEXT(disp, fn) ((disp)->IsEnabledIndexedEXT = fn)
+#define CALL_BeginConditionalRenderNV(disp, parameters) (*((disp)->BeginConditionalRenderNV)) parameters
+#define GET_BeginConditionalRenderNV(disp) ((disp)->BeginConditionalRenderNV)
+#define SET_BeginConditionalRenderNV(disp, fn) ((disp)->BeginConditionalRenderNV = fn)
+#define CALL_EndConditionalRenderNV(disp, parameters) (*((disp)->EndConditionalRenderNV)) parameters
+#define GET_EndConditionalRenderNV(disp) ((disp)->EndConditionalRenderNV)
+#define SET_EndConditionalRenderNV(disp, fn) ((disp)->EndConditionalRenderNV = fn)
+#define CALL_BeginTransformFeedbackEXT(disp, parameters) (*((disp)->BeginTransformFeedbackEXT)) parameters
+#define GET_BeginTransformFeedbackEXT(disp) ((disp)->BeginTransformFeedbackEXT)
+#define SET_BeginTransformFeedbackEXT(disp, fn) ((disp)->BeginTransformFeedbackEXT = fn)
+#define CALL_BindBufferBaseEXT(disp, parameters) (*((disp)->BindBufferBaseEXT)) parameters
+#define GET_BindBufferBaseEXT(disp) ((disp)->BindBufferBaseEXT)
+#define SET_BindBufferBaseEXT(disp, fn) ((disp)->BindBufferBaseEXT = fn)
+#define CALL_BindBufferOffsetEXT(disp, parameters) (*((disp)->BindBufferOffsetEXT)) parameters
+#define GET_BindBufferOffsetEXT(disp) ((disp)->BindBufferOffsetEXT)
+#define SET_BindBufferOffsetEXT(disp, fn) ((disp)->BindBufferOffsetEXT = fn)
+#define CALL_BindBufferRangeEXT(disp, parameters) (*((disp)->BindBufferRangeEXT)) parameters
+#define GET_BindBufferRangeEXT(disp) ((disp)->BindBufferRangeEXT)
+#define SET_BindBufferRangeEXT(disp, fn) ((disp)->BindBufferRangeEXT = fn)
+#define CALL_EndTransformFeedbackEXT(disp, parameters) (*((disp)->EndTransformFeedbackEXT)) parameters
+#define GET_EndTransformFeedbackEXT(disp) ((disp)->EndTransformFeedbackEXT)
+#define SET_EndTransformFeedbackEXT(disp, fn) ((disp)->EndTransformFeedbackEXT = fn)
+#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) (*((disp)->GetTransformFeedbackVaryingEXT)) parameters
+#define GET_GetTransformFeedbackVaryingEXT(disp) ((disp)->GetTransformFeedbackVaryingEXT)
+#define SET_GetTransformFeedbackVaryingEXT(disp, fn) ((disp)->GetTransformFeedbackVaryingEXT = fn)
+#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) (*((disp)->TransformFeedbackVaryingsEXT)) parameters
+#define GET_TransformFeedbackVaryingsEXT(disp) ((disp)->TransformFeedbackVaryingsEXT)
+#define SET_TransformFeedbackVaryingsEXT(disp, fn) ((disp)->TransformFeedbackVaryingsEXT = fn)
+#define CALL_ProvokingVertexEXT(disp, parameters) (*((disp)->ProvokingVertexEXT)) parameters
+#define GET_ProvokingVertexEXT(disp) ((disp)->ProvokingVertexEXT)
+#define SET_ProvokingVertexEXT(disp, fn) ((disp)->ProvokingVertexEXT = fn)
+#define CALL_GetTexParameterPointervAPPLE(disp, parameters) (*((disp)->GetTexParameterPointervAPPLE)) parameters
+#define GET_GetTexParameterPointervAPPLE(disp) ((disp)->GetTexParameterPointervAPPLE)
+#define SET_GetTexParameterPointervAPPLE(disp, fn) ((disp)->GetTexParameterPointervAPPLE = fn)
+#define CALL_TextureRangeAPPLE(disp, parameters) (*((disp)->TextureRangeAPPLE)) parameters
+#define GET_TextureRangeAPPLE(disp) ((disp)->TextureRangeAPPLE)
+#define SET_TextureRangeAPPLE(disp, fn) ((disp)->TextureRangeAPPLE = fn)
+#define CALL_GetObjectParameterivAPPLE(disp, parameters) (*((disp)->GetObjectParameterivAPPLE)) parameters
+#define GET_GetObjectParameterivAPPLE(disp) ((disp)->GetObjectParameterivAPPLE)
+#define SET_GetObjectParameterivAPPLE(disp, fn) ((disp)->GetObjectParameterivAPPLE = fn)
+#define CALL_ObjectPurgeableAPPLE(disp, parameters) (*((disp)->ObjectPurgeableAPPLE)) parameters
+#define GET_ObjectPurgeableAPPLE(disp) ((disp)->ObjectPurgeableAPPLE)
+#define SET_ObjectPurgeableAPPLE(disp, fn) ((disp)->ObjectPurgeableAPPLE = fn)
+#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) (*((disp)->ObjectUnpurgeableAPPLE)) parameters
+#define GET_ObjectUnpurgeableAPPLE(disp) ((disp)->ObjectUnpurgeableAPPLE)
+#define SET_ObjectUnpurgeableAPPLE(disp, fn) ((disp)->ObjectUnpurgeableAPPLE = fn)
+#define CALL_StencilFuncSeparateATI(disp, parameters) (*((disp)->StencilFuncSeparateATI)) parameters
+#define GET_StencilFuncSeparateATI(disp) ((disp)->StencilFuncSeparateATI)
+#define SET_StencilFuncSeparateATI(disp, fn) ((disp)->StencilFuncSeparateATI = fn)
+#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) (*((disp)->ProgramEnvParameters4fvEXT)) parameters
+#define GET_ProgramEnvParameters4fvEXT(disp) ((disp)->ProgramEnvParameters4fvEXT)
+#define SET_ProgramEnvParameters4fvEXT(disp, fn) ((disp)->ProgramEnvParameters4fvEXT = fn)
+#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) (*((disp)->ProgramLocalParameters4fvEXT)) parameters
+#define GET_ProgramLocalParameters4fvEXT(disp) ((disp)->ProgramLocalParameters4fvEXT)
+#define SET_ProgramLocalParameters4fvEXT(disp, fn) ((disp)->ProgramLocalParameters4fvEXT = fn)
+#define CALL_GetQueryObjecti64vEXT(disp, parameters) (*((disp)->GetQueryObjecti64vEXT)) parameters
+#define GET_GetQueryObjecti64vEXT(disp) ((disp)->GetQueryObjecti64vEXT)
+#define SET_GetQueryObjecti64vEXT(disp, fn) ((disp)->GetQueryObjecti64vEXT = fn)
+#define CALL_GetQueryObjectui64vEXT(disp, parameters) (*((disp)->GetQueryObjectui64vEXT)) parameters
+#define GET_GetQueryObjectui64vEXT(disp) ((disp)->GetQueryObjectui64vEXT)
+#define SET_GetQueryObjectui64vEXT(disp, fn) ((disp)->GetQueryObjectui64vEXT = fn)
+#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) (*((disp)->EGLImageTargetRenderbufferStorageOES)) parameters
+#define GET_EGLImageTargetRenderbufferStorageOES(disp) ((disp)->EGLImageTargetRenderbufferStorageOES)
+#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) ((disp)->EGLImageTargetRenderbufferStorageOES = fn)
+#define CALL_EGLImageTargetTexture2DOES(disp, parameters) (*((disp)->EGLImageTargetTexture2DOES)) parameters
+#define GET_EGLImageTargetTexture2DOES(disp) ((disp)->EGLImageTargetTexture2DOES)
+#define SET_EGLImageTargetTexture2DOES(disp, fn) ((disp)->EGLImageTargetTexture2DOES = fn)
+
+#else
+
+#define driDispatchRemapTable_size 409
+extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
+
+#define AttachShader_remap_index 0
+#define CreateProgram_remap_index 1
+#define CreateShader_remap_index 2
+#define DeleteProgram_remap_index 3
+#define DeleteShader_remap_index 4
+#define DetachShader_remap_index 5
+#define GetAttachedShaders_remap_index 6
+#define GetProgramInfoLog_remap_index 7
+#define GetProgramiv_remap_index 8
+#define GetShaderInfoLog_remap_index 9
+#define GetShaderiv_remap_index 10
+#define IsProgram_remap_index 11
+#define IsShader_remap_index 12
+#define StencilFuncSeparate_remap_index 13
+#define StencilMaskSeparate_remap_index 14
+#define StencilOpSeparate_remap_index 15
+#define UniformMatrix2x3fv_remap_index 16
+#define UniformMatrix2x4fv_remap_index 17
+#define UniformMatrix3x2fv_remap_index 18
+#define UniformMatrix3x4fv_remap_index 19
+#define UniformMatrix4x2fv_remap_index 20
+#define UniformMatrix4x3fv_remap_index 21
+#define DrawArraysInstanced_remap_index 22
+#define DrawElementsInstanced_remap_index 23
+#define LoadTransposeMatrixdARB_remap_index 24
+#define LoadTransposeMatrixfARB_remap_index 25
+#define MultTransposeMatrixdARB_remap_index 26
+#define MultTransposeMatrixfARB_remap_index 27
+#define SampleCoverageARB_remap_index 28
+#define CompressedTexImage1DARB_remap_index 29
+#define CompressedTexImage2DARB_remap_index 30
+#define CompressedTexImage3DARB_remap_index 31
+#define CompressedTexSubImage1DARB_remap_index 32
+#define CompressedTexSubImage2DARB_remap_index 33
+#define CompressedTexSubImage3DARB_remap_index 34
+#define GetCompressedTexImageARB_remap_index 35
+#define DisableVertexAttribArrayARB_remap_index 36
+#define EnableVertexAttribArrayARB_remap_index 37
+#define GetProgramEnvParameterdvARB_remap_index 38
+#define GetProgramEnvParameterfvARB_remap_index 39
+#define GetProgramLocalParameterdvARB_remap_index 40
+#define GetProgramLocalParameterfvARB_remap_index 41
+#define GetProgramStringARB_remap_index 42
+#define GetProgramivARB_remap_index 43
+#define GetVertexAttribdvARB_remap_index 44
+#define GetVertexAttribfvARB_remap_index 45
+#define GetVertexAttribivARB_remap_index 46
+#define ProgramEnvParameter4dARB_remap_index 47
+#define ProgramEnvParameter4dvARB_remap_index 48
+#define ProgramEnvParameter4fARB_remap_index 49
+#define ProgramEnvParameter4fvARB_remap_index 50
+#define ProgramLocalParameter4dARB_remap_index 51
+#define ProgramLocalParameter4dvARB_remap_index 52
+#define ProgramLocalParameter4fARB_remap_index 53
+#define ProgramLocalParameter4fvARB_remap_index 54
+#define ProgramStringARB_remap_index 55
+#define VertexAttrib1dARB_remap_index 56
+#define VertexAttrib1dvARB_remap_index 57
+#define VertexAttrib1fARB_remap_index 58
+#define VertexAttrib1fvARB_remap_index 59
+#define VertexAttrib1sARB_remap_index 60
+#define VertexAttrib1svARB_remap_index 61
+#define VertexAttrib2dARB_remap_index 62
+#define VertexAttrib2dvARB_remap_index 63
+#define VertexAttrib2fARB_remap_index 64
+#define VertexAttrib2fvARB_remap_index 65
+#define VertexAttrib2sARB_remap_index 66
+#define VertexAttrib2svARB_remap_index 67
+#define VertexAttrib3dARB_remap_index 68
+#define VertexAttrib3dvARB_remap_index 69
+#define VertexAttrib3fARB_remap_index 70
+#define VertexAttrib3fvARB_remap_index 71
+#define VertexAttrib3sARB_remap_index 72
+#define VertexAttrib3svARB_remap_index 73
+#define VertexAttrib4NbvARB_remap_index 74
+#define VertexAttrib4NivARB_remap_index 75
+#define VertexAttrib4NsvARB_remap_index 76
+#define VertexAttrib4NubARB_remap_index 77
+#define VertexAttrib4NubvARB_remap_index 78
+#define VertexAttrib4NuivARB_remap_index 79
+#define VertexAttrib4NusvARB_remap_index 80
+#define VertexAttrib4bvARB_remap_index 81
+#define VertexAttrib4dARB_remap_index 82
+#define VertexAttrib4dvARB_remap_index 83
+#define VertexAttrib4fARB_remap_index 84
+#define VertexAttrib4fvARB_remap_index 85
+#define VertexAttrib4ivARB_remap_index 86
+#define VertexAttrib4sARB_remap_index 87
+#define VertexAttrib4svARB_remap_index 88
+#define VertexAttrib4ubvARB_remap_index 89
+#define VertexAttrib4uivARB_remap_index 90
+#define VertexAttrib4usvARB_remap_index 91
+#define VertexAttribPointerARB_remap_index 92
+#define BindBufferARB_remap_index 93
+#define BufferDataARB_remap_index 94
+#define BufferSubDataARB_remap_index 95
+#define DeleteBuffersARB_remap_index 96
+#define GenBuffersARB_remap_index 97
+#define GetBufferParameterivARB_remap_index 98
+#define GetBufferPointervARB_remap_index 99
+#define GetBufferSubDataARB_remap_index 100
+#define IsBufferARB_remap_index 101
+#define MapBufferARB_remap_index 102
+#define UnmapBufferARB_remap_index 103
+#define BeginQueryARB_remap_index 104
+#define DeleteQueriesARB_remap_index 105
+#define EndQueryARB_remap_index 106
+#define GenQueriesARB_remap_index 107
+#define GetQueryObjectivARB_remap_index 108
+#define GetQueryObjectuivARB_remap_index 109
+#define GetQueryivARB_remap_index 110
+#define IsQueryARB_remap_index 111
+#define AttachObjectARB_remap_index 112
+#define CompileShaderARB_remap_index 113
+#define CreateProgramObjectARB_remap_index 114
+#define CreateShaderObjectARB_remap_index 115
+#define DeleteObjectARB_remap_index 116
+#define DetachObjectARB_remap_index 117
+#define GetActiveUniformARB_remap_index 118
+#define GetAttachedObjectsARB_remap_index 119
+#define GetHandleARB_remap_index 120
+#define GetInfoLogARB_remap_index 121
+#define GetObjectParameterfvARB_remap_index 122
+#define GetObjectParameterivARB_remap_index 123
+#define GetShaderSourceARB_remap_index 124
+#define GetUniformLocationARB_remap_index 125
+#define GetUniformfvARB_remap_index 126
+#define GetUniformivARB_remap_index 127
+#define LinkProgramARB_remap_index 128
+#define ShaderSourceARB_remap_index 129
+#define Uniform1fARB_remap_index 130
+#define Uniform1fvARB_remap_index 131
+#define Uniform1iARB_remap_index 132
+#define Uniform1ivARB_remap_index 133
+#define Uniform2fARB_remap_index 134
+#define Uniform2fvARB_remap_index 135
+#define Uniform2iARB_remap_index 136
+#define Uniform2ivARB_remap_index 137
+#define Uniform3fARB_remap_index 138
+#define Uniform3fvARB_remap_index 139
+#define Uniform3iARB_remap_index 140
+#define Uniform3ivARB_remap_index 141
+#define Uniform4fARB_remap_index 142
+#define Uniform4fvARB_remap_index 143
+#define Uniform4iARB_remap_index 144
+#define Uniform4ivARB_remap_index 145
+#define UniformMatrix2fvARB_remap_index 146
+#define UniformMatrix3fvARB_remap_index 147
+#define UniformMatrix4fvARB_remap_index 148
+#define UseProgramObjectARB_remap_index 149
+#define ValidateProgramARB_remap_index 150
+#define BindAttribLocationARB_remap_index 151
+#define GetActiveAttribARB_remap_index 152
+#define GetAttribLocationARB_remap_index 153
+#define DrawBuffersARB_remap_index 154
+#define RenderbufferStorageMultisample_remap_index 155
+#define FlushMappedBufferRange_remap_index 156
+#define MapBufferRange_remap_index 157
+#define BindVertexArray_remap_index 158
+#define GenVertexArrays_remap_index 159
+#define CopyBufferSubData_remap_index 160
+#define ClientWaitSync_remap_index 161
+#define DeleteSync_remap_index 162
+#define FenceSync_remap_index 163
+#define GetInteger64v_remap_index 164
+#define GetSynciv_remap_index 165
+#define IsSync_remap_index 166
+#define WaitSync_remap_index 167
+#define DrawElementsBaseVertex_remap_index 168
+#define DrawRangeElementsBaseVertex_remap_index 169
+#define MultiDrawElementsBaseVertex_remap_index 170
+#define PolygonOffsetEXT_remap_index 171
+#define GetPixelTexGenParameterfvSGIS_remap_index 172
+#define GetPixelTexGenParameterivSGIS_remap_index 173
+#define PixelTexGenParameterfSGIS_remap_index 174
+#define PixelTexGenParameterfvSGIS_remap_index 175
+#define PixelTexGenParameteriSGIS_remap_index 176
+#define PixelTexGenParameterivSGIS_remap_index 177
+#define SampleMaskSGIS_remap_index 178
+#define SamplePatternSGIS_remap_index 179
+#define ColorPointerEXT_remap_index 180
+#define EdgeFlagPointerEXT_remap_index 181
+#define IndexPointerEXT_remap_index 182
+#define NormalPointerEXT_remap_index 183
+#define TexCoordPointerEXT_remap_index 184
+#define VertexPointerEXT_remap_index 185
+#define PointParameterfEXT_remap_index 186
+#define PointParameterfvEXT_remap_index 187
+#define LockArraysEXT_remap_index 188
+#define UnlockArraysEXT_remap_index 189
+#define CullParameterdvEXT_remap_index 190
+#define CullParameterfvEXT_remap_index 191
+#define SecondaryColor3bEXT_remap_index 192
+#define SecondaryColor3bvEXT_remap_index 193
+#define SecondaryColor3dEXT_remap_index 194
+#define SecondaryColor3dvEXT_remap_index 195
+#define SecondaryColor3fEXT_remap_index 196
+#define SecondaryColor3fvEXT_remap_index 197
+#define SecondaryColor3iEXT_remap_index 198
+#define SecondaryColor3ivEXT_remap_index 199
+#define SecondaryColor3sEXT_remap_index 200
+#define SecondaryColor3svEXT_remap_index 201
+#define SecondaryColor3ubEXT_remap_index 202
+#define SecondaryColor3ubvEXT_remap_index 203
+#define SecondaryColor3uiEXT_remap_index 204
+#define SecondaryColor3uivEXT_remap_index 205
+#define SecondaryColor3usEXT_remap_index 206
+#define SecondaryColor3usvEXT_remap_index 207
+#define SecondaryColorPointerEXT_remap_index 208
+#define MultiDrawArraysEXT_remap_index 209
+#define MultiDrawElementsEXT_remap_index 210
+#define FogCoordPointerEXT_remap_index 211
+#define FogCoorddEXT_remap_index 212
+#define FogCoorddvEXT_remap_index 213
+#define FogCoordfEXT_remap_index 214
+#define FogCoordfvEXT_remap_index 215
+#define PixelTexGenSGIX_remap_index 216
+#define BlendFuncSeparateEXT_remap_index 217
+#define FlushVertexArrayRangeNV_remap_index 218
+#define VertexArrayRangeNV_remap_index 219
+#define CombinerInputNV_remap_index 220
+#define CombinerOutputNV_remap_index 221
+#define CombinerParameterfNV_remap_index 222
+#define CombinerParameterfvNV_remap_index 223
+#define CombinerParameteriNV_remap_index 224
+#define CombinerParameterivNV_remap_index 225
+#define FinalCombinerInputNV_remap_index 226
+#define GetCombinerInputParameterfvNV_remap_index 227
+#define GetCombinerInputParameterivNV_remap_index 228
+#define GetCombinerOutputParameterfvNV_remap_index 229
+#define GetCombinerOutputParameterivNV_remap_index 230
+#define GetFinalCombinerInputParameterfvNV_remap_index 231
+#define GetFinalCombinerInputParameterivNV_remap_index 232
+#define ResizeBuffersMESA_remap_index 233
+#define WindowPos2dMESA_remap_index 234
+#define WindowPos2dvMESA_remap_index 235
+#define WindowPos2fMESA_remap_index 236
+#define WindowPos2fvMESA_remap_index 237
+#define WindowPos2iMESA_remap_index 238
+#define WindowPos2ivMESA_remap_index 239
+#define WindowPos2sMESA_remap_index 240
+#define WindowPos2svMESA_remap_index 241
+#define WindowPos3dMESA_remap_index 242
+#define WindowPos3dvMESA_remap_index 243
+#define WindowPos3fMESA_remap_index 244
+#define WindowPos3fvMESA_remap_index 245
+#define WindowPos3iMESA_remap_index 246
+#define WindowPos3ivMESA_remap_index 247
+#define WindowPos3sMESA_remap_index 248
+#define WindowPos3svMESA_remap_index 249
+#define WindowPos4dMESA_remap_index 250
+#define WindowPos4dvMESA_remap_index 251
+#define WindowPos4fMESA_remap_index 252
+#define WindowPos4fvMESA_remap_index 253
+#define WindowPos4iMESA_remap_index 254
+#define WindowPos4ivMESA_remap_index 255
+#define WindowPos4sMESA_remap_index 256
+#define WindowPos4svMESA_remap_index 257
+#define MultiModeDrawArraysIBM_remap_index 258
+#define MultiModeDrawElementsIBM_remap_index 259
+#define DeleteFencesNV_remap_index 260
+#define FinishFenceNV_remap_index 261
+#define GenFencesNV_remap_index 262
+#define GetFenceivNV_remap_index 263
+#define IsFenceNV_remap_index 264
+#define SetFenceNV_remap_index 265
+#define TestFenceNV_remap_index 266
+#define AreProgramsResidentNV_remap_index 267
+#define BindProgramNV_remap_index 268
+#define DeleteProgramsNV_remap_index 269
+#define ExecuteProgramNV_remap_index 270
+#define GenProgramsNV_remap_index 271
+#define GetProgramParameterdvNV_remap_index 272
+#define GetProgramParameterfvNV_remap_index 273
+#define GetProgramStringNV_remap_index 274
+#define GetProgramivNV_remap_index 275
+#define GetTrackMatrixivNV_remap_index 276
+#define GetVertexAttribPointervNV_remap_index 277
+#define GetVertexAttribdvNV_remap_index 278
+#define GetVertexAttribfvNV_remap_index 279
+#define GetVertexAttribivNV_remap_index 280
+#define IsProgramNV_remap_index 281
+#define LoadProgramNV_remap_index 282
+#define ProgramParameters4dvNV_remap_index 283
+#define ProgramParameters4fvNV_remap_index 284
+#define RequestResidentProgramsNV_remap_index 285
+#define TrackMatrixNV_remap_index 286
+#define VertexAttrib1dNV_remap_index 287
+#define VertexAttrib1dvNV_remap_index 288
+#define VertexAttrib1fNV_remap_index 289
+#define VertexAttrib1fvNV_remap_index 290
+#define VertexAttrib1sNV_remap_index 291
+#define VertexAttrib1svNV_remap_index 292
+#define VertexAttrib2dNV_remap_index 293
+#define VertexAttrib2dvNV_remap_index 294
+#define VertexAttrib2fNV_remap_index 295
+#define VertexAttrib2fvNV_remap_index 296
+#define VertexAttrib2sNV_remap_index 297
+#define VertexAttrib2svNV_remap_index 298
+#define VertexAttrib3dNV_remap_index 299
+#define VertexAttrib3dvNV_remap_index 300
+#define VertexAttrib3fNV_remap_index 301
+#define VertexAttrib3fvNV_remap_index 302
+#define VertexAttrib3sNV_remap_index 303
+#define VertexAttrib3svNV_remap_index 304
+#define VertexAttrib4dNV_remap_index 305
+#define VertexAttrib4dvNV_remap_index 306
+#define VertexAttrib4fNV_remap_index 307
+#define VertexAttrib4fvNV_remap_index 308
+#define VertexAttrib4sNV_remap_index 309
+#define VertexAttrib4svNV_remap_index 310
+#define VertexAttrib4ubNV_remap_index 311
+#define VertexAttrib4ubvNV_remap_index 312
+#define VertexAttribPointerNV_remap_index 313
+#define VertexAttribs1dvNV_remap_index 314
+#define VertexAttribs1fvNV_remap_index 315
+#define VertexAttribs1svNV_remap_index 316
+#define VertexAttribs2dvNV_remap_index 317
+#define VertexAttribs2fvNV_remap_index 318
+#define VertexAttribs2svNV_remap_index 319
+#define VertexAttribs3dvNV_remap_index 320
+#define VertexAttribs3fvNV_remap_index 321
+#define VertexAttribs3svNV_remap_index 322
+#define VertexAttribs4dvNV_remap_index 323
+#define VertexAttribs4fvNV_remap_index 324
+#define VertexAttribs4svNV_remap_index 325
+#define VertexAttribs4ubvNV_remap_index 326
+#define GetTexBumpParameterfvATI_remap_index 327
+#define GetTexBumpParameterivATI_remap_index 328
+#define TexBumpParameterfvATI_remap_index 329
+#define TexBumpParameterivATI_remap_index 330
+#define AlphaFragmentOp1ATI_remap_index 331
+#define AlphaFragmentOp2ATI_remap_index 332
+#define AlphaFragmentOp3ATI_remap_index 333
+#define BeginFragmentShaderATI_remap_index 334
+#define BindFragmentShaderATI_remap_index 335
+#define ColorFragmentOp1ATI_remap_index 336
+#define ColorFragmentOp2ATI_remap_index 337
+#define ColorFragmentOp3ATI_remap_index 338
+#define DeleteFragmentShaderATI_remap_index 339
+#define EndFragmentShaderATI_remap_index 340
+#define GenFragmentShadersATI_remap_index 341
+#define PassTexCoordATI_remap_index 342
+#define SampleMapATI_remap_index 343
+#define SetFragmentShaderConstantATI_remap_index 344
+#define PointParameteriNV_remap_index 345
+#define PointParameterivNV_remap_index 346
+#define ActiveStencilFaceEXT_remap_index 347
+#define BindVertexArrayAPPLE_remap_index 348
+#define DeleteVertexArraysAPPLE_remap_index 349
+#define GenVertexArraysAPPLE_remap_index 350
+#define IsVertexArrayAPPLE_remap_index 351
+#define GetProgramNamedParameterdvNV_remap_index 352
+#define GetProgramNamedParameterfvNV_remap_index 353
+#define ProgramNamedParameter4dNV_remap_index 354
+#define ProgramNamedParameter4dvNV_remap_index 355
+#define ProgramNamedParameter4fNV_remap_index 356
+#define ProgramNamedParameter4fvNV_remap_index 357
+#define DepthBoundsEXT_remap_index 358
+#define BlendEquationSeparateEXT_remap_index 359
+#define BindFramebufferEXT_remap_index 360
+#define BindRenderbufferEXT_remap_index 361
+#define CheckFramebufferStatusEXT_remap_index 362
+#define DeleteFramebuffersEXT_remap_index 363
+#define DeleteRenderbuffersEXT_remap_index 364
+#define FramebufferRenderbufferEXT_remap_index 365
+#define FramebufferTexture1DEXT_remap_index 366
+#define FramebufferTexture2DEXT_remap_index 367
+#define FramebufferTexture3DEXT_remap_index 368
+#define GenFramebuffersEXT_remap_index 369
+#define GenRenderbuffersEXT_remap_index 370
+#define GenerateMipmapEXT_remap_index 371
+#define GetFramebufferAttachmentParameterivEXT_remap_index 372
+#define GetRenderbufferParameterivEXT_remap_index 373
+#define IsFramebufferEXT_remap_index 374
+#define IsRenderbufferEXT_remap_index 375
+#define RenderbufferStorageEXT_remap_index 376
+#define BlitFramebufferEXT_remap_index 377
+#define BufferParameteriAPPLE_remap_index 378
+#define FlushMappedBufferRangeAPPLE_remap_index 379
+#define FramebufferTextureLayerEXT_remap_index 380
+#define ColorMaskIndexedEXT_remap_index 381
+#define DisableIndexedEXT_remap_index 382
+#define EnableIndexedEXT_remap_index 383
+#define GetBooleanIndexedvEXT_remap_index 384
+#define GetIntegerIndexedvEXT_remap_index 385
+#define IsEnabledIndexedEXT_remap_index 386
+#define BeginConditionalRenderNV_remap_index 387
+#define EndConditionalRenderNV_remap_index 388
+#define BeginTransformFeedbackEXT_remap_index 389
+#define BindBufferBaseEXT_remap_index 390
+#define BindBufferOffsetEXT_remap_index 391
+#define BindBufferRangeEXT_remap_index 392
+#define EndTransformFeedbackEXT_remap_index 393
+#define GetTransformFeedbackVaryingEXT_remap_index 394
+#define TransformFeedbackVaryingsEXT_remap_index 395
+#define ProvokingVertexEXT_remap_index 396
+#define GetTexParameterPointervAPPLE_remap_index 397
+#define TextureRangeAPPLE_remap_index 398
+#define GetObjectParameterivAPPLE_remap_index 399
+#define ObjectPurgeableAPPLE_remap_index 400
+#define ObjectUnpurgeableAPPLE_remap_index 401
+#define StencilFuncSeparateATI_remap_index 402
+#define ProgramEnvParameters4fvEXT_remap_index 403
+#define ProgramLocalParameters4fvEXT_remap_index 404
+#define GetQueryObjecti64vEXT_remap_index 405
+#define GetQueryObjectui64vEXT_remap_index 406
+#define EGLImageTargetRenderbufferStorageOES_remap_index 407
+#define EGLImageTargetTexture2DOES_remap_index 408
+
+#define CALL_AttachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[AttachShader_remap_index], parameters)
+#define GET_AttachShader(disp) GET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index])
+#define SET_AttachShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index], fn)
+#define CALL_CreateProgram(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(void)), driDispatchRemapTable[CreateProgram_remap_index], parameters)
+#define GET_CreateProgram(disp) GET_by_offset(disp, driDispatchRemapTable[CreateProgram_remap_index])
+#define SET_CreateProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateProgram_remap_index], fn)
+#define CALL_CreateShader(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CreateShader_remap_index], parameters)
+#define GET_CreateShader(disp) GET_by_offset(disp, driDispatchRemapTable[CreateShader_remap_index])
+#define SET_CreateShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateShader_remap_index], fn)
+#define CALL_DeleteProgram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteProgram_remap_index], parameters)
+#define GET_DeleteProgram(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteProgram_remap_index])
+#define SET_DeleteProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteProgram_remap_index], fn)
+#define CALL_DeleteShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteShader_remap_index], parameters)
+#define GET_DeleteShader(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteShader_remap_index])
+#define SET_DeleteShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteShader_remap_index], fn)
+#define CALL_DetachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[DetachShader_remap_index], parameters)
+#define GET_DetachShader(disp) GET_by_offset(disp, driDispatchRemapTable[DetachShader_remap_index])
+#define SET_DetachShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DetachShader_remap_index], fn)
+#define CALL_GetAttachedShaders(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLuint *)), driDispatchRemapTable[GetAttachedShaders_remap_index], parameters)
+#define GET_GetAttachedShaders(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttachedShaders_remap_index])
+#define SET_GetAttachedShaders(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttachedShaders_remap_index], fn)
+#define CALL_GetProgramInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), driDispatchRemapTable[GetProgramInfoLog_remap_index], parameters)
+#define GET_GetProgramInfoLog(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramInfoLog_remap_index])
+#define SET_GetProgramInfoLog(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramInfoLog_remap_index], fn)
+#define CALL_GetProgramiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetProgramiv_remap_index], parameters)
+#define GET_GetProgramiv(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramiv_remap_index])
+#define SET_GetProgramiv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramiv_remap_index], fn)
+#define CALL_GetShaderInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), driDispatchRemapTable[GetShaderInfoLog_remap_index], parameters)
+#define GET_GetShaderInfoLog(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderInfoLog_remap_index])
+#define SET_GetShaderInfoLog(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderInfoLog_remap_index], fn)
+#define CALL_GetShaderiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetShaderiv_remap_index], parameters)
+#define GET_GetShaderiv(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderiv_remap_index])
+#define SET_GetShaderiv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderiv_remap_index], fn)
+#define CALL_IsProgram(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsProgram_remap_index], parameters)
+#define GET_IsProgram(disp) GET_by_offset(disp, driDispatchRemapTable[IsProgram_remap_index])
+#define SET_IsProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsProgram_remap_index], fn)
+#define CALL_IsShader(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsShader_remap_index], parameters)
+#define GET_IsShader(disp) GET_by_offset(disp, driDispatchRemapTable[IsShader_remap_index])
+#define SET_IsShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsShader_remap_index], fn)
+#define CALL_StencilFuncSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), driDispatchRemapTable[StencilFuncSeparate_remap_index], parameters)
+#define GET_StencilFuncSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparate_remap_index])
+#define SET_StencilFuncSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparate_remap_index], fn)
+#define CALL_StencilMaskSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[StencilMaskSeparate_remap_index], parameters)
+#define GET_StencilMaskSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilMaskSeparate_remap_index])
+#define SET_StencilMaskSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilMaskSeparate_remap_index], fn)
+#define CALL_StencilOpSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[StencilOpSeparate_remap_index], parameters)
+#define GET_StencilOpSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilOpSeparate_remap_index])
+#define SET_StencilOpSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilOpSeparate_remap_index], fn)
+#define CALL_UniformMatrix2x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2x3fv_remap_index], parameters)
+#define GET_UniformMatrix2x3fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x3fv_remap_index])
+#define SET_UniformMatrix2x3fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x3fv_remap_index], fn)
+#define CALL_UniformMatrix2x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2x4fv_remap_index], parameters)
+#define GET_UniformMatrix2x4fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x4fv_remap_index])
+#define SET_UniformMatrix2x4fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x4fv_remap_index], fn)
+#define CALL_UniformMatrix3x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3x2fv_remap_index], parameters)
+#define GET_UniformMatrix3x2fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x2fv_remap_index])
+#define SET_UniformMatrix3x2fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x2fv_remap_index], fn)
+#define CALL_UniformMatrix3x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3x4fv_remap_index], parameters)
+#define GET_UniformMatrix3x4fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x4fv_remap_index])
+#define SET_UniformMatrix3x4fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x4fv_remap_index], fn)
+#define CALL_UniformMatrix4x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4x2fv_remap_index], parameters)
+#define GET_UniformMatrix4x2fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x2fv_remap_index])
+#define SET_UniformMatrix4x2fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x2fv_remap_index], fn)
+#define CALL_UniformMatrix4x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4x3fv_remap_index], parameters)
+#define GET_UniformMatrix4x3fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x3fv_remap_index])
+#define SET_UniformMatrix4x3fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x3fv_remap_index], fn)
+#define CALL_DrawArraysInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), driDispatchRemapTable[DrawArraysInstanced_remap_index], parameters)
+#define GET_DrawArraysInstanced(disp) GET_by_offset(disp, driDispatchRemapTable[DrawArraysInstanced_remap_index])
+#define SET_DrawArraysInstanced(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawArraysInstanced_remap_index], fn)
+#define CALL_DrawElementsInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei)), driDispatchRemapTable[DrawElementsInstanced_remap_index], parameters)
+#define GET_DrawElementsInstanced(disp) GET_by_offset(disp, driDispatchRemapTable[DrawElementsInstanced_remap_index])
+#define SET_DrawElementsInstanced(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawElementsInstanced_remap_index], fn)
+#define CALL_LoadTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index], parameters)
+#define GET_LoadTransposeMatrixdARB(disp) GET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index])
+#define SET_LoadTransposeMatrixdARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index], fn)
+#define CALL_LoadTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index], parameters)
+#define GET_LoadTransposeMatrixfARB(disp) GET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index])
+#define SET_LoadTransposeMatrixfARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index], fn)
+#define CALL_MultTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[MultTransposeMatrixdARB_remap_index], parameters)
+#define GET_MultTransposeMatrixdARB(disp) GET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixdARB_remap_index])
+#define SET_MultTransposeMatrixdARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixdARB_remap_index], fn)
+#define CALL_MultTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[MultTransposeMatrixfARB_remap_index], parameters)
+#define GET_MultTransposeMatrixfARB(disp) GET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixfARB_remap_index])
+#define SET_MultTransposeMatrixfARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixfARB_remap_index], fn)
+#define CALL_SampleCoverageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), driDispatchRemapTable[SampleCoverageARB_remap_index], parameters)
+#define GET_SampleCoverageARB(disp) GET_by_offset(disp, driDispatchRemapTable[SampleCoverageARB_remap_index])
+#define SET_SampleCoverageARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleCoverageARB_remap_index], fn)
+#define CALL_CompressedTexImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage1DARB_remap_index], parameters)
+#define GET_CompressedTexImage1DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage1DARB_remap_index])
+#define SET_CompressedTexImage1DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage1DARB_remap_index], fn)
+#define CALL_CompressedTexImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage2DARB_remap_index], parameters)
+#define GET_CompressedTexImage2DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage2DARB_remap_index])
+#define SET_CompressedTexImage2DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage2DARB_remap_index], fn)
+#define CALL_CompressedTexImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage3DARB_remap_index], parameters)
+#define GET_CompressedTexImage3DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage3DARB_remap_index])
+#define SET_CompressedTexImage3DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage3DARB_remap_index], fn)
+#define CALL_CompressedTexSubImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index], parameters)
+#define GET_CompressedTexSubImage1DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index])
+#define SET_CompressedTexSubImage1DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index], fn)
+#define CALL_CompressedTexSubImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index], parameters)
+#define GET_CompressedTexSubImage2DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index])
+#define SET_CompressedTexSubImage2DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index], fn)
+#define CALL_CompressedTexSubImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index], parameters)
+#define GET_CompressedTexSubImage3DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index])
+#define SET_CompressedTexSubImage3DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index], fn)
+#define CALL_GetCompressedTexImageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLvoid *)), driDispatchRemapTable[GetCompressedTexImageARB_remap_index], parameters)
+#define GET_GetCompressedTexImageARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetCompressedTexImageARB_remap_index])
+#define SET_GetCompressedTexImageARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCompressedTexImageARB_remap_index], fn)
+#define CALL_DisableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index], parameters)
+#define GET_DisableVertexAttribArrayARB(disp) GET_by_offset(disp, driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index])
+#define SET_DisableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index], fn)
+#define CALL_EnableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index], parameters)
+#define GET_EnableVertexAttribArrayARB(disp) GET_by_offset(disp, driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index])
+#define SET_EnableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index], fn)
+#define CALL_GetProgramEnvParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index], parameters)
+#define GET_GetProgramEnvParameterdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index])
+#define SET_GetProgramEnvParameterdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index], fn)
+#define CALL_GetProgramEnvParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index], parameters)
+#define GET_GetProgramEnvParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index])
+#define SET_GetProgramEnvParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index], fn)
+#define CALL_GetProgramLocalParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index], parameters)
+#define GET_GetProgramLocalParameterdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index])
+#define SET_GetProgramLocalParameterdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index], fn)
+#define CALL_GetProgramLocalParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index], parameters)
+#define GET_GetProgramLocalParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index])
+#define SET_GetProgramLocalParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index], fn)
+#define CALL_GetProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid *)), driDispatchRemapTable[GetProgramStringARB_remap_index], parameters)
+#define GET_GetProgramStringARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramStringARB_remap_index])
+#define SET_GetProgramStringARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramStringARB_remap_index], fn)
+#define CALL_GetProgramivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetProgramivARB_remap_index], parameters)
+#define GET_GetProgramivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramivARB_remap_index])
+#define SET_GetProgramivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramivARB_remap_index], fn)
+#define CALL_GetVertexAttribdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetVertexAttribdvARB_remap_index], parameters)
+#define GET_GetVertexAttribdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvARB_remap_index])
+#define SET_GetVertexAttribdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvARB_remap_index], fn)
+#define CALL_GetVertexAttribfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetVertexAttribfvARB_remap_index], parameters)
+#define GET_GetVertexAttribfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvARB_remap_index])
+#define SET_GetVertexAttribfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvARB_remap_index], fn)
+#define CALL_GetVertexAttribivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetVertexAttribivARB_remap_index], parameters)
+#define GET_GetVertexAttribivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivARB_remap_index])
+#define SET_GetVertexAttribivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivARB_remap_index], fn)
+#define CALL_ProgramEnvParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index], parameters)
+#define GET_ProgramEnvParameter4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index])
+#define SET_ProgramEnvParameter4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index], fn)
+#define CALL_ProgramEnvParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index], parameters)
+#define GET_ProgramEnvParameter4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index])
+#define SET_ProgramEnvParameter4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index], fn)
+#define CALL_ProgramEnvParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index], parameters)
+#define GET_ProgramEnvParameter4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index])
+#define SET_ProgramEnvParameter4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index], fn)
+#define CALL_ProgramEnvParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index], parameters)
+#define GET_ProgramEnvParameter4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index])
+#define SET_ProgramEnvParameter4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index], fn)
+#define CALL_ProgramLocalParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index], parameters)
+#define GET_ProgramLocalParameter4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index])
+#define SET_ProgramLocalParameter4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index], fn)
+#define CALL_ProgramLocalParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index], parameters)
+#define GET_ProgramLocalParameter4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index])
+#define SET_ProgramLocalParameter4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index], fn)
+#define CALL_ProgramLocalParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index], parameters)
+#define GET_ProgramLocalParameter4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index])
+#define SET_ProgramLocalParameter4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index], fn)
+#define CALL_ProgramLocalParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index], parameters)
+#define GET_ProgramLocalParameter4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index])
+#define SET_ProgramLocalParameter4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index], fn)
+#define CALL_ProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[ProgramStringARB_remap_index], parameters)
+#define GET_ProgramStringARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramStringARB_remap_index])
+#define SET_ProgramStringARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramStringARB_remap_index], fn)
+#define CALL_VertexAttrib1dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), driDispatchRemapTable[VertexAttrib1dARB_remap_index], parameters)
+#define GET_VertexAttrib1dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dARB_remap_index])
+#define SET_VertexAttrib1dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dARB_remap_index], fn)
+#define CALL_VertexAttrib1dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib1dvARB_remap_index], parameters)
+#define GET_VertexAttrib1dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvARB_remap_index])
+#define SET_VertexAttrib1dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvARB_remap_index], fn)
+#define CALL_VertexAttrib1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), driDispatchRemapTable[VertexAttrib1fARB_remap_index], parameters)
+#define GET_VertexAttrib1fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fARB_remap_index])
+#define SET_VertexAttrib1fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fARB_remap_index], fn)
+#define CALL_VertexAttrib1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib1fvARB_remap_index], parameters)
+#define GET_VertexAttrib1fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvARB_remap_index])
+#define SET_VertexAttrib1fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvARB_remap_index], fn)
+#define CALL_VertexAttrib1sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), driDispatchRemapTable[VertexAttrib1sARB_remap_index], parameters)
+#define GET_VertexAttrib1sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sARB_remap_index])
+#define SET_VertexAttrib1sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sARB_remap_index], fn)
+#define CALL_VertexAttrib1svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib1svARB_remap_index], parameters)
+#define GET_VertexAttrib1svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svARB_remap_index])
+#define SET_VertexAttrib1svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svARB_remap_index], fn)
+#define CALL_VertexAttrib2dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib2dARB_remap_index], parameters)
+#define GET_VertexAttrib2dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dARB_remap_index])
+#define SET_VertexAttrib2dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dARB_remap_index], fn)
+#define CALL_VertexAttrib2dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib2dvARB_remap_index], parameters)
+#define GET_VertexAttrib2dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvARB_remap_index])
+#define SET_VertexAttrib2dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvARB_remap_index], fn)
+#define CALL_VertexAttrib2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib2fARB_remap_index], parameters)
+#define GET_VertexAttrib2fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fARB_remap_index])
+#define SET_VertexAttrib2fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fARB_remap_index], fn)
+#define CALL_VertexAttrib2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib2fvARB_remap_index], parameters)
+#define GET_VertexAttrib2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvARB_remap_index])
+#define SET_VertexAttrib2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvARB_remap_index], fn)
+#define CALL_VertexAttrib2sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib2sARB_remap_index], parameters)
+#define GET_VertexAttrib2sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sARB_remap_index])
+#define SET_VertexAttrib2sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sARB_remap_index], fn)
+#define CALL_VertexAttrib2svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib2svARB_remap_index], parameters)
+#define GET_VertexAttrib2svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svARB_remap_index])
+#define SET_VertexAttrib2svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svARB_remap_index], fn)
+#define CALL_VertexAttrib3dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib3dARB_remap_index], parameters)
+#define GET_VertexAttrib3dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dARB_remap_index])
+#define SET_VertexAttrib3dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dARB_remap_index], fn)
+#define CALL_VertexAttrib3dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib3dvARB_remap_index], parameters)
+#define GET_VertexAttrib3dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvARB_remap_index])
+#define SET_VertexAttrib3dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvARB_remap_index], fn)
+#define CALL_VertexAttrib3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib3fARB_remap_index], parameters)
+#define GET_VertexAttrib3fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fARB_remap_index])
+#define SET_VertexAttrib3fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fARB_remap_index], fn)
+#define CALL_VertexAttrib3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib3fvARB_remap_index], parameters)
+#define GET_VertexAttrib3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvARB_remap_index])
+#define SET_VertexAttrib3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvARB_remap_index], fn)
+#define CALL_VertexAttrib3sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib3sARB_remap_index], parameters)
+#define GET_VertexAttrib3sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sARB_remap_index])
+#define SET_VertexAttrib3sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sARB_remap_index], fn)
+#define CALL_VertexAttrib3svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib3svARB_remap_index], parameters)
+#define GET_VertexAttrib3svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svARB_remap_index])
+#define SET_VertexAttrib3svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svARB_remap_index], fn)
+#define CALL_VertexAttrib4NbvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), driDispatchRemapTable[VertexAttrib4NbvARB_remap_index], parameters)
+#define GET_VertexAttrib4NbvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NbvARB_remap_index])
+#define SET_VertexAttrib4NbvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NbvARB_remap_index], fn)
+#define CALL_VertexAttrib4NivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), driDispatchRemapTable[VertexAttrib4NivARB_remap_index], parameters)
+#define GET_VertexAttrib4NivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NivARB_remap_index])
+#define SET_VertexAttrib4NivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NivARB_remap_index], fn)
+#define CALL_VertexAttrib4NsvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4NsvARB_remap_index], parameters)
+#define GET_VertexAttrib4NsvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NsvARB_remap_index])
+#define SET_VertexAttrib4NsvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NsvARB_remap_index], fn)
+#define CALL_VertexAttrib4NubARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[VertexAttrib4NubARB_remap_index], parameters)
+#define GET_VertexAttrib4NubARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubARB_remap_index])
+#define SET_VertexAttrib4NubARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubARB_remap_index], fn)
+#define CALL_VertexAttrib4NubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4NubvARB_remap_index], parameters)
+#define GET_VertexAttrib4NubvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubvARB_remap_index])
+#define SET_VertexAttrib4NubvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubvARB_remap_index], fn)
+#define CALL_VertexAttrib4NuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), driDispatchRemapTable[VertexAttrib4NuivARB_remap_index], parameters)
+#define GET_VertexAttrib4NuivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NuivARB_remap_index])
+#define SET_VertexAttrib4NuivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NuivARB_remap_index], fn)
+#define CALL_VertexAttrib4NusvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), driDispatchRemapTable[VertexAttrib4NusvARB_remap_index], parameters)
+#define GET_VertexAttrib4NusvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NusvARB_remap_index])
+#define SET_VertexAttrib4NusvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NusvARB_remap_index], fn)
+#define CALL_VertexAttrib4bvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), driDispatchRemapTable[VertexAttrib4bvARB_remap_index], parameters)
+#define GET_VertexAttrib4bvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4bvARB_remap_index])
+#define SET_VertexAttrib4bvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4bvARB_remap_index], fn)
+#define CALL_VertexAttrib4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib4dARB_remap_index], parameters)
+#define GET_VertexAttrib4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dARB_remap_index])
+#define SET_VertexAttrib4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dARB_remap_index], fn)
+#define CALL_VertexAttrib4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib4dvARB_remap_index], parameters)
+#define GET_VertexAttrib4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvARB_remap_index])
+#define SET_VertexAttrib4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvARB_remap_index], fn)
+#define CALL_VertexAttrib4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib4fARB_remap_index], parameters)
+#define GET_VertexAttrib4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fARB_remap_index])
+#define SET_VertexAttrib4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fARB_remap_index], fn)
+#define CALL_VertexAttrib4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib4fvARB_remap_index], parameters)
+#define GET_VertexAttrib4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvARB_remap_index])
+#define SET_VertexAttrib4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvARB_remap_index], fn)
+#define CALL_VertexAttrib4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), driDispatchRemapTable[VertexAttrib4ivARB_remap_index], parameters)
+#define GET_VertexAttrib4ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ivARB_remap_index])
+#define SET_VertexAttrib4ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ivARB_remap_index], fn)
+#define CALL_VertexAttrib4sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib4sARB_remap_index], parameters)
+#define GET_VertexAttrib4sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sARB_remap_index])
+#define SET_VertexAttrib4sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sARB_remap_index], fn)
+#define CALL_VertexAttrib4svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4svARB_remap_index], parameters)
+#define GET_VertexAttrib4svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svARB_remap_index])
+#define SET_VertexAttrib4svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svARB_remap_index], fn)
+#define CALL_VertexAttrib4ubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4ubvARB_remap_index], parameters)
+#define GET_VertexAttrib4ubvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvARB_remap_index])
+#define SET_VertexAttrib4ubvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvARB_remap_index], fn)
+#define CALL_VertexAttrib4uivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), driDispatchRemapTable[VertexAttrib4uivARB_remap_index], parameters)
+#define GET_VertexAttrib4uivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4uivARB_remap_index])
+#define SET_VertexAttrib4uivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4uivARB_remap_index], fn)
+#define CALL_VertexAttrib4usvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), driDispatchRemapTable[VertexAttrib4usvARB_remap_index], parameters)
+#define GET_VertexAttrib4usvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4usvARB_remap_index])
+#define SET_VertexAttrib4usvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4usvARB_remap_index], fn)
+#define CALL_VertexAttribPointerARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexAttribPointerARB_remap_index], parameters)
+#define GET_VertexAttribPointerARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerARB_remap_index])
+#define SET_VertexAttribPointerARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerARB_remap_index], fn)
+#define CALL_BindBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindBufferARB_remap_index], parameters)
+#define GET_BindBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferARB_remap_index])
+#define SET_BindBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferARB_remap_index], fn)
+#define CALL_BufferDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizeiptrARB, const GLvoid *, GLenum)), driDispatchRemapTable[BufferDataARB_remap_index], parameters)
+#define GET_BufferDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[BufferDataARB_remap_index])
+#define SET_BufferDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferDataARB_remap_index], fn)
+#define CALL_BufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *)), driDispatchRemapTable[BufferSubDataARB_remap_index], parameters)
+#define GET_BufferSubDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[BufferSubDataARB_remap_index])
+#define SET_BufferSubDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferSubDataARB_remap_index], fn)
+#define CALL_DeleteBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteBuffersARB_remap_index], parameters)
+#define GET_DeleteBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteBuffersARB_remap_index])
+#define SET_DeleteBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteBuffersARB_remap_index], fn)
+#define CALL_GenBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenBuffersARB_remap_index], parameters)
+#define GET_GenBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[GenBuffersARB_remap_index])
+#define SET_GenBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenBuffersARB_remap_index], fn)
+#define CALL_GetBufferParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetBufferParameterivARB_remap_index], parameters)
+#define GET_GetBufferParameterivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferParameterivARB_remap_index])
+#define SET_GetBufferParameterivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferParameterivARB_remap_index], fn)
+#define CALL_GetBufferPointervARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), driDispatchRemapTable[GetBufferPointervARB_remap_index], parameters)
+#define GET_GetBufferPointervARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferPointervARB_remap_index])
+#define SET_GetBufferPointervARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferPointervARB_remap_index], fn)
+#define CALL_GetBufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *)), driDispatchRemapTable[GetBufferSubDataARB_remap_index], parameters)
+#define GET_GetBufferSubDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferSubDataARB_remap_index])
+#define SET_GetBufferSubDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferSubDataARB_remap_index], fn)
+#define CALL_IsBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsBufferARB_remap_index], parameters)
+#define GET_IsBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[IsBufferARB_remap_index])
+#define SET_IsBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsBufferARB_remap_index], fn)
+#define CALL_MapBufferARB(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLenum)), driDispatchRemapTable[MapBufferARB_remap_index], parameters)
+#define GET_MapBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[MapBufferARB_remap_index])
+#define SET_MapBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MapBufferARB_remap_index], fn)
+#define CALL_UnmapBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[UnmapBufferARB_remap_index], parameters)
+#define GET_UnmapBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[UnmapBufferARB_remap_index])
+#define SET_UnmapBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UnmapBufferARB_remap_index], fn)
+#define CALL_BeginQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BeginQueryARB_remap_index], parameters)
+#define GET_BeginQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[BeginQueryARB_remap_index])
+#define SET_BeginQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginQueryARB_remap_index], fn)
+#define CALL_DeleteQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteQueriesARB_remap_index], parameters)
+#define GET_DeleteQueriesARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteQueriesARB_remap_index])
+#define SET_DeleteQueriesARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteQueriesARB_remap_index], fn)
+#define CALL_EndQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[EndQueryARB_remap_index], parameters)
+#define GET_EndQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[EndQueryARB_remap_index])
+#define SET_EndQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndQueryARB_remap_index], fn)
+#define CALL_GenQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenQueriesARB_remap_index], parameters)
+#define GET_GenQueriesARB(disp) GET_by_offset(disp, driDispatchRemapTable[GenQueriesARB_remap_index])
+#define SET_GenQueriesARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenQueriesARB_remap_index], fn)
+#define CALL_GetQueryObjectivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetQueryObjectivARB_remap_index], parameters)
+#define GET_GetQueryObjectivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectivARB_remap_index])
+#define SET_GetQueryObjectivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectivARB_remap_index], fn)
+#define CALL_GetQueryObjectuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), driDispatchRemapTable[GetQueryObjectuivARB_remap_index], parameters)
+#define GET_GetQueryObjectuivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectuivARB_remap_index])
+#define SET_GetQueryObjectuivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectuivARB_remap_index], fn)
+#define CALL_GetQueryivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetQueryivARB_remap_index], parameters)
+#define GET_GetQueryivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryivARB_remap_index])
+#define SET_GetQueryivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryivARB_remap_index], fn)
+#define CALL_IsQueryARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsQueryARB_remap_index], parameters)
+#define GET_IsQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[IsQueryARB_remap_index])
+#define SET_IsQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsQueryARB_remap_index], fn)
+#define CALL_AttachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), driDispatchRemapTable[AttachObjectARB_remap_index], parameters)
+#define GET_AttachObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[AttachObjectARB_remap_index])
+#define SET_AttachObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AttachObjectARB_remap_index], fn)
+#define CALL_CompileShaderARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[CompileShaderARB_remap_index], parameters)
+#define GET_CompileShaderARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompileShaderARB_remap_index])
+#define SET_CompileShaderARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompileShaderARB_remap_index], fn)
+#define CALL_CreateProgramObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(void)), driDispatchRemapTable[CreateProgramObjectARB_remap_index], parameters)
+#define GET_CreateProgramObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[CreateProgramObjectARB_remap_index])
+#define SET_CreateProgramObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateProgramObjectARB_remap_index], fn)
+#define CALL_CreateShaderObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CreateShaderObjectARB_remap_index], parameters)
+#define GET_CreateShaderObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[CreateShaderObjectARB_remap_index])
+#define SET_CreateShaderObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateShaderObjectARB_remap_index], fn)
+#define CALL_DeleteObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[DeleteObjectARB_remap_index], parameters)
+#define GET_DeleteObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteObjectARB_remap_index])
+#define SET_DeleteObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteObjectARB_remap_index], fn)
+#define CALL_DetachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), driDispatchRemapTable[DetachObjectARB_remap_index], parameters)
+#define GET_DetachObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[DetachObjectARB_remap_index])
+#define SET_DetachObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DetachObjectARB_remap_index], fn)
+#define CALL_GetActiveUniformARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), driDispatchRemapTable[GetActiveUniformARB_remap_index], parameters)
+#define GET_GetActiveUniformARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetActiveUniformARB_remap_index])
+#define SET_GetActiveUniformARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetActiveUniformARB_remap_index], fn)
+#define CALL_GetAttachedObjectsARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *)), driDispatchRemapTable[GetAttachedObjectsARB_remap_index], parameters)
+#define GET_GetAttachedObjectsARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttachedObjectsARB_remap_index])
+#define SET_GetAttachedObjectsARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttachedObjectsARB_remap_index], fn)
+#define CALL_GetHandleARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[GetHandleARB_remap_index], parameters)
+#define GET_GetHandleARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetHandleARB_remap_index])
+#define SET_GetHandleARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetHandleARB_remap_index], fn)
+#define CALL_GetInfoLogARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), driDispatchRemapTable[GetInfoLogARB_remap_index], parameters)
+#define GET_GetInfoLogARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetInfoLogARB_remap_index])
+#define SET_GetInfoLogARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetInfoLogARB_remap_index], fn)
+#define CALL_GetObjectParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLfloat *)), driDispatchRemapTable[GetObjectParameterfvARB_remap_index], parameters)
+#define GET_GetObjectParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterfvARB_remap_index])
+#define SET_GetObjectParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterfvARB_remap_index], fn)
+#define CALL_GetObjectParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLint *)), driDispatchRemapTable[GetObjectParameterivARB_remap_index], parameters)
+#define GET_GetObjectParameterivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivARB_remap_index])
+#define SET_GetObjectParameterivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivARB_remap_index], fn)
+#define CALL_GetShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), driDispatchRemapTable[GetShaderSourceARB_remap_index], parameters)
+#define GET_GetShaderSourceARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderSourceARB_remap_index])
+#define SET_GetShaderSourceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderSourceARB_remap_index], fn)
+#define CALL_GetUniformLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), driDispatchRemapTable[GetUniformLocationARB_remap_index], parameters)
+#define GET_GetUniformLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformLocationARB_remap_index])
+#define SET_GetUniformLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformLocationARB_remap_index], fn)
+#define CALL_GetUniformfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLfloat *)), driDispatchRemapTable[GetUniformfvARB_remap_index], parameters)
+#define GET_GetUniformfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformfvARB_remap_index])
+#define SET_GetUniformfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformfvARB_remap_index], fn)
+#define CALL_GetUniformivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLint *)), driDispatchRemapTable[GetUniformivARB_remap_index], parameters)
+#define GET_GetUniformivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformivARB_remap_index])
+#define SET_GetUniformivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformivARB_remap_index], fn)
+#define CALL_LinkProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[LinkProgramARB_remap_index], parameters)
+#define GET_LinkProgramARB(disp) GET_by_offset(disp, driDispatchRemapTable[LinkProgramARB_remap_index])
+#define SET_LinkProgramARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LinkProgramARB_remap_index], fn)
+#define CALL_ShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, const GLcharARB **, const GLint *)), driDispatchRemapTable[ShaderSourceARB_remap_index], parameters)
+#define GET_ShaderSourceARB(disp) GET_by_offset(disp, driDispatchRemapTable[ShaderSourceARB_remap_index])
+#define SET_ShaderSourceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ShaderSourceARB_remap_index], fn)
+#define CALL_Uniform1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat)), driDispatchRemapTable[Uniform1fARB_remap_index], parameters)
+#define GET_Uniform1fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1fARB_remap_index])
+#define SET_Uniform1fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1fARB_remap_index], fn)
+#define CALL_Uniform1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform1fvARB_remap_index], parameters)
+#define GET_Uniform1fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1fvARB_remap_index])
+#define SET_Uniform1fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1fvARB_remap_index], fn)
+#define CALL_Uniform1iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), driDispatchRemapTable[Uniform1iARB_remap_index], parameters)
+#define GET_Uniform1iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1iARB_remap_index])
+#define SET_Uniform1iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1iARB_remap_index], fn)
+#define CALL_Uniform1ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform1ivARB_remap_index], parameters)
+#define GET_Uniform1ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1ivARB_remap_index])
+#define SET_Uniform1ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1ivARB_remap_index], fn)
+#define CALL_Uniform2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat)), driDispatchRemapTable[Uniform2fARB_remap_index], parameters)
+#define GET_Uniform2fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2fARB_remap_index])
+#define SET_Uniform2fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2fARB_remap_index], fn)
+#define CALL_Uniform2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform2fvARB_remap_index], parameters)
+#define GET_Uniform2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2fvARB_remap_index])
+#define SET_Uniform2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2fvARB_remap_index], fn)
+#define CALL_Uniform2iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[Uniform2iARB_remap_index], parameters)
+#define GET_Uniform2iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2iARB_remap_index])
+#define SET_Uniform2iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2iARB_remap_index], fn)
+#define CALL_Uniform2ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform2ivARB_remap_index], parameters)
+#define GET_Uniform2ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2ivARB_remap_index])
+#define SET_Uniform2ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2ivARB_remap_index], fn)
+#define CALL_Uniform3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[Uniform3fARB_remap_index], parameters)
+#define GET_Uniform3fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3fARB_remap_index])
+#define SET_Uniform3fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3fARB_remap_index], fn)
+#define CALL_Uniform3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform3fvARB_remap_index], parameters)
+#define GET_Uniform3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3fvARB_remap_index])
+#define SET_Uniform3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3fvARB_remap_index], fn)
+#define CALL_Uniform3iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), driDispatchRemapTable[Uniform3iARB_remap_index], parameters)
+#define GET_Uniform3iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3iARB_remap_index])
+#define SET_Uniform3iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3iARB_remap_index], fn)
+#define CALL_Uniform3ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform3ivARB_remap_index], parameters)
+#define GET_Uniform3ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3ivARB_remap_index])
+#define SET_Uniform3ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3ivARB_remap_index], fn)
+#define CALL_Uniform4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[Uniform4fARB_remap_index], parameters)
+#define GET_Uniform4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4fARB_remap_index])
+#define SET_Uniform4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4fARB_remap_index], fn)
+#define CALL_Uniform4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform4fvARB_remap_index], parameters)
+#define GET_Uniform4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4fvARB_remap_index])
+#define SET_Uniform4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4fvARB_remap_index], fn)
+#define CALL_Uniform4iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint)), driDispatchRemapTable[Uniform4iARB_remap_index], parameters)
+#define GET_Uniform4iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4iARB_remap_index])
+#define SET_Uniform4iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4iARB_remap_index], fn)
+#define CALL_Uniform4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform4ivARB_remap_index], parameters)
+#define GET_Uniform4ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4ivARB_remap_index])
+#define SET_Uniform4ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4ivARB_remap_index], fn)
+#define CALL_UniformMatrix2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2fvARB_remap_index], parameters)
+#define GET_UniformMatrix2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2fvARB_remap_index])
+#define SET_UniformMatrix2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2fvARB_remap_index], fn)
+#define CALL_UniformMatrix3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3fvARB_remap_index], parameters)
+#define GET_UniformMatrix3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3fvARB_remap_index])
+#define SET_UniformMatrix3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3fvARB_remap_index], fn)
+#define CALL_UniformMatrix4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4fvARB_remap_index], parameters)
+#define GET_UniformMatrix4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4fvARB_remap_index])
+#define SET_UniformMatrix4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4fvARB_remap_index], fn)
+#define CALL_UseProgramObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[UseProgramObjectARB_remap_index], parameters)
+#define GET_UseProgramObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[UseProgramObjectARB_remap_index])
+#define SET_UseProgramObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UseProgramObjectARB_remap_index], fn)
+#define CALL_ValidateProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[ValidateProgramARB_remap_index], parameters)
+#define GET_ValidateProgramARB(disp) GET_by_offset(disp, driDispatchRemapTable[ValidateProgramARB_remap_index])
+#define SET_ValidateProgramARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ValidateProgramARB_remap_index], fn)
+#define CALL_BindAttribLocationARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, const GLcharARB *)), driDispatchRemapTable[BindAttribLocationARB_remap_index], parameters)
+#define GET_BindAttribLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[BindAttribLocationARB_remap_index])
+#define SET_BindAttribLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindAttribLocationARB_remap_index], fn)
+#define CALL_GetActiveAttribARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), driDispatchRemapTable[GetActiveAttribARB_remap_index], parameters)
+#define GET_GetActiveAttribARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetActiveAttribARB_remap_index])
+#define SET_GetActiveAttribARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetActiveAttribARB_remap_index], fn)
+#define CALL_GetAttribLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), driDispatchRemapTable[GetAttribLocationARB_remap_index], parameters)
+#define GET_GetAttribLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttribLocationARB_remap_index])
+#define SET_GetAttribLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttribLocationARB_remap_index], fn)
+#define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), driDispatchRemapTable[DrawBuffersARB_remap_index], parameters)
+#define GET_DrawBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[DrawBuffersARB_remap_index])
+#define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawBuffersARB_remap_index], fn)
+#define CALL_RenderbufferStorageMultisample(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)), driDispatchRemapTable[RenderbufferStorageMultisample_remap_index], parameters)
+#define GET_RenderbufferStorageMultisample(disp) GET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageMultisample_remap_index])
+#define SET_RenderbufferStorageMultisample(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageMultisample_remap_index], fn)
+#define CALL_FlushMappedBufferRange(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), driDispatchRemapTable[FlushMappedBufferRange_remap_index], parameters)
+#define GET_FlushMappedBufferRange(disp) GET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRange_remap_index])
+#define SET_FlushMappedBufferRange(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRange_remap_index], fn)
+#define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), driDispatchRemapTable[MapBufferRange_remap_index], parameters)
+#define GET_MapBufferRange(disp) GET_by_offset(disp, driDispatchRemapTable[MapBufferRange_remap_index])
+#define SET_MapBufferRange(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MapBufferRange_remap_index], fn)
+#define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindVertexArray_remap_index], parameters)
+#define GET_BindVertexArray(disp) GET_by_offset(disp, driDispatchRemapTable[BindVertexArray_remap_index])
+#define SET_BindVertexArray(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindVertexArray_remap_index], fn)
+#define CALL_GenVertexArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenVertexArrays_remap_index], parameters)
+#define GET_GenVertexArrays(disp) GET_by_offset(disp, driDispatchRemapTable[GenVertexArrays_remap_index])
+#define SET_GenVertexArrays(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenVertexArrays_remap_index], fn)
+#define CALL_CopyBufferSubData(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr)), driDispatchRemapTable[CopyBufferSubData_remap_index], parameters)
+#define GET_CopyBufferSubData(disp) GET_by_offset(disp, driDispatchRemapTable[CopyBufferSubData_remap_index])
+#define SET_CopyBufferSubData(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CopyBufferSubData_remap_index], fn)
+#define CALL_ClientWaitSync(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), driDispatchRemapTable[ClientWaitSync_remap_index], parameters)
+#define GET_ClientWaitSync(disp) GET_by_offset(disp, driDispatchRemapTable[ClientWaitSync_remap_index])
+#define SET_ClientWaitSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ClientWaitSync_remap_index], fn)
+#define CALL_DeleteSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync)), driDispatchRemapTable[DeleteSync_remap_index], parameters)
+#define GET_DeleteSync(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteSync_remap_index])
+#define SET_DeleteSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteSync_remap_index], fn)
+#define CALL_FenceSync(disp, parameters) CALL_by_offset(disp, (GLsync (GLAPIENTRYP)(GLenum, GLbitfield)), driDispatchRemapTable[FenceSync_remap_index], parameters)
+#define GET_FenceSync(disp) GET_by_offset(disp, driDispatchRemapTable[FenceSync_remap_index])
+#define SET_FenceSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FenceSync_remap_index], fn)
+#define CALL_GetInteger64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint64 *)), driDispatchRemapTable[GetInteger64v_remap_index], parameters)
+#define GET_GetInteger64v(disp) GET_by_offset(disp, driDispatchRemapTable[GetInteger64v_remap_index])
+#define SET_GetInteger64v(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetInteger64v_remap_index], fn)
+#define CALL_GetSynciv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLenum, GLsizei, GLsizei *, GLint *)), driDispatchRemapTable[GetSynciv_remap_index], parameters)
+#define GET_GetSynciv(disp) GET_by_offset(disp, driDispatchRemapTable[GetSynciv_remap_index])
+#define SET_GetSynciv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetSynciv_remap_index], fn)
+#define CALL_IsSync(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsync)), driDispatchRemapTable[IsSync_remap_index], parameters)
+#define GET_IsSync(disp) GET_by_offset(disp, driDispatchRemapTable[IsSync_remap_index])
+#define SET_IsSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsSync_remap_index], fn)
+#define CALL_WaitSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), driDispatchRemapTable[WaitSync_remap_index], parameters)
+#define GET_WaitSync(disp) GET_by_offset(disp, driDispatchRemapTable[WaitSync_remap_index])
+#define SET_WaitSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WaitSync_remap_index], fn)
+#define CALL_DrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLint)), driDispatchRemapTable[DrawElementsBaseVertex_remap_index], parameters)
+#define GET_DrawElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[DrawElementsBaseVertex_remap_index])
+#define SET_DrawElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawElementsBaseVertex_remap_index], fn)
+#define CALL_DrawRangeElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint)), driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index], parameters)
+#define GET_DrawRangeElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index])
+#define SET_DrawRangeElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index], fn)
+#define CALL_MultiDrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei, const GLint *)), driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index], parameters)
+#define GET_MultiDrawElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index])
+#define SET_MultiDrawElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index], fn)
+#define CALL_PolygonOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), driDispatchRemapTable[PolygonOffsetEXT_remap_index], parameters)
+#define GET_PolygonOffsetEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PolygonOffsetEXT_remap_index])
+#define SET_PolygonOffsetEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PolygonOffsetEXT_remap_index], fn)
+#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index], parameters)
+#define GET_GetPixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index])
+#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index], fn)
+#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index], parameters)
+#define GET_GetPixelTexGenParameterivSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index])
+#define SET_GetPixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index], fn)
+#define CALL_PixelTexGenParameterfSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index], parameters)
+#define GET_PixelTexGenParameterfSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index])
+#define SET_PixelTexGenParameterfSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index], fn)
+#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index], parameters)
+#define GET_PixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index])
+#define SET_PixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index], fn)
+#define CALL_PixelTexGenParameteriSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index], parameters)
+#define GET_PixelTexGenParameteriSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index])
+#define SET_PixelTexGenParameteriSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index], fn)
+#define CALL_PixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index], parameters)
+#define GET_PixelTexGenParameterivSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index])
+#define SET_PixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index], fn)
+#define CALL_SampleMaskSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), driDispatchRemapTable[SampleMaskSGIS_remap_index], parameters)
+#define GET_SampleMaskSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[SampleMaskSGIS_remap_index])
+#define SET_SampleMaskSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleMaskSGIS_remap_index], fn)
+#define CALL_SamplePatternSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[SamplePatternSGIS_remap_index], parameters)
+#define GET_SamplePatternSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[SamplePatternSGIS_remap_index])
+#define SET_SamplePatternSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SamplePatternSGIS_remap_index], fn)
+#define CALL_ColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[ColorPointerEXT_remap_index], parameters)
+#define GET_ColorPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ColorPointerEXT_remap_index])
+#define SET_ColorPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorPointerEXT_remap_index], fn)
+#define CALL_EdgeFlagPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, const GLboolean *)), driDispatchRemapTable[EdgeFlagPointerEXT_remap_index], parameters)
+#define GET_EdgeFlagPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EdgeFlagPointerEXT_remap_index])
+#define SET_EdgeFlagPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EdgeFlagPointerEXT_remap_index], fn)
+#define CALL_IndexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[IndexPointerEXT_remap_index], parameters)
+#define GET_IndexPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IndexPointerEXT_remap_index])
+#define SET_IndexPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IndexPointerEXT_remap_index], fn)
+#define CALL_NormalPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[NormalPointerEXT_remap_index], parameters)
+#define GET_NormalPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[NormalPointerEXT_remap_index])
+#define SET_NormalPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[NormalPointerEXT_remap_index], fn)
+#define CALL_TexCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[TexCoordPointerEXT_remap_index], parameters)
+#define GET_TexCoordPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[TexCoordPointerEXT_remap_index])
+#define SET_TexCoordPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexCoordPointerEXT_remap_index], fn)
+#define CALL_VertexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexPointerEXT_remap_index], parameters)
+#define GET_VertexPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[VertexPointerEXT_remap_index])
+#define SET_VertexPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexPointerEXT_remap_index], fn)
+#define CALL_PointParameterfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[PointParameterfEXT_remap_index], parameters)
+#define GET_PointParameterfEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterfEXT_remap_index])
+#define SET_PointParameterfEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterfEXT_remap_index], fn)
+#define CALL_PointParameterfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[PointParameterfvEXT_remap_index], parameters)
+#define GET_PointParameterfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterfvEXT_remap_index])
+#define SET_PointParameterfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterfvEXT_remap_index], fn)
+#define CALL_LockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei)), driDispatchRemapTable[LockArraysEXT_remap_index], parameters)
+#define GET_LockArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[LockArraysEXT_remap_index])
+#define SET_LockArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LockArraysEXT_remap_index], fn)
+#define CALL_UnlockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[UnlockArraysEXT_remap_index], parameters)
+#define GET_UnlockArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[UnlockArraysEXT_remap_index])
+#define SET_UnlockArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UnlockArraysEXT_remap_index], fn)
+#define CALL_CullParameterdvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble *)), driDispatchRemapTable[CullParameterdvEXT_remap_index], parameters)
+#define GET_CullParameterdvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[CullParameterdvEXT_remap_index])
+#define SET_CullParameterdvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CullParameterdvEXT_remap_index], fn)
+#define CALL_CullParameterfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[CullParameterfvEXT_remap_index], parameters)
+#define GET_CullParameterfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[CullParameterfvEXT_remap_index])
+#define SET_CullParameterfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CullParameterfvEXT_remap_index], fn)
+#define CALL_SecondaryColor3bEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), driDispatchRemapTable[SecondaryColor3bEXT_remap_index], parameters)
+#define GET_SecondaryColor3bEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bEXT_remap_index])
+#define SET_SecondaryColor3bEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bEXT_remap_index], fn)
+#define CALL_SecondaryColor3bvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), driDispatchRemapTable[SecondaryColor3bvEXT_remap_index], parameters)
+#define GET_SecondaryColor3bvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bvEXT_remap_index])
+#define SET_SecondaryColor3bvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bvEXT_remap_index], fn)
+#define CALL_SecondaryColor3dEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[SecondaryColor3dEXT_remap_index], parameters)
+#define GET_SecondaryColor3dEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dEXT_remap_index])
+#define SET_SecondaryColor3dEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dEXT_remap_index], fn)
+#define CALL_SecondaryColor3dvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[SecondaryColor3dvEXT_remap_index], parameters)
+#define GET_SecondaryColor3dvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dvEXT_remap_index])
+#define SET_SecondaryColor3dvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dvEXT_remap_index], fn)
+#define CALL_SecondaryColor3fEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[SecondaryColor3fEXT_remap_index], parameters)
+#define GET_SecondaryColor3fEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fEXT_remap_index])
+#define SET_SecondaryColor3fEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fEXT_remap_index], fn)
+#define CALL_SecondaryColor3fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[SecondaryColor3fvEXT_remap_index], parameters)
+#define GET_SecondaryColor3fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fvEXT_remap_index])
+#define SET_SecondaryColor3fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fvEXT_remap_index], fn)
+#define CALL_SecondaryColor3iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[SecondaryColor3iEXT_remap_index], parameters)
+#define GET_SecondaryColor3iEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3iEXT_remap_index])
+#define SET_SecondaryColor3iEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3iEXT_remap_index], fn)
+#define CALL_SecondaryColor3ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[SecondaryColor3ivEXT_remap_index], parameters)
+#define GET_SecondaryColor3ivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ivEXT_remap_index])
+#define SET_SecondaryColor3ivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ivEXT_remap_index], fn)
+#define CALL_SecondaryColor3sEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), driDispatchRemapTable[SecondaryColor3sEXT_remap_index], parameters)
+#define GET_SecondaryColor3sEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3sEXT_remap_index])
+#define SET_SecondaryColor3sEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3sEXT_remap_index], fn)
+#define CALL_SecondaryColor3svEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[SecondaryColor3svEXT_remap_index], parameters)
+#define GET_SecondaryColor3svEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3svEXT_remap_index])
+#define SET_SecondaryColor3svEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3svEXT_remap_index], fn)
+#define CALL_SecondaryColor3ubEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[SecondaryColor3ubEXT_remap_index], parameters)
+#define GET_SecondaryColor3ubEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubEXT_remap_index])
+#define SET_SecondaryColor3ubEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubEXT_remap_index], fn)
+#define CALL_SecondaryColor3ubvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index], parameters)
+#define GET_SecondaryColor3ubvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index])
+#define SET_SecondaryColor3ubvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index], fn)
+#define CALL_SecondaryColor3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), driDispatchRemapTable[SecondaryColor3uiEXT_remap_index], parameters)
+#define GET_SecondaryColor3uiEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uiEXT_remap_index])
+#define SET_SecondaryColor3uiEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uiEXT_remap_index], fn)
+#define CALL_SecondaryColor3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), driDispatchRemapTable[SecondaryColor3uivEXT_remap_index], parameters)
+#define GET_SecondaryColor3uivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uivEXT_remap_index])
+#define SET_SecondaryColor3uivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uivEXT_remap_index], fn)
+#define CALL_SecondaryColor3usEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort)), driDispatchRemapTable[SecondaryColor3usEXT_remap_index], parameters)
+#define GET_SecondaryColor3usEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usEXT_remap_index])
+#define SET_SecondaryColor3usEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usEXT_remap_index], fn)
+#define CALL_SecondaryColor3usvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), driDispatchRemapTable[SecondaryColor3usvEXT_remap_index], parameters)
+#define GET_SecondaryColor3usvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usvEXT_remap_index])
+#define SET_SecondaryColor3usvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usvEXT_remap_index], fn)
+#define CALL_SecondaryColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[SecondaryColorPointerEXT_remap_index], parameters)
+#define GET_SecondaryColorPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColorPointerEXT_remap_index])
+#define SET_SecondaryColorPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColorPointerEXT_remap_index], fn)
+#define CALL_MultiDrawArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *, GLsizei *, GLsizei)), driDispatchRemapTable[MultiDrawArraysEXT_remap_index], parameters)
+#define GET_MultiDrawArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawArraysEXT_remap_index])
+#define SET_MultiDrawArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawArraysEXT_remap_index], fn)
+#define CALL_MultiDrawElementsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)), driDispatchRemapTable[MultiDrawElementsEXT_remap_index], parameters)
+#define GET_MultiDrawElementsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsEXT_remap_index])
+#define SET_MultiDrawElementsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsEXT_remap_index], fn)
+#define CALL_FogCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[FogCoordPointerEXT_remap_index], parameters)
+#define GET_FogCoordPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordPointerEXT_remap_index])
+#define SET_FogCoordPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordPointerEXT_remap_index], fn)
+#define CALL_FogCoorddEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), driDispatchRemapTable[FogCoorddEXT_remap_index], parameters)
+#define GET_FogCoorddEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoorddEXT_remap_index])
+#define SET_FogCoorddEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoorddEXT_remap_index], fn)
+#define CALL_FogCoorddvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[FogCoorddvEXT_remap_index], parameters)
+#define GET_FogCoorddvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoorddvEXT_remap_index])
+#define SET_FogCoorddvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoorddvEXT_remap_index], fn)
+#define CALL_FogCoordfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), driDispatchRemapTable[FogCoordfEXT_remap_index], parameters)
+#define GET_FogCoordfEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordfEXT_remap_index])
+#define SET_FogCoordfEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordfEXT_remap_index], fn)
+#define CALL_FogCoordfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[FogCoordfvEXT_remap_index], parameters)
+#define GET_FogCoordfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordfvEXT_remap_index])
+#define SET_FogCoordfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordfvEXT_remap_index], fn)
+#define CALL_PixelTexGenSGIX(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[PixelTexGenSGIX_remap_index], parameters)
+#define GET_PixelTexGenSGIX(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenSGIX_remap_index])
+#define SET_PixelTexGenSGIX(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenSGIX_remap_index], fn)
+#define CALL_BlendFuncSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[BlendFuncSeparateEXT_remap_index], parameters)
+#define GET_BlendFuncSeparateEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlendFuncSeparateEXT_remap_index])
+#define SET_BlendFuncSeparateEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlendFuncSeparateEXT_remap_index], fn)
+#define CALL_FlushVertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index], parameters)
+#define GET_FlushVertexArrayRangeNV(disp) GET_by_offset(disp, driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index])
+#define SET_FlushVertexArrayRangeNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index], fn)
+#define CALL_VertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLvoid *)), driDispatchRemapTable[VertexArrayRangeNV_remap_index], parameters)
+#define GET_VertexArrayRangeNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexArrayRangeNV_remap_index])
+#define SET_VertexArrayRangeNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexArrayRangeNV_remap_index], fn)
+#define CALL_CombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[CombinerInputNV_remap_index], parameters)
+#define GET_CombinerInputNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerInputNV_remap_index])
+#define SET_CombinerInputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerInputNV_remap_index], fn)
+#define CALL_CombinerOutputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean)), driDispatchRemapTable[CombinerOutputNV_remap_index], parameters)
+#define GET_CombinerOutputNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerOutputNV_remap_index])
+#define SET_CombinerOutputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerOutputNV_remap_index], fn)
+#define CALL_CombinerParameterfNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[CombinerParameterfNV_remap_index], parameters)
+#define GET_CombinerParameterfNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterfNV_remap_index])
+#define SET_CombinerParameterfNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterfNV_remap_index], fn)
+#define CALL_CombinerParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[CombinerParameterfvNV_remap_index], parameters)
+#define GET_CombinerParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterfvNV_remap_index])
+#define SET_CombinerParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterfvNV_remap_index], fn)
+#define CALL_CombinerParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[CombinerParameteriNV_remap_index], parameters)
+#define GET_CombinerParameteriNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameteriNV_remap_index])
+#define SET_CombinerParameteriNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameteriNV_remap_index], fn)
+#define CALL_CombinerParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[CombinerParameterivNV_remap_index], parameters)
+#define GET_CombinerParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterivNV_remap_index])
+#define SET_CombinerParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterivNV_remap_index], fn)
+#define CALL_FinalCombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[FinalCombinerInputNV_remap_index], parameters)
+#define GET_FinalCombinerInputNV(disp) GET_by_offset(disp, driDispatchRemapTable[FinalCombinerInputNV_remap_index])
+#define SET_FinalCombinerInputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FinalCombinerInputNV_remap_index], fn)
+#define CALL_GetCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index], parameters)
+#define GET_GetCombinerInputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index])
+#define SET_GetCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index], fn)
+#define CALL_GetCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index], parameters)
+#define GET_GetCombinerInputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index])
+#define SET_GetCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index], fn)
+#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index], parameters)
+#define GET_GetCombinerOutputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index])
+#define SET_GetCombinerOutputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index], fn)
+#define CALL_GetCombinerOutputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index], parameters)
+#define GET_GetCombinerOutputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index])
+#define SET_GetCombinerOutputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index], fn)
+#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index], parameters)
+#define GET_GetFinalCombinerInputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index])
+#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index], fn)
+#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index], parameters)
+#define GET_GetFinalCombinerInputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index])
+#define SET_GetFinalCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index], fn)
+#define CALL_ResizeBuffersMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[ResizeBuffersMESA_remap_index], parameters)
+#define GET_ResizeBuffersMESA(disp) GET_by_offset(disp, driDispatchRemapTable[ResizeBuffersMESA_remap_index])
+#define SET_ResizeBuffersMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ResizeBuffersMESA_remap_index], fn)
+#define CALL_WindowPos2dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), driDispatchRemapTable[WindowPos2dMESA_remap_index], parameters)
+#define GET_WindowPos2dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2dMESA_remap_index])
+#define SET_WindowPos2dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2dMESA_remap_index], fn)
+#define CALL_WindowPos2dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos2dvMESA_remap_index], parameters)
+#define GET_WindowPos2dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2dvMESA_remap_index])
+#define SET_WindowPos2dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2dvMESA_remap_index], fn)
+#define CALL_WindowPos2fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), driDispatchRemapTable[WindowPos2fMESA_remap_index], parameters)
+#define GET_WindowPos2fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2fMESA_remap_index])
+#define SET_WindowPos2fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2fMESA_remap_index], fn)
+#define CALL_WindowPos2fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos2fvMESA_remap_index], parameters)
+#define GET_WindowPos2fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2fvMESA_remap_index])
+#define SET_WindowPos2fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2fvMESA_remap_index], fn)
+#define CALL_WindowPos2iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), driDispatchRemapTable[WindowPos2iMESA_remap_index], parameters)
+#define GET_WindowPos2iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2iMESA_remap_index])
+#define SET_WindowPos2iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2iMESA_remap_index], fn)
+#define CALL_WindowPos2ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos2ivMESA_remap_index], parameters)
+#define GET_WindowPos2ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2ivMESA_remap_index])
+#define SET_WindowPos2ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2ivMESA_remap_index], fn)
+#define CALL_WindowPos2sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), driDispatchRemapTable[WindowPos2sMESA_remap_index], parameters)
+#define GET_WindowPos2sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2sMESA_remap_index])
+#define SET_WindowPos2sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2sMESA_remap_index], fn)
+#define CALL_WindowPos2svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos2svMESA_remap_index], parameters)
+#define GET_WindowPos2svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2svMESA_remap_index])
+#define SET_WindowPos2svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2svMESA_remap_index], fn)
+#define CALL_WindowPos3dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[WindowPos3dMESA_remap_index], parameters)
+#define GET_WindowPos3dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3dMESA_remap_index])
+#define SET_WindowPos3dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3dMESA_remap_index], fn)
+#define CALL_WindowPos3dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos3dvMESA_remap_index], parameters)
+#define GET_WindowPos3dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3dvMESA_remap_index])
+#define SET_WindowPos3dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3dvMESA_remap_index], fn)
+#define CALL_WindowPos3fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[WindowPos3fMESA_remap_index], parameters)
+#define GET_WindowPos3fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3fMESA_remap_index])
+#define SET_WindowPos3fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3fMESA_remap_index], fn)
+#define CALL_WindowPos3fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos3fvMESA_remap_index], parameters)
+#define GET_WindowPos3fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3fvMESA_remap_index])
+#define SET_WindowPos3fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3fvMESA_remap_index], fn)
+#define CALL_WindowPos3iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[WindowPos3iMESA_remap_index], parameters)
+#define GET_WindowPos3iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3iMESA_remap_index])
+#define SET_WindowPos3iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3iMESA_remap_index], fn)
+#define CALL_WindowPos3ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos3ivMESA_remap_index], parameters)
+#define GET_WindowPos3ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3ivMESA_remap_index])
+#define SET_WindowPos3ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3ivMESA_remap_index], fn)
+#define CALL_WindowPos3sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), driDispatchRemapTable[WindowPos3sMESA_remap_index], parameters)
+#define GET_WindowPos3sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3sMESA_remap_index])
+#define SET_WindowPos3sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3sMESA_remap_index], fn)
+#define CALL_WindowPos3svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos3svMESA_remap_index], parameters)
+#define GET_WindowPos3svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3svMESA_remap_index])
+#define SET_WindowPos3svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3svMESA_remap_index], fn)
+#define CALL_WindowPos4dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[WindowPos4dMESA_remap_index], parameters)
+#define GET_WindowPos4dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4dMESA_remap_index])
+#define SET_WindowPos4dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4dMESA_remap_index], fn)
+#define CALL_WindowPos4dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos4dvMESA_remap_index], parameters)
+#define GET_WindowPos4dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4dvMESA_remap_index])
+#define SET_WindowPos4dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4dvMESA_remap_index], fn)
+#define CALL_WindowPos4fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[WindowPos4fMESA_remap_index], parameters)
+#define GET_WindowPos4fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4fMESA_remap_index])
+#define SET_WindowPos4fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4fMESA_remap_index], fn)
+#define CALL_WindowPos4fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos4fvMESA_remap_index], parameters)
+#define GET_WindowPos4fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4fvMESA_remap_index])
+#define SET_WindowPos4fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4fvMESA_remap_index], fn)
+#define CALL_WindowPos4iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), driDispatchRemapTable[WindowPos4iMESA_remap_index], parameters)
+#define GET_WindowPos4iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4iMESA_remap_index])
+#define SET_WindowPos4iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4iMESA_remap_index], fn)
+#define CALL_WindowPos4ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos4ivMESA_remap_index], parameters)
+#define GET_WindowPos4ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4ivMESA_remap_index])
+#define SET_WindowPos4ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4ivMESA_remap_index], fn)
+#define CALL_WindowPos4sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[WindowPos4sMESA_remap_index], parameters)
+#define GET_WindowPos4sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4sMESA_remap_index])
+#define SET_WindowPos4sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4sMESA_remap_index], fn)
+#define CALL_WindowPos4svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos4svMESA_remap_index], parameters)
+#define GET_WindowPos4svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4svMESA_remap_index])
+#define SET_WindowPos4svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4svMESA_remap_index], fn)
+#define CALL_MultiModeDrawArraysIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint)), driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index], parameters)
+#define GET_MultiModeDrawArraysIBM(disp) GET_by_offset(disp, driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index])
+#define SET_MultiModeDrawArraysIBM(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index], fn)
+#define CALL_MultiModeDrawElementsIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLsizei *, GLenum, const GLvoid * const *, GLsizei, GLint)), driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index], parameters)
+#define GET_MultiModeDrawElementsIBM(disp) GET_by_offset(disp, driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index])
+#define SET_MultiModeDrawElementsIBM(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index], fn)
+#define CALL_DeleteFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteFencesNV_remap_index], parameters)
+#define GET_DeleteFencesNV(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFencesNV_remap_index])
+#define SET_DeleteFencesNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFencesNV_remap_index], fn)
+#define CALL_FinishFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[FinishFenceNV_remap_index], parameters)
+#define GET_FinishFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[FinishFenceNV_remap_index])
+#define SET_FinishFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FinishFenceNV_remap_index], fn)
+#define CALL_GenFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenFencesNV_remap_index], parameters)
+#define GET_GenFencesNV(disp) GET_by_offset(disp, driDispatchRemapTable[GenFencesNV_remap_index])
+#define SET_GenFencesNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFencesNV_remap_index], fn)
+#define CALL_GetFenceivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetFenceivNV_remap_index], parameters)
+#define GET_GetFenceivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFenceivNV_remap_index])
+#define SET_GetFenceivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFenceivNV_remap_index], fn)
+#define CALL_IsFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsFenceNV_remap_index], parameters)
+#define GET_IsFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[IsFenceNV_remap_index])
+#define SET_IsFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsFenceNV_remap_index], fn)
+#define CALL_SetFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), driDispatchRemapTable[SetFenceNV_remap_index], parameters)
+#define GET_SetFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[SetFenceNV_remap_index])
+#define SET_SetFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SetFenceNV_remap_index], fn)
+#define CALL_TestFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[TestFenceNV_remap_index], parameters)
+#define GET_TestFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[TestFenceNV_remap_index])
+#define SET_TestFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TestFenceNV_remap_index], fn)
+#define CALL_AreProgramsResidentNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsizei, const GLuint *, GLboolean *)), driDispatchRemapTable[AreProgramsResidentNV_remap_index], parameters)
+#define GET_AreProgramsResidentNV(disp) GET_by_offset(disp, driDispatchRemapTable[AreProgramsResidentNV_remap_index])
+#define SET_AreProgramsResidentNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AreProgramsResidentNV_remap_index], fn)
+#define CALL_BindProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindProgramNV_remap_index], parameters)
+#define GET_BindProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[BindProgramNV_remap_index])
+#define SET_BindProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindProgramNV_remap_index], fn)
+#define CALL_DeleteProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteProgramsNV_remap_index], parameters)
+#define GET_DeleteProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteProgramsNV_remap_index])
+#define SET_DeleteProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteProgramsNV_remap_index], fn)
+#define CALL_ExecuteProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ExecuteProgramNV_remap_index], parameters)
+#define GET_ExecuteProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[ExecuteProgramNV_remap_index])
+#define SET_ExecuteProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ExecuteProgramNV_remap_index], fn)
+#define CALL_GenProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenProgramsNV_remap_index], parameters)
+#define GET_GenProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[GenProgramsNV_remap_index])
+#define SET_GenProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenProgramsNV_remap_index], fn)
+#define CALL_GetProgramParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetProgramParameterdvNV_remap_index], parameters)
+#define GET_GetProgramParameterdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramParameterdvNV_remap_index])
+#define SET_GetProgramParameterdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramParameterdvNV_remap_index], fn)
+#define CALL_GetProgramParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetProgramParameterfvNV_remap_index], parameters)
+#define GET_GetProgramParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramParameterfvNV_remap_index])
+#define SET_GetProgramParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramParameterfvNV_remap_index], fn)
+#define CALL_GetProgramStringNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLubyte *)), driDispatchRemapTable[GetProgramStringNV_remap_index], parameters)
+#define GET_GetProgramStringNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramStringNV_remap_index])
+#define SET_GetProgramStringNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramStringNV_remap_index], fn)
+#define CALL_GetProgramivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetProgramivNV_remap_index], parameters)
+#define GET_GetProgramivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramivNV_remap_index])
+#define SET_GetProgramivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramivNV_remap_index], fn)
+#define CALL_GetTrackMatrixivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), driDispatchRemapTable[GetTrackMatrixivNV_remap_index], parameters)
+#define GET_GetTrackMatrixivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetTrackMatrixivNV_remap_index])
+#define SET_GetTrackMatrixivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTrackMatrixivNV_remap_index], fn)
+#define CALL_GetVertexAttribPointervNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLvoid **)), driDispatchRemapTable[GetVertexAttribPointervNV_remap_index], parameters)
+#define GET_GetVertexAttribPointervNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribPointervNV_remap_index])
+#define SET_GetVertexAttribPointervNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribPointervNV_remap_index], fn)
+#define CALL_GetVertexAttribdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetVertexAttribdvNV_remap_index], parameters)
+#define GET_GetVertexAttribdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvNV_remap_index])
+#define SET_GetVertexAttribdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvNV_remap_index], fn)
+#define CALL_GetVertexAttribfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetVertexAttribfvNV_remap_index], parameters)
+#define GET_GetVertexAttribfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvNV_remap_index])
+#define SET_GetVertexAttribfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvNV_remap_index], fn)
+#define CALL_GetVertexAttribivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetVertexAttribivNV_remap_index], parameters)
+#define GET_GetVertexAttribivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivNV_remap_index])
+#define SET_GetVertexAttribivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivNV_remap_index], fn)
+#define CALL_IsProgramNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsProgramNV_remap_index], parameters)
+#define GET_IsProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[IsProgramNV_remap_index])
+#define SET_IsProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsProgramNV_remap_index], fn)
+#define CALL_LoadProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLubyte *)), driDispatchRemapTable[LoadProgramNV_remap_index], parameters)
+#define GET_LoadProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[LoadProgramNV_remap_index])
+#define SET_LoadProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadProgramNV_remap_index], fn)
+#define CALL_ProgramParameters4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramParameters4dvNV_remap_index], parameters)
+#define GET_ProgramParameters4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameters4dvNV_remap_index])
+#define SET_ProgramParameters4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameters4dvNV_remap_index], fn)
+#define CALL_ProgramParameters4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramParameters4fvNV_remap_index], parameters)
+#define GET_ProgramParameters4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameters4fvNV_remap_index])
+#define SET_ProgramParameters4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameters4fvNV_remap_index], fn)
+#define CALL_RequestResidentProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[RequestResidentProgramsNV_remap_index], parameters)
+#define GET_RequestResidentProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[RequestResidentProgramsNV_remap_index])
+#define SET_RequestResidentProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RequestResidentProgramsNV_remap_index], fn)
+#define CALL_TrackMatrixNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLenum)), driDispatchRemapTable[TrackMatrixNV_remap_index], parameters)
+#define GET_TrackMatrixNV(disp) GET_by_offset(disp, driDispatchRemapTable[TrackMatrixNV_remap_index])
+#define SET_TrackMatrixNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TrackMatrixNV_remap_index], fn)
+#define CALL_VertexAttrib1dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), driDispatchRemapTable[VertexAttrib1dNV_remap_index], parameters)
+#define GET_VertexAttrib1dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dNV_remap_index])
+#define SET_VertexAttrib1dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dNV_remap_index], fn)
+#define CALL_VertexAttrib1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib1dvNV_remap_index], parameters)
+#define GET_VertexAttrib1dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvNV_remap_index])
+#define SET_VertexAttrib1dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvNV_remap_index], fn)
+#define CALL_VertexAttrib1fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), driDispatchRemapTable[VertexAttrib1fNV_remap_index], parameters)
+#define GET_VertexAttrib1fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fNV_remap_index])
+#define SET_VertexAttrib1fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fNV_remap_index], fn)
+#define CALL_VertexAttrib1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib1fvNV_remap_index], parameters)
+#define GET_VertexAttrib1fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvNV_remap_index])
+#define SET_VertexAttrib1fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvNV_remap_index], fn)
+#define CALL_VertexAttrib1sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), driDispatchRemapTable[VertexAttrib1sNV_remap_index], parameters)
+#define GET_VertexAttrib1sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sNV_remap_index])
+#define SET_VertexAttrib1sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sNV_remap_index], fn)
+#define CALL_VertexAttrib1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib1svNV_remap_index], parameters)
+#define GET_VertexAttrib1svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svNV_remap_index])
+#define SET_VertexAttrib1svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svNV_remap_index], fn)
+#define CALL_VertexAttrib2dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib2dNV_remap_index], parameters)
+#define GET_VertexAttrib2dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dNV_remap_index])
+#define SET_VertexAttrib2dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dNV_remap_index], fn)
+#define CALL_VertexAttrib2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib2dvNV_remap_index], parameters)
+#define GET_VertexAttrib2dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvNV_remap_index])
+#define SET_VertexAttrib2dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvNV_remap_index], fn)
+#define CALL_VertexAttrib2fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib2fNV_remap_index], parameters)
+#define GET_VertexAttrib2fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fNV_remap_index])
+#define SET_VertexAttrib2fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fNV_remap_index], fn)
+#define CALL_VertexAttrib2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib2fvNV_remap_index], parameters)
+#define GET_VertexAttrib2fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvNV_remap_index])
+#define SET_VertexAttrib2fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvNV_remap_index], fn)
+#define CALL_VertexAttrib2sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib2sNV_remap_index], parameters)
+#define GET_VertexAttrib2sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sNV_remap_index])
+#define SET_VertexAttrib2sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sNV_remap_index], fn)
+#define CALL_VertexAttrib2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib2svNV_remap_index], parameters)
+#define GET_VertexAttrib2svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svNV_remap_index])
+#define SET_VertexAttrib2svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svNV_remap_index], fn)
+#define CALL_VertexAttrib3dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib3dNV_remap_index], parameters)
+#define GET_VertexAttrib3dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dNV_remap_index])
+#define SET_VertexAttrib3dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dNV_remap_index], fn)
+#define CALL_VertexAttrib3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib3dvNV_remap_index], parameters)
+#define GET_VertexAttrib3dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvNV_remap_index])
+#define SET_VertexAttrib3dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvNV_remap_index], fn)
+#define CALL_VertexAttrib3fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib3fNV_remap_index], parameters)
+#define GET_VertexAttrib3fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fNV_remap_index])
+#define SET_VertexAttrib3fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fNV_remap_index], fn)
+#define CALL_VertexAttrib3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib3fvNV_remap_index], parameters)
+#define GET_VertexAttrib3fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvNV_remap_index])
+#define SET_VertexAttrib3fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvNV_remap_index], fn)
+#define CALL_VertexAttrib3sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib3sNV_remap_index], parameters)
+#define GET_VertexAttrib3sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sNV_remap_index])
+#define SET_VertexAttrib3sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sNV_remap_index], fn)
+#define CALL_VertexAttrib3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib3svNV_remap_index], parameters)
+#define GET_VertexAttrib3svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svNV_remap_index])
+#define SET_VertexAttrib3svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svNV_remap_index], fn)
+#define CALL_VertexAttrib4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib4dNV_remap_index], parameters)
+#define GET_VertexAttrib4dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dNV_remap_index])
+#define SET_VertexAttrib4dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dNV_remap_index], fn)
+#define CALL_VertexAttrib4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib4dvNV_remap_index], parameters)
+#define GET_VertexAttrib4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvNV_remap_index])
+#define SET_VertexAttrib4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvNV_remap_index], fn)
+#define CALL_VertexAttrib4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib4fNV_remap_index], parameters)
+#define GET_VertexAttrib4fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fNV_remap_index])
+#define SET_VertexAttrib4fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fNV_remap_index], fn)
+#define CALL_VertexAttrib4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib4fvNV_remap_index], parameters)
+#define GET_VertexAttrib4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvNV_remap_index])
+#define SET_VertexAttrib4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvNV_remap_index], fn)
+#define CALL_VertexAttrib4sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib4sNV_remap_index], parameters)
+#define GET_VertexAttrib4sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sNV_remap_index])
+#define SET_VertexAttrib4sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sNV_remap_index], fn)
+#define CALL_VertexAttrib4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4svNV_remap_index], parameters)
+#define GET_VertexAttrib4svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svNV_remap_index])
+#define SET_VertexAttrib4svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svNV_remap_index], fn)
+#define CALL_VertexAttrib4ubNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[VertexAttrib4ubNV_remap_index], parameters)
+#define GET_VertexAttrib4ubNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubNV_remap_index])
+#define SET_VertexAttrib4ubNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubNV_remap_index], fn)
+#define CALL_VertexAttrib4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4ubvNV_remap_index], parameters)
+#define GET_VertexAttrib4ubvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvNV_remap_index])
+#define SET_VertexAttrib4ubvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvNV_remap_index], fn)
+#define CALL_VertexAttribPointerNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexAttribPointerNV_remap_index], parameters)
+#define GET_VertexAttribPointerNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerNV_remap_index])
+#define SET_VertexAttribPointerNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerNV_remap_index], fn)
+#define CALL_VertexAttribs1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs1dvNV_remap_index], parameters)
+#define GET_VertexAttribs1dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1dvNV_remap_index])
+#define SET_VertexAttribs1dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1dvNV_remap_index], fn)
+#define CALL_VertexAttribs1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs1fvNV_remap_index], parameters)
+#define GET_VertexAttribs1fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1fvNV_remap_index])
+#define SET_VertexAttribs1fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1fvNV_remap_index], fn)
+#define CALL_VertexAttribs1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs1svNV_remap_index], parameters)
+#define GET_VertexAttribs1svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1svNV_remap_index])
+#define SET_VertexAttribs1svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1svNV_remap_index], fn)
+#define CALL_VertexAttribs2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs2dvNV_remap_index], parameters)
+#define GET_VertexAttribs2dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2dvNV_remap_index])
+#define SET_VertexAttribs2dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2dvNV_remap_index], fn)
+#define CALL_VertexAttribs2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs2fvNV_remap_index], parameters)
+#define GET_VertexAttribs2fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2fvNV_remap_index])
+#define SET_VertexAttribs2fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2fvNV_remap_index], fn)
+#define CALL_VertexAttribs2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs2svNV_remap_index], parameters)
+#define GET_VertexAttribs2svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2svNV_remap_index])
+#define SET_VertexAttribs2svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2svNV_remap_index], fn)
+#define CALL_VertexAttribs3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs3dvNV_remap_index], parameters)
+#define GET_VertexAttribs3dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3dvNV_remap_index])
+#define SET_VertexAttribs3dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3dvNV_remap_index], fn)
+#define CALL_VertexAttribs3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs3fvNV_remap_index], parameters)
+#define GET_VertexAttribs3fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3fvNV_remap_index])
+#define SET_VertexAttribs3fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3fvNV_remap_index], fn)
+#define CALL_VertexAttribs3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs3svNV_remap_index], parameters)
+#define GET_VertexAttribs3svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3svNV_remap_index])
+#define SET_VertexAttribs3svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3svNV_remap_index], fn)
+#define CALL_VertexAttribs4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs4dvNV_remap_index], parameters)
+#define GET_VertexAttribs4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4dvNV_remap_index])
+#define SET_VertexAttribs4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4dvNV_remap_index], fn)
+#define CALL_VertexAttribs4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs4fvNV_remap_index], parameters)
+#define GET_VertexAttribs4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4fvNV_remap_index])
+#define SET_VertexAttribs4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4fvNV_remap_index], fn)
+#define CALL_VertexAttribs4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs4svNV_remap_index], parameters)
+#define GET_VertexAttribs4svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4svNV_remap_index])
+#define SET_VertexAttribs4svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4svNV_remap_index], fn)
+#define CALL_VertexAttribs4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *)), driDispatchRemapTable[VertexAttribs4ubvNV_remap_index], parameters)
+#define GET_VertexAttribs4ubvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4ubvNV_remap_index])
+#define SET_VertexAttribs4ubvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4ubvNV_remap_index], fn)
+#define CALL_GetTexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index], parameters)
+#define GET_GetTexBumpParameterfvATI(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index])
+#define SET_GetTexBumpParameterfvATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index], fn)
+#define CALL_GetTexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), driDispatchRemapTable[GetTexBumpParameterivATI_remap_index], parameters)
+#define GET_GetTexBumpParameterivATI(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterivATI_remap_index])
+#define SET_GetTexBumpParameterivATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterivATI_remap_index], fn)
+#define CALL_TexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[TexBumpParameterfvATI_remap_index], parameters)
+#define GET_TexBumpParameterfvATI(disp) GET_by_offset(disp, driDispatchRemapTable[TexBumpParameterfvATI_remap_index])
+#define SET_TexBumpParameterfvATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexBumpParameterfvATI_remap_index], fn)
+#define CALL_TexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[TexBumpParameterivATI_remap_index], parameters)
+#define GET_TexBumpParameterivATI(disp) GET_by_offset(disp, driDispatchRemapTable[TexBumpParameterivATI_remap_index])
+#define SET_TexBumpParameterivATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexBumpParameterivATI_remap_index], fn)
+#define CALL_AlphaFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index], parameters)
+#define GET_AlphaFragmentOp1ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index])
+#define SET_AlphaFragmentOp1ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index], fn)
+#define CALL_AlphaFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index], parameters)
+#define GET_AlphaFragmentOp2ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index])
+#define SET_AlphaFragmentOp2ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index], fn)
+#define CALL_AlphaFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index], parameters)
+#define GET_AlphaFragmentOp3ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index])
+#define SET_AlphaFragmentOp3ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index], fn)
+#define CALL_BeginFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[BeginFragmentShaderATI_remap_index], parameters)
+#define GET_BeginFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[BeginFragmentShaderATI_remap_index])
+#define SET_BeginFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginFragmentShaderATI_remap_index], fn)
+#define CALL_BindFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindFragmentShaderATI_remap_index], parameters)
+#define GET_BindFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[BindFragmentShaderATI_remap_index])
+#define SET_BindFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindFragmentShaderATI_remap_index], fn)
+#define CALL_ColorFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp1ATI_remap_index], parameters)
+#define GET_ColorFragmentOp1ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp1ATI_remap_index])
+#define SET_ColorFragmentOp1ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp1ATI_remap_index], fn)
+#define CALL_ColorFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp2ATI_remap_index], parameters)
+#define GET_ColorFragmentOp2ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp2ATI_remap_index])
+#define SET_ColorFragmentOp2ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp2ATI_remap_index], fn)
+#define CALL_ColorFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp3ATI_remap_index], parameters)
+#define GET_ColorFragmentOp3ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp3ATI_remap_index])
+#define SET_ColorFragmentOp3ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp3ATI_remap_index], fn)
+#define CALL_DeleteFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteFragmentShaderATI_remap_index], parameters)
+#define GET_DeleteFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFragmentShaderATI_remap_index])
+#define SET_DeleteFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFragmentShaderATI_remap_index], fn)
+#define CALL_EndFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndFragmentShaderATI_remap_index], parameters)
+#define GET_EndFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[EndFragmentShaderATI_remap_index])
+#define SET_EndFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndFragmentShaderATI_remap_index], fn)
+#define CALL_GenFragmentShadersATI(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[GenFragmentShadersATI_remap_index], parameters)
+#define GET_GenFragmentShadersATI(disp) GET_by_offset(disp, driDispatchRemapTable[GenFragmentShadersATI_remap_index])
+#define SET_GenFragmentShadersATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFragmentShadersATI_remap_index], fn)
+#define CALL_PassTexCoordATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), driDispatchRemapTable[PassTexCoordATI_remap_index], parameters)
+#define GET_PassTexCoordATI(disp) GET_by_offset(disp, driDispatchRemapTable[PassTexCoordATI_remap_index])
+#define SET_PassTexCoordATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PassTexCoordATI_remap_index], fn)
+#define CALL_SampleMapATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), driDispatchRemapTable[SampleMapATI_remap_index], parameters)
+#define GET_SampleMapATI(disp) GET_by_offset(disp, driDispatchRemapTable[SampleMapATI_remap_index])
+#define SET_SampleMapATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleMapATI_remap_index], fn)
+#define CALL_SetFragmentShaderConstantATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index], parameters)
+#define GET_SetFragmentShaderConstantATI(disp) GET_by_offset(disp, driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index])
+#define SET_SetFragmentShaderConstantATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index], fn)
+#define CALL_PointParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[PointParameteriNV_remap_index], parameters)
+#define GET_PointParameteriNV(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameteriNV_remap_index])
+#define SET_PointParameteriNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameteriNV_remap_index], fn)
+#define CALL_PointParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[PointParameterivNV_remap_index], parameters)
+#define GET_PointParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterivNV_remap_index])
+#define SET_PointParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterivNV_remap_index], fn)
+#define CALL_ActiveStencilFaceEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[ActiveStencilFaceEXT_remap_index], parameters)
+#define GET_ActiveStencilFaceEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ActiveStencilFaceEXT_remap_index])
+#define SET_ActiveStencilFaceEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ActiveStencilFaceEXT_remap_index], fn)
+#define CALL_BindVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindVertexArrayAPPLE_remap_index], parameters)
+#define GET_BindVertexArrayAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[BindVertexArrayAPPLE_remap_index])
+#define SET_BindVertexArrayAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindVertexArrayAPPLE_remap_index], fn)
+#define CALL_DeleteVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index], parameters)
+#define GET_DeleteVertexArraysAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index])
+#define SET_DeleteVertexArraysAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index], fn)
+#define CALL_GenVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenVertexArraysAPPLE_remap_index], parameters)
+#define GET_GenVertexArraysAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GenVertexArraysAPPLE_remap_index])
+#define SET_GenVertexArraysAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenVertexArraysAPPLE_remap_index], fn)
+#define CALL_IsVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsVertexArrayAPPLE_remap_index], parameters)
+#define GET_IsVertexArrayAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[IsVertexArrayAPPLE_remap_index])
+#define SET_IsVertexArrayAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsVertexArrayAPPLE_remap_index], fn)
+#define CALL_GetProgramNamedParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble *)), driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index], parameters)
+#define GET_GetProgramNamedParameterdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index])
+#define SET_GetProgramNamedParameterdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index], fn)
+#define CALL_GetProgramNamedParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat *)), driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index], parameters)
+#define GET_GetProgramNamedParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index])
+#define SET_GetProgramNamedParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index], fn)
+#define CALL_ProgramNamedParameter4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index], parameters)
+#define GET_ProgramNamedParameter4dNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index])
+#define SET_ProgramNamedParameter4dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index], fn)
+#define CALL_ProgramNamedParameter4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLdouble *)), driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index], parameters)
+#define GET_ProgramNamedParameter4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index])
+#define SET_ProgramNamedParameter4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index], fn)
+#define CALL_ProgramNamedParameter4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index], parameters)
+#define GET_ProgramNamedParameter4fNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index])
+#define SET_ProgramNamedParameter4fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index], fn)
+#define CALL_ProgramNamedParameter4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLfloat *)), driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index], parameters)
+#define GET_ProgramNamedParameter4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index])
+#define SET_ProgramNamedParameter4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index], fn)
+#define CALL_DepthBoundsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd, GLclampd)), driDispatchRemapTable[DepthBoundsEXT_remap_index], parameters)
+#define GET_DepthBoundsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DepthBoundsEXT_remap_index])
+#define SET_DepthBoundsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DepthBoundsEXT_remap_index], fn)
+#define CALL_BlendEquationSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), driDispatchRemapTable[BlendEquationSeparateEXT_remap_index], parameters)
+#define GET_BlendEquationSeparateEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlendEquationSeparateEXT_remap_index])
+#define SET_BlendEquationSeparateEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlendEquationSeparateEXT_remap_index], fn)
+#define CALL_BindFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindFramebufferEXT_remap_index], parameters)
+#define GET_BindFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindFramebufferEXT_remap_index])
+#define SET_BindFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindFramebufferEXT_remap_index], fn)
+#define CALL_BindRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindRenderbufferEXT_remap_index], parameters)
+#define GET_BindRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindRenderbufferEXT_remap_index])
+#define SET_BindRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindRenderbufferEXT_remap_index], fn)
+#define CALL_CheckFramebufferStatusEXT(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index], parameters)
+#define GET_CheckFramebufferStatusEXT(disp) GET_by_offset(disp, driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index])
+#define SET_CheckFramebufferStatusEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index], fn)
+#define CALL_DeleteFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteFramebuffersEXT_remap_index], parameters)
+#define GET_DeleteFramebuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFramebuffersEXT_remap_index])
+#define SET_DeleteFramebuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFramebuffersEXT_remap_index], fn)
+#define CALL_DeleteRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index], parameters)
+#define GET_DeleteRenderbuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index])
+#define SET_DeleteRenderbuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index], fn)
+#define CALL_FramebufferRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint)), driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index], parameters)
+#define GET_FramebufferRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index])
+#define SET_FramebufferRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index], fn)
+#define CALL_FramebufferTexture1DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTexture1DEXT_remap_index], parameters)
+#define GET_FramebufferTexture1DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture1DEXT_remap_index])
+#define SET_FramebufferTexture1DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture1DEXT_remap_index], fn)
+#define CALL_FramebufferTexture2DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTexture2DEXT_remap_index], parameters)
+#define GET_FramebufferTexture2DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture2DEXT_remap_index])
+#define SET_FramebufferTexture2DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture2DEXT_remap_index], fn)
+#define CALL_FramebufferTexture3DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTexture3DEXT_remap_index], parameters)
+#define GET_FramebufferTexture3DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture3DEXT_remap_index])
+#define SET_FramebufferTexture3DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture3DEXT_remap_index], fn)
+#define CALL_GenFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenFramebuffersEXT_remap_index], parameters)
+#define GET_GenFramebuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenFramebuffersEXT_remap_index])
+#define SET_GenFramebuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFramebuffersEXT_remap_index], fn)
+#define CALL_GenRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenRenderbuffersEXT_remap_index], parameters)
+#define GET_GenRenderbuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenRenderbuffersEXT_remap_index])
+#define SET_GenRenderbuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenRenderbuffersEXT_remap_index], fn)
+#define CALL_GenerateMipmapEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[GenerateMipmapEXT_remap_index], parameters)
+#define GET_GenerateMipmapEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenerateMipmapEXT_remap_index])
+#define SET_GenerateMipmapEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenerateMipmapEXT_remap_index], fn)
+#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index], parameters)
+#define GET_GetFramebufferAttachmentParameterivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index])
+#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index], fn)
+#define CALL_GetRenderbufferParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index], parameters)
+#define GET_GetRenderbufferParameterivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index])
+#define SET_GetRenderbufferParameterivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index], fn)
+#define CALL_IsFramebufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsFramebufferEXT_remap_index], parameters)
+#define GET_IsFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsFramebufferEXT_remap_index])
+#define SET_IsFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsFramebufferEXT_remap_index], fn)
+#define CALL_IsRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsRenderbufferEXT_remap_index], parameters)
+#define GET_IsRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsRenderbufferEXT_remap_index])
+#define SET_IsRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsRenderbufferEXT_remap_index], fn)
+#define CALL_RenderbufferStorageEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei)), driDispatchRemapTable[RenderbufferStorageEXT_remap_index], parameters)
+#define GET_RenderbufferStorageEXT(disp) GET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageEXT_remap_index])
+#define SET_RenderbufferStorageEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageEXT_remap_index], fn)
+#define CALL_BlitFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)), driDispatchRemapTable[BlitFramebufferEXT_remap_index], parameters)
+#define GET_BlitFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index])
+#define SET_BlitFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index], fn)
+#define CALL_BufferParameteriAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), driDispatchRemapTable[BufferParameteriAPPLE_remap_index], parameters)
+#define GET_BufferParameteriAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[BufferParameteriAPPLE_remap_index])
+#define SET_BufferParameteriAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferParameteriAPPLE_remap_index], fn)
+#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index], parameters)
+#define GET_FlushMappedBufferRangeAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index])
+#define SET_FlushMappedBufferRangeAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index], fn)
+#define CALL_FramebufferTextureLayerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], parameters)
+#define GET_FramebufferTextureLayerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index])
+#define SET_FramebufferTextureLayerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], fn)
+#define CALL_ColorMaskIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean)), driDispatchRemapTable[ColorMaskIndexedEXT_remap_index], parameters)
+#define GET_ColorMaskIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ColorMaskIndexedEXT_remap_index])
+#define SET_ColorMaskIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorMaskIndexedEXT_remap_index], fn)
+#define CALL_DisableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[DisableIndexedEXT_remap_index], parameters)
+#define GET_DisableIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DisableIndexedEXT_remap_index])
+#define SET_DisableIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DisableIndexedEXT_remap_index], fn)
+#define CALL_EnableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[EnableIndexedEXT_remap_index], parameters)
+#define GET_EnableIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EnableIndexedEXT_remap_index])
+#define SET_EnableIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EnableIndexedEXT_remap_index], fn)
+#define CALL_GetBooleanIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLboolean *)), driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index], parameters)
+#define GET_GetBooleanIndexedvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index])
+#define SET_GetBooleanIndexedvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index], fn)
+#define CALL_GetIntegerIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint *)), driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index], parameters)
+#define GET_GetIntegerIndexedvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index])
+#define SET_GetIntegerIndexedvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index], fn)
+#define CALL_IsEnabledIndexedEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[IsEnabledIndexedEXT_remap_index], parameters)
+#define GET_IsEnabledIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsEnabledIndexedEXT_remap_index])
+#define SET_IsEnabledIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsEnabledIndexedEXT_remap_index], fn)
+#define CALL_BeginConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), driDispatchRemapTable[BeginConditionalRenderNV_remap_index], parameters)
+#define GET_BeginConditionalRenderNV(disp) GET_by_offset(disp, driDispatchRemapTable[BeginConditionalRenderNV_remap_index])
+#define SET_BeginConditionalRenderNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginConditionalRenderNV_remap_index], fn)
+#define CALL_EndConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndConditionalRenderNV_remap_index], parameters)
+#define GET_EndConditionalRenderNV(disp) GET_by_offset(disp, driDispatchRemapTable[EndConditionalRenderNV_remap_index])
+#define SET_EndConditionalRenderNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndConditionalRenderNV_remap_index], fn)
+#define CALL_BeginTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index], parameters)
+#define GET_BeginTransformFeedbackEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index])
+#define SET_BeginTransformFeedbackEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index], fn)
+#define CALL_BindBufferBaseEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint)), driDispatchRemapTable[BindBufferBaseEXT_remap_index], parameters)
+#define GET_BindBufferBaseEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferBaseEXT_remap_index])
+#define SET_BindBufferBaseEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferBaseEXT_remap_index], fn)
+#define CALL_BindBufferOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr)), driDispatchRemapTable[BindBufferOffsetEXT_remap_index], parameters)
+#define GET_BindBufferOffsetEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferOffsetEXT_remap_index])
+#define SET_BindBufferOffsetEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferOffsetEXT_remap_index], fn)
+#define CALL_BindBufferRangeEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr)), driDispatchRemapTable[BindBufferRangeEXT_remap_index], parameters)
+#define GET_BindBufferRangeEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferRangeEXT_remap_index])
+#define SET_BindBufferRangeEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferRangeEXT_remap_index], fn)
+#define CALL_EndTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndTransformFeedbackEXT_remap_index], parameters)
+#define GET_EndTransformFeedbackEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EndTransformFeedbackEXT_remap_index])
+#define SET_EndTransformFeedbackEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndTransformFeedbackEXT_remap_index], fn)
+#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *)), driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index], parameters)
+#define GET_GetTransformFeedbackVaryingEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index])
+#define SET_GetTransformFeedbackVaryingEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index], fn)
+#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const char **, GLenum)), driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index], parameters)
+#define GET_TransformFeedbackVaryingsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index])
+#define SET_TransformFeedbackVaryingsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index], fn)
+#define CALL_ProvokingVertexEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[ProvokingVertexEXT_remap_index], parameters)
+#define GET_ProvokingVertexEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProvokingVertexEXT_remap_index])
+#define SET_ProvokingVertexEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProvokingVertexEXT_remap_index], fn)
+#define CALL_GetTexParameterPointervAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index], parameters)
+#define GET_GetTexParameterPointervAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index])
+#define SET_GetTexParameterPointervAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index], fn)
+#define CALL_TextureRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLvoid *)), driDispatchRemapTable[TextureRangeAPPLE_remap_index], parameters)
+#define GET_TextureRangeAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[TextureRangeAPPLE_remap_index])
+#define SET_TextureRangeAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TextureRangeAPPLE_remap_index], fn)
+#define CALL_GetObjectParameterivAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index], parameters)
+#define GET_GetObjectParameterivAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index])
+#define SET_GetObjectParameterivAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index], fn)
+#define CALL_ObjectPurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index], parameters)
+#define GET_ObjectPurgeableAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index])
+#define SET_ObjectPurgeableAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index], fn)
+#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index], parameters)
+#define GET_ObjectUnpurgeableAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index])
+#define SET_ObjectUnpurgeableAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index], fn)
+#define CALL_StencilFuncSeparateATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), driDispatchRemapTable[StencilFuncSeparateATI_remap_index], parameters)
+#define GET_StencilFuncSeparateATI(disp) GET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparateATI_remap_index])
+#define SET_StencilFuncSeparateATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparateATI_remap_index], fn)
+#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], parameters)
+#define GET_ProgramEnvParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index])
+#define SET_ProgramEnvParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], fn)
+#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index], parameters)
+#define GET_ProgramLocalParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index])
+#define SET_ProgramLocalParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index], fn)
+#define CALL_GetQueryObjecti64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint64EXT *)), driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index], parameters)
+#define GET_GetQueryObjecti64vEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index])
+#define SET_GetQueryObjecti64vEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index], fn)
+#define CALL_GetQueryObjectui64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint64EXT *)), driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index], parameters)
+#define GET_GetQueryObjectui64vEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index])
+#define SET_GetQueryObjectui64vEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index], fn)
+#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index], parameters)
+#define GET_EGLImageTargetRenderbufferStorageOES(disp) GET_by_offset(disp, driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index])
+#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index], fn)
+#define CALL_EGLImageTargetTexture2DOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index], parameters)
+#define GET_EGLImageTargetTexture2DOES(disp) GET_by_offset(disp, driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index])
+#define SET_EGLImageTargetTexture2DOES(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index], fn)
+
+#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */
+
+#endif /* !defined( _GLAPI_DISPATCH_H_ ) */
diff --git a/src/mapi/glapi/glapioffsets.h b/src/mapi/glapi/glapioffsets.h
new file mode 100644 (file)
index 0000000..a8133b4
--- /dev/null
@@ -0,0 +1,1270 @@
+/* DO NOT EDIT - This file generated automatically by gl_offsets.py (from Mesa) script */
+
+/*
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ * (C) Copyright IBM Corporation 2004
+ * 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
+ * BRIAN PAUL, 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.
+ */
+
+#if !defined( _GLAPI_OFFSETS_H_ )
+#  define _GLAPI_OFFSETS_H_
+
+/* this file should not be included directly in mesa */
+
+#define _gloffset_NewList 0
+#define _gloffset_EndList 1
+#define _gloffset_CallList 2
+#define _gloffset_CallLists 3
+#define _gloffset_DeleteLists 4
+#define _gloffset_GenLists 5
+#define _gloffset_ListBase 6
+#define _gloffset_Begin 7
+#define _gloffset_Bitmap 8
+#define _gloffset_Color3b 9
+#define _gloffset_Color3bv 10
+#define _gloffset_Color3d 11
+#define _gloffset_Color3dv 12
+#define _gloffset_Color3f 13
+#define _gloffset_Color3fv 14
+#define _gloffset_Color3i 15
+#define _gloffset_Color3iv 16
+#define _gloffset_Color3s 17
+#define _gloffset_Color3sv 18
+#define _gloffset_Color3ub 19
+#define _gloffset_Color3ubv 20
+#define _gloffset_Color3ui 21
+#define _gloffset_Color3uiv 22
+#define _gloffset_Color3us 23
+#define _gloffset_Color3usv 24
+#define _gloffset_Color4b 25
+#define _gloffset_Color4bv 26
+#define _gloffset_Color4d 27
+#define _gloffset_Color4dv 28
+#define _gloffset_Color4f 29
+#define _gloffset_Color4fv 30
+#define _gloffset_Color4i 31
+#define _gloffset_Color4iv 32
+#define _gloffset_Color4s 33
+#define _gloffset_Color4sv 34
+#define _gloffset_Color4ub 35
+#define _gloffset_Color4ubv 36
+#define _gloffset_Color4ui 37
+#define _gloffset_Color4uiv 38
+#define _gloffset_Color4us 39
+#define _gloffset_Color4usv 40
+#define _gloffset_EdgeFlag 41
+#define _gloffset_EdgeFlagv 42
+#define _gloffset_End 43
+#define _gloffset_Indexd 44
+#define _gloffset_Indexdv 45
+#define _gloffset_Indexf 46
+#define _gloffset_Indexfv 47
+#define _gloffset_Indexi 48
+#define _gloffset_Indexiv 49
+#define _gloffset_Indexs 50
+#define _gloffset_Indexsv 51
+#define _gloffset_Normal3b 52
+#define _gloffset_Normal3bv 53
+#define _gloffset_Normal3d 54
+#define _gloffset_Normal3dv 55
+#define _gloffset_Normal3f 56
+#define _gloffset_Normal3fv 57
+#define _gloffset_Normal3i 58
+#define _gloffset_Normal3iv 59
+#define _gloffset_Normal3s 60
+#define _gloffset_Normal3sv 61
+#define _gloffset_RasterPos2d 62
+#define _gloffset_RasterPos2dv 63
+#define _gloffset_RasterPos2f 64
+#define _gloffset_RasterPos2fv 65
+#define _gloffset_RasterPos2i 66
+#define _gloffset_RasterPos2iv 67
+#define _gloffset_RasterPos2s 68
+#define _gloffset_RasterPos2sv 69
+#define _gloffset_RasterPos3d 70
+#define _gloffset_RasterPos3dv 71
+#define _gloffset_RasterPos3f 72
+#define _gloffset_RasterPos3fv 73
+#define _gloffset_RasterPos3i 74
+#define _gloffset_RasterPos3iv 75
+#define _gloffset_RasterPos3s 76
+#define _gloffset_RasterPos3sv 77
+#define _gloffset_RasterPos4d 78
+#define _gloffset_RasterPos4dv 79
+#define _gloffset_RasterPos4f 80
+#define _gloffset_RasterPos4fv 81
+#define _gloffset_RasterPos4i 82
+#define _gloffset_RasterPos4iv 83
+#define _gloffset_RasterPos4s 84
+#define _gloffset_RasterPos4sv 85
+#define _gloffset_Rectd 86
+#define _gloffset_Rectdv 87
+#define _gloffset_Rectf 88
+#define _gloffset_Rectfv 89
+#define _gloffset_Recti 90
+#define _gloffset_Rectiv 91
+#define _gloffset_Rects 92
+#define _gloffset_Rectsv 93
+#define _gloffset_TexCoord1d 94
+#define _gloffset_TexCoord1dv 95
+#define _gloffset_TexCoord1f 96
+#define _gloffset_TexCoord1fv 97
+#define _gloffset_TexCoord1i 98
+#define _gloffset_TexCoord1iv 99
+#define _gloffset_TexCoord1s 100
+#define _gloffset_TexCoord1sv 101
+#define _gloffset_TexCoord2d 102
+#define _gloffset_TexCoord2dv 103
+#define _gloffset_TexCoord2f 104
+#define _gloffset_TexCoord2fv 105
+#define _gloffset_TexCoord2i 106
+#define _gloffset_TexCoord2iv 107
+#define _gloffset_TexCoord2s 108
+#define _gloffset_TexCoord2sv 109
+#define _gloffset_TexCoord3d 110
+#define _gloffset_TexCoord3dv 111
+#define _gloffset_TexCoord3f 112
+#define _gloffset_TexCoord3fv 113
+#define _gloffset_TexCoord3i 114
+#define _gloffset_TexCoord3iv 115
+#define _gloffset_TexCoord3s 116
+#define _gloffset_TexCoord3sv 117
+#define _gloffset_TexCoord4d 118
+#define _gloffset_TexCoord4dv 119
+#define _gloffset_TexCoord4f 120
+#define _gloffset_TexCoord4fv 121
+#define _gloffset_TexCoord4i 122
+#define _gloffset_TexCoord4iv 123
+#define _gloffset_TexCoord4s 124
+#define _gloffset_TexCoord4sv 125
+#define _gloffset_Vertex2d 126
+#define _gloffset_Vertex2dv 127
+#define _gloffset_Vertex2f 128
+#define _gloffset_Vertex2fv 129
+#define _gloffset_Vertex2i 130
+#define _gloffset_Vertex2iv 131
+#define _gloffset_Vertex2s 132
+#define _gloffset_Vertex2sv 133
+#define _gloffset_Vertex3d 134
+#define _gloffset_Vertex3dv 135
+#define _gloffset_Vertex3f 136
+#define _gloffset_Vertex3fv 137
+#define _gloffset_Vertex3i 138
+#define _gloffset_Vertex3iv 139
+#define _gloffset_Vertex3s 140
+#define _gloffset_Vertex3sv 141
+#define _gloffset_Vertex4d 142
+#define _gloffset_Vertex4dv 143
+#define _gloffset_Vertex4f 144
+#define _gloffset_Vertex4fv 145
+#define _gloffset_Vertex4i 146
+#define _gloffset_Vertex4iv 147
+#define _gloffset_Vertex4s 148
+#define _gloffset_Vertex4sv 149
+#define _gloffset_ClipPlane 150
+#define _gloffset_ColorMaterial 151
+#define _gloffset_CullFace 152
+#define _gloffset_Fogf 153
+#define _gloffset_Fogfv 154
+#define _gloffset_Fogi 155
+#define _gloffset_Fogiv 156
+#define _gloffset_FrontFace 157
+#define _gloffset_Hint 158
+#define _gloffset_Lightf 159
+#define _gloffset_Lightfv 160
+#define _gloffset_Lighti 161
+#define _gloffset_Lightiv 162
+#define _gloffset_LightModelf 163
+#define _gloffset_LightModelfv 164
+#define _gloffset_LightModeli 165
+#define _gloffset_LightModeliv 166
+#define _gloffset_LineStipple 167
+#define _gloffset_LineWidth 168
+#define _gloffset_Materialf 169
+#define _gloffset_Materialfv 170
+#define _gloffset_Materiali 171
+#define _gloffset_Materialiv 172
+#define _gloffset_PointSize 173
+#define _gloffset_PolygonMode 174
+#define _gloffset_PolygonStipple 175
+#define _gloffset_Scissor 176
+#define _gloffset_ShadeModel 177
+#define _gloffset_TexParameterf 178
+#define _gloffset_TexParameterfv 179
+#define _gloffset_TexParameteri 180
+#define _gloffset_TexParameteriv 181
+#define _gloffset_TexImage1D 182
+#define _gloffset_TexImage2D 183
+#define _gloffset_TexEnvf 184
+#define _gloffset_TexEnvfv 185
+#define _gloffset_TexEnvi 186
+#define _gloffset_TexEnviv 187
+#define _gloffset_TexGend 188
+#define _gloffset_TexGendv 189
+#define _gloffset_TexGenf 190
+#define _gloffset_TexGenfv 191
+#define _gloffset_TexGeni 192
+#define _gloffset_TexGeniv 193
+#define _gloffset_FeedbackBuffer 194
+#define _gloffset_SelectBuffer 195
+#define _gloffset_RenderMode 196
+#define _gloffset_InitNames 197
+#define _gloffset_LoadName 198
+#define _gloffset_PassThrough 199
+#define _gloffset_PopName 200
+#define _gloffset_PushName 201
+#define _gloffset_DrawBuffer 202
+#define _gloffset_Clear 203
+#define _gloffset_ClearAccum 204
+#define _gloffset_ClearIndex 205
+#define _gloffset_ClearColor 206
+#define _gloffset_ClearStencil 207
+#define _gloffset_ClearDepth 208
+#define _gloffset_StencilMask 209
+#define _gloffset_ColorMask 210
+#define _gloffset_DepthMask 211
+#define _gloffset_IndexMask 212
+#define _gloffset_Accum 213
+#define _gloffset_Disable 214
+#define _gloffset_Enable 215
+#define _gloffset_Finish 216
+#define _gloffset_Flush 217
+#define _gloffset_PopAttrib 218
+#define _gloffset_PushAttrib 219
+#define _gloffset_Map1d 220
+#define _gloffset_Map1f 221
+#define _gloffset_Map2d 222
+#define _gloffset_Map2f 223
+#define _gloffset_MapGrid1d 224
+#define _gloffset_MapGrid1f 225
+#define _gloffset_MapGrid2d 226
+#define _gloffset_MapGrid2f 227
+#define _gloffset_EvalCoord1d 228
+#define _gloffset_EvalCoord1dv 229
+#define _gloffset_EvalCoord1f 230
+#define _gloffset_EvalCoord1fv 231
+#define _gloffset_EvalCoord2d 232
+#define _gloffset_EvalCoord2dv 233
+#define _gloffset_EvalCoord2f 234
+#define _gloffset_EvalCoord2fv 235
+#define _gloffset_EvalMesh1 236
+#define _gloffset_EvalPoint1 237
+#define _gloffset_EvalMesh2 238
+#define _gloffset_EvalPoint2 239
+#define _gloffset_AlphaFunc 240
+#define _gloffset_BlendFunc 241
+#define _gloffset_LogicOp 242
+#define _gloffset_StencilFunc 243
+#define _gloffset_StencilOp 244
+#define _gloffset_DepthFunc 245
+#define _gloffset_PixelZoom 246
+#define _gloffset_PixelTransferf 247
+#define _gloffset_PixelTransferi 248
+#define _gloffset_PixelStoref 249
+#define _gloffset_PixelStorei 250
+#define _gloffset_PixelMapfv 251
+#define _gloffset_PixelMapuiv 252
+#define _gloffset_PixelMapusv 253
+#define _gloffset_ReadBuffer 254
+#define _gloffset_CopyPixels 255
+#define _gloffset_ReadPixels 256
+#define _gloffset_DrawPixels 257
+#define _gloffset_GetBooleanv 258
+#define _gloffset_GetClipPlane 259
+#define _gloffset_GetDoublev 260
+#define _gloffset_GetError 261
+#define _gloffset_GetFloatv 262
+#define _gloffset_GetIntegerv 263
+#define _gloffset_GetLightfv 264
+#define _gloffset_GetLightiv 265
+#define _gloffset_GetMapdv 266
+#define _gloffset_GetMapfv 267
+#define _gloffset_GetMapiv 268
+#define _gloffset_GetMaterialfv 269
+#define _gloffset_GetMaterialiv 270
+#define _gloffset_GetPixelMapfv 271
+#define _gloffset_GetPixelMapuiv 272
+#define _gloffset_GetPixelMapusv 273
+#define _gloffset_GetPolygonStipple 274
+#define _gloffset_GetString 275
+#define _gloffset_GetTexEnvfv 276
+#define _gloffset_GetTexEnviv 277
+#define _gloffset_GetTexGendv 278
+#define _gloffset_GetTexGenfv 279
+#define _gloffset_GetTexGeniv 280
+#define _gloffset_GetTexImage 281
+#define _gloffset_GetTexParameterfv 282
+#define _gloffset_GetTexParameteriv 283
+#define _gloffset_GetTexLevelParameterfv 284
+#define _gloffset_GetTexLevelParameteriv 285
+#define _gloffset_IsEnabled 286
+#define _gloffset_IsList 287
+#define _gloffset_DepthRange 288
+#define _gloffset_Frustum 289
+#define _gloffset_LoadIdentity 290
+#define _gloffset_LoadMatrixf 291
+#define _gloffset_LoadMatrixd 292
+#define _gloffset_MatrixMode 293
+#define _gloffset_MultMatrixf 294
+#define _gloffset_MultMatrixd 295
+#define _gloffset_Ortho 296
+#define _gloffset_PopMatrix 297
+#define _gloffset_PushMatrix 298
+#define _gloffset_Rotated 299
+#define _gloffset_Rotatef 300
+#define _gloffset_Scaled 301
+#define _gloffset_Scalef 302
+#define _gloffset_Translated 303
+#define _gloffset_Translatef 304
+#define _gloffset_Viewport 305
+#define _gloffset_ArrayElement 306
+#define _gloffset_BindTexture 307
+#define _gloffset_ColorPointer 308
+#define _gloffset_DisableClientState 309
+#define _gloffset_DrawArrays 310
+#define _gloffset_DrawElements 311
+#define _gloffset_EdgeFlagPointer 312
+#define _gloffset_EnableClientState 313
+#define _gloffset_IndexPointer 314
+#define _gloffset_Indexub 315
+#define _gloffset_Indexubv 316
+#define _gloffset_InterleavedArrays 317
+#define _gloffset_NormalPointer 318
+#define _gloffset_PolygonOffset 319
+#define _gloffset_TexCoordPointer 320
+#define _gloffset_VertexPointer 321
+#define _gloffset_AreTexturesResident 322
+#define _gloffset_CopyTexImage1D 323
+#define _gloffset_CopyTexImage2D 324
+#define _gloffset_CopyTexSubImage1D 325
+#define _gloffset_CopyTexSubImage2D 326
+#define _gloffset_DeleteTextures 327
+#define _gloffset_GenTextures 328
+#define _gloffset_GetPointerv 329
+#define _gloffset_IsTexture 330
+#define _gloffset_PrioritizeTextures 331
+#define _gloffset_TexSubImage1D 332
+#define _gloffset_TexSubImage2D 333
+#define _gloffset_PopClientAttrib 334
+#define _gloffset_PushClientAttrib 335
+#define _gloffset_BlendColor 336
+#define _gloffset_BlendEquation 337
+#define _gloffset_DrawRangeElements 338
+#define _gloffset_ColorTable 339
+#define _gloffset_ColorTableParameterfv 340
+#define _gloffset_ColorTableParameteriv 341
+#define _gloffset_CopyColorTable 342
+#define _gloffset_GetColorTable 343
+#define _gloffset_GetColorTableParameterfv 344
+#define _gloffset_GetColorTableParameteriv 345
+#define _gloffset_ColorSubTable 346
+#define _gloffset_CopyColorSubTable 347
+#define _gloffset_ConvolutionFilter1D 348
+#define _gloffset_ConvolutionFilter2D 349
+#define _gloffset_ConvolutionParameterf 350
+#define _gloffset_ConvolutionParameterfv 351
+#define _gloffset_ConvolutionParameteri 352
+#define _gloffset_ConvolutionParameteriv 353
+#define _gloffset_CopyConvolutionFilter1D 354
+#define _gloffset_CopyConvolutionFilter2D 355
+#define _gloffset_GetConvolutionFilter 356
+#define _gloffset_GetConvolutionParameterfv 357
+#define _gloffset_GetConvolutionParameteriv 358
+#define _gloffset_GetSeparableFilter 359
+#define _gloffset_SeparableFilter2D 360
+#define _gloffset_GetHistogram 361
+#define _gloffset_GetHistogramParameterfv 362
+#define _gloffset_GetHistogramParameteriv 363
+#define _gloffset_GetMinmax 364
+#define _gloffset_GetMinmaxParameterfv 365
+#define _gloffset_GetMinmaxParameteriv 366
+#define _gloffset_Histogram 367
+#define _gloffset_Minmax 368
+#define _gloffset_ResetHistogram 369
+#define _gloffset_ResetMinmax 370
+#define _gloffset_TexImage3D 371
+#define _gloffset_TexSubImage3D 372
+#define _gloffset_CopyTexSubImage3D 373
+#define _gloffset_ActiveTextureARB 374
+#define _gloffset_ClientActiveTextureARB 375
+#define _gloffset_MultiTexCoord1dARB 376
+#define _gloffset_MultiTexCoord1dvARB 377
+#define _gloffset_MultiTexCoord1fARB 378
+#define _gloffset_MultiTexCoord1fvARB 379
+#define _gloffset_MultiTexCoord1iARB 380
+#define _gloffset_MultiTexCoord1ivARB 381
+#define _gloffset_MultiTexCoord1sARB 382
+#define _gloffset_MultiTexCoord1svARB 383
+#define _gloffset_MultiTexCoord2dARB 384
+#define _gloffset_MultiTexCoord2dvARB 385
+#define _gloffset_MultiTexCoord2fARB 386
+#define _gloffset_MultiTexCoord2fvARB 387
+#define _gloffset_MultiTexCoord2iARB 388
+#define _gloffset_MultiTexCoord2ivARB 389
+#define _gloffset_MultiTexCoord2sARB 390
+#define _gloffset_MultiTexCoord2svARB 391
+#define _gloffset_MultiTexCoord3dARB 392
+#define _gloffset_MultiTexCoord3dvARB 393
+#define _gloffset_MultiTexCoord3fARB 394
+#define _gloffset_MultiTexCoord3fvARB 395
+#define _gloffset_MultiTexCoord3iARB 396
+#define _gloffset_MultiTexCoord3ivARB 397
+#define _gloffset_MultiTexCoord3sARB 398
+#define _gloffset_MultiTexCoord3svARB 399
+#define _gloffset_MultiTexCoord4dARB 400
+#define _gloffset_MultiTexCoord4dvARB 401
+#define _gloffset_MultiTexCoord4fARB 402
+#define _gloffset_MultiTexCoord4fvARB 403
+#define _gloffset_MultiTexCoord4iARB 404
+#define _gloffset_MultiTexCoord4ivARB 405
+#define _gloffset_MultiTexCoord4sARB 406
+#define _gloffset_MultiTexCoord4svARB 407
+
+#if !defined(_GLAPI_USE_REMAP_TABLE)
+
+#define _gloffset_AttachShader 408
+#define _gloffset_CreateProgram 409
+#define _gloffset_CreateShader 410
+#define _gloffset_DeleteProgram 411
+#define _gloffset_DeleteShader 412
+#define _gloffset_DetachShader 413
+#define _gloffset_GetAttachedShaders 414
+#define _gloffset_GetProgramInfoLog 415
+#define _gloffset_GetProgramiv 416
+#define _gloffset_GetShaderInfoLog 417
+#define _gloffset_GetShaderiv 418
+#define _gloffset_IsProgram 419
+#define _gloffset_IsShader 420
+#define _gloffset_StencilFuncSeparate 421
+#define _gloffset_StencilMaskSeparate 422
+#define _gloffset_StencilOpSeparate 423
+#define _gloffset_UniformMatrix2x3fv 424
+#define _gloffset_UniformMatrix2x4fv 425
+#define _gloffset_UniformMatrix3x2fv 426
+#define _gloffset_UniformMatrix3x4fv 427
+#define _gloffset_UniformMatrix4x2fv 428
+#define _gloffset_UniformMatrix4x3fv 429
+#define _gloffset_DrawArraysInstanced 430
+#define _gloffset_DrawElementsInstanced 431
+#define _gloffset_LoadTransposeMatrixdARB 432
+#define _gloffset_LoadTransposeMatrixfARB 433
+#define _gloffset_MultTransposeMatrixdARB 434
+#define _gloffset_MultTransposeMatrixfARB 435
+#define _gloffset_SampleCoverageARB 436
+#define _gloffset_CompressedTexImage1DARB 437
+#define _gloffset_CompressedTexImage2DARB 438
+#define _gloffset_CompressedTexImage3DARB 439
+#define _gloffset_CompressedTexSubImage1DARB 440
+#define _gloffset_CompressedTexSubImage2DARB 441
+#define _gloffset_CompressedTexSubImage3DARB 442
+#define _gloffset_GetCompressedTexImageARB 443
+#define _gloffset_DisableVertexAttribArrayARB 444
+#define _gloffset_EnableVertexAttribArrayARB 445
+#define _gloffset_GetProgramEnvParameterdvARB 446
+#define _gloffset_GetProgramEnvParameterfvARB 447
+#define _gloffset_GetProgramLocalParameterdvARB 448
+#define _gloffset_GetProgramLocalParameterfvARB 449
+#define _gloffset_GetProgramStringARB 450
+#define _gloffset_GetProgramivARB 451
+#define _gloffset_GetVertexAttribdvARB 452
+#define _gloffset_GetVertexAttribfvARB 453
+#define _gloffset_GetVertexAttribivARB 454
+#define _gloffset_ProgramEnvParameter4dARB 455
+#define _gloffset_ProgramEnvParameter4dvARB 456
+#define _gloffset_ProgramEnvParameter4fARB 457
+#define _gloffset_ProgramEnvParameter4fvARB 458
+#define _gloffset_ProgramLocalParameter4dARB 459
+#define _gloffset_ProgramLocalParameter4dvARB 460
+#define _gloffset_ProgramLocalParameter4fARB 461
+#define _gloffset_ProgramLocalParameter4fvARB 462
+#define _gloffset_ProgramStringARB 463
+#define _gloffset_VertexAttrib1dARB 464
+#define _gloffset_VertexAttrib1dvARB 465
+#define _gloffset_VertexAttrib1fARB 466
+#define _gloffset_VertexAttrib1fvARB 467
+#define _gloffset_VertexAttrib1sARB 468
+#define _gloffset_VertexAttrib1svARB 469
+#define _gloffset_VertexAttrib2dARB 470
+#define _gloffset_VertexAttrib2dvARB 471
+#define _gloffset_VertexAttrib2fARB 472
+#define _gloffset_VertexAttrib2fvARB 473
+#define _gloffset_VertexAttrib2sARB 474
+#define _gloffset_VertexAttrib2svARB 475
+#define _gloffset_VertexAttrib3dARB 476
+#define _gloffset_VertexAttrib3dvARB 477
+#define _gloffset_VertexAttrib3fARB 478
+#define _gloffset_VertexAttrib3fvARB 479
+#define _gloffset_VertexAttrib3sARB 480
+#define _gloffset_VertexAttrib3svARB 481
+#define _gloffset_VertexAttrib4NbvARB 482
+#define _gloffset_VertexAttrib4NivARB 483
+#define _gloffset_VertexAttrib4NsvARB 484
+#define _gloffset_VertexAttrib4NubARB 485
+#define _gloffset_VertexAttrib4NubvARB 486
+#define _gloffset_VertexAttrib4NuivARB 487
+#define _gloffset_VertexAttrib4NusvARB 488
+#define _gloffset_VertexAttrib4bvARB 489
+#define _gloffset_VertexAttrib4dARB 490
+#define _gloffset_VertexAttrib4dvARB 491
+#define _gloffset_VertexAttrib4fARB 492
+#define _gloffset_VertexAttrib4fvARB 493
+#define _gloffset_VertexAttrib4ivARB 494
+#define _gloffset_VertexAttrib4sARB 495
+#define _gloffset_VertexAttrib4svARB 496
+#define _gloffset_VertexAttrib4ubvARB 497
+#define _gloffset_VertexAttrib4uivARB 498
+#define _gloffset_VertexAttrib4usvARB 499
+#define _gloffset_VertexAttribPointerARB 500
+#define _gloffset_BindBufferARB 501
+#define _gloffset_BufferDataARB 502
+#define _gloffset_BufferSubDataARB 503
+#define _gloffset_DeleteBuffersARB 504
+#define _gloffset_GenBuffersARB 505
+#define _gloffset_GetBufferParameterivARB 506
+#define _gloffset_GetBufferPointervARB 507
+#define _gloffset_GetBufferSubDataARB 508
+#define _gloffset_IsBufferARB 509
+#define _gloffset_MapBufferARB 510
+#define _gloffset_UnmapBufferARB 511
+#define _gloffset_BeginQueryARB 512
+#define _gloffset_DeleteQueriesARB 513
+#define _gloffset_EndQueryARB 514
+#define _gloffset_GenQueriesARB 515
+#define _gloffset_GetQueryObjectivARB 516
+#define _gloffset_GetQueryObjectuivARB 517
+#define _gloffset_GetQueryivARB 518
+#define _gloffset_IsQueryARB 519
+#define _gloffset_AttachObjectARB 520
+#define _gloffset_CompileShaderARB 521
+#define _gloffset_CreateProgramObjectARB 522
+#define _gloffset_CreateShaderObjectARB 523
+#define _gloffset_DeleteObjectARB 524
+#define _gloffset_DetachObjectARB 525
+#define _gloffset_GetActiveUniformARB 526
+#define _gloffset_GetAttachedObjectsARB 527
+#define _gloffset_GetHandleARB 528
+#define _gloffset_GetInfoLogARB 529
+#define _gloffset_GetObjectParameterfvARB 530
+#define _gloffset_GetObjectParameterivARB 531
+#define _gloffset_GetShaderSourceARB 532
+#define _gloffset_GetUniformLocationARB 533
+#define _gloffset_GetUniformfvARB 534
+#define _gloffset_GetUniformivARB 535
+#define _gloffset_LinkProgramARB 536
+#define _gloffset_ShaderSourceARB 537
+#define _gloffset_Uniform1fARB 538
+#define _gloffset_Uniform1fvARB 539
+#define _gloffset_Uniform1iARB 540
+#define _gloffset_Uniform1ivARB 541
+#define _gloffset_Uniform2fARB 542
+#define _gloffset_Uniform2fvARB 543
+#define _gloffset_Uniform2iARB 544
+#define _gloffset_Uniform2ivARB 545
+#define _gloffset_Uniform3fARB 546
+#define _gloffset_Uniform3fvARB 547
+#define _gloffset_Uniform3iARB 548
+#define _gloffset_Uniform3ivARB 549
+#define _gloffset_Uniform4fARB 550
+#define _gloffset_Uniform4fvARB 551
+#define _gloffset_Uniform4iARB 552
+#define _gloffset_Uniform4ivARB 553
+#define _gloffset_UniformMatrix2fvARB 554
+#define _gloffset_UniformMatrix3fvARB 555
+#define _gloffset_UniformMatrix4fvARB 556
+#define _gloffset_UseProgramObjectARB 557
+#define _gloffset_ValidateProgramARB 558
+#define _gloffset_BindAttribLocationARB 559
+#define _gloffset_GetActiveAttribARB 560
+#define _gloffset_GetAttribLocationARB 561
+#define _gloffset_DrawBuffersARB 562
+#define _gloffset_RenderbufferStorageMultisample 563
+#define _gloffset_FlushMappedBufferRange 564
+#define _gloffset_MapBufferRange 565
+#define _gloffset_BindVertexArray 566
+#define _gloffset_GenVertexArrays 567
+#define _gloffset_CopyBufferSubData 568
+#define _gloffset_ClientWaitSync 569
+#define _gloffset_DeleteSync 570
+#define _gloffset_FenceSync 571
+#define _gloffset_GetInteger64v 572
+#define _gloffset_GetSynciv 573
+#define _gloffset_IsSync 574
+#define _gloffset_WaitSync 575
+#define _gloffset_DrawElementsBaseVertex 576
+#define _gloffset_DrawRangeElementsBaseVertex 577
+#define _gloffset_MultiDrawElementsBaseVertex 578
+#define _gloffset_PolygonOffsetEXT 579
+#define _gloffset_GetPixelTexGenParameterfvSGIS 580
+#define _gloffset_GetPixelTexGenParameterivSGIS 581
+#define _gloffset_PixelTexGenParameterfSGIS 582
+#define _gloffset_PixelTexGenParameterfvSGIS 583
+#define _gloffset_PixelTexGenParameteriSGIS 584
+#define _gloffset_PixelTexGenParameterivSGIS 585
+#define _gloffset_SampleMaskSGIS 586
+#define _gloffset_SamplePatternSGIS 587
+#define _gloffset_ColorPointerEXT 588
+#define _gloffset_EdgeFlagPointerEXT 589
+#define _gloffset_IndexPointerEXT 590
+#define _gloffset_NormalPointerEXT 591
+#define _gloffset_TexCoordPointerEXT 592
+#define _gloffset_VertexPointerEXT 593
+#define _gloffset_PointParameterfEXT 594
+#define _gloffset_PointParameterfvEXT 595
+#define _gloffset_LockArraysEXT 596
+#define _gloffset_UnlockArraysEXT 597
+#define _gloffset_CullParameterdvEXT 598
+#define _gloffset_CullParameterfvEXT 599
+#define _gloffset_SecondaryColor3bEXT 600
+#define _gloffset_SecondaryColor3bvEXT 601
+#define _gloffset_SecondaryColor3dEXT 602
+#define _gloffset_SecondaryColor3dvEXT 603
+#define _gloffset_SecondaryColor3fEXT 604
+#define _gloffset_SecondaryColor3fvEXT 605
+#define _gloffset_SecondaryColor3iEXT 606
+#define _gloffset_SecondaryColor3ivEXT 607
+#define _gloffset_SecondaryColor3sEXT 608
+#define _gloffset_SecondaryColor3svEXT 609
+#define _gloffset_SecondaryColor3ubEXT 610
+#define _gloffset_SecondaryColor3ubvEXT 611
+#define _gloffset_SecondaryColor3uiEXT 612
+#define _gloffset_SecondaryColor3uivEXT 613
+#define _gloffset_SecondaryColor3usEXT 614
+#define _gloffset_SecondaryColor3usvEXT 615
+#define _gloffset_SecondaryColorPointerEXT 616
+#define _gloffset_MultiDrawArraysEXT 617
+#define _gloffset_MultiDrawElementsEXT 618
+#define _gloffset_FogCoordPointerEXT 619
+#define _gloffset_FogCoorddEXT 620
+#define _gloffset_FogCoorddvEXT 621
+#define _gloffset_FogCoordfEXT 622
+#define _gloffset_FogCoordfvEXT 623
+#define _gloffset_PixelTexGenSGIX 624
+#define _gloffset_BlendFuncSeparateEXT 625
+#define _gloffset_FlushVertexArrayRangeNV 626
+#define _gloffset_VertexArrayRangeNV 627
+#define _gloffset_CombinerInputNV 628
+#define _gloffset_CombinerOutputNV 629
+#define _gloffset_CombinerParameterfNV 630
+#define _gloffset_CombinerParameterfvNV 631
+#define _gloffset_CombinerParameteriNV 632
+#define _gloffset_CombinerParameterivNV 633
+#define _gloffset_FinalCombinerInputNV 634
+#define _gloffset_GetCombinerInputParameterfvNV 635
+#define _gloffset_GetCombinerInputParameterivNV 636
+#define _gloffset_GetCombinerOutputParameterfvNV 637
+#define _gloffset_GetCombinerOutputParameterivNV 638
+#define _gloffset_GetFinalCombinerInputParameterfvNV 639
+#define _gloffset_GetFinalCombinerInputParameterivNV 640
+#define _gloffset_ResizeBuffersMESA 641
+#define _gloffset_WindowPos2dMESA 642
+#define _gloffset_WindowPos2dvMESA 643
+#define _gloffset_WindowPos2fMESA 644
+#define _gloffset_WindowPos2fvMESA 645
+#define _gloffset_WindowPos2iMESA 646
+#define _gloffset_WindowPos2ivMESA 647
+#define _gloffset_WindowPos2sMESA 648
+#define _gloffset_WindowPos2svMESA 649
+#define _gloffset_WindowPos3dMESA 650
+#define _gloffset_WindowPos3dvMESA 651
+#define _gloffset_WindowPos3fMESA 652
+#define _gloffset_WindowPos3fvMESA 653
+#define _gloffset_WindowPos3iMESA 654
+#define _gloffset_WindowPos3ivMESA 655
+#define _gloffset_WindowPos3sMESA 656
+#define _gloffset_WindowPos3svMESA 657
+#define _gloffset_WindowPos4dMESA 658
+#define _gloffset_WindowPos4dvMESA 659
+#define _gloffset_WindowPos4fMESA 660
+#define _gloffset_WindowPos4fvMESA 661
+#define _gloffset_WindowPos4iMESA 662
+#define _gloffset_WindowPos4ivMESA 663
+#define _gloffset_WindowPos4sMESA 664
+#define _gloffset_WindowPos4svMESA 665
+#define _gloffset_MultiModeDrawArraysIBM 666
+#define _gloffset_MultiModeDrawElementsIBM 667
+#define _gloffset_DeleteFencesNV 668
+#define _gloffset_FinishFenceNV 669
+#define _gloffset_GenFencesNV 670
+#define _gloffset_GetFenceivNV 671
+#define _gloffset_IsFenceNV 672
+#define _gloffset_SetFenceNV 673
+#define _gloffset_TestFenceNV 674
+#define _gloffset_AreProgramsResidentNV 675
+#define _gloffset_BindProgramNV 676
+#define _gloffset_DeleteProgramsNV 677
+#define _gloffset_ExecuteProgramNV 678
+#define _gloffset_GenProgramsNV 679
+#define _gloffset_GetProgramParameterdvNV 680
+#define _gloffset_GetProgramParameterfvNV 681
+#define _gloffset_GetProgramStringNV 682
+#define _gloffset_GetProgramivNV 683
+#define _gloffset_GetTrackMatrixivNV 684
+#define _gloffset_GetVertexAttribPointervNV 685
+#define _gloffset_GetVertexAttribdvNV 686
+#define _gloffset_GetVertexAttribfvNV 687
+#define _gloffset_GetVertexAttribivNV 688
+#define _gloffset_IsProgramNV 689
+#define _gloffset_LoadProgramNV 690
+#define _gloffset_ProgramParameters4dvNV 691
+#define _gloffset_ProgramParameters4fvNV 692
+#define _gloffset_RequestResidentProgramsNV 693
+#define _gloffset_TrackMatrixNV 694
+#define _gloffset_VertexAttrib1dNV 695
+#define _gloffset_VertexAttrib1dvNV 696
+#define _gloffset_VertexAttrib1fNV 697
+#define _gloffset_VertexAttrib1fvNV 698
+#define _gloffset_VertexAttrib1sNV 699
+#define _gloffset_VertexAttrib1svNV 700
+#define _gloffset_VertexAttrib2dNV 701
+#define _gloffset_VertexAttrib2dvNV 702
+#define _gloffset_VertexAttrib2fNV 703
+#define _gloffset_VertexAttrib2fvNV 704
+#define _gloffset_VertexAttrib2sNV 705
+#define _gloffset_VertexAttrib2svNV 706
+#define _gloffset_VertexAttrib3dNV 707
+#define _gloffset_VertexAttrib3dvNV 708
+#define _gloffset_VertexAttrib3fNV 709
+#define _gloffset_VertexAttrib3fvNV 710
+#define _gloffset_VertexAttrib3sNV 711
+#define _gloffset_VertexAttrib3svNV 712
+#define _gloffset_VertexAttrib4dNV 713
+#define _gloffset_VertexAttrib4dvNV 714
+#define _gloffset_VertexAttrib4fNV 715
+#define _gloffset_VertexAttrib4fvNV 716
+#define _gloffset_VertexAttrib4sNV 717
+#define _gloffset_VertexAttrib4svNV 718
+#define _gloffset_VertexAttrib4ubNV 719
+#define _gloffset_VertexAttrib4ubvNV 720
+#define _gloffset_VertexAttribPointerNV 721
+#define _gloffset_VertexAttribs1dvNV 722
+#define _gloffset_VertexAttribs1fvNV 723
+#define _gloffset_VertexAttribs1svNV 724
+#define _gloffset_VertexAttribs2dvNV 725
+#define _gloffset_VertexAttribs2fvNV 726
+#define _gloffset_VertexAttribs2svNV 727
+#define _gloffset_VertexAttribs3dvNV 728
+#define _gloffset_VertexAttribs3fvNV 729
+#define _gloffset_VertexAttribs3svNV 730
+#define _gloffset_VertexAttribs4dvNV 731
+#define _gloffset_VertexAttribs4fvNV 732
+#define _gloffset_VertexAttribs4svNV 733
+#define _gloffset_VertexAttribs4ubvNV 734
+#define _gloffset_GetTexBumpParameterfvATI 735
+#define _gloffset_GetTexBumpParameterivATI 736
+#define _gloffset_TexBumpParameterfvATI 737
+#define _gloffset_TexBumpParameterivATI 738
+#define _gloffset_AlphaFragmentOp1ATI 739
+#define _gloffset_AlphaFragmentOp2ATI 740
+#define _gloffset_AlphaFragmentOp3ATI 741
+#define _gloffset_BeginFragmentShaderATI 742
+#define _gloffset_BindFragmentShaderATI 743
+#define _gloffset_ColorFragmentOp1ATI 744
+#define _gloffset_ColorFragmentOp2ATI 745
+#define _gloffset_ColorFragmentOp3ATI 746
+#define _gloffset_DeleteFragmentShaderATI 747
+#define _gloffset_EndFragmentShaderATI 748
+#define _gloffset_GenFragmentShadersATI 749
+#define _gloffset_PassTexCoordATI 750
+#define _gloffset_SampleMapATI 751
+#define _gloffset_SetFragmentShaderConstantATI 752
+#define _gloffset_PointParameteriNV 753
+#define _gloffset_PointParameterivNV 754
+#define _gloffset_ActiveStencilFaceEXT 755
+#define _gloffset_BindVertexArrayAPPLE 756
+#define _gloffset_DeleteVertexArraysAPPLE 757
+#define _gloffset_GenVertexArraysAPPLE 758
+#define _gloffset_IsVertexArrayAPPLE 759
+#define _gloffset_GetProgramNamedParameterdvNV 760
+#define _gloffset_GetProgramNamedParameterfvNV 761
+#define _gloffset_ProgramNamedParameter4dNV 762
+#define _gloffset_ProgramNamedParameter4dvNV 763
+#define _gloffset_ProgramNamedParameter4fNV 764
+#define _gloffset_ProgramNamedParameter4fvNV 765
+#define _gloffset_DepthBoundsEXT 766
+#define _gloffset_BlendEquationSeparateEXT 767
+#define _gloffset_BindFramebufferEXT 768
+#define _gloffset_BindRenderbufferEXT 769
+#define _gloffset_CheckFramebufferStatusEXT 770
+#define _gloffset_DeleteFramebuffersEXT 771
+#define _gloffset_DeleteRenderbuffersEXT 772
+#define _gloffset_FramebufferRenderbufferEXT 773
+#define _gloffset_FramebufferTexture1DEXT 774
+#define _gloffset_FramebufferTexture2DEXT 775
+#define _gloffset_FramebufferTexture3DEXT 776
+#define _gloffset_GenFramebuffersEXT 777
+#define _gloffset_GenRenderbuffersEXT 778
+#define _gloffset_GenerateMipmapEXT 779
+#define _gloffset_GetFramebufferAttachmentParameterivEXT 780
+#define _gloffset_GetRenderbufferParameterivEXT 781
+#define _gloffset_IsFramebufferEXT 782
+#define _gloffset_IsRenderbufferEXT 783
+#define _gloffset_RenderbufferStorageEXT 784
+#define _gloffset_BlitFramebufferEXT 785
+#define _gloffset_BufferParameteriAPPLE 786
+#define _gloffset_FlushMappedBufferRangeAPPLE 787
+#define _gloffset_FramebufferTextureLayerEXT 788
+#define _gloffset_ColorMaskIndexedEXT 789
+#define _gloffset_DisableIndexedEXT 790
+#define _gloffset_EnableIndexedEXT 791
+#define _gloffset_GetBooleanIndexedvEXT 792
+#define _gloffset_GetIntegerIndexedvEXT 793
+#define _gloffset_IsEnabledIndexedEXT 794
+#define _gloffset_BeginConditionalRenderNV 795
+#define _gloffset_EndConditionalRenderNV 796
+#define _gloffset_BeginTransformFeedbackEXT 797
+#define _gloffset_BindBufferBaseEXT 798
+#define _gloffset_BindBufferOffsetEXT 799
+#define _gloffset_BindBufferRangeEXT 800
+#define _gloffset_EndTransformFeedbackEXT 801
+#define _gloffset_GetTransformFeedbackVaryingEXT 802
+#define _gloffset_TransformFeedbackVaryingsEXT 803
+#define _gloffset_ProvokingVertexEXT 804
+#define _gloffset_GetTexParameterPointervAPPLE 805
+#define _gloffset_TextureRangeAPPLE 806
+#define _gloffset_GetObjectParameterivAPPLE 807
+#define _gloffset_ObjectPurgeableAPPLE 808
+#define _gloffset_ObjectUnpurgeableAPPLE 809
+#define _gloffset_StencilFuncSeparateATI 810
+#define _gloffset_ProgramEnvParameters4fvEXT 811
+#define _gloffset_ProgramLocalParameters4fvEXT 812
+#define _gloffset_GetQueryObjecti64vEXT 813
+#define _gloffset_GetQueryObjectui64vEXT 814
+#define _gloffset_EGLImageTargetRenderbufferStorageOES 815
+#define _gloffset_EGLImageTargetTexture2DOES 816
+#define _gloffset_FIRST_DYNAMIC 817
+
+#else
+
+#define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index]
+#define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index]
+#define _gloffset_CreateShader driDispatchRemapTable[CreateShader_remap_index]
+#define _gloffset_DeleteProgram driDispatchRemapTable[DeleteProgram_remap_index]
+#define _gloffset_DeleteShader driDispatchRemapTable[DeleteShader_remap_index]
+#define _gloffset_DetachShader driDispatchRemapTable[DetachShader_remap_index]
+#define _gloffset_GetAttachedShaders driDispatchRemapTable[GetAttachedShaders_remap_index]
+#define _gloffset_GetProgramInfoLog driDispatchRemapTable[GetProgramInfoLog_remap_index]
+#define _gloffset_GetProgramiv driDispatchRemapTable[GetProgramiv_remap_index]
+#define _gloffset_GetShaderInfoLog driDispatchRemapTable[GetShaderInfoLog_remap_index]
+#define _gloffset_GetShaderiv driDispatchRemapTable[GetShaderiv_remap_index]
+#define _gloffset_IsProgram driDispatchRemapTable[IsProgram_remap_index]
+#define _gloffset_IsShader driDispatchRemapTable[IsShader_remap_index]
+#define _gloffset_StencilFuncSeparate driDispatchRemapTable[StencilFuncSeparate_remap_index]
+#define _gloffset_StencilMaskSeparate driDispatchRemapTable[StencilMaskSeparate_remap_index]
+#define _gloffset_StencilOpSeparate driDispatchRemapTable[StencilOpSeparate_remap_index]
+#define _gloffset_UniformMatrix2x3fv driDispatchRemapTable[UniformMatrix2x3fv_remap_index]
+#define _gloffset_UniformMatrix2x4fv driDispatchRemapTable[UniformMatrix2x4fv_remap_index]
+#define _gloffset_UniformMatrix3x2fv driDispatchRemapTable[UniformMatrix3x2fv_remap_index]
+#define _gloffset_UniformMatrix3x4fv driDispatchRemapTable[UniformMatrix3x4fv_remap_index]
+#define _gloffset_UniformMatrix4x2fv driDispatchRemapTable[UniformMatrix4x2fv_remap_index]
+#define _gloffset_UniformMatrix4x3fv driDispatchRemapTable[UniformMatrix4x3fv_remap_index]
+#define _gloffset_DrawArraysInstanced driDispatchRemapTable[DrawArraysInstanced_remap_index]
+#define _gloffset_DrawElementsInstanced driDispatchRemapTable[DrawElementsInstanced_remap_index]
+#define _gloffset_LoadTransposeMatrixdARB driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index]
+#define _gloffset_LoadTransposeMatrixfARB driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index]
+#define _gloffset_MultTransposeMatrixdARB driDispatchRemapTable[MultTransposeMatrixdARB_remap_index]
+#define _gloffset_MultTransposeMatrixfARB driDispatchRemapTable[MultTransposeMatrixfARB_remap_index]
+#define _gloffset_SampleCoverageARB driDispatchRemapTable[SampleCoverageARB_remap_index]
+#define _gloffset_CompressedTexImage1DARB driDispatchRemapTable[CompressedTexImage1DARB_remap_index]
+#define _gloffset_CompressedTexImage2DARB driDispatchRemapTable[CompressedTexImage2DARB_remap_index]
+#define _gloffset_CompressedTexImage3DARB driDispatchRemapTable[CompressedTexImage3DARB_remap_index]
+#define _gloffset_CompressedTexSubImage1DARB driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index]
+#define _gloffset_CompressedTexSubImage2DARB driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index]
+#define _gloffset_CompressedTexSubImage3DARB driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index]
+#define _gloffset_GetCompressedTexImageARB driDispatchRemapTable[GetCompressedTexImageARB_remap_index]
+#define _gloffset_DisableVertexAttribArrayARB driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index]
+#define _gloffset_EnableVertexAttribArrayARB driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index]
+#define _gloffset_GetProgramEnvParameterdvARB driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index]
+#define _gloffset_GetProgramEnvParameterfvARB driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index]
+#define _gloffset_GetProgramLocalParameterdvARB driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index]
+#define _gloffset_GetProgramLocalParameterfvARB driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index]
+#define _gloffset_GetProgramStringARB driDispatchRemapTable[GetProgramStringARB_remap_index]
+#define _gloffset_GetProgramivARB driDispatchRemapTable[GetProgramivARB_remap_index]
+#define _gloffset_GetVertexAttribdvARB driDispatchRemapTable[GetVertexAttribdvARB_remap_index]
+#define _gloffset_GetVertexAttribfvARB driDispatchRemapTable[GetVertexAttribfvARB_remap_index]
+#define _gloffset_GetVertexAttribivARB driDispatchRemapTable[GetVertexAttribivARB_remap_index]
+#define _gloffset_ProgramEnvParameter4dARB driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index]
+#define _gloffset_ProgramEnvParameter4dvARB driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index]
+#define _gloffset_ProgramEnvParameter4fARB driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index]
+#define _gloffset_ProgramEnvParameter4fvARB driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index]
+#define _gloffset_ProgramLocalParameter4dARB driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index]
+#define _gloffset_ProgramLocalParameter4dvARB driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index]
+#define _gloffset_ProgramLocalParameter4fARB driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index]
+#define _gloffset_ProgramLocalParameter4fvARB driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index]
+#define _gloffset_ProgramStringARB driDispatchRemapTable[ProgramStringARB_remap_index]
+#define _gloffset_VertexAttrib1dARB driDispatchRemapTable[VertexAttrib1dARB_remap_index]
+#define _gloffset_VertexAttrib1dvARB driDispatchRemapTable[VertexAttrib1dvARB_remap_index]
+#define _gloffset_VertexAttrib1fARB driDispatchRemapTable[VertexAttrib1fARB_remap_index]
+#define _gloffset_VertexAttrib1fvARB driDispatchRemapTable[VertexAttrib1fvARB_remap_index]
+#define _gloffset_VertexAttrib1sARB driDispatchRemapTable[VertexAttrib1sARB_remap_index]
+#define _gloffset_VertexAttrib1svARB driDispatchRemapTable[VertexAttrib1svARB_remap_index]
+#define _gloffset_VertexAttrib2dARB driDispatchRemapTable[VertexAttrib2dARB_remap_index]
+#define _gloffset_VertexAttrib2dvARB driDispatchRemapTable[VertexAttrib2dvARB_remap_index]
+#define _gloffset_VertexAttrib2fARB driDispatchRemapTable[VertexAttrib2fARB_remap_index]
+#define _gloffset_VertexAttrib2fvARB driDispatchRemapTable[VertexAttrib2fvARB_remap_index]
+#define _gloffset_VertexAttrib2sARB driDispatchRemapTable[VertexAttrib2sARB_remap_index]
+#define _gloffset_VertexAttrib2svARB driDispatchRemapTable[VertexAttrib2svARB_remap_index]
+#define _gloffset_VertexAttrib3dARB driDispatchRemapTable[VertexAttrib3dARB_remap_index]
+#define _gloffset_VertexAttrib3dvARB driDispatchRemapTable[VertexAttrib3dvARB_remap_index]
+#define _gloffset_VertexAttrib3fARB driDispatchRemapTable[VertexAttrib3fARB_remap_index]
+#define _gloffset_VertexAttrib3fvARB driDispatchRemapTable[VertexAttrib3fvARB_remap_index]
+#define _gloffset_VertexAttrib3sARB driDispatchRemapTable[VertexAttrib3sARB_remap_index]
+#define _gloffset_VertexAttrib3svARB driDispatchRemapTable[VertexAttrib3svARB_remap_index]
+#define _gloffset_VertexAttrib4NbvARB driDispatchRemapTable[VertexAttrib4NbvARB_remap_index]
+#define _gloffset_VertexAttrib4NivARB driDispatchRemapTable[VertexAttrib4NivARB_remap_index]
+#define _gloffset_VertexAttrib4NsvARB driDispatchRemapTable[VertexAttrib4NsvARB_remap_index]
+#define _gloffset_VertexAttrib4NubARB driDispatchRemapTable[VertexAttrib4NubARB_remap_index]
+#define _gloffset_VertexAttrib4NubvARB driDispatchRemapTable[VertexAttrib4NubvARB_remap_index]
+#define _gloffset_VertexAttrib4NuivARB driDispatchRemapTable[VertexAttrib4NuivARB_remap_index]
+#define _gloffset_VertexAttrib4NusvARB driDispatchRemapTable[VertexAttrib4NusvARB_remap_index]
+#define _gloffset_VertexAttrib4bvARB driDispatchRemapTable[VertexAttrib4bvARB_remap_index]
+#define _gloffset_VertexAttrib4dARB driDispatchRemapTable[VertexAttrib4dARB_remap_index]
+#define _gloffset_VertexAttrib4dvARB driDispatchRemapTable[VertexAttrib4dvARB_remap_index]
+#define _gloffset_VertexAttrib4fARB driDispatchRemapTable[VertexAttrib4fARB_remap_index]
+#define _gloffset_VertexAttrib4fvARB driDispatchRemapTable[VertexAttrib4fvARB_remap_index]
+#define _gloffset_VertexAttrib4ivARB driDispatchRemapTable[VertexAttrib4ivARB_remap_index]
+#define _gloffset_VertexAttrib4sARB driDispatchRemapTable[VertexAttrib4sARB_remap_index]
+#define _gloffset_VertexAttrib4svARB driDispatchRemapTable[VertexAttrib4svARB_remap_index]
+#define _gloffset_VertexAttrib4ubvARB driDispatchRemapTable[VertexAttrib4ubvARB_remap_index]
+#define _gloffset_VertexAttrib4uivARB driDispatchRemapTable[VertexAttrib4uivARB_remap_index]
+#define _gloffset_VertexAttrib4usvARB driDispatchRemapTable[VertexAttrib4usvARB_remap_index]
+#define _gloffset_VertexAttribPointerARB driDispatchRemapTable[VertexAttribPointerARB_remap_index]
+#define _gloffset_BindBufferARB driDispatchRemapTable[BindBufferARB_remap_index]
+#define _gloffset_BufferDataARB driDispatchRemapTable[BufferDataARB_remap_index]
+#define _gloffset_BufferSubDataARB driDispatchRemapTable[BufferSubDataARB_remap_index]
+#define _gloffset_DeleteBuffersARB driDispatchRemapTable[DeleteBuffersARB_remap_index]
+#define _gloffset_GenBuffersARB driDispatchRemapTable[GenBuffersARB_remap_index]
+#define _gloffset_GetBufferParameterivARB driDispatchRemapTable[GetBufferParameterivARB_remap_index]
+#define _gloffset_GetBufferPointervARB driDispatchRemapTable[GetBufferPointervARB_remap_index]
+#define _gloffset_GetBufferSubDataARB driDispatchRemapTable[GetBufferSubDataARB_remap_index]
+#define _gloffset_IsBufferARB driDispatchRemapTable[IsBufferARB_remap_index]
+#define _gloffset_MapBufferARB driDispatchRemapTable[MapBufferARB_remap_index]
+#define _gloffset_UnmapBufferARB driDispatchRemapTable[UnmapBufferARB_remap_index]
+#define _gloffset_BeginQueryARB driDispatchRemapTable[BeginQueryARB_remap_index]
+#define _gloffset_DeleteQueriesARB driDispatchRemapTable[DeleteQueriesARB_remap_index]
+#define _gloffset_EndQueryARB driDispatchRemapTable[EndQueryARB_remap_index]
+#define _gloffset_GenQueriesARB driDispatchRemapTable[GenQueriesARB_remap_index]
+#define _gloffset_GetQueryObjectivARB driDispatchRemapTable[GetQueryObjectivARB_remap_index]
+#define _gloffset_GetQueryObjectuivARB driDispatchRemapTable[GetQueryObjectuivARB_remap_index]
+#define _gloffset_GetQueryivARB driDispatchRemapTable[GetQueryivARB_remap_index]
+#define _gloffset_IsQueryARB driDispatchRemapTable[IsQueryARB_remap_index]
+#define _gloffset_AttachObjectARB driDispatchRemapTable[AttachObjectARB_remap_index]
+#define _gloffset_CompileShaderARB driDispatchRemapTable[CompileShaderARB_remap_index]
+#define _gloffset_CreateProgramObjectARB driDispatchRemapTable[CreateProgramObjectARB_remap_index]
+#define _gloffset_CreateShaderObjectARB driDispatchRemapTable[CreateShaderObjectARB_remap_index]
+#define _gloffset_DeleteObjectARB driDispatchRemapTable[DeleteObjectARB_remap_index]
+#define _gloffset_DetachObjectARB driDispatchRemapTable[DetachObjectARB_remap_index]
+#define _gloffset_GetActiveUniformARB driDispatchRemapTable[GetActiveUniformARB_remap_index]
+#define _gloffset_GetAttachedObjectsARB driDispatchRemapTable[GetAttachedObjectsARB_remap_index]
+#define _gloffset_GetHandleARB driDispatchRemapTable[GetHandleARB_remap_index]
+#define _gloffset_GetInfoLogARB driDispatchRemapTable[GetInfoLogARB_remap_index]
+#define _gloffset_GetObjectParameterfvARB driDispatchRemapTable[GetObjectParameterfvARB_remap_index]
+#define _gloffset_GetObjectParameterivARB driDispatchRemapTable[GetObjectParameterivARB_remap_index]
+#define _gloffset_GetShaderSourceARB driDispatchRemapTable[GetShaderSourceARB_remap_index]
+#define _gloffset_GetUniformLocationARB driDispatchRemapTable[GetUniformLocationARB_remap_index]
+#define _gloffset_GetUniformfvARB driDispatchRemapTable[GetUniformfvARB_remap_index]
+#define _gloffset_GetUniformivARB driDispatchRemapTable[GetUniformivARB_remap_index]
+#define _gloffset_LinkProgramARB driDispatchRemapTable[LinkProgramARB_remap_index]
+#define _gloffset_ShaderSourceARB driDispatchRemapTable[ShaderSourceARB_remap_index]
+#define _gloffset_Uniform1fARB driDispatchRemapTable[Uniform1fARB_remap_index]
+#define _gloffset_Uniform1fvARB driDispatchRemapTable[Uniform1fvARB_remap_index]
+#define _gloffset_Uniform1iARB driDispatchRemapTable[Uniform1iARB_remap_index]
+#define _gloffset_Uniform1ivARB driDispatchRemapTable[Uniform1ivARB_remap_index]
+#define _gloffset_Uniform2fARB driDispatchRemapTable[Uniform2fARB_remap_index]
+#define _gloffset_Uniform2fvARB driDispatchRemapTable[Uniform2fvARB_remap_index]
+#define _gloffset_Uniform2iARB driDispatchRemapTable[Uniform2iARB_remap_index]
+#define _gloffset_Uniform2ivARB driDispatchRemapTable[Uniform2ivARB_remap_index]
+#define _gloffset_Uniform3fARB driDispatchRemapTable[Uniform3fARB_remap_index]
+#define _gloffset_Uniform3fvARB driDispatchRemapTable[Uniform3fvARB_remap_index]
+#define _gloffset_Uniform3iARB driDispatchRemapTable[Uniform3iARB_remap_index]
+#define _gloffset_Uniform3ivARB driDispatchRemapTable[Uniform3ivARB_remap_index]
+#define _gloffset_Uniform4fARB driDispatchRemapTable[Uniform4fARB_remap_index]
+#define _gloffset_Uniform4fvARB driDispatchRemapTable[Uniform4fvARB_remap_index]
+#define _gloffset_Uniform4iARB driDispatchRemapTable[Uniform4iARB_remap_index]
+#define _gloffset_Uniform4ivARB driDispatchRemapTable[Uniform4ivARB_remap_index]
+#define _gloffset_UniformMatrix2fvARB driDispatchRemapTable[UniformMatrix2fvARB_remap_index]
+#define _gloffset_UniformMatrix3fvARB driDispatchRemapTable[UniformMatrix3fvARB_remap_index]
+#define _gloffset_UniformMatrix4fvARB driDispatchRemapTable[UniformMatrix4fvARB_remap_index]
+#define _gloffset_UseProgramObjectARB driDispatchRemapTable[UseProgramObjectARB_remap_index]
+#define _gloffset_ValidateProgramARB driDispatchRemapTable[ValidateProgramARB_remap_index]
+#define _gloffset_BindAttribLocationARB driDispatchRemapTable[BindAttribLocationARB_remap_index]
+#define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index]
+#define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index]
+#define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index]
+#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index]
+#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index]
+#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index]
+#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index]
+#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index]
+#define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index]
+#define _gloffset_ClientWaitSync driDispatchRemapTable[ClientWaitSync_remap_index]
+#define _gloffset_DeleteSync driDispatchRemapTable[DeleteSync_remap_index]
+#define _gloffset_FenceSync driDispatchRemapTable[FenceSync_remap_index]
+#define _gloffset_GetInteger64v driDispatchRemapTable[GetInteger64v_remap_index]
+#define _gloffset_GetSynciv driDispatchRemapTable[GetSynciv_remap_index]
+#define _gloffset_IsSync driDispatchRemapTable[IsSync_remap_index]
+#define _gloffset_WaitSync driDispatchRemapTable[WaitSync_remap_index]
+#define _gloffset_DrawElementsBaseVertex driDispatchRemapTable[DrawElementsBaseVertex_remap_index]
+#define _gloffset_DrawRangeElementsBaseVertex driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index]
+#define _gloffset_MultiDrawElementsBaseVertex driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index]
+#define _gloffset_PolygonOffsetEXT driDispatchRemapTable[PolygonOffsetEXT_remap_index]
+#define _gloffset_GetPixelTexGenParameterfvSGIS driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index]
+#define _gloffset_GetPixelTexGenParameterivSGIS driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index]
+#define _gloffset_PixelTexGenParameterfSGIS driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index]
+#define _gloffset_PixelTexGenParameterfvSGIS driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index]
+#define _gloffset_PixelTexGenParameteriSGIS driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index]
+#define _gloffset_PixelTexGenParameterivSGIS driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index]
+#define _gloffset_SampleMaskSGIS driDispatchRemapTable[SampleMaskSGIS_remap_index]
+#define _gloffset_SamplePatternSGIS driDispatchRemapTable[SamplePatternSGIS_remap_index]
+#define _gloffset_ColorPointerEXT driDispatchRemapTable[ColorPointerEXT_remap_index]
+#define _gloffset_EdgeFlagPointerEXT driDispatchRemapTable[EdgeFlagPointerEXT_remap_index]
+#define _gloffset_IndexPointerEXT driDispatchRemapTable[IndexPointerEXT_remap_index]
+#define _gloffset_NormalPointerEXT driDispatchRemapTable[NormalPointerEXT_remap_index]
+#define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index]
+#define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index]
+#define _gloffset_PointParameterfEXT driDispatchRemapTable[PointParameterfEXT_remap_index]
+#define _gloffset_PointParameterfvEXT driDispatchRemapTable[PointParameterfvEXT_remap_index]
+#define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index]
+#define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index]
+#define _gloffset_CullParameterdvEXT driDispatchRemapTable[CullParameterdvEXT_remap_index]
+#define _gloffset_CullParameterfvEXT driDispatchRemapTable[CullParameterfvEXT_remap_index]
+#define _gloffset_SecondaryColor3bEXT driDispatchRemapTable[SecondaryColor3bEXT_remap_index]
+#define _gloffset_SecondaryColor3bvEXT driDispatchRemapTable[SecondaryColor3bvEXT_remap_index]
+#define _gloffset_SecondaryColor3dEXT driDispatchRemapTable[SecondaryColor3dEXT_remap_index]
+#define _gloffset_SecondaryColor3dvEXT driDispatchRemapTable[SecondaryColor3dvEXT_remap_index]
+#define _gloffset_SecondaryColor3fEXT driDispatchRemapTable[SecondaryColor3fEXT_remap_index]
+#define _gloffset_SecondaryColor3fvEXT driDispatchRemapTable[SecondaryColor3fvEXT_remap_index]
+#define _gloffset_SecondaryColor3iEXT driDispatchRemapTable[SecondaryColor3iEXT_remap_index]
+#define _gloffset_SecondaryColor3ivEXT driDispatchRemapTable[SecondaryColor3ivEXT_remap_index]
+#define _gloffset_SecondaryColor3sEXT driDispatchRemapTable[SecondaryColor3sEXT_remap_index]
+#define _gloffset_SecondaryColor3svEXT driDispatchRemapTable[SecondaryColor3svEXT_remap_index]
+#define _gloffset_SecondaryColor3ubEXT driDispatchRemapTable[SecondaryColor3ubEXT_remap_index]
+#define _gloffset_SecondaryColor3ubvEXT driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index]
+#define _gloffset_SecondaryColor3uiEXT driDispatchRemapTable[SecondaryColor3uiEXT_remap_index]
+#define _gloffset_SecondaryColor3uivEXT driDispatchRemapTable[SecondaryColor3uivEXT_remap_index]
+#define _gloffset_SecondaryColor3usEXT driDispatchRemapTable[SecondaryColor3usEXT_remap_index]
+#define _gloffset_SecondaryColor3usvEXT driDispatchRemapTable[SecondaryColor3usvEXT_remap_index]
+#define _gloffset_SecondaryColorPointerEXT driDispatchRemapTable[SecondaryColorPointerEXT_remap_index]
+#define _gloffset_MultiDrawArraysEXT driDispatchRemapTable[MultiDrawArraysEXT_remap_index]
+#define _gloffset_MultiDrawElementsEXT driDispatchRemapTable[MultiDrawElementsEXT_remap_index]
+#define _gloffset_FogCoordPointerEXT driDispatchRemapTable[FogCoordPointerEXT_remap_index]
+#define _gloffset_FogCoorddEXT driDispatchRemapTable[FogCoorddEXT_remap_index]
+#define _gloffset_FogCoorddvEXT driDispatchRemapTable[FogCoorddvEXT_remap_index]
+#define _gloffset_FogCoordfEXT driDispatchRemapTable[FogCoordfEXT_remap_index]
+#define _gloffset_FogCoordfvEXT driDispatchRemapTable[FogCoordfvEXT_remap_index]
+#define _gloffset_PixelTexGenSGIX driDispatchRemapTable[PixelTexGenSGIX_remap_index]
+#define _gloffset_BlendFuncSeparateEXT driDispatchRemapTable[BlendFuncSeparateEXT_remap_index]
+#define _gloffset_FlushVertexArrayRangeNV driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index]
+#define _gloffset_VertexArrayRangeNV driDispatchRemapTable[VertexArrayRangeNV_remap_index]
+#define _gloffset_CombinerInputNV driDispatchRemapTable[CombinerInputNV_remap_index]
+#define _gloffset_CombinerOutputNV driDispatchRemapTable[CombinerOutputNV_remap_index]
+#define _gloffset_CombinerParameterfNV driDispatchRemapTable[CombinerParameterfNV_remap_index]
+#define _gloffset_CombinerParameterfvNV driDispatchRemapTable[CombinerParameterfvNV_remap_index]
+#define _gloffset_CombinerParameteriNV driDispatchRemapTable[CombinerParameteriNV_remap_index]
+#define _gloffset_CombinerParameterivNV driDispatchRemapTable[CombinerParameterivNV_remap_index]
+#define _gloffset_FinalCombinerInputNV driDispatchRemapTable[FinalCombinerInputNV_remap_index]
+#define _gloffset_GetCombinerInputParameterfvNV driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index]
+#define _gloffset_GetCombinerInputParameterivNV driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index]
+#define _gloffset_GetCombinerOutputParameterfvNV driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index]
+#define _gloffset_GetCombinerOutputParameterivNV driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index]
+#define _gloffset_GetFinalCombinerInputParameterfvNV driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index]
+#define _gloffset_GetFinalCombinerInputParameterivNV driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index]
+#define _gloffset_ResizeBuffersMESA driDispatchRemapTable[ResizeBuffersMESA_remap_index]
+#define _gloffset_WindowPos2dMESA driDispatchRemapTable[WindowPos2dMESA_remap_index]
+#define _gloffset_WindowPos2dvMESA driDispatchRemapTable[WindowPos2dvMESA_remap_index]
+#define _gloffset_WindowPos2fMESA driDispatchRemapTable[WindowPos2fMESA_remap_index]
+#define _gloffset_WindowPos2fvMESA driDispatchRemapTable[WindowPos2fvMESA_remap_index]
+#define _gloffset_WindowPos2iMESA driDispatchRemapTable[WindowPos2iMESA_remap_index]
+#define _gloffset_WindowPos2ivMESA driDispatchRemapTable[WindowPos2ivMESA_remap_index]
+#define _gloffset_WindowPos2sMESA driDispatchRemapTable[WindowPos2sMESA_remap_index]
+#define _gloffset_WindowPos2svMESA driDispatchRemapTable[WindowPos2svMESA_remap_index]
+#define _gloffset_WindowPos3dMESA driDispatchRemapTable[WindowPos3dMESA_remap_index]
+#define _gloffset_WindowPos3dvMESA driDispatchRemapTable[WindowPos3dvMESA_remap_index]
+#define _gloffset_WindowPos3fMESA driDispatchRemapTable[WindowPos3fMESA_remap_index]
+#define _gloffset_WindowPos3fvMESA driDispatchRemapTable[WindowPos3fvMESA_remap_index]
+#define _gloffset_WindowPos3iMESA driDispatchRemapTable[WindowPos3iMESA_remap_index]
+#define _gloffset_WindowPos3ivMESA driDispatchRemapTable[WindowPos3ivMESA_remap_index]
+#define _gloffset_WindowPos3sMESA driDispatchRemapTable[WindowPos3sMESA_remap_index]
+#define _gloffset_WindowPos3svMESA driDispatchRemapTable[WindowPos3svMESA_remap_index]
+#define _gloffset_WindowPos4dMESA driDispatchRemapTable[WindowPos4dMESA_remap_index]
+#define _gloffset_WindowPos4dvMESA driDispatchRemapTable[WindowPos4dvMESA_remap_index]
+#define _gloffset_WindowPos4fMESA driDispatchRemapTable[WindowPos4fMESA_remap_index]
+#define _gloffset_WindowPos4fvMESA driDispatchRemapTable[WindowPos4fvMESA_remap_index]
+#define _gloffset_WindowPos4iMESA driDispatchRemapTable[WindowPos4iMESA_remap_index]
+#define _gloffset_WindowPos4ivMESA driDispatchRemapTable[WindowPos4ivMESA_remap_index]
+#define _gloffset_WindowPos4sMESA driDispatchRemapTable[WindowPos4sMESA_remap_index]
+#define _gloffset_WindowPos4svMESA driDispatchRemapTable[WindowPos4svMESA_remap_index]
+#define _gloffset_MultiModeDrawArraysIBM driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index]
+#define _gloffset_MultiModeDrawElementsIBM driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index]
+#define _gloffset_DeleteFencesNV driDispatchRemapTable[DeleteFencesNV_remap_index]
+#define _gloffset_FinishFenceNV driDispatchRemapTable[FinishFenceNV_remap_index]
+#define _gloffset_GenFencesNV driDispatchRemapTable[GenFencesNV_remap_index]
+#define _gloffset_GetFenceivNV driDispatchRemapTable[GetFenceivNV_remap_index]
+#define _gloffset_IsFenceNV driDispatchRemapTable[IsFenceNV_remap_index]
+#define _gloffset_SetFenceNV driDispatchRemapTable[SetFenceNV_remap_index]
+#define _gloffset_TestFenceNV driDispatchRemapTable[TestFenceNV_remap_index]
+#define _gloffset_AreProgramsResidentNV driDispatchRemapTable[AreProgramsResidentNV_remap_index]
+#define _gloffset_BindProgramNV driDispatchRemapTable[BindProgramNV_remap_index]
+#define _gloffset_DeleteProgramsNV driDispatchRemapTable[DeleteProgramsNV_remap_index]
+#define _gloffset_ExecuteProgramNV driDispatchRemapTable[ExecuteProgramNV_remap_index]
+#define _gloffset_GenProgramsNV driDispatchRemapTable[GenProgramsNV_remap_index]
+#define _gloffset_GetProgramParameterdvNV driDispatchRemapTable[GetProgramParameterdvNV_remap_index]
+#define _gloffset_GetProgramParameterfvNV driDispatchRemapTable[GetProgramParameterfvNV_remap_index]
+#define _gloffset_GetProgramStringNV driDispatchRemapTable[GetProgramStringNV_remap_index]
+#define _gloffset_GetProgramivNV driDispatchRemapTable[GetProgramivNV_remap_index]
+#define _gloffset_GetTrackMatrixivNV driDispatchRemapTable[GetTrackMatrixivNV_remap_index]
+#define _gloffset_GetVertexAttribPointervNV driDispatchRemapTable[GetVertexAttribPointervNV_remap_index]
+#define _gloffset_GetVertexAttribdvNV driDispatchRemapTable[GetVertexAttribdvNV_remap_index]
+#define _gloffset_GetVertexAttribfvNV driDispatchRemapTable[GetVertexAttribfvNV_remap_index]
+#define _gloffset_GetVertexAttribivNV driDispatchRemapTable[GetVertexAttribivNV_remap_index]
+#define _gloffset_IsProgramNV driDispatchRemapTable[IsProgramNV_remap_index]
+#define _gloffset_LoadProgramNV driDispatchRemapTable[LoadProgramNV_remap_index]
+#define _gloffset_ProgramParameters4dvNV driDispatchRemapTable[ProgramParameters4dvNV_remap_index]
+#define _gloffset_ProgramParameters4fvNV driDispatchRemapTable[ProgramParameters4fvNV_remap_index]
+#define _gloffset_RequestResidentProgramsNV driDispatchRemapTable[RequestResidentProgramsNV_remap_index]
+#define _gloffset_TrackMatrixNV driDispatchRemapTable[TrackMatrixNV_remap_index]
+#define _gloffset_VertexAttrib1dNV driDispatchRemapTable[VertexAttrib1dNV_remap_index]
+#define _gloffset_VertexAttrib1dvNV driDispatchRemapTable[VertexAttrib1dvNV_remap_index]
+#define _gloffset_VertexAttrib1fNV driDispatchRemapTable[VertexAttrib1fNV_remap_index]
+#define _gloffset_VertexAttrib1fvNV driDispatchRemapTable[VertexAttrib1fvNV_remap_index]
+#define _gloffset_VertexAttrib1sNV driDispatchRemapTable[VertexAttrib1sNV_remap_index]
+#define _gloffset_VertexAttrib1svNV driDispatchRemapTable[VertexAttrib1svNV_remap_index]
+#define _gloffset_VertexAttrib2dNV driDispatchRemapTable[VertexAttrib2dNV_remap_index]
+#define _gloffset_VertexAttrib2dvNV driDispatchRemapTable[VertexAttrib2dvNV_remap_index]
+#define _gloffset_VertexAttrib2fNV driDispatchRemapTable[VertexAttrib2fNV_remap_index]
+#define _gloffset_VertexAttrib2fvNV driDispatchRemapTable[VertexAttrib2fvNV_remap_index]
+#define _gloffset_VertexAttrib2sNV driDispatchRemapTable[VertexAttrib2sNV_remap_index]
+#define _gloffset_VertexAttrib2svNV driDispatchRemapTable[VertexAttrib2svNV_remap_index]
+#define _gloffset_VertexAttrib3dNV driDispatchRemapTable[VertexAttrib3dNV_remap_index]
+#define _gloffset_VertexAttrib3dvNV driDispatchRemapTable[VertexAttrib3dvNV_remap_index]
+#define _gloffset_VertexAttrib3fNV driDispatchRemapTable[VertexAttrib3fNV_remap_index]
+#define _gloffset_VertexAttrib3fvNV driDispatchRemapTable[VertexAttrib3fvNV_remap_index]
+#define _gloffset_VertexAttrib3sNV driDispatchRemapTable[VertexAttrib3sNV_remap_index]
+#define _gloffset_VertexAttrib3svNV driDispatchRemapTable[VertexAttrib3svNV_remap_index]
+#define _gloffset_VertexAttrib4dNV driDispatchRemapTable[VertexAttrib4dNV_remap_index]
+#define _gloffset_VertexAttrib4dvNV driDispatchRemapTable[VertexAttrib4dvNV_remap_index]
+#define _gloffset_VertexAttrib4fNV driDispatchRemapTable[VertexAttrib4fNV_remap_index]
+#define _gloffset_VertexAttrib4fvNV driDispatchRemapTable[VertexAttrib4fvNV_remap_index]
+#define _gloffset_VertexAttrib4sNV driDispatchRemapTable[VertexAttrib4sNV_remap_index]
+#define _gloffset_VertexAttrib4svNV driDispatchRemapTable[VertexAttrib4svNV_remap_index]
+#define _gloffset_VertexAttrib4ubNV driDispatchRemapTable[VertexAttrib4ubNV_remap_index]
+#define _gloffset_VertexAttrib4ubvNV driDispatchRemapTable[VertexAttrib4ubvNV_remap_index]
+#define _gloffset_VertexAttribPointerNV driDispatchRemapTable[VertexAttribPointerNV_remap_index]
+#define _gloffset_VertexAttribs1dvNV driDispatchRemapTable[VertexAttribs1dvNV_remap_index]
+#define _gloffset_VertexAttribs1fvNV driDispatchRemapTable[VertexAttribs1fvNV_remap_index]
+#define _gloffset_VertexAttribs1svNV driDispatchRemapTable[VertexAttribs1svNV_remap_index]
+#define _gloffset_VertexAttribs2dvNV driDispatchRemapTable[VertexAttribs2dvNV_remap_index]
+#define _gloffset_VertexAttribs2fvNV driDispatchRemapTable[VertexAttribs2fvNV_remap_index]
+#define _gloffset_VertexAttribs2svNV driDispatchRemapTable[VertexAttribs2svNV_remap_index]
+#define _gloffset_VertexAttribs3dvNV driDispatchRemapTable[VertexAttribs3dvNV_remap_index]
+#define _gloffset_VertexAttribs3fvNV driDispatchRemapTable[VertexAttribs3fvNV_remap_index]
+#define _gloffset_VertexAttribs3svNV driDispatchRemapTable[VertexAttribs3svNV_remap_index]
+#define _gloffset_VertexAttribs4dvNV driDispatchRemapTable[VertexAttribs4dvNV_remap_index]
+#define _gloffset_VertexAttribs4fvNV driDispatchRemapTable[VertexAttribs4fvNV_remap_index]
+#define _gloffset_VertexAttribs4svNV driDispatchRemapTable[VertexAttribs4svNV_remap_index]
+#define _gloffset_VertexAttribs4ubvNV driDispatchRemapTable[VertexAttribs4ubvNV_remap_index]
+#define _gloffset_GetTexBumpParameterfvATI driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index]
+#define _gloffset_GetTexBumpParameterivATI driDispatchRemapTable[GetTexBumpParameterivATI_remap_index]
+#define _gloffset_TexBumpParameterfvATI driDispatchRemapTable[TexBumpParameterfvATI_remap_index]
+#define _gloffset_TexBumpParameterivATI driDispatchRemapTable[TexBumpParameterivATI_remap_index]
+#define _gloffset_AlphaFragmentOp1ATI driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index]
+#define _gloffset_AlphaFragmentOp2ATI driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index]
+#define _gloffset_AlphaFragmentOp3ATI driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index]
+#define _gloffset_BeginFragmentShaderATI driDispatchRemapTable[BeginFragmentShaderATI_remap_index]
+#define _gloffset_BindFragmentShaderATI driDispatchRemapTable[BindFragmentShaderATI_remap_index]
+#define _gloffset_ColorFragmentOp1ATI driDispatchRemapTable[ColorFragmentOp1ATI_remap_index]
+#define _gloffset_ColorFragmentOp2ATI driDispatchRemapTable[ColorFragmentOp2ATI_remap_index]
+#define _gloffset_ColorFragmentOp3ATI driDispatchRemapTable[ColorFragmentOp3ATI_remap_index]
+#define _gloffset_DeleteFragmentShaderATI driDispatchRemapTable[DeleteFragmentShaderATI_remap_index]
+#define _gloffset_EndFragmentShaderATI driDispatchRemapTable[EndFragmentShaderATI_remap_index]
+#define _gloffset_GenFragmentShadersATI driDispatchRemapTable[GenFragmentShadersATI_remap_index]
+#define _gloffset_PassTexCoordATI driDispatchRemapTable[PassTexCoordATI_remap_index]
+#define _gloffset_SampleMapATI driDispatchRemapTable[SampleMapATI_remap_index]
+#define _gloffset_SetFragmentShaderConstantATI driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index]
+#define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index]
+#define _gloffset_PointParameterivNV driDispatchRemapTable[PointParameterivNV_remap_index]
+#define _gloffset_ActiveStencilFaceEXT driDispatchRemapTable[ActiveStencilFaceEXT_remap_index]
+#define _gloffset_BindVertexArrayAPPLE driDispatchRemapTable[BindVertexArrayAPPLE_remap_index]
+#define _gloffset_DeleteVertexArraysAPPLE driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index]
+#define _gloffset_GenVertexArraysAPPLE driDispatchRemapTable[GenVertexArraysAPPLE_remap_index]
+#define _gloffset_IsVertexArrayAPPLE driDispatchRemapTable[IsVertexArrayAPPLE_remap_index]
+#define _gloffset_GetProgramNamedParameterdvNV driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index]
+#define _gloffset_GetProgramNamedParameterfvNV driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index]
+#define _gloffset_ProgramNamedParameter4dNV driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index]
+#define _gloffset_ProgramNamedParameter4dvNV driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index]
+#define _gloffset_ProgramNamedParameter4fNV driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index]
+#define _gloffset_ProgramNamedParameter4fvNV driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index]
+#define _gloffset_DepthBoundsEXT driDispatchRemapTable[DepthBoundsEXT_remap_index]
+#define _gloffset_BlendEquationSeparateEXT driDispatchRemapTable[BlendEquationSeparateEXT_remap_index]
+#define _gloffset_BindFramebufferEXT driDispatchRemapTable[BindFramebufferEXT_remap_index]
+#define _gloffset_BindRenderbufferEXT driDispatchRemapTable[BindRenderbufferEXT_remap_index]
+#define _gloffset_CheckFramebufferStatusEXT driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index]
+#define _gloffset_DeleteFramebuffersEXT driDispatchRemapTable[DeleteFramebuffersEXT_remap_index]
+#define _gloffset_DeleteRenderbuffersEXT driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index]
+#define _gloffset_FramebufferRenderbufferEXT driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index]
+#define _gloffset_FramebufferTexture1DEXT driDispatchRemapTable[FramebufferTexture1DEXT_remap_index]
+#define _gloffset_FramebufferTexture2DEXT driDispatchRemapTable[FramebufferTexture2DEXT_remap_index]
+#define _gloffset_FramebufferTexture3DEXT driDispatchRemapTable[FramebufferTexture3DEXT_remap_index]
+#define _gloffset_GenFramebuffersEXT driDispatchRemapTable[GenFramebuffersEXT_remap_index]
+#define _gloffset_GenRenderbuffersEXT driDispatchRemapTable[GenRenderbuffersEXT_remap_index]
+#define _gloffset_GenerateMipmapEXT driDispatchRemapTable[GenerateMipmapEXT_remap_index]
+#define _gloffset_GetFramebufferAttachmentParameterivEXT driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index]
+#define _gloffset_GetRenderbufferParameterivEXT driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index]
+#define _gloffset_IsFramebufferEXT driDispatchRemapTable[IsFramebufferEXT_remap_index]
+#define _gloffset_IsRenderbufferEXT driDispatchRemapTable[IsRenderbufferEXT_remap_index]
+#define _gloffset_RenderbufferStorageEXT driDispatchRemapTable[RenderbufferStorageEXT_remap_index]
+#define _gloffset_BlitFramebufferEXT driDispatchRemapTable[BlitFramebufferEXT_remap_index]
+#define _gloffset_BufferParameteriAPPLE driDispatchRemapTable[BufferParameteriAPPLE_remap_index]
+#define _gloffset_FlushMappedBufferRangeAPPLE driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index]
+#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index]
+#define _gloffset_ColorMaskIndexedEXT driDispatchRemapTable[ColorMaskIndexedEXT_remap_index]
+#define _gloffset_DisableIndexedEXT driDispatchRemapTable[DisableIndexedEXT_remap_index]
+#define _gloffset_EnableIndexedEXT driDispatchRemapTable[EnableIndexedEXT_remap_index]
+#define _gloffset_GetBooleanIndexedvEXT driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index]
+#define _gloffset_GetIntegerIndexedvEXT driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index]
+#define _gloffset_IsEnabledIndexedEXT driDispatchRemapTable[IsEnabledIndexedEXT_remap_index]
+#define _gloffset_BeginConditionalRenderNV driDispatchRemapTable[BeginConditionalRenderNV_remap_index]
+#define _gloffset_EndConditionalRenderNV driDispatchRemapTable[EndConditionalRenderNV_remap_index]
+#define _gloffset_BeginTransformFeedbackEXT driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index]
+#define _gloffset_BindBufferBaseEXT driDispatchRemapTable[BindBufferBaseEXT_remap_index]
+#define _gloffset_BindBufferOffsetEXT driDispatchRemapTable[BindBufferOffsetEXT_remap_index]
+#define _gloffset_BindBufferRangeEXT driDispatchRemapTable[BindBufferRangeEXT_remap_index]
+#define _gloffset_EndTransformFeedbackEXT driDispatchRemapTable[EndTransformFeedbackEXT_remap_index]
+#define _gloffset_GetTransformFeedbackVaryingEXT driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index]
+#define _gloffset_TransformFeedbackVaryingsEXT driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index]
+#define _gloffset_ProvokingVertexEXT driDispatchRemapTable[ProvokingVertexEXT_remap_index]
+#define _gloffset_GetTexParameterPointervAPPLE driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index]
+#define _gloffset_TextureRangeAPPLE driDispatchRemapTable[TextureRangeAPPLE_remap_index]
+#define _gloffset_GetObjectParameterivAPPLE driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index]
+#define _gloffset_ObjectPurgeableAPPLE driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index]
+#define _gloffset_ObjectUnpurgeableAPPLE driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index]
+#define _gloffset_StencilFuncSeparateATI driDispatchRemapTable[StencilFuncSeparateATI_remap_index]
+#define _gloffset_ProgramEnvParameters4fvEXT driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index]
+#define _gloffset_ProgramLocalParameters4fvEXT driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index]
+#define _gloffset_GetQueryObjecti64vEXT driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index]
+#define _gloffset_GetQueryObjectui64vEXT driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index]
+#define _gloffset_EGLImageTargetRenderbufferStorageOES driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index]
+#define _gloffset_EGLImageTargetTexture2DOES driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index]
+
+#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */
+
+#endif /* !defined( _GLAPI_OFFSETS_H_ ) */
diff --git a/src/mapi/glapi/glapitable.h b/src/mapi/glapi/glapitable.h
new file mode 100644 (file)
index 0000000..faf274f
--- /dev/null
@@ -0,0 +1,862 @@
+/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */
+
+/*
+ * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
+ * (C) Copyright IBM Corporation 2004
+ * 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
+ * BRIAN PAUL, 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.
+ */
+
+#if !defined( _GLAPI_TABLE_H_ )
+#  define _GLAPI_TABLE_H_
+
+#ifndef GLAPIENTRYP
+# ifndef GLAPIENTRY
+#  define GLAPIENTRY
+# endif
+
+# define GLAPIENTRYP GLAPIENTRY *
+#endif
+
+
+struct _glapi_table
+{
+   void (GLAPIENTRYP NewList)(GLuint list, GLenum mode); /* 0 */
+   void (GLAPIENTRYP EndList)(void); /* 1 */
+   void (GLAPIENTRYP CallList)(GLuint list); /* 2 */
+   void (GLAPIENTRYP CallLists)(GLsizei n, GLenum type, const GLvoid * lists); /* 3 */
+   void (GLAPIENTRYP DeleteLists)(GLuint list, GLsizei range); /* 4 */
+   GLuint (GLAPIENTRYP GenLists)(GLsizei range); /* 5 */
+   void (GLAPIENTRYP ListBase)(GLuint base); /* 6 */
+   void (GLAPIENTRYP Begin)(GLenum mode); /* 7 */
+   void (GLAPIENTRYP Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap); /* 8 */
+   void (GLAPIENTRYP Color3b)(GLbyte red, GLbyte green, GLbyte blue); /* 9 */
+   void (GLAPIENTRYP Color3bv)(const GLbyte * v); /* 10 */
+   void (GLAPIENTRYP Color3d)(GLdouble red, GLdouble green, GLdouble blue); /* 11 */
+   void (GLAPIENTRYP Color3dv)(const GLdouble * v); /* 12 */
+   void (GLAPIENTRYP Color3f)(GLfloat red, GLfloat green, GLfloat blue); /* 13 */
+   void (GLAPIENTRYP Color3fv)(const GLfloat * v); /* 14 */
+   void (GLAPIENTRYP Color3i)(GLint red, GLint green, GLint blue); /* 15 */
+   void (GLAPIENTRYP Color3iv)(const GLint * v); /* 16 */
+   void (GLAPIENTRYP Color3s)(GLshort red, GLshort green, GLshort blue); /* 17 */
+   void (GLAPIENTRYP Color3sv)(const GLshort * v); /* 18 */
+   void (GLAPIENTRYP Color3ub)(GLubyte red, GLubyte green, GLubyte blue); /* 19 */
+   void (GLAPIENTRYP Color3ubv)(const GLubyte * v); /* 20 */
+   void (GLAPIENTRYP Color3ui)(GLuint red, GLuint green, GLuint blue); /* 21 */
+   void (GLAPIENTRYP Color3uiv)(const GLuint * v); /* 22 */
+   void (GLAPIENTRYP Color3us)(GLushort red, GLushort green, GLushort blue); /* 23 */
+   void (GLAPIENTRYP Color3usv)(const GLushort * v); /* 24 */
+   void (GLAPIENTRYP Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); /* 25 */
+   void (GLAPIENTRYP Color4bv)(const GLbyte * v); /* 26 */
+   void (GLAPIENTRYP Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); /* 27 */
+   void (GLAPIENTRYP Color4dv)(const GLdouble * v); /* 28 */
+   void (GLAPIENTRYP Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 29 */
+   void (GLAPIENTRYP Color4fv)(const GLfloat * v); /* 30 */
+   void (GLAPIENTRYP Color4i)(GLint red, GLint green, GLint blue, GLint alpha); /* 31 */
+   void (GLAPIENTRYP Color4iv)(const GLint * v); /* 32 */
+   void (GLAPIENTRYP Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha); /* 33 */
+   void (GLAPIENTRYP Color4sv)(const GLshort * v); /* 34 */
+   void (GLAPIENTRYP Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); /* 35 */
+   void (GLAPIENTRYP Color4ubv)(const GLubyte * v); /* 36 */
+   void (GLAPIENTRYP Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha); /* 37 */
+   void (GLAPIENTRYP Color4uiv)(const GLuint * v); /* 38 */
+   void (GLAPIENTRYP Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha); /* 39 */
+   void (GLAPIENTRYP Color4usv)(const GLushort * v); /* 40 */
+   void (GLAPIENTRYP EdgeFlag)(GLboolean flag); /* 41 */
+   void (GLAPIENTRYP EdgeFlagv)(const GLboolean * flag); /* 42 */
+   void (GLAPIENTRYP End)(void); /* 43 */
+   void (GLAPIENTRYP Indexd)(GLdouble c); /* 44 */
+   void (GLAPIENTRYP Indexdv)(const GLdouble * c); /* 45 */
+   void (GLAPIENTRYP Indexf)(GLfloat c); /* 46 */
+   void (GLAPIENTRYP Indexfv)(const GLfloat * c); /* 47 */
+   void (GLAPIENTRYP Indexi)(GLint c); /* 48 */
+   void (GLAPIENTRYP Indexiv)(const GLint * c); /* 49 */
+   void (GLAPIENTRYP Indexs)(GLshort c); /* 50 */
+   void (GLAPIENTRYP Indexsv)(const GLshort * c); /* 51 */
+   void (GLAPIENTRYP Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz); /* 52 */
+   void (GLAPIENTRYP Normal3bv)(const GLbyte * v); /* 53 */
+   void (GLAPIENTRYP Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz); /* 54 */
+   void (GLAPIENTRYP Normal3dv)(const GLdouble * v); /* 55 */
+   void (GLAPIENTRYP Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); /* 56 */
+   void (GLAPIENTRYP Normal3fv)(const GLfloat * v); /* 57 */
+   void (GLAPIENTRYP Normal3i)(GLint nx, GLint ny, GLint nz); /* 58 */
+   void (GLAPIENTRYP Normal3iv)(const GLint * v); /* 59 */
+   void (GLAPIENTRYP Normal3s)(GLshort nx, GLshort ny, GLshort nz); /* 60 */
+   void (GLAPIENTRYP Normal3sv)(const GLshort * v); /* 61 */
+   void (GLAPIENTRYP RasterPos2d)(GLdouble x, GLdouble y); /* 62 */
+   void (GLAPIENTRYP RasterPos2dv)(const GLdouble * v); /* 63 */
+   void (GLAPIENTRYP RasterPos2f)(GLfloat x, GLfloat y); /* 64 */
+   void (GLAPIENTRYP RasterPos2fv)(const GLfloat * v); /* 65 */
+   void (GLAPIENTRYP RasterPos2i)(GLint x, GLint y); /* 66 */
+   void (GLAPIENTRYP RasterPos2iv)(const GLint * v); /* 67 */
+   void (GLAPIENTRYP RasterPos2s)(GLshort x, GLshort y); /* 68 */
+   void (GLAPIENTRYP RasterPos2sv)(const GLshort * v); /* 69 */
+   void (GLAPIENTRYP RasterPos3d)(GLdouble x, GLdouble y, GLdouble z); /* 70 */
+   void (GLAPIENTRYP RasterPos3dv)(const GLdouble * v); /* 71 */
+   void (GLAPIENTRYP RasterPos3f)(GLfloat x, GLfloat y, GLfloat z); /* 72 */
+   void (GLAPIENTRYP RasterPos3fv)(const GLfloat * v); /* 73 */
+   void (GLAPIENTRYP RasterPos3i)(GLint x, GLint y, GLint z); /* 74 */
+   void (GLAPIENTRYP RasterPos3iv)(const GLint * v); /* 75 */
+   void (GLAPIENTRYP RasterPos3s)(GLshort x, GLshort y, GLshort z); /* 76 */
+   void (GLAPIENTRYP RasterPos3sv)(const GLshort * v); /* 77 */
+   void (GLAPIENTRYP RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 78 */
+   void (GLAPIENTRYP RasterPos4dv)(const GLdouble * v); /* 79 */
+   void (GLAPIENTRYP RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 80 */
+   void (GLAPIENTRYP RasterPos4fv)(const GLfloat * v); /* 81 */
+   void (GLAPIENTRYP RasterPos4i)(GLint x, GLint y, GLint z, GLint w); /* 82 */
+   void (GLAPIENTRYP RasterPos4iv)(const GLint * v); /* 83 */
+   void (GLAPIENTRYP RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w); /* 84 */
+   void (GLAPIENTRYP RasterPos4sv)(const GLshort * v); /* 85 */
+   void (GLAPIENTRYP Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); /* 86 */
+   void (GLAPIENTRYP Rectdv)(const GLdouble * v1, const GLdouble * v2); /* 87 */
+   void (GLAPIENTRYP Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); /* 88 */
+   void (GLAPIENTRYP Rectfv)(const GLfloat * v1, const GLfloat * v2); /* 89 */
+   void (GLAPIENTRYP Recti)(GLint x1, GLint y1, GLint x2, GLint y2); /* 90 */
+   void (GLAPIENTRYP Rectiv)(const GLint * v1, const GLint * v2); /* 91 */
+   void (GLAPIENTRYP Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2); /* 92 */
+   void (GLAPIENTRYP Rectsv)(const GLshort * v1, const GLshort * v2); /* 93 */
+   void (GLAPIENTRYP TexCoord1d)(GLdouble s); /* 94 */
+   void (GLAPIENTRYP TexCoord1dv)(const GLdouble * v); /* 95 */
+   void (GLAPIENTRYP TexCoord1f)(GLfloat s); /* 96 */
+   void (GLAPIENTRYP TexCoord1fv)(const GLfloat * v); /* 97 */
+   void (GLAPIENTRYP TexCoord1i)(GLint s); /* 98 */
+   void (GLAPIENTRYP TexCoord1iv)(const GLint * v); /* 99 */
+   void (GLAPIENTRYP TexCoord1s)(GLshort s); /* 100 */
+   void (GLAPIENTRYP TexCoord1sv)(const GLshort * v); /* 101 */
+   void (GLAPIENTRYP TexCoord2d)(GLdouble s, GLdouble t); /* 102 */
+   void (GLAPIENTRYP TexCoord2dv)(const GLdouble * v); /* 103 */
+   void (GLAPIENTRYP TexCoord2f)(GLfloat s, GLfloat t); /* 104 */
+   void (GLAPIENTRYP TexCoord2fv)(const GLfloat * v); /* 105 */
+   void (GLAPIENTRYP TexCoord2i)(GLint s, GLint t); /* 106 */
+   void (GLAPIENTRYP TexCoord2iv)(const GLint * v); /* 107 */
+   void (GLAPIENTRYP TexCoord2s)(GLshort s, GLshort t); /* 108 */
+   void (GLAPIENTRYP TexCoord2sv)(const GLshort * v); /* 109 */
+   void (GLAPIENTRYP TexCoord3d)(GLdouble s, GLdouble t, GLdouble r); /* 110 */
+   void (GLAPIENTRYP TexCoord3dv)(const GLdouble * v); /* 111 */
+   void (GLAPIENTRYP TexCoord3f)(GLfloat s, GLfloat t, GLfloat r); /* 112 */
+   void (GLAPIENTRYP TexCoord3fv)(const GLfloat * v); /* 113 */
+   void (GLAPIENTRYP TexCoord3i)(GLint s, GLint t, GLint r); /* 114 */
+   void (GLAPIENTRYP TexCoord3iv)(const GLint * v); /* 115 */
+   void (GLAPIENTRYP TexCoord3s)(GLshort s, GLshort t, GLshort r); /* 116 */
+   void (GLAPIENTRYP TexCoord3sv)(const GLshort * v); /* 117 */
+   void (GLAPIENTRYP TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 118 */
+   void (GLAPIENTRYP TexCoord4dv)(const GLdouble * v); /* 119 */
+   void (GLAPIENTRYP TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 120 */
+   void (GLAPIENTRYP TexCoord4fv)(const GLfloat * v); /* 121 */
+   void (GLAPIENTRYP TexCoord4i)(GLint s, GLint t, GLint r, GLint q); /* 122 */
+   void (GLAPIENTRYP TexCoord4iv)(const GLint * v); /* 123 */
+   void (GLAPIENTRYP TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q); /* 124 */
+   void (GLAPIENTRYP TexCoord4sv)(const GLshort * v); /* 125 */
+   void (GLAPIENTRYP Vertex2d)(GLdouble x, GLdouble y); /* 126 */
+   void (GLAPIENTRYP Vertex2dv)(const GLdouble * v); /* 127 */
+   void (GLAPIENTRYP Vertex2f)(GLfloat x, GLfloat y); /* 128 */
+   void (GLAPIENTRYP Vertex2fv)(const GLfloat * v); /* 129 */
+   void (GLAPIENTRYP Vertex2i)(GLint x, GLint y); /* 130 */
+   void (GLAPIENTRYP Vertex2iv)(const GLint * v); /* 131 */
+   void (GLAPIENTRYP Vertex2s)(GLshort x, GLshort y); /* 132 */
+   void (GLAPIENTRYP Vertex2sv)(const GLshort * v); /* 133 */
+   void (GLAPIENTRYP Vertex3d)(GLdouble x, GLdouble y, GLdouble z); /* 134 */
+   void (GLAPIENTRYP Vertex3dv)(const GLdouble * v); /* 135 */
+   void (GLAPIENTRYP Vertex3f)(GLfloat x, GLfloat y, GLfloat z); /* 136 */
+   void (GLAPIENTRYP Vertex3fv)(const GLfloat * v); /* 137 */
+   void (GLAPIENTRYP Vertex3i)(GLint x, GLint y, GLint z); /* 138 */
+   void (GLAPIENTRYP Vertex3iv)(const GLint * v); /* 139 */
+   void (GLAPIENTRYP Vertex3s)(GLshort x, GLshort y, GLshort z); /* 140 */
+   void (GLAPIENTRYP Vertex3sv)(const GLshort * v); /* 141 */
+   void (GLAPIENTRYP Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 142 */
+   void (GLAPIENTRYP Vertex4dv)(const GLdouble * v); /* 143 */
+   void (GLAPIENTRYP Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 144 */
+   void (GLAPIENTRYP Vertex4fv)(const GLfloat * v); /* 145 */
+   void (GLAPIENTRYP Vertex4i)(GLint x, GLint y, GLint z, GLint w); /* 146 */
+   void (GLAPIENTRYP Vertex4iv)(const GLint * v); /* 147 */
+   void (GLAPIENTRYP Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w); /* 148 */
+   void (GLAPIENTRYP Vertex4sv)(const GLshort * v); /* 149 */
+   void (GLAPIENTRYP ClipPlane)(GLenum plane, const GLdouble * equation); /* 150 */
+   void (GLAPIENTRYP ColorMaterial)(GLenum face, GLenum mode); /* 151 */
+   void (GLAPIENTRYP CullFace)(GLenum mode); /* 152 */
+   void (GLAPIENTRYP Fogf)(GLenum pname, GLfloat param); /* 153 */
+   void (GLAPIENTRYP Fogfv)(GLenum pname, const GLfloat * params); /* 154 */
+   void (GLAPIENTRYP Fogi)(GLenum pname, GLint param); /* 155 */
+   void (GLAPIENTRYP Fogiv)(GLenum pname, const GLint * params); /* 156 */
+   void (GLAPIENTRYP FrontFace)(GLenum mode); /* 157 */
+   void (GLAPIENTRYP Hint)(GLenum target, GLenum mode); /* 158 */
+   void (GLAPIENTRYP Lightf)(GLenum light, GLenum pname, GLfloat param); /* 159 */
+   void (GLAPIENTRYP Lightfv)(GLenum light, GLenum pname, const GLfloat * params); /* 160 */
+   void (GLAPIENTRYP Lighti)(GLenum light, GLenum pname, GLint param); /* 161 */
+   void (GLAPIENTRYP Lightiv)(GLenum light, GLenum pname, const GLint * params); /* 162 */
+   void (GLAPIENTRYP LightModelf)(GLenum pname, GLfloat param); /* 163 */
+   void (GLAPIENTRYP LightModelfv)(GLenum pname, const GLfloat * params); /* 164 */
+   void (GLAPIENTRYP LightModeli)(GLenum pname, GLint param); /* 165 */
+   void (GLAPIENTRYP LightModeliv)(GLenum pname, const GLint * params); /* 166 */
+   void (GLAPIENTRYP LineStipple)(GLint factor, GLushort pattern); /* 167 */
+   void (GLAPIENTRYP LineWidth)(GLfloat width); /* 168 */
+   void (GLAPIENTRYP Materialf)(GLenum face, GLenum pname, GLfloat param); /* 169 */
+   void (GLAPIENTRYP Materialfv)(GLenum face, GLenum pname, const GLfloat * params); /* 170 */
+   void (GLAPIENTRYP Materiali)(GLenum face, GLenum pname, GLint param); /* 171 */
+   void (GLAPIENTRYP Materialiv)(GLenum face, GLenum pname, const GLint * params); /* 172 */
+   void (GLAPIENTRYP PointSize)(GLfloat size); /* 173 */
+   void (GLAPIENTRYP PolygonMode)(GLenum face, GLenum mode); /* 174 */
+   void (GLAPIENTRYP PolygonStipple)(const GLubyte * mask); /* 175 */
+   void (GLAPIENTRYP Scissor)(GLint x, GLint y, GLsizei width, GLsizei height); /* 176 */
+   void (GLAPIENTRYP ShadeModel)(GLenum mode); /* 177 */
+   void (GLAPIENTRYP TexParameterf)(GLenum target, GLenum pname, GLfloat param); /* 178 */
+   void (GLAPIENTRYP TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 179 */
+   void (GLAPIENTRYP TexParameteri)(GLenum target, GLenum pname, GLint param); /* 180 */
+   void (GLAPIENTRYP TexParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 181 */
+   void (GLAPIENTRYP TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 182 */
+   void (GLAPIENTRYP TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 183 */
+   void (GLAPIENTRYP TexEnvf)(GLenum target, GLenum pname, GLfloat param); /* 184 */
+   void (GLAPIENTRYP TexEnvfv)(GLenum target, GLenum pname, const GLfloat * params); /* 185 */
+   void (GLAPIENTRYP TexEnvi)(GLenum target, GLenum pname, GLint param); /* 186 */
+   void (GLAPIENTRYP TexEnviv)(GLenum target, GLenum pname, const GLint * params); /* 187 */
+   void (GLAPIENTRYP TexGend)(GLenum coord, GLenum pname, GLdouble param); /* 188 */
+   void (GLAPIENTRYP TexGendv)(GLenum coord, GLenum pname, const GLdouble * params); /* 189 */
+   void (GLAPIENTRYP TexGenf)(GLenum coord, GLenum pname, GLfloat param); /* 190 */
+   void (GLAPIENTRYP TexGenfv)(GLenum coord, GLenum pname, const GLfloat * params); /* 191 */
+   void (GLAPIENTRYP TexGeni)(GLenum coord, GLenum pname, GLint param); /* 192 */
+   void (GLAPIENTRYP TexGeniv)(GLenum coord, GLenum pname, const GLint * params); /* 193 */
+   void (GLAPIENTRYP FeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer); /* 194 */
+   void (GLAPIENTRYP SelectBuffer)(GLsizei size, GLuint * buffer); /* 195 */
+   GLint (GLAPIENTRYP RenderMode)(GLenum mode); /* 196 */
+   void (GLAPIENTRYP InitNames)(void); /* 197 */
+   void (GLAPIENTRYP LoadName)(GLuint name); /* 198 */
+   void (GLAPIENTRYP PassThrough)(GLfloat token); /* 199 */
+   void (GLAPIENTRYP PopName)(void); /* 200 */
+   void (GLAPIENTRYP PushName)(GLuint name); /* 201 */
+   void (GLAPIENTRYP DrawBuffer)(GLenum mode); /* 202 */
+   void (GLAPIENTRYP Clear)(GLbitfield mask); /* 203 */
+   void (GLAPIENTRYP ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 204 */
+   void (GLAPIENTRYP ClearIndex)(GLfloat c); /* 205 */
+   void (GLAPIENTRYP ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 206 */
+   void (GLAPIENTRYP ClearStencil)(GLint s); /* 207 */
+   void (GLAPIENTRYP ClearDepth)(GLclampd depth); /* 208 */
+   void (GLAPIENTRYP StencilMask)(GLuint mask); /* 209 */
+   void (GLAPIENTRYP ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); /* 210 */
+   void (GLAPIENTRYP DepthMask)(GLboolean flag); /* 211 */
+   void (GLAPIENTRYP IndexMask)(GLuint mask); /* 212 */
+   void (GLAPIENTRYP Accum)(GLenum op, GLfloat value); /* 213 */
+   void (GLAPIENTRYP Disable)(GLenum cap); /* 214 */
+   void (GLAPIENTRYP Enable)(GLenum cap); /* 215 */
+   void (GLAPIENTRYP Finish)(void); /* 216 */
+   void (GLAPIENTRYP Flush)(void); /* 217 */
+   void (GLAPIENTRYP PopAttrib)(void); /* 218 */
+   void (GLAPIENTRYP PushAttrib)(GLbitfield mask); /* 219 */
+   void (GLAPIENTRYP Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points); /* 220 */
+   void (GLAPIENTRYP Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); /* 221 */
+   void (GLAPIENTRYP Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points); /* 222 */
+   void (GLAPIENTRYP Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points); /* 223 */
+   void (GLAPIENTRYP MapGrid1d)(GLint un, GLdouble u1, GLdouble u2); /* 224 */
+   void (GLAPIENTRYP MapGrid1f)(GLint un, GLfloat u1, GLfloat u2); /* 225 */
+   void (GLAPIENTRYP MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); /* 226 */
+   void (GLAPIENTRYP MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); /* 227 */
+   void (GLAPIENTRYP EvalCoord1d)(GLdouble u); /* 228 */
+   void (GLAPIENTRYP EvalCoord1dv)(const GLdouble * u); /* 229 */
+   void (GLAPIENTRYP EvalCoord1f)(GLfloat u); /* 230 */
+   void (GLAPIENTRYP EvalCoord1fv)(const GLfloat * u); /* 231 */
+   void (GLAPIENTRYP EvalCoord2d)(GLdouble u, GLdouble v); /* 232 */
+   void (GLAPIENTRYP EvalCoord2dv)(const GLdouble * u); /* 233 */
+   void (GLAPIENTRYP EvalCoord2f)(GLfloat u, GLfloat v); /* 234 */
+   void (GLAPIENTRYP EvalCoord2fv)(const GLfloat * u); /* 235 */
+   void (GLAPIENTRYP EvalMesh1)(GLenum mode, GLint i1, GLint i2); /* 236 */
+   void (GLAPIENTRYP EvalPoint1)(GLint i); /* 237 */
+   void (GLAPIENTRYP EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); /* 238 */
+   void (GLAPIENTRYP EvalPoint2)(GLint i, GLint j); /* 239 */
+   void (GLAPIENTRYP AlphaFunc)(GLenum func, GLclampf ref); /* 240 */
+   void (GLAPIENTRYP BlendFunc)(GLenum sfactor, GLenum dfactor); /* 241 */
+   void (GLAPIENTRYP LogicOp)(GLenum opcode); /* 242 */
+   void (GLAPIENTRYP StencilFunc)(GLenum func, GLint ref, GLuint mask); /* 243 */
+   void (GLAPIENTRYP StencilOp)(GLenum fail, GLenum zfail, GLenum zpass); /* 244 */
+   void (GLAPIENTRYP DepthFunc)(GLenum func); /* 245 */
+   void (GLAPIENTRYP PixelZoom)(GLfloat xfactor, GLfloat yfactor); /* 246 */
+   void (GLAPIENTRYP PixelTransferf)(GLenum pname, GLfloat param); /* 247 */
+   void (GLAPIENTRYP PixelTransferi)(GLenum pname, GLint param); /* 248 */
+   void (GLAPIENTRYP PixelStoref)(GLenum pname, GLfloat param); /* 249 */
+   void (GLAPIENTRYP PixelStorei)(GLenum pname, GLint param); /* 250 */
+   void (GLAPIENTRYP PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values); /* 251 */
+   void (GLAPIENTRYP PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values); /* 252 */
+   void (GLAPIENTRYP PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values); /* 253 */
+   void (GLAPIENTRYP ReadBuffer)(GLenum mode); /* 254 */
+   void (GLAPIENTRYP CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); /* 255 */
+   void (GLAPIENTRYP ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels); /* 256 */
+   void (GLAPIENTRYP DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); /* 257 */
+   void (GLAPIENTRYP GetBooleanv)(GLenum pname, GLboolean * params); /* 258 */
+   void (GLAPIENTRYP GetClipPlane)(GLenum plane, GLdouble * equation); /* 259 */
+   void (GLAPIENTRYP GetDoublev)(GLenum pname, GLdouble * params); /* 260 */
+   GLenum (GLAPIENTRYP GetError)(void); /* 261 */
+   void (GLAPIENTRYP GetFloatv)(GLenum pname, GLfloat * params); /* 262 */
+   void (GLAPIENTRYP GetIntegerv)(GLenum pname, GLint * params); /* 263 */
+   void (GLAPIENTRYP GetLightfv)(GLenum light, GLenum pname, GLfloat * params); /* 264 */
+   void (GLAPIENTRYP GetLightiv)(GLenum light, GLenum pname, GLint * params); /* 265 */
+   void (GLAPIENTRYP GetMapdv)(GLenum target, GLenum query, GLdouble * v); /* 266 */
+   void (GLAPIENTRYP GetMapfv)(GLenum target, GLenum query, GLfloat * v); /* 267 */
+   void (GLAPIENTRYP GetMapiv)(GLenum target, GLenum query, GLint * v); /* 268 */
+   void (GLAPIENTRYP GetMaterialfv)(GLenum face, GLenum pname, GLfloat * params); /* 269 */
+   void (GLAPIENTRYP GetMaterialiv)(GLenum face, GLenum pname, GLint * params); /* 270 */
+   void (GLAPIENTRYP GetPixelMapfv)(GLenum map, GLfloat * values); /* 271 */
+   void (GLAPIENTRYP GetPixelMapuiv)(GLenum map, GLuint * values); /* 272 */
+   void (GLAPIENTRYP GetPixelMapusv)(GLenum map, GLushort * values); /* 273 */
+   void (GLAPIENTRYP GetPolygonStipple)(GLubyte * mask); /* 274 */
+   const GLubyte * (GLAPIENTRYP GetString)(GLenum name); /* 275 */
+   void (GLAPIENTRYP GetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params); /* 276 */
+   void (GLAPIENTRYP GetTexEnviv)(GLenum target, GLenum pname, GLint * params); /* 277 */
+   void (GLAPIENTRYP GetTexGendv)(GLenum coord, GLenum pname, GLdouble * params); /* 278 */
+   void (GLAPIENTRYP GetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params); /* 279 */
+   void (GLAPIENTRYP GetTexGeniv)(GLenum coord, GLenum pname, GLint * params); /* 280 */
+   void (GLAPIENTRYP GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels); /* 281 */
+   void (GLAPIENTRYP GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 282 */
+   void (GLAPIENTRYP GetTexParameteriv)(GLenum target, GLenum pname, GLint * params); /* 283 */
+   void (GLAPIENTRYP GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params); /* 284 */
+   void (GLAPIENTRYP GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params); /* 285 */
+   GLboolean (GLAPIENTRYP IsEnabled)(GLenum cap); /* 286 */
+   GLboolean (GLAPIENTRYP IsList)(GLuint list); /* 287 */
+   void (GLAPIENTRYP DepthRange)(GLclampd zNear, GLclampd zFar); /* 288 */
+   void (GLAPIENTRYP Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 289 */
+   void (GLAPIENTRYP LoadIdentity)(void); /* 290 */
+   void (GLAPIENTRYP LoadMatrixf)(const GLfloat * m); /* 291 */
+   void (GLAPIENTRYP LoadMatrixd)(const GLdouble * m); /* 292 */
+   void (GLAPIENTRYP MatrixMode)(GLenum mode); /* 293 */
+   void (GLAPIENTRYP MultMatrixf)(const GLfloat * m); /* 294 */
+   void (GLAPIENTRYP MultMatrixd)(const GLdouble * m); /* 295 */
+   void (GLAPIENTRYP Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 296 */
+   void (GLAPIENTRYP PopMatrix)(void); /* 297 */
+   void (GLAPIENTRYP PushMatrix)(void); /* 298 */
+   void (GLAPIENTRYP Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); /* 299 */
+   void (GLAPIENTRYP Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); /* 300 */
+   void (GLAPIENTRYP Scaled)(GLdouble x, GLdouble y, GLdouble z); /* 301 */
+   void (GLAPIENTRYP Scalef)(GLfloat x, GLfloat y, GLfloat z); /* 302 */
+   void (GLAPIENTRYP Translated)(GLdouble x, GLdouble y, GLdouble z); /* 303 */
+   void (GLAPIENTRYP Translatef)(GLfloat x, GLfloat y, GLfloat z); /* 304 */
+   void (GLAPIENTRYP Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); /* 305 */
+   void (GLAPIENTRYP ArrayElement)(GLint i); /* 306 */
+   void (GLAPIENTRYP BindTexture)(GLenum target, GLuint texture); /* 307 */
+   void (GLAPIENTRYP ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 308 */
+   void (GLAPIENTRYP DisableClientState)(GLenum array); /* 309 */
+   void (GLAPIENTRYP DrawArrays)(GLenum mode, GLint first, GLsizei count); /* 310 */
+   void (GLAPIENTRYP DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices); /* 311 */
+   void (GLAPIENTRYP EdgeFlagPointer)(GLsizei stride, const GLvoid * pointer); /* 312 */
+   void (GLAPIENTRYP EnableClientState)(GLenum array); /* 313 */
+   void (GLAPIENTRYP IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 314 */
+   void (GLAPIENTRYP Indexub)(GLubyte c); /* 315 */
+   void (GLAPIENTRYP Indexubv)(const GLubyte * c); /* 316 */
+   void (GLAPIENTRYP InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer); /* 317 */
+   void (GLAPIENTRYP NormalPointer)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 318 */
+   void (GLAPIENTRYP PolygonOffset)(GLfloat factor, GLfloat units); /* 319 */
+   void (GLAPIENTRYP TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 320 */
+   void (GLAPIENTRYP VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 321 */
+   GLboolean (GLAPIENTRYP AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences); /* 322 */
+   void (GLAPIENTRYP CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 323 */
+   void (GLAPIENTRYP CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 324 */
+   void (GLAPIENTRYP CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 325 */
+   void (GLAPIENTRYP CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 326 */
+   void (GLAPIENTRYP DeleteTextures)(GLsizei n, const GLuint * textures); /* 327 */
+   void (GLAPIENTRYP GenTextures)(GLsizei n, GLuint * textures); /* 328 */
+   void (GLAPIENTRYP GetPointerv)(GLenum pname, GLvoid ** params); /* 329 */
+   GLboolean (GLAPIENTRYP IsTexture)(GLuint texture); /* 330 */
+   void (GLAPIENTRYP PrioritizeTextures)(GLsizei n, const GLuint * textures, const GLclampf * priorities); /* 331 */
+   void (GLAPIENTRYP TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels); /* 332 */
+   void (GLAPIENTRYP TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); /* 333 */
+   void (GLAPIENTRYP PopClientAttrib)(void); /* 334 */
+   void (GLAPIENTRYP PushClientAttrib)(GLbitfield mask); /* 335 */
+   void (GLAPIENTRYP BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 336 */
+   void (GLAPIENTRYP BlendEquation)(GLenum mode); /* 337 */
+   void (GLAPIENTRYP DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices); /* 338 */
+   void (GLAPIENTRYP ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table); /* 339 */
+   void (GLAPIENTRYP ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 340 */
+   void (GLAPIENTRYP ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 341 */
+   void (GLAPIENTRYP CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 342 */
+   void (GLAPIENTRYP GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table); /* 343 */
+   void (GLAPIENTRYP GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 344 */
+   void (GLAPIENTRYP GetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params); /* 345 */
+   void (GLAPIENTRYP ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data); /* 346 */
+   void (GLAPIENTRYP CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); /* 347 */
+   void (GLAPIENTRYP ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image); /* 348 */
+   void (GLAPIENTRYP ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image); /* 349 */
+   void (GLAPIENTRYP ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params); /* 350 */
+   void (GLAPIENTRYP ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 351 */
+   void (GLAPIENTRYP ConvolutionParameteri)(GLenum target, GLenum pname, GLint params); /* 352 */
+   void (GLAPIENTRYP ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 353 */
+   void (GLAPIENTRYP CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 354 */
+   void (GLAPIENTRYP CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 355 */
+   void (GLAPIENTRYP GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image); /* 356 */
+   void (GLAPIENTRYP GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 357 */
+   void (GLAPIENTRYP GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params); /* 358 */
+   void (GLAPIENTRYP GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); /* 359 */
+   void (GLAPIENTRYP SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column); /* 360 */
+   void (GLAPIENTRYP GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 361 */
+   void (GLAPIENTRYP GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 362 */
+   void (GLAPIENTRYP GetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params); /* 363 */
+   void (GLAPIENTRYP GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 364 */
+   void (GLAPIENTRYP GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 365 */
+   void (GLAPIENTRYP GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params); /* 366 */
+   void (GLAPIENTRYP Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); /* 367 */
+   void (GLAPIENTRYP Minmax)(GLenum target, GLenum internalformat, GLboolean sink); /* 368 */
+   void (GLAPIENTRYP ResetHistogram)(GLenum target); /* 369 */
+   void (GLAPIENTRYP ResetMinmax)(GLenum target); /* 370 */
+   void (GLAPIENTRYP TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 371 */
+   void (GLAPIENTRYP TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels); /* 372 */
+   void (GLAPIENTRYP CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 373 */
+   void (GLAPIENTRYP ActiveTextureARB)(GLenum texture); /* 374 */
+   void (GLAPIENTRYP ClientActiveTextureARB)(GLenum texture); /* 375 */
+   void (GLAPIENTRYP MultiTexCoord1dARB)(GLenum target, GLdouble s); /* 376 */
+   void (GLAPIENTRYP MultiTexCoord1dvARB)(GLenum target, const GLdouble * v); /* 377 */
+   void (GLAPIENTRYP MultiTexCoord1fARB)(GLenum target, GLfloat s); /* 378 */
+   void (GLAPIENTRYP MultiTexCoord1fvARB)(GLenum target, const GLfloat * v); /* 379 */
+   void (GLAPIENTRYP MultiTexCoord1iARB)(GLenum target, GLint s); /* 380 */
+   void (GLAPIENTRYP MultiTexCoord1ivARB)(GLenum target, const GLint * v); /* 381 */
+   void (GLAPIENTRYP MultiTexCoord1sARB)(GLenum target, GLshort s); /* 382 */
+   void (GLAPIENTRYP MultiTexCoord1svARB)(GLenum target, const GLshort * v); /* 383 */
+   void (GLAPIENTRYP MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t); /* 384 */
+   void (GLAPIENTRYP MultiTexCoord2dvARB)(GLenum target, const GLdouble * v); /* 385 */
+   void (GLAPIENTRYP MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t); /* 386 */
+   void (GLAPIENTRYP MultiTexCoord2fvARB)(GLenum target, const GLfloat * v); /* 387 */
+   void (GLAPIENTRYP MultiTexCoord2iARB)(GLenum target, GLint s, GLint t); /* 388 */
+   void (GLAPIENTRYP MultiTexCoord2ivARB)(GLenum target, const GLint * v); /* 389 */
+   void (GLAPIENTRYP MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t); /* 390 */
+   void (GLAPIENTRYP MultiTexCoord2svARB)(GLenum target, const GLshort * v); /* 391 */
+   void (GLAPIENTRYP MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r); /* 392 */
+   void (GLAPIENTRYP MultiTexCoord3dvARB)(GLenum target, const GLdouble * v); /* 393 */
+   void (GLAPIENTRYP MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r); /* 394 */
+   void (GLAPIENTRYP MultiTexCoord3fvARB)(GLenum target, const GLfloat * v); /* 395 */
+   void (GLAPIENTRYP MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r); /* 396 */
+   void (GLAPIENTRYP MultiTexCoord3ivARB)(GLenum target, const GLint * v); /* 397 */
+   void (GLAPIENTRYP MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r); /* 398 */
+   void (GLAPIENTRYP MultiTexCoord3svARB)(GLenum target, const GLshort * v); /* 399 */
+   void (GLAPIENTRYP MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 400 */
+   void (GLAPIENTRYP MultiTexCoord4dvARB)(GLenum target, const GLdouble * v); /* 401 */
+   void (GLAPIENTRYP MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 402 */
+   void (GLAPIENTRYP MultiTexCoord4fvARB)(GLenum target, const GLfloat * v); /* 403 */
+   void (GLAPIENTRYP MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q); /* 404 */
+   void (GLAPIENTRYP MultiTexCoord4ivARB)(GLenum target, const GLint * v); /* 405 */
+   void (GLAPIENTRYP MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); /* 406 */
+   void (GLAPIENTRYP MultiTexCoord4svARB)(GLenum target, const GLshort * v); /* 407 */
+   void (GLAPIENTRYP AttachShader)(GLuint program, GLuint shader); /* 408 */
+   GLuint (GLAPIENTRYP CreateProgram)(void); /* 409 */
+   GLuint (GLAPIENTRYP CreateShader)(GLenum type); /* 410 */
+   void (GLAPIENTRYP DeleteProgram)(GLuint program); /* 411 */
+   void (GLAPIENTRYP DeleteShader)(GLuint program); /* 412 */
+   void (GLAPIENTRYP DetachShader)(GLuint program, GLuint shader); /* 413 */
+   void (GLAPIENTRYP GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj); /* 414 */
+   void (GLAPIENTRYP GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); /* 415 */
+   void (GLAPIENTRYP GetProgramiv)(GLuint program, GLenum pname, GLint * params); /* 416 */
+   void (GLAPIENTRYP GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); /* 417 */
+   void (GLAPIENTRYP GetShaderiv)(GLuint shader, GLenum pname, GLint * params); /* 418 */
+   GLboolean (GLAPIENTRYP IsProgram)(GLuint program); /* 419 */
+   GLboolean (GLAPIENTRYP IsShader)(GLuint shader); /* 420 */
+   void (GLAPIENTRYP StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); /* 421 */
+   void (GLAPIENTRYP StencilMaskSeparate)(GLenum face, GLuint mask); /* 422 */
+   void (GLAPIENTRYP StencilOpSeparate)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass); /* 423 */
+   void (GLAPIENTRYP UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 424 */
+   void (GLAPIENTRYP UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 425 */
+   void (GLAPIENTRYP UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 426 */
+   void (GLAPIENTRYP UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 427 */
+   void (GLAPIENTRYP UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 428 */
+   void (GLAPIENTRYP UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 429 */
+   void (GLAPIENTRYP DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 430 */
+   void (GLAPIENTRYP DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); /* 431 */
+   void (GLAPIENTRYP LoadTransposeMatrixdARB)(const GLdouble * m); /* 432 */
+   void (GLAPIENTRYP LoadTransposeMatrixfARB)(const GLfloat * m); /* 433 */
+   void (GLAPIENTRYP MultTransposeMatrixdARB)(const GLdouble * m); /* 434 */
+   void (GLAPIENTRYP MultTransposeMatrixfARB)(const GLfloat * m); /* 435 */
+   void (GLAPIENTRYP SampleCoverageARB)(GLclampf value, GLboolean invert); /* 436 */
+   void (GLAPIENTRYP CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data); /* 437 */
+   void (GLAPIENTRYP CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data); /* 438 */
+   void (GLAPIENTRYP CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); /* 439 */
+   void (GLAPIENTRYP CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data); /* 440 */
+   void (GLAPIENTRYP CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data); /* 441 */
+   void (GLAPIENTRYP CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data); /* 442 */
+   void (GLAPIENTRYP GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img); /* 443 */
+   void (GLAPIENTRYP DisableVertexAttribArrayARB)(GLuint index); /* 444 */
+   void (GLAPIENTRYP EnableVertexAttribArrayARB)(GLuint index); /* 445 */
+   void (GLAPIENTRYP GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 446 */
+   void (GLAPIENTRYP GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 447 */
+   void (GLAPIENTRYP GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 448 */
+   void (GLAPIENTRYP GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 449 */
+   void (GLAPIENTRYP GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string); /* 450 */
+   void (GLAPIENTRYP GetProgramivARB)(GLenum target, GLenum pname, GLint * params); /* 451 */
+   void (GLAPIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params); /* 452 */
+   void (GLAPIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params); /* 453 */
+   void (GLAPIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params); /* 454 */
+   void (GLAPIENTRYP ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 455 */
+   void (GLAPIENTRYP ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 456 */
+   void (GLAPIENTRYP ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 457 */
+   void (GLAPIENTRYP ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 458 */
+   void (GLAPIENTRYP ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 459 */
+   void (GLAPIENTRYP ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 460 */
+   void (GLAPIENTRYP ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 461 */
+   void (GLAPIENTRYP ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 462 */
+   void (GLAPIENTRYP ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string); /* 463 */
+   void (GLAPIENTRYP VertexAttrib1dARB)(GLuint index, GLdouble x); /* 464 */
+   void (GLAPIENTRYP VertexAttrib1dvARB)(GLuint index, const GLdouble * v); /* 465 */
+   void (GLAPIENTRYP VertexAttrib1fARB)(GLuint index, GLfloat x); /* 466 */
+   void (GLAPIENTRYP VertexAttrib1fvARB)(GLuint index, const GLfloat * v); /* 467 */
+   void (GLAPIENTRYP VertexAttrib1sARB)(GLuint index, GLshort x); /* 468 */
+   void (GLAPIENTRYP VertexAttrib1svARB)(GLuint index, const GLshort * v); /* 469 */
+   void (GLAPIENTRYP VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); /* 470 */
+   void (GLAPIENTRYP VertexAttrib2dvARB)(GLuint index, const GLdouble * v); /* 471 */
+   void (GLAPIENTRYP VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); /* 472 */
+   void (GLAPIENTRYP VertexAttrib2fvARB)(GLuint index, const GLfloat * v); /* 473 */
+   void (GLAPIENTRYP VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y); /* 474 */
+   void (GLAPIENTRYP VertexAttrib2svARB)(GLuint index, const GLshort * v); /* 475 */
+   void (GLAPIENTRYP VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 476 */
+   void (GLAPIENTRYP VertexAttrib3dvARB)(GLuint index, const GLdouble * v); /* 477 */
+   void (GLAPIENTRYP VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 478 */
+   void (GLAPIENTRYP VertexAttrib3fvARB)(GLuint index, const GLfloat * v); /* 479 */
+   void (GLAPIENTRYP VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z); /* 480 */
+   void (GLAPIENTRYP VertexAttrib3svARB)(GLuint index, const GLshort * v); /* 481 */
+   void (GLAPIENTRYP VertexAttrib4NbvARB)(GLuint index, const GLbyte * v); /* 482 */
+   void (GLAPIENTRYP VertexAttrib4NivARB)(GLuint index, const GLint * v); /* 483 */
+   void (GLAPIENTRYP VertexAttrib4NsvARB)(GLuint index, const GLshort * v); /* 484 */
+   void (GLAPIENTRYP VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 485 */
+   void (GLAPIENTRYP VertexAttrib4NubvARB)(GLuint index, const GLubyte * v); /* 486 */
+   void (GLAPIENTRYP VertexAttrib4NuivARB)(GLuint index, const GLuint * v); /* 487 */
+   void (GLAPIENTRYP VertexAttrib4NusvARB)(GLuint index, const GLushort * v); /* 488 */
+   void (GLAPIENTRYP VertexAttrib4bvARB)(GLuint index, const GLbyte * v); /* 489 */
+   void (GLAPIENTRYP VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 490 */
+   void (GLAPIENTRYP VertexAttrib4dvARB)(GLuint index, const GLdouble * v); /* 491 */
+   void (GLAPIENTRYP VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 492 */
+   void (GLAPIENTRYP VertexAttrib4fvARB)(GLuint index, const GLfloat * v); /* 493 */
+   void (GLAPIENTRYP VertexAttrib4ivARB)(GLuint index, const GLint * v); /* 494 */
+   void (GLAPIENTRYP VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 495 */
+   void (GLAPIENTRYP VertexAttrib4svARB)(GLuint index, const GLshort * v); /* 496 */
+   void (GLAPIENTRYP VertexAttrib4ubvARB)(GLuint index, const GLubyte * v); /* 497 */
+   void (GLAPIENTRYP VertexAttrib4uivARB)(GLuint index, const GLuint * v); /* 498 */
+   void (GLAPIENTRYP VertexAttrib4usvARB)(GLuint index, const GLushort * v); /* 499 */
+   void (GLAPIENTRYP VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); /* 500 */
+   void (GLAPIENTRYP BindBufferARB)(GLenum target, GLuint buffer); /* 501 */
+   void (GLAPIENTRYP BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); /* 502 */
+   void (GLAPIENTRYP BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data); /* 503 */
+   void (GLAPIENTRYP DeleteBuffersARB)(GLsizei n, const GLuint * buffer); /* 504 */
+   void (GLAPIENTRYP GenBuffersARB)(GLsizei n, GLuint * buffer); /* 505 */
+   void (GLAPIENTRYP GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params); /* 506 */
+   void (GLAPIENTRYP GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params); /* 507 */
+   void (GLAPIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); /* 508 */
+   GLboolean (GLAPIENTRYP IsBufferARB)(GLuint buffer); /* 509 */
+   GLvoid * (GLAPIENTRYP MapBufferARB)(GLenum target, GLenum access); /* 510 */
+   GLboolean (GLAPIENTRYP UnmapBufferARB)(GLenum target); /* 511 */
+   void (GLAPIENTRYP BeginQueryARB)(GLenum target, GLuint id); /* 512 */
+   void (GLAPIENTRYP DeleteQueriesARB)(GLsizei n, const GLuint * ids); /* 513 */
+   void (GLAPIENTRYP EndQueryARB)(GLenum target); /* 514 */
+   void (GLAPIENTRYP GenQueriesARB)(GLsizei n, GLuint * ids); /* 515 */
+   void (GLAPIENTRYP GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params); /* 516 */
+   void (GLAPIENTRYP GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params); /* 517 */
+   void (GLAPIENTRYP GetQueryivARB)(GLenum target, GLenum pname, GLint * params); /* 518 */
+   GLboolean (GLAPIENTRYP IsQueryARB)(GLuint id); /* 519 */
+   void (GLAPIENTRYP AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); /* 520 */
+   void (GLAPIENTRYP CompileShaderARB)(GLhandleARB shader); /* 521 */
+   GLhandleARB (GLAPIENTRYP CreateProgramObjectARB)(void); /* 522 */
+   GLhandleARB (GLAPIENTRYP CreateShaderObjectARB)(GLenum shaderType); /* 523 */
+   void (GLAPIENTRYP DeleteObjectARB)(GLhandleARB obj); /* 524 */
+   void (GLAPIENTRYP DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); /* 525 */
+   void (GLAPIENTRYP GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 526 */
+   void (GLAPIENTRYP GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog); /* 527 */
+   GLhandleARB (GLAPIENTRYP GetHandleARB)(GLenum pname); /* 528 */
+   void (GLAPIENTRYP GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog); /* 529 */
+   void (GLAPIENTRYP GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params); /* 530 */
+   void (GLAPIENTRYP GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params); /* 531 */
+   void (GLAPIENTRYP GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source); /* 532 */
+   GLint (GLAPIENTRYP GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name); /* 533 */
+   void (GLAPIENTRYP GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params); /* 534 */
+   void (GLAPIENTRYP GetUniformivARB)(GLhandleARB program, GLint location, GLint * params); /* 535 */
+   void (GLAPIENTRYP LinkProgramARB)(GLhandleARB program); /* 536 */
+   void (GLAPIENTRYP ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length); /* 537 */
+   void (GLAPIENTRYP Uniform1fARB)(GLint location, GLfloat v0); /* 538 */
+   void (GLAPIENTRYP Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 539 */
+   void (GLAPIENTRYP Uniform1iARB)(GLint location, GLint v0); /* 540 */
+   void (GLAPIENTRYP Uniform1ivARB)(GLint location, GLsizei count, const GLint * value); /* 541 */
+   void (GLAPIENTRYP Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); /* 542 */
+   void (GLAPIENTRYP Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 543 */
+   void (GLAPIENTRYP Uniform2iARB)(GLint location, GLint v0, GLint v1); /* 544 */
+   void (GLAPIENTRYP Uniform2ivARB)(GLint location, GLsizei count, const GLint * value); /* 545 */
+   void (GLAPIENTRYP Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 546 */
+   void (GLAPIENTRYP Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 547 */
+   void (GLAPIENTRYP Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); /* 548 */
+   void (GLAPIENTRYP Uniform3ivARB)(GLint location, GLsizei count, const GLint * value); /* 549 */
+   void (GLAPIENTRYP Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 550 */
+   void (GLAPIENTRYP Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 551 */
+   void (GLAPIENTRYP Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 552 */
+   void (GLAPIENTRYP Uniform4ivARB)(GLint location, GLsizei count, const GLint * value); /* 553 */
+   void (GLAPIENTRYP UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 554 */
+   void (GLAPIENTRYP UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 555 */
+   void (GLAPIENTRYP UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 556 */
+   void (GLAPIENTRYP UseProgramObjectARB)(GLhandleARB program); /* 557 */
+   void (GLAPIENTRYP ValidateProgramARB)(GLhandleARB program); /* 558 */
+   void (GLAPIENTRYP BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name); /* 559 */
+   void (GLAPIENTRYP GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 560 */
+   GLint (GLAPIENTRYP GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name); /* 561 */
+   void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 562 */
+   void (GLAPIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 563 */
+   void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 564 */
+   GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 565 */
+   void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 566 */
+   void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 567 */
+   void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 568 */
+   GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 569 */
+   void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 570 */
+   GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 571 */
+   void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 572 */
+   void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 573 */
+   GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 574 */
+   void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 575 */
+   void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 576 */
+   void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 577 */
+   void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 578 */
+   void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 579 */
+   void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 580 */
+   void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 581 */
+   void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 582 */
+   void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 583 */
+   void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 584 */
+   void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 585 */
+   void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 586 */
+   void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 587 */
+   void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 588 */
+   void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 589 */
+   void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 590 */
+   void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 591 */
+   void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 592 */
+   void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 593 */
+   void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 594 */
+   void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 595 */
+   void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 596 */
+   void (GLAPIENTRYP UnlockArraysEXT)(void); /* 597 */
+   void (GLAPIENTRYP CullParameterdvEXT)(GLenum pname, GLdouble * params); /* 598 */
+   void (GLAPIENTRYP CullParameterfvEXT)(GLenum pname, GLfloat * params); /* 599 */
+   void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 600 */
+   void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 601 */
+   void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 602 */
+   void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 603 */
+   void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 604 */
+   void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 605 */
+   void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 606 */
+   void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 607 */
+   void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 608 */
+   void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 609 */
+   void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 610 */
+   void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 611 */
+   void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 612 */
+   void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 613 */
+   void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 614 */
+   void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 615 */
+   void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 616 */
+   void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount); /* 617 */
+   void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 618 */
+   void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 619 */
+   void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 620 */
+   void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 621 */
+   void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 622 */
+   void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 623 */
+   void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 624 */
+   void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 625 */
+   void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 626 */
+   void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 627 */
+   void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 628 */
+   void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 629 */
+   void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 630 */
+   void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 631 */
+   void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 632 */
+   void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 633 */
+   void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 634 */
+   void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 635 */
+   void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 636 */
+   void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 637 */
+   void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 638 */
+   void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 639 */
+   void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 640 */
+   void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 641 */
+   void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 642 */
+   void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 643 */
+   void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 644 */
+   void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 645 */
+   void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 646 */
+   void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 647 */
+   void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 648 */
+   void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 649 */
+   void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 650 */
+   void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 651 */
+   void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 652 */
+   void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 653 */
+   void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 654 */
+   void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 655 */
+   void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 656 */
+   void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 657 */
+   void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 658 */
+   void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 659 */
+   void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 660 */
+   void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 661 */
+   void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 662 */
+   void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 663 */
+   void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 664 */
+   void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 665 */
+   void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 666 */
+   void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 667 */
+   void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 668 */
+   void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 669 */
+   void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 670 */
+   void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 671 */
+   GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 672 */
+   void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 673 */
+   GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 674 */
+   GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 675 */
+   void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 676 */
+   void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 677 */
+   void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 678 */
+   void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 679 */
+   void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 680 */
+   void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 681 */
+   void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 682 */
+   void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 683 */
+   void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 684 */
+   void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 685 */
+   void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 686 */
+   void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 687 */
+   void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 688 */
+   GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 689 */
+   void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 690 */
+   void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params); /* 691 */
+   void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params); /* 692 */
+   void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 693 */
+   void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 694 */
+   void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 695 */
+   void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 696 */
+   void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 697 */
+   void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 698 */
+   void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 699 */
+   void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 700 */
+   void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 701 */
+   void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 702 */
+   void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 703 */
+   void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 704 */
+   void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 705 */
+   void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 706 */
+   void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 707 */
+   void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 708 */
+   void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 709 */
+   void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 710 */
+   void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 711 */
+   void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 712 */
+   void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 713 */
+   void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 714 */
+   void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 715 */
+   void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 716 */
+   void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 717 */
+   void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 718 */
+   void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 719 */
+   void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 720 */
+   void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 721 */
+   void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 722 */
+   void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 723 */
+   void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 724 */
+   void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 725 */
+   void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 726 */
+   void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 727 */
+   void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 728 */
+   void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 729 */
+   void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 730 */
+   void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 731 */
+   void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 732 */
+   void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 733 */
+   void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 734 */
+   void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 735 */
+   void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 736 */
+   void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 737 */
+   void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 738 */
+   void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 739 */
+   void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 740 */
+   void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 741 */
+   void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 742 */
+   void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 743 */
+   void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 744 */
+   void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 745 */
+   void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 746 */
+   void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 747 */
+   void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 748 */
+   GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 749 */
+   void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 750 */
+   void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 751 */
+   void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 752 */
+   void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 753 */
+   void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 754 */
+   void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 755 */
+   void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 756 */
+   void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 757 */
+   void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 758 */
+   GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 759 */
+   void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 760 */
+   void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 761 */
+   void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 762 */
+   void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 763 */
+   void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 764 */
+   void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 765 */
+   void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 766 */
+   void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 767 */
+   void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 768 */
+   void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 769 */
+   GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 770 */
+   void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 771 */
+   void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 772 */
+   void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 773 */
+   void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 774 */
+   void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 775 */
+   void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 776 */
+   void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 777 */
+   void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 778 */
+   void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 779 */
+   void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 780 */
+   void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 781 */
+   GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 782 */
+   GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 783 */
+   void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 784 */
+   void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 785 */
+   void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 786 */
+   void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 787 */
+   void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 788 */
+   void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 789 */
+   void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 790 */
+   void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 791 */
+   void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 792 */
+   void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 793 */
+   GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 794 */
+   void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 795 */
+   void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 796 */
+   void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 797 */
+   void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 798 */
+   void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 799 */
+   void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 800 */
+   void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 801 */
+   void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 802 */
+   void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 803 */
+   void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 804 */
+   void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 805 */
+   void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 806 */
+   void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 807 */
+   GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 808 */
+   GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 809 */
+   void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 810 */
+   void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 811 */
+   void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 812 */
+   void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 813 */
+   void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 814 */
+   void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 815 */
+   void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 816 */
+};
+
+#endif /* !defined( _GLAPI_TABLE_H_ ) */
diff --git a/src/mapi/glapi/glapitemp.h b/src/mapi/glapi/glapitemp.h
new file mode 100644 (file)
index 0000000..92835b9
--- /dev/null
@@ -0,0 +1,7144 @@
+/* DO NOT EDIT - This file generated automatically by gl_apitemp.py (from Mesa) script */
+
+/*
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ * (C) Copyright IBM Corporation 2004
+ * 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
+ * BRIAN PAUL, 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.
+ */
+
+
+#  if (defined(__GNUC__) && !defined(__MINGW32__)) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) && defined(__ELF__)
+#    define HIDDEN  __attribute__((visibility("hidden")))
+#  else
+#    define HIDDEN
+#  endif
+
+/*
+ * This file is a template which generates the OpenGL API entry point
+ * functions.  It should be included by a .c file which first defines
+ * the following macros:
+ *   KEYWORD1 - usually nothing, but might be __declspec(dllexport) on Win32
+ *   KEYWORD2 - usually nothing, but might be __stdcall on Win32
+ *   NAME(n)  - builds the final function name (usually add "gl" prefix)
+ *   DISPATCH(func, args, msg) - code to do dispatch of named function.
+ *                               msg is a printf-style debug message.
+ *   RETURN_DISPATCH(func, args, msg) - code to do dispatch with a return value
+ *
+ * Here is an example which generates the usual OpenGL functions:
+ *   #define KEYWORD1
+ *   #define KEYWORD2
+ *   #define NAME(func)  gl##func
+ *   #define DISPATCH(func, args, msg)                           \
+ *          struct _glapi_table *dispatch = CurrentDispatch;     \
+ *          (*dispatch->func) args
+ *   #define RETURN DISPATCH(func, args, msg)                    \
+ *          struct _glapi_table *dispatch = CurrentDispatch;     \
+ *          return (*dispatch->func) args
+ *
+ */
+
+
+#if defined( NAME )
+#ifndef KEYWORD1
+#define KEYWORD1
+#endif
+
+#ifndef KEYWORD1_ALT
+#define KEYWORD1_ALT HIDDEN
+#endif
+
+#ifndef KEYWORD2
+#define KEYWORD2
+#endif
+
+#ifndef DISPATCH
+#error DISPATCH must be defined
+#endif
+
+#ifndef RETURN_DISPATCH
+#error RETURN_DISPATCH must be defined
+#endif
+
+
+#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
+
+KEYWORD1 void KEYWORD2 NAME(NewList)(GLuint list, GLenum mode)
+{
+   DISPATCH(NewList, (list, mode), (F, "glNewList(%d, 0x%x);\n", list, mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EndList)(void)
+{
+   DISPATCH(EndList, (), (F, "glEndList();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CallList)(GLuint list)
+{
+   DISPATCH(CallList, (list), (F, "glCallList(%d);\n", list));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CallLists)(GLsizei n, GLenum type, const GLvoid * lists)
+{
+   DISPATCH(CallLists, (n, type, lists), (F, "glCallLists(%d, 0x%x, %p);\n", n, type, (const void *) lists));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteLists)(GLuint list, GLsizei range)
+{
+   DISPATCH(DeleteLists, (list, range), (F, "glDeleteLists(%d, %d);\n", list, range));
+}
+
+KEYWORD1 GLuint KEYWORD2 NAME(GenLists)(GLsizei range)
+{
+   RETURN_DISPATCH(GenLists, (range), (F, "glGenLists(%d);\n", range));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ListBase)(GLuint base)
+{
+   DISPATCH(ListBase, (base), (F, "glListBase(%d);\n", base));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Begin)(GLenum mode)
+{
+   DISPATCH(Begin, (mode), (F, "glBegin(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap)
+{
+   DISPATCH(Bitmap, (width, height, xorig, yorig, xmove, ymove, bitmap), (F, "glBitmap(%d, %d, %f, %f, %f, %f, %p);\n", width, height, xorig, yorig, xmove, ymove, (const void *) bitmap));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3b)(GLbyte red, GLbyte green, GLbyte blue)
+{
+   DISPATCH(Color3b, (red, green, blue), (F, "glColor3b(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3bv)(const GLbyte * v)
+{
+   DISPATCH(Color3bv, (v), (F, "glColor3bv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3d)(GLdouble red, GLdouble green, GLdouble blue)
+{
+   DISPATCH(Color3d, (red, green, blue), (F, "glColor3d(%f, %f, %f);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3dv)(const GLdouble * v)
+{
+   DISPATCH(Color3dv, (v), (F, "glColor3dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3f)(GLfloat red, GLfloat green, GLfloat blue)
+{
+   DISPATCH(Color3f, (red, green, blue), (F, "glColor3f(%f, %f, %f);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3fv)(const GLfloat * v)
+{
+   DISPATCH(Color3fv, (v), (F, "glColor3fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3i)(GLint red, GLint green, GLint blue)
+{
+   DISPATCH(Color3i, (red, green, blue), (F, "glColor3i(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3iv)(const GLint * v)
+{
+   DISPATCH(Color3iv, (v), (F, "glColor3iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3s)(GLshort red, GLshort green, GLshort blue)
+{
+   DISPATCH(Color3s, (red, green, blue), (F, "glColor3s(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3sv)(const GLshort * v)
+{
+   DISPATCH(Color3sv, (v), (F, "glColor3sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3ub)(GLubyte red, GLubyte green, GLubyte blue)
+{
+   DISPATCH(Color3ub, (red, green, blue), (F, "glColor3ub(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3ubv)(const GLubyte * v)
+{
+   DISPATCH(Color3ubv, (v), (F, "glColor3ubv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3ui)(GLuint red, GLuint green, GLuint blue)
+{
+   DISPATCH(Color3ui, (red, green, blue), (F, "glColor3ui(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3uiv)(const GLuint * v)
+{
+   DISPATCH(Color3uiv, (v), (F, "glColor3uiv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3us)(GLushort red, GLushort green, GLushort blue)
+{
+   DISPATCH(Color3us, (red, green, blue), (F, "glColor3us(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color3usv)(const GLushort * v)
+{
+   DISPATCH(Color3usv, (v), (F, "glColor3usv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
+{
+   DISPATCH(Color4b, (red, green, blue, alpha), (F, "glColor4b(%d, %d, %d, %d);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4bv)(const GLbyte * v)
+{
+   DISPATCH(Color4bv, (v), (F, "glColor4bv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
+{
+   DISPATCH(Color4d, (red, green, blue, alpha), (F, "glColor4d(%f, %f, %f, %f);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4dv)(const GLdouble * v)
+{
+   DISPATCH(Color4dv, (v), (F, "glColor4dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
+{
+   DISPATCH(Color4f, (red, green, blue, alpha), (F, "glColor4f(%f, %f, %f, %f);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4fv)(const GLfloat * v)
+{
+   DISPATCH(Color4fv, (v), (F, "glColor4fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4i)(GLint red, GLint green, GLint blue, GLint alpha)
+{
+   DISPATCH(Color4i, (red, green, blue, alpha), (F, "glColor4i(%d, %d, %d, %d);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4iv)(const GLint * v)
+{
+   DISPATCH(Color4iv, (v), (F, "glColor4iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha)
+{
+   DISPATCH(Color4s, (red, green, blue, alpha), (F, "glColor4s(%d, %d, %d, %d);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4sv)(const GLshort * v)
+{
+   DISPATCH(Color4sv, (v), (F, "glColor4sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
+{
+   DISPATCH(Color4ub, (red, green, blue, alpha), (F, "glColor4ub(%d, %d, %d, %d);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4ubv)(const GLubyte * v)
+{
+   DISPATCH(Color4ubv, (v), (F, "glColor4ubv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha)
+{
+   DISPATCH(Color4ui, (red, green, blue, alpha), (F, "glColor4ui(%d, %d, %d, %d);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4uiv)(const GLuint * v)
+{
+   DISPATCH(Color4uiv, (v), (F, "glColor4uiv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha)
+{
+   DISPATCH(Color4us, (red, green, blue, alpha), (F, "glColor4us(%d, %d, %d, %d);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Color4usv)(const GLushort * v)
+{
+   DISPATCH(Color4usv, (v), (F, "glColor4usv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EdgeFlag)(GLboolean flag)
+{
+   DISPATCH(EdgeFlag, (flag), (F, "glEdgeFlag(%d);\n", flag));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EdgeFlagv)(const GLboolean * flag)
+{
+   DISPATCH(EdgeFlagv, (flag), (F, "glEdgeFlagv(%p);\n", (const void *) flag));
+}
+
+KEYWORD1 void KEYWORD2 NAME(End)(void)
+{
+   DISPATCH(End, (), (F, "glEnd();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexd)(GLdouble c)
+{
+   DISPATCH(Indexd, (c), (F, "glIndexd(%f);\n", c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexdv)(const GLdouble * c)
+{
+   DISPATCH(Indexdv, (c), (F, "glIndexdv(%p);\n", (const void *) c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexf)(GLfloat c)
+{
+   DISPATCH(Indexf, (c), (F, "glIndexf(%f);\n", c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexfv)(const GLfloat * c)
+{
+   DISPATCH(Indexfv, (c), (F, "glIndexfv(%p);\n", (const void *) c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexi)(GLint c)
+{
+   DISPATCH(Indexi, (c), (F, "glIndexi(%d);\n", c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexiv)(const GLint * c)
+{
+   DISPATCH(Indexiv, (c), (F, "glIndexiv(%p);\n", (const void *) c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexs)(GLshort c)
+{
+   DISPATCH(Indexs, (c), (F, "glIndexs(%d);\n", c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexsv)(const GLshort * c)
+{
+   DISPATCH(Indexsv, (c), (F, "glIndexsv(%p);\n", (const void *) c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz)
+{
+   DISPATCH(Normal3b, (nx, ny, nz), (F, "glNormal3b(%d, %d, %d);\n", nx, ny, nz));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3bv)(const GLbyte * v)
+{
+   DISPATCH(Normal3bv, (v), (F, "glNormal3bv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz)
+{
+   DISPATCH(Normal3d, (nx, ny, nz), (F, "glNormal3d(%f, %f, %f);\n", nx, ny, nz));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3dv)(const GLdouble * v)
+{
+   DISPATCH(Normal3dv, (v), (F, "glNormal3dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz)
+{
+   DISPATCH(Normal3f, (nx, ny, nz), (F, "glNormal3f(%f, %f, %f);\n", nx, ny, nz));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3fv)(const GLfloat * v)
+{
+   DISPATCH(Normal3fv, (v), (F, "glNormal3fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3i)(GLint nx, GLint ny, GLint nz)
+{
+   DISPATCH(Normal3i, (nx, ny, nz), (F, "glNormal3i(%d, %d, %d);\n", nx, ny, nz));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3iv)(const GLint * v)
+{
+   DISPATCH(Normal3iv, (v), (F, "glNormal3iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3s)(GLshort nx, GLshort ny, GLshort nz)
+{
+   DISPATCH(Normal3s, (nx, ny, nz), (F, "glNormal3s(%d, %d, %d);\n", nx, ny, nz));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Normal3sv)(const GLshort * v)
+{
+   DISPATCH(Normal3sv, (v), (F, "glNormal3sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2d)(GLdouble x, GLdouble y)
+{
+   DISPATCH(RasterPos2d, (x, y), (F, "glRasterPos2d(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2dv)(const GLdouble * v)
+{
+   DISPATCH(RasterPos2dv, (v), (F, "glRasterPos2dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2f)(GLfloat x, GLfloat y)
+{
+   DISPATCH(RasterPos2f, (x, y), (F, "glRasterPos2f(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2fv)(const GLfloat * v)
+{
+   DISPATCH(RasterPos2fv, (v), (F, "glRasterPos2fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2i)(GLint x, GLint y)
+{
+   DISPATCH(RasterPos2i, (x, y), (F, "glRasterPos2i(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2iv)(const GLint * v)
+{
+   DISPATCH(RasterPos2iv, (v), (F, "glRasterPos2iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2s)(GLshort x, GLshort y)
+{
+   DISPATCH(RasterPos2s, (x, y), (F, "glRasterPos2s(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos2sv)(const GLshort * v)
+{
+   DISPATCH(RasterPos2sv, (v), (F, "glRasterPos2sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3d)(GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(RasterPos3d, (x, y, z), (F, "glRasterPos3d(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3dv)(const GLdouble * v)
+{
+   DISPATCH(RasterPos3dv, (v), (F, "glRasterPos3dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3f)(GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(RasterPos3f, (x, y, z), (F, "glRasterPos3f(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3fv)(const GLfloat * v)
+{
+   DISPATCH(RasterPos3fv, (v), (F, "glRasterPos3fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3i)(GLint x, GLint y, GLint z)
+{
+   DISPATCH(RasterPos3i, (x, y, z), (F, "glRasterPos3i(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3iv)(const GLint * v)
+{
+   DISPATCH(RasterPos3iv, (v), (F, "glRasterPos3iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3s)(GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(RasterPos3s, (x, y, z), (F, "glRasterPos3s(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos3sv)(const GLshort * v)
+{
+   DISPATCH(RasterPos3sv, (v), (F, "glRasterPos3sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(RasterPos4d, (x, y, z, w), (F, "glRasterPos4d(%f, %f, %f, %f);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4dv)(const GLdouble * v)
+{
+   DISPATCH(RasterPos4dv, (v), (F, "glRasterPos4dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(RasterPos4f, (x, y, z, w), (F, "glRasterPos4f(%f, %f, %f, %f);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4fv)(const GLfloat * v)
+{
+   DISPATCH(RasterPos4fv, (v), (F, "glRasterPos4fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4i)(GLint x, GLint y, GLint z, GLint w)
+{
+   DISPATCH(RasterPos4i, (x, y, z, w), (F, "glRasterPos4i(%d, %d, %d, %d);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4iv)(const GLint * v)
+{
+   DISPATCH(RasterPos4iv, (v), (F, "glRasterPos4iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   DISPATCH(RasterPos4s, (x, y, z, w), (F, "glRasterPos4s(%d, %d, %d, %d);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RasterPos4sv)(const GLshort * v)
+{
+   DISPATCH(RasterPos4sv, (v), (F, "glRasterPos4sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
+{
+   DISPATCH(Rectd, (x1, y1, x2, y2), (F, "glRectd(%f, %f, %f, %f);\n", x1, y1, x2, y2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rectdv)(const GLdouble * v1, const GLdouble * v2)
+{
+   DISPATCH(Rectdv, (v1, v2), (F, "glRectdv(%p, %p);\n", (const void *) v1, (const void *) v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
+{
+   DISPATCH(Rectf, (x1, y1, x2, y2), (F, "glRectf(%f, %f, %f, %f);\n", x1, y1, x2, y2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rectfv)(const GLfloat * v1, const GLfloat * v2)
+{
+   DISPATCH(Rectfv, (v1, v2), (F, "glRectfv(%p, %p);\n", (const void *) v1, (const void *) v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Recti)(GLint x1, GLint y1, GLint x2, GLint y2)
+{
+   DISPATCH(Recti, (x1, y1, x2, y2), (F, "glRecti(%d, %d, %d, %d);\n", x1, y1, x2, y2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rectiv)(const GLint * v1, const GLint * v2)
+{
+   DISPATCH(Rectiv, (v1, v2), (F, "glRectiv(%p, %p);\n", (const void *) v1, (const void *) v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
+{
+   DISPATCH(Rects, (x1, y1, x2, y2), (F, "glRects(%d, %d, %d, %d);\n", x1, y1, x2, y2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rectsv)(const GLshort * v1, const GLshort * v2)
+{
+   DISPATCH(Rectsv, (v1, v2), (F, "glRectsv(%p, %p);\n", (const void *) v1, (const void *) v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1d)(GLdouble s)
+{
+   DISPATCH(TexCoord1d, (s), (F, "glTexCoord1d(%f);\n", s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1dv)(const GLdouble * v)
+{
+   DISPATCH(TexCoord1dv, (v), (F, "glTexCoord1dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1f)(GLfloat s)
+{
+   DISPATCH(TexCoord1f, (s), (F, "glTexCoord1f(%f);\n", s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1fv)(const GLfloat * v)
+{
+   DISPATCH(TexCoord1fv, (v), (F, "glTexCoord1fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1i)(GLint s)
+{
+   DISPATCH(TexCoord1i, (s), (F, "glTexCoord1i(%d);\n", s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1iv)(const GLint * v)
+{
+   DISPATCH(TexCoord1iv, (v), (F, "glTexCoord1iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1s)(GLshort s)
+{
+   DISPATCH(TexCoord1s, (s), (F, "glTexCoord1s(%d);\n", s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord1sv)(const GLshort * v)
+{
+   DISPATCH(TexCoord1sv, (v), (F, "glTexCoord1sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2d)(GLdouble s, GLdouble t)
+{
+   DISPATCH(TexCoord2d, (s, t), (F, "glTexCoord2d(%f, %f);\n", s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2dv)(const GLdouble * v)
+{
+   DISPATCH(TexCoord2dv, (v), (F, "glTexCoord2dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2f)(GLfloat s, GLfloat t)
+{
+   DISPATCH(TexCoord2f, (s, t), (F, "glTexCoord2f(%f, %f);\n", s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2fv)(const GLfloat * v)
+{
+   DISPATCH(TexCoord2fv, (v), (F, "glTexCoord2fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2i)(GLint s, GLint t)
+{
+   DISPATCH(TexCoord2i, (s, t), (F, "glTexCoord2i(%d, %d);\n", s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2iv)(const GLint * v)
+{
+   DISPATCH(TexCoord2iv, (v), (F, "glTexCoord2iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2s)(GLshort s, GLshort t)
+{
+   DISPATCH(TexCoord2s, (s, t), (F, "glTexCoord2s(%d, %d);\n", s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord2sv)(const GLshort * v)
+{
+   DISPATCH(TexCoord2sv, (v), (F, "glTexCoord2sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r)
+{
+   DISPATCH(TexCoord3d, (s, t, r), (F, "glTexCoord3d(%f, %f, %f);\n", s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3dv)(const GLdouble * v)
+{
+   DISPATCH(TexCoord3dv, (v), (F, "glTexCoord3dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3f)(GLfloat s, GLfloat t, GLfloat r)
+{
+   DISPATCH(TexCoord3f, (s, t, r), (F, "glTexCoord3f(%f, %f, %f);\n", s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3fv)(const GLfloat * v)
+{
+   DISPATCH(TexCoord3fv, (v), (F, "glTexCoord3fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3i)(GLint s, GLint t, GLint r)
+{
+   DISPATCH(TexCoord3i, (s, t, r), (F, "glTexCoord3i(%d, %d, %d);\n", s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3iv)(const GLint * v)
+{
+   DISPATCH(TexCoord3iv, (v), (F, "glTexCoord3iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3s)(GLshort s, GLshort t, GLshort r)
+{
+   DISPATCH(TexCoord3s, (s, t, r), (F, "glTexCoord3s(%d, %d, %d);\n", s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord3sv)(const GLshort * v)
+{
+   DISPATCH(TexCoord3sv, (v), (F, "glTexCoord3sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+{
+   DISPATCH(TexCoord4d, (s, t, r, q), (F, "glTexCoord4d(%f, %f, %f, %f);\n", s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4dv)(const GLdouble * v)
+{
+   DISPATCH(TexCoord4dv, (v), (F, "glTexCoord4dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+{
+   DISPATCH(TexCoord4f, (s, t, r, q), (F, "glTexCoord4f(%f, %f, %f, %f);\n", s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4fv)(const GLfloat * v)
+{
+   DISPATCH(TexCoord4fv, (v), (F, "glTexCoord4fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4i)(GLint s, GLint t, GLint r, GLint q)
+{
+   DISPATCH(TexCoord4i, (s, t, r, q), (F, "glTexCoord4i(%d, %d, %d, %d);\n", s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4iv)(const GLint * v)
+{
+   DISPATCH(TexCoord4iv, (v), (F, "glTexCoord4iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q)
+{
+   DISPATCH(TexCoord4s, (s, t, r, q), (F, "glTexCoord4s(%d, %d, %d, %d);\n", s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoord4sv)(const GLshort * v)
+{
+   DISPATCH(TexCoord4sv, (v), (F, "glTexCoord4sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2d)(GLdouble x, GLdouble y)
+{
+   DISPATCH(Vertex2d, (x, y), (F, "glVertex2d(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2dv)(const GLdouble * v)
+{
+   DISPATCH(Vertex2dv, (v), (F, "glVertex2dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2f)(GLfloat x, GLfloat y)
+{
+   DISPATCH(Vertex2f, (x, y), (F, "glVertex2f(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2fv)(const GLfloat * v)
+{
+   DISPATCH(Vertex2fv, (v), (F, "glVertex2fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2i)(GLint x, GLint y)
+{
+   DISPATCH(Vertex2i, (x, y), (F, "glVertex2i(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2iv)(const GLint * v)
+{
+   DISPATCH(Vertex2iv, (v), (F, "glVertex2iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2s)(GLshort x, GLshort y)
+{
+   DISPATCH(Vertex2s, (x, y), (F, "glVertex2s(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex2sv)(const GLshort * v)
+{
+   DISPATCH(Vertex2sv, (v), (F, "glVertex2sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3d)(GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(Vertex3d, (x, y, z), (F, "glVertex3d(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3dv)(const GLdouble * v)
+{
+   DISPATCH(Vertex3dv, (v), (F, "glVertex3dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3f)(GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(Vertex3f, (x, y, z), (F, "glVertex3f(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3fv)(const GLfloat * v)
+{
+   DISPATCH(Vertex3fv, (v), (F, "glVertex3fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3i)(GLint x, GLint y, GLint z)
+{
+   DISPATCH(Vertex3i, (x, y, z), (F, "glVertex3i(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3iv)(const GLint * v)
+{
+   DISPATCH(Vertex3iv, (v), (F, "glVertex3iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3s)(GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(Vertex3s, (x, y, z), (F, "glVertex3s(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex3sv)(const GLshort * v)
+{
+   DISPATCH(Vertex3sv, (v), (F, "glVertex3sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(Vertex4d, (x, y, z, w), (F, "glVertex4d(%f, %f, %f, %f);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4dv)(const GLdouble * v)
+{
+   DISPATCH(Vertex4dv, (v), (F, "glVertex4dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(Vertex4f, (x, y, z, w), (F, "glVertex4f(%f, %f, %f, %f);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4fv)(const GLfloat * v)
+{
+   DISPATCH(Vertex4fv, (v), (F, "glVertex4fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4i)(GLint x, GLint y, GLint z, GLint w)
+{
+   DISPATCH(Vertex4i, (x, y, z, w), (F, "glVertex4i(%d, %d, %d, %d);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4iv)(const GLint * v)
+{
+   DISPATCH(Vertex4iv, (v), (F, "glVertex4iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   DISPATCH(Vertex4s, (x, y, z, w), (F, "glVertex4s(%d, %d, %d, %d);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Vertex4sv)(const GLshort * v)
+{
+   DISPATCH(Vertex4sv, (v), (F, "glVertex4sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClipPlane)(GLenum plane, const GLdouble * equation)
+{
+   DISPATCH(ClipPlane, (plane, equation), (F, "glClipPlane(0x%x, %p);\n", plane, (const void *) equation));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorMaterial)(GLenum face, GLenum mode)
+{
+   DISPATCH(ColorMaterial, (face, mode), (F, "glColorMaterial(0x%x, 0x%x);\n", face, mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CullFace)(GLenum mode)
+{
+   DISPATCH(CullFace, (mode), (F, "glCullFace(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Fogf)(GLenum pname, GLfloat param)
+{
+   DISPATCH(Fogf, (pname, param), (F, "glFogf(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Fogfv)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(Fogfv, (pname, params), (F, "glFogfv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Fogi)(GLenum pname, GLint param)
+{
+   DISPATCH(Fogi, (pname, param), (F, "glFogi(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Fogiv)(GLenum pname, const GLint * params)
+{
+   DISPATCH(Fogiv, (pname, params), (F, "glFogiv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FrontFace)(GLenum mode)
+{
+   DISPATCH(FrontFace, (mode), (F, "glFrontFace(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Hint)(GLenum target, GLenum mode)
+{
+   DISPATCH(Hint, (target, mode), (F, "glHint(0x%x, 0x%x);\n", target, mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Lightf)(GLenum light, GLenum pname, GLfloat param)
+{
+   DISPATCH(Lightf, (light, pname, param), (F, "glLightf(0x%x, 0x%x, %f);\n", light, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Lightfv)(GLenum light, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(Lightfv, (light, pname, params), (F, "glLightfv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Lighti)(GLenum light, GLenum pname, GLint param)
+{
+   DISPATCH(Lighti, (light, pname, param), (F, "glLighti(0x%x, 0x%x, %d);\n", light, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Lightiv)(GLenum light, GLenum pname, const GLint * params)
+{
+   DISPATCH(Lightiv, (light, pname, params), (F, "glLightiv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LightModelf)(GLenum pname, GLfloat param)
+{
+   DISPATCH(LightModelf, (pname, param), (F, "glLightModelf(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LightModelfv)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(LightModelfv, (pname, params), (F, "glLightModelfv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LightModeli)(GLenum pname, GLint param)
+{
+   DISPATCH(LightModeli, (pname, param), (F, "glLightModeli(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LightModeliv)(GLenum pname, const GLint * params)
+{
+   DISPATCH(LightModeliv, (pname, params), (F, "glLightModeliv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LineStipple)(GLint factor, GLushort pattern)
+{
+   DISPATCH(LineStipple, (factor, pattern), (F, "glLineStipple(%d, %d);\n", factor, pattern));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LineWidth)(GLfloat width)
+{
+   DISPATCH(LineWidth, (width), (F, "glLineWidth(%f);\n", width));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Materialf)(GLenum face, GLenum pname, GLfloat param)
+{
+   DISPATCH(Materialf, (face, pname, param), (F, "glMaterialf(0x%x, 0x%x, %f);\n", face, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Materialfv)(GLenum face, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(Materialfv, (face, pname, params), (F, "glMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Materiali)(GLenum face, GLenum pname, GLint param)
+{
+   DISPATCH(Materiali, (face, pname, param), (F, "glMateriali(0x%x, 0x%x, %d);\n", face, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Materialiv)(GLenum face, GLenum pname, const GLint * params)
+{
+   DISPATCH(Materialiv, (face, pname, params), (F, "glMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointSize)(GLfloat size)
+{
+   DISPATCH(PointSize, (size), (F, "glPointSize(%f);\n", size));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PolygonMode)(GLenum face, GLenum mode)
+{
+   DISPATCH(PolygonMode, (face, mode), (F, "glPolygonMode(0x%x, 0x%x);\n", face, mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PolygonStipple)(const GLubyte * mask)
+{
+   DISPATCH(PolygonStipple, (mask), (F, "glPolygonStipple(%p);\n", (const void *) mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Scissor)(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(Scissor, (x, y, width, height), (F, "glScissor(%d, %d, %d, %d);\n", x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ShadeModel)(GLenum mode)
+{
+   DISPATCH(ShadeModel, (mode), (F, "glShadeModel(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameterf)(GLenum target, GLenum pname, GLfloat param)
+{
+   DISPATCH(TexParameterf, (target, pname, param), (F, "glTexParameterf(0x%x, 0x%x, %f);\n", target, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(TexParameterfv, (target, pname, params), (F, "glTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameteri)(GLenum target, GLenum pname, GLint param)
+{
+   DISPATCH(TexParameteri, (target, pname, param), (F, "glTexParameteri(0x%x, 0x%x, %d);\n", target, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexParameteriv)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(TexParameteriv, (target, pname, params), (F, "glTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexImage1D, (target, level, internalformat, width, border, format, type, pixels), (F, "glTexImage1D(0x%x, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, border, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexImage2D, (target, level, internalformat, width, height, border, format, type, pixels), (F, "glTexImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, border, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexEnvf)(GLenum target, GLenum pname, GLfloat param)
+{
+   DISPATCH(TexEnvf, (target, pname, param), (F, "glTexEnvf(0x%x, 0x%x, %f);\n", target, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexEnvfv)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(TexEnvfv, (target, pname, params), (F, "glTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexEnvi)(GLenum target, GLenum pname, GLint param)
+{
+   DISPATCH(TexEnvi, (target, pname, param), (F, "glTexEnvi(0x%x, 0x%x, %d);\n", target, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexEnviv)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(TexEnviv, (target, pname, params), (F, "glTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexGend)(GLenum coord, GLenum pname, GLdouble param)
+{
+   DISPATCH(TexGend, (coord, pname, param), (F, "glTexGend(0x%x, 0x%x, %f);\n", coord, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexGendv)(GLenum coord, GLenum pname, const GLdouble * params)
+{
+   DISPATCH(TexGendv, (coord, pname, params), (F, "glTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexGenf)(GLenum coord, GLenum pname, GLfloat param)
+{
+   DISPATCH(TexGenf, (coord, pname, param), (F, "glTexGenf(0x%x, 0x%x, %f);\n", coord, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexGenfv)(GLenum coord, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(TexGenfv, (coord, pname, params), (F, "glTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexGeni)(GLenum coord, GLenum pname, GLint param)
+{
+   DISPATCH(TexGeni, (coord, pname, param), (F, "glTexGeni(0x%x, 0x%x, %d);\n", coord, pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexGeniv)(GLenum coord, GLenum pname, const GLint * params)
+{
+   DISPATCH(TexGeniv, (coord, pname, params), (F, "glTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer)
+{
+   DISPATCH(FeedbackBuffer, (size, type, buffer), (F, "glFeedbackBuffer(%d, 0x%x, %p);\n", size, type, (const void *) buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SelectBuffer)(GLsizei size, GLuint * buffer)
+{
+   DISPATCH(SelectBuffer, (size, buffer), (F, "glSelectBuffer(%d, %p);\n", size, (const void *) buffer));
+}
+
+KEYWORD1 GLint KEYWORD2 NAME(RenderMode)(GLenum mode)
+{
+   RETURN_DISPATCH(RenderMode, (mode), (F, "glRenderMode(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(InitNames)(void)
+{
+   DISPATCH(InitNames, (), (F, "glInitNames();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadName)(GLuint name)
+{
+   DISPATCH(LoadName, (name), (F, "glLoadName(%d);\n", name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PassThrough)(GLfloat token)
+{
+   DISPATCH(PassThrough, (token), (F, "glPassThrough(%f);\n", token));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PopName)(void)
+{
+   DISPATCH(PopName, (), (F, "glPopName();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PushName)(GLuint name)
+{
+   DISPATCH(PushName, (name), (F, "glPushName(%d);\n", name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawBuffer)(GLenum mode)
+{
+   DISPATCH(DrawBuffer, (mode), (F, "glDrawBuffer(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Clear)(GLbitfield mask)
+{
+   DISPATCH(Clear, (mask), (F, "glClear(%d);\n", mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
+{
+   DISPATCH(ClearAccum, (red, green, blue, alpha), (F, "glClearAccum(%f, %f, %f, %f);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClearIndex)(GLfloat c)
+{
+   DISPATCH(ClearIndex, (c), (F, "glClearIndex(%f);\n", c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+   DISPATCH(ClearColor, (red, green, blue, alpha), (F, "glClearColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClearStencil)(GLint s)
+{
+   DISPATCH(ClearStencil, (s), (F, "glClearStencil(%d);\n", s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClearDepth)(GLclampd depth)
+{
+   DISPATCH(ClearDepth, (depth), (F, "glClearDepth(%f);\n", depth));
+}
+
+KEYWORD1 void KEYWORD2 NAME(StencilMask)(GLuint mask)
+{
+   DISPATCH(StencilMask, (mask), (F, "glStencilMask(%d);\n", mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
+{
+   DISPATCH(ColorMask, (red, green, blue, alpha), (F, "glColorMask(%d, %d, %d, %d);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DepthMask)(GLboolean flag)
+{
+   DISPATCH(DepthMask, (flag), (F, "glDepthMask(%d);\n", flag));
+}
+
+KEYWORD1 void KEYWORD2 NAME(IndexMask)(GLuint mask)
+{
+   DISPATCH(IndexMask, (mask), (F, "glIndexMask(%d);\n", mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Accum)(GLenum op, GLfloat value)
+{
+   DISPATCH(Accum, (op, value), (F, "glAccum(0x%x, %f);\n", op, value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Disable)(GLenum cap)
+{
+   DISPATCH(Disable, (cap), (F, "glDisable(0x%x);\n", cap));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Enable)(GLenum cap)
+{
+   DISPATCH(Enable, (cap), (F, "glEnable(0x%x);\n", cap));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Finish)(void)
+{
+   DISPATCH(Finish, (), (F, "glFinish();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Flush)(void)
+{
+   DISPATCH(Flush, (), (F, "glFlush();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PopAttrib)(void)
+{
+   DISPATCH(PopAttrib, (), (F, "glPopAttrib();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PushAttrib)(GLbitfield mask)
+{
+   DISPATCH(PushAttrib, (mask), (F, "glPushAttrib(%d);\n", mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points)
+{
+   DISPATCH(Map1d, (target, u1, u2, stride, order, points), (F, "glMap1d(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (const void *) points));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points)
+{
+   DISPATCH(Map1f, (target, u1, u2, stride, order, points), (F, "glMap1f(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (const void *) points));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points)
+{
+   DISPATCH(Map2d, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2d(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (const void *) points));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points)
+{
+   DISPATCH(Map2f, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2f(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (const void *) points));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MapGrid1d)(GLint un, GLdouble u1, GLdouble u2)
+{
+   DISPATCH(MapGrid1d, (un, u1, u2), (F, "glMapGrid1d(%d, %f, %f);\n", un, u1, u2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MapGrid1f)(GLint un, GLfloat u1, GLfloat u2)
+{
+   DISPATCH(MapGrid1f, (un, u1, u2), (F, "glMapGrid1f(%d, %f, %f);\n", un, u1, u2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
+{
+   DISPATCH(MapGrid2d, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2d(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
+{
+   DISPATCH(MapGrid2f, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2f(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord1d)(GLdouble u)
+{
+   DISPATCH(EvalCoord1d, (u), (F, "glEvalCoord1d(%f);\n", u));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord1dv)(const GLdouble * u)
+{
+   DISPATCH(EvalCoord1dv, (u), (F, "glEvalCoord1dv(%p);\n", (const void *) u));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord1f)(GLfloat u)
+{
+   DISPATCH(EvalCoord1f, (u), (F, "glEvalCoord1f(%f);\n", u));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord1fv)(const GLfloat * u)
+{
+   DISPATCH(EvalCoord1fv, (u), (F, "glEvalCoord1fv(%p);\n", (const void *) u));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord2d)(GLdouble u, GLdouble v)
+{
+   DISPATCH(EvalCoord2d, (u, v), (F, "glEvalCoord2d(%f, %f);\n", u, v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord2dv)(const GLdouble * u)
+{
+   DISPATCH(EvalCoord2dv, (u), (F, "glEvalCoord2dv(%p);\n", (const void *) u));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord2f)(GLfloat u, GLfloat v)
+{
+   DISPATCH(EvalCoord2f, (u, v), (F, "glEvalCoord2f(%f, %f);\n", u, v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalCoord2fv)(const GLfloat * u)
+{
+   DISPATCH(EvalCoord2fv, (u), (F, "glEvalCoord2fv(%p);\n", (const void *) u));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalMesh1)(GLenum mode, GLint i1, GLint i2)
+{
+   DISPATCH(EvalMesh1, (mode, i1, i2), (F, "glEvalMesh1(0x%x, %d, %d);\n", mode, i1, i2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalPoint1)(GLint i)
+{
+   DISPATCH(EvalPoint1, (i), (F, "glEvalPoint1(%d);\n", i));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
+{
+   DISPATCH(EvalMesh2, (mode, i1, i2, j1, j2), (F, "glEvalMesh2(0x%x, %d, %d, %d, %d);\n", mode, i1, i2, j1, j2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EvalPoint2)(GLint i, GLint j)
+{
+   DISPATCH(EvalPoint2, (i, j), (F, "glEvalPoint2(%d, %d);\n", i, j));
+}
+
+KEYWORD1 void KEYWORD2 NAME(AlphaFunc)(GLenum func, GLclampf ref)
+{
+   DISPATCH(AlphaFunc, (func, ref), (F, "glAlphaFunc(0x%x, %f);\n", func, ref));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendFunc)(GLenum sfactor, GLenum dfactor)
+{
+   DISPATCH(BlendFunc, (sfactor, dfactor), (F, "glBlendFunc(0x%x, 0x%x);\n", sfactor, dfactor));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LogicOp)(GLenum opcode)
+{
+   DISPATCH(LogicOp, (opcode), (F, "glLogicOp(0x%x);\n", opcode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(StencilFunc)(GLenum func, GLint ref, GLuint mask)
+{
+   DISPATCH(StencilFunc, (func, ref, mask), (F, "glStencilFunc(0x%x, %d, %d);\n", func, ref, mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(StencilOp)(GLenum fail, GLenum zfail, GLenum zpass)
+{
+   DISPATCH(StencilOp, (fail, zfail, zpass), (F, "glStencilOp(0x%x, 0x%x, 0x%x);\n", fail, zfail, zpass));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DepthFunc)(GLenum func)
+{
+   DISPATCH(DepthFunc, (func), (F, "glDepthFunc(0x%x);\n", func));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelZoom)(GLfloat xfactor, GLfloat yfactor)
+{
+   DISPATCH(PixelZoom, (xfactor, yfactor), (F, "glPixelZoom(%f, %f);\n", xfactor, yfactor));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelTransferf)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PixelTransferf, (pname, param), (F, "glPixelTransferf(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelTransferi)(GLenum pname, GLint param)
+{
+   DISPATCH(PixelTransferi, (pname, param), (F, "glPixelTransferi(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelStoref)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PixelStoref, (pname, param), (F, "glPixelStoref(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelStorei)(GLenum pname, GLint param)
+{
+   DISPATCH(PixelStorei, (pname, param), (F, "glPixelStorei(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values)
+{
+   DISPATCH(PixelMapfv, (map, mapsize, values), (F, "glPixelMapfv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values)
+{
+   DISPATCH(PixelMapuiv, (map, mapsize, values), (F, "glPixelMapuiv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values)
+{
+   DISPATCH(PixelMapusv, (map, mapsize, values), (F, "glPixelMapusv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ReadBuffer)(GLenum mode)
+{
+   DISPATCH(ReadBuffer, (mode), (F, "glReadBuffer(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
+{
+   DISPATCH(CopyPixels, (x, y, width, height, type), (F, "glCopyPixels(%d, %d, %d, %d, 0x%x);\n", x, y, width, height, type));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels)
+{
+   DISPATCH(ReadPixels, (x, y, width, height, format, type, pixels), (F, "glReadPixels(%d, %d, %d, %d, 0x%x, 0x%x, %p);\n", x, y, width, height, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(DrawPixels, (width, height, format, type, pixels), (F, "glDrawPixels(%d, %d, 0x%x, 0x%x, %p);\n", width, height, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBooleanv)(GLenum pname, GLboolean * params)
+{
+   DISPATCH(GetBooleanv, (pname, params), (F, "glGetBooleanv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetClipPlane)(GLenum plane, GLdouble * equation)
+{
+   DISPATCH(GetClipPlane, (plane, equation), (F, "glGetClipPlane(0x%x, %p);\n", plane, (const void *) equation));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetDoublev)(GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetDoublev, (pname, params), (F, "glGetDoublev(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 GLenum KEYWORD2 NAME(GetError)(void)
+{
+   RETURN_DISPATCH(GetError, (), (F, "glGetError();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetFloatv)(GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetFloatv, (pname, params), (F, "glGetFloatv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetIntegerv)(GLenum pname, GLint * params)
+{
+   DISPATCH(GetIntegerv, (pname, params), (F, "glGetIntegerv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetLightfv)(GLenum light, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetLightfv, (light, pname, params), (F, "glGetLightfv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetLightiv)(GLenum light, GLenum pname, GLint * params)
+{
+   DISPATCH(GetLightiv, (light, pname, params), (F, "glGetLightiv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMapdv)(GLenum target, GLenum query, GLdouble * v)
+{
+   DISPATCH(GetMapdv, (target, query, v), (F, "glGetMapdv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMapfv)(GLenum target, GLenum query, GLfloat * v)
+{
+   DISPATCH(GetMapfv, (target, query, v), (F, "glGetMapfv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMapiv)(GLenum target, GLenum query, GLint * v)
+{
+   DISPATCH(GetMapiv, (target, query, v), (F, "glGetMapiv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMaterialfv)(GLenum face, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetMaterialfv, (face, pname, params), (F, "glGetMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMaterialiv)(GLenum face, GLenum pname, GLint * params)
+{
+   DISPATCH(GetMaterialiv, (face, pname, params), (F, "glGetMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetPixelMapfv)(GLenum map, GLfloat * values)
+{
+   DISPATCH(GetPixelMapfv, (map, values), (F, "glGetPixelMapfv(0x%x, %p);\n", map, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetPixelMapuiv)(GLenum map, GLuint * values)
+{
+   DISPATCH(GetPixelMapuiv, (map, values), (F, "glGetPixelMapuiv(0x%x, %p);\n", map, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetPixelMapusv)(GLenum map, GLushort * values)
+{
+   DISPATCH(GetPixelMapusv, (map, values), (F, "glGetPixelMapusv(0x%x, %p);\n", map, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetPolygonStipple)(GLubyte * mask)
+{
+   DISPATCH(GetPolygonStipple, (mask), (F, "glGetPolygonStipple(%p);\n", (const void *) mask));
+}
+
+KEYWORD1 const GLubyte * KEYWORD2 NAME(GetString)(GLenum name)
+{
+   RETURN_DISPATCH(GetString, (name), (F, "glGetString(0x%x);\n", name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetTexEnvfv, (target, pname, params), (F, "glGetTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexEnviv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetTexEnviv, (target, pname, params), (F, "glGetTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexGendv)(GLenum coord, GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetTexGendv, (coord, pname, params), (F, "glGetTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetTexGenfv, (coord, pname, params), (F, "glGetTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexGeniv)(GLenum coord, GLenum pname, GLint * params)
+{
+   DISPATCH(GetTexGeniv, (coord, pname, params), (F, "glGetTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels)
+{
+   DISPATCH(GetTexImage, (target, level, format, type, pixels), (F, "glGetTexImage(0x%x, %d, 0x%x, 0x%x, %p);\n", target, level, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetTexParameterfv, (target, pname, params), (F, "glGetTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexParameteriv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetTexParameteriv, (target, pname, params), (F, "glGetTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetTexLevelParameterfv, (target, level, pname, params), (F, "glGetTexLevelParameterfv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params)
+{
+   DISPATCH(GetTexLevelParameteriv, (target, level, pname, params), (F, "glGetTexLevelParameteriv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (const void *) params));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabled)(GLenum cap)
+{
+   RETURN_DISPATCH(IsEnabled, (cap), (F, "glIsEnabled(0x%x);\n", cap));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsList)(GLuint list)
+{
+   RETURN_DISPATCH(IsList, (list), (F, "glIsList(%d);\n", list));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DepthRange)(GLclampd zNear, GLclampd zFar)
+{
+   DISPATCH(DepthRange, (zNear, zFar), (F, "glDepthRange(%f, %f);\n", zNear, zFar));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
+{
+   DISPATCH(Frustum, (left, right, bottom, top, zNear, zFar), (F, "glFrustum(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadIdentity)(void)
+{
+   DISPATCH(LoadIdentity, (), (F, "glLoadIdentity();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadMatrixf)(const GLfloat * m)
+{
+   DISPATCH(LoadMatrixf, (m), (F, "glLoadMatrixf(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadMatrixd)(const GLdouble * m)
+{
+   DISPATCH(LoadMatrixd, (m), (F, "glLoadMatrixd(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MatrixMode)(GLenum mode)
+{
+   DISPATCH(MatrixMode, (mode), (F, "glMatrixMode(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultMatrixf)(const GLfloat * m)
+{
+   DISPATCH(MultMatrixf, (m), (F, "glMultMatrixf(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultMatrixd)(const GLdouble * m)
+{
+   DISPATCH(MultMatrixd, (m), (F, "glMultMatrixd(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
+{
+   DISPATCH(Ortho, (left, right, bottom, top, zNear, zFar), (F, "glOrtho(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PopMatrix)(void)
+{
+   DISPATCH(PopMatrix, (), (F, "glPopMatrix();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PushMatrix)(void)
+{
+   DISPATCH(PushMatrix, (), (F, "glPushMatrix();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(Rotated, (angle, x, y, z), (F, "glRotated(%f, %f, %f, %f);\n", angle, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(Rotatef, (angle, x, y, z), (F, "glRotatef(%f, %f, %f, %f);\n", angle, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Scaled)(GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(Scaled, (x, y, z), (F, "glScaled(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Scalef)(GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(Scalef, (x, y, z), (F, "glScalef(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Translated)(GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(Translated, (x, y, z), (F, "glTranslated(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Translatef)(GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(Translatef, (x, y, z), (F, "glTranslatef(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Viewport)(GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(Viewport, (x, y, width, height), (F, "glViewport(%d, %d, %d, %d);\n", x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ArrayElement)(GLint i)
+{
+   DISPATCH(ArrayElement, (i), (F, "glArrayElement(%d);\n", i));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i)
+{
+   DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindTexture)(GLenum target, GLuint texture)
+{
+   DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);\n", target, texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture)
+{
+   DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(ColorPointer, (size, type, stride, pointer), (F, "glColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DisableClientState)(GLenum array)
+{
+   DISPATCH(DisableClientState, (array), (F, "glDisableClientState(0x%x);\n", array));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawArrays)(GLenum mode, GLint first, GLsizei count)
+{
+   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArrays(0x%x, %d, %d);\n", mode, first, count));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count)
+{
+   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %d);\n", mode, first, count));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices)
+{
+   DISPATCH(DrawElements, (mode, count, type, indices), (F, "glDrawElements(0x%x, %d, 0x%x, %p);\n", mode, count, type, (const void *) indices));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointer)(GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(EdgeFlagPointer, (stride, pointer), (F, "glEdgeFlagPointer(%d, %p);\n", stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EnableClientState)(GLenum array)
+{
+   DISPATCH(EnableClientState, (array), (F, "glEnableClientState(0x%x);\n", array));
+}
+
+KEYWORD1 void KEYWORD2 NAME(IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(IndexPointer, (type, stride, pointer), (F, "glIndexPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexub)(GLubyte c)
+{
+   DISPATCH(Indexub, (c), (F, "glIndexub(%d);\n", c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Indexubv)(const GLubyte * c)
+{
+   DISPATCH(Indexubv, (c), (F, "glIndexubv(%p);\n", (const void *) c));
+}
+
+KEYWORD1 void KEYWORD2 NAME(InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(InterleavedArrays, (format, stride, pointer), (F, "glInterleavedArrays(0x%x, %d, %p);\n", format, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(NormalPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(NormalPointer, (type, stride, pointer), (F, "glNormalPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PolygonOffset)(GLfloat factor, GLfloat units)
+{
+   DISPATCH(PolygonOffset, (factor, units), (F, "glPolygonOffset(%f, %f);\n", factor, units));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(TexCoordPointer, (size, type, stride, pointer), (F, "glTexCoordPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(VertexPointer, (size, type, stride, pointer), (F, "glVertexPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences)
+{
+   RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResident(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+{
+   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
+{
+   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
+{
+   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1D(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2D(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteTextures)(GLsizei n, const GLuint * textures)
+{
+   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTextures(%d, %p);\n", n, (const void *) textures));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenTextures)(GLsizei n, GLuint * textures)
+{
+   DISPATCH(GenTextures, (n, textures), (F, "glGenTextures(%d, %p);\n", n, (const void *) textures));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetPointerv)(GLenum pname, GLvoid ** params)
+{
+   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params)
+{
+   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsTexture)(GLuint texture)
+{
+   RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTexture(%d);\n", texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PrioritizeTextures)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
+{
+   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTextures(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
+{
+   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1D(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1DEXT(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PopClientAttrib)(void)
+{
+   DISPATCH(PopClientAttrib, (), (F, "glPopClientAttrib();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PushClientAttrib)(GLbitfield mask)
+{
+   DISPATCH(PushClientAttrib, (mask), (F, "glPushClientAttrib(%d);\n", mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
+{
+   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendEquation)(GLenum mode)
+{
+   DISPATCH(BlendEquation, (mode), (F, "glBlendEquation(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode)
+{
+   DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
+{
+   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElements(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
+{
+   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElementsEXT(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
+{
+   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTable(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
+{
+   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_339)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_339)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
+{
+   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableSGI(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_340)(GLenum target, GLenum pname, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_340)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_341)(GLenum target, GLenum pname, const GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_341)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTable(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_342)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_342)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table)
+{
+   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTable(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
+{
+   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTable(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_346)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_346)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
+{
+   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTableEXT(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTable(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_347)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_347)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
+{
+   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1D(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_348)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_348)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
+{
+   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1DEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
+{
+   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_349)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_349)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
+{
+   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params)
+{
+   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterf(0x%x, 0x%x, %f);\n", target, pname, params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_350)(GLenum target, GLenum pname, GLfloat params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_350)(GLenum target, GLenum pname, GLfloat params)
+{
+   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_351)(GLenum target, GLenum pname, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_351)(GLenum target, GLenum pname, const GLfloat * params)
+{
+   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteri)(GLenum target, GLenum pname, GLint params)
+{
+   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteri(0x%x, 0x%x, %d);\n", target, pname, params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_352)(GLenum target, GLenum pname, GLint params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_352)(GLenum target, GLenum pname, GLint params)
+{
+   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_353)(GLenum target, GLenum pname, const GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_353)(GLenum target, GLenum pname, const GLint * params)
+{
+   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1D(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_354)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_354)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
+{
+   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2D(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_355)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_355)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image)
+{
+   DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilter(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
+{
+   DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilter(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (const void *) row, (const void *) column, (const void *) span));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
+{
+   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_360)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_360)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
+{
+   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
+{
+   DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogram(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
+{
+   DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmax(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+{
+   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogram(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_367)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_367)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
+{
+   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Minmax)(GLenum target, GLenum internalformat, GLboolean sink)
+{
+   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmax(0x%x, 0x%x, %d);\n", target, internalformat, sink));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_368)(GLenum target, GLenum internalformat, GLboolean sink);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_368)(GLenum target, GLenum internalformat, GLboolean sink)
+{
+   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ResetHistogram)(GLenum target)
+{
+   DISPATCH(ResetHistogram, (target), (F, "glResetHistogram(0x%x);\n", target));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_369)(GLenum target);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_369)(GLenum target)
+{
+   DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ResetMinmax)(GLenum target)
+{
+   DISPATCH(ResetMinmax, (target), (F, "glResetMinmax(0x%x);\n", target));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_370)(GLenum target);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_370)(GLenum target)
+{
+   DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
+{
+   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
+{
+   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture)
+{
+   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ActiveTextureARB)(GLenum texture)
+{
+   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTextureARB(0x%x);\n", texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture)
+{
+   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ClientActiveTextureARB)(GLenum texture)
+{
+   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTextureARB(0x%x);\n", texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s)
+{
+   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dARB)(GLenum target, GLdouble s)
+{
+   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1dARB(0x%x, %f);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dvARB)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s)
+{
+   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fARB)(GLenum target, GLfloat s)
+{
+   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1fARB(0x%x, %f);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s)
+{
+   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iARB)(GLenum target, GLint s)
+{
+   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1iARB(0x%x, %d);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1ivARB)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1ivARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s)
+{
+   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sARB)(GLenum target, GLshort s)
+{
+   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1sARB(0x%x, %d);\n", target, s));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1svARB)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1svARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
+{
+   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t)
+{
+   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2dARB(0x%x, %f, %f);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dvARB)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t)
+{
+   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t)
+{
+   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2fARB(0x%x, %f, %f);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
+{
+   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t)
+{
+   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2iARB(0x%x, %d, %d);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2ivARB)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2ivARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
+{
+   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t)
+{
+   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2sARB(0x%x, %d, %d);\n", target, s, t));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2svARB)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2svARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
+{
+   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
+{
+   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3dARB(0x%x, %f, %f, %f);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dvARB)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
+{
+   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
+{
+   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3fARB(0x%x, %f, %f, %f);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
+{
+   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r)
+{
+   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3iARB(0x%x, %d, %d, %d);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3ivARB)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3ivARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
+{
+   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r)
+{
+   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3sARB(0x%x, %d, %d, %d);\n", target, s, t, r));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3svARB)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3svARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+{
+   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
+{
+   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4dARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dvARB)(GLenum target, const GLdouble * v)
+{
+   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+{
+   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
+{
+   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4fARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v)
+{
+   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
+{
+   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q)
+{
+   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4iARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4ivARB)(GLenum target, const GLint * v)
+{
+   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4ivARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
+{
+   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
+{
+   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4sARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sv)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4svARB)(GLenum target, const GLshort * v)
+{
+   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4svARB(0x%x, %p);\n", target, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(AttachShader)(GLuint program, GLuint shader)
+{
+   DISPATCH(AttachShader, (program, shader), (F, "glAttachShader(%d, %d);\n", program, shader));
+}
+
+KEYWORD1 GLuint KEYWORD2 NAME(CreateProgram)(void)
+{
+   RETURN_DISPATCH(CreateProgram, (), (F, "glCreateProgram();\n"));
+}
+
+KEYWORD1 GLuint KEYWORD2 NAME(CreateShader)(GLenum type)
+{
+   RETURN_DISPATCH(CreateShader, (type), (F, "glCreateShader(0x%x);\n", type));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteProgram)(GLuint program)
+{
+   DISPATCH(DeleteProgram, (program), (F, "glDeleteProgram(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteShader)(GLuint program)
+{
+   DISPATCH(DeleteShader, (program), (F, "glDeleteShader(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DetachShader)(GLuint program, GLuint shader)
+{
+   DISPATCH(DetachShader, (program, shader), (F, "glDetachShader(%d, %d);\n", program, shader));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj)
+{
+   DISPATCH(GetAttachedShaders, (program, maxCount, count, obj), (F, "glGetAttachedShaders(%d, %d, %p, %p);\n", program, maxCount, (const void *) count, (const void *) obj));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)
+{
+   DISPATCH(GetProgramInfoLog, (program, bufSize, length, infoLog), (F, "glGetProgramInfoLog(%d, %d, %p, %p);\n", program, bufSize, (const void *) length, (const void *) infoLog));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramiv)(GLuint program, GLenum pname, GLint * params)
+{
+   DISPATCH(GetProgramiv, (program, pname, params), (F, "glGetProgramiv(%d, 0x%x, %p);\n", program, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)
+{
+   DISPATCH(GetShaderInfoLog, (shader, bufSize, length, infoLog), (F, "glGetShaderInfoLog(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) infoLog));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetShaderiv)(GLuint shader, GLenum pname, GLint * params)
+{
+   DISPATCH(GetShaderiv, (shader, pname, params), (F, "glGetShaderiv(%d, 0x%x, %p);\n", shader, pname, (const void *) params));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsProgram)(GLuint program)
+{
+   RETURN_DISPATCH(IsProgram, (program), (F, "glIsProgram(%d);\n", program));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsShader)(GLuint shader)
+{
+   RETURN_DISPATCH(IsShader, (shader), (F, "glIsShader(%d);\n", shader));
+}
+
+KEYWORD1 void KEYWORD2 NAME(StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask)
+{
+   DISPATCH(StencilFuncSeparate, (face, func, ref, mask), (F, "glStencilFuncSeparate(0x%x, 0x%x, %d, %d);\n", face, func, ref, mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(StencilMaskSeparate)(GLenum face, GLuint mask)
+{
+   DISPATCH(StencilMaskSeparate, (face, mask), (F, "glStencilMaskSeparate(0x%x, %d);\n", face, mask));
+}
+
+KEYWORD1 void KEYWORD2 NAME(StencilOpSeparate)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
+{
+   DISPATCH(StencilOpSeparate, (face, sfail, zfail, zpass), (F, "glStencilOpSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", face, sfail, zfail, zpass));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_423)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_423)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
+{
+   DISPATCH(StencilOpSeparate, (face, sfail, zfail, zpass), (F, "glStencilOpSeparateATI(0x%x, 0x%x, 0x%x, 0x%x);\n", face, sfail, zfail, zpass));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix2x3fv, (location, count, transpose, value), (F, "glUniformMatrix2x3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix2x4fv, (location, count, transpose, value), (F, "glUniformMatrix2x4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix3x2fv, (location, count, transpose, value), (F, "glUniformMatrix3x2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix3x4fv, (location, count, transpose, value), (F, "glUniformMatrix3x4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix4x2fv, (location, count, transpose, value), (F, "glUniformMatrix4x2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix4x3fv, (location, count, transpose, value), (F, "glUniformMatrix4x3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+{
+   DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstanced(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+{
+   DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedARB(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
+{
+   DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedEXT(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+{
+   DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstanced(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+{
+   DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedARB(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
+{
+   DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedEXT(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m)
+{
+   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixdARB)(const GLdouble * m)
+{
+   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixdARB(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m)
+{
+   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixfARB)(const GLfloat * m)
+{
+   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixfARB(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m)
+{
+   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixdARB)(const GLdouble * m)
+{
+   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixdARB(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m)
+{
+   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixfARB)(const GLfloat * m)
+{
+   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixfARB(%p);\n", (const void *) m));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SampleCoverage)(GLclampf value, GLboolean invert)
+{
+   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverage(%f, %d);\n", value, invert));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert)
+{
+   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);\n", value, invert));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1DARB(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1D(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1DARB(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2DARB(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
+{
+   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3DARB(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img)
+{
+   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (const void *) img));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img)
+{
+   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (const void *) img));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArray)(GLuint index)
+{
+   DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArray(%d);\n", index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArrayARB)(GLuint index)
+{
+   DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArrayARB(%d);\n", index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArray)(GLuint index)
+{
+   DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArray(%d);\n", index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArrayARB)(GLuint index)
+{
+   DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArrayARB(%d);\n", index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
+{
+   DISPATCH(GetProgramEnvParameterdvARB, (target, index, params), (F, "glGetProgramEnvParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
+{
+   DISPATCH(GetProgramEnvParameterfvARB, (target, index, params), (F, "glGetProgramEnvParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
+{
+   DISPATCH(GetProgramLocalParameterdvARB, (target, index, params), (F, "glGetProgramLocalParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
+{
+   DISPATCH(GetProgramLocalParameterfvARB, (target, index, params), (F, "glGetProgramLocalParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string)
+{
+   DISPATCH(GetProgramStringARB, (target, pname, string), (F, "glGetProgramStringARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) string));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramivARB)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetProgramivARB, (target, pname, params), (F, "glGetProgramivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribiv)(GLuint index, GLenum pname, GLint * params)
+{
+   DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribiv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params)
+{
+   DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribivARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramParameter4dNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
+{
+   DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramEnvParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params)
+{
+   DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramParameter4fNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
+{
+   DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramEnvParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params)
+{
+   DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(ProgramLocalParameter4dARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
+{
+   DISPATCH(ProgramLocalParameter4dvARB, (target, index, params), (F, "glProgramLocalParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(ProgramLocalParameter4fARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
+{
+   DISPATCH(ProgramLocalParameter4fvARB, (target, index, params), (F, "glProgramLocalParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string)
+{
+   DISPATCH(ProgramStringARB, (target, format, len, string), (F, "glProgramStringARB(0x%x, 0x%x, %d, %p);\n", target, format, len, (const void *) string));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1d)(GLuint index, GLdouble x)
+{
+   DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1d(%d, %f);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dARB)(GLuint index, GLdouble x)
+{
+   DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1dARB(%d, %f);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dv)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvARB)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1f)(GLuint index, GLfloat x)
+{
+   DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1f(%d, %f);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fARB)(GLuint index, GLfloat x)
+{
+   DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1fARB(%d, %f);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fv)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvARB)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1s)(GLuint index, GLshort x)
+{
+   DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1s(%d, %d);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sARB)(GLuint index, GLshort x)
+{
+   DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1sARB(%d, %d);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sv)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1sv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svARB)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1svARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y)
+{
+   DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2d(%d, %f, %f);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y)
+{
+   DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2dARB(%d, %f, %f);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dv)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvARB)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y)
+{
+   DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2f(%d, %f, %f);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
+{
+   DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2fARB(%d, %f, %f);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fv)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvARB)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2s)(GLuint index, GLshort x, GLshort y)
+{
+   DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2s(%d, %d, %d);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y)
+{
+   DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2sARB(%d, %d, %d);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sv)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2sv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svARB)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2svARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3d(%d, %f, %f, %f);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3dARB(%d, %f, %f, %f);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dv)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvARB)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3f(%d, %f, %f, %f);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3fARB(%d, %f, %f, %f);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fv)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvARB)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3s(%d, %d, %d, %d);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3sARB(%d, %d, %d, %d);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sv)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3sv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svARB)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3svARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nbv)(GLuint index, const GLbyte * v)
+{
+   DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4Nbv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NbvARB)(GLuint index, const GLbyte * v)
+{
+   DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4NbvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Niv)(GLuint index, const GLint * v)
+{
+   DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4Niv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NivARB)(GLuint index, const GLint * v)
+{
+   DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4NivARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nsv)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4Nsv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NsvARB)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4NsvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+{
+   DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4Nub(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+{
+   DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4NubARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nubv)(GLuint index, const GLubyte * v)
+{
+   DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4Nubv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubvARB)(GLuint index, const GLubyte * v)
+{
+   DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4NubvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nuiv)(GLuint index, const GLuint * v)
+{
+   DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4Nuiv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NuivARB)(GLuint index, const GLuint * v)
+{
+   DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4NuivARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nusv)(GLuint index, const GLushort * v)
+{
+   DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4Nusv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NusvARB)(GLuint index, const GLushort * v)
+{
+   DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4NusvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bv)(GLuint index, const GLbyte * v)
+{
+   DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bvARB)(GLuint index, const GLbyte * v)
+{
+   DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4d(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4dARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dv)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvARB)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4f(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4fARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fv)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvARB)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4iv)(GLuint index, const GLint * v)
+{
+   DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4iv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ivARB)(GLuint index, const GLint * v)
+{
+   DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4ivARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4s(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4sARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sv)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4sv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svARB)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4svARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubv)(GLuint index, const GLubyte * v)
+{
+   DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvARB)(GLuint index, const GLubyte * v)
+{
+   DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uiv)(GLuint index, const GLuint * v)
+{
+   DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uiv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uivARB)(GLuint index, const GLuint * v)
+{
+   DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uivARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usv)(GLuint index, const GLushort * v)
+{
+   DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usv(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usvARB)(GLuint index, const GLushort * v)
+{
+   DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usvARB(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointer(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointerARB(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindBuffer)(GLenum target, GLuint buffer)
+{
+   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBuffer(0x%x, %d);\n", target, buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindBufferARB)(GLenum target, GLuint buffer)
+{
+   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage)
+{
+   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)
+{
+   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data)
+{
+   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)
+{
+   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteBuffers)(GLsizei n, const GLuint * buffer)
+{
+   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffers(%d, %p);\n", n, (const void *) buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteBuffersARB)(GLsizei n, const GLuint * buffer)
+{
+   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffersARB(%d, %p);\n", n, (const void *) buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenBuffers)(GLsizei n, GLuint * buffer)
+{
+   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffers(%d, %p);\n", n, (const void *) buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenBuffersARB)(GLsizei n, GLuint * buffer)
+{
+   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffersARB(%d, %p);\n", n, (const void *) buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameterivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params)
+{
+   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointerv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params)
+{
+   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data)
+{
+   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)
+{
+   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsBuffer)(GLuint buffer)
+{
+   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBuffer(%d);\n", buffer));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsBufferARB)(GLuint buffer)
+{
+   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBufferARB(%d);\n", buffer));
+}
+
+KEYWORD1 GLvoid * KEYWORD2 NAME(MapBuffer)(GLenum target, GLenum access)
+{
+   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBuffer(0x%x, 0x%x);\n", target, access));
+}
+
+KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferARB)(GLenum target, GLenum access)
+{
+   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBufferARB(0x%x, 0x%x);\n", target, access));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBuffer)(GLenum target)
+{
+   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBuffer(0x%x);\n", target));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBufferARB)(GLenum target)
+{
+   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBufferARB(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BeginQuery)(GLenum target, GLuint id)
+{
+   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQuery(0x%x, %d);\n", target, id));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BeginQueryARB)(GLenum target, GLuint id)
+{
+   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQueryARB(0x%x, %d);\n", target, id));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteQueries)(GLsizei n, const GLuint * ids)
+{
+   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueries(%d, %p);\n", n, (const void *) ids));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteQueriesARB)(GLsizei n, const GLuint * ids)
+{
+   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueriesARB(%d, %p);\n", n, (const void *) ids));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EndQuery)(GLenum target)
+{
+   DISPATCH(EndQueryARB, (target), (F, "glEndQuery(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EndQueryARB)(GLenum target)
+{
+   DISPATCH(EndQueryARB, (target), (F, "glEndQueryARB(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenQueries)(GLsizei n, GLuint * ids)
+{
+   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueries(%d, %p);\n", n, (const void *) ids));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenQueriesARB)(GLsizei n, GLuint * ids)
+{
+   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueriesARB(%d, %p);\n", n, (const void *) ids));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params)
+{
+   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params)
+{
+   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params)
+{
+   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params)
+{
+   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetQueryiv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetQueryivARB)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsQuery)(GLuint id)
+{
+   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQuery(%d);\n", id));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsQueryARB)(GLuint id)
+{
+   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQueryARB(%d);\n", id));
+}
+
+KEYWORD1 void KEYWORD2 NAME(AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj)
+{
+   DISPATCH(AttachObjectARB, (containerObj, obj), (F, "glAttachObjectARB(%d, %d);\n", containerObj, obj));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompileShader)(GLuint shader)
+{
+   DISPATCH(CompileShaderARB, (shader), (F, "glCompileShader(%d);\n", shader));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CompileShaderARB)(GLhandleARB shader)
+{
+   DISPATCH(CompileShaderARB, (shader), (F, "glCompileShaderARB(%d);\n", shader));
+}
+
+KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateProgramObjectARB)(void)
+{
+   RETURN_DISPATCH(CreateProgramObjectARB, (), (F, "glCreateProgramObjectARB();\n"));
+}
+
+KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateShaderObjectARB)(GLenum shaderType)
+{
+   RETURN_DISPATCH(CreateShaderObjectARB, (shaderType), (F, "glCreateShaderObjectARB(0x%x);\n", shaderType));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteObjectARB)(GLhandleARB obj)
+{
+   DISPATCH(DeleteObjectARB, (obj), (F, "glDeleteObjectARB(%d);\n", obj));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj)
+{
+   DISPATCH(DetachObjectARB, (containerObj, attachedObj), (F, "glDetachObjectARB(%d, %d);\n", containerObj, attachedObj));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)
+{
+   DISPATCH(GetActiveUniformARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveUniform(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
+{
+   DISPATCH(GetActiveUniformARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveUniformARB(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog)
+{
+   DISPATCH(GetAttachedObjectsARB, (containerObj, maxLength, length, infoLog), (F, "glGetAttachedObjectsARB(%d, %d, %p, %p);\n", containerObj, maxLength, (const void *) length, (const void *) infoLog));
+}
+
+KEYWORD1 GLhandleARB KEYWORD2 NAME(GetHandleARB)(GLenum pname)
+{
+   RETURN_DISPATCH(GetHandleARB, (pname), (F, "glGetHandleARB(0x%x);\n", pname));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
+{
+   DISPATCH(GetInfoLogARB, (obj, maxLength, length, infoLog), (F, "glGetInfoLogARB(%d, %d, %p, %p);\n", obj, maxLength, (const void *) length, (const void *) infoLog));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetObjectParameterfvARB, (obj, pname, params), (F, "glGetObjectParameterfvARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params)
+{
+   DISPATCH(GetObjectParameterivARB, (obj, pname, params), (F, "glGetObjectParameterivARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source)
+{
+   DISPATCH(GetShaderSourceARB, (shader, bufSize, length, source), (F, "glGetShaderSource(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) source));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source)
+{
+   DISPATCH(GetShaderSourceARB, (shader, bufSize, length, source), (F, "glGetShaderSourceARB(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) source));
+}
+
+KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocation)(GLuint program, const GLchar * name)
+{
+   RETURN_DISPATCH(GetUniformLocationARB, (program, name), (F, "glGetUniformLocation(%d, %p);\n", program, (const void *) name));
+}
+
+KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name)
+{
+   RETURN_DISPATCH(GetUniformLocationARB, (program, name), (F, "glGetUniformLocationARB(%d, %p);\n", program, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetUniformfv)(GLuint program, GLint location, GLfloat * params)
+{
+   DISPATCH(GetUniformfvARB, (program, location, params), (F, "glGetUniformfv(%d, %d, %p);\n", program, location, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params)
+{
+   DISPATCH(GetUniformfvARB, (program, location, params), (F, "glGetUniformfvARB(%d, %d, %p);\n", program, location, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetUniformiv)(GLuint program, GLint location, GLint * params)
+{
+   DISPATCH(GetUniformivARB, (program, location, params), (F, "glGetUniformiv(%d, %d, %p);\n", program, location, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetUniformivARB)(GLhandleARB program, GLint location, GLint * params)
+{
+   DISPATCH(GetUniformivARB, (program, location, params), (F, "glGetUniformivARB(%d, %d, %p);\n", program, location, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LinkProgram)(GLuint program)
+{
+   DISPATCH(LinkProgramARB, (program), (F, "glLinkProgram(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LinkProgramARB)(GLhandleARB program)
+{
+   DISPATCH(LinkProgramARB, (program), (F, "glLinkProgramARB(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ShaderSource)(GLuint shader, GLsizei count, const GLchar ** string, const GLint * length)
+{
+   DISPATCH(ShaderSourceARB, (shader, count, string, length), (F, "glShaderSource(%d, %d, %p, %p);\n", shader, count, (const void *) string, (const void *) length));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length)
+{
+   DISPATCH(ShaderSourceARB, (shader, count, string, length), (F, "glShaderSourceARB(%d, %d, %p, %p);\n", shader, count, (const void *) string, (const void *) length));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1f)(GLint location, GLfloat v0)
+{
+   DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1f(%d, %f);\n", location, v0));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1fARB)(GLint location, GLfloat v0)
+{
+   DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1fARB(%d, %f);\n", location, v0));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1fv)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fvARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1i)(GLint location, GLint v0)
+{
+   DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1i(%d, %d);\n", location, v0));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1iARB)(GLint location, GLint v0)
+{
+   DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1iARB(%d, %d);\n", location, v0));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1iv)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1iv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform1ivARB)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1ivARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2f)(GLint location, GLfloat v0, GLfloat v1)
+{
+   DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2f(%d, %f, %f);\n", location, v0, v1));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1)
+{
+   DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2fARB(%d, %f, %f);\n", location, v0, v1));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2fv)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fvARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2i)(GLint location, GLint v0, GLint v1)
+{
+   DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2i(%d, %d, %d);\n", location, v0, v1));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2iARB)(GLint location, GLint v0, GLint v1)
+{
+   DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2iARB(%d, %d, %d);\n", location, v0, v1));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2iv)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2iv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform2ivARB)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2ivARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
+{
+   DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3f(%d, %f, %f, %f);\n", location, v0, v1, v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
+{
+   DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3fARB(%d, %f, %f, %f);\n", location, v0, v1, v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3fv)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fvARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2)
+{
+   DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3i(%d, %d, %d, %d);\n", location, v0, v1, v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2)
+{
+   DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3iARB(%d, %d, %d, %d);\n", location, v0, v1, v2));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3iv)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3iv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform3ivARB)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3ivARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
+{
+   DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4f(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
+{
+   DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4fARB(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4fv)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value)
+{
+   DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fvARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
+{
+   DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4i(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
+{
+   DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4iARB(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4iv)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4iv(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(Uniform4ivARB)(GLint location, GLsizei count, const GLint * value)
+{
+   DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4ivARB(%d, %d, %p);\n", location, count, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
+{
+   DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UseProgram)(GLuint program)
+{
+   DISPATCH(UseProgramObjectARB, (program), (F, "glUseProgram(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UseProgramObjectARB)(GLhandleARB program)
+{
+   DISPATCH(UseProgramObjectARB, (program), (F, "glUseProgramObjectARB(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ValidateProgram)(GLuint program)
+{
+   DISPATCH(ValidateProgramARB, (program), (F, "glValidateProgram(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ValidateProgramARB)(GLhandleARB program)
+{
+   DISPATCH(ValidateProgramARB, (program), (F, "glValidateProgramARB(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindAttribLocation)(GLuint program, GLuint index, const GLchar * name)
+{
+   DISPATCH(BindAttribLocationARB, (program, index, name), (F, "glBindAttribLocation(%d, %d, %p);\n", program, index, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name)
+{
+   DISPATCH(BindAttribLocationARB, (program, index, name), (F, "glBindAttribLocationARB(%d, %d, %p);\n", program, index, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetActiveAttrib)(GLuint program, GLuint index, GLsizei  bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)
+{
+   DISPATCH(GetActiveAttribARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveAttrib(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
+{
+   DISPATCH(GetActiveAttribARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveAttribARB(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
+}
+
+KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocation)(GLuint program, const GLchar * name)
+{
+   RETURN_DISPATCH(GetAttribLocationARB, (program, name), (F, "glGetAttribLocation(%d, %p);\n", program, (const void *) name));
+}
+
+KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name)
+{
+   RETURN_DISPATCH(GetAttribLocationARB, (program, name), (F, "glGetAttribLocationARB(%d, %p);\n", program, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawBuffers)(GLsizei n, const GLenum * bufs)
+{
+   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffers(%d, %p);\n", n, (const void *) bufs));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawBuffersARB)(GLsizei n, const GLenum * bufs)
+{
+   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersARB(%d, %p);\n", n, (const void *) bufs));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs)
+{
+   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+{
+   DISPATCH(RenderbufferStorageMultisample, (target, samples, internalformat, width, height), (F, "glRenderbufferStorageMultisample(0x%x, %d, 0x%x, %d, %d);\n", target, samples, internalformat, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
+{
+   DISPATCH(RenderbufferStorageMultisample, (target, samples, internalformat, width, height), (F, "glRenderbufferStorageMultisampleEXT(0x%x, %d, 0x%x, %d, %d);\n", target, samples, internalformat, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length)
+{
+   DISPATCH(FlushMappedBufferRange, (target, offset, length), (F, "glFlushMappedBufferRange(0x%x, %d, %d);\n", target, offset, length));
+}
+
+KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
+{
+   RETURN_DISPATCH(MapBufferRange, (target, offset, length, access), (F, "glMapBufferRange(0x%x, %d, %d, %d);\n", target, offset, length, access));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindVertexArray)(GLuint array)
+{
+   DISPATCH(BindVertexArray, (array), (F, "glBindVertexArray(%d);\n", array));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenVertexArrays)(GLsizei n, GLuint * arrays)
+{
+   DISPATCH(GenVertexArrays, (n, arrays), (F, "glGenVertexArrays(%d, %p);\n", n, (const void *) arrays));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
+{
+   DISPATCH(CopyBufferSubData, (readTarget, writeTarget, readOffset, writeOffset, size), (F, "glCopyBufferSubData(0x%x, 0x%x, %d, %d, %d);\n", readTarget, writeTarget, readOffset, writeOffset, size));
+}
+
+KEYWORD1 GLenum KEYWORD2 NAME(ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
+{
+   RETURN_DISPATCH(ClientWaitSync, (sync, flags, timeout), (F, "glClientWaitSync(%d, %d, %d);\n", sync, flags, timeout));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteSync)(GLsync sync)
+{
+   DISPATCH(DeleteSync, (sync), (F, "glDeleteSync(%d);\n", sync));
+}
+
+KEYWORD1 GLsync KEYWORD2 NAME(FenceSync)(GLenum condition, GLbitfield flags)
+{
+   RETURN_DISPATCH(FenceSync, (condition, flags), (F, "glFenceSync(0x%x, %d);\n", condition, flags));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetInteger64v)(GLenum pname, GLint64 * params)
+{
+   DISPATCH(GetInteger64v, (pname, params), (F, "glGetInteger64v(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values)
+{
+   DISPATCH(GetSynciv, (sync, pname, bufSize, length, values), (F, "glGetSynciv(%d, 0x%x, %d, %p, %p);\n", sync, pname, bufSize, (const void *) length, (const void *) values));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsSync)(GLsync sync)
+{
+   RETURN_DISPATCH(IsSync, (sync), (F, "glIsSync(%d);\n", sync));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
+{
+   DISPATCH(WaitSync, (sync, flags, timeout), (F, "glWaitSync(%d, %d, %d);\n", sync, flags, timeout));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex)
+{
+   DISPATCH(DrawElementsBaseVertex, (mode, count, type, indices, basevertex), (F, "glDrawElementsBaseVertex(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, basevertex));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex)
+{
+   DISPATCH(DrawRangeElementsBaseVertex, (mode, start, end, count, type, indices, basevertex), (F, "glDrawRangeElementsBaseVertex(0x%x, %d, %d, %d, 0x%x, %p, %d);\n", mode, start, end, count, type, (const void *) indices, basevertex));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex)
+{
+   DISPATCH(MultiDrawElementsBaseVertex, (mode, count, type, indices, primcount, basevertex), (F, "glMultiDrawElementsBaseVertex(0x%x, %p, 0x%x, %p, %d, %p);\n", mode, (const void *) count, type, (const void *) indices, primcount, (const void *) basevertex));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias)
+{
+   DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_580)(GLenum pname, GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_580)(GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_581)(GLenum pname, GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_581)(GLenum pname, GLint * params)
+{
+   DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_582)(GLenum pname, GLfloat param);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_582)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_583)(GLenum pname, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_583)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_584)(GLenum pname, GLint param);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_584)(GLenum pname, GLint param)
+{
+   DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_585)(GLenum pname, const GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_585)(GLenum pname, const GLint * params)
+{
+   DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_586)(GLclampf value, GLboolean invert);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_586)(GLclampf value, GLboolean invert)
+{
+   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_587)(GLenum pattern);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_587)(GLenum pattern)
+{
+   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
+{
+   DISPATCH(ColorPointerEXT, (size, type, stride, count, pointer), (F, "glColorPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer)
+{
+   DISPATCH(EdgeFlagPointerEXT, (stride, count, pointer), (F, "glEdgeFlagPointerEXT(%d, %d, %p);\n", stride, count, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
+{
+   DISPATCH(IndexPointerEXT, (type, stride, count, pointer), (F, "glIndexPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
+{
+   DISPATCH(NormalPointerEXT, (type, stride, count, pointer), (F, "glNormalPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
+{
+   DISPATCH(TexCoordPointerEXT, (size, type, stride, count, pointer), (F, "glTexCoordPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
+{
+   DISPATCH(VertexPointerEXT, (size, type, stride, count, pointer), (F, "glVertexPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterf)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterf(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_594)(GLenum pname, GLfloat param);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_594)(GLenum pname, GLfloat param)
+{
+   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfv)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count)
+{
+   DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %d);\n", first, count));
+}
+
+KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void)
+{
+   DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();\n"));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_598)(GLenum pname, GLdouble * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_598)(GLenum pname, GLdouble * params)
+{
+   DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_599)(GLenum pname, GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_599)(GLenum pname, GLfloat * params)
+{
+   DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue)
+{
+   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3b(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue)
+{
+   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bv)(const GLbyte * v)
+{
+   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v)
+{
+   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue)
+{
+   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3d(%f, %f, %f);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue)
+{
+   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dv)(const GLdouble * v)
+{
+   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v)
+{
+   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue)
+{
+   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3f(%f, %f, %f);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue)
+{
+   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fv)(const GLfloat * v)
+{
+   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v)
+{
+   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3i)(GLint red, GLint green, GLint blue)
+{
+   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3i(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue)
+{
+   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iv)(const GLint * v)
+{
+   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v)
+{
+   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue)
+{
+   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3s(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue)
+{
+   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sv)(const GLshort * v)
+{
+   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v)
+{
+   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue)
+{
+   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ub(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue)
+{
+   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubv)(const GLubyte * v)
+{
+   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v)
+{
+   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue)
+{
+   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3ui(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue)
+{
+   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiv)(const GLuint * v)
+{
+   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uiv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v)
+{
+   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue)
+{
+   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3us(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue)
+{
+   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usv)(const GLushort * v)
+{
+   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v)
+{
+   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiDrawArrays)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
+{
+   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArrays(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
+{
+   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArraysEXT(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
+{
+   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElements(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
+{
+   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElementsEXT(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoordd)(GLdouble coord)
+{
+   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoordd(%f);\n", coord));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord)
+{
+   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoorddv)(const GLdouble * coord)
+{
+   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddv(%p);\n", (const void *) coord));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord)
+{
+   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (const void *) coord));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoordf)(GLfloat coord)
+{
+   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordf(%f);\n", coord));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
+{
+   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoordfv)(const GLfloat * coord)
+{
+   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfv(%p);\n", (const void *) coord));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord)
+{
+   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_624)(GLenum mode);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_624)(GLenum mode)
+{
+   DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+{
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+{
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_625)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_625)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
+{
+   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FlushVertexArrayRangeNV)(void)
+{
+   DISPATCH(FlushVertexArrayRangeNV, (), (F, "glFlushVertexArrayRangeNV();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer)
+{
+   DISPATCH(VertexArrayRangeNV, (length, pointer), (F, "glVertexArrayRangeNV(%d, %p);\n", length, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
+{
+   DISPATCH(CombinerInputNV, (stage, portion, variable, input, mapping, componentUsage), (F, "glCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x);\n", stage, portion, variable, input, mapping, componentUsage));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)
+{
+   DISPATCH(CombinerOutputNV, (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), (F, "glCombinerOutputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, %d, %d, %d);\n", stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CombinerParameterfNV)(GLenum pname, GLfloat param)
+{
+   DISPATCH(CombinerParameterfNV, (pname, param), (F, "glCombinerParameterfNV(0x%x, %f);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CombinerParameterfvNV)(GLenum pname, const GLfloat * params)
+{
+   DISPATCH(CombinerParameterfvNV, (pname, params), (F, "glCombinerParameterfvNV(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CombinerParameteriNV)(GLenum pname, GLint param)
+{
+   DISPATCH(CombinerParameteriNV, (pname, param), (F, "glCombinerParameteriNV(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(CombinerParameterivNV)(GLenum pname, const GLint * params)
+{
+   DISPATCH(CombinerParameterivNV, (pname, params), (F, "glCombinerParameterivNV(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
+{
+   DISPATCH(FinalCombinerInputNV, (variable, input, mapping, componentUsage), (F, "glFinalCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x);\n", variable, input, mapping, componentUsage));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetCombinerInputParameterfvNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterfvNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params)
+{
+   DISPATCH(GetCombinerInputParameterivNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterivNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetCombinerOutputParameterfvNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterfvNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params)
+{
+   DISPATCH(GetCombinerOutputParameterivNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterivNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterfvNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params)
+{
+   DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterivNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void)
+{
+   DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2d)(GLdouble x, GLdouble y)
+{
+   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2d(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y)
+{
+   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dMESA)(GLdouble x, GLdouble y)
+{
+   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dv)(const GLdouble * v)
+{
+   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * v)
+{
+   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v)
+{
+   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2f)(GLfloat x, GLfloat y)
+{
+   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2f(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y)
+{
+   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y)
+{
+   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fv)(const GLfloat * v)
+{
+   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * v)
+{
+   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v)
+{
+   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2i)(GLint x, GLint y)
+{
+   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2i(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y)
+{
+   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y)
+{
+   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2iv)(const GLint * v)
+{
+   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * v)
+{
+   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v)
+{
+   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2s)(GLshort x, GLshort y)
+{
+   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2s(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y)
+{
+   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y)
+{
+   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2sv)(const GLshort * v)
+{
+   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * v)
+{
+   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v)
+{
+   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3d(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dv)(const GLdouble * v)
+{
+   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * v)
+{
+   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v)
+{
+   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3f(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fv)(const GLfloat * v)
+{
+   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * v)
+{
+   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v)
+{
+   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3i)(GLint x, GLint y, GLint z)
+{
+   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3i(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z)
+{
+   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z)
+{
+   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3iv)(const GLint * v)
+{
+   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3iv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * v)
+{
+   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v)
+{
+   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3s)(GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3s(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3sv)(const GLshort * v)
+{
+   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3sv(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * v)
+{
+   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svARB(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v)
+{
+   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v)
+{
+   DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4fvMESA)(const GLfloat * v)
+{
+   DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w)
+{
+   DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v)
+{
+   DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v)
+{
+   DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_666)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_666)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)
+{
+   DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_667)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_667)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride)
+{
+   DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_668)(GLsizei n, const GLuint * fences);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_668)(GLsizei n, const GLuint * fences)
+{
+   DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_669)(GLuint fence);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_669)(GLuint fence)
+{
+   DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_670)(GLsizei n, GLuint * fences);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_670)(GLsizei n, GLuint * fences)
+{
+   DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_671)(GLuint fence, GLenum pname, GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_671)(GLuint fence, GLenum pname, GLint * params)
+{
+   DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params));
+}
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_672)(GLuint fence);
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_672)(GLuint fence)
+{
+   RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_673)(GLuint fence, GLenum condition);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_673)(GLuint fence, GLenum condition)
+{
+   DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition));
+}
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_674)(GLuint fence);
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_674)(GLuint fence)
+{
+   RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences)
+{
+   RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint program)
+{
+   DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramARB(0x%x, %d);\n", target, program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint program)
+{
+   DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramNV(0x%x, %d);\n", target, program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteProgramsARB)(GLsizei n, const GLuint * programs)
+{
+   DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsARB(%d, %p);\n", n, (const void *) programs));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * programs)
+{
+   DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) programs));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params)
+{
+   DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenProgramsARB)(GLsizei n, GLuint * programs)
+{
+   DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsARB(%d, %p);\n", n, (const void *) programs));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * programs)
+{
+   DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) programs));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetProgramParameterfvNV, (target, index, pname, params), (F, "glGetProgramParameterfvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program)
+{
+   DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);\n", id, pname, (const void *) program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params)
+{
+   DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params)
+{
+   DISPATCH(GetTrackMatrixivNV, (target, address, pname, params), (F, "glGetTrackMatrixivNV(0x%x, %d, 0x%x, %p);\n", target, address, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid ** pointer)
+{
+   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointerv(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid ** pointer)
+{
+   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer)
+{
+   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params)
+{
+   DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params)
+{
+   DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramARB)(GLuint program)
+{
+   RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramARB(%d);\n", program));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint program)
+{
+   RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramNV(%d);\n", program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
+{
+   DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params)
+{
+   DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params)
+{
+   DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids)
+{
+   DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%d, %p);\n", n, (const void *) ids));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform)
+{
+   DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);\n", target, address, matrix, transform));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x)
+{
+   DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x)
+{
+   DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x)
+{
+   DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);\n", index, x));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
+{
+   DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
+{
+   DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
+{
+   DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);\n", index, x, y));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
+{
+   DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
+{
+   DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
+{
+   DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);\n", index, x, y, z));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v)
+{
+   DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
+{
+   DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
+{
+   DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v)
+{
+   DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
+{
+   DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v)
+{
+   DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);\n", index, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
+{
+   DISPATCH(VertexAttribPointerNV, (index, size, type, stride, pointer), (F, "glVertexAttribPointerNV(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v)
+{
+   DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v)
+{
+   DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v)
+{
+   DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v)
+{
+   DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param)
+{
+   DISPATCH(GetTexBumpParameterfvATI, (pname, param), (F, "glGetTexBumpParameterfvATI(0x%x, %p);\n", pname, (const void *) param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTexBumpParameterivATI)(GLenum pname, GLint * param)
+{
+   DISPATCH(GetTexBumpParameterivATI, (pname, param), (F, "glGetTexBumpParameterivATI(0x%x, %p);\n", pname, (const void *) param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexBumpParameterfvATI)(GLenum pname, const GLfloat * param)
+{
+   DISPATCH(TexBumpParameterfvATI, (pname, param), (F, "glTexBumpParameterfvATI(0x%x, %p);\n", pname, (const void *) param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TexBumpParameterivATI)(GLenum pname, const GLint * param)
+{
+   DISPATCH(TexBumpParameterivATI, (pname, param), (F, "glTexBumpParameterivATI(0x%x, %p);\n", pname, (const void *) param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+{
+   DISPATCH(AlphaFragmentOp1ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod), (F, "glAlphaFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod));
+}
+
+KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+{
+   DISPATCH(AlphaFragmentOp2ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glAlphaFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
+}
+
+KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
+{
+   DISPATCH(AlphaFragmentOp3ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glAlphaFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BeginFragmentShaderATI)(void)
+{
+   DISPATCH(BeginFragmentShaderATI, (), (F, "glBeginFragmentShaderATI();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindFragmentShaderATI)(GLuint id)
+{
+   DISPATCH(BindFragmentShaderATI, (id), (F, "glBindFragmentShaderATI(%d);\n", id));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
+{
+   DISPATCH(ColorFragmentOp1ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), (F, "glColorFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
+{
+   DISPATCH(ColorFragmentOp2ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glColorFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
+{
+   DISPATCH(ColorFragmentOp3ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glColorFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteFragmentShaderATI)(GLuint id)
+{
+   DISPATCH(DeleteFragmentShaderATI, (id), (F, "glDeleteFragmentShaderATI(%d);\n", id));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EndFragmentShaderATI)(void)
+{
+   DISPATCH(EndFragmentShaderATI, (), (F, "glEndFragmentShaderATI();\n"));
+}
+
+KEYWORD1 GLuint KEYWORD2 NAME(GenFragmentShadersATI)(GLuint range)
+{
+   RETURN_DISPATCH(GenFragmentShadersATI, (range), (F, "glGenFragmentShadersATI(%d);\n", range));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle)
+{
+   DISPATCH(PassTexCoordATI, (dst, coord, swizzle), (F, "glPassTexCoordATI(%d, %d, 0x%x);\n", dst, coord, swizzle));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle)
+{
+   DISPATCH(SampleMapATI, (dst, interp, swizzle), (F, "glSampleMapATI(%d, %d, 0x%x);\n", dst, interp, swizzle));
+}
+
+KEYWORD1 void KEYWORD2 NAME(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value)
+{
+   DISPATCH(SetFragmentShaderConstantATI, (dst, value), (F, "glSetFragmentShaderConstantATI(%d, %p);\n", dst, (const void *) value));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameteri)(GLenum pname, GLint param)
+{
+   DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteri(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint param)
+{
+   DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteriNV(0x%x, %d);\n", pname, param));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameteriv)(GLenum pname, const GLint * params)
+{
+   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameteriv(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * params)
+{
+   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_755)(GLenum face);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_755)(GLenum face)
+{
+   DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_756)(GLuint array);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_756)(GLuint array)
+{
+   DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteVertexArrays)(GLsizei n, const GLuint * arrays)
+{
+   DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArrays(%d, %p);\n", n, (const void *) arrays));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_757)(GLsizei n, const GLuint * arrays);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_757)(GLsizei n, const GLuint * arrays)
+{
+   DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_758)(GLsizei n, GLuint * arrays);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_758)(GLsizei n, GLuint * arrays)
+{
+   DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArray)(GLuint array)
+{
+   RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArray(%d);\n", array));
+}
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_759)(GLuint array);
+
+KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_759)(GLuint array)
+{
+   RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params)
+{
+   DISPATCH(GetProgramNamedParameterdvNV, (id, len, name, params), (F, "glGetProgramNamedParameterdvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params)
+{
+   DISPATCH(GetProgramNamedParameterfvNV, (id, len, name, params), (F, "glGetProgramNamedParameterfvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
+{
+   DISPATCH(ProgramNamedParameter4dNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4dNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)
+{
+   DISPATCH(ProgramNamedParameter4dvNV, (id, len, name, v), (F, "glProgramNamedParameter4dvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
+{
+   DISPATCH(ProgramNamedParameter4fNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4fNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)
+{
+   DISPATCH(ProgramNamedParameter4fvNV, (id, len, name, v), (F, "glProgramNamedParameter4fvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_766)(GLclampd zmin, GLclampd zmax);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_766)(GLclampd zmin, GLclampd zmax)
+{
+   DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA)
+{
+   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparate(0x%x, 0x%x);\n", modeRGB, modeA));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_767)(GLenum modeRGB, GLenum modeA);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_767)(GLenum modeRGB, GLenum modeA)
+{
+   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindFramebuffer)(GLenum target, GLuint framebuffer)
+{
+   DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebuffer(0x%x, %d);\n", target, framebuffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindFramebufferEXT)(GLenum target, GLuint framebuffer)
+{
+   DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebufferEXT(0x%x, %d);\n", target, framebuffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindRenderbuffer)(GLenum target, GLuint renderbuffer)
+{
+   DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbuffer(0x%x, %d);\n", target, renderbuffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer)
+{
+   DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbufferEXT(0x%x, %d);\n", target, renderbuffer));
+}
+
+KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatus)(GLenum target)
+{
+   RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatus(0x%x);\n", target));
+}
+
+KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatusEXT)(GLenum target)
+{
+   RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatusEXT(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffers)(GLsizei n, const GLuint * framebuffers)
+{
+   DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffers(%d, %p);\n", n, (const void *) framebuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers)
+{
+   DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffers)(GLsizei n, const GLuint * renderbuffers)
+{
+   DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffers(%d, %p);\n", n, (const void *) renderbuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers)
+{
+   DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+   DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbuffer(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
+{
+   DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbufferEXT(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+   DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1D(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+   DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+   DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2D(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
+{
+   DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+{
+   DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3D(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
+{
+   DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3DEXT(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenFramebuffers)(GLsizei n, GLuint * framebuffers)
+{
+   DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffers(%d, %p);\n", n, (const void *) framebuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers)
+{
+   DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenRenderbuffers)(GLsizei n, GLuint * renderbuffers)
+{
+   DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffers(%d, %p);\n", n, (const void *) renderbuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers)
+{
+   DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenerateMipmap)(GLenum target)
+{
+   DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmap(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenerateMipmapEXT)(GLenum target)
+{
+   DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmapEXT(0x%x);\n", target));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
+{
+   DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameteriv(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
+{
+   DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameterivEXT(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebuffer)(GLuint framebuffer)
+{
+   RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebuffer(%d);\n", framebuffer));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebufferEXT)(GLuint framebuffer)
+{
+   RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebufferEXT(%d);\n", framebuffer));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbuffer)(GLuint renderbuffer)
+{
+   RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbuffer(%d);\n", renderbuffer));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbufferEXT)(GLuint renderbuffer)
+{
+   RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbufferEXT(%d);\n", renderbuffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+   DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorage(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
+{
+   DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorageEXT(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+{
+   DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebuffer(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_785)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_785)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
+{
+   DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_786)(GLenum target, GLenum pname, GLint param);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_786)(GLenum target, GLenum pname, GLint param)
+{
+   DISPATCH(BufferParameteriAPPLE, (target, pname, param), (F, "glBufferParameteriAPPLE(0x%x, 0x%x, %d);\n", target, pname, param));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLenum target, GLintptr offset, GLsizeiptr size);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLenum target, GLintptr offset, GLsizeiptr size)
+{
+   DISPATCH(FlushMappedBufferRangeAPPLE, (target, offset, size), (F, "glFlushMappedBufferRangeAPPLE(0x%x, %d, %d);\n", target, offset, size));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+{
+   DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayer(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
+{
+   DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayerEXT(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
+{
+   DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaskIndexedEXT(%d, %d, %d, %d, %d);\n", buf, r, g, b, a));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DisableIndexedEXT)(GLenum target, GLuint index)
+{
+   DISPATCH(DisableIndexedEXT, (target, index), (F, "glDisableIndexedEXT(0x%x, %d);\n", target, index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EnableIndexedEXT)(GLenum target, GLuint index)
+{
+   DISPATCH(EnableIndexedEXT, (target, index), (F, "glEnableIndexedEXT(0x%x, %d);\n", target, index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data)
+{
+   DISPATCH(GetBooleanIndexedvEXT, (value, index, data), (F, "glGetBooleanIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data)
+{
+   DISPATCH(GetIntegerIndexedvEXT, (value, index, data), (F, "glGetIntegerIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabledIndexedEXT)(GLenum target, GLuint index)
+{
+   RETURN_DISPATCH(IsEnabledIndexedEXT, (target, index), (F, "glIsEnabledIndexedEXT(0x%x, %d);\n", target, index));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BeginConditionalRenderNV)(GLuint query, GLenum mode)
+{
+   DISPATCH(BeginConditionalRenderNV, (query, mode), (F, "glBeginConditionalRenderNV(%d, 0x%x);\n", query, mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EndConditionalRenderNV)(void)
+{
+   DISPATCH(EndConditionalRenderNV, (), (F, "glEndConditionalRenderNV();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedbackEXT)(GLenum mode)
+{
+   DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedbackEXT(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedback)(GLenum mode)
+{
+   DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedback(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer)
+{
+   DISPATCH(BindBufferBaseEXT, (target, index, buffer), (F, "glBindBufferBaseEXT(0x%x, %d, %d);\n", target, index, buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindBufferBase)(GLenum target, GLuint index, GLuint buffer)
+{
+   DISPATCH(BindBufferBaseEXT, (target, index, buffer), (F, "glBindBufferBase(0x%x, %d, %d);\n", target, index, buffer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)
+{
+   DISPATCH(BindBufferOffsetEXT, (target, index, buffer, offset), (F, "glBindBufferOffsetEXT(0x%x, %d, %d, %d);\n", target, index, buffer, offset));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+{
+   DISPATCH(BindBufferRangeEXT, (target, index, buffer, offset, size), (F, "glBindBufferRangeEXT(0x%x, %d, %d, %d, %d);\n", target, index, buffer, offset, size));
+}
+
+KEYWORD1 void KEYWORD2 NAME(BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
+{
+   DISPATCH(BindBufferRangeEXT, (target, index, buffer, offset, size), (F, "glBindBufferRange(0x%x, %d, %d, %d, %d);\n", target, index, buffer, offset, size));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EndTransformFeedbackEXT)(void)
+{
+   DISPATCH(EndTransformFeedbackEXT, (), (F, "glEndTransformFeedbackEXT();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EndTransformFeedback)(void)
+{
+   DISPATCH(EndTransformFeedbackEXT, (), (F, "glEndTransformFeedback();\n"));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)
+{
+   DISPATCH(GetTransformFeedbackVaryingEXT, (program, index, bufSize, length, size, type, name), (F, "glGetTransformFeedbackVaryingEXT(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)
+{
+   DISPATCH(GetTransformFeedbackVaryingEXT, (program, index, bufSize, length, size, type, name), (F, "glGetTransformFeedbackVarying(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode)
+{
+   DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryingsEXT(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryings)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode)
+{
+   DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryings(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProvokingVertexEXT)(GLenum mode)
+{
+   DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertexEXT(0x%x);\n", mode));
+}
+
+KEYWORD1 void KEYWORD2 NAME(ProvokingVertex)(GLenum mode)
+{
+   DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertex(0x%x);\n", mode));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_805)(GLenum target, GLenum pname, GLvoid ** params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_805)(GLenum target, GLenum pname, GLvoid ** params)
+{
+   DISPATCH(GetTexParameterPointervAPPLE, (target, pname, params), (F, "glGetTexParameterPointervAPPLE(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_806)(GLenum target, GLsizei length, GLvoid * pointer);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_806)(GLenum target, GLsizei length, GLvoid * pointer)
+{
+   DISPATCH(TextureRangeAPPLE, (target, length, pointer), (F, "glTextureRangeAPPLE(0x%x, %d, %p);\n", target, length, (const void *) pointer));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value)
+{
+   DISPATCH(GetObjectParameterivAPPLE, (objectType, name, pname, value), (F, "glGetObjectParameterivAPPLE(0x%x, %d, 0x%x, %p);\n", objectType, name, pname, (const void *) value));
+}
+
+KEYWORD1 GLenum KEYWORD2 NAME(ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
+{
+   RETURN_DISPATCH(ObjectPurgeableAPPLE, (objectType, name, option), (F, "glObjectPurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option));
+}
+
+KEYWORD1 GLenum KEYWORD2 NAME(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
+{
+   RETURN_DISPATCH(ObjectUnpurgeableAPPLE, (objectType, name, option), (F, "glObjectUnpurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_810)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_810)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
+{
+   DISPATCH(StencilFuncSeparateATI, (frontfunc, backfunc, ref, mask), (F, "glStencilFuncSeparateATI(0x%x, 0x%x, %d, %d);\n", frontfunc, backfunc, ref, mask));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_811)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_811)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+{
+   DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_812)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_812)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
+{
+   DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_813)(GLuint id, GLenum pname, GLint64EXT * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_813)(GLuint id, GLenum pname, GLint64EXT * params)
+{
+   DISPATCH(GetQueryObjecti64vEXT, (id, pname, params), (F, "glGetQueryObjecti64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_814)(GLuint id, GLenum pname, GLuint64EXT * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_814)(GLuint id, GLenum pname, GLuint64EXT * params)
+{
+   DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset)
+{
+   DISPATCH(EGLImageTargetRenderbufferStorageOES, (target, writeOffset), (F, "glEGLImageTargetRenderbufferStorageOES(0x%x, %p);\n", target, (const void *) writeOffset));
+}
+
+KEYWORD1 void KEYWORD2 NAME(EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset)
+{
+   DISPATCH(EGLImageTargetTexture2DOES, (target, writeOffset), (F, "glEGLImageTargetTexture2DOES(0x%x, %p);\n", target, (const void *) writeOffset));
+}
+
+
+#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */
+
+/* these entry points might require different protocols */
+#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS
+
+KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResidentEXT)(GLsizei n, const GLuint * textures, GLboolean * residences)
+{
+   RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResidentEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences));
+}
+
+KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures)
+{
+   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%d, %p);\n", n, (const void *) textures));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GenTexturesEXT)(GLsizei n, GLuint * textures)
+{
+   DISPATCH(GenTextures, (n, textures), (F, "glGenTexturesEXT(%d, %p);\n", n, (const void *) textures));
+}
+
+KEYWORD1 GLboolean KEYWORD2 NAME(IsTextureEXT)(GLuint texture)
+{
+   RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTextureEXT(%d);\n", texture));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * table)
+{
+   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_343)(GLenum target, GLenum format, GLenum type, GLvoid * table);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_343)(GLenum target, GLenum format, GLenum type, GLvoid * table)
+{
+   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTableSGI(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_344)(GLenum target, GLenum pname, GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_344)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_345)(GLenum target, GLenum pname, GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_345)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_356)(GLenum target, GLenum format, GLenum type, GLvoid * image);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_356)(GLenum target, GLenum format, GLenum type, GLvoid * image)
+{
+   DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilterEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_357)(GLenum target, GLenum pname, GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_357)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_358)(GLenum target, GLenum pname, GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_358)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_359)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_359)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
+{
+   DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilterEXT(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (const void *) row, (const void *) column, (const void *) span));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_361)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_361)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
+{
+   DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogramEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_362)(GLenum target, GLenum pname, GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_362)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_363)(GLenum target, GLenum pname, GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_363)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_364)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_364)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
+{
+   DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmaxEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_365)(GLenum target, GLenum pname, GLfloat * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_365)(GLenum target, GLenum pname, GLfloat * params)
+{
+   DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_366)(GLenum target, GLenum pname, GLint * params);
+
+KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_366)(GLenum target, GLenum pname, GLint * params)
+{
+   DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
+}
+
+
+#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */
+
+
+#endif /* defined( NAME ) */
+
+/*
+ * This is how a dispatch table can be initialized with all the functions
+ * we generated above.
+ */
+#ifdef DISPATCH_TABLE_NAME
+
+#ifndef TABLE_ENTRY
+#error TABLE_ENTRY must be defined
+#endif
+
+#ifdef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
+#error _GLAPI_SKIP_NORMAL_ENTRY_POINTS must not be defined
+#endif
+
+_glapi_proc DISPATCH_TABLE_NAME[] = {
+   TABLE_ENTRY(NewList),
+   TABLE_ENTRY(EndList),
+   TABLE_ENTRY(CallList),
+   TABLE_ENTRY(CallLists),
+   TABLE_ENTRY(DeleteLists),
+   TABLE_ENTRY(GenLists),
+   TABLE_ENTRY(ListBase),
+   TABLE_ENTRY(Begin),
+   TABLE_ENTRY(Bitmap),
+   TABLE_ENTRY(Color3b),
+   TABLE_ENTRY(Color3bv),
+   TABLE_ENTRY(Color3d),
+   TABLE_ENTRY(Color3dv),
+   TABLE_ENTRY(Color3f),
+   TABLE_ENTRY(Color3fv),
+   TABLE_ENTRY(Color3i),
+   TABLE_ENTRY(Color3iv),
+   TABLE_ENTRY(Color3s),
+   TABLE_ENTRY(Color3sv),
+   TABLE_ENTRY(Color3ub),
+   TABLE_ENTRY(Color3ubv),
+   TABLE_ENTRY(Color3ui),
+   TABLE_ENTRY(Color3uiv),
+   TABLE_ENTRY(Color3us),
+   TABLE_ENTRY(Color3usv),
+   TABLE_ENTRY(Color4b),
+   TABLE_ENTRY(Color4bv),
+   TABLE_ENTRY(Color4d),
+   TABLE_ENTRY(Color4dv),
+   TABLE_ENTRY(Color4f),
+   TABLE_ENTRY(Color4fv),
+   TABLE_ENTRY(Color4i),
+   TABLE_ENTRY(Color4iv),
+   TABLE_ENTRY(Color4s),
+   TABLE_ENTRY(Color4sv),
+   TABLE_ENTRY(Color4ub),
+   TABLE_ENTRY(Color4ubv),
+   TABLE_ENTRY(Color4ui),
+   TABLE_ENTRY(Color4uiv),
+   TABLE_ENTRY(Color4us),
+   TABLE_ENTRY(Color4usv),
+   TABLE_ENTRY(EdgeFlag),
+   TABLE_ENTRY(EdgeFlagv),
+   TABLE_ENTRY(End),
+   TABLE_ENTRY(Indexd),
+   TABLE_ENTRY(Indexdv),
+   TABLE_ENTRY(Indexf),
+   TABLE_ENTRY(Indexfv),
+   TABLE_ENTRY(Indexi),
+   TABLE_ENTRY(Indexiv),
+   TABLE_ENTRY(Indexs),
+   TABLE_ENTRY(Indexsv),
+   TABLE_ENTRY(Normal3b),
+   TABLE_ENTRY(Normal3bv),
+   TABLE_ENTRY(Normal3d),
+   TABLE_ENTRY(Normal3dv),
+   TABLE_ENTRY(Normal3f),
+   TABLE_ENTRY(Normal3fv),
+   TABLE_ENTRY(Normal3i),
+   TABLE_ENTRY(Normal3iv),
+   TABLE_ENTRY(Normal3s),
+   TABLE_ENTRY(Normal3sv),
+   TABLE_ENTRY(RasterPos2d),
+   TABLE_ENTRY(RasterPos2dv),
+   TABLE_ENTRY(RasterPos2f),
+   TABLE_ENTRY(RasterPos2fv),
+   TABLE_ENTRY(RasterPos2i),
+   TABLE_ENTRY(RasterPos2iv),
+   TABLE_ENTRY(RasterPos2s),
+   TABLE_ENTRY(RasterPos2sv),
+   TABLE_ENTRY(RasterPos3d),
+   TABLE_ENTRY(RasterPos3dv),
+   TABLE_ENTRY(RasterPos3f),
+   TABLE_ENTRY(RasterPos3fv),
+   TABLE_ENTRY(RasterPos3i),
+   TABLE_ENTRY(RasterPos3iv),
+   TABLE_ENTRY(RasterPos3s),
+   TABLE_ENTRY(RasterPos3sv),
+   TABLE_ENTRY(RasterPos4d),
+   TABLE_ENTRY(RasterPos4dv),
+   TABLE_ENTRY(RasterPos4f),
+   TABLE_ENTRY(RasterPos4fv),
+   TABLE_ENTRY(RasterPos4i),
+   TABLE_ENTRY(RasterPos4iv),
+   TABLE_ENTRY(RasterPos4s),
+   TABLE_ENTRY(RasterPos4sv),
+   TABLE_ENTRY(Rectd),
+   TABLE_ENTRY(Rectdv),
+   TABLE_ENTRY(Rectf),
+   TABLE_ENTRY(Rectfv),
+   TABLE_ENTRY(Recti),
+   TABLE_ENTRY(Rectiv),
+   TABLE_ENTRY(Rects),
+   TABLE_ENTRY(Rectsv),
+   TABLE_ENTRY(TexCoord1d),
+   TABLE_ENTRY(TexCoord1dv),
+   TABLE_ENTRY(TexCoord1f),
+   TABLE_ENTRY(TexCoord1fv),
+   TABLE_ENTRY(TexCoord1i),
+   TABLE_ENTRY(TexCoord1iv),
+   TABLE_ENTRY(TexCoord1s),
+   TABLE_ENTRY(TexCoord1sv),
+   TABLE_ENTRY(TexCoord2d),
+   TABLE_ENTRY(TexCoord2dv),
+   TABLE_ENTRY(TexCoord2f),
+   TABLE_ENTRY(TexCoord2fv),
+   TABLE_ENTRY(TexCoord2i),
+   TABLE_ENTRY(TexCoord2iv),
+   TABLE_ENTRY(TexCoord2s),
+   TABLE_ENTRY(TexCoord2sv),
+   TABLE_ENTRY(TexCoord3d),
+   TABLE_ENTRY(TexCoord3dv),
+   TABLE_ENTRY(TexCoord3f),
+   TABLE_ENTRY(TexCoord3fv),
+   TABLE_ENTRY(TexCoord3i),
+   TABLE_ENTRY(TexCoord3iv),
+   TABLE_ENTRY(TexCoord3s),
+   TABLE_ENTRY(TexCoord3sv),
+   TABLE_ENTRY(TexCoord4d),
+   TABLE_ENTRY(TexCoord4dv),
+   TABLE_ENTRY(TexCoord4f),
+   TABLE_ENTRY(TexCoord4fv),
+   TABLE_ENTRY(TexCoord4i),
+   TABLE_ENTRY(TexCoord4iv),
+   TABLE_ENTRY(TexCoord4s),
+   TABLE_ENTRY(TexCoord4sv),
+   TABLE_ENTRY(Vertex2d),
+   TABLE_ENTRY(Vertex2dv),
+   TABLE_ENTRY(Vertex2f),
+   TABLE_ENTRY(Vertex2fv),
+   TABLE_ENTRY(Vertex2i),
+   TABLE_ENTRY(Vertex2iv),
+   TABLE_ENTRY(Vertex2s),
+   TABLE_ENTRY(Vertex2sv),
+   TABLE_ENTRY(Vertex3d),
+   TABLE_ENTRY(Vertex3dv),
+   TABLE_ENTRY(Vertex3f),
+   TABLE_ENTRY(Vertex3fv),
+   TABLE_ENTRY(Vertex3i),
+   TABLE_ENTRY(Vertex3iv),
+   TABLE_ENTRY(Vertex3s),
+   TABLE_ENTRY(Vertex3sv),
+   TABLE_ENTRY(Vertex4d),
+   TABLE_ENTRY(Vertex4dv),
+   TABLE_ENTRY(Vertex4f),
+   TABLE_ENTRY(Vertex4fv),
+   TABLE_ENTRY(Vertex4i),
+   TABLE_ENTRY(Vertex4iv),
+   TABLE_ENTRY(Vertex4s),
+   TABLE_ENTRY(Vertex4sv),
+   TABLE_ENTRY(ClipPlane),
+   TABLE_ENTRY(ColorMaterial),
+   TABLE_ENTRY(CullFace),
+   TABLE_ENTRY(Fogf),
+   TABLE_ENTRY(Fogfv),
+   TABLE_ENTRY(Fogi),
+   TABLE_ENTRY(Fogiv),
+   TABLE_ENTRY(FrontFace),
+   TABLE_ENTRY(Hint),
+   TABLE_ENTRY(Lightf),
+   TABLE_ENTRY(Lightfv),
+   TABLE_ENTRY(Lighti),
+   TABLE_ENTRY(Lightiv),
+   TABLE_ENTRY(LightModelf),
+   TABLE_ENTRY(LightModelfv),
+   TABLE_ENTRY(LightModeli),
+   TABLE_ENTRY(LightModeliv),
+   TABLE_ENTRY(LineStipple),
+   TABLE_ENTRY(LineWidth),
+   TABLE_ENTRY(Materialf),
+   TABLE_ENTRY(Materialfv),
+   TABLE_ENTRY(Materiali),
+   TABLE_ENTRY(Materialiv),
+   TABLE_ENTRY(PointSize),
+   TABLE_ENTRY(PolygonMode),
+   TABLE_ENTRY(PolygonStipple),
+   TABLE_ENTRY(Scissor),
+   TABLE_ENTRY(ShadeModel),
+   TABLE_ENTRY(TexParameterf),
+   TABLE_ENTRY(TexParameterfv),
+   TABLE_ENTRY(TexParameteri),
+   TABLE_ENTRY(TexParameteriv),
+   TABLE_ENTRY(TexImage1D),
+   TABLE_ENTRY(TexImage2D),
+   TABLE_ENTRY(TexEnvf),
+   TABLE_ENTRY(TexEnvfv),
+   TABLE_ENTRY(TexEnvi),
+   TABLE_ENTRY(TexEnviv),
+   TABLE_ENTRY(TexGend),
+   TABLE_ENTRY(TexGendv),
+   TABLE_ENTRY(TexGenf),
+   TABLE_ENTRY(TexGenfv),
+   TABLE_ENTRY(TexGeni),
+   TABLE_ENTRY(TexGeniv),
+   TABLE_ENTRY(FeedbackBuffer),
+   TABLE_ENTRY(SelectBuffer),
+   TABLE_ENTRY(RenderMode),
+   TABLE_ENTRY(InitNames),
+   TABLE_ENTRY(LoadName),
+   TABLE_ENTRY(PassThrough),
+   TABLE_ENTRY(PopName),
+   TABLE_ENTRY(PushName),
+   TABLE_ENTRY(DrawBuffer),
+   TABLE_ENTRY(Clear),
+   TABLE_ENTRY(ClearAccum),
+   TABLE_ENTRY(ClearIndex),
+   TABLE_ENTRY(ClearColor),
+   TABLE_ENTRY(ClearStencil),
+   TABLE_ENTRY(ClearDepth),
+   TABLE_ENTRY(StencilMask),
+   TABLE_ENTRY(ColorMask),
+   TABLE_ENTRY(DepthMask),
+   TABLE_ENTRY(IndexMask),
+   TABLE_ENTRY(Accum),
+   TABLE_ENTRY(Disable),
+   TABLE_ENTRY(Enable),
+   TABLE_ENTRY(Finish),
+   TABLE_ENTRY(Flush),
+   TABLE_ENTRY(PopAttrib),
+   TABLE_ENTRY(PushAttrib),
+   TABLE_ENTRY(Map1d),
+   TABLE_ENTRY(Map1f),
+   TABLE_ENTRY(Map2d),
+   TABLE_ENTRY(Map2f),
+   TABLE_ENTRY(MapGrid1d),
+   TABLE_ENTRY(MapGrid1f),
+   TABLE_ENTRY(MapGrid2d),
+   TABLE_ENTRY(MapGrid2f),
+   TABLE_ENTRY(EvalCoord1d),
+   TABLE_ENTRY(EvalCoord1dv),
+   TABLE_ENTRY(EvalCoord1f),
+   TABLE_ENTRY(EvalCoord1fv),
+   TABLE_ENTRY(EvalCoord2d),
+   TABLE_ENTRY(EvalCoord2dv),
+   TABLE_ENTRY(EvalCoord2f),
+   TABLE_ENTRY(EvalCoord2fv),
+   TABLE_ENTRY(EvalMesh1),
+   TABLE_ENTRY(EvalPoint1),
+   TABLE_ENTRY(EvalMesh2),
+   TABLE_ENTRY(EvalPoint2),
+   TABLE_ENTRY(AlphaFunc),
+   TABLE_ENTRY(BlendFunc),
+   TABLE_ENTRY(LogicOp),
+   TABLE_ENTRY(StencilFunc),
+   TABLE_ENTRY(StencilOp),
+   TABLE_ENTRY(DepthFunc),
+   TABLE_ENTRY(PixelZoom),
+   TABLE_ENTRY(PixelTransferf),
+   TABLE_ENTRY(PixelTransferi),
+   TABLE_ENTRY(PixelStoref),
+   TABLE_ENTRY(PixelStorei),
+   TABLE_ENTRY(PixelMapfv),
+   TABLE_ENTRY(PixelMapuiv),
+   TABLE_ENTRY(PixelMapusv),
+   TABLE_ENTRY(ReadBuffer),
+   TABLE_ENTRY(CopyPixels),
+   TABLE_ENTRY(ReadPixels),
+   TABLE_ENTRY(DrawPixels),
+   TABLE_ENTRY(GetBooleanv),
+   TABLE_ENTRY(GetClipPlane),
+   TABLE_ENTRY(GetDoublev),
+   TABLE_ENTRY(GetError),
+   TABLE_ENTRY(GetFloatv),
+   TABLE_ENTRY(GetIntegerv),
+   TABLE_ENTRY(GetLightfv),
+   TABLE_ENTRY(GetLightiv),
+   TABLE_ENTRY(GetMapdv),
+   TABLE_ENTRY(GetMapfv),
+   TABLE_ENTRY(GetMapiv),
+   TABLE_ENTRY(GetMaterialfv),
+   TABLE_ENTRY(GetMaterialiv),
+   TABLE_ENTRY(GetPixelMapfv),
+   TABLE_ENTRY(GetPixelMapuiv),
+   TABLE_ENTRY(GetPixelMapusv),
+   TABLE_ENTRY(GetPolygonStipple),
+   TABLE_ENTRY(GetString),
+   TABLE_ENTRY(GetTexEnvfv),
+   TABLE_ENTRY(GetTexEnviv),
+   TABLE_ENTRY(GetTexGendv),
+   TABLE_ENTRY(GetTexGenfv),
+   TABLE_ENTRY(GetTexGeniv),
+   TABLE_ENTRY(GetTexImage),
+   TABLE_ENTRY(GetTexParameterfv),
+   TABLE_ENTRY(GetTexParameteriv),
+   TABLE_ENTRY(GetTexLevelParameterfv),
+   TABLE_ENTRY(GetTexLevelParameteriv),
+   TABLE_ENTRY(IsEnabled),
+   TABLE_ENTRY(IsList),
+   TABLE_ENTRY(DepthRange),
+   TABLE_ENTRY(Frustum),
+   TABLE_ENTRY(LoadIdentity),
+   TABLE_ENTRY(LoadMatrixf),
+   TABLE_ENTRY(LoadMatrixd),
+   TABLE_ENTRY(MatrixMode),
+   TABLE_ENTRY(MultMatrixf),
+   TABLE_ENTRY(MultMatrixd),
+   TABLE_ENTRY(Ortho),
+   TABLE_ENTRY(PopMatrix),
+   TABLE_ENTRY(PushMatrix),
+   TABLE_ENTRY(Rotated),
+   TABLE_ENTRY(Rotatef),
+   TABLE_ENTRY(Scaled),
+   TABLE_ENTRY(Scalef),
+   TABLE_ENTRY(Translated),
+   TABLE_ENTRY(Translatef),
+   TABLE_ENTRY(Viewport),
+   TABLE_ENTRY(ArrayElement),
+   TABLE_ENTRY(BindTexture),
+   TABLE_ENTRY(ColorPointer),
+   TABLE_ENTRY(DisableClientState),
+   TABLE_ENTRY(DrawArrays),
+   TABLE_ENTRY(DrawElements),
+   TABLE_ENTRY(EdgeFlagPointer),
+   TABLE_ENTRY(EnableClientState),
+   TABLE_ENTRY(IndexPointer),
+   TABLE_ENTRY(Indexub),
+   TABLE_ENTRY(Indexubv),
+   TABLE_ENTRY(InterleavedArrays),
+   TABLE_ENTRY(NormalPointer),
+   TABLE_ENTRY(PolygonOffset),
+   TABLE_ENTRY(TexCoordPointer),
+   TABLE_ENTRY(VertexPointer),
+   TABLE_ENTRY(AreTexturesResident),
+   TABLE_ENTRY(CopyTexImage1D),
+   TABLE_ENTRY(CopyTexImage2D),
+   TABLE_ENTRY(CopyTexSubImage1D),
+   TABLE_ENTRY(CopyTexSubImage2D),
+   TABLE_ENTRY(DeleteTextures),
+   TABLE_ENTRY(GenTextures),
+   TABLE_ENTRY(GetPointerv),
+   TABLE_ENTRY(IsTexture),
+   TABLE_ENTRY(PrioritizeTextures),
+   TABLE_ENTRY(TexSubImage1D),
+   TABLE_ENTRY(TexSubImage2D),
+   TABLE_ENTRY(PopClientAttrib),
+   TABLE_ENTRY(PushClientAttrib),
+   TABLE_ENTRY(BlendColor),
+   TABLE_ENTRY(BlendEquation),
+   TABLE_ENTRY(DrawRangeElements),
+   TABLE_ENTRY(ColorTable),
+   TABLE_ENTRY(ColorTableParameterfv),
+   TABLE_ENTRY(ColorTableParameteriv),
+   TABLE_ENTRY(CopyColorTable),
+   TABLE_ENTRY(GetColorTable),
+   TABLE_ENTRY(GetColorTableParameterfv),
+   TABLE_ENTRY(GetColorTableParameteriv),
+   TABLE_ENTRY(ColorSubTable),
+   TABLE_ENTRY(CopyColorSubTable),
+   TABLE_ENTRY(ConvolutionFilter1D),
+   TABLE_ENTRY(ConvolutionFilter2D),
+   TABLE_ENTRY(ConvolutionParameterf),
+   TABLE_ENTRY(ConvolutionParameterfv),
+   TABLE_ENTRY(ConvolutionParameteri),
+   TABLE_ENTRY(ConvolutionParameteriv),
+   TABLE_ENTRY(CopyConvolutionFilter1D),
+   TABLE_ENTRY(CopyConvolutionFilter2D),
+   TABLE_ENTRY(GetConvolutionFilter),
+   TABLE_ENTRY(GetConvolutionParameterfv),
+   TABLE_ENTRY(GetConvolutionParameteriv),
+   TABLE_ENTRY(GetSeparableFilter),
+   TABLE_ENTRY(SeparableFilter2D),
+   TABLE_ENTRY(GetHistogram),
+   TABLE_ENTRY(GetHistogramParameterfv),
+   TABLE_ENTRY(GetHistogramParameteriv),
+   TABLE_ENTRY(GetMinmax),
+   TABLE_ENTRY(GetMinmaxParameterfv),
+   TABLE_ENTRY(GetMinmaxParameteriv),
+   TABLE_ENTRY(Histogram),
+   TABLE_ENTRY(Minmax),
+   TABLE_ENTRY(ResetHistogram),
+   TABLE_ENTRY(ResetMinmax),
+   TABLE_ENTRY(TexImage3D),
+   TABLE_ENTRY(TexSubImage3D),
+   TABLE_ENTRY(CopyTexSubImage3D),
+   TABLE_ENTRY(ActiveTextureARB),
+   TABLE_ENTRY(ClientActiveTextureARB),
+   TABLE_ENTRY(MultiTexCoord1dARB),
+   TABLE_ENTRY(MultiTexCoord1dvARB),
+   TABLE_ENTRY(MultiTexCoord1fARB),
+   TABLE_ENTRY(MultiTexCoord1fvARB),
+   TABLE_ENTRY(MultiTexCoord1iARB),
+   TABLE_ENTRY(MultiTexCoord1ivARB),
+   TABLE_ENTRY(MultiTexCoord1sARB),
+   TABLE_ENTRY(MultiTexCoord1svARB),
+   TABLE_ENTRY(MultiTexCoord2dARB),
+   TABLE_ENTRY(MultiTexCoord2dvARB),
+   TABLE_ENTRY(MultiTexCoord2fARB),
+   TABLE_ENTRY(MultiTexCoord2fvARB),
+   TABLE_ENTRY(MultiTexCoord2iARB),
+   TABLE_ENTRY(MultiTexCoord2ivARB),
+   TABLE_ENTRY(MultiTexCoord2sARB),
+   TABLE_ENTRY(MultiTexCoord2svARB),
+   TABLE_ENTRY(MultiTexCoord3dARB),
+   TABLE_ENTRY(MultiTexCoord3dvARB),
+   TABLE_ENTRY(MultiTexCoord3fARB),
+   TABLE_ENTRY(MultiTexCoord3fvARB),
+   TABLE_ENTRY(MultiTexCoord3iARB),
+   TABLE_ENTRY(MultiTexCoord3ivARB),
+   TABLE_ENTRY(MultiTexCoord3sARB),
+   TABLE_ENTRY(MultiTexCoord3svARB),
+   TABLE_ENTRY(MultiTexCoord4dARB),
+   TABLE_ENTRY(MultiTexCoord4dvARB),
+   TABLE_ENTRY(MultiTexCoord4fARB),
+   TABLE_ENTRY(MultiTexCoord4fvARB),
+   TABLE_ENTRY(MultiTexCoord4iARB),
+   TABLE_ENTRY(MultiTexCoord4ivARB),
+   TABLE_ENTRY(MultiTexCoord4sARB),
+   TABLE_ENTRY(MultiTexCoord4svARB),
+   TABLE_ENTRY(AttachShader),
+   TABLE_ENTRY(CreateProgram),
+   TABLE_ENTRY(CreateShader),
+   TABLE_ENTRY(DeleteProgram),
+   TABLE_ENTRY(DeleteShader),
+   TABLE_ENTRY(DetachShader),
+   TABLE_ENTRY(GetAttachedShaders),
+   TABLE_ENTRY(GetProgramInfoLog),
+   TABLE_ENTRY(GetProgramiv),
+   TABLE_ENTRY(GetShaderInfoLog),
+   TABLE_ENTRY(GetShaderiv),
+   TABLE_ENTRY(IsProgram),
+   TABLE_ENTRY(IsShader),
+   TABLE_ENTRY(StencilFuncSeparate),
+   TABLE_ENTRY(StencilMaskSeparate),
+   TABLE_ENTRY(StencilOpSeparate),
+   TABLE_ENTRY(UniformMatrix2x3fv),
+   TABLE_ENTRY(UniformMatrix2x4fv),
+   TABLE_ENTRY(UniformMatrix3x2fv),
+   TABLE_ENTRY(UniformMatrix3x4fv),
+   TABLE_ENTRY(UniformMatrix4x2fv),
+   TABLE_ENTRY(UniformMatrix4x3fv),
+   TABLE_ENTRY(DrawArraysInstanced),
+   TABLE_ENTRY(DrawElementsInstanced),
+   TABLE_ENTRY(LoadTransposeMatrixdARB),
+   TABLE_ENTRY(LoadTransposeMatrixfARB),
+   TABLE_ENTRY(MultTransposeMatrixdARB),
+   TABLE_ENTRY(MultTransposeMatrixfARB),
+   TABLE_ENTRY(SampleCoverageARB),
+   TABLE_ENTRY(CompressedTexImage1DARB),
+   TABLE_ENTRY(CompressedTexImage2DARB),
+   TABLE_ENTRY(CompressedTexImage3DARB),
+   TABLE_ENTRY(CompressedTexSubImage1DARB),
+   TABLE_ENTRY(CompressedTexSubImage2DARB),
+   TABLE_ENTRY(CompressedTexSubImage3DARB),
+   TABLE_ENTRY(GetCompressedTexImageARB),
+   TABLE_ENTRY(DisableVertexAttribArrayARB),
+   TABLE_ENTRY(EnableVertexAttribArrayARB),
+   TABLE_ENTRY(GetProgramEnvParameterdvARB),
+   TABLE_ENTRY(GetProgramEnvParameterfvARB),
+   TABLE_ENTRY(GetProgramLocalParameterdvARB),
+   TABLE_ENTRY(GetProgramLocalParameterfvARB),
+   TABLE_ENTRY(GetProgramStringARB),
+   TABLE_ENTRY(GetProgramivARB),
+   TABLE_ENTRY(GetVertexAttribdvARB),
+   TABLE_ENTRY(GetVertexAttribfvARB),
+   TABLE_ENTRY(GetVertexAttribivARB),
+   TABLE_ENTRY(ProgramEnvParameter4dARB),
+   TABLE_ENTRY(ProgramEnvParameter4dvARB),
+   TABLE_ENTRY(ProgramEnvParameter4fARB),
+   TABLE_ENTRY(ProgramEnvParameter4fvARB),
+   TABLE_ENTRY(ProgramLocalParameter4dARB),
+   TABLE_ENTRY(ProgramLocalParameter4dvARB),
+   TABLE_ENTRY(ProgramLocalParameter4fARB),
+   TABLE_ENTRY(ProgramLocalParameter4fvARB),
+   TABLE_ENTRY(ProgramStringARB),
+   TABLE_ENTRY(VertexAttrib1dARB),
+   TABLE_ENTRY(VertexAttrib1dvARB),
+   TABLE_ENTRY(VertexAttrib1fARB),
+   TABLE_ENTRY(VertexAttrib1fvARB),
+   TABLE_ENTRY(VertexAttrib1sARB),
+   TABLE_ENTRY(VertexAttrib1svARB),
+   TABLE_ENTRY(VertexAttrib2dARB),
+   TABLE_ENTRY(VertexAttrib2dvARB),
+   TABLE_ENTRY(VertexAttrib2fARB),
+   TABLE_ENTRY(VertexAttrib2fvARB),
+   TABLE_ENTRY(VertexAttrib2sARB),
+   TABLE_ENTRY(VertexAttrib2svARB),
+   TABLE_ENTRY(VertexAttrib3dARB),
+   TABLE_ENTRY(VertexAttrib3dvARB),
+   TABLE_ENTRY(VertexAttrib3fARB),
+   TABLE_ENTRY(VertexAttrib3fvARB),
+   TABLE_ENTRY(VertexAttrib3sARB),
+   TABLE_ENTRY(VertexAttrib3svARB),
+   TABLE_ENTRY(VertexAttrib4NbvARB),
+   TABLE_ENTRY(VertexAttrib4NivARB),
+   TABLE_ENTRY(VertexAttrib4NsvARB),
+   TABLE_ENTRY(VertexAttrib4NubARB),
+   TABLE_ENTRY(VertexAttrib4NubvARB),
+   TABLE_ENTRY(VertexAttrib4NuivARB),
+   TABLE_ENTRY(VertexAttrib4NusvARB),
+   TABLE_ENTRY(VertexAttrib4bvARB),
+   TABLE_ENTRY(VertexAttrib4dARB),
+   TABLE_ENTRY(VertexAttrib4dvARB),
+   TABLE_ENTRY(VertexAttrib4fARB),
+   TABLE_ENTRY(VertexAttrib4fvARB),
+   TABLE_ENTRY(VertexAttrib4ivARB),
+   TABLE_ENTRY(VertexAttrib4sARB),
+   TABLE_ENTRY(VertexAttrib4svARB),
+   TABLE_ENTRY(VertexAttrib4ubvARB),
+   TABLE_ENTRY(VertexAttrib4uivARB),
+   TABLE_ENTRY(VertexAttrib4usvARB),
+   TABLE_ENTRY(VertexAttribPointerARB),
+   TABLE_ENTRY(BindBufferARB),
+   TABLE_ENTRY(BufferDataARB),
+   TABLE_ENTRY(BufferSubDataARB),
+   TABLE_ENTRY(DeleteBuffersARB),
+   TABLE_ENTRY(GenBuffersARB),
+   TABLE_ENTRY(GetBufferParameterivARB),
+   TABLE_ENTRY(GetBufferPointervARB),
+   TABLE_ENTRY(GetBufferSubDataARB),
+   TABLE_ENTRY(IsBufferARB),
+   TABLE_ENTRY(MapBufferARB),
+   TABLE_ENTRY(UnmapBufferARB),
+   TABLE_ENTRY(BeginQueryARB),
+   TABLE_ENTRY(DeleteQueriesARB),
+   TABLE_ENTRY(EndQueryARB),
+   TABLE_ENTRY(GenQueriesARB),
+   TABLE_ENTRY(GetQueryObjectivARB),
+   TABLE_ENTRY(GetQueryObjectuivARB),
+   TABLE_ENTRY(GetQueryivARB),
+   TABLE_ENTRY(IsQueryARB),
+   TABLE_ENTRY(AttachObjectARB),
+   TABLE_ENTRY(CompileShaderARB),
+   TABLE_ENTRY(CreateProgramObjectARB),
+   TABLE_ENTRY(CreateShaderObjectARB),
+   TABLE_ENTRY(DeleteObjectARB),
+   TABLE_ENTRY(DetachObjectARB),
+   TABLE_ENTRY(GetActiveUniformARB),
+   TABLE_ENTRY(GetAttachedObjectsARB),
+   TABLE_ENTRY(GetHandleARB),
+   TABLE_ENTRY(GetInfoLogARB),
+   TABLE_ENTRY(GetObjectParameterfvARB),
+   TABLE_ENTRY(GetObjectParameterivARB),
+   TABLE_ENTRY(GetShaderSourceARB),
+   TABLE_ENTRY(GetUniformLocationARB),
+   TABLE_ENTRY(GetUniformfvARB),
+   TABLE_ENTRY(GetUniformivARB),
+   TABLE_ENTRY(LinkProgramARB),
+   TABLE_ENTRY(ShaderSourceARB),
+   TABLE_ENTRY(Uniform1fARB),
+   TABLE_ENTRY(Uniform1fvARB),
+   TABLE_ENTRY(Uniform1iARB),
+   TABLE_ENTRY(Uniform1ivARB),
+   TABLE_ENTRY(Uniform2fARB),
+   TABLE_ENTRY(Uniform2fvARB),
+   TABLE_ENTRY(Uniform2iARB),
+   TABLE_ENTRY(Uniform2ivARB),
+   TABLE_ENTRY(Uniform3fARB),
+   TABLE_ENTRY(Uniform3fvARB),
+   TABLE_ENTRY(Uniform3iARB),
+   TABLE_ENTRY(Uniform3ivARB),
+   TABLE_ENTRY(Uniform4fARB),
+   TABLE_ENTRY(Uniform4fvARB),
+   TABLE_ENTRY(Uniform4iARB),
+   TABLE_ENTRY(Uniform4ivARB),
+   TABLE_ENTRY(UniformMatrix2fvARB),
+   TABLE_ENTRY(UniformMatrix3fvARB),
+   TABLE_ENTRY(UniformMatrix4fvARB),
+   TABLE_ENTRY(UseProgramObjectARB),
+   TABLE_ENTRY(ValidateProgramARB),
+   TABLE_ENTRY(BindAttribLocationARB),
+   TABLE_ENTRY(GetActiveAttribARB),
+   TABLE_ENTRY(GetAttribLocationARB),
+   TABLE_ENTRY(DrawBuffersARB),
+   TABLE_ENTRY(RenderbufferStorageMultisample),
+   TABLE_ENTRY(FlushMappedBufferRange),
+   TABLE_ENTRY(MapBufferRange),
+   TABLE_ENTRY(BindVertexArray),
+   TABLE_ENTRY(GenVertexArrays),
+   TABLE_ENTRY(CopyBufferSubData),
+   TABLE_ENTRY(ClientWaitSync),
+   TABLE_ENTRY(DeleteSync),
+   TABLE_ENTRY(FenceSync),
+   TABLE_ENTRY(GetInteger64v),
+   TABLE_ENTRY(GetSynciv),
+   TABLE_ENTRY(IsSync),
+   TABLE_ENTRY(WaitSync),
+   TABLE_ENTRY(DrawElementsBaseVertex),
+   TABLE_ENTRY(DrawRangeElementsBaseVertex),
+   TABLE_ENTRY(MultiDrawElementsBaseVertex),
+   TABLE_ENTRY(PolygonOffsetEXT),
+   TABLE_ENTRY(_dispatch_stub_580),
+   TABLE_ENTRY(_dispatch_stub_581),
+   TABLE_ENTRY(_dispatch_stub_582),
+   TABLE_ENTRY(_dispatch_stub_583),
+   TABLE_ENTRY(_dispatch_stub_584),
+   TABLE_ENTRY(_dispatch_stub_585),
+   TABLE_ENTRY(_dispatch_stub_586),
+   TABLE_ENTRY(_dispatch_stub_587),
+   TABLE_ENTRY(ColorPointerEXT),
+   TABLE_ENTRY(EdgeFlagPointerEXT),
+   TABLE_ENTRY(IndexPointerEXT),
+   TABLE_ENTRY(NormalPointerEXT),
+   TABLE_ENTRY(TexCoordPointerEXT),
+   TABLE_ENTRY(VertexPointerEXT),
+   TABLE_ENTRY(PointParameterfEXT),
+   TABLE_ENTRY(PointParameterfvEXT),
+   TABLE_ENTRY(LockArraysEXT),
+   TABLE_ENTRY(UnlockArraysEXT),
+   TABLE_ENTRY(_dispatch_stub_598),
+   TABLE_ENTRY(_dispatch_stub_599),
+   TABLE_ENTRY(SecondaryColor3bEXT),
+   TABLE_ENTRY(SecondaryColor3bvEXT),
+   TABLE_ENTRY(SecondaryColor3dEXT),
+   TABLE_ENTRY(SecondaryColor3dvEXT),
+   TABLE_ENTRY(SecondaryColor3fEXT),
+   TABLE_ENTRY(SecondaryColor3fvEXT),
+   TABLE_ENTRY(SecondaryColor3iEXT),
+   TABLE_ENTRY(SecondaryColor3ivEXT),
+   TABLE_ENTRY(SecondaryColor3sEXT),
+   TABLE_ENTRY(SecondaryColor3svEXT),
+   TABLE_ENTRY(SecondaryColor3ubEXT),
+   TABLE_ENTRY(SecondaryColor3ubvEXT),
+   TABLE_ENTRY(SecondaryColor3uiEXT),
+   TABLE_ENTRY(SecondaryColor3uivEXT),
+   TABLE_ENTRY(SecondaryColor3usEXT),
+   TABLE_ENTRY(SecondaryColor3usvEXT),
+   TABLE_ENTRY(SecondaryColorPointerEXT),
+   TABLE_ENTRY(MultiDrawArraysEXT),
+   TABLE_ENTRY(MultiDrawElementsEXT),
+   TABLE_ENTRY(FogCoordPointerEXT),
+   TABLE_ENTRY(FogCoorddEXT),
+   TABLE_ENTRY(FogCoorddvEXT),
+   TABLE_ENTRY(FogCoordfEXT),
+   TABLE_ENTRY(FogCoordfvEXT),
+   TABLE_ENTRY(_dispatch_stub_624),
+   TABLE_ENTRY(BlendFuncSeparateEXT),
+   TABLE_ENTRY(FlushVertexArrayRangeNV),
+   TABLE_ENTRY(VertexArrayRangeNV),
+   TABLE_ENTRY(CombinerInputNV),
+   TABLE_ENTRY(CombinerOutputNV),
+   TABLE_ENTRY(CombinerParameterfNV),
+   TABLE_ENTRY(CombinerParameterfvNV),
+   TABLE_ENTRY(CombinerParameteriNV),
+   TABLE_ENTRY(CombinerParameterivNV),
+   TABLE_ENTRY(FinalCombinerInputNV),
+   TABLE_ENTRY(GetCombinerInputParameterfvNV),
+   TABLE_ENTRY(GetCombinerInputParameterivNV),
+   TABLE_ENTRY(GetCombinerOutputParameterfvNV),
+   TABLE_ENTRY(GetCombinerOutputParameterivNV),
+   TABLE_ENTRY(GetFinalCombinerInputParameterfvNV),
+   TABLE_ENTRY(GetFinalCombinerInputParameterivNV),
+   TABLE_ENTRY(ResizeBuffersMESA),
+   TABLE_ENTRY(WindowPos2dMESA),
+   TABLE_ENTRY(WindowPos2dvMESA),
+   TABLE_ENTRY(WindowPos2fMESA),
+   TABLE_ENTRY(WindowPos2fvMESA),
+   TABLE_ENTRY(WindowPos2iMESA),
+   TABLE_ENTRY(WindowPos2ivMESA),
+   TABLE_ENTRY(WindowPos2sMESA),
+   TABLE_ENTRY(WindowPos2svMESA),
+   TABLE_ENTRY(WindowPos3dMESA),
+   TABLE_ENTRY(WindowPos3dvMESA),
+   TABLE_ENTRY(WindowPos3fMESA),
+   TABLE_ENTRY(WindowPos3fvMESA),
+   TABLE_ENTRY(WindowPos3iMESA),
+   TABLE_ENTRY(WindowPos3ivMESA),
+   TABLE_ENTRY(WindowPos3sMESA),
+   TABLE_ENTRY(WindowPos3svMESA),
+   TABLE_ENTRY(WindowPos4dMESA),
+   TABLE_ENTRY(WindowPos4dvMESA),
+   TABLE_ENTRY(WindowPos4fMESA),
+   TABLE_ENTRY(WindowPos4fvMESA),
+   TABLE_ENTRY(WindowPos4iMESA),
+   TABLE_ENTRY(WindowPos4ivMESA),
+   TABLE_ENTRY(WindowPos4sMESA),
+   TABLE_ENTRY(WindowPos4svMESA),
+   TABLE_ENTRY(_dispatch_stub_666),
+   TABLE_ENTRY(_dispatch_stub_667),
+   TABLE_ENTRY(_dispatch_stub_668),
+   TABLE_ENTRY(_dispatch_stub_669),
+   TABLE_ENTRY(_dispatch_stub_670),
+   TABLE_ENTRY(_dispatch_stub_671),
+   TABLE_ENTRY(_dispatch_stub_672),
+   TABLE_ENTRY(_dispatch_stub_673),
+   TABLE_ENTRY(_dispatch_stub_674),
+   TABLE_ENTRY(AreProgramsResidentNV),
+   TABLE_ENTRY(BindProgramNV),
+   TABLE_ENTRY(DeleteProgramsNV),
+   TABLE_ENTRY(ExecuteProgramNV),
+   TABLE_ENTRY(GenProgramsNV),
+   TABLE_ENTRY(GetProgramParameterdvNV),
+   TABLE_ENTRY(GetProgramParameterfvNV),
+   TABLE_ENTRY(GetProgramStringNV),
+   TABLE_ENTRY(GetProgramivNV),
+   TABLE_ENTRY(GetTrackMatrixivNV),
+   TABLE_ENTRY(GetVertexAttribPointervNV),
+   TABLE_ENTRY(GetVertexAttribdvNV),
+   TABLE_ENTRY(GetVertexAttribfvNV),
+   TABLE_ENTRY(GetVertexAttribivNV),
+   TABLE_ENTRY(IsProgramNV),
+   TABLE_ENTRY(LoadProgramNV),
+   TABLE_ENTRY(ProgramParameters4dvNV),
+   TABLE_ENTRY(ProgramParameters4fvNV),
+   TABLE_ENTRY(RequestResidentProgramsNV),
+   TABLE_ENTRY(TrackMatrixNV),
+   TABLE_ENTRY(VertexAttrib1dNV),
+   TABLE_ENTRY(VertexAttrib1dvNV),
+   TABLE_ENTRY(VertexAttrib1fNV),
+   TABLE_ENTRY(VertexAttrib1fvNV),
+   TABLE_ENTRY(VertexAttrib1sNV),
+   TABLE_ENTRY(VertexAttrib1svNV),
+   TABLE_ENTRY(VertexAttrib2dNV),
+   TABLE_ENTRY(VertexAttrib2dvNV),
+   TABLE_ENTRY(VertexAttrib2fNV),
+   TABLE_ENTRY(VertexAttrib2fvNV),
+   TABLE_ENTRY(VertexAttrib2sNV),
+   TABLE_ENTRY(VertexAttrib2svNV),
+   TABLE_ENTRY(VertexAttrib3dNV),
+   TABLE_ENTRY(VertexAttrib3dvNV),
+   TABLE_ENTRY(VertexAttrib3fNV),
+   TABLE_ENTRY(VertexAttrib3fvNV),
+   TABLE_ENTRY(VertexAttrib3sNV),
+   TABLE_ENTRY(VertexAttrib3svNV),
+   TABLE_ENTRY(VertexAttrib4dNV),
+   TABLE_ENTRY(VertexAttrib4dvNV),
+   TABLE_ENTRY(VertexAttrib4fNV),
+   TABLE_ENTRY(VertexAttrib4fvNV),
+   TABLE_ENTRY(VertexAttrib4sNV),
+   TABLE_ENTRY(VertexAttrib4svNV),
+   TABLE_ENTRY(VertexAttrib4ubNV),
+   TABLE_ENTRY(VertexAttrib4ubvNV),
+   TABLE_ENTRY(VertexAttribPointerNV),
+   TABLE_ENTRY(VertexAttribs1dvNV),
+   TABLE_ENTRY(VertexAttribs1fvNV),
+   TABLE_ENTRY(VertexAttribs1svNV),
+   TABLE_ENTRY(VertexAttribs2dvNV),
+   TABLE_ENTRY(VertexAttribs2fvNV),
+   TABLE_ENTRY(VertexAttribs2svNV),
+   TABLE_ENTRY(VertexAttribs3dvNV),
+   TABLE_ENTRY(VertexAttribs3fvNV),
+   TABLE_ENTRY(VertexAttribs3svNV),
+   TABLE_ENTRY(VertexAttribs4dvNV),
+   TABLE_ENTRY(VertexAttribs4fvNV),
+   TABLE_ENTRY(VertexAttribs4svNV),
+   TABLE_ENTRY(VertexAttribs4ubvNV),
+   TABLE_ENTRY(GetTexBumpParameterfvATI),
+   TABLE_ENTRY(GetTexBumpParameterivATI),
+   TABLE_ENTRY(TexBumpParameterfvATI),
+   TABLE_ENTRY(TexBumpParameterivATI),
+   TABLE_ENTRY(AlphaFragmentOp1ATI),
+   TABLE_ENTRY(AlphaFragmentOp2ATI),
+   TABLE_ENTRY(AlphaFragmentOp3ATI),
+   TABLE_ENTRY(BeginFragmentShaderATI),
+   TABLE_ENTRY(BindFragmentShaderATI),
+   TABLE_ENTRY(ColorFragmentOp1ATI),
+   TABLE_ENTRY(ColorFragmentOp2ATI),
+   TABLE_ENTRY(ColorFragmentOp3ATI),
+   TABLE_ENTRY(DeleteFragmentShaderATI),
+   TABLE_ENTRY(EndFragmentShaderATI),
+   TABLE_ENTRY(GenFragmentShadersATI),
+   TABLE_ENTRY(PassTexCoordATI),
+   TABLE_ENTRY(SampleMapATI),
+   TABLE_ENTRY(SetFragmentShaderConstantATI),
+   TABLE_ENTRY(PointParameteriNV),
+   TABLE_ENTRY(PointParameterivNV),
+   TABLE_ENTRY(_dispatch_stub_755),
+   TABLE_ENTRY(_dispatch_stub_756),
+   TABLE_ENTRY(_dispatch_stub_757),
+   TABLE_ENTRY(_dispatch_stub_758),
+   TABLE_ENTRY(_dispatch_stub_759),
+   TABLE_ENTRY(GetProgramNamedParameterdvNV),
+   TABLE_ENTRY(GetProgramNamedParameterfvNV),
+   TABLE_ENTRY(ProgramNamedParameter4dNV),
+   TABLE_ENTRY(ProgramNamedParameter4dvNV),
+   TABLE_ENTRY(ProgramNamedParameter4fNV),
+   TABLE_ENTRY(ProgramNamedParameter4fvNV),
+   TABLE_ENTRY(_dispatch_stub_766),
+   TABLE_ENTRY(_dispatch_stub_767),
+   TABLE_ENTRY(BindFramebufferEXT),
+   TABLE_ENTRY(BindRenderbufferEXT),
+   TABLE_ENTRY(CheckFramebufferStatusEXT),
+   TABLE_ENTRY(DeleteFramebuffersEXT),
+   TABLE_ENTRY(DeleteRenderbuffersEXT),
+   TABLE_ENTRY(FramebufferRenderbufferEXT),
+   TABLE_ENTRY(FramebufferTexture1DEXT),
+   TABLE_ENTRY(FramebufferTexture2DEXT),
+   TABLE_ENTRY(FramebufferTexture3DEXT),
+   TABLE_ENTRY(GenFramebuffersEXT),
+   TABLE_ENTRY(GenRenderbuffersEXT),
+   TABLE_ENTRY(GenerateMipmapEXT),
+   TABLE_ENTRY(GetFramebufferAttachmentParameterivEXT),
+   TABLE_ENTRY(GetRenderbufferParameterivEXT),
+   TABLE_ENTRY(IsFramebufferEXT),
+   TABLE_ENTRY(IsRenderbufferEXT),
+   TABLE_ENTRY(RenderbufferStorageEXT),
+   TABLE_ENTRY(_dispatch_stub_785),
+   TABLE_ENTRY(_dispatch_stub_786),
+   TABLE_ENTRY(_dispatch_stub_787),
+   TABLE_ENTRY(FramebufferTextureLayerEXT),
+   TABLE_ENTRY(ColorMaskIndexedEXT),
+   TABLE_ENTRY(DisableIndexedEXT),
+   TABLE_ENTRY(EnableIndexedEXT),
+   TABLE_ENTRY(GetBooleanIndexedvEXT),
+   TABLE_ENTRY(GetIntegerIndexedvEXT),
+   TABLE_ENTRY(IsEnabledIndexedEXT),
+   TABLE_ENTRY(BeginConditionalRenderNV),
+   TABLE_ENTRY(EndConditionalRenderNV),
+   TABLE_ENTRY(BeginTransformFeedbackEXT),
+   TABLE_ENTRY(BindBufferBaseEXT),
+   TABLE_ENTRY(BindBufferOffsetEXT),
+   TABLE_ENTRY(BindBufferRangeEXT),
+   TABLE_ENTRY(EndTransformFeedbackEXT),
+   TABLE_ENTRY(GetTransformFeedbackVaryingEXT),
+   TABLE_ENTRY(TransformFeedbackVaryingsEXT),
+   TABLE_ENTRY(ProvokingVertexEXT),
+   TABLE_ENTRY(_dispatch_stub_805),
+   TABLE_ENTRY(_dispatch_stub_806),
+   TABLE_ENTRY(GetObjectParameterivAPPLE),
+   TABLE_ENTRY(ObjectPurgeableAPPLE),
+   TABLE_ENTRY(ObjectUnpurgeableAPPLE),
+   TABLE_ENTRY(_dispatch_stub_810),
+   TABLE_ENTRY(_dispatch_stub_811),
+   TABLE_ENTRY(_dispatch_stub_812),
+   TABLE_ENTRY(_dispatch_stub_813),
+   TABLE_ENTRY(_dispatch_stub_814),
+   TABLE_ENTRY(EGLImageTargetRenderbufferStorageOES),
+   TABLE_ENTRY(EGLImageTargetTexture2DOES),
+   /* A whole bunch of no-op functions.  These might be called
+    * when someone tries to call a dynamically-registered
+    * extension function without a current rendering context.
+    */
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+   TABLE_ENTRY(Unused),
+};
+#endif /* DISPATCH_TABLE_NAME */
+
+
+/*
+ * This is just used to silence compiler warnings.
+ * We list the functions which are not otherwise used.
+ */
+#ifdef UNUSED_TABLE_NAME
+_glapi_proc UNUSED_TABLE_NAME[] = {
+#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
+   TABLE_ENTRY(ArrayElementEXT),
+   TABLE_ENTRY(BindTextureEXT),
+   TABLE_ENTRY(DrawArraysEXT),
+   TABLE_ENTRY(CopyTexImage1DEXT),
+   TABLE_ENTRY(CopyTexImage2DEXT),
+   TABLE_ENTRY(CopyTexSubImage1DEXT),
+   TABLE_ENTRY(CopyTexSubImage2DEXT),
+   TABLE_ENTRY(GetPointervEXT),
+   TABLE_ENTRY(PrioritizeTexturesEXT),
+   TABLE_ENTRY(TexSubImage1DEXT),
+   TABLE_ENTRY(TexSubImage2DEXT),
+   TABLE_ENTRY(BlendColorEXT),
+   TABLE_ENTRY(BlendEquationEXT),
+   TABLE_ENTRY(DrawRangeElementsEXT),
+   TABLE_ENTRY(ColorTableEXT),
+   TABLE_ENTRY(_dispatch_stub_339),
+   TABLE_ENTRY(_dispatch_stub_340),
+   TABLE_ENTRY(_dispatch_stub_341),
+   TABLE_ENTRY(_dispatch_stub_342),
+   TABLE_ENTRY(_dispatch_stub_346),
+   TABLE_ENTRY(_dispatch_stub_347),
+   TABLE_ENTRY(_dispatch_stub_348),
+   TABLE_ENTRY(_dispatch_stub_349),
+   TABLE_ENTRY(_dispatch_stub_350),
+   TABLE_ENTRY(_dispatch_stub_351),
+   TABLE_ENTRY(_dispatch_stub_352),
+   TABLE_ENTRY(_dispatch_stub_353),
+   TABLE_ENTRY(_dispatch_stub_354),
+   TABLE_ENTRY(_dispatch_stub_355),
+   TABLE_ENTRY(_dispatch_stub_360),
+   TABLE_ENTRY(_dispatch_stub_367),
+   TABLE_ENTRY(_dispatch_stub_368),
+   TABLE_ENTRY(_dispatch_stub_369),
+   TABLE_ENTRY(_dispatch_stub_370),
+   TABLE_ENTRY(TexImage3DEXT),
+   TABLE_ENTRY(TexSubImage3DEXT),
+   TABLE_ENTRY(CopyTexSubImage3DEXT),
+   TABLE_ENTRY(ActiveTexture),
+   TABLE_ENTRY(ClientActiveTexture),
+   TABLE_ENTRY(MultiTexCoord1d),
+   TABLE_ENTRY(MultiTexCoord1dv),
+   TABLE_ENTRY(MultiTexCoord1f),
+   TABLE_ENTRY(MultiTexCoord1fv),
+   TABLE_ENTRY(MultiTexCoord1i),
+   TABLE_ENTRY(MultiTexCoord1iv),
+   TABLE_ENTRY(MultiTexCoord1s),
+   TABLE_ENTRY(MultiTexCoord1sv),
+   TABLE_ENTRY(MultiTexCoord2d),
+   TABLE_ENTRY(MultiTexCoord2dv),
+   TABLE_ENTRY(MultiTexCoord2f),
+   TABLE_ENTRY(MultiTexCoord2fv),
+   TABLE_ENTRY(MultiTexCoord2i),
+   TABLE_ENTRY(MultiTexCoord2iv),
+   TABLE_ENTRY(MultiTexCoord2s),
+   TABLE_ENTRY(MultiTexCoord2sv),
+   TABLE_ENTRY(MultiTexCoord3d),
+   TABLE_ENTRY(MultiTexCoord3dv),
+   TABLE_ENTRY(MultiTexCoord3f),
+   TABLE_ENTRY(MultiTexCoord3fv),
+   TABLE_ENTRY(MultiTexCoord3i),
+   TABLE_ENTRY(MultiTexCoord3iv),
+   TABLE_ENTRY(MultiTexCoord3s),
+   TABLE_ENTRY(MultiTexCoord3sv),
+   TABLE_ENTRY(MultiTexCoord4d),
+   TABLE_ENTRY(MultiTexCoord4dv),
+   TABLE_ENTRY(MultiTexCoord4f),
+   TABLE_ENTRY(MultiTexCoord4fv),
+   TABLE_ENTRY(MultiTexCoord4i),
+   TABLE_ENTRY(MultiTexCoord4iv),
+   TABLE_ENTRY(MultiTexCoord4s),
+   TABLE_ENTRY(MultiTexCoord4sv),
+   TABLE_ENTRY(_dispatch_stub_423),
+   TABLE_ENTRY(DrawArraysInstancedARB),
+   TABLE_ENTRY(DrawArraysInstancedEXT),
+   TABLE_ENTRY(DrawElementsInstancedARB),
+   TABLE_ENTRY(DrawElementsInstancedEXT),
+   TABLE_ENTRY(LoadTransposeMatrixd),
+   TABLE_ENTRY(LoadTransposeMatrixf),
+   TABLE_ENTRY(MultTransposeMatrixd),
+   TABLE_ENTRY(MultTransposeMatrixf),
+   TABLE_ENTRY(SampleCoverage),
+   TABLE_ENTRY(CompressedTexImage1D),
+   TABLE_ENTRY(CompressedTexImage2D),
+   TABLE_ENTRY(CompressedTexImage3D),
+   TABLE_ENTRY(CompressedTexSubImage1D),
+   TABLE_ENTRY(CompressedTexSubImage2D),
+   TABLE_ENTRY(CompressedTexSubImage3D),
+   TABLE_ENTRY(GetCompressedTexImage),
+   TABLE_ENTRY(DisableVertexAttribArray),
+   TABLE_ENTRY(EnableVertexAttribArray),
+   TABLE_ENTRY(GetVertexAttribdv),
+   TABLE_ENTRY(GetVertexAttribfv),
+   TABLE_ENTRY(GetVertexAttribiv),
+   TABLE_ENTRY(ProgramParameter4dNV),
+   TABLE_ENTRY(ProgramParameter4dvNV),
+   TABLE_ENTRY(ProgramParameter4fNV),
+   TABLE_ENTRY(ProgramParameter4fvNV),
+   TABLE_ENTRY(VertexAttrib1d),
+   TABLE_ENTRY(VertexAttrib1dv),
+   TABLE_ENTRY(VertexAttrib1f),
+   TABLE_ENTRY(VertexAttrib1fv),
+   TABLE_ENTRY(VertexAttrib1s),
+   TABLE_ENTRY(VertexAttrib1sv),
+   TABLE_ENTRY(VertexAttrib2d),
+   TABLE_ENTRY(VertexAttrib2dv),
+   TABLE_ENTRY(VertexAttrib2f),
+   TABLE_ENTRY(VertexAttrib2fv),
+   TABLE_ENTRY(VertexAttrib2s),
+   TABLE_ENTRY(VertexAttrib2sv),
+   TABLE_ENTRY(VertexAttrib3d),
+   TABLE_ENTRY(VertexAttrib3dv),
+   TABLE_ENTRY(VertexAttrib3f),
+   TABLE_ENTRY(VertexAttrib3fv),
+   TABLE_ENTRY(VertexAttrib3s),
+   TABLE_ENTRY(VertexAttrib3sv),
+   TABLE_ENTRY(VertexAttrib4Nbv),
+   TABLE_ENTRY(VertexAttrib4Niv),
+   TABLE_ENTRY(VertexAttrib4Nsv),
+   TABLE_ENTRY(VertexAttrib4Nub),
+   TABLE_ENTRY(VertexAttrib4Nubv),
+   TABLE_ENTRY(VertexAttrib4Nuiv),
+   TABLE_ENTRY(VertexAttrib4Nusv),
+   TABLE_ENTRY(VertexAttrib4bv),
+   TABLE_ENTRY(VertexAttrib4d),
+   TABLE_ENTRY(VertexAttrib4dv),
+   TABLE_ENTRY(VertexAttrib4f),
+   TABLE_ENTRY(VertexAttrib4fv),
+   TABLE_ENTRY(VertexAttrib4iv),
+   TABLE_ENTRY(VertexAttrib4s),
+   TABLE_ENTRY(VertexAttrib4sv),
+   TABLE_ENTRY(VertexAttrib4ubv),
+   TABLE_ENTRY(VertexAttrib4uiv),
+   TABLE_ENTRY(VertexAttrib4usv),
+   TABLE_ENTRY(VertexAttribPointer),
+   TABLE_ENTRY(BindBuffer),
+   TABLE_ENTRY(BufferData),
+   TABLE_ENTRY(BufferSubData),
+   TABLE_ENTRY(DeleteBuffers),
+   TABLE_ENTRY(GenBuffers),
+   TABLE_ENTRY(GetBufferParameteriv),
+   TABLE_ENTRY(GetBufferPointerv),
+   TABLE_ENTRY(GetBufferSubData),
+   TABLE_ENTRY(IsBuffer),
+   TABLE_ENTRY(MapBuffer),
+   TABLE_ENTRY(UnmapBuffer),
+   TABLE_ENTRY(BeginQuery),
+   TABLE_ENTRY(DeleteQueries),
+   TABLE_ENTRY(EndQuery),
+   TABLE_ENTRY(GenQueries),
+   TABLE_ENTRY(GetQueryObjectiv),
+   TABLE_ENTRY(GetQueryObjectuiv),
+   TABLE_ENTRY(GetQueryiv),
+   TABLE_ENTRY(IsQuery),
+   TABLE_ENTRY(CompileShader),
+   TABLE_ENTRY(GetActiveUniform),
+   TABLE_ENTRY(GetShaderSource),
+   TABLE_ENTRY(GetUniformLocation),
+   TABLE_ENTRY(GetUniformfv),
+   TABLE_ENTRY(GetUniformiv),
+   TABLE_ENTRY(LinkProgram),
+   TABLE_ENTRY(ShaderSource),
+   TABLE_ENTRY(Uniform1f),
+   TABLE_ENTRY(Uniform1fv),
+   TABLE_ENTRY(Uniform1i),
+   TABLE_ENTRY(Uniform1iv),
+   TABLE_ENTRY(Uniform2f),
+   TABLE_ENTRY(Uniform2fv),
+   TABLE_ENTRY(Uniform2i),
+   TABLE_ENTRY(Uniform2iv),
+   TABLE_ENTRY(Uniform3f),
+   TABLE_ENTRY(Uniform3fv),
+   TABLE_ENTRY(Uniform3i),
+   TABLE_ENTRY(Uniform3iv),
+   TABLE_ENTRY(Uniform4f),
+   TABLE_ENTRY(Uniform4fv),
+   TABLE_ENTRY(Uniform4i),
+   TABLE_ENTRY(Uniform4iv),
+   TABLE_ENTRY(UniformMatrix2fv),
+   TABLE_ENTRY(UniformMatrix3fv),
+   TABLE_ENTRY(UniformMatrix4fv),
+   TABLE_ENTRY(UseProgram),
+   TABLE_ENTRY(ValidateProgram),
+   TABLE_ENTRY(BindAttribLocation),
+   TABLE_ENTRY(GetActiveAttrib),
+   TABLE_ENTRY(GetAttribLocation),
+   TABLE_ENTRY(DrawBuffers),
+   TABLE_ENTRY(DrawBuffersATI),
+   TABLE_ENTRY(RenderbufferStorageMultisampleEXT),
+   TABLE_ENTRY(PointParameterf),
+   TABLE_ENTRY(PointParameterfARB),
+   TABLE_ENTRY(_dispatch_stub_594),
+   TABLE_ENTRY(PointParameterfv),
+   TABLE_ENTRY(PointParameterfvARB),
+   TABLE_ENTRY(_dispatch_stub_595),
+   TABLE_ENTRY(SecondaryColor3b),
+   TABLE_ENTRY(SecondaryColor3bv),
+   TABLE_ENTRY(SecondaryColor3d),
+   TABLE_ENTRY(SecondaryColor3dv),
+   TABLE_ENTRY(SecondaryColor3f),
+   TABLE_ENTRY(SecondaryColor3fv),
+   TABLE_ENTRY(SecondaryColor3i),
+   TABLE_ENTRY(SecondaryColor3iv),
+   TABLE_ENTRY(SecondaryColor3s),
+   TABLE_ENTRY(SecondaryColor3sv),
+   TABLE_ENTRY(SecondaryColor3ub),
+   TABLE_ENTRY(SecondaryColor3ubv),
+   TABLE_ENTRY(SecondaryColor3ui),
+   TABLE_ENTRY(SecondaryColor3uiv),
+   TABLE_ENTRY(SecondaryColor3us),
+   TABLE_ENTRY(SecondaryColor3usv),
+   TABLE_ENTRY(SecondaryColorPointer),
+   TABLE_ENTRY(MultiDrawArrays),
+   TABLE_ENTRY(MultiDrawElements),
+   TABLE_ENTRY(FogCoordPointer),
+   TABLE_ENTRY(FogCoordd),
+   TABLE_ENTRY(FogCoorddv),
+   TABLE_ENTRY(FogCoordf),
+   TABLE_ENTRY(FogCoordfv),
+   TABLE_ENTRY(BlendFuncSeparate),
+   TABLE_ENTRY(_dispatch_stub_625),
+   TABLE_ENTRY(WindowPos2d),
+   TABLE_ENTRY(WindowPos2dARB),
+   TABLE_ENTRY(WindowPos2dv),
+   TABLE_ENTRY(WindowPos2dvARB),
+   TABLE_ENTRY(WindowPos2f),
+   TABLE_ENTRY(WindowPos2fARB),
+   TABLE_ENTRY(WindowPos2fv),
+   TABLE_ENTRY(WindowPos2fvARB),
+   TABLE_ENTRY(WindowPos2i),
+   TABLE_ENTRY(WindowPos2iARB),
+   TABLE_ENTRY(WindowPos2iv),
+   TABLE_ENTRY(WindowPos2ivARB),
+   TABLE_ENTRY(WindowPos2s),
+   TABLE_ENTRY(WindowPos2sARB),
+   TABLE_ENTRY(WindowPos2sv),
+   TABLE_ENTRY(WindowPos2svARB),
+   TABLE_ENTRY(WindowPos3d),
+   TABLE_ENTRY(WindowPos3dARB),
+   TABLE_ENTRY(WindowPos3dv),
+   TABLE_ENTRY(WindowPos3dvARB),
+   TABLE_ENTRY(WindowPos3f),
+   TABLE_ENTRY(WindowPos3fARB),
+   TABLE_ENTRY(WindowPos3fv),
+   TABLE_ENTRY(WindowPos3fvARB),
+   TABLE_ENTRY(WindowPos3i),
+   TABLE_ENTRY(WindowPos3iARB),
+   TABLE_ENTRY(WindowPos3iv),
+   TABLE_ENTRY(WindowPos3ivARB),
+   TABLE_ENTRY(WindowPos3s),
+   TABLE_ENTRY(WindowPos3sARB),
+   TABLE_ENTRY(WindowPos3sv),
+   TABLE_ENTRY(WindowPos3svARB),
+   TABLE_ENTRY(BindProgramARB),
+   TABLE_ENTRY(DeleteProgramsARB),
+   TABLE_ENTRY(GenProgramsARB),
+   TABLE_ENTRY(GetVertexAttribPointerv),
+   TABLE_ENTRY(GetVertexAttribPointervARB),
+   TABLE_ENTRY(IsProgramARB),
+   TABLE_ENTRY(PointParameteri),
+   TABLE_ENTRY(PointParameteriv),
+   TABLE_ENTRY(DeleteVertexArrays),
+   TABLE_ENTRY(IsVertexArray),
+   TABLE_ENTRY(BlendEquationSeparate),
+   TABLE_ENTRY(BindFramebuffer),
+   TABLE_ENTRY(BindRenderbuffer),
+   TABLE_ENTRY(CheckFramebufferStatus),
+   TABLE_ENTRY(DeleteFramebuffers),
+   TABLE_ENTRY(DeleteRenderbuffers),
+   TABLE_ENTRY(FramebufferRenderbuffer),
+   TABLE_ENTRY(FramebufferTexture1D),
+   TABLE_ENTRY(FramebufferTexture2D),
+   TABLE_ENTRY(FramebufferTexture3D),
+   TABLE_ENTRY(GenFramebuffers),
+   TABLE_ENTRY(GenRenderbuffers),
+   TABLE_ENTRY(GenerateMipmap),
+   TABLE_ENTRY(GetFramebufferAttachmentParameteriv),
+   TABLE_ENTRY(GetRenderbufferParameteriv),
+   TABLE_ENTRY(IsFramebuffer),
+   TABLE_ENTRY(IsRenderbuffer),
+   TABLE_ENTRY(RenderbufferStorage),
+   TABLE_ENTRY(BlitFramebuffer),
+   TABLE_ENTRY(FramebufferTextureLayer),
+   TABLE_ENTRY(BeginTransformFeedback),
+   TABLE_ENTRY(BindBufferBase),
+   TABLE_ENTRY(BindBufferRange),
+   TABLE_ENTRY(EndTransformFeedback),
+   TABLE_ENTRY(GetTransformFeedbackVarying),
+   TABLE_ENTRY(TransformFeedbackVaryings),
+   TABLE_ENTRY(ProvokingVertex),
+#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */
+#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS
+   TABLE_ENTRY(AreTexturesResidentEXT),
+   TABLE_ENTRY(DeleteTexturesEXT),
+   TABLE_ENTRY(GenTexturesEXT),
+   TABLE_ENTRY(IsTextureEXT),
+   TABLE_ENTRY(GetColorTableEXT),
+   TABLE_ENTRY(_dispatch_stub_343),
+   TABLE_ENTRY(GetColorTableParameterfvEXT),
+   TABLE_ENTRY(_dispatch_stub_344),
+   TABLE_ENTRY(GetColorTableParameterivEXT),
+   TABLE_ENTRY(_dispatch_stub_345),
+   TABLE_ENTRY(_dispatch_stub_356),
+   TABLE_ENTRY(_dispatch_stub_357),
+   TABLE_ENTRY(_dispatch_stub_358),
+   TABLE_ENTRY(_dispatch_stub_359),
+   TABLE_ENTRY(_dispatch_stub_361),
+   TABLE_ENTRY(_dispatch_stub_362),
+   TABLE_ENTRY(_dispatch_stub_363),
+   TABLE_ENTRY(_dispatch_stub_364),
+   TABLE_ENTRY(_dispatch_stub_365),
+   TABLE_ENTRY(_dispatch_stub_366),
+#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */
+};
+#endif /*UNUSED_TABLE_NAME*/
+
+
+#  undef KEYWORD1
+#  undef KEYWORD1_ALT
+#  undef KEYWORD2
+#  undef NAME
+#  undef DISPATCH
+#  undef RETURN_DISPATCH
+#  undef DISPATCH_TABLE_NAME
+#  undef UNUSED_TABLE_NAME
+#  undef TABLE_ENTRY
+#  undef HIDDEN
diff --git a/src/mapi/glapi/glprocs.h b/src/mapi/glapi/glprocs.h
new file mode 100644 (file)
index 0000000..8eb04ee
--- /dev/null
@@ -0,0 +1,2427 @@
+/* DO NOT EDIT - This file generated automatically by gl_procs.py (from Mesa) script */
+
+/*
+ * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
+ * (C) Copyright IBM Corporation 2004, 2006
+ * 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
+ * BRIAN PAUL, 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.
+ */
+
+
+/* This file is only included by glapi.c and is used for
+ * the GetProcAddress() function
+ */
+
+typedef struct {
+    GLint Name_offset;
+#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
+    _glapi_proc Address;
+#endif
+    GLuint Offset;
+} glprocs_table_t;
+
+#if   !defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , o }
+#elif  defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f1 , o }
+#elif  defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f2 , o }
+#elif !defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
+#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
+#endif
+
+
+
+static const char gl_string_table[] =
+    "glNewList\0"
+    "glEndList\0"
+    "glCallList\0"
+    "glCallLists\0"
+    "glDeleteLists\0"
+    "glGenLists\0"
+    "glListBase\0"
+    "glBegin\0"
+    "glBitmap\0"
+    "glColor3b\0"
+    "glColor3bv\0"
+    "glColor3d\0"
+    "glColor3dv\0"
+    "glColor3f\0"
+    "glColor3fv\0"
+    "glColor3i\0"
+    "glColor3iv\0"
+    "glColor3s\0"
+    "glColor3sv\0"
+    "glColor3ub\0"
+    "glColor3ubv\0"
+    "glColor3ui\0"
+    "glColor3uiv\0"
+    "glColor3us\0"
+    "glColor3usv\0"
+    "glColor4b\0"
+    "glColor4bv\0"
+    "glColor4d\0"
+    "glColor4dv\0"
+    "glColor4f\0"
+    "glColor4fv\0"
+    "glColor4i\0"
+    "glColor4iv\0"
+    "glColor4s\0"
+    "glColor4sv\0"
+    "glColor4ub\0"
+    "glColor4ubv\0"
+    "glColor4ui\0"
+    "glColor4uiv\0"
+    "glColor4us\0"
+    "glColor4usv\0"
+    "glEdgeFlag\0"
+    "glEdgeFlagv\0"
+    "glEnd\0"
+    "glIndexd\0"
+    "glIndexdv\0"
+    "glIndexf\0"
+    "glIndexfv\0"
+    "glIndexi\0"
+    "glIndexiv\0"
+    "glIndexs\0"
+    "glIndexsv\0"
+    "glNormal3b\0"
+    "glNormal3bv\0"
+    "glNormal3d\0"
+    "glNormal3dv\0"
+    "glNormal3f\0"
+    "glNormal3fv\0"
+    "glNormal3i\0"
+    "glNormal3iv\0"
+    "glNormal3s\0"
+    "glNormal3sv\0"
+    "glRasterPos2d\0"
+    "glRasterPos2dv\0"
+    "glRasterPos2f\0"
+    "glRasterPos2fv\0"
+    "glRasterPos2i\0"
+    "glRasterPos2iv\0"
+    "glRasterPos2s\0"
+    "glRasterPos2sv\0"
+    "glRasterPos3d\0"
+    "glRasterPos3dv\0"
+    "glRasterPos3f\0"
+    "glRasterPos3fv\0"
+    "glRasterPos3i\0"
+    "glRasterPos3iv\0"
+    "glRasterPos3s\0"
+    "glRasterPos3sv\0"
+    "glRasterPos4d\0"
+    "glRasterPos4dv\0"
+    "glRasterPos4f\0"
+    "glRasterPos4fv\0"
+    "glRasterPos4i\0"
+    "glRasterPos4iv\0"
+    "glRasterPos4s\0"
+    "glRasterPos4sv\0"
+    "glRectd\0"
+    "glRectdv\0"
+    "glRectf\0"
+    "glRectfv\0"
+    "glRecti\0"
+    "glRectiv\0"
+    "glRects\0"
+    "glRectsv\0"
+    "glTexCoord1d\0"
+    "glTexCoord1dv\0"
+    "glTexCoord1f\0"
+    "glTexCoord1fv\0"
+    "glTexCoord1i\0"
+    "glTexCoord1iv\0"
+    "glTexCoord1s\0"
+    "glTexCoord1sv\0"
+    "glTexCoord2d\0"
+    "glTexCoord2dv\0"
+    "glTexCoord2f\0"
+    "glTexCoord2fv\0"
+    "glTexCoord2i\0"
+    "glTexCoord2iv\0"
+    "glTexCoord2s\0"
+    "glTexCoord2sv\0"
+    "glTexCoord3d\0"
+    "glTexCoord3dv\0"
+    "glTexCoord3f\0"
+    "glTexCoord3fv\0"
+    "glTexCoord3i\0"
+    "glTexCoord3iv\0"
+    "glTexCoord3s\0"
+    "glTexCoord3sv\0"
+    "glTexCoord4d\0"
+    "glTexCoord4dv\0"
+    "glTexCoord4f\0"
+    "glTexCoord4fv\0"
+    "glTexCoord4i\0"
+    "glTexCoord4iv\0"
+    "glTexCoord4s\0"
+    "glTexCoord4sv\0"
+    "glVertex2d\0"
+    "glVertex2dv\0"
+    "glVertex2f\0"
+    "glVertex2fv\0"
+    "glVertex2i\0"
+    "glVertex2iv\0"
+    "glVertex2s\0"
+    "glVertex2sv\0"
+    "glVertex3d\0"
+    "glVertex3dv\0"
+    "glVertex3f\0"
+    "glVertex3fv\0"
+    "glVertex3i\0"
+    "glVertex3iv\0"
+    "glVertex3s\0"
+    "glVertex3sv\0"
+    "glVertex4d\0"
+    "glVertex4dv\0"
+    "glVertex4f\0"
+    "glVertex4fv\0"
+    "glVertex4i\0"
+    "glVertex4iv\0"
+    "glVertex4s\0"
+    "glVertex4sv\0"
+    "glClipPlane\0"
+    "glColorMaterial\0"
+    "glCullFace\0"
+    "glFogf\0"
+    "glFogfv\0"
+    "glFogi\0"
+    "glFogiv\0"
+    "glFrontFace\0"
+    "glHint\0"
+    "glLightf\0"
+    "glLightfv\0"
+    "glLighti\0"
+    "glLightiv\0"
+    "glLightModelf\0"
+    "glLightModelfv\0"
+    "glLightModeli\0"
+    "glLightModeliv\0"
+    "glLineStipple\0"
+    "glLineWidth\0"
+    "glMaterialf\0"
+    "glMaterialfv\0"
+    "glMateriali\0"
+    "glMaterialiv\0"
+    "glPointSize\0"
+    "glPolygonMode\0"
+    "glPolygonStipple\0"
+    "glScissor\0"
+    "glShadeModel\0"
+    "glTexParameterf\0"
+    "glTexParameterfv\0"
+    "glTexParameteri\0"
+    "glTexParameteriv\0"
+    "glTexImage1D\0"
+    "glTexImage2D\0"
+    "glTexEnvf\0"
+    "glTexEnvfv\0"
+    "glTexEnvi\0"
+    "glTexEnviv\0"
+    "glTexGend\0"
+    "glTexGendv\0"
+    "glTexGenf\0"
+    "glTexGenfv\0"
+    "glTexGeni\0"
+    "glTexGeniv\0"
+    "glFeedbackBuffer\0"
+    "glSelectBuffer\0"
+    "glRenderMode\0"
+    "glInitNames\0"
+    "glLoadName\0"
+    "glPassThrough\0"
+    "glPopName\0"
+    "glPushName\0"
+    "glDrawBuffer\0"
+    "glClear\0"
+    "glClearAccum\0"
+    "glClearIndex\0"
+    "glClearColor\0"
+    "glClearStencil\0"
+    "glClearDepth\0"
+    "glStencilMask\0"
+    "glColorMask\0"
+    "glDepthMask\0"
+    "glIndexMask\0"
+    "glAccum\0"
+    "glDisable\0"
+    "glEnable\0"
+    "glFinish\0"
+    "glFlush\0"
+    "glPopAttrib\0"
+    "glPushAttrib\0"
+    "glMap1d\0"
+    "glMap1f\0"
+    "glMap2d\0"
+    "glMap2f\0"
+    "glMapGrid1d\0"
+    "glMapGrid1f\0"
+    "glMapGrid2d\0"
+    "glMapGrid2f\0"
+    "glEvalCoord1d\0"
+    "glEvalCoord1dv\0"
+    "glEvalCoord1f\0"
+    "glEvalCoord1fv\0"
+    "glEvalCoord2d\0"
+    "glEvalCoord2dv\0"
+    "glEvalCoord2f\0"
+    "glEvalCoord2fv\0"
+    "glEvalMesh1\0"
+    "glEvalPoint1\0"
+    "glEvalMesh2\0"
+    "glEvalPoint2\0"
+    "glAlphaFunc\0"
+    "glBlendFunc\0"
+    "glLogicOp\0"
+    "glStencilFunc\0"
+    "glStencilOp\0"
+    "glDepthFunc\0"
+    "glPixelZoom\0"
+    "glPixelTransferf\0"
+    "glPixelTransferi\0"
+    "glPixelStoref\0"
+    "glPixelStorei\0"
+    "glPixelMapfv\0"
+    "glPixelMapuiv\0"
+    "glPixelMapusv\0"
+    "glReadBuffer\0"
+    "glCopyPixels\0"
+    "glReadPixels\0"
+    "glDrawPixels\0"
+    "glGetBooleanv\0"
+    "glGetClipPlane\0"
+    "glGetDoublev\0"
+    "glGetError\0"
+    "glGetFloatv\0"
+    "glGetIntegerv\0"
+    "glGetLightfv\0"
+    "glGetLightiv\0"
+    "glGetMapdv\0"
+    "glGetMapfv\0"
+    "glGetMapiv\0"
+    "glGetMaterialfv\0"
+    "glGetMaterialiv\0"
+    "glGetPixelMapfv\0"
+    "glGetPixelMapuiv\0"
+    "glGetPixelMapusv\0"
+    "glGetPolygonStipple\0"
+    "glGetString\0"
+    "glGetTexEnvfv\0"
+    "glGetTexEnviv\0"
+    "glGetTexGendv\0"
+    "glGetTexGenfv\0"
+    "glGetTexGeniv\0"
+    "glGetTexImage\0"
+    "glGetTexParameterfv\0"
+    "glGetTexParameteriv\0"
+    "glGetTexLevelParameterfv\0"
+    "glGetTexLevelParameteriv\0"
+    "glIsEnabled\0"
+    "glIsList\0"
+    "glDepthRange\0"
+    "glFrustum\0"
+    "glLoadIdentity\0"
+    "glLoadMatrixf\0"
+    "glLoadMatrixd\0"
+    "glMatrixMode\0"
+    "glMultMatrixf\0"
+    "glMultMatrixd\0"
+    "glOrtho\0"
+    "glPopMatrix\0"
+    "glPushMatrix\0"
+    "glRotated\0"
+    "glRotatef\0"
+    "glScaled\0"
+    "glScalef\0"
+    "glTranslated\0"
+    "glTranslatef\0"
+    "glViewport\0"
+    "glArrayElement\0"
+    "glBindTexture\0"
+    "glColorPointer\0"
+    "glDisableClientState\0"
+    "glDrawArrays\0"
+    "glDrawElements\0"
+    "glEdgeFlagPointer\0"
+    "glEnableClientState\0"
+    "glIndexPointer\0"
+    "glIndexub\0"
+    "glIndexubv\0"
+    "glInterleavedArrays\0"
+    "glNormalPointer\0"
+    "glPolygonOffset\0"
+    "glTexCoordPointer\0"
+    "glVertexPointer\0"
+    "glAreTexturesResident\0"
+    "glCopyTexImage1D\0"
+    "glCopyTexImage2D\0"
+    "glCopyTexSubImage1D\0"
+    "glCopyTexSubImage2D\0"
+    "glDeleteTextures\0"
+    "glGenTextures\0"
+    "glGetPointerv\0"
+    "glIsTexture\0"
+    "glPrioritizeTextures\0"
+    "glTexSubImage1D\0"
+    "glTexSubImage2D\0"
+    "glPopClientAttrib\0"
+    "glPushClientAttrib\0"
+    "glBlendColor\0"
+    "glBlendEquation\0"
+    "glDrawRangeElements\0"
+    "glColorTable\0"
+    "glColorTableParameterfv\0"
+    "glColorTableParameteriv\0"
+    "glCopyColorTable\0"
+    "glGetColorTable\0"
+    "glGetColorTableParameterfv\0"
+    "glGetColorTableParameteriv\0"
+    "glColorSubTable\0"
+    "glCopyColorSubTable\0"
+    "glConvolutionFilter1D\0"
+    "glConvolutionFilter2D\0"
+    "glConvolutionParameterf\0"
+    "glConvolutionParameterfv\0"
+    "glConvolutionParameteri\0"
+    "glConvolutionParameteriv\0"
+    "glCopyConvolutionFilter1D\0"
+    "glCopyConvolutionFilter2D\0"
+    "glGetConvolutionFilter\0"
+    "glGetConvolutionParameterfv\0"
+    "glGetConvolutionParameteriv\0"
+    "glGetSeparableFilter\0"
+    "glSeparableFilter2D\0"
+    "glGetHistogram\0"
+    "glGetHistogramParameterfv\0"
+    "glGetHistogramParameteriv\0"
+    "glGetMinmax\0"
+    "glGetMinmaxParameterfv\0"
+    "glGetMinmaxParameteriv\0"
+    "glHistogram\0"
+    "glMinmax\0"
+    "glResetHistogram\0"
+    "glResetMinmax\0"
+    "glTexImage3D\0"
+    "glTexSubImage3D\0"
+    "glCopyTexSubImage3D\0"
+    "glActiveTextureARB\0"
+    "glClientActiveTextureARB\0"
+    "glMultiTexCoord1dARB\0"
+    "glMultiTexCoord1dvARB\0"
+    "glMultiTexCoord1fARB\0"
+    "glMultiTexCoord1fvARB\0"
+    "glMultiTexCoord1iARB\0"
+    "glMultiTexCoord1ivARB\0"
+    "glMultiTexCoord1sARB\0"
+    "glMultiTexCoord1svARB\0"
+    "glMultiTexCoord2dARB\0"
+    "glMultiTexCoord2dvARB\0"
+    "glMultiTexCoord2fARB\0"
+    "glMultiTexCoord2fvARB\0"
+    "glMultiTexCoord2iARB\0"
+    "glMultiTexCoord2ivARB\0"
+    "glMultiTexCoord2sARB\0"
+    "glMultiTexCoord2svARB\0"
+    "glMultiTexCoord3dARB\0"
+    "glMultiTexCoord3dvARB\0"
+    "glMultiTexCoord3fARB\0"
+    "glMultiTexCoord3fvARB\0"
+    "glMultiTexCoord3iARB\0"
+    "glMultiTexCoord3ivARB\0"
+    "glMultiTexCoord3sARB\0"
+    "glMultiTexCoord3svARB\0"
+    "glMultiTexCoord4dARB\0"
+    "glMultiTexCoord4dvARB\0"
+    "glMultiTexCoord4fARB\0"
+    "glMultiTexCoord4fvARB\0"
+    "glMultiTexCoord4iARB\0"
+    "glMultiTexCoord4ivARB\0"
+    "glMultiTexCoord4sARB\0"
+    "glMultiTexCoord4svARB\0"
+    "glAttachShader\0"
+    "glCreateProgram\0"
+    "glCreateShader\0"
+    "glDeleteProgram\0"
+    "glDeleteShader\0"
+    "glDetachShader\0"
+    "glGetAttachedShaders\0"
+    "glGetProgramInfoLog\0"
+    "glGetProgramiv\0"
+    "glGetShaderInfoLog\0"
+    "glGetShaderiv\0"
+    "glIsProgram\0"
+    "glIsShader\0"
+    "glStencilFuncSeparate\0"
+    "glStencilMaskSeparate\0"
+    "glStencilOpSeparate\0"
+    "glUniformMatrix2x3fv\0"
+    "glUniformMatrix2x4fv\0"
+    "glUniformMatrix3x2fv\0"
+    "glUniformMatrix3x4fv\0"
+    "glUniformMatrix4x2fv\0"
+    "glUniformMatrix4x3fv\0"
+    "glDrawArraysInstanced\0"
+    "glDrawElementsInstanced\0"
+    "glLoadTransposeMatrixdARB\0"
+    "glLoadTransposeMatrixfARB\0"
+    "glMultTransposeMatrixdARB\0"
+    "glMultTransposeMatrixfARB\0"
+    "glSampleCoverageARB\0"
+    "glCompressedTexImage1DARB\0"
+    "glCompressedTexImage2DARB\0"
+    "glCompressedTexImage3DARB\0"
+    "glCompressedTexSubImage1DARB\0"
+    "glCompressedTexSubImage2DARB\0"
+    "glCompressedTexSubImage3DARB\0"
+    "glGetCompressedTexImageARB\0"
+    "glDisableVertexAttribArrayARB\0"
+    "glEnableVertexAttribArrayARB\0"
+    "glGetProgramEnvParameterdvARB\0"
+    "glGetProgramEnvParameterfvARB\0"
+    "glGetProgramLocalParameterdvARB\0"
+    "glGetProgramLocalParameterfvARB\0"
+    "glGetProgramStringARB\0"
+    "glGetProgramivARB\0"
+    "glGetVertexAttribdvARB\0"
+    "glGetVertexAttribfvARB\0"
+    "glGetVertexAttribivARB\0"
+    "glProgramEnvParameter4dARB\0"
+    "glProgramEnvParameter4dvARB\0"
+    "glProgramEnvParameter4fARB\0"
+    "glProgramEnvParameter4fvARB\0"
+    "glProgramLocalParameter4dARB\0"
+    "glProgramLocalParameter4dvARB\0"
+    "glProgramLocalParameter4fARB\0"
+    "glProgramLocalParameter4fvARB\0"
+    "glProgramStringARB\0"
+    "glVertexAttrib1dARB\0"
+    "glVertexAttrib1dvARB\0"
+    "glVertexAttrib1fARB\0"
+    "glVertexAttrib1fvARB\0"
+    "glVertexAttrib1sARB\0"
+    "glVertexAttrib1svARB\0"
+    "glVertexAttrib2dARB\0"
+    "glVertexAttrib2dvARB\0"
+    "glVertexAttrib2fARB\0"
+    "glVertexAttrib2fvARB\0"
+    "glVertexAttrib2sARB\0"
+    "glVertexAttrib2svARB\0"
+    "glVertexAttrib3dARB\0"
+    "glVertexAttrib3dvARB\0"
+    "glVertexAttrib3fARB\0"
+    "glVertexAttrib3fvARB\0"
+    "glVertexAttrib3sARB\0"
+    "glVertexAttrib3svARB\0"
+    "glVertexAttrib4NbvARB\0"
+    "glVertexAttrib4NivARB\0"
+    "glVertexAttrib4NsvARB\0"
+    "glVertexAttrib4NubARB\0"
+    "glVertexAttrib4NubvARB\0"
+    "glVertexAttrib4NuivARB\0"
+    "glVertexAttrib4NusvARB\0"
+    "glVertexAttrib4bvARB\0"
+    "glVertexAttrib4dARB\0"
+    "glVertexAttrib4dvARB\0"
+    "glVertexAttrib4fARB\0"
+    "glVertexAttrib4fvARB\0"
+    "glVertexAttrib4ivARB\0"
+    "glVertexAttrib4sARB\0"
+    "glVertexAttrib4svARB\0"
+    "glVertexAttrib4ubvARB\0"
+    "glVertexAttrib4uivARB\0"
+    "glVertexAttrib4usvARB\0"
+    "glVertexAttribPointerARB\0"
+    "glBindBufferARB\0"
+    "glBufferDataARB\0"
+    "glBufferSubDataARB\0"
+    "glDeleteBuffersARB\0"
+    "glGenBuffersARB\0"
+    "glGetBufferParameterivARB\0"
+    "glGetBufferPointervARB\0"
+    "glGetBufferSubDataARB\0"
+    "glIsBufferARB\0"
+    "glMapBufferARB\0"
+    "glUnmapBufferARB\0"
+    "glBeginQueryARB\0"
+    "glDeleteQueriesARB\0"
+    "glEndQueryARB\0"
+    "glGenQueriesARB\0"
+    "glGetQueryObjectivARB\0"
+    "glGetQueryObjectuivARB\0"
+    "glGetQueryivARB\0"
+    "glIsQueryARB\0"
+    "glAttachObjectARB\0"
+    "glCompileShaderARB\0"
+    "glCreateProgramObjectARB\0"
+    "glCreateShaderObjectARB\0"
+    "glDeleteObjectARB\0"
+    "glDetachObjectARB\0"
+    "glGetActiveUniformARB\0"
+    "glGetAttachedObjectsARB\0"
+    "glGetHandleARB\0"
+    "glGetInfoLogARB\0"
+    "glGetObjectParameterfvARB\0"
+    "glGetObjectParameterivARB\0"
+    "glGetShaderSourceARB\0"
+    "glGetUniformLocationARB\0"
+    "glGetUniformfvARB\0"
+    "glGetUniformivARB\0"
+    "glLinkProgramARB\0"
+    "glShaderSourceARB\0"
+    "glUniform1fARB\0"
+    "glUniform1fvARB\0"
+    "glUniform1iARB\0"
+    "glUniform1ivARB\0"
+    "glUniform2fARB\0"
+    "glUniform2fvARB\0"
+    "glUniform2iARB\0"
+    "glUniform2ivARB\0"
+    "glUniform3fARB\0"
+    "glUniform3fvARB\0"
+    "glUniform3iARB\0"
+    "glUniform3ivARB\0"
+    "glUniform4fARB\0"
+    "glUniform4fvARB\0"
+    "glUniform4iARB\0"
+    "glUniform4ivARB\0"
+    "glUniformMatrix2fvARB\0"
+    "glUniformMatrix3fvARB\0"
+    "glUniformMatrix4fvARB\0"
+    "glUseProgramObjectARB\0"
+    "glValidateProgramARB\0"
+    "glBindAttribLocationARB\0"
+    "glGetActiveAttribARB\0"
+    "glGetAttribLocationARB\0"
+    "glDrawBuffersARB\0"
+    "glRenderbufferStorageMultisample\0"
+    "glFlushMappedBufferRange\0"
+    "glMapBufferRange\0"
+    "glBindVertexArray\0"
+    "glGenVertexArrays\0"
+    "glCopyBufferSubData\0"
+    "glClientWaitSync\0"
+    "glDeleteSync\0"
+    "glFenceSync\0"
+    "glGetInteger64v\0"
+    "glGetSynciv\0"
+    "glIsSync\0"
+    "glWaitSync\0"
+    "glDrawElementsBaseVertex\0"
+    "glDrawRangeElementsBaseVertex\0"
+    "glMultiDrawElementsBaseVertex\0"
+    "glPolygonOffsetEXT\0"
+    "glGetPixelTexGenParameterfvSGIS\0"
+    "glGetPixelTexGenParameterivSGIS\0"
+    "glPixelTexGenParameterfSGIS\0"
+    "glPixelTexGenParameterfvSGIS\0"
+    "glPixelTexGenParameteriSGIS\0"
+    "glPixelTexGenParameterivSGIS\0"
+    "glSampleMaskSGIS\0"
+    "glSamplePatternSGIS\0"
+    "glColorPointerEXT\0"
+    "glEdgeFlagPointerEXT\0"
+    "glIndexPointerEXT\0"
+    "glNormalPointerEXT\0"
+    "glTexCoordPointerEXT\0"
+    "glVertexPointerEXT\0"
+    "glPointParameterfEXT\0"
+    "glPointParameterfvEXT\0"
+    "glLockArraysEXT\0"
+    "glUnlockArraysEXT\0"
+    "glCullParameterdvEXT\0"
+    "glCullParameterfvEXT\0"
+    "glSecondaryColor3bEXT\0"
+    "glSecondaryColor3bvEXT\0"
+    "glSecondaryColor3dEXT\0"
+    "glSecondaryColor3dvEXT\0"
+    "glSecondaryColor3fEXT\0"
+    "glSecondaryColor3fvEXT\0"
+    "glSecondaryColor3iEXT\0"
+    "glSecondaryColor3ivEXT\0"
+    "glSecondaryColor3sEXT\0"
+    "glSecondaryColor3svEXT\0"
+    "glSecondaryColor3ubEXT\0"
+    "glSecondaryColor3ubvEXT\0"
+    "glSecondaryColor3uiEXT\0"
+    "glSecondaryColor3uivEXT\0"
+    "glSecondaryColor3usEXT\0"
+    "glSecondaryColor3usvEXT\0"
+    "glSecondaryColorPointerEXT\0"
+    "glMultiDrawArraysEXT\0"
+    "glMultiDrawElementsEXT\0"
+    "glFogCoordPointerEXT\0"
+    "glFogCoorddEXT\0"
+    "glFogCoorddvEXT\0"
+    "glFogCoordfEXT\0"
+    "glFogCoordfvEXT\0"
+    "glPixelTexGenSGIX\0"
+    "glBlendFuncSeparateEXT\0"
+    "glFlushVertexArrayRangeNV\0"
+    "glVertexArrayRangeNV\0"
+    "glCombinerInputNV\0"
+    "glCombinerOutputNV\0"
+    "glCombinerParameterfNV\0"
+    "glCombinerParameterfvNV\0"
+    "glCombinerParameteriNV\0"
+    "glCombinerParameterivNV\0"
+    "glFinalCombinerInputNV\0"
+    "glGetCombinerInputParameterfvNV\0"
+    "glGetCombinerInputParameterivNV\0"
+    "glGetCombinerOutputParameterfvNV\0"
+    "glGetCombinerOutputParameterivNV\0"
+    "glGetFinalCombinerInputParameterfvNV\0"
+    "glGetFinalCombinerInputParameterivNV\0"
+    "glResizeBuffersMESA\0"
+    "glWindowPos2dMESA\0"
+    "glWindowPos2dvMESA\0"
+    "glWindowPos2fMESA\0"
+    "glWindowPos2fvMESA\0"
+    "glWindowPos2iMESA\0"
+    "glWindowPos2ivMESA\0"
+    "glWindowPos2sMESA\0"
+    "glWindowPos2svMESA\0"
+    "glWindowPos3dMESA\0"
+    "glWindowPos3dvMESA\0"
+    "glWindowPos3fMESA\0"
+    "glWindowPos3fvMESA\0"
+    "glWindowPos3iMESA\0"
+    "glWindowPos3ivMESA\0"
+    "glWindowPos3sMESA\0"
+    "glWindowPos3svMESA\0"
+    "glWindowPos4dMESA\0"
+    "glWindowPos4dvMESA\0"
+    "glWindowPos4fMESA\0"
+    "glWindowPos4fvMESA\0"
+    "glWindowPos4iMESA\0"
+    "glWindowPos4ivMESA\0"
+    "glWindowPos4sMESA\0"
+    "glWindowPos4svMESA\0"
+    "glMultiModeDrawArraysIBM\0"
+    "glMultiModeDrawElementsIBM\0"
+    "glDeleteFencesNV\0"
+    "glFinishFenceNV\0"
+    "glGenFencesNV\0"
+    "glGetFenceivNV\0"
+    "glIsFenceNV\0"
+    "glSetFenceNV\0"
+    "glTestFenceNV\0"
+    "glAreProgramsResidentNV\0"
+    "glBindProgramNV\0"
+    "glDeleteProgramsNV\0"
+    "glExecuteProgramNV\0"
+    "glGenProgramsNV\0"
+    "glGetProgramParameterdvNV\0"
+    "glGetProgramParameterfvNV\0"
+    "glGetProgramStringNV\0"
+    "glGetProgramivNV\0"
+    "glGetTrackMatrixivNV\0"
+    "glGetVertexAttribPointervNV\0"
+    "glGetVertexAttribdvNV\0"
+    "glGetVertexAttribfvNV\0"
+    "glGetVertexAttribivNV\0"
+    "glIsProgramNV\0"
+    "glLoadProgramNV\0"
+    "glProgramParameters4dvNV\0"
+    "glProgramParameters4fvNV\0"
+    "glRequestResidentProgramsNV\0"
+    "glTrackMatrixNV\0"
+    "glVertexAttrib1dNV\0"
+    "glVertexAttrib1dvNV\0"
+    "glVertexAttrib1fNV\0"
+    "glVertexAttrib1fvNV\0"
+    "glVertexAttrib1sNV\0"
+    "glVertexAttrib1svNV\0"
+    "glVertexAttrib2dNV\0"
+    "glVertexAttrib2dvNV\0"
+    "glVertexAttrib2fNV\0"
+    "glVertexAttrib2fvNV\0"
+    "glVertexAttrib2sNV\0"
+    "glVertexAttrib2svNV\0"
+    "glVertexAttrib3dNV\0"
+    "glVertexAttrib3dvNV\0"
+    "glVertexAttrib3fNV\0"
+    "glVertexAttrib3fvNV\0"
+    "glVertexAttrib3sNV\0"
+    "glVertexAttrib3svNV\0"
+    "glVertexAttrib4dNV\0"
+    "glVertexAttrib4dvNV\0"
+    "glVertexAttrib4fNV\0"
+    "glVertexAttrib4fvNV\0"
+    "glVertexAttrib4sNV\0"
+    "glVertexAttrib4svNV\0"
+    "glVertexAttrib4ubNV\0"
+    "glVertexAttrib4ubvNV\0"
+    "glVertexAttribPointerNV\0"
+    "glVertexAttribs1dvNV\0"
+    "glVertexAttribs1fvNV\0"
+    "glVertexAttribs1svNV\0"
+    "glVertexAttribs2dvNV\0"
+    "glVertexAttribs2fvNV\0"
+    "glVertexAttribs2svNV\0"
+    "glVertexAttribs3dvNV\0"
+    "glVertexAttribs3fvNV\0"
+    "glVertexAttribs3svNV\0"
+    "glVertexAttribs4dvNV\0"
+    "glVertexAttribs4fvNV\0"
+    "glVertexAttribs4svNV\0"
+    "glVertexAttribs4ubvNV\0"
+    "glGetTexBumpParameterfvATI\0"
+    "glGetTexBumpParameterivATI\0"
+    "glTexBumpParameterfvATI\0"
+    "glTexBumpParameterivATI\0"
+    "glAlphaFragmentOp1ATI\0"
+    "glAlphaFragmentOp2ATI\0"
+    "glAlphaFragmentOp3ATI\0"
+    "glBeginFragmentShaderATI\0"
+    "glBindFragmentShaderATI\0"
+    "glColorFragmentOp1ATI\0"
+    "glColorFragmentOp2ATI\0"
+    "glColorFragmentOp3ATI\0"
+    "glDeleteFragmentShaderATI\0"
+    "glEndFragmentShaderATI\0"
+    "glGenFragmentShadersATI\0"
+    "glPassTexCoordATI\0"
+    "glSampleMapATI\0"
+    "glSetFragmentShaderConstantATI\0"
+    "glPointParameteriNV\0"
+    "glPointParameterivNV\0"
+    "glActiveStencilFaceEXT\0"
+    "glBindVertexArrayAPPLE\0"
+    "glDeleteVertexArraysAPPLE\0"
+    "glGenVertexArraysAPPLE\0"
+    "glIsVertexArrayAPPLE\0"
+    "glGetProgramNamedParameterdvNV\0"
+    "glGetProgramNamedParameterfvNV\0"
+    "glProgramNamedParameter4dNV\0"
+    "glProgramNamedParameter4dvNV\0"
+    "glProgramNamedParameter4fNV\0"
+    "glProgramNamedParameter4fvNV\0"
+    "glDepthBoundsEXT\0"
+    "glBlendEquationSeparateEXT\0"
+    "glBindFramebufferEXT\0"
+    "glBindRenderbufferEXT\0"
+    "glCheckFramebufferStatusEXT\0"
+    "glDeleteFramebuffersEXT\0"
+    "glDeleteRenderbuffersEXT\0"
+    "glFramebufferRenderbufferEXT\0"
+    "glFramebufferTexture1DEXT\0"
+    "glFramebufferTexture2DEXT\0"
+    "glFramebufferTexture3DEXT\0"
+    "glGenFramebuffersEXT\0"
+    "glGenRenderbuffersEXT\0"
+    "glGenerateMipmapEXT\0"
+    "glGetFramebufferAttachmentParameterivEXT\0"
+    "glGetRenderbufferParameterivEXT\0"
+    "glIsFramebufferEXT\0"
+    "glIsRenderbufferEXT\0"
+    "glRenderbufferStorageEXT\0"
+    "glBlitFramebufferEXT\0"
+    "glBufferParameteriAPPLE\0"
+    "glFlushMappedBufferRangeAPPLE\0"
+    "glFramebufferTextureLayerEXT\0"
+    "glColorMaskIndexedEXT\0"
+    "glDisableIndexedEXT\0"
+    "glEnableIndexedEXT\0"
+    "glGetBooleanIndexedvEXT\0"
+    "glGetIntegerIndexedvEXT\0"
+    "glIsEnabledIndexedEXT\0"
+    "glBeginConditionalRenderNV\0"
+    "glEndConditionalRenderNV\0"
+    "glBeginTransformFeedbackEXT\0"
+    "glBindBufferBaseEXT\0"
+    "glBindBufferOffsetEXT\0"
+    "glBindBufferRangeEXT\0"
+    "glEndTransformFeedbackEXT\0"
+    "glGetTransformFeedbackVaryingEXT\0"
+    "glTransformFeedbackVaryingsEXT\0"
+    "glProvokingVertexEXT\0"
+    "glGetTexParameterPointervAPPLE\0"
+    "glTextureRangeAPPLE\0"
+    "glGetObjectParameterivAPPLE\0"
+    "glObjectPurgeableAPPLE\0"
+    "glObjectUnpurgeableAPPLE\0"
+    "glStencilFuncSeparateATI\0"
+    "glProgramEnvParameters4fvEXT\0"
+    "glProgramLocalParameters4fvEXT\0"
+    "glGetQueryObjecti64vEXT\0"
+    "glGetQueryObjectui64vEXT\0"
+    "glEGLImageTargetRenderbufferStorageOES\0"
+    "glEGLImageTargetTexture2DOES\0"
+    "glArrayElementEXT\0"
+    "glBindTextureEXT\0"
+    "glDrawArraysEXT\0"
+    "glAreTexturesResidentEXT\0"
+    "glCopyTexImage1DEXT\0"
+    "glCopyTexImage2DEXT\0"
+    "glCopyTexSubImage1DEXT\0"
+    "glCopyTexSubImage2DEXT\0"
+    "glDeleteTexturesEXT\0"
+    "glGenTexturesEXT\0"
+    "glGetPointervEXT\0"
+    "glIsTextureEXT\0"
+    "glPrioritizeTexturesEXT\0"
+    "glTexSubImage1DEXT\0"
+    "glTexSubImage2DEXT\0"
+    "glBlendColorEXT\0"
+    "glBlendEquationEXT\0"
+    "glDrawRangeElementsEXT\0"
+    "glColorTableSGI\0"
+    "glColorTableEXT\0"
+    "glColorTableParameterfvSGI\0"
+    "glColorTableParameterivSGI\0"
+    "glCopyColorTableSGI\0"
+    "glGetColorTableSGI\0"
+    "glGetColorTableEXT\0"
+    "glGetColorTableParameterfvSGI\0"
+    "glGetColorTableParameterfvEXT\0"
+    "glGetColorTableParameterivSGI\0"
+    "glGetColorTableParameterivEXT\0"
+    "glColorSubTableEXT\0"
+    "glCopyColorSubTableEXT\0"
+    "glConvolutionFilter1DEXT\0"
+    "glConvolutionFilter2DEXT\0"
+    "glConvolutionParameterfEXT\0"
+    "glConvolutionParameterfvEXT\0"
+    "glConvolutionParameteriEXT\0"
+    "glConvolutionParameterivEXT\0"
+    "glCopyConvolutionFilter1DEXT\0"
+    "glCopyConvolutionFilter2DEXT\0"
+    "glGetConvolutionFilterEXT\0"
+    "glGetConvolutionParameterfvEXT\0"
+    "glGetConvolutionParameterivEXT\0"
+    "glGetSeparableFilterEXT\0"
+    "glSeparableFilter2DEXT\0"
+    "glGetHistogramEXT\0"
+    "glGetHistogramParameterfvEXT\0"
+    "glGetHistogramParameterivEXT\0"
+    "glGetMinmaxEXT\0"
+    "glGetMinmaxParameterfvEXT\0"
+    "glGetMinmaxParameterivEXT\0"
+    "glHistogramEXT\0"
+    "glMinmaxEXT\0"
+    "glResetHistogramEXT\0"
+    "glResetMinmaxEXT\0"
+    "glTexImage3DEXT\0"
+    "glTexSubImage3DEXT\0"
+    "glCopyTexSubImage3DEXT\0"
+    "glActiveTexture\0"
+    "glClientActiveTexture\0"
+    "glMultiTexCoord1d\0"
+    "glMultiTexCoord1dv\0"
+    "glMultiTexCoord1f\0"
+    "glMultiTexCoord1fv\0"
+    "glMultiTexCoord1i\0"
+    "glMultiTexCoord1iv\0"
+    "glMultiTexCoord1s\0"
+    "glMultiTexCoord1sv\0"
+    "glMultiTexCoord2d\0"
+    "glMultiTexCoord2dv\0"
+    "glMultiTexCoord2f\0"
+    "glMultiTexCoord2fv\0"
+    "glMultiTexCoord2i\0"
+    "glMultiTexCoord2iv\0"
+    "glMultiTexCoord2s\0"
+    "glMultiTexCoord2sv\0"
+    "glMultiTexCoord3d\0"
+    "glMultiTexCoord3dv\0"
+    "glMultiTexCoord3f\0"
+    "glMultiTexCoord3fv\0"
+    "glMultiTexCoord3i\0"
+    "glMultiTexCoord3iv\0"
+    "glMultiTexCoord3s\0"
+    "glMultiTexCoord3sv\0"
+    "glMultiTexCoord4d\0"
+    "glMultiTexCoord4dv\0"
+    "glMultiTexCoord4f\0"
+    "glMultiTexCoord4fv\0"
+    "glMultiTexCoord4i\0"
+    "glMultiTexCoord4iv\0"
+    "glMultiTexCoord4s\0"
+    "glMultiTexCoord4sv\0"
+    "glStencilOpSeparateATI\0"
+    "glDrawArraysInstancedARB\0"
+    "glDrawArraysInstancedEXT\0"
+    "glDrawElementsInstancedARB\0"
+    "glDrawElementsInstancedEXT\0"
+    "glLoadTransposeMatrixd\0"
+    "glLoadTransposeMatrixf\0"
+    "glMultTransposeMatrixd\0"
+    "glMultTransposeMatrixf\0"
+    "glSampleCoverage\0"
+    "glCompressedTexImage1D\0"
+    "glCompressedTexImage2D\0"
+    "glCompressedTexImage3D\0"
+    "glCompressedTexSubImage1D\0"
+    "glCompressedTexSubImage2D\0"
+    "glCompressedTexSubImage3D\0"
+    "glGetCompressedTexImage\0"
+    "glDisableVertexAttribArray\0"
+    "glEnableVertexAttribArray\0"
+    "glGetVertexAttribdv\0"
+    "glGetVertexAttribfv\0"
+    "glGetVertexAttribiv\0"
+    "glProgramParameter4dNV\0"
+    "glProgramParameter4dvNV\0"
+    "glProgramParameter4fNV\0"
+    "glProgramParameter4fvNV\0"
+    "glVertexAttrib1d\0"
+    "glVertexAttrib1dv\0"
+    "glVertexAttrib1f\0"
+    "glVertexAttrib1fv\0"
+    "glVertexAttrib1s\0"
+    "glVertexAttrib1sv\0"
+    "glVertexAttrib2d\0"
+    "glVertexAttrib2dv\0"
+    "glVertexAttrib2f\0"
+    "glVertexAttrib2fv\0"
+    "glVertexAttrib2s\0"
+    "glVertexAttrib2sv\0"
+    "glVertexAttrib3d\0"
+    "glVertexAttrib3dv\0"
+    "glVertexAttrib3f\0"
+    "glVertexAttrib3fv\0"
+    "glVertexAttrib3s\0"
+    "glVertexAttrib3sv\0"
+    "glVertexAttrib4Nbv\0"
+    "glVertexAttrib4Niv\0"
+    "glVertexAttrib4Nsv\0"
+    "glVertexAttrib4Nub\0"
+    "glVertexAttrib4Nubv\0"
+    "glVertexAttrib4Nuiv\0"
+    "glVertexAttrib4Nusv\0"
+    "glVertexAttrib4bv\0"
+    "glVertexAttrib4d\0"
+    "glVertexAttrib4dv\0"
+    "glVertexAttrib4f\0"
+    "glVertexAttrib4fv\0"
+    "glVertexAttrib4iv\0"
+    "glVertexAttrib4s\0"
+    "glVertexAttrib4sv\0"
+    "glVertexAttrib4ubv\0"
+    "glVertexAttrib4uiv\0"
+    "glVertexAttrib4usv\0"
+    "glVertexAttribPointer\0"
+    "glBindBuffer\0"
+    "glBufferData\0"
+    "glBufferSubData\0"
+    "glDeleteBuffers\0"
+    "glGenBuffers\0"
+    "glGetBufferParameteriv\0"
+    "glGetBufferPointerv\0"
+    "glGetBufferSubData\0"
+    "glIsBuffer\0"
+    "glMapBuffer\0"
+    "glUnmapBuffer\0"
+    "glBeginQuery\0"
+    "glDeleteQueries\0"
+    "glEndQuery\0"
+    "glGenQueries\0"
+    "glGetQueryObjectiv\0"
+    "glGetQueryObjectuiv\0"
+    "glGetQueryiv\0"
+    "glIsQuery\0"
+    "glCompileShader\0"
+    "glGetActiveUniform\0"
+    "glGetShaderSource\0"
+    "glGetUniformLocation\0"
+    "glGetUniformfv\0"
+    "glGetUniformiv\0"
+    "glLinkProgram\0"
+    "glShaderSource\0"
+    "glUniform1f\0"
+    "glUniform1fv\0"
+    "glUniform1i\0"
+    "glUniform1iv\0"
+    "glUniform2f\0"
+    "glUniform2fv\0"
+    "glUniform2i\0"
+    "glUniform2iv\0"
+    "glUniform3f\0"
+    "glUniform3fv\0"
+    "glUniform3i\0"
+    "glUniform3iv\0"
+    "glUniform4f\0"
+    "glUniform4fv\0"
+    "glUniform4i\0"
+    "glUniform4iv\0"
+    "glUniformMatrix2fv\0"
+    "glUniformMatrix3fv\0"
+    "glUniformMatrix4fv\0"
+    "glUseProgram\0"
+    "glValidateProgram\0"
+    "glBindAttribLocation\0"
+    "glGetActiveAttrib\0"
+    "glGetAttribLocation\0"
+    "glDrawBuffers\0"
+    "glDrawBuffersATI\0"
+    "glRenderbufferStorageMultisampleEXT\0"
+    "glSampleMaskEXT\0"
+    "glSamplePatternEXT\0"
+    "glPointParameterf\0"
+    "glPointParameterfARB\0"
+    "glPointParameterfSGIS\0"
+    "glPointParameterfv\0"
+    "glPointParameterfvARB\0"
+    "glPointParameterfvSGIS\0"
+    "glSecondaryColor3b\0"
+    "glSecondaryColor3bv\0"
+    "glSecondaryColor3d\0"
+    "glSecondaryColor3dv\0"
+    "glSecondaryColor3f\0"
+    "glSecondaryColor3fv\0"
+    "glSecondaryColor3i\0"
+    "glSecondaryColor3iv\0"
+    "glSecondaryColor3s\0"
+    "glSecondaryColor3sv\0"
+    "glSecondaryColor3ub\0"
+    "glSecondaryColor3ubv\0"
+    "glSecondaryColor3ui\0"
+    "glSecondaryColor3uiv\0"
+    "glSecondaryColor3us\0"
+    "glSecondaryColor3usv\0"
+    "glSecondaryColorPointer\0"
+    "glMultiDrawArrays\0"
+    "glMultiDrawElements\0"
+    "glFogCoordPointer\0"
+    "glFogCoordd\0"
+    "glFogCoorddv\0"
+    "glFogCoordf\0"
+    "glFogCoordfv\0"
+    "glBlendFuncSeparate\0"
+    "glBlendFuncSeparateINGR\0"
+    "glWindowPos2d\0"
+    "glWindowPos2dARB\0"
+    "glWindowPos2dv\0"
+    "glWindowPos2dvARB\0"
+    "glWindowPos2f\0"
+    "glWindowPos2fARB\0"
+    "glWindowPos2fv\0"
+    "glWindowPos2fvARB\0"
+    "glWindowPos2i\0"
+    "glWindowPos2iARB\0"
+    "glWindowPos2iv\0"
+    "glWindowPos2ivARB\0"
+    "glWindowPos2s\0"
+    "glWindowPos2sARB\0"
+    "glWindowPos2sv\0"
+    "glWindowPos2svARB\0"
+    "glWindowPos3d\0"
+    "glWindowPos3dARB\0"
+    "glWindowPos3dv\0"
+    "glWindowPos3dvARB\0"
+    "glWindowPos3f\0"
+    "glWindowPos3fARB\0"
+    "glWindowPos3fv\0"
+    "glWindowPos3fvARB\0"
+    "glWindowPos3i\0"
+    "glWindowPos3iARB\0"
+    "glWindowPos3iv\0"
+    "glWindowPos3ivARB\0"
+    "glWindowPos3s\0"
+    "glWindowPos3sARB\0"
+    "glWindowPos3sv\0"
+    "glWindowPos3svARB\0"
+    "glBindProgramARB\0"
+    "glDeleteProgramsARB\0"
+    "glGenProgramsARB\0"
+    "glGetVertexAttribPointerv\0"
+    "glGetVertexAttribPointervARB\0"
+    "glIsProgramARB\0"
+    "glPointParameteri\0"
+    "glPointParameteriv\0"
+    "glDeleteVertexArrays\0"
+    "glIsVertexArray\0"
+    "glBlendEquationSeparate\0"
+    "glBlendEquationSeparateATI\0"
+    "glBindFramebuffer\0"
+    "glBindRenderbuffer\0"
+    "glCheckFramebufferStatus\0"
+    "glDeleteFramebuffers\0"
+    "glDeleteRenderbuffers\0"
+    "glFramebufferRenderbuffer\0"
+    "glFramebufferTexture1D\0"
+    "glFramebufferTexture2D\0"
+    "glFramebufferTexture3D\0"
+    "glGenFramebuffers\0"
+    "glGenRenderbuffers\0"
+    "glGenerateMipmap\0"
+    "glGetFramebufferAttachmentParameteriv\0"
+    "glGetRenderbufferParameteriv\0"
+    "glIsFramebuffer\0"
+    "glIsRenderbuffer\0"
+    "glRenderbufferStorage\0"
+    "glBlitFramebuffer\0"
+    "glFramebufferTextureLayer\0"
+    "glBeginTransformFeedback\0"
+    "glBindBufferBase\0"
+    "glBindBufferRange\0"
+    "glEndTransformFeedback\0"
+    "glGetTransformFeedbackVarying\0"
+    "glTransformFeedbackVaryings\0"
+    "glProvokingVertex\0"
+    ;
+
+
+#ifdef USE_MGL_NAMESPACE
+#define gl_dispatch_stub_343 mgl_dispatch_stub_343
+#define gl_dispatch_stub_344 mgl_dispatch_stub_344
+#define gl_dispatch_stub_345 mgl_dispatch_stub_345
+#define gl_dispatch_stub_356 mgl_dispatch_stub_356
+#define gl_dispatch_stub_357 mgl_dispatch_stub_357
+#define gl_dispatch_stub_358 mgl_dispatch_stub_358
+#define gl_dispatch_stub_359 mgl_dispatch_stub_359
+#define gl_dispatch_stub_361 mgl_dispatch_stub_361
+#define gl_dispatch_stub_362 mgl_dispatch_stub_362
+#define gl_dispatch_stub_363 mgl_dispatch_stub_363
+#define gl_dispatch_stub_364 mgl_dispatch_stub_364
+#define gl_dispatch_stub_365 mgl_dispatch_stub_365
+#define gl_dispatch_stub_366 mgl_dispatch_stub_366
+#define gl_dispatch_stub_580 mgl_dispatch_stub_580
+#define gl_dispatch_stub_581 mgl_dispatch_stub_581
+#define gl_dispatch_stub_582 mgl_dispatch_stub_582
+#define gl_dispatch_stub_583 mgl_dispatch_stub_583
+#define gl_dispatch_stub_584 mgl_dispatch_stub_584
+#define gl_dispatch_stub_585 mgl_dispatch_stub_585
+#define gl_dispatch_stub_586 mgl_dispatch_stub_586
+#define gl_dispatch_stub_587 mgl_dispatch_stub_587
+#define gl_dispatch_stub_598 mgl_dispatch_stub_598
+#define gl_dispatch_stub_599 mgl_dispatch_stub_599
+#define gl_dispatch_stub_624 mgl_dispatch_stub_624
+#define gl_dispatch_stub_666 mgl_dispatch_stub_666
+#define gl_dispatch_stub_667 mgl_dispatch_stub_667
+#define gl_dispatch_stub_668 mgl_dispatch_stub_668
+#define gl_dispatch_stub_669 mgl_dispatch_stub_669
+#define gl_dispatch_stub_670 mgl_dispatch_stub_670
+#define gl_dispatch_stub_671 mgl_dispatch_stub_671
+#define gl_dispatch_stub_672 mgl_dispatch_stub_672
+#define gl_dispatch_stub_673 mgl_dispatch_stub_673
+#define gl_dispatch_stub_674 mgl_dispatch_stub_674
+#define gl_dispatch_stub_755 mgl_dispatch_stub_755
+#define gl_dispatch_stub_756 mgl_dispatch_stub_756
+#define gl_dispatch_stub_757 mgl_dispatch_stub_757
+#define gl_dispatch_stub_758 mgl_dispatch_stub_758
+#define gl_dispatch_stub_759 mgl_dispatch_stub_759
+#define gl_dispatch_stub_766 mgl_dispatch_stub_766
+#define gl_dispatch_stub_767 mgl_dispatch_stub_767
+#define gl_dispatch_stub_785 mgl_dispatch_stub_785
+#define gl_dispatch_stub_786 mgl_dispatch_stub_786
+#define gl_dispatch_stub_787 mgl_dispatch_stub_787
+#define gl_dispatch_stub_805 mgl_dispatch_stub_805
+#define gl_dispatch_stub_806 mgl_dispatch_stub_806
+#define gl_dispatch_stub_810 mgl_dispatch_stub_810
+#define gl_dispatch_stub_811 mgl_dispatch_stub_811
+#define gl_dispatch_stub_812 mgl_dispatch_stub_812
+#define gl_dispatch_stub_813 mgl_dispatch_stub_813
+#define gl_dispatch_stub_814 mgl_dispatch_stub_814
+#endif /* USE_MGL_NAMESPACE */
+
+
+#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
+void GLAPIENTRY gl_dispatch_stub_343(GLenum target, GLenum format, GLenum type, GLvoid * table);
+void GLAPIENTRY gl_dispatch_stub_344(GLenum target, GLenum pname, GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_345(GLenum target, GLenum pname, GLint * params);
+void GLAPIENTRY gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type, GLvoid * image);
+void GLAPIENTRY gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params);
+void GLAPIENTRY gl_dispatch_stub_359(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
+void GLAPIENTRY gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+void GLAPIENTRY gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params);
+void GLAPIENTRY gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
+void GLAPIENTRY gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params);
+void GLAPIENTRY gl_dispatch_stub_580(GLenum pname, GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_581(GLenum pname, GLint * params);
+void GLAPIENTRY gl_dispatch_stub_582(GLenum pname, GLfloat param);
+void GLAPIENTRY gl_dispatch_stub_583(GLenum pname, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_584(GLenum pname, GLint param);
+void GLAPIENTRY gl_dispatch_stub_585(GLenum pname, const GLint * params);
+void GLAPIENTRY gl_dispatch_stub_586(GLclampf value, GLboolean invert);
+void GLAPIENTRY gl_dispatch_stub_587(GLenum pattern);
+void GLAPIENTRY gl_dispatch_stub_598(GLenum pname, GLdouble * params);
+void GLAPIENTRY gl_dispatch_stub_599(GLenum pname, GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_624(GLenum mode);
+void GLAPIENTRY gl_dispatch_stub_666(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
+void GLAPIENTRY gl_dispatch_stub_667(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
+void GLAPIENTRY gl_dispatch_stub_668(GLsizei n, const GLuint * fences);
+void GLAPIENTRY gl_dispatch_stub_669(GLuint fence);
+void GLAPIENTRY gl_dispatch_stub_670(GLsizei n, GLuint * fences);
+void GLAPIENTRY gl_dispatch_stub_671(GLuint fence, GLenum pname, GLint * params);
+GLboolean GLAPIENTRY gl_dispatch_stub_672(GLuint fence);
+void GLAPIENTRY gl_dispatch_stub_673(GLuint fence, GLenum condition);
+GLboolean GLAPIENTRY gl_dispatch_stub_674(GLuint fence);
+void GLAPIENTRY gl_dispatch_stub_755(GLenum face);
+void GLAPIENTRY gl_dispatch_stub_756(GLuint array);
+void GLAPIENTRY gl_dispatch_stub_757(GLsizei n, const GLuint * arrays);
+void GLAPIENTRY gl_dispatch_stub_758(GLsizei n, GLuint * arrays);
+GLboolean GLAPIENTRY gl_dispatch_stub_759(GLuint array);
+void GLAPIENTRY gl_dispatch_stub_766(GLclampd zmin, GLclampd zmax);
+void GLAPIENTRY gl_dispatch_stub_767(GLenum modeRGB, GLenum modeA);
+void GLAPIENTRY gl_dispatch_stub_785(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
+void GLAPIENTRY gl_dispatch_stub_786(GLenum target, GLenum pname, GLint param);
+void GLAPIENTRY gl_dispatch_stub_787(GLenum target, GLintptr offset, GLsizeiptr size);
+void GLAPIENTRY gl_dispatch_stub_805(GLenum target, GLenum pname, GLvoid ** params);
+void GLAPIENTRY gl_dispatch_stub_806(GLenum target, GLsizei length, GLvoid * pointer);
+void GLAPIENTRY gl_dispatch_stub_810(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
+void GLAPIENTRY gl_dispatch_stub_811(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_812(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
+void GLAPIENTRY gl_dispatch_stub_813(GLuint id, GLenum pname, GLint64EXT * params);
+void GLAPIENTRY gl_dispatch_stub_814(GLuint id, GLenum pname, GLuint64EXT * params);
+#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */
+
+static const glprocs_table_t static_functions[] = {
+    NAME_FUNC_OFFSET(    0, glNewList, glNewList, NULL, _gloffset_NewList),
+    NAME_FUNC_OFFSET(   10, glEndList, glEndList, NULL, _gloffset_EndList),
+    NAME_FUNC_OFFSET(   20, glCallList, glCallList, NULL, _gloffset_CallList),
+    NAME_FUNC_OFFSET(   31, glCallLists, glCallLists, NULL, _gloffset_CallLists),
+    NAME_FUNC_OFFSET(   43, glDeleteLists, glDeleteLists, NULL, _gloffset_DeleteLists),
+    NAME_FUNC_OFFSET(   57, glGenLists, glGenLists, NULL, _gloffset_GenLists),
+    NAME_FUNC_OFFSET(   68, glListBase, glListBase, NULL, _gloffset_ListBase),
+    NAME_FUNC_OFFSET(   79, glBegin, glBegin, NULL, _gloffset_Begin),
+    NAME_FUNC_OFFSET(   87, glBitmap, glBitmap, NULL, _gloffset_Bitmap),
+    NAME_FUNC_OFFSET(   96, glColor3b, glColor3b, NULL, _gloffset_Color3b),
+    NAME_FUNC_OFFSET(  106, glColor3bv, glColor3bv, NULL, _gloffset_Color3bv),
+    NAME_FUNC_OFFSET(  117, glColor3d, glColor3d, NULL, _gloffset_Color3d),
+    NAME_FUNC_OFFSET(  127, glColor3dv, glColor3dv, NULL, _gloffset_Color3dv),
+    NAME_FUNC_OFFSET(  138, glColor3f, glColor3f, NULL, _gloffset_Color3f),
+    NAME_FUNC_OFFSET(  148, glColor3fv, glColor3fv, NULL, _gloffset_Color3fv),
+    NAME_FUNC_OFFSET(  159, glColor3i, glColor3i, NULL, _gloffset_Color3i),
+    NAME_FUNC_OFFSET(  169, glColor3iv, glColor3iv, NULL, _gloffset_Color3iv),
+    NAME_FUNC_OFFSET(  180, glColor3s, glColor3s, NULL, _gloffset_Color3s),
+    NAME_FUNC_OFFSET(  190, glColor3sv, glColor3sv, NULL, _gloffset_Color3sv),
+    NAME_FUNC_OFFSET(  201, glColor3ub, glColor3ub, NULL, _gloffset_Color3ub),
+    NAME_FUNC_OFFSET(  212, glColor3ubv, glColor3ubv, NULL, _gloffset_Color3ubv),
+    NAME_FUNC_OFFSET(  224, glColor3ui, glColor3ui, NULL, _gloffset_Color3ui),
+    NAME_FUNC_OFFSET(  235, glColor3uiv, glColor3uiv, NULL, _gloffset_Color3uiv),
+    NAME_FUNC_OFFSET(  247, glColor3us, glColor3us, NULL, _gloffset_Color3us),
+    NAME_FUNC_OFFSET(  258, glColor3usv, glColor3usv, NULL, _gloffset_Color3usv),
+    NAME_FUNC_OFFSET(  270, glColor4b, glColor4b, NULL, _gloffset_Color4b),
+    NAME_FUNC_OFFSET(  280, glColor4bv, glColor4bv, NULL, _gloffset_Color4bv),
+    NAME_FUNC_OFFSET(  291, glColor4d, glColor4d, NULL, _gloffset_Color4d),
+    NAME_FUNC_OFFSET(  301, glColor4dv, glColor4dv, NULL, _gloffset_Color4dv),
+    NAME_FUNC_OFFSET(  312, glColor4f, glColor4f, NULL, _gloffset_Color4f),
+    NAME_FUNC_OFFSET(  322, glColor4fv, glColor4fv, NULL, _gloffset_Color4fv),
+    NAME_FUNC_OFFSET(  333, glColor4i, glColor4i, NULL, _gloffset_Color4i),
+    NAME_FUNC_OFFSET(  343, glColor4iv, glColor4iv, NULL, _gloffset_Color4iv),
+    NAME_FUNC_OFFSET(  354, glColor4s, glColor4s, NULL, _gloffset_Color4s),
+    NAME_FUNC_OFFSET(  364, glColor4sv, glColor4sv, NULL, _gloffset_Color4sv),
+    NAME_FUNC_OFFSET(  375, glColor4ub, glColor4ub, NULL, _gloffset_Color4ub),
+    NAME_FUNC_OFFSET(  386, glColor4ubv, glColor4ubv, NULL, _gloffset_Color4ubv),
+    NAME_FUNC_OFFSET(  398, glColor4ui, glColor4ui, NULL, _gloffset_Color4ui),
+    NAME_FUNC_OFFSET(  409, glColor4uiv, glColor4uiv, NULL, _gloffset_Color4uiv),
+    NAME_FUNC_OFFSET(  421, glColor4us, glColor4us, NULL, _gloffset_Color4us),
+    NAME_FUNC_OFFSET(  432, glColor4usv, glColor4usv, NULL, _gloffset_Color4usv),
+    NAME_FUNC_OFFSET(  444, glEdgeFlag, glEdgeFlag, NULL, _gloffset_EdgeFlag),
+    NAME_FUNC_OFFSET(  455, glEdgeFlagv, glEdgeFlagv, NULL, _gloffset_EdgeFlagv),
+    NAME_FUNC_OFFSET(  467, glEnd, glEnd, NULL, _gloffset_End),
+    NAME_FUNC_OFFSET(  473, glIndexd, glIndexd, NULL, _gloffset_Indexd),
+    NAME_FUNC_OFFSET(  482, glIndexdv, glIndexdv, NULL, _gloffset_Indexdv),
+    NAME_FUNC_OFFSET(  492, glIndexf, glIndexf, NULL, _gloffset_Indexf),
+    NAME_FUNC_OFFSET(  501, glIndexfv, glIndexfv, NULL, _gloffset_Indexfv),
+    NAME_FUNC_OFFSET(  511, glIndexi, glIndexi, NULL, _gloffset_Indexi),
+    NAME_FUNC_OFFSET(  520, glIndexiv, glIndexiv, NULL, _gloffset_Indexiv),
+    NAME_FUNC_OFFSET(  530, glIndexs, glIndexs, NULL, _gloffset_Indexs),
+    NAME_FUNC_OFFSET(  539, glIndexsv, glIndexsv, NULL, _gloffset_Indexsv),
+    NAME_FUNC_OFFSET(  549, glNormal3b, glNormal3b, NULL, _gloffset_Normal3b),
+    NAME_FUNC_OFFSET(  560, glNormal3bv, glNormal3bv, NULL, _gloffset_Normal3bv),
+    NAME_FUNC_OFFSET(  572, glNormal3d, glNormal3d, NULL, _gloffset_Normal3d),
+    NAME_FUNC_OFFSET(  583, glNormal3dv, glNormal3dv, NULL, _gloffset_Normal3dv),
+    NAME_FUNC_OFFSET(  595, glNormal3f, glNormal3f, NULL, _gloffset_Normal3f),
+    NAME_FUNC_OFFSET(  606, glNormal3fv, glNormal3fv, NULL, _gloffset_Normal3fv),
+    NAME_FUNC_OFFSET(  618, glNormal3i, glNormal3i, NULL, _gloffset_Normal3i),
+    NAME_FUNC_OFFSET(  629, glNormal3iv, glNormal3iv, NULL, _gloffset_Normal3iv),
+    NAME_FUNC_OFFSET(  641, glNormal3s, glNormal3s, NULL, _gloffset_Normal3s),
+    NAME_FUNC_OFFSET(  652, glNormal3sv, glNormal3sv, NULL, _gloffset_Normal3sv),
+    NAME_FUNC_OFFSET(  664, glRasterPos2d, glRasterPos2d, NULL, _gloffset_RasterPos2d),
+    NAME_FUNC_OFFSET(  678, glRasterPos2dv, glRasterPos2dv, NULL, _gloffset_RasterPos2dv),
+    NAME_FUNC_OFFSET(  693, glRasterPos2f, glRasterPos2f, NULL, _gloffset_RasterPos2f),
+    NAME_FUNC_OFFSET(  707, glRasterPos2fv, glRasterPos2fv, NULL, _gloffset_RasterPos2fv),
+    NAME_FUNC_OFFSET(  722, glRasterPos2i, glRasterPos2i, NULL, _gloffset_RasterPos2i),
+    NAME_FUNC_OFFSET(  736, glRasterPos2iv, glRasterPos2iv, NULL, _gloffset_RasterPos2iv),
+    NAME_FUNC_OFFSET(  751, glRasterPos2s, glRasterPos2s, NULL, _gloffset_RasterPos2s),
+    NAME_FUNC_OFFSET(  765, glRasterPos2sv, glRasterPos2sv, NULL, _gloffset_RasterPos2sv),
+    NAME_FUNC_OFFSET(  780, glRasterPos3d, glRasterPos3d, NULL, _gloffset_RasterPos3d),
+    NAME_FUNC_OFFSET(  794, glRasterPos3dv, glRasterPos3dv, NULL, _gloffset_RasterPos3dv),
+    NAME_FUNC_OFFSET(  809, glRasterPos3f, glRasterPos3f, NULL, _gloffset_RasterPos3f),
+    NAME_FUNC_OFFSET(  823, glRasterPos3fv, glRasterPos3fv, NULL, _gloffset_RasterPos3fv),
+    NAME_FUNC_OFFSET(  838, glRasterPos3i, glRasterPos3i, NULL, _gloffset_RasterPos3i),
+    NAME_FUNC_OFFSET(  852, glRasterPos3iv, glRasterPos3iv, NULL, _gloffset_RasterPos3iv),
+    NAME_FUNC_OFFSET(  867, glRasterPos3s, glRasterPos3s, NULL, _gloffset_RasterPos3s),
+    NAME_FUNC_OFFSET(  881, glRasterPos3sv, glRasterPos3sv, NULL, _gloffset_RasterPos3sv),
+    NAME_FUNC_OFFSET(  896, glRasterPos4d, glRasterPos4d, NULL, _gloffset_RasterPos4d),
+    NAME_FUNC_OFFSET(  910, glRasterPos4dv, glRasterPos4dv, NULL, _gloffset_RasterPos4dv),
+    NAME_FUNC_OFFSET(  925, glRasterPos4f, glRasterPos4f, NULL, _gloffset_RasterPos4f),
+    NAME_FUNC_OFFSET(  939, glRasterPos4fv, glRasterPos4fv, NULL, _gloffset_RasterPos4fv),
+    NAME_FUNC_OFFSET(  954, glRasterPos4i, glRasterPos4i, NULL, _gloffset_RasterPos4i),
+    NAME_FUNC_OFFSET(  968, glRasterPos4iv, glRasterPos4iv, NULL, _gloffset_RasterPos4iv),
+    NAME_FUNC_OFFSET(  983, glRasterPos4s, glRasterPos4s, NULL, _gloffset_RasterPos4s),
+    NAME_FUNC_OFFSET(  997, glRasterPos4sv, glRasterPos4sv, NULL, _gloffset_RasterPos4sv),
+    NAME_FUNC_OFFSET( 1012, glRectd, glRectd, NULL, _gloffset_Rectd),
+    NAME_FUNC_OFFSET( 1020, glRectdv, glRectdv, NULL, _gloffset_Rectdv),
+    NAME_FUNC_OFFSET( 1029, glRectf, glRectf, NULL, _gloffset_Rectf),
+    NAME_FUNC_OFFSET( 1037, glRectfv, glRectfv, NULL, _gloffset_Rectfv),
+    NAME_FUNC_OFFSET( 1046, glRecti, glRecti, NULL, _gloffset_Recti),
+    NAME_FUNC_OFFSET( 1054, glRectiv, glRectiv, NULL, _gloffset_Rectiv),
+    NAME_FUNC_OFFSET( 1063, glRects, glRects, NULL, _gloffset_Rects),
+    NAME_FUNC_OFFSET( 1071, glRectsv, glRectsv, NULL, _gloffset_Rectsv),
+    NAME_FUNC_OFFSET( 1080, glTexCoord1d, glTexCoord1d, NULL, _gloffset_TexCoord1d),
+    NAME_FUNC_OFFSET( 1093, glTexCoord1dv, glTexCoord1dv, NULL, _gloffset_TexCoord1dv),
+    NAME_FUNC_OFFSET( 1107, glTexCoord1f, glTexCoord1f, NULL, _gloffset_TexCoord1f),
+    NAME_FUNC_OFFSET( 1120, glTexCoord1fv, glTexCoord1fv, NULL, _gloffset_TexCoord1fv),
+    NAME_FUNC_OFFSET( 1134, glTexCoord1i, glTexCoord1i, NULL, _gloffset_TexCoord1i),
+    NAME_FUNC_OFFSET( 1147, glTexCoord1iv, glTexCoord1iv, NULL, _gloffset_TexCoord1iv),
+    NAME_FUNC_OFFSET( 1161, glTexCoord1s, glTexCoord1s, NULL, _gloffset_TexCoord1s),
+    NAME_FUNC_OFFSET( 1174, glTexCoord1sv, glTexCoord1sv, NULL, _gloffset_TexCoord1sv),
+    NAME_FUNC_OFFSET( 1188, glTexCoord2d, glTexCoord2d, NULL, _gloffset_TexCoord2d),
+    NAME_FUNC_OFFSET( 1201, glTexCoord2dv, glTexCoord2dv, NULL, _gloffset_TexCoord2dv),
+    NAME_FUNC_OFFSET( 1215, glTexCoord2f, glTexCoord2f, NULL, _gloffset_TexCoord2f),
+    NAME_FUNC_OFFSET( 1228, glTexCoord2fv, glTexCoord2fv, NULL, _gloffset_TexCoord2fv),
+    NAME_FUNC_OFFSET( 1242, glTexCoord2i, glTexCoord2i, NULL, _gloffset_TexCoord2i),
+    NAME_FUNC_OFFSET( 1255, glTexCoord2iv, glTexCoord2iv, NULL, _gloffset_TexCoord2iv),
+    NAME_FUNC_OFFSET( 1269, glTexCoord2s, glTexCoord2s, NULL, _gloffset_TexCoord2s),
+    NAME_FUNC_OFFSET( 1282, glTexCoord2sv, glTexCoord2sv, NULL, _gloffset_TexCoord2sv),
+    NAME_FUNC_OFFSET( 1296, glTexCoord3d, glTexCoord3d, NULL, _gloffset_TexCoord3d),
+    NAME_FUNC_OFFSET( 1309, glTexCoord3dv, glTexCoord3dv, NULL, _gloffset_TexCoord3dv),
+    NAME_FUNC_OFFSET( 1323, glTexCoord3f, glTexCoord3f, NULL, _gloffset_TexCoord3f),
+    NAME_FUNC_OFFSET( 1336, glTexCoord3fv, glTexCoord3fv, NULL, _gloffset_TexCoord3fv),
+    NAME_FUNC_OFFSET( 1350, glTexCoord3i, glTexCoord3i, NULL, _gloffset_TexCoord3i),
+    NAME_FUNC_OFFSET( 1363, glTexCoord3iv, glTexCoord3iv, NULL, _gloffset_TexCoord3iv),
+    NAME_FUNC_OFFSET( 1377, glTexCoord3s, glTexCoord3s, NULL, _gloffset_TexCoord3s),
+    NAME_FUNC_OFFSET( 1390, glTexCoord3sv, glTexCoord3sv, NULL, _gloffset_TexCoord3sv),
+    NAME_FUNC_OFFSET( 1404, glTexCoord4d, glTexCoord4d, NULL, _gloffset_TexCoord4d),
+    NAME_FUNC_OFFSET( 1417, glTexCoord4dv, glTexCoord4dv, NULL, _gloffset_TexCoord4dv),
+    NAME_FUNC_OFFSET( 1431, glTexCoord4f, glTexCoord4f, NULL, _gloffset_TexCoord4f),
+    NAME_FUNC_OFFSET( 1444, glTexCoord4fv, glTexCoord4fv, NULL, _gloffset_TexCoord4fv),
+    NAME_FUNC_OFFSET( 1458, glTexCoord4i, glTexCoord4i, NULL, _gloffset_TexCoord4i),
+    NAME_FUNC_OFFSET( 1471, glTexCoord4iv, glTexCoord4iv, NULL, _gloffset_TexCoord4iv),
+    NAME_FUNC_OFFSET( 1485, glTexCoord4s, glTexCoord4s, NULL, _gloffset_TexCoord4s),
+    NAME_FUNC_OFFSET( 1498, glTexCoord4sv, glTexCoord4sv, NULL, _gloffset_TexCoord4sv),
+    NAME_FUNC_OFFSET( 1512, glVertex2d, glVertex2d, NULL, _gloffset_Vertex2d),
+    NAME_FUNC_OFFSET( 1523, glVertex2dv, glVertex2dv, NULL, _gloffset_Vertex2dv),
+    NAME_FUNC_OFFSET( 1535, glVertex2f, glVertex2f, NULL, _gloffset_Vertex2f),
+    NAME_FUNC_OFFSET( 1546, glVertex2fv, glVertex2fv, NULL, _gloffset_Vertex2fv),
+    NAME_FUNC_OFFSET( 1558, glVertex2i, glVertex2i, NULL, _gloffset_Vertex2i),
+    NAME_FUNC_OFFSET( 1569, glVertex2iv, glVertex2iv, NULL, _gloffset_Vertex2iv),
+    NAME_FUNC_OFFSET( 1581, glVertex2s, glVertex2s, NULL, _gloffset_Vertex2s),
+    NAME_FUNC_OFFSET( 1592, glVertex2sv, glVertex2sv, NULL, _gloffset_Vertex2sv),
+    NAME_FUNC_OFFSET( 1604, glVertex3d, glVertex3d, NULL, _gloffset_Vertex3d),
+    NAME_FUNC_OFFSET( 1615, glVertex3dv, glVertex3dv, NULL, _gloffset_Vertex3dv),
+    NAME_FUNC_OFFSET( 1627, glVertex3f, glVertex3f, NULL, _gloffset_Vertex3f),
+    NAME_FUNC_OFFSET( 1638, glVertex3fv, glVertex3fv, NULL, _gloffset_Vertex3fv),
+    NAME_FUNC_OFFSET( 1650, glVertex3i, glVertex3i, NULL, _gloffset_Vertex3i),
+    NAME_FUNC_OFFSET( 1661, glVertex3iv, glVertex3iv, NULL, _gloffset_Vertex3iv),
+    NAME_FUNC_OFFSET( 1673, glVertex3s, glVertex3s, NULL, _gloffset_Vertex3s),
+    NAME_FUNC_OFFSET( 1684, glVertex3sv, glVertex3sv, NULL, _gloffset_Vertex3sv),
+    NAME_FUNC_OFFSET( 1696, glVertex4d, glVertex4d, NULL, _gloffset_Vertex4d),
+    NAME_FUNC_OFFSET( 1707, glVertex4dv, glVertex4dv, NULL, _gloffset_Vertex4dv),
+    NAME_FUNC_OFFSET( 1719, glVertex4f, glVertex4f, NULL, _gloffset_Vertex4f),
+    NAME_FUNC_OFFSET( 1730, glVertex4fv, glVertex4fv, NULL, _gloffset_Vertex4fv),
+    NAME_FUNC_OFFSET( 1742, glVertex4i, glVertex4i, NULL, _gloffset_Vertex4i),
+    NAME_FUNC_OFFSET( 1753, glVertex4iv, glVertex4iv, NULL, _gloffset_Vertex4iv),
+    NAME_FUNC_OFFSET( 1765, glVertex4s, glVertex4s, NULL, _gloffset_Vertex4s),
+    NAME_FUNC_OFFSET( 1776, glVertex4sv, glVertex4sv, NULL, _gloffset_Vertex4sv),
+    NAME_FUNC_OFFSET( 1788, glClipPlane, glClipPlane, NULL, _gloffset_ClipPlane),
+    NAME_FUNC_OFFSET( 1800, glColorMaterial, glColorMaterial, NULL, _gloffset_ColorMaterial),
+    NAME_FUNC_OFFSET( 1816, glCullFace, glCullFace, NULL, _gloffset_CullFace),
+    NAME_FUNC_OFFSET( 1827, glFogf, glFogf, NULL, _gloffset_Fogf),
+    NAME_FUNC_OFFSET( 1834, glFogfv, glFogfv, NULL, _gloffset_Fogfv),
+    NAME_FUNC_OFFSET( 1842, glFogi, glFogi, NULL, _gloffset_Fogi),
+    NAME_FUNC_OFFSET( 1849, glFogiv, glFogiv, NULL, _gloffset_Fogiv),
+    NAME_FUNC_OFFSET( 1857, glFrontFace, glFrontFace, NULL, _gloffset_FrontFace),
+    NAME_FUNC_OFFSET( 1869, glHint, glHint, NULL, _gloffset_Hint),
+    NAME_FUNC_OFFSET( 1876, glLightf, glLightf, NULL, _gloffset_Lightf),
+    NAME_FUNC_OFFSET( 1885, glLightfv, glLightfv, NULL, _gloffset_Lightfv),
+    NAME_FUNC_OFFSET( 1895, glLighti, glLighti, NULL, _gloffset_Lighti),
+    NAME_FUNC_OFFSET( 1904, glLightiv, glLightiv, NULL, _gloffset_Lightiv),
+    NAME_FUNC_OFFSET( 1914, glLightModelf, glLightModelf, NULL, _gloffset_LightModelf),
+    NAME_FUNC_OFFSET( 1928, glLightModelfv, glLightModelfv, NULL, _gloffset_LightModelfv),
+    NAME_FUNC_OFFSET( 1943, glLightModeli, glLightModeli, NULL, _gloffset_LightModeli),
+    NAME_FUNC_OFFSET( 1957, glLightModeliv, glLightModeliv, NULL, _gloffset_LightModeliv),
+    NAME_FUNC_OFFSET( 1972, glLineStipple, glLineStipple, NULL, _gloffset_LineStipple),
+    NAME_FUNC_OFFSET( 1986, glLineWidth, glLineWidth, NULL, _gloffset_LineWidth),
+    NAME_FUNC_OFFSET( 1998, glMaterialf, glMaterialf, NULL, _gloffset_Materialf),
+    NAME_FUNC_OFFSET( 2010, glMaterialfv, glMaterialfv, NULL, _gloffset_Materialfv),
+    NAME_FUNC_OFFSET( 2023, glMateriali, glMateriali, NULL, _gloffset_Materiali),
+    NAME_FUNC_OFFSET( 2035, glMaterialiv, glMaterialiv, NULL, _gloffset_Materialiv),
+    NAME_FUNC_OFFSET( 2048, glPointSize, glPointSize, NULL, _gloffset_PointSize),
+    NAME_FUNC_OFFSET( 2060, glPolygonMode, glPolygonMode, NULL, _gloffset_PolygonMode),
+    NAME_FUNC_OFFSET( 2074, glPolygonStipple, glPolygonStipple, NULL, _gloffset_PolygonStipple),
+    NAME_FUNC_OFFSET( 2091, glScissor, glScissor, NULL, _gloffset_Scissor),
+    NAME_FUNC_OFFSET( 2101, glShadeModel, glShadeModel, NULL, _gloffset_ShadeModel),
+    NAME_FUNC_OFFSET( 2114, glTexParameterf, glTexParameterf, NULL, _gloffset_TexParameterf),
+    NAME_FUNC_OFFSET( 2130, glTexParameterfv, glTexParameterfv, NULL, _gloffset_TexParameterfv),
+    NAME_FUNC_OFFSET( 2147, glTexParameteri, glTexParameteri, NULL, _gloffset_TexParameteri),
+    NAME_FUNC_OFFSET( 2163, glTexParameteriv, glTexParameteriv, NULL, _gloffset_TexParameteriv),
+    NAME_FUNC_OFFSET( 2180, glTexImage1D, glTexImage1D, NULL, _gloffset_TexImage1D),
+    NAME_FUNC_OFFSET( 2193, glTexImage2D, glTexImage2D, NULL, _gloffset_TexImage2D),
+    NAME_FUNC_OFFSET( 2206, glTexEnvf, glTexEnvf, NULL, _gloffset_TexEnvf),
+    NAME_FUNC_OFFSET( 2216, glTexEnvfv, glTexEnvfv, NULL, _gloffset_TexEnvfv),
+    NAME_FUNC_OFFSET( 2227, glTexEnvi, glTexEnvi, NULL, _gloffset_TexEnvi),
+    NAME_FUNC_OFFSET( 2237, glTexEnviv, glTexEnviv, NULL, _gloffset_TexEnviv),
+    NAME_FUNC_OFFSET( 2248, glTexGend, glTexGend, NULL, _gloffset_TexGend),
+    NAME_FUNC_OFFSET( 2258, glTexGendv, glTexGendv, NULL, _gloffset_TexGendv),
+    NAME_FUNC_OFFSET( 2269, glTexGenf, glTexGenf, NULL, _gloffset_TexGenf),
+    NAME_FUNC_OFFSET( 2279, glTexGenfv, glTexGenfv, NULL, _gloffset_TexGenfv),
+    NAME_FUNC_OFFSET( 2290, glTexGeni, glTexGeni, NULL, _gloffset_TexGeni),
+    NAME_FUNC_OFFSET( 2300, glTexGeniv, glTexGeniv, NULL, _gloffset_TexGeniv),
+    NAME_FUNC_OFFSET( 2311, glFeedbackBuffer, glFeedbackBuffer, NULL, _gloffset_FeedbackBuffer),
+    NAME_FUNC_OFFSET( 2328, glSelectBuffer, glSelectBuffer, NULL, _gloffset_SelectBuffer),
+    NAME_FUNC_OFFSET( 2343, glRenderMode, glRenderMode, NULL, _gloffset_RenderMode),
+    NAME_FUNC_OFFSET( 2356, glInitNames, glInitNames, NULL, _gloffset_InitNames),
+    NAME_FUNC_OFFSET( 2368, glLoadName, glLoadName, NULL, _gloffset_LoadName),
+    NAME_FUNC_OFFSET( 2379, glPassThrough, glPassThrough, NULL, _gloffset_PassThrough),
+    NAME_FUNC_OFFSET( 2393, glPopName, glPopName, NULL, _gloffset_PopName),
+    NAME_FUNC_OFFSET( 2403, glPushName, glPushName, NULL, _gloffset_PushName),
+    NAME_FUNC_OFFSET( 2414, glDrawBuffer, glDrawBuffer, NULL, _gloffset_DrawBuffer),
+    NAME_FUNC_OFFSET( 2427, glClear, glClear, NULL, _gloffset_Clear),
+    NAME_FUNC_OFFSET( 2435, glClearAccum, glClearAccum, NULL, _gloffset_ClearAccum),
+    NAME_FUNC_OFFSET( 2448, glClearIndex, glClearIndex, NULL, _gloffset_ClearIndex),
+    NAME_FUNC_OFFSET( 2461, glClearColor, glClearColor, NULL, _gloffset_ClearColor),
+    NAME_FUNC_OFFSET( 2474, glClearStencil, glClearStencil, NULL, _gloffset_ClearStencil),
+    NAME_FUNC_OFFSET( 2489, glClearDepth, glClearDepth, NULL, _gloffset_ClearDepth),
+    NAME_FUNC_OFFSET( 2502, glStencilMask, glStencilMask, NULL, _gloffset_StencilMask),
+    NAME_FUNC_OFFSET( 2516, glColorMask, glColorMask, NULL, _gloffset_ColorMask),
+    NAME_FUNC_OFFSET( 2528, glDepthMask, glDepthMask, NULL, _gloffset_DepthMask),
+    NAME_FUNC_OFFSET( 2540, glIndexMask, glIndexMask, NULL, _gloffset_IndexMask),
+    NAME_FUNC_OFFSET( 2552, glAccum, glAccum, NULL, _gloffset_Accum),
+    NAME_FUNC_OFFSET( 2560, glDisable, glDisable, NULL, _gloffset_Disable),
+    NAME_FUNC_OFFSET( 2570, glEnable, glEnable, NULL, _gloffset_Enable),
+    NAME_FUNC_OFFSET( 2579, glFinish, glFinish, NULL, _gloffset_Finish),
+    NAME_FUNC_OFFSET( 2588, glFlush, glFlush, NULL, _gloffset_Flush),
+    NAME_FUNC_OFFSET( 2596, glPopAttrib, glPopAttrib, NULL, _gloffset_PopAttrib),
+    NAME_FUNC_OFFSET( 2608, glPushAttrib, glPushAttrib, NULL, _gloffset_PushAttrib),
+    NAME_FUNC_OFFSET( 2621, glMap1d, glMap1d, NULL, _gloffset_Map1d),
+    NAME_FUNC_OFFSET( 2629, glMap1f, glMap1f, NULL, _gloffset_Map1f),
+    NAME_FUNC_OFFSET( 2637, glMap2d, glMap2d, NULL, _gloffset_Map2d),
+    NAME_FUNC_OFFSET( 2645, glMap2f, glMap2f, NULL, _gloffset_Map2f),
+    NAME_FUNC_OFFSET( 2653, glMapGrid1d, glMapGrid1d, NULL, _gloffset_MapGrid1d),
+    NAME_FUNC_OFFSET( 2665, glMapGrid1f, glMapGrid1f, NULL, _gloffset_MapGrid1f),
+    NAME_FUNC_OFFSET( 2677, glMapGrid2d, glMapGrid2d, NULL, _gloffset_MapGrid2d),
+    NAME_FUNC_OFFSET( 2689, glMapGrid2f, glMapGrid2f, NULL, _gloffset_MapGrid2f),
+    NAME_FUNC_OFFSET( 2701, glEvalCoord1d, glEvalCoord1d, NULL, _gloffset_EvalCoord1d),
+    NAME_FUNC_OFFSET( 2715, glEvalCoord1dv, glEvalCoord1dv, NULL, _gloffset_EvalCoord1dv),
+    NAME_FUNC_OFFSET( 2730, glEvalCoord1f, glEvalCoord1f, NULL, _gloffset_EvalCoord1f),
+    NAME_FUNC_OFFSET( 2744, glEvalCoord1fv, glEvalCoord1fv, NULL, _gloffset_EvalCoord1fv),
+    NAME_FUNC_OFFSET( 2759, glEvalCoord2d, glEvalCoord2d, NULL, _gloffset_EvalCoord2d),
+    NAME_FUNC_OFFSET( 2773, glEvalCoord2dv, glEvalCoord2dv, NULL, _gloffset_EvalCoord2dv),
+    NAME_FUNC_OFFSET( 2788, glEvalCoord2f, glEvalCoord2f, NULL, _gloffset_EvalCoord2f),
+    NAME_FUNC_OFFSET( 2802, glEvalCoord2fv, glEvalCoord2fv, NULL, _gloffset_EvalCoord2fv),
+    NAME_FUNC_OFFSET( 2817, glEvalMesh1, glEvalMesh1, NULL, _gloffset_EvalMesh1),
+    NAME_FUNC_OFFSET( 2829, glEvalPoint1, glEvalPoint1, NULL, _gloffset_EvalPoint1),
+    NAME_FUNC_OFFSET( 2842, glEvalMesh2, glEvalMesh2, NULL, _gloffset_EvalMesh2),
+    NAME_FUNC_OFFSET( 2854, glEvalPoint2, glEvalPoint2, NULL, _gloffset_EvalPoint2),
+    NAME_FUNC_OFFSET( 2867, glAlphaFunc, glAlphaFunc, NULL, _gloffset_AlphaFunc),
+    NAME_FUNC_OFFSET( 2879, glBlendFunc, glBlendFunc, NULL, _gloffset_BlendFunc),
+    NAME_FUNC_OFFSET( 2891, glLogicOp, glLogicOp, NULL, _gloffset_LogicOp),
+    NAME_FUNC_OFFSET( 2901, glStencilFunc, glStencilFunc, NULL, _gloffset_StencilFunc),
+    NAME_FUNC_OFFSET( 2915, glStencilOp, glStencilOp, NULL, _gloffset_StencilOp),
+    NAME_FUNC_OFFSET( 2927, glDepthFunc, glDepthFunc, NULL, _gloffset_DepthFunc),
+    NAME_FUNC_OFFSET( 2939, glPixelZoom, glPixelZoom, NULL, _gloffset_PixelZoom),
+    NAME_FUNC_OFFSET( 2951, glPixelTransferf, glPixelTransferf, NULL, _gloffset_PixelTransferf),
+    NAME_FUNC_OFFSET( 2968, glPixelTransferi, glPixelTransferi, NULL, _gloffset_PixelTransferi),
+    NAME_FUNC_OFFSET( 2985, glPixelStoref, glPixelStoref, NULL, _gloffset_PixelStoref),
+    NAME_FUNC_OFFSET( 2999, glPixelStorei, glPixelStorei, NULL, _gloffset_PixelStorei),
+    NAME_FUNC_OFFSET( 3013, glPixelMapfv, glPixelMapfv, NULL, _gloffset_PixelMapfv),
+    NAME_FUNC_OFFSET( 3026, glPixelMapuiv, glPixelMapuiv, NULL, _gloffset_PixelMapuiv),
+    NAME_FUNC_OFFSET( 3040, glPixelMapusv, glPixelMapusv, NULL, _gloffset_PixelMapusv),
+    NAME_FUNC_OFFSET( 3054, glReadBuffer, glReadBuffer, NULL, _gloffset_ReadBuffer),
+    NAME_FUNC_OFFSET( 3067, glCopyPixels, glCopyPixels, NULL, _gloffset_CopyPixels),
+    NAME_FUNC_OFFSET( 3080, glReadPixels, glReadPixels, NULL, _gloffset_ReadPixels),
+    NAME_FUNC_OFFSET( 3093, glDrawPixels, glDrawPixels, NULL, _gloffset_DrawPixels),
+    NAME_FUNC_OFFSET( 3106, glGetBooleanv, glGetBooleanv, NULL, _gloffset_GetBooleanv),
+    NAME_FUNC_OFFSET( 3120, glGetClipPlane, glGetClipPlane, NULL, _gloffset_GetClipPlane),
+    NAME_FUNC_OFFSET( 3135, glGetDoublev, glGetDoublev, NULL, _gloffset_GetDoublev),
+    NAME_FUNC_OFFSET( 3148, glGetError, glGetError, NULL, _gloffset_GetError),
+    NAME_FUNC_OFFSET( 3159, glGetFloatv, glGetFloatv, NULL, _gloffset_GetFloatv),
+    NAME_FUNC_OFFSET( 3171, glGetIntegerv, glGetIntegerv, NULL, _gloffset_GetIntegerv),
+    NAME_FUNC_OFFSET( 3185, glGetLightfv, glGetLightfv, NULL, _gloffset_GetLightfv),
+    NAME_FUNC_OFFSET( 3198, glGetLightiv, glGetLightiv, NULL, _gloffset_GetLightiv),
+    NAME_FUNC_OFFSET( 3211, glGetMapdv, glGetMapdv, NULL, _gloffset_GetMapdv),
+    NAME_FUNC_OFFSET( 3222, glGetMapfv, glGetMapfv, NULL, _gloffset_GetMapfv),
+    NAME_FUNC_OFFSET( 3233, glGetMapiv, glGetMapiv, NULL, _gloffset_GetMapiv),
+    NAME_FUNC_OFFSET( 3244, glGetMaterialfv, glGetMaterialfv, NULL, _gloffset_GetMaterialfv),
+    NAME_FUNC_OFFSET( 3260, glGetMaterialiv, glGetMaterialiv, NULL, _gloffset_GetMaterialiv),
+    NAME_FUNC_OFFSET( 3276, glGetPixelMapfv, glGetPixelMapfv, NULL, _gloffset_GetPixelMapfv),
+    NAME_FUNC_OFFSET( 3292, glGetPixelMapuiv, glGetPixelMapuiv, NULL, _gloffset_GetPixelMapuiv),
+    NAME_FUNC_OFFSET( 3309, glGetPixelMapusv, glGetPixelMapusv, NULL, _gloffset_GetPixelMapusv),
+    NAME_FUNC_OFFSET( 3326, glGetPolygonStipple, glGetPolygonStipple, NULL, _gloffset_GetPolygonStipple),
+    NAME_FUNC_OFFSET( 3346, glGetString, glGetString, NULL, _gloffset_GetString),
+    NAME_FUNC_OFFSET( 3358, glGetTexEnvfv, glGetTexEnvfv, NULL, _gloffset_GetTexEnvfv),
+    NAME_FUNC_OFFSET( 3372, glGetTexEnviv, glGetTexEnviv, NULL, _gloffset_GetTexEnviv),
+    NAME_FUNC_OFFSET( 3386, glGetTexGendv, glGetTexGendv, NULL, _gloffset_GetTexGendv),
+    NAME_FUNC_OFFSET( 3400, glGetTexGenfv, glGetTexGenfv, NULL, _gloffset_GetTexGenfv),
+    NAME_FUNC_OFFSET( 3414, glGetTexGeniv, glGetTexGeniv, NULL, _gloffset_GetTexGeniv),
+    NAME_FUNC_OFFSET( 3428, glGetTexImage, glGetTexImage, NULL, _gloffset_GetTexImage),
+    NAME_FUNC_OFFSET( 3442, glGetTexParameterfv, glGetTexParameterfv, NULL, _gloffset_GetTexParameterfv),
+    NAME_FUNC_OFFSET( 3462, glGetTexParameteriv, glGetTexParameteriv, NULL, _gloffset_GetTexParameteriv),
+    NAME_FUNC_OFFSET( 3482, glGetTexLevelParameterfv, glGetTexLevelParameterfv, NULL, _gloffset_GetTexLevelParameterfv),
+    NAME_FUNC_OFFSET( 3507, glGetTexLevelParameteriv, glGetTexLevelParameteriv, NULL, _gloffset_GetTexLevelParameteriv),
+    NAME_FUNC_OFFSET( 3532, glIsEnabled, glIsEnabled, NULL, _gloffset_IsEnabled),
+    NAME_FUNC_OFFSET( 3544, glIsList, glIsList, NULL, _gloffset_IsList),
+    NAME_FUNC_OFFSET( 3553, glDepthRange, glDepthRange, NULL, _gloffset_DepthRange),
+    NAME_FUNC_OFFSET( 3566, glFrustum, glFrustum, NULL, _gloffset_Frustum),
+    NAME_FUNC_OFFSET( 3576, glLoadIdentity, glLoadIdentity, NULL, _gloffset_LoadIdentity),
+    NAME_FUNC_OFFSET( 3591, glLoadMatrixf, glLoadMatrixf, NULL, _gloffset_LoadMatrixf),
+    NAME_FUNC_OFFSET( 3605, glLoadMatrixd, glLoadMatrixd, NULL, _gloffset_LoadMatrixd),
+    NAME_FUNC_OFFSET( 3619, glMatrixMode, glMatrixMode, NULL, _gloffset_MatrixMode),
+    NAME_FUNC_OFFSET( 3632, glMultMatrixf, glMultMatrixf, NULL, _gloffset_MultMatrixf),
+    NAME_FUNC_OFFSET( 3646, glMultMatrixd, glMultMatrixd, NULL, _gloffset_MultMatrixd),
+    NAME_FUNC_OFFSET( 3660, glOrtho, glOrtho, NULL, _gloffset_Ortho),
+    NAME_FUNC_OFFSET( 3668, glPopMatrix, glPopMatrix, NULL, _gloffset_PopMatrix),
+    NAME_FUNC_OFFSET( 3680, glPushMatrix, glPushMatrix, NULL, _gloffset_PushMatrix),
+    NAME_FUNC_OFFSET( 3693, glRotated, glRotated, NULL, _gloffset_Rotated),
+    NAME_FUNC_OFFSET( 3703, glRotatef, glRotatef, NULL, _gloffset_Rotatef),
+    NAME_FUNC_OFFSET( 3713, glScaled, glScaled, NULL, _gloffset_Scaled),
+    NAME_FUNC_OFFSET( 3722, glScalef, glScalef, NULL, _gloffset_Scalef),
+    NAME_FUNC_OFFSET( 3731, glTranslated, glTranslated, NULL, _gloffset_Translated),
+    NAME_FUNC_OFFSET( 3744, glTranslatef, glTranslatef, NULL, _gloffset_Translatef),
+    NAME_FUNC_OFFSET( 3757, glViewport, glViewport, NULL, _gloffset_Viewport),
+    NAME_FUNC_OFFSET( 3768, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement),
+    NAME_FUNC_OFFSET( 3783, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture),
+    NAME_FUNC_OFFSET( 3797, glColorPointer, glColorPointer, NULL, _gloffset_ColorPointer),
+    NAME_FUNC_OFFSET( 3812, glDisableClientState, glDisableClientState, NULL, _gloffset_DisableClientState),
+    NAME_FUNC_OFFSET( 3833, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays),
+    NAME_FUNC_OFFSET( 3846, glDrawElements, glDrawElements, NULL, _gloffset_DrawElements),
+    NAME_FUNC_OFFSET( 3861, glEdgeFlagPointer, glEdgeFlagPointer, NULL, _gloffset_EdgeFlagPointer),
+    NAME_FUNC_OFFSET( 3879, glEnableClientState, glEnableClientState, NULL, _gloffset_EnableClientState),
+    NAME_FUNC_OFFSET( 3899, glIndexPointer, glIndexPointer, NULL, _gloffset_IndexPointer),
+    NAME_FUNC_OFFSET( 3914, glIndexub, glIndexub, NULL, _gloffset_Indexub),
+    NAME_FUNC_OFFSET( 3924, glIndexubv, glIndexubv, NULL, _gloffset_Indexubv),
+    NAME_FUNC_OFFSET( 3935, glInterleavedArrays, glInterleavedArrays, NULL, _gloffset_InterleavedArrays),
+    NAME_FUNC_OFFSET( 3955, glNormalPointer, glNormalPointer, NULL, _gloffset_NormalPointer),
+    NAME_FUNC_OFFSET( 3971, glPolygonOffset, glPolygonOffset, NULL, _gloffset_PolygonOffset),
+    NAME_FUNC_OFFSET( 3987, glTexCoordPointer, glTexCoordPointer, NULL, _gloffset_TexCoordPointer),
+    NAME_FUNC_OFFSET( 4005, glVertexPointer, glVertexPointer, NULL, _gloffset_VertexPointer),
+    NAME_FUNC_OFFSET( 4021, glAreTexturesResident, glAreTexturesResident, NULL, _gloffset_AreTexturesResident),
+    NAME_FUNC_OFFSET( 4043, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D),
+    NAME_FUNC_OFFSET( 4060, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D),
+    NAME_FUNC_OFFSET( 4077, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D),
+    NAME_FUNC_OFFSET( 4097, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D),
+    NAME_FUNC_OFFSET( 4117, glDeleteTextures, glDeleteTextures, NULL, _gloffset_DeleteTextures),
+    NAME_FUNC_OFFSET( 4134, glGenTextures, glGenTextures, NULL, _gloffset_GenTextures),
+    NAME_FUNC_OFFSET( 4148, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv),
+    NAME_FUNC_OFFSET( 4162, glIsTexture, glIsTexture, NULL, _gloffset_IsTexture),
+    NAME_FUNC_OFFSET( 4174, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures),
+    NAME_FUNC_OFFSET( 4195, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D),
+    NAME_FUNC_OFFSET( 4211, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D),
+    NAME_FUNC_OFFSET( 4227, glPopClientAttrib, glPopClientAttrib, NULL, _gloffset_PopClientAttrib),
+    NAME_FUNC_OFFSET( 4245, glPushClientAttrib, glPushClientAttrib, NULL, _gloffset_PushClientAttrib),
+    NAME_FUNC_OFFSET( 4264, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor),
+    NAME_FUNC_OFFSET( 4277, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation),
+    NAME_FUNC_OFFSET( 4293, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements),
+    NAME_FUNC_OFFSET( 4313, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
+    NAME_FUNC_OFFSET( 4326, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv),
+    NAME_FUNC_OFFSET( 4350, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv),
+    NAME_FUNC_OFFSET( 4374, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable),
+    NAME_FUNC_OFFSET( 4391, glGetColorTable, glGetColorTable, NULL, _gloffset_GetColorTable),
+    NAME_FUNC_OFFSET( 4407, glGetColorTableParameterfv, glGetColorTableParameterfv, NULL, _gloffset_GetColorTableParameterfv),
+    NAME_FUNC_OFFSET( 4434, glGetColorTableParameteriv, glGetColorTableParameteriv, NULL, _gloffset_GetColorTableParameteriv),
+    NAME_FUNC_OFFSET( 4461, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable),
+    NAME_FUNC_OFFSET( 4477, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable),
+    NAME_FUNC_OFFSET( 4497, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D),
+    NAME_FUNC_OFFSET( 4519, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D),
+    NAME_FUNC_OFFSET( 4541, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf),
+    NAME_FUNC_OFFSET( 4565, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv),
+    NAME_FUNC_OFFSET( 4590, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri),
+    NAME_FUNC_OFFSET( 4614, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv),
+    NAME_FUNC_OFFSET( 4639, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D),
+    NAME_FUNC_OFFSET( 4665, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D),
+    NAME_FUNC_OFFSET( 4691, glGetConvolutionFilter, glGetConvolutionFilter, NULL, _gloffset_GetConvolutionFilter),
+    NAME_FUNC_OFFSET( 4714, glGetConvolutionParameterfv, glGetConvolutionParameterfv, NULL, _gloffset_GetConvolutionParameterfv),
+    NAME_FUNC_OFFSET( 4742, glGetConvolutionParameteriv, glGetConvolutionParameteriv, NULL, _gloffset_GetConvolutionParameteriv),
+    NAME_FUNC_OFFSET( 4770, glGetSeparableFilter, glGetSeparableFilter, NULL, _gloffset_GetSeparableFilter),
+    NAME_FUNC_OFFSET( 4791, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D),
+    NAME_FUNC_OFFSET( 4811, glGetHistogram, glGetHistogram, NULL, _gloffset_GetHistogram),
+    NAME_FUNC_OFFSET( 4826, glGetHistogramParameterfv, glGetHistogramParameterfv, NULL, _gloffset_GetHistogramParameterfv),
+    NAME_FUNC_OFFSET( 4852, glGetHistogramParameteriv, glGetHistogramParameteriv, NULL, _gloffset_GetHistogramParameteriv),
+    NAME_FUNC_OFFSET( 4878, glGetMinmax, glGetMinmax, NULL, _gloffset_GetMinmax),
+    NAME_FUNC_OFFSET( 4890, glGetMinmaxParameterfv, glGetMinmaxParameterfv, NULL, _gloffset_GetMinmaxParameterfv),
+    NAME_FUNC_OFFSET( 4913, glGetMinmaxParameteriv, glGetMinmaxParameteriv, NULL, _gloffset_GetMinmaxParameteriv),
+    NAME_FUNC_OFFSET( 4936, glHistogram, glHistogram, NULL, _gloffset_Histogram),
+    NAME_FUNC_OFFSET( 4948, glMinmax, glMinmax, NULL, _gloffset_Minmax),
+    NAME_FUNC_OFFSET( 4957, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram),
+    NAME_FUNC_OFFSET( 4974, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax),
+    NAME_FUNC_OFFSET( 4988, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D),
+    NAME_FUNC_OFFSET( 5001, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D),
+    NAME_FUNC_OFFSET( 5017, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D),
+    NAME_FUNC_OFFSET( 5037, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB),
+    NAME_FUNC_OFFSET( 5056, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB),
+    NAME_FUNC_OFFSET( 5081, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB),
+    NAME_FUNC_OFFSET( 5102, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB),
+    NAME_FUNC_OFFSET( 5124, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB),
+    NAME_FUNC_OFFSET( 5145, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB),
+    NAME_FUNC_OFFSET( 5167, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB),
+    NAME_FUNC_OFFSET( 5188, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB),
+    NAME_FUNC_OFFSET( 5210, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB),
+    NAME_FUNC_OFFSET( 5231, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB),
+    NAME_FUNC_OFFSET( 5253, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB),
+    NAME_FUNC_OFFSET( 5274, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB),
+    NAME_FUNC_OFFSET( 5296, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB),
+    NAME_FUNC_OFFSET( 5317, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB),
+    NAME_FUNC_OFFSET( 5339, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB),
+    NAME_FUNC_OFFSET( 5360, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB),
+    NAME_FUNC_OFFSET( 5382, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB),
+    NAME_FUNC_OFFSET( 5403, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB),
+    NAME_FUNC_OFFSET( 5425, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB),
+    NAME_FUNC_OFFSET( 5446, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB),
+    NAME_FUNC_OFFSET( 5468, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB),
+    NAME_FUNC_OFFSET( 5489, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB),
+    NAME_FUNC_OFFSET( 5511, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB),
+    NAME_FUNC_OFFSET( 5532, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB),
+    NAME_FUNC_OFFSET( 5554, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB),
+    NAME_FUNC_OFFSET( 5575, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB),
+    NAME_FUNC_OFFSET( 5597, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB),
+    NAME_FUNC_OFFSET( 5618, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB),
+    NAME_FUNC_OFFSET( 5640, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB),
+    NAME_FUNC_OFFSET( 5661, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB),
+    NAME_FUNC_OFFSET( 5683, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB),
+    NAME_FUNC_OFFSET( 5704, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB),
+    NAME_FUNC_OFFSET( 5726, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB),
+    NAME_FUNC_OFFSET( 5747, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB),
+    NAME_FUNC_OFFSET( 5769, glAttachShader, glAttachShader, NULL, _gloffset_AttachShader),
+    NAME_FUNC_OFFSET( 5784, glCreateProgram, glCreateProgram, NULL, _gloffset_CreateProgram),
+    NAME_FUNC_OFFSET( 5800, glCreateShader, glCreateShader, NULL, _gloffset_CreateShader),
+    NAME_FUNC_OFFSET( 5815, glDeleteProgram, glDeleteProgram, NULL, _gloffset_DeleteProgram),
+    NAME_FUNC_OFFSET( 5831, glDeleteShader, glDeleteShader, NULL, _gloffset_DeleteShader),
+    NAME_FUNC_OFFSET( 5846, glDetachShader, glDetachShader, NULL, _gloffset_DetachShader),
+    NAME_FUNC_OFFSET( 5861, glGetAttachedShaders, glGetAttachedShaders, NULL, _gloffset_GetAttachedShaders),
+    NAME_FUNC_OFFSET( 5882, glGetProgramInfoLog, glGetProgramInfoLog, NULL, _gloffset_GetProgramInfoLog),
+    NAME_FUNC_OFFSET( 5902, glGetProgramiv, glGetProgramiv, NULL, _gloffset_GetProgramiv),
+    NAME_FUNC_OFFSET( 5917, glGetShaderInfoLog, glGetShaderInfoLog, NULL, _gloffset_GetShaderInfoLog),
+    NAME_FUNC_OFFSET( 5936, glGetShaderiv, glGetShaderiv, NULL, _gloffset_GetShaderiv),
+    NAME_FUNC_OFFSET( 5950, glIsProgram, glIsProgram, NULL, _gloffset_IsProgram),
+    NAME_FUNC_OFFSET( 5962, glIsShader, glIsShader, NULL, _gloffset_IsShader),
+    NAME_FUNC_OFFSET( 5973, glStencilFuncSeparate, glStencilFuncSeparate, NULL, _gloffset_StencilFuncSeparate),
+    NAME_FUNC_OFFSET( 5995, glStencilMaskSeparate, glStencilMaskSeparate, NULL, _gloffset_StencilMaskSeparate),
+    NAME_FUNC_OFFSET( 6017, glStencilOpSeparate, glStencilOpSeparate, NULL, _gloffset_StencilOpSeparate),
+    NAME_FUNC_OFFSET( 6037, glUniformMatrix2x3fv, glUniformMatrix2x3fv, NULL, _gloffset_UniformMatrix2x3fv),
+    NAME_FUNC_OFFSET( 6058, glUniformMatrix2x4fv, glUniformMatrix2x4fv, NULL, _gloffset_UniformMatrix2x4fv),
+    NAME_FUNC_OFFSET( 6079, glUniformMatrix3x2fv, glUniformMatrix3x2fv, NULL, _gloffset_UniformMatrix3x2fv),
+    NAME_FUNC_OFFSET( 6100, glUniformMatrix3x4fv, glUniformMatrix3x4fv, NULL, _gloffset_UniformMatrix3x4fv),
+    NAME_FUNC_OFFSET( 6121, glUniformMatrix4x2fv, glUniformMatrix4x2fv, NULL, _gloffset_UniformMatrix4x2fv),
+    NAME_FUNC_OFFSET( 6142, glUniformMatrix4x3fv, glUniformMatrix4x3fv, NULL, _gloffset_UniformMatrix4x3fv),
+    NAME_FUNC_OFFSET( 6163, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
+    NAME_FUNC_OFFSET( 6185, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
+    NAME_FUNC_OFFSET( 6209, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB),
+    NAME_FUNC_OFFSET( 6235, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB),
+    NAME_FUNC_OFFSET( 6261, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB),
+    NAME_FUNC_OFFSET( 6287, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB),
+    NAME_FUNC_OFFSET( 6313, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB),
+    NAME_FUNC_OFFSET( 6333, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB),
+    NAME_FUNC_OFFSET( 6359, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB),
+    NAME_FUNC_OFFSET( 6385, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB),
+    NAME_FUNC_OFFSET( 6411, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB),
+    NAME_FUNC_OFFSET( 6440, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB),
+    NAME_FUNC_OFFSET( 6469, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB),
+    NAME_FUNC_OFFSET( 6498, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB),
+    NAME_FUNC_OFFSET( 6525, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB),
+    NAME_FUNC_OFFSET( 6555, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB),
+    NAME_FUNC_OFFSET( 6584, glGetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, NULL, _gloffset_GetProgramEnvParameterdvARB),
+    NAME_FUNC_OFFSET( 6614, glGetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, NULL, _gloffset_GetProgramEnvParameterfvARB),
+    NAME_FUNC_OFFSET( 6644, glGetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, NULL, _gloffset_GetProgramLocalParameterdvARB),
+    NAME_FUNC_OFFSET( 6676, glGetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, NULL, _gloffset_GetProgramLocalParameterfvARB),
+    NAME_FUNC_OFFSET( 6708, glGetProgramStringARB, glGetProgramStringARB, NULL, _gloffset_GetProgramStringARB),
+    NAME_FUNC_OFFSET( 6730, glGetProgramivARB, glGetProgramivARB, NULL, _gloffset_GetProgramivARB),
+    NAME_FUNC_OFFSET( 6748, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB),
+    NAME_FUNC_OFFSET( 6771, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB),
+    NAME_FUNC_OFFSET( 6794, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB),
+    NAME_FUNC_OFFSET( 6817, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, _gloffset_ProgramEnvParameter4dARB),
+    NAME_FUNC_OFFSET( 6844, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, _gloffset_ProgramEnvParameter4dvARB),
+    NAME_FUNC_OFFSET( 6872, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, _gloffset_ProgramEnvParameter4fARB),
+    NAME_FUNC_OFFSET( 6899, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, _gloffset_ProgramEnvParameter4fvARB),
+    NAME_FUNC_OFFSET( 6927, glProgramLocalParameter4dARB, glProgramLocalParameter4dARB, NULL, _gloffset_ProgramLocalParameter4dARB),
+    NAME_FUNC_OFFSET( 6956, glProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, NULL, _gloffset_ProgramLocalParameter4dvARB),
+    NAME_FUNC_OFFSET( 6986, glProgramLocalParameter4fARB, glProgramLocalParameter4fARB, NULL, _gloffset_ProgramLocalParameter4fARB),
+    NAME_FUNC_OFFSET( 7015, glProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, NULL, _gloffset_ProgramLocalParameter4fvARB),
+    NAME_FUNC_OFFSET( 7045, glProgramStringARB, glProgramStringARB, NULL, _gloffset_ProgramStringARB),
+    NAME_FUNC_OFFSET( 7064, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB),
+    NAME_FUNC_OFFSET( 7084, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB),
+    NAME_FUNC_OFFSET( 7105, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB),
+    NAME_FUNC_OFFSET( 7125, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB),
+    NAME_FUNC_OFFSET( 7146, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB),
+    NAME_FUNC_OFFSET( 7166, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB),
+    NAME_FUNC_OFFSET( 7187, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB),
+    NAME_FUNC_OFFSET( 7207, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB),
+    NAME_FUNC_OFFSET( 7228, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB),
+    NAME_FUNC_OFFSET( 7248, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB),
+    NAME_FUNC_OFFSET( 7269, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB),
+    NAME_FUNC_OFFSET( 7289, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB),
+    NAME_FUNC_OFFSET( 7310, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB),
+    NAME_FUNC_OFFSET( 7330, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB),
+    NAME_FUNC_OFFSET( 7351, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB),
+    NAME_FUNC_OFFSET( 7371, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB),
+    NAME_FUNC_OFFSET( 7392, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB),
+    NAME_FUNC_OFFSET( 7412, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB),
+    NAME_FUNC_OFFSET( 7433, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB),
+    NAME_FUNC_OFFSET( 7455, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB),
+    NAME_FUNC_OFFSET( 7477, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB),
+    NAME_FUNC_OFFSET( 7499, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB),
+    NAME_FUNC_OFFSET( 7521, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB),
+    NAME_FUNC_OFFSET( 7544, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB),
+    NAME_FUNC_OFFSET( 7567, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB),
+    NAME_FUNC_OFFSET( 7590, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, _gloffset_VertexAttrib4bvARB),
+    NAME_FUNC_OFFSET( 7611, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB),
+    NAME_FUNC_OFFSET( 7631, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB),
+    NAME_FUNC_OFFSET( 7652, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB),
+    NAME_FUNC_OFFSET( 7672, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB),
+    NAME_FUNC_OFFSET( 7693, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, _gloffset_VertexAttrib4ivARB),
+    NAME_FUNC_OFFSET( 7714, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB),
+    NAME_FUNC_OFFSET( 7734, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB),
+    NAME_FUNC_OFFSET( 7755, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, _gloffset_VertexAttrib4ubvARB),
+    NAME_FUNC_OFFSET( 7777, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, _gloffset_VertexAttrib4uivARB),
+    NAME_FUNC_OFFSET( 7799, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, _gloffset_VertexAttrib4usvARB),
+    NAME_FUNC_OFFSET( 7821, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB),
+    NAME_FUNC_OFFSET( 7846, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB),
+    NAME_FUNC_OFFSET( 7862, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB),
+    NAME_FUNC_OFFSET( 7878, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB),
+    NAME_FUNC_OFFSET( 7897, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB),
+    NAME_FUNC_OFFSET( 7916, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB),
+    NAME_FUNC_OFFSET( 7932, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB),
+    NAME_FUNC_OFFSET( 7958, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB),
+    NAME_FUNC_OFFSET( 7981, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB),
+    NAME_FUNC_OFFSET( 8003, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB),
+    NAME_FUNC_OFFSET( 8017, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB),
+    NAME_FUNC_OFFSET( 8032, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB),
+    NAME_FUNC_OFFSET( 8049, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB),
+    NAME_FUNC_OFFSET( 8065, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB),
+    NAME_FUNC_OFFSET( 8084, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB),
+    NAME_FUNC_OFFSET( 8098, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB),
+    NAME_FUNC_OFFSET( 8114, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB),
+    NAME_FUNC_OFFSET( 8136, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB),
+    NAME_FUNC_OFFSET( 8159, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB),
+    NAME_FUNC_OFFSET( 8175, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB),
+    NAME_FUNC_OFFSET( 8188, glAttachObjectARB, glAttachObjectARB, NULL, _gloffset_AttachObjectARB),
+    NAME_FUNC_OFFSET( 8206, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB),
+    NAME_FUNC_OFFSET( 8225, glCreateProgramObjectARB, glCreateProgramObjectARB, NULL, _gloffset_CreateProgramObjectARB),
+    NAME_FUNC_OFFSET( 8250, glCreateShaderObjectARB, glCreateShaderObjectARB, NULL, _gloffset_CreateShaderObjectARB),
+    NAME_FUNC_OFFSET( 8274, glDeleteObjectARB, glDeleteObjectARB, NULL, _gloffset_DeleteObjectARB),
+    NAME_FUNC_OFFSET( 8292, glDetachObjectARB, glDetachObjectARB, NULL, _gloffset_DetachObjectARB),
+    NAME_FUNC_OFFSET( 8310, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB),
+    NAME_FUNC_OFFSET( 8332, glGetAttachedObjectsARB, glGetAttachedObjectsARB, NULL, _gloffset_GetAttachedObjectsARB),
+    NAME_FUNC_OFFSET( 8356, glGetHandleARB, glGetHandleARB, NULL, _gloffset_GetHandleARB),
+    NAME_FUNC_OFFSET( 8371, glGetInfoLogARB, glGetInfoLogARB, NULL, _gloffset_GetInfoLogARB),
+    NAME_FUNC_OFFSET( 8387, glGetObjectParameterfvARB, glGetObjectParameterfvARB, NULL, _gloffset_GetObjectParameterfvARB),
+    NAME_FUNC_OFFSET( 8413, glGetObjectParameterivARB, glGetObjectParameterivARB, NULL, _gloffset_GetObjectParameterivARB),
+    NAME_FUNC_OFFSET( 8439, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB),
+    NAME_FUNC_OFFSET( 8460, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB),
+    NAME_FUNC_OFFSET( 8484, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB),
+    NAME_FUNC_OFFSET( 8502, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB),
+    NAME_FUNC_OFFSET( 8520, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB),
+    NAME_FUNC_OFFSET( 8537, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB),
+    NAME_FUNC_OFFSET( 8555, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB),
+    NAME_FUNC_OFFSET( 8570, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB),
+    NAME_FUNC_OFFSET( 8586, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB),
+    NAME_FUNC_OFFSET( 8601, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB),
+    NAME_FUNC_OFFSET( 8617, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB),
+    NAME_FUNC_OFFSET( 8632, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB),
+    NAME_FUNC_OFFSET( 8648, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB),
+    NAME_FUNC_OFFSET( 8663, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB),
+    NAME_FUNC_OFFSET( 8679, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB),
+    NAME_FUNC_OFFSET( 8694, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB),
+    NAME_FUNC_OFFSET( 8710, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB),
+    NAME_FUNC_OFFSET( 8725, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB),
+    NAME_FUNC_OFFSET( 8741, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB),
+    NAME_FUNC_OFFSET( 8756, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB),
+    NAME_FUNC_OFFSET( 8772, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB),
+    NAME_FUNC_OFFSET( 8787, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB),
+    NAME_FUNC_OFFSET( 8803, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB),
+    NAME_FUNC_OFFSET( 8825, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB),
+    NAME_FUNC_OFFSET( 8847, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB),
+    NAME_FUNC_OFFSET( 8869, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB),
+    NAME_FUNC_OFFSET( 8891, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB),
+    NAME_FUNC_OFFSET( 8912, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB),
+    NAME_FUNC_OFFSET( 8936, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB),
+    NAME_FUNC_OFFSET( 8957, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB),
+    NAME_FUNC_OFFSET( 8980, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
+    NAME_FUNC_OFFSET( 8997, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, _gloffset_RenderbufferStorageMultisample),
+    NAME_FUNC_OFFSET( 9030, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, _gloffset_FlushMappedBufferRange),
+    NAME_FUNC_OFFSET( 9055, glMapBufferRange, glMapBufferRange, NULL, _gloffset_MapBufferRange),
+    NAME_FUNC_OFFSET( 9072, glBindVertexArray, glBindVertexArray, NULL, _gloffset_BindVertexArray),
+    NAME_FUNC_OFFSET( 9090, glGenVertexArrays, glGenVertexArrays, NULL, _gloffset_GenVertexArrays),
+    NAME_FUNC_OFFSET( 9108, glCopyBufferSubData, glCopyBufferSubData, NULL, _gloffset_CopyBufferSubData),
+    NAME_FUNC_OFFSET( 9128, glClientWaitSync, glClientWaitSync, NULL, _gloffset_ClientWaitSync),
+    NAME_FUNC_OFFSET( 9145, glDeleteSync, glDeleteSync, NULL, _gloffset_DeleteSync),
+    NAME_FUNC_OFFSET( 9158, glFenceSync, glFenceSync, NULL, _gloffset_FenceSync),
+    NAME_FUNC_OFFSET( 9170, glGetInteger64v, glGetInteger64v, NULL, _gloffset_GetInteger64v),
+    NAME_FUNC_OFFSET( 9186, glGetSynciv, glGetSynciv, NULL, _gloffset_GetSynciv),
+    NAME_FUNC_OFFSET( 9198, glIsSync, glIsSync, NULL, _gloffset_IsSync),
+    NAME_FUNC_OFFSET( 9207, glWaitSync, glWaitSync, NULL, _gloffset_WaitSync),
+    NAME_FUNC_OFFSET( 9218, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, _gloffset_DrawElementsBaseVertex),
+    NAME_FUNC_OFFSET( 9243, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, _gloffset_DrawRangeElementsBaseVertex),
+    NAME_FUNC_OFFSET( 9273, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, _gloffset_MultiDrawElementsBaseVertex),
+    NAME_FUNC_OFFSET( 9303, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, _gloffset_PolygonOffsetEXT),
+    NAME_FUNC_OFFSET( 9322, gl_dispatch_stub_580, gl_dispatch_stub_580, NULL, _gloffset_GetPixelTexGenParameterfvSGIS),
+    NAME_FUNC_OFFSET( 9354, gl_dispatch_stub_581, gl_dispatch_stub_581, NULL, _gloffset_GetPixelTexGenParameterivSGIS),
+    NAME_FUNC_OFFSET( 9386, gl_dispatch_stub_582, gl_dispatch_stub_582, NULL, _gloffset_PixelTexGenParameterfSGIS),
+    NAME_FUNC_OFFSET( 9414, gl_dispatch_stub_583, gl_dispatch_stub_583, NULL, _gloffset_PixelTexGenParameterfvSGIS),
+    NAME_FUNC_OFFSET( 9443, gl_dispatch_stub_584, gl_dispatch_stub_584, NULL, _gloffset_PixelTexGenParameteriSGIS),
+    NAME_FUNC_OFFSET( 9471, gl_dispatch_stub_585, gl_dispatch_stub_585, NULL, _gloffset_PixelTexGenParameterivSGIS),
+    NAME_FUNC_OFFSET( 9500, gl_dispatch_stub_586, gl_dispatch_stub_586, NULL, _gloffset_SampleMaskSGIS),
+    NAME_FUNC_OFFSET( 9517, gl_dispatch_stub_587, gl_dispatch_stub_587, NULL, _gloffset_SamplePatternSGIS),
+    NAME_FUNC_OFFSET( 9537, glColorPointerEXT, glColorPointerEXT, NULL, _gloffset_ColorPointerEXT),
+    NAME_FUNC_OFFSET( 9555, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, _gloffset_EdgeFlagPointerEXT),
+    NAME_FUNC_OFFSET( 9576, glIndexPointerEXT, glIndexPointerEXT, NULL, _gloffset_IndexPointerEXT),
+    NAME_FUNC_OFFSET( 9594, glNormalPointerEXT, glNormalPointerEXT, NULL, _gloffset_NormalPointerEXT),
+    NAME_FUNC_OFFSET( 9613, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, _gloffset_TexCoordPointerEXT),
+    NAME_FUNC_OFFSET( 9634, glVertexPointerEXT, glVertexPointerEXT, NULL, _gloffset_VertexPointerEXT),
+    NAME_FUNC_OFFSET( 9653, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
+    NAME_FUNC_OFFSET( 9674, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
+    NAME_FUNC_OFFSET( 9696, glLockArraysEXT, glLockArraysEXT, NULL, _gloffset_LockArraysEXT),
+    NAME_FUNC_OFFSET( 9712, glUnlockArraysEXT, glUnlockArraysEXT, NULL, _gloffset_UnlockArraysEXT),
+    NAME_FUNC_OFFSET( 9730, gl_dispatch_stub_598, gl_dispatch_stub_598, NULL, _gloffset_CullParameterdvEXT),
+    NAME_FUNC_OFFSET( 9751, gl_dispatch_stub_599, gl_dispatch_stub_599, NULL, _gloffset_CullParameterfvEXT),
+    NAME_FUNC_OFFSET( 9772, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
+    NAME_FUNC_OFFSET( 9794, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
+    NAME_FUNC_OFFSET( 9817, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
+    NAME_FUNC_OFFSET( 9839, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
+    NAME_FUNC_OFFSET( 9862, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
+    NAME_FUNC_OFFSET( 9884, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
+    NAME_FUNC_OFFSET( 9907, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
+    NAME_FUNC_OFFSET( 9929, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
+    NAME_FUNC_OFFSET( 9952, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
+    NAME_FUNC_OFFSET( 9974, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
+    NAME_FUNC_OFFSET( 9997, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
+    NAME_FUNC_OFFSET(10020, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
+    NAME_FUNC_OFFSET(10044, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
+    NAME_FUNC_OFFSET(10067, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
+    NAME_FUNC_OFFSET(10091, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
+    NAME_FUNC_OFFSET(10114, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
+    NAME_FUNC_OFFSET(10138, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
+    NAME_FUNC_OFFSET(10165, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
+    NAME_FUNC_OFFSET(10186, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
+    NAME_FUNC_OFFSET(10209, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
+    NAME_FUNC_OFFSET(10230, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
+    NAME_FUNC_OFFSET(10245, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
+    NAME_FUNC_OFFSET(10261, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
+    NAME_FUNC_OFFSET(10276, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
+    NAME_FUNC_OFFSET(10292, gl_dispatch_stub_624, gl_dispatch_stub_624, NULL, _gloffset_PixelTexGenSGIX),
+    NAME_FUNC_OFFSET(10310, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
+    NAME_FUNC_OFFSET(10333, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, _gloffset_FlushVertexArrayRangeNV),
+    NAME_FUNC_OFFSET(10359, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, _gloffset_VertexArrayRangeNV),
+    NAME_FUNC_OFFSET(10380, glCombinerInputNV, glCombinerInputNV, NULL, _gloffset_CombinerInputNV),
+    NAME_FUNC_OFFSET(10398, glCombinerOutputNV, glCombinerOutputNV, NULL, _gloffset_CombinerOutputNV),
+    NAME_FUNC_OFFSET(10417, glCombinerParameterfNV, glCombinerParameterfNV, NULL, _gloffset_CombinerParameterfNV),
+    NAME_FUNC_OFFSET(10440, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, _gloffset_CombinerParameterfvNV),
+    NAME_FUNC_OFFSET(10464, glCombinerParameteriNV, glCombinerParameteriNV, NULL, _gloffset_CombinerParameteriNV),
+    NAME_FUNC_OFFSET(10487, glCombinerParameterivNV, glCombinerParameterivNV, NULL, _gloffset_CombinerParameterivNV),
+    NAME_FUNC_OFFSET(10511, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, _gloffset_FinalCombinerInputNV),
+    NAME_FUNC_OFFSET(10534, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, _gloffset_GetCombinerInputParameterfvNV),
+    NAME_FUNC_OFFSET(10566, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, _gloffset_GetCombinerInputParameterivNV),
+    NAME_FUNC_OFFSET(10598, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, _gloffset_GetCombinerOutputParameterfvNV),
+    NAME_FUNC_OFFSET(10631, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, _gloffset_GetCombinerOutputParameterivNV),
+    NAME_FUNC_OFFSET(10664, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, _gloffset_GetFinalCombinerInputParameterfvNV),
+    NAME_FUNC_OFFSET(10701, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, _gloffset_GetFinalCombinerInputParameterivNV),
+    NAME_FUNC_OFFSET(10738, glResizeBuffersMESA, glResizeBuffersMESA, NULL, _gloffset_ResizeBuffersMESA),
+    NAME_FUNC_OFFSET(10758, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
+    NAME_FUNC_OFFSET(10776, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
+    NAME_FUNC_OFFSET(10795, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
+    NAME_FUNC_OFFSET(10813, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
+    NAME_FUNC_OFFSET(10832, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
+    NAME_FUNC_OFFSET(10850, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
+    NAME_FUNC_OFFSET(10869, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
+    NAME_FUNC_OFFSET(10887, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
+    NAME_FUNC_OFFSET(10906, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
+    NAME_FUNC_OFFSET(10924, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
+    NAME_FUNC_OFFSET(10943, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
+    NAME_FUNC_OFFSET(10961, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
+    NAME_FUNC_OFFSET(10980, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
+    NAME_FUNC_OFFSET(10998, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
+    NAME_FUNC_OFFSET(11017, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
+    NAME_FUNC_OFFSET(11035, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
+    NAME_FUNC_OFFSET(11054, glWindowPos4dMESA, glWindowPos4dMESA, NULL, _gloffset_WindowPos4dMESA),
+    NAME_FUNC_OFFSET(11072, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, _gloffset_WindowPos4dvMESA),
+    NAME_FUNC_OFFSET(11091, glWindowPos4fMESA, glWindowPos4fMESA, NULL, _gloffset_WindowPos4fMESA),
+    NAME_FUNC_OFFSET(11109, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, _gloffset_WindowPos4fvMESA),
+    NAME_FUNC_OFFSET(11128, glWindowPos4iMESA, glWindowPos4iMESA, NULL, _gloffset_WindowPos4iMESA),
+    NAME_FUNC_OFFSET(11146, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, _gloffset_WindowPos4ivMESA),
+    NAME_FUNC_OFFSET(11165, glWindowPos4sMESA, glWindowPos4sMESA, NULL, _gloffset_WindowPos4sMESA),
+    NAME_FUNC_OFFSET(11183, glWindowPos4svMESA, glWindowPos4svMESA, NULL, _gloffset_WindowPos4svMESA),
+    NAME_FUNC_OFFSET(11202, gl_dispatch_stub_666, gl_dispatch_stub_666, NULL, _gloffset_MultiModeDrawArraysIBM),
+    NAME_FUNC_OFFSET(11227, gl_dispatch_stub_667, gl_dispatch_stub_667, NULL, _gloffset_MultiModeDrawElementsIBM),
+    NAME_FUNC_OFFSET(11254, gl_dispatch_stub_668, gl_dispatch_stub_668, NULL, _gloffset_DeleteFencesNV),
+    NAME_FUNC_OFFSET(11271, gl_dispatch_stub_669, gl_dispatch_stub_669, NULL, _gloffset_FinishFenceNV),
+    NAME_FUNC_OFFSET(11287, gl_dispatch_stub_670, gl_dispatch_stub_670, NULL, _gloffset_GenFencesNV),
+    NAME_FUNC_OFFSET(11301, gl_dispatch_stub_671, gl_dispatch_stub_671, NULL, _gloffset_GetFenceivNV),
+    NAME_FUNC_OFFSET(11316, gl_dispatch_stub_672, gl_dispatch_stub_672, NULL, _gloffset_IsFenceNV),
+    NAME_FUNC_OFFSET(11328, gl_dispatch_stub_673, gl_dispatch_stub_673, NULL, _gloffset_SetFenceNV),
+    NAME_FUNC_OFFSET(11341, gl_dispatch_stub_674, gl_dispatch_stub_674, NULL, _gloffset_TestFenceNV),
+    NAME_FUNC_OFFSET(11355, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, _gloffset_AreProgramsResidentNV),
+    NAME_FUNC_OFFSET(11379, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
+    NAME_FUNC_OFFSET(11395, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
+    NAME_FUNC_OFFSET(11414, glExecuteProgramNV, glExecuteProgramNV, NULL, _gloffset_ExecuteProgramNV),
+    NAME_FUNC_OFFSET(11433, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
+    NAME_FUNC_OFFSET(11449, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, _gloffset_GetProgramParameterdvNV),
+    NAME_FUNC_OFFSET(11475, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, _gloffset_GetProgramParameterfvNV),
+    NAME_FUNC_OFFSET(11501, glGetProgramStringNV, glGetProgramStringNV, NULL, _gloffset_GetProgramStringNV),
+    NAME_FUNC_OFFSET(11522, glGetProgramivNV, glGetProgramivNV, NULL, _gloffset_GetProgramivNV),
+    NAME_FUNC_OFFSET(11539, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, _gloffset_GetTrackMatrixivNV),
+    NAME_FUNC_OFFSET(11560, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
+    NAME_FUNC_OFFSET(11588, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, _gloffset_GetVertexAttribdvNV),
+    NAME_FUNC_OFFSET(11610, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, _gloffset_GetVertexAttribfvNV),
+    NAME_FUNC_OFFSET(11632, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, _gloffset_GetVertexAttribivNV),
+    NAME_FUNC_OFFSET(11654, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
+    NAME_FUNC_OFFSET(11668, glLoadProgramNV, glLoadProgramNV, NULL, _gloffset_LoadProgramNV),
+    NAME_FUNC_OFFSET(11684, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, _gloffset_ProgramParameters4dvNV),
+    NAME_FUNC_OFFSET(11709, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, _gloffset_ProgramParameters4fvNV),
+    NAME_FUNC_OFFSET(11734, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, _gloffset_RequestResidentProgramsNV),
+    NAME_FUNC_OFFSET(11762, glTrackMatrixNV, glTrackMatrixNV, NULL, _gloffset_TrackMatrixNV),
+    NAME_FUNC_OFFSET(11778, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, _gloffset_VertexAttrib1dNV),
+    NAME_FUNC_OFFSET(11797, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, _gloffset_VertexAttrib1dvNV),
+    NAME_FUNC_OFFSET(11817, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, _gloffset_VertexAttrib1fNV),
+    NAME_FUNC_OFFSET(11836, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, _gloffset_VertexAttrib1fvNV),
+    NAME_FUNC_OFFSET(11856, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, _gloffset_VertexAttrib1sNV),
+    NAME_FUNC_OFFSET(11875, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, _gloffset_VertexAttrib1svNV),
+    NAME_FUNC_OFFSET(11895, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, _gloffset_VertexAttrib2dNV),
+    NAME_FUNC_OFFSET(11914, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, _gloffset_VertexAttrib2dvNV),
+    NAME_FUNC_OFFSET(11934, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, _gloffset_VertexAttrib2fNV),
+    NAME_FUNC_OFFSET(11953, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, _gloffset_VertexAttrib2fvNV),
+    NAME_FUNC_OFFSET(11973, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, _gloffset_VertexAttrib2sNV),
+    NAME_FUNC_OFFSET(11992, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, _gloffset_VertexAttrib2svNV),
+    NAME_FUNC_OFFSET(12012, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, _gloffset_VertexAttrib3dNV),
+    NAME_FUNC_OFFSET(12031, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, _gloffset_VertexAttrib3dvNV),
+    NAME_FUNC_OFFSET(12051, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, _gloffset_VertexAttrib3fNV),
+    NAME_FUNC_OFFSET(12070, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, _gloffset_VertexAttrib3fvNV),
+    NAME_FUNC_OFFSET(12090, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, _gloffset_VertexAttrib3sNV),
+    NAME_FUNC_OFFSET(12109, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, _gloffset_VertexAttrib3svNV),
+    NAME_FUNC_OFFSET(12129, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, _gloffset_VertexAttrib4dNV),
+    NAME_FUNC_OFFSET(12148, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, _gloffset_VertexAttrib4dvNV),
+    NAME_FUNC_OFFSET(12168, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, _gloffset_VertexAttrib4fNV),
+    NAME_FUNC_OFFSET(12187, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, _gloffset_VertexAttrib4fvNV),
+    NAME_FUNC_OFFSET(12207, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, _gloffset_VertexAttrib4sNV),
+    NAME_FUNC_OFFSET(12226, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, _gloffset_VertexAttrib4svNV),
+    NAME_FUNC_OFFSET(12246, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, _gloffset_VertexAttrib4ubNV),
+    NAME_FUNC_OFFSET(12266, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, _gloffset_VertexAttrib4ubvNV),
+    NAME_FUNC_OFFSET(12287, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, _gloffset_VertexAttribPointerNV),
+    NAME_FUNC_OFFSET(12311, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, _gloffset_VertexAttribs1dvNV),
+    NAME_FUNC_OFFSET(12332, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, _gloffset_VertexAttribs1fvNV),
+    NAME_FUNC_OFFSET(12353, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, _gloffset_VertexAttribs1svNV),
+    NAME_FUNC_OFFSET(12374, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, _gloffset_VertexAttribs2dvNV),
+    NAME_FUNC_OFFSET(12395, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, _gloffset_VertexAttribs2fvNV),
+    NAME_FUNC_OFFSET(12416, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, _gloffset_VertexAttribs2svNV),
+    NAME_FUNC_OFFSET(12437, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, _gloffset_VertexAttribs3dvNV),
+    NAME_FUNC_OFFSET(12458, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, _gloffset_VertexAttribs3fvNV),
+    NAME_FUNC_OFFSET(12479, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, _gloffset_VertexAttribs3svNV),
+    NAME_FUNC_OFFSET(12500, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, _gloffset_VertexAttribs4dvNV),
+    NAME_FUNC_OFFSET(12521, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, _gloffset_VertexAttribs4fvNV),
+    NAME_FUNC_OFFSET(12542, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, _gloffset_VertexAttribs4svNV),
+    NAME_FUNC_OFFSET(12563, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, _gloffset_VertexAttribs4ubvNV),
+    NAME_FUNC_OFFSET(12585, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, _gloffset_GetTexBumpParameterfvATI),
+    NAME_FUNC_OFFSET(12612, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, _gloffset_GetTexBumpParameterivATI),
+    NAME_FUNC_OFFSET(12639, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, _gloffset_TexBumpParameterfvATI),
+    NAME_FUNC_OFFSET(12663, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, _gloffset_TexBumpParameterivATI),
+    NAME_FUNC_OFFSET(12687, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, _gloffset_AlphaFragmentOp1ATI),
+    NAME_FUNC_OFFSET(12709, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, _gloffset_AlphaFragmentOp2ATI),
+    NAME_FUNC_OFFSET(12731, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, _gloffset_AlphaFragmentOp3ATI),
+    NAME_FUNC_OFFSET(12753, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, _gloffset_BeginFragmentShaderATI),
+    NAME_FUNC_OFFSET(12778, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, _gloffset_BindFragmentShaderATI),
+    NAME_FUNC_OFFSET(12802, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, _gloffset_ColorFragmentOp1ATI),
+    NAME_FUNC_OFFSET(12824, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, _gloffset_ColorFragmentOp2ATI),
+    NAME_FUNC_OFFSET(12846, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, _gloffset_ColorFragmentOp3ATI),
+    NAME_FUNC_OFFSET(12868, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, _gloffset_DeleteFragmentShaderATI),
+    NAME_FUNC_OFFSET(12894, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, _gloffset_EndFragmentShaderATI),
+    NAME_FUNC_OFFSET(12917, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, _gloffset_GenFragmentShadersATI),
+    NAME_FUNC_OFFSET(12941, glPassTexCoordATI, glPassTexCoordATI, NULL, _gloffset_PassTexCoordATI),
+    NAME_FUNC_OFFSET(12959, glSampleMapATI, glSampleMapATI, NULL, _gloffset_SampleMapATI),
+    NAME_FUNC_OFFSET(12974, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, _gloffset_SetFragmentShaderConstantATI),
+    NAME_FUNC_OFFSET(13005, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
+    NAME_FUNC_OFFSET(13025, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
+    NAME_FUNC_OFFSET(13046, gl_dispatch_stub_755, gl_dispatch_stub_755, NULL, _gloffset_ActiveStencilFaceEXT),
+    NAME_FUNC_OFFSET(13069, gl_dispatch_stub_756, gl_dispatch_stub_756, NULL, _gloffset_BindVertexArrayAPPLE),
+    NAME_FUNC_OFFSET(13092, gl_dispatch_stub_757, gl_dispatch_stub_757, NULL, _gloffset_DeleteVertexArraysAPPLE),
+    NAME_FUNC_OFFSET(13118, gl_dispatch_stub_758, gl_dispatch_stub_758, NULL, _gloffset_GenVertexArraysAPPLE),
+    NAME_FUNC_OFFSET(13141, gl_dispatch_stub_759, gl_dispatch_stub_759, NULL, _gloffset_IsVertexArrayAPPLE),
+    NAME_FUNC_OFFSET(13162, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, _gloffset_GetProgramNamedParameterdvNV),
+    NAME_FUNC_OFFSET(13193, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, _gloffset_GetProgramNamedParameterfvNV),
+    NAME_FUNC_OFFSET(13224, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, _gloffset_ProgramNamedParameter4dNV),
+    NAME_FUNC_OFFSET(13252, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, _gloffset_ProgramNamedParameter4dvNV),
+    NAME_FUNC_OFFSET(13281, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, _gloffset_ProgramNamedParameter4fNV),
+    NAME_FUNC_OFFSET(13309, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, _gloffset_ProgramNamedParameter4fvNV),
+    NAME_FUNC_OFFSET(13338, gl_dispatch_stub_766, gl_dispatch_stub_766, NULL, _gloffset_DepthBoundsEXT),
+    NAME_FUNC_OFFSET(13355, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlendEquationSeparateEXT),
+    NAME_FUNC_OFFSET(13382, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT),
+    NAME_FUNC_OFFSET(13403, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT),
+    NAME_FUNC_OFFSET(13425, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT),
+    NAME_FUNC_OFFSET(13453, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT),
+    NAME_FUNC_OFFSET(13477, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT),
+    NAME_FUNC_OFFSET(13502, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT),
+    NAME_FUNC_OFFSET(13531, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT),
+    NAME_FUNC_OFFSET(13557, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT),
+    NAME_FUNC_OFFSET(13583, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT),
+    NAME_FUNC_OFFSET(13609, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT),
+    NAME_FUNC_OFFSET(13630, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT),
+    NAME_FUNC_OFFSET(13652, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT),
+    NAME_FUNC_OFFSET(13672, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT),
+    NAME_FUNC_OFFSET(13713, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT),
+    NAME_FUNC_OFFSET(13745, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT),
+    NAME_FUNC_OFFSET(13764, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT),
+    NAME_FUNC_OFFSET(13784, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT),
+    NAME_FUNC_OFFSET(13809, gl_dispatch_stub_785, gl_dispatch_stub_785, NULL, _gloffset_BlitFramebufferEXT),
+    NAME_FUNC_OFFSET(13830, gl_dispatch_stub_786, gl_dispatch_stub_786, NULL, _gloffset_BufferParameteriAPPLE),
+    NAME_FUNC_OFFSET(13854, gl_dispatch_stub_787, gl_dispatch_stub_787, NULL, _gloffset_FlushMappedBufferRangeAPPLE),
+    NAME_FUNC_OFFSET(13884, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT),
+    NAME_FUNC_OFFSET(13913, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, _gloffset_ColorMaskIndexedEXT),
+    NAME_FUNC_OFFSET(13935, glDisableIndexedEXT, glDisableIndexedEXT, NULL, _gloffset_DisableIndexedEXT),
+    NAME_FUNC_OFFSET(13955, glEnableIndexedEXT, glEnableIndexedEXT, NULL, _gloffset_EnableIndexedEXT),
+    NAME_FUNC_OFFSET(13974, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, _gloffset_GetBooleanIndexedvEXT),
+    NAME_FUNC_OFFSET(13998, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, _gloffset_GetIntegerIndexedvEXT),
+    NAME_FUNC_OFFSET(14022, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, _gloffset_IsEnabledIndexedEXT),
+    NAME_FUNC_OFFSET(14044, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, _gloffset_BeginConditionalRenderNV),
+    NAME_FUNC_OFFSET(14071, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, _gloffset_EndConditionalRenderNV),
+    NAME_FUNC_OFFSET(14096, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT),
+    NAME_FUNC_OFFSET(14124, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT),
+    NAME_FUNC_OFFSET(14144, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, _gloffset_BindBufferOffsetEXT),
+    NAME_FUNC_OFFSET(14166, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT),
+    NAME_FUNC_OFFSET(14187, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT),
+    NAME_FUNC_OFFSET(14213, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT),
+    NAME_FUNC_OFFSET(14246, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT),
+    NAME_FUNC_OFFSET(14277, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT),
+    NAME_FUNC_OFFSET(14298, gl_dispatch_stub_805, gl_dispatch_stub_805, NULL, _gloffset_GetTexParameterPointervAPPLE),
+    NAME_FUNC_OFFSET(14329, gl_dispatch_stub_806, gl_dispatch_stub_806, NULL, _gloffset_TextureRangeAPPLE),
+    NAME_FUNC_OFFSET(14349, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, _gloffset_GetObjectParameterivAPPLE),
+    NAME_FUNC_OFFSET(14377, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, _gloffset_ObjectPurgeableAPPLE),
+    NAME_FUNC_OFFSET(14400, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, _gloffset_ObjectUnpurgeableAPPLE),
+    NAME_FUNC_OFFSET(14425, gl_dispatch_stub_810, gl_dispatch_stub_810, NULL, _gloffset_StencilFuncSeparateATI),
+    NAME_FUNC_OFFSET(14450, gl_dispatch_stub_811, gl_dispatch_stub_811, NULL, _gloffset_ProgramEnvParameters4fvEXT),
+    NAME_FUNC_OFFSET(14479, gl_dispatch_stub_812, gl_dispatch_stub_812, NULL, _gloffset_ProgramLocalParameters4fvEXT),
+    NAME_FUNC_OFFSET(14510, gl_dispatch_stub_813, gl_dispatch_stub_813, NULL, _gloffset_GetQueryObjecti64vEXT),
+    NAME_FUNC_OFFSET(14534, gl_dispatch_stub_814, gl_dispatch_stub_814, NULL, _gloffset_GetQueryObjectui64vEXT),
+    NAME_FUNC_OFFSET(14559, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, _gloffset_EGLImageTargetRenderbufferStorageOES),
+    NAME_FUNC_OFFSET(14598, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, _gloffset_EGLImageTargetTexture2DOES),
+    NAME_FUNC_OFFSET(14627, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement),
+    NAME_FUNC_OFFSET(14645, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture),
+    NAME_FUNC_OFFSET(14662, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays),
+    NAME_FUNC_OFFSET(14678, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident),
+    NAME_FUNC_OFFSET(14703, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D),
+    NAME_FUNC_OFFSET(14723, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D),
+    NAME_FUNC_OFFSET(14743, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D),
+    NAME_FUNC_OFFSET(14766, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D),
+    NAME_FUNC_OFFSET(14789, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures),
+    NAME_FUNC_OFFSET(14809, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures),
+    NAME_FUNC_OFFSET(14826, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv),
+    NAME_FUNC_OFFSET(14843, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture),
+    NAME_FUNC_OFFSET(14858, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures),
+    NAME_FUNC_OFFSET(14882, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D),
+    NAME_FUNC_OFFSET(14901, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D),
+    NAME_FUNC_OFFSET(14920, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor),
+    NAME_FUNC_OFFSET(14936, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation),
+    NAME_FUNC_OFFSET(14955, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements),
+    NAME_FUNC_OFFSET(14978, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
+    NAME_FUNC_OFFSET(14994, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
+    NAME_FUNC_OFFSET(15010, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv),
+    NAME_FUNC_OFFSET(15037, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv),
+    NAME_FUNC_OFFSET(15064, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable),
+    NAME_FUNC_OFFSET(15084, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
+    NAME_FUNC_OFFSET(15103, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
+    NAME_FUNC_OFFSET(15122, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
+    NAME_FUNC_OFFSET(15152, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
+    NAME_FUNC_OFFSET(15182, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
+    NAME_FUNC_OFFSET(15212, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
+    NAME_FUNC_OFFSET(15242, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable),
+    NAME_FUNC_OFFSET(15261, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable),
+    NAME_FUNC_OFFSET(15284, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D),
+    NAME_FUNC_OFFSET(15309, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D),
+    NAME_FUNC_OFFSET(15334, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf),
+    NAME_FUNC_OFFSET(15361, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv),
+    NAME_FUNC_OFFSET(15389, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri),
+    NAME_FUNC_OFFSET(15416, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv),
+    NAME_FUNC_OFFSET(15444, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D),
+    NAME_FUNC_OFFSET(15473, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D),
+    NAME_FUNC_OFFSET(15502, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter),
+    NAME_FUNC_OFFSET(15528, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv),
+    NAME_FUNC_OFFSET(15559, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv),
+    NAME_FUNC_OFFSET(15590, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter),
+    NAME_FUNC_OFFSET(15614, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D),
+    NAME_FUNC_OFFSET(15637, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram),
+    NAME_FUNC_OFFSET(15655, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv),
+    NAME_FUNC_OFFSET(15684, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv),
+    NAME_FUNC_OFFSET(15713, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax),
+    NAME_FUNC_OFFSET(15728, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv),
+    NAME_FUNC_OFFSET(15754, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv),
+    NAME_FUNC_OFFSET(15780, glHistogram, glHistogram, NULL, _gloffset_Histogram),
+    NAME_FUNC_OFFSET(15795, glMinmax, glMinmax, NULL, _gloffset_Minmax),
+    NAME_FUNC_OFFSET(15807, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram),
+    NAME_FUNC_OFFSET(15827, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax),
+    NAME_FUNC_OFFSET(15844, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D),
+    NAME_FUNC_OFFSET(15860, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D),
+    NAME_FUNC_OFFSET(15879, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D),
+    NAME_FUNC_OFFSET(15902, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB),
+    NAME_FUNC_OFFSET(15918, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB),
+    NAME_FUNC_OFFSET(15940, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB),
+    NAME_FUNC_OFFSET(15958, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB),
+    NAME_FUNC_OFFSET(15977, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB),
+    NAME_FUNC_OFFSET(15995, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB),
+    NAME_FUNC_OFFSET(16014, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB),
+    NAME_FUNC_OFFSET(16032, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB),
+    NAME_FUNC_OFFSET(16051, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB),
+    NAME_FUNC_OFFSET(16069, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB),
+    NAME_FUNC_OFFSET(16088, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB),
+    NAME_FUNC_OFFSET(16106, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB),
+    NAME_FUNC_OFFSET(16125, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB),
+    NAME_FUNC_OFFSET(16143, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB),
+    NAME_FUNC_OFFSET(16162, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB),
+    NAME_FUNC_OFFSET(16180, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB),
+    NAME_FUNC_OFFSET(16199, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB),
+    NAME_FUNC_OFFSET(16217, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB),
+    NAME_FUNC_OFFSET(16236, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB),
+    NAME_FUNC_OFFSET(16254, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB),
+    NAME_FUNC_OFFSET(16273, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB),
+    NAME_FUNC_OFFSET(16291, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB),
+    NAME_FUNC_OFFSET(16310, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB),
+    NAME_FUNC_OFFSET(16328, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB),
+    NAME_FUNC_OFFSET(16347, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB),
+    NAME_FUNC_OFFSET(16365, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB),
+    NAME_FUNC_OFFSET(16384, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB),
+    NAME_FUNC_OFFSET(16402, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB),
+    NAME_FUNC_OFFSET(16421, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB),
+    NAME_FUNC_OFFSET(16439, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB),
+    NAME_FUNC_OFFSET(16458, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB),
+    NAME_FUNC_OFFSET(16476, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB),
+    NAME_FUNC_OFFSET(16495, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB),
+    NAME_FUNC_OFFSET(16513, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB),
+    NAME_FUNC_OFFSET(16532, glStencilOpSeparate, glStencilOpSeparate, NULL, _gloffset_StencilOpSeparate),
+    NAME_FUNC_OFFSET(16555, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
+    NAME_FUNC_OFFSET(16580, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
+    NAME_FUNC_OFFSET(16605, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
+    NAME_FUNC_OFFSET(16632, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
+    NAME_FUNC_OFFSET(16659, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB),
+    NAME_FUNC_OFFSET(16682, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB),
+    NAME_FUNC_OFFSET(16705, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB),
+    NAME_FUNC_OFFSET(16728, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB),
+    NAME_FUNC_OFFSET(16751, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB),
+    NAME_FUNC_OFFSET(16768, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB),
+    NAME_FUNC_OFFSET(16791, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB),
+    NAME_FUNC_OFFSET(16814, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB),
+    NAME_FUNC_OFFSET(16837, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB),
+    NAME_FUNC_OFFSET(16863, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB),
+    NAME_FUNC_OFFSET(16889, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB),
+    NAME_FUNC_OFFSET(16915, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB),
+    NAME_FUNC_OFFSET(16939, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB),
+    NAME_FUNC_OFFSET(16966, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB),
+    NAME_FUNC_OFFSET(16992, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB),
+    NAME_FUNC_OFFSET(17012, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB),
+    NAME_FUNC_OFFSET(17032, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB),
+    NAME_FUNC_OFFSET(17052, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, _gloffset_ProgramEnvParameter4dARB),
+    NAME_FUNC_OFFSET(17075, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, _gloffset_ProgramEnvParameter4dvARB),
+    NAME_FUNC_OFFSET(17099, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, _gloffset_ProgramEnvParameter4fARB),
+    NAME_FUNC_OFFSET(17122, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, _gloffset_ProgramEnvParameter4fvARB),
+    NAME_FUNC_OFFSET(17146, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB),
+    NAME_FUNC_OFFSET(17163, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB),
+    NAME_FUNC_OFFSET(17181, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB),
+    NAME_FUNC_OFFSET(17198, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB),
+    NAME_FUNC_OFFSET(17216, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB),
+    NAME_FUNC_OFFSET(17233, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB),
+    NAME_FUNC_OFFSET(17251, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB),
+    NAME_FUNC_OFFSET(17268, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB),
+    NAME_FUNC_OFFSET(17286, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB),
+    NAME_FUNC_OFFSET(17303, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB),
+    NAME_FUNC_OFFSET(17321, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB),
+    NAME_FUNC_OFFSET(17338, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB),
+    NAME_FUNC_OFFSET(17356, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB),
+    NAME_FUNC_OFFSET(17373, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB),
+    NAME_FUNC_OFFSET(17391, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB),
+    NAME_FUNC_OFFSET(17408, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB),
+    NAME_FUNC_OFFSET(17426, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB),
+    NAME_FUNC_OFFSET(17443, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB),
+    NAME_FUNC_OFFSET(17461, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB),
+    NAME_FUNC_OFFSET(17480, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB),
+    NAME_FUNC_OFFSET(17499, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB),
+    NAME_FUNC_OFFSET(17518, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB),
+    NAME_FUNC_OFFSET(17537, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB),
+    NAME_FUNC_OFFSET(17557, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB),
+    NAME_FUNC_OFFSET(17577, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB),
+    NAME_FUNC_OFFSET(17597, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, _gloffset_VertexAttrib4bvARB),
+    NAME_FUNC_OFFSET(17615, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB),
+    NAME_FUNC_OFFSET(17632, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB),
+    NAME_FUNC_OFFSET(17650, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB),
+    NAME_FUNC_OFFSET(17667, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB),
+    NAME_FUNC_OFFSET(17685, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, _gloffset_VertexAttrib4ivARB),
+    NAME_FUNC_OFFSET(17703, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB),
+    NAME_FUNC_OFFSET(17720, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB),
+    NAME_FUNC_OFFSET(17738, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, _gloffset_VertexAttrib4ubvARB),
+    NAME_FUNC_OFFSET(17757, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, _gloffset_VertexAttrib4uivARB),
+    NAME_FUNC_OFFSET(17776, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, _gloffset_VertexAttrib4usvARB),
+    NAME_FUNC_OFFSET(17795, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB),
+    NAME_FUNC_OFFSET(17817, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB),
+    NAME_FUNC_OFFSET(17830, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB),
+    NAME_FUNC_OFFSET(17843, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB),
+    NAME_FUNC_OFFSET(17859, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB),
+    NAME_FUNC_OFFSET(17875, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB),
+    NAME_FUNC_OFFSET(17888, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB),
+    NAME_FUNC_OFFSET(17911, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB),
+    NAME_FUNC_OFFSET(17931, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB),
+    NAME_FUNC_OFFSET(17950, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB),
+    NAME_FUNC_OFFSET(17961, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB),
+    NAME_FUNC_OFFSET(17973, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB),
+    NAME_FUNC_OFFSET(17987, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB),
+    NAME_FUNC_OFFSET(18000, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB),
+    NAME_FUNC_OFFSET(18016, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB),
+    NAME_FUNC_OFFSET(18027, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB),
+    NAME_FUNC_OFFSET(18040, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB),
+    NAME_FUNC_OFFSET(18059, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB),
+    NAME_FUNC_OFFSET(18079, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB),
+    NAME_FUNC_OFFSET(18092, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB),
+    NAME_FUNC_OFFSET(18102, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB),
+    NAME_FUNC_OFFSET(18118, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB),
+    NAME_FUNC_OFFSET(18137, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB),
+    NAME_FUNC_OFFSET(18155, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB),
+    NAME_FUNC_OFFSET(18176, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB),
+    NAME_FUNC_OFFSET(18191, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB),
+    NAME_FUNC_OFFSET(18206, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB),
+    NAME_FUNC_OFFSET(18220, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB),
+    NAME_FUNC_OFFSET(18235, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB),
+    NAME_FUNC_OFFSET(18247, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB),
+    NAME_FUNC_OFFSET(18260, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB),
+    NAME_FUNC_OFFSET(18272, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB),
+    NAME_FUNC_OFFSET(18285, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB),
+    NAME_FUNC_OFFSET(18297, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB),
+    NAME_FUNC_OFFSET(18310, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB),
+    NAME_FUNC_OFFSET(18322, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB),
+    NAME_FUNC_OFFSET(18335, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB),
+    NAME_FUNC_OFFSET(18347, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB),
+    NAME_FUNC_OFFSET(18360, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB),
+    NAME_FUNC_OFFSET(18372, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB),
+    NAME_FUNC_OFFSET(18385, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB),
+    NAME_FUNC_OFFSET(18397, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB),
+    NAME_FUNC_OFFSET(18410, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB),
+    NAME_FUNC_OFFSET(18422, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB),
+    NAME_FUNC_OFFSET(18435, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB),
+    NAME_FUNC_OFFSET(18454, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB),
+    NAME_FUNC_OFFSET(18473, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB),
+    NAME_FUNC_OFFSET(18492, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB),
+    NAME_FUNC_OFFSET(18505, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB),
+    NAME_FUNC_OFFSET(18523, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB),
+    NAME_FUNC_OFFSET(18544, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB),
+    NAME_FUNC_OFFSET(18562, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB),
+    NAME_FUNC_OFFSET(18582, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
+    NAME_FUNC_OFFSET(18596, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
+    NAME_FUNC_OFFSET(18613, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, _gloffset_RenderbufferStorageMultisample),
+    NAME_FUNC_OFFSET(18649, gl_dispatch_stub_586, gl_dispatch_stub_586, NULL, _gloffset_SampleMaskSGIS),
+    NAME_FUNC_OFFSET(18665, gl_dispatch_stub_587, gl_dispatch_stub_587, NULL, _gloffset_SamplePatternSGIS),
+    NAME_FUNC_OFFSET(18684, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
+    NAME_FUNC_OFFSET(18702, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
+    NAME_FUNC_OFFSET(18723, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
+    NAME_FUNC_OFFSET(18745, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
+    NAME_FUNC_OFFSET(18764, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
+    NAME_FUNC_OFFSET(18786, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
+    NAME_FUNC_OFFSET(18809, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
+    NAME_FUNC_OFFSET(18828, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
+    NAME_FUNC_OFFSET(18848, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
+    NAME_FUNC_OFFSET(18867, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
+    NAME_FUNC_OFFSET(18887, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
+    NAME_FUNC_OFFSET(18906, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
+    NAME_FUNC_OFFSET(18926, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
+    NAME_FUNC_OFFSET(18945, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
+    NAME_FUNC_OFFSET(18965, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
+    NAME_FUNC_OFFSET(18984, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
+    NAME_FUNC_OFFSET(19004, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
+    NAME_FUNC_OFFSET(19024, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
+    NAME_FUNC_OFFSET(19045, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
+    NAME_FUNC_OFFSET(19065, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
+    NAME_FUNC_OFFSET(19086, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
+    NAME_FUNC_OFFSET(19106, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
+    NAME_FUNC_OFFSET(19127, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
+    NAME_FUNC_OFFSET(19151, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
+    NAME_FUNC_OFFSET(19169, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
+    NAME_FUNC_OFFSET(19189, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
+    NAME_FUNC_OFFSET(19207, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
+    NAME_FUNC_OFFSET(19219, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
+    NAME_FUNC_OFFSET(19232, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
+    NAME_FUNC_OFFSET(19244, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
+    NAME_FUNC_OFFSET(19257, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
+    NAME_FUNC_OFFSET(19277, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
+    NAME_FUNC_OFFSET(19301, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
+    NAME_FUNC_OFFSET(19315, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
+    NAME_FUNC_OFFSET(19332, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
+    NAME_FUNC_OFFSET(19347, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
+    NAME_FUNC_OFFSET(19365, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
+    NAME_FUNC_OFFSET(19379, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
+    NAME_FUNC_OFFSET(19396, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
+    NAME_FUNC_OFFSET(19411, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
+    NAME_FUNC_OFFSET(19429, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
+    NAME_FUNC_OFFSET(19443, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
+    NAME_FUNC_OFFSET(19460, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
+    NAME_FUNC_OFFSET(19475, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
+    NAME_FUNC_OFFSET(19493, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
+    NAME_FUNC_OFFSET(19507, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
+    NAME_FUNC_OFFSET(19524, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
+    NAME_FUNC_OFFSET(19539, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
+    NAME_FUNC_OFFSET(19557, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
+    NAME_FUNC_OFFSET(19571, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
+    NAME_FUNC_OFFSET(19588, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
+    NAME_FUNC_OFFSET(19603, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
+    NAME_FUNC_OFFSET(19621, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
+    NAME_FUNC_OFFSET(19635, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
+    NAME_FUNC_OFFSET(19652, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
+    NAME_FUNC_OFFSET(19667, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
+    NAME_FUNC_OFFSET(19685, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
+    NAME_FUNC_OFFSET(19699, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
+    NAME_FUNC_OFFSET(19716, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
+    NAME_FUNC_OFFSET(19731, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
+    NAME_FUNC_OFFSET(19749, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
+    NAME_FUNC_OFFSET(19763, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
+    NAME_FUNC_OFFSET(19780, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
+    NAME_FUNC_OFFSET(19795, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
+    NAME_FUNC_OFFSET(19813, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
+    NAME_FUNC_OFFSET(19830, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
+    NAME_FUNC_OFFSET(19850, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
+    NAME_FUNC_OFFSET(19867, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
+    NAME_FUNC_OFFSET(19893, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
+    NAME_FUNC_OFFSET(19922, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
+    NAME_FUNC_OFFSET(19937, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
+    NAME_FUNC_OFFSET(19955, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
+    NAME_FUNC_OFFSET(19974, gl_dispatch_stub_757, gl_dispatch_stub_757, NULL, _gloffset_DeleteVertexArraysAPPLE),
+    NAME_FUNC_OFFSET(19995, gl_dispatch_stub_759, gl_dispatch_stub_759, NULL, _gloffset_IsVertexArrayAPPLE),
+    NAME_FUNC_OFFSET(20011, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlendEquationSeparateEXT),
+    NAME_FUNC_OFFSET(20035, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlendEquationSeparateEXT),
+    NAME_FUNC_OFFSET(20062, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT),
+    NAME_FUNC_OFFSET(20080, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT),
+    NAME_FUNC_OFFSET(20099, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT),
+    NAME_FUNC_OFFSET(20124, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT),
+    NAME_FUNC_OFFSET(20145, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT),
+    NAME_FUNC_OFFSET(20167, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT),
+    NAME_FUNC_OFFSET(20193, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT),
+    NAME_FUNC_OFFSET(20216, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT),
+    NAME_FUNC_OFFSET(20239, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT),
+    NAME_FUNC_OFFSET(20262, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT),
+    NAME_FUNC_OFFSET(20280, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT),
+    NAME_FUNC_OFFSET(20299, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT),
+    NAME_FUNC_OFFSET(20316, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT),
+    NAME_FUNC_OFFSET(20354, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT),
+    NAME_FUNC_OFFSET(20383, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT),
+    NAME_FUNC_OFFSET(20399, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT),
+    NAME_FUNC_OFFSET(20416, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT),
+    NAME_FUNC_OFFSET(20438, gl_dispatch_stub_785, gl_dispatch_stub_785, NULL, _gloffset_BlitFramebufferEXT),
+    NAME_FUNC_OFFSET(20456, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT),
+    NAME_FUNC_OFFSET(20482, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT),
+    NAME_FUNC_OFFSET(20507, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT),
+    NAME_FUNC_OFFSET(20524, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT),
+    NAME_FUNC_OFFSET(20542, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT),
+    NAME_FUNC_OFFSET(20565, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT),
+    NAME_FUNC_OFFSET(20595, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT),
+    NAME_FUNC_OFFSET(20623, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT),
+    NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)
+};
+
+#undef NAME_FUNC_OFFSET
diff --git a/src/mapi/glapi/glthread.c b/src/mapi/glapi/glthread.c
new file mode 100644 (file)
index 0000000..9dbc0e9
--- /dev/null
@@ -0,0 +1,7 @@
+#include "glthread.h"
+
+unsigned long
+_glthread_GetID(void)
+{
+   return u_thread_self();
+}
diff --git a/src/mapi/glapi/glthread.h b/src/mapi/glapi/glthread.h
new file mode 100644 (file)
index 0000000..5429270
--- /dev/null
@@ -0,0 +1,23 @@
+#ifndef GLTHREAD_H
+#define GLTHREAD_H
+
+#include "mapi/u_thread.h"
+
+#define _glthread_DECLARE_STATIC_MUTEX(name) u_mutex_declare_static(name)
+#define _glthread_INIT_MUTEX(name)           u_mutex_init(name)
+#define _glthread_DESTROY_MUTEX(name)        u_mutex_destroy(name)
+#define _glthread_LOCK_MUTEX(name)           u_mutex_lock(name)
+#define _glthread_UNLOCK_MUTEX(name)         u_mutex_unlock(name)
+
+#define _glthread_InitTSD(tsd)               u_tsd_init(tsd);
+#define _glthread_DestroyTSD(tsd)            u_tsd_destroy(tsd);
+#define _glthread_GetTSD(tsd)                u_tsd_get(tsd);
+#define _glthread_SetTSD(tsd, ptr)           u_tsd_set(tsd, ptr);
+
+typedef struct u_tsd _glthread_TSD;
+typedef u_mutex _glthread_Mutex;
+
+PUBLIC unsigned long
+_glthread_GetID(void);
+
+#endif /* THREADS_H */
diff --git a/src/mapi/glapi/sources.mak b/src/mapi/glapi/sources.mak
new file mode 100644 (file)
index 0000000..cdcfa36
--- /dev/null
@@ -0,0 +1,17 @@
+# src/mapi/glapi/sources.mak
+
+GLAPI_SOURCES = \
+       glapi_dispatch.c \
+       glapi_entrypoint.c \
+       glapi_getproc.c \
+       glapi_nop.c \
+       glthread.c
+
+X86_API =                      \
+       glapi_x86.S
+
+X86-64_API =                   \
+       glapi_x86-64.S
+
+SPARC_API =                    \
+       glapi_sparc.S
diff --git a/src/mapi/mapi/entry.c b/src/mapi/mapi/entry.c
new file mode 100644 (file)
index 0000000..fdf2a89
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * 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 "entry.h"
+
+#if defined(USE_X86_ASM) && defined(__GNUC__)
+#   ifdef GLX_USE_TLS
+#      include "entry_x86_tls.h"
+#   else                 
+#      include "entry_x86_tsd.h"
+#   endif
+#elif defined(USE_X86_64_ASM) && defined(__GNUC__) && defined(GLX_USE_TLS)
+#   include "entry_x86-64_tls.h"
+#else
+
+#include <stdlib.h>
+#include "u_current.h"
+#include "table.h"
+
+/* C version of the public entries */
+#define MAPI_TMP_PUBLIC_ENTRIES
+#include "mapi_tmp.h"
+
+void
+entry_patch_public(void)
+{
+}
+
+mapi_func
+entry_generate(int slot)
+{
+   return NULL;
+}
+
+void
+entry_patch(mapi_func entry, int slot)
+{
+}
+
+#endif /* asm */
diff --git a/src/mapi/mapi/entry.h b/src/mapi/mapi/entry.h
new file mode 100644 (file)
index 0000000..48ed3f9
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * 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 _ENTRY_H_
+#define _ENTRY_H_
+
+#include "u_compiler.h"
+#include "stub.h"
+
+/* declare public entries */
+#define MAPI_TMP_DEFINES
+#define MAPI_TMP_PUBLIC_DECLARES
+#include "mapi_tmp.h"
+
+void
+entry_patch_public(void);
+
+mapi_func
+entry_generate(int slot);
+
+void
+entry_patch(mapi_func entry, int slot);
+
+#endif /* _ENTRY_H_ */
diff --git a/src/mapi/mapi/entry_x86-64_tls.h b/src/mapi/mapi/entry_x86-64_tls.h
new file mode 100644 (file)
index 0000000..d4c9907
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * 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 <string.h>
+#include "u_execmem.h"
+#include "u_macros.h"
+
+__asm__(".text");
+
+__asm__("x86_64_current_tls:\n\t"
+       "movq _glapi_tls_Dispatch@GOTTPOFF(%rip), %rax\n\t"
+       "ret");
+
+#define STUB_ASM_ENTRY(func)                             \
+   ".globl " func "\n"                                   \
+   ".type " func ", @function\n"                         \
+   ".balign 32\n"                                        \
+   func ":"
+
+#define STUB_ASM_CODE(slot)                              \
+   "movq _glapi_tls_Dispatch@GOTTPOFF(%rip), %rax\n\t"   \
+   "movq %fs:(%rax), %r11\n\t"                           \
+   "jmp *(8 * " slot ")(%r11)"
+
+#define MAPI_TMP_STUB_ASM_GCC
+#include "mapi_tmp.h"
+
+extern unsigned long
+x86_64_current_tls();
+
+void
+entry_patch_public(void)
+{
+}
+
+void
+entry_patch(mapi_func entry, int slot)
+{
+   void *code = (void *) entry;
+   *((unsigned int *) (code + 12)) = slot * sizeof(mapi_func);
+}
+
+mapi_func
+entry_generate(int slot)
+{
+   const char code_templ[16] = {
+      /* movq %fs:0, %r11 */
+      0x64, 0x4c, 0x8b, 0x1c, 0x25, 0x00, 0x00, 0x00, 0x00,
+      /* jmp *0x1234(%r11) */
+      0x41, 0xff, 0xa3, 0x34, 0x12, 0x00, 0x00,
+   };
+   unsigned long addr;
+   void *code;
+   mapi_func entry;
+
+   addr = x86_64_current_tls();
+   if ((addr >> 32) != 0xffffffff)
+      return NULL;
+   addr &= 0xffffffff;
+
+   code = u_execmem_alloc(sizeof(code_templ));
+   if (!code)
+      return NULL;
+
+   memcpy(code, code_templ, sizeof(code_templ));
+
+   *((unsigned int *) (code + 5)) = addr;
+   entry = (mapi_func) code;
+   entry_patch(entry, slot);
+
+   return entry;
+}
diff --git a/src/mapi/mapi/entry_x86_tls.h b/src/mapi/mapi/entry_x86_tls.h
new file mode 100644 (file)
index 0000000..de04981
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * 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 <string.h>
+#include "u_execmem.h"
+#include "u_macros.h"
+
+__asm__(".text");
+
+__asm__("x86_current_tls:\n\t"
+       "call 1f\n"
+        "1:\n\t"
+        "popl %eax\n\t"
+       "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax\n\t"
+       "movl _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax\n\t"
+       "ret");
+
+#ifndef GLX_X86_READONLY_TEXT
+__asm__(".section wtext, \"awx\", @progbits\n"
+        ".balign 16\n"
+        "x86_entry_start:");
+#endif /* GLX_X86_READONLY_TEXT */
+
+#define STUB_ASM_ENTRY(func)     \
+   ".globl " func "\n"           \
+   ".type " func ", @function\n" \
+   ".balign 16\n"                \
+   func ":"
+
+#define STUB_ASM_CODE(slot)      \
+   "call x86_current_tls\n\t"    \
+   "movl %gs:(%eax), %eax\n\t"   \
+   "jmp *(4 * " slot ")(%eax)"
+
+#define MAPI_TMP_STUB_ASM_GCC
+#include "mapi_tmp.h"
+
+#ifndef GLX_X86_READONLY_TEXT
+__asm__(".balign 16\n"
+        "x86_entry_end:");
+__asm__(".text");
+#endif /* GLX_X86_READONLY_TEXT */
+
+extern unsigned long
+x86_current_tls();
+
+void
+entry_patch_public(void)
+{
+#ifndef GLX_X86_READONLY_TEXT
+   extern char x86_entry_start[];
+   extern char x86_entry_end[];
+   char patch[8] = {
+      0x65, 0xa1, 0x00, 0x00, 0x00, 0x00, /* movl %gs:0x0, %eax */
+      0x90, 0x90                          /* nop's */
+   };
+   char *entry;
+
+   *((unsigned long *) (patch + 2)) = x86_current_tls();
+
+   for (entry = x86_entry_start; entry < x86_entry_end; entry += 16)
+      memcpy(entry, patch, sizeof(patch));
+#endif
+}
+
+void
+entry_patch(mapi_func entry, int slot)
+{
+   void *code = (void *) entry;
+   *((unsigned long *) (code + 8)) = slot * sizeof(mapi_func);
+}
+
+mapi_func
+entry_generate(int slot)
+{
+   const char code_templ[16] = {
+      0x65, 0xa1, 0x00, 0x00, 0x00, 0x00, /* movl %gs:0x0, %eax */
+      0xff, 0xa0, 0x34, 0x12, 0x00, 0x00, /* jmp *0x1234(%eax) */
+      0x90, 0x90, 0x90, 0x90              /* nop's */
+   };
+   void *code;
+   mapi_func entry;
+
+   code = u_execmem_alloc(sizeof(code_templ));
+   if (!code)
+      return NULL;
+
+   memcpy(code, code_templ, sizeof(code_templ));
+
+   *((unsigned long *) (code + 2)) = x86_current_tls();
+   entry = (mapi_func) code;
+   entry_patch(entry, slot);
+
+   return entry;
+}
diff --git a/src/mapi/mapi/entry_x86_tsd.h b/src/mapi/mapi/entry_x86_tsd.h
new file mode 100644 (file)
index 0000000..d31e067
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * 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 <string.h>
+#include "u_execmem.h"
+#include "u_macros.h"
+
+#define X86_ENTRY_SIZE 32
+
+__asm__(".text");
+
+#define STUB_ASM_ENTRY(func)        \
+   ".globl " func "\n"              \
+   ".type " func ", @function\n"    \
+   ".balign 32\n"                   \
+   func ":"
+
+#define STUB_ASM_CODE(slot)         \
+   "movl _glapi_Dispatch, %eax\n\t" \
+   "testl %eax, %eax\n\t"           \
+   "je 1f\n\t"                      \
+   "jmp *(4 * " slot ")(%eax)\n"    \
+   "1:\n\t"                         \
+   "call _glapi_get_dispatch\n\t"   \
+   "jmp *(4 * " slot ")(%eax)"
+
+#define MAPI_TMP_STUB_ASM_GCC
+#include "mapi_tmp.h"
+
+__asm__(".balign 32\n"
+        "x86_entry_end:");
+
+void
+entry_patch_public(void)
+{
+}
+
+void
+entry_patch(mapi_func entry, int slot)
+{
+   void *code = (void *) entry;
+
+   *((unsigned long *) (code + 11)) = slot * sizeof(mapi_func);
+   *((unsigned long *) (code + 22)) = slot * sizeof(mapi_func);
+}
+
+mapi_func
+entry_generate(int slot)
+{
+   extern const char x86_entry_end[];
+   const char *code_templ = x86_entry_end - X86_ENTRY_SIZE;
+   void *code;
+   mapi_func entry;
+
+   code = u_execmem_alloc(X86_ENTRY_SIZE);
+   if (!code)
+      return NULL;
+
+   memcpy(code, code_templ, X86_ENTRY_SIZE);
+   entry = (mapi_func) code;
+   entry_patch(entry, slot);
+
+   return entry;
+}
diff --git a/src/mapi/mapi/mapi.c b/src/mapi/mapi/mapi.c
new file mode 100644 (file)
index 0000000..2f1c3ff
--- /dev/null
@@ -0,0 +1,191 @@
+/*
+ * 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 <stdlib.h>
+#include <string.h>
+
+#include "u_current.h"
+#include "u_thread.h"
+#include "mapi.h"
+#include "stub.h"
+#include "table.h"
+
+/* dynamic stubs will run out before this array */
+#define MAPI_MAX_STUBS (sizeof(struct mapi_table) / sizeof(mapi_func))
+static const struct mapi_stub *mapi_stub_map[MAPI_MAX_STUBS];
+static int mapi_num_stubs;
+
+static const struct mapi_stub *
+get_stub(const char *name, const struct mapi_stub *alias)
+{
+   const struct mapi_stub *stub;
+
+   stub = stub_find_public(name);
+   if (!stub) {
+      struct mapi_stub *dyn = stub_find_dynamic(name, 1);
+      if (dyn) {
+         stub_fix_dynamic(dyn, alias);
+         stub = dyn;
+      }
+   }
+
+   return stub;
+}
+
+/**
+ * Initialize mapi.  spec consists of NULL-separated strings.  The first string
+ * denotes the version.  It is followed by variable numbers of entries.  Each
+ * entry can have multiple names.  An empty name terminates an entry.  An empty
+ * entry terminates the spec.  A spec of two entries, Foo and Bar, is as
+ * follows
+ *
+ *   "1\0"
+ *   "Foo\0"
+ *   "FooEXT\0"
+ *   "\0"
+ *   "Bar\0"
+ *   "\0"
+ */
+void
+mapi_init(const char *spec)
+{
+   u_mutex_declare_static(mutex);
+   const char *p;
+   int ver, count;
+
+   u_mutex_lock(mutex);
+
+   /* already initialized */
+   if (mapi_num_stubs) {
+      u_mutex_unlock(mutex);
+      return;
+   }
+
+   count = 0;
+   p = spec;
+
+   /* parse version string */
+   ver = atoi(p);
+   if (ver != 1) {
+      u_mutex_unlock(mutex);
+      return;
+   }
+   p += strlen(p) + 1;
+
+   while (*p) {
+      const struct mapi_stub *stub;
+
+      stub = get_stub(p, NULL);
+      /* out of dynamic entries */
+      if (!stub)
+         break;
+      p += strlen(p) + 1;
+
+      while (*p) {
+         get_stub(p, stub);
+         p += strlen(p) + 1;
+      }
+
+      mapi_stub_map[count++] = stub;
+      p++;
+   }
+
+   mapi_num_stubs = count;
+
+   u_mutex_unlock(mutex);
+}
+
+/**
+ * Return the address of an entry.  Optionally generate the entry if it does
+ * not exist.
+ */
+mapi_proc
+mapi_get_proc_address(const char *name)
+{
+   const struct mapi_stub *stub;
+
+   stub = stub_find_public(name);
+   if (!stub)
+      stub = stub_find_dynamic(name, 0);
+
+   return (stub) ? (mapi_proc) stub->addr : NULL;
+}
+
+/**
+ * Create a dispatch table.
+ */
+struct mapi_table *
+mapi_table_create(void)
+{
+   const struct mapi_table *noop = table_get_noop();
+   struct mapi_table *tbl;
+
+   tbl = malloc(sizeof(*tbl));
+   if (tbl)
+      memcpy(tbl, noop, sizeof(*tbl));
+
+   return tbl;
+}
+
+/**
+ * Destroy a dispatch table.
+ */
+void
+mapi_table_destroy(struct mapi_table *tbl)
+{
+   free(tbl);
+}
+
+/**
+ * Fill a dispatch table.  The order of the procs is determined when mapi_init
+ * is called.
+ */
+void
+mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs)
+{
+   const struct mapi_table *noop = table_get_noop();
+   int i;
+
+   for (i = 0; i < mapi_num_stubs; i++) {
+      const struct mapi_stub *stub = mapi_stub_map[i];
+      mapi_func func = (mapi_func) procs[i];
+
+      if (!func)
+         func = table_get_func(noop, stub);
+      table_set_func(tbl, stub, func);
+   }
+}
+
+/**
+ * Make a dispatch table current.
+ */
+void
+mapi_table_make_current(const struct mapi_table *tbl)
+{
+   u_current_set(tbl);
+}
diff --git a/src/mapi/mapi/mapi.h b/src/mapi/mapi/mapi.h
new file mode 100644 (file)
index 0000000..8832b3d
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * 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 _MAPI_H_
+#define _MAPI_H_
+
+#include "u_compiler.h"
+
+typedef void (*mapi_proc)(void);
+
+struct mapi_table;
+
+PUBLIC void
+mapi_init(const char *spec);
+
+PUBLIC mapi_proc
+mapi_get_proc_address(const char *name);
+
+PUBLIC struct mapi_table *
+mapi_table_create(void);
+
+PUBLIC void
+mapi_table_destroy(struct mapi_table *tbl);
+
+PUBLIC void
+mapi_table_fill(struct mapi_table *tbl, const mapi_proc *procs);
+
+PUBLIC void
+mapi_table_make_current(const struct mapi_table *tbl);
+
+#endif /* _MAPI_H_ */
diff --git a/src/mapi/mapi/mapi_abi.py b/src/mapi/mapi/mapi_abi.py
new file mode 100644 (file)
index 0000000..440eb4b
--- /dev/null
@@ -0,0 +1,402 @@
+#!/usr/bin/env python
+
+# 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>
+
+import sys
+import re
+from optparse import OptionParser
+
+# number of dynamic entries
+ABI_NUM_DYNAMIC_ENTRIES = 256
+
+class ABIEntry(object):
+    """Represent an ABI entry."""
+
+    _match_c_param = re.compile(
+            '^(?P<type>[\w\s*]+?)(?P<name>\w+)(\[(?P<array>\d+)\])?$')
+
+    def __init__(self, cols, attrs):
+        self._parse(cols)
+
+        self.slot = attrs['slot']
+        self.hidden = attrs['hidden']
+        self.alias = attrs['alias']
+
+    def c_prototype(self):
+        return '%s %s(%s)' % (self.c_return(), self.name, self.c_params())
+
+    def c_return(self):
+        ret = self.ret
+        if not ret:
+            ret = 'void'
+
+        return ret
+
+    def c_params(self):
+        """Return the parameter list used in the entry prototype."""
+        c_params = []
+        for t, n, a in self.params:
+            sep = '' if t.endswith('*') else ' '
+            arr = '[%d]' % a if a else ''
+            c_params.append(t + sep + n + arr)
+        if not c_params:
+            c_params.append('void')
+
+        return ", ".join(c_params)
+
+    def c_args(self):
+        """Return the argument list used in the entry invocation."""
+        c_args = []
+        for t, n, a in self.params:
+            c_args.append(n)
+
+        return ", ".join(c_args)
+
+    def _parse(self, cols):
+        ret = cols.pop(0)
+        if ret == 'void':
+            ret = None
+
+        name = cols.pop(0)
+
+        params = []
+        if not cols:
+            raise Exception(cols)
+        elif len(cols) == 1 and cols[0] == 'void':
+            pass
+        else:
+            for val in cols:
+                params.append(self._parse_param(val))
+
+        self.ret = ret
+        self.name = name
+        self.params = params
+
+    def _parse_param(self, c_param):
+        m = self._match_c_param.match(c_param)
+        if not m:
+            raise Exception('unrecognized param ' + c_param)
+
+        c_type = m.group('type').strip()
+        c_name = m.group('name')
+        c_array = m.group('array')
+        c_array = int(c_array) if c_array else 0
+
+        return (c_type, c_name, c_array)
+
+    def __str__(self):
+        return self.c_prototype()
+
+    def __cmp__(self, other):
+        # compare slot, alias, and then name
+        res = cmp(self.slot, other.slot)
+        if not res:
+            if not self.alias:
+                res = -1
+            elif not other.alias:
+                res = 1
+
+            if not res:
+                res = cmp(self.name, other.name)
+
+        return res
+
+def abi_parse_line(line):
+    cols = [col.strip() for col in line.split(',')]
+
+    attrs = {
+            'slot': -1,
+            'hidden': False,
+            'alias': None,
+    }
+
+    # extract attributes from the first column
+    vals = cols[0].split(':')
+    while len(vals) > 1:
+        val = vals.pop(0)
+        if val.startswith('slot='):
+            attrs['slot'] = int(val[5:])
+        elif val == 'hidden':
+            attrs['hidden'] = True
+        elif val.startswith('alias='):
+            attrs['alias'] = val[6:]
+        elif not val:
+            pass
+        else:
+            raise Exception('unknown attribute %s' % val)
+    cols[0] = vals[0]
+
+    return (attrs, cols)
+
+def abi_parse(filename):
+    """Parse a CSV file for ABI entries."""
+    fp = open(filename) if filename != '-' else sys.stdin
+    lines = [line.strip() for line in fp.readlines()
+            if not line.startswith('#') and line.strip()]
+
+    entry_dict = {}
+    next_slot = 0
+    for line in lines:
+        attrs, cols = abi_parse_line(line)
+
+        # post-process attributes
+        if attrs['alias']:
+            try:
+                ent = entry_dict[attrs['alias']]
+                slot = ent.slot
+            except KeyError:
+                raise Exception('failed to alias %s' % attrs['alias'])
+        else:
+            slot = next_slot
+            next_slot += 1
+
+        if attrs['slot'] < 0:
+            attrs['slot'] = slot
+        elif attrs['slot'] != slot:
+            raise Exception('invalid slot in %s' % (line))
+
+        ent = ABIEntry(cols, attrs)
+        if entry_dict.has_key(ent.name):
+            raise Exception('%s is duplicated' % (ent.name))
+        entry_dict[ent.name] = ent
+
+    entries = entry_dict.values()
+    entries.sort()
+
+    # sanity check
+    i = 0
+    for slot in xrange(next_slot):
+        if entries[i].slot != slot:
+            raise Exception('entries are not ordered by slots')
+        if entries[i].alias:
+            raise Exception('first entry of slot %d aliases %s'
+                    % (slot, entries[i].alias))
+        while i < len(entries) and entries[i].slot == slot:
+            i += 1
+    if i < len(entries):
+        raise Exception('there are %d invalid entries' % (len(entries) - 1))
+
+    return entries
+
+def abi_dynamics():
+    """Return the dynamic entries."""
+    entries = []
+    for i in xrange(ABI_NUM_DYNAMIC_ENTRIES):
+        cols = ['void', 'dynamic%d' % (i), 'void']
+        attrs = { 'slot': -1, 'hidden': False, 'alias': None }
+        entries.append(ABIEntry(cols, attrs))
+    return entries
+
+class ABIPrinter(object):
+    """ABIEntry Printer"""
+
+    def __init__(self, entries, options):
+        self.entries = entries
+        self.options = options
+        self._undefs = []
+
+    def _add_undefs(self, undefs):
+        self._undefs.extend(undefs)
+
+    def output_header(self):
+        print '/* This file is automatically generated.  Do not modify. */'
+        print
+
+    def output_footer(self):
+        print '/* clean up */'
+        for m in self._undefs:
+            print '#undef %s' % (m)
+
+    def output_entry(self, ent):
+        if ent.slot < 0:
+            out_ent = 'MAPI_DYNAMIC_ENTRY(%s, %s, (%s))' % \
+                    (ent.c_return(), ent.name, ent.c_params())
+            out_code = ''
+        else:
+            if ent.alias:
+                macro_ent = 'MAPI_ALIAS_ENTRY'
+                macro_code = 'MAPI_ALIAS_CODE'
+            else:
+                macro_ent = 'MAPI_ABI_ENTRY'
+                macro_code = 'MAPI_ABI_CODE'
+
+            if ent.ret:
+                macro_code += '_RETURN'
+            if ent.hidden:
+                macro_ent += '_HIDDEN'
+                macro_code += '_HIDDEN'
+
+            if ent.alias:
+                out_ent = '%s(%s, %s, %s, (%s))' % (macro_ent,
+                        ent.alias, ent.c_return(), ent.name, ent.c_params())
+                out_code = '%s(%s, %s, %s, (%s))' % (macro_code,
+                        ent.alias, ent.c_return(), ent.name, ent.c_args())
+            else:
+                out_ent = '%s(%s, %s, (%s))' % (macro_ent,
+                        ent.c_return(), ent.name, ent.c_params())
+                out_code = '%s(%s, %s, (%s))' % (macro_code,
+                        ent.c_return(), ent.name, ent.c_args())
+
+        print out_ent
+        if out_code:
+            print '   ' + out_code
+
+    def output_entries(self, pool_offsets):
+        defs = [
+                # normal entries
+                ('MAPI_ABI_ENTRY', '(ret, name, params)', ''),
+                ('MAPI_ABI_CODE', '(ret, name, args)', ''),
+                ('MAPI_ABI_CODE_RETURN', '', 'MAPI_ABI_CODE'),
+                # alias entries
+                ('MAPI_ALIAS_ENTRY', '(alias, ret, name, params)', ''),
+                ('MAPI_ALIAS_CODE', '(alias, ret, name, args)', ''),
+                ('MAPI_ALIAS_CODE_RETURN', '', 'MAPI_ALIAS_CODE'),
+                # hidden normal entries
+                ('MAPI_ABI_ENTRY_HIDDEN', '', 'MAPI_ABI_ENTRY'),
+                ('MAPI_ABI_CODE_HIDDEN', '', 'MAPI_ABI_CODE'),
+                ('MAPI_ABI_CODE_RETURN_HIDDEN', '', 'MAPI_ABI_CODE_RETURN'),
+                # hidden alias entries
+                ('MAPI_ALIAS_ENTRY_HIDDEN', '', 'MAPI_ALIAS_ENTRY'),
+                ('MAPI_ALIAS_CODE_HIDDEN', '', 'MAPI_ALIAS_CODE'),
+                ('MAPI_ALIAS_CODE_RETURN_HIDDEN', '', 'MAPI_ALIAS_CODE_RETURN'),
+                # dynamic entries
+                ('MAPI_DYNAMIC_ENTRY', '(ret, name, params)', ''),
+        ]
+        undefs = [d[0] for d in defs]
+
+        print '#if defined(MAPI_ABI_ENTRY) || defined(MAPI_ABI_ENTRY_HIDDEN)'
+        print
+        for d in defs:
+            print '#ifndef %s' % (d[0])
+            if d[2]:
+                print '#define %s%s %s' % d
+            else:
+                print '#define %s%s' % d[:2]
+
+            print '#endif'
+        print
+
+        print '/* see MAPI_TMP_TABLE */'
+        for ent in self.entries:
+            print '#define MAPI_SLOT_%s %d' % (ent.name, ent.slot)
+        print
+        print '/* see MAPI_TMP_PUBLIC_STUBS */'
+        for ent in self.entries:
+            print '#define MAPI_POOL_%s %d' % (ent.name, pool_offsets[ent])
+        print
+
+        # define macros that generate code
+        for ent in self.entries:
+            self.output_entry(ent)
+        print
+        dynamics = abi_dynamics()
+        for ent in dynamics:
+            self.output_entry(ent)
+        print
+
+        for ent in self.entries:
+            print '#undef MAPI_SLOT_%s' % (ent.name)
+        for ent in self.entries:
+            print '#undef MAPI_POOL_%s' % (ent.name)
+        print
+        print '#endif /* defined(MAPI_ABI_ENTRY) || defined(MAPI_ABI_ENTRY_HIDDEN) */'
+        print
+
+        self._add_undefs(undefs)
+
+    def _get_string_pool(self):
+        """Get the string pool."""
+        pool = []
+        offsets = {}
+
+        count = 0
+        for ent in self.entries:
+            offsets[ent] = count
+            pool.append(ent.name + '\\0')
+            count += len(ent.name) + 1
+
+        return (pool, offsets)
+
+    def output_sorted_indices(self):
+        entry_index_pairs = []
+        for i in xrange(len(self.entries)):
+            entry_index_pairs.append((self.entries[i], i))
+        entry_index_pairs.sort(lambda x, y: cmp(x[0].name, y[0].name))
+
+        print '/* see MAPI_TMP_PUBLIC_STUBS */'
+        print '#ifdef MAPI_ABI_SORTED_INDICES'
+        print
+        print 'static const int MAPI_ABI_SORTED_INDICES[] = {'
+        for ent, idx in entry_index_pairs:
+            print '   %d, /* %s */' % (idx, ent.name)
+        print '   -1'
+        print '};'
+        print
+        print '#endif /* MAPI_ABI_SORTED_INDICES */'
+        print
+
+        self._add_undefs(['MAPI_ABI_SORTED_INDICES'])
+
+    def output_defines(self):
+        print '/* ABI defines */'
+        print '#ifdef MAPI_ABI_DEFINES'
+        print '#include "%s"' % (self.options.include)
+        print '#endif /* MAPI_ABI_DEFINES */'
+        print
+
+        self._add_undefs(['MAPI_ABI_DEFINES'])
+
+    def output(self):
+        pool, pool_offsets = self._get_string_pool()
+
+        self.output_header()
+        self.output_defines()
+        self.output_entries(pool_offsets)
+        self.output_sorted_indices()
+        self.output_footer()
+
+def parse_args():
+    parser = OptionParser(usage='usage: %prog [options] <filename>')
+    parser.add_option('-i', '--include', dest='include',
+            help='include the header for API defines')
+
+    options, args = parser.parse_args()
+    if not args or not options.include:
+        parser.print_help()
+        sys.exit(1)
+
+    return (args[0], options)
+
+def main():
+    filename, options = parse_args()
+
+    entries = abi_parse(filename)
+    printer = ABIPrinter(entries, options)
+    printer.output()
+
+if __name__ == '__main__':
+    main()
diff --git a/src/mapi/mapi/mapi_tmp.h b/src/mapi/mapi/mapi_tmp.h
new file mode 100644 (file)
index 0000000..79beca4
--- /dev/null
@@ -0,0 +1,211 @@
+/*
+ * 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 "u_macros.h"
+
+#ifndef MAPI_ABI_HEADER
+#error "MAPI_ABI_HEADER must be defined"
+#endif
+
+
+/**
+ * Get API defines.
+ */
+#ifdef MAPI_TMP_DEFINES
+#   define MAPI_ABI_DEFINES
+#   include MAPI_ABI_HEADER
+
+#ifndef MAPI_ABI_PREFIX
+#error "MAPI_ABI_PREFIX must be defined"
+#endif
+#ifndef MAPI_ABI_PUBLIC
+#error "MAPI_ABI_PUBLIC must be defined"
+#endif
+#ifndef MAPI_ABI_ATTR
+#error "MAPI_ABI_ATTR must be defined"
+#endif
+
+#undef MAPI_TMP_DEFINES
+#endif /* MAPI_TMP_DEFINES */
+
+
+/**
+ * Generate fields of struct mapi_table.
+ */
+#ifdef MAPI_TMP_TABLE
+#   define MAPI_ABI_ENTRY(ret, name, params)                   \
+      ret (MAPI_ABI_ATTR *name) params;
+#   define MAPI_DYNAMIC_ENTRY(ret, name, params)               \
+      ret (MAPI_ABI_ATTR *name) params;
+#   include MAPI_ABI_HEADER
+#undef MAPI_TMP_TABLE
+#endif /* MAPI_TMP_TABLE */
+
+
+/**
+ * Declare public entries.
+ */
+#ifdef MAPI_TMP_PUBLIC_DECLARES
+#   define MAPI_ABI_ENTRY(ret, name, params)                   \
+      MAPI_ABI_PUBLIC ret MAPI_ABI_ATTR U_CONCAT(MAPI_ABI_PREFIX, name) params;
+#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
+      MAPI_ABI_ENTRY(ret, name, params);
+#   define MAPI_ABI_ENTRY_HIDDEN(ret, name, params)            \
+      HIDDEN ret MAPI_ABI_ATTR U_CONCAT(MAPI_ABI_PREFIX, name) params;
+#   define MAPI_ALIAS_ENTRY_HIDDEN(alias, ret, name, params)   \
+      MAPI_ABI_ENTRY_HIDDEN(ret, name, params)
+#   include MAPI_ABI_HEADER
+#undef MAPI_TMP_PUBLIC_DECLARES
+#endif /* MAPI_TMP_PUBLIC_DECLARES */
+
+
+/**
+ * Generate string pool and public stubs.
+ */
+#ifdef MAPI_TMP_PUBLIC_STUBS
+/* define the string pool */
+static const char public_string_pool[] =
+#   define MAPI_ABI_ENTRY(ret, name, params)                   \
+      U_STRINGIFY(name) "\0"
+#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
+      MAPI_ABI_ENTRY(ret, name, params)
+#   include MAPI_ABI_HEADER
+   ;
+/* define public_sorted_indices */
+#   define MAPI_ABI_SORTED_INDICES public_sorted_indices
+#   include MAPI_ABI_HEADER
+
+/* define public_stubs */
+static const struct mapi_stub public_stubs[] = {
+#   define MAPI_ABI_ENTRY(ret, name, params)                   \
+      { (mapi_func) U_CONCAT(MAPI_ABI_PREFIX, name),           \
+         MAPI_SLOT_ ## name, (void *) MAPI_POOL_ ## name },
+#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
+      MAPI_ABI_ENTRY(ret, name, params)
+#   include MAPI_ABI_HEADER
+   { NULL, -1, (void *) -1 }
+};
+
+#undef MAPI_TMP_PUBLIC_STUBS
+#endif /* MAPI_TMP_PUBLIC_STUBS */
+
+
+/**
+ * Generate public entries.
+ */
+#ifdef MAPI_TMP_PUBLIC_ENTRIES
+#   define MAPI_ABI_ENTRY(ret, name, params)                   \
+      ret MAPI_ABI_ATTR U_CONCAT(MAPI_ABI_PREFIX, name) params
+#   define MAPI_ABI_CODE(ret, name, args)                      \
+      {                                                        \
+         const struct mapi_table *tbl = u_current_get();       \
+         tbl->name args;                                       \
+      }
+#   define MAPI_ABI_CODE_RETURN(ret, name, args)               \
+      {                                                        \
+         const struct mapi_table *tbl = u_current_get();       \
+         return tbl->name args;                                \
+      }
+#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)          \
+      MAPI_ABI_ENTRY(ret, name, params)
+#   define MAPI_ALIAS_CODE(alias, ret, name, args)             \
+      MAPI_ABI_CODE(ret, alias, args)
+#   define MAPI_ALIAS_CODE_RETURN(alias, ret, name, args)      \
+      MAPI_ABI_CODE_RETURN(ret, alias, args)
+#   include MAPI_ABI_HEADER
+#undef MAPI_TMP_PUBLIC_ENTRIES
+#endif /* MAPI_TMP_PUBLIC_ENTRIES */
+
+
+/**
+ * Generate noop entries.
+ */
+#ifdef MAPI_TMP_NOOP_ARRAY
+#ifdef DEBUG
+#   define MAPI_ABI_ENTRY(ret, name, params)                         \
+      static ret MAPI_ABI_ATTR U_CONCAT(noop_, name) params
+#   define MAPI_ABI_CODE(ret, name, args)                            \
+      {                                                              \
+         noop_warn(U_CONCAT_STR(MAPI_ABI_PREFIX, name));             \
+      }
+#   define MAPI_ABI_CODE_RETURN(ret, name, args)                     \
+      {                                                              \
+         noop_warn(U_CONCAT_STR(MAPI_ABI_PREFIX, name));             \
+         return (ret) 0;                                             \
+      }
+#   include MAPI_ABI_HEADER
+
+/* define the noop function array that may be casted to mapi_table */
+const mapi_func table_noop_array[] = {
+#   define MAPI_ABI_ENTRY(ret, name, params)                   \
+      (mapi_func) U_CONCAT(noop_, name),
+#   define MAPI_DYNAMIC_ENTRY(ret, name, params)               \
+      (mapi_func) noop_generic,
+#   include MAPI_ABI_HEADER
+      (mapi_func) noop_generic
+};
+
+#else /* DEBUG */
+
+const mapi_func table_noop_array[] = {
+#   define MAPI_ABI_ENTRY(ret, name, params)                   \
+      (mapi_func) noop_generic,
+#   define MAPI_DYNAMIC_ENTRY(ret, name, params)               \
+      (mapi_func) noop_generic,
+#   include MAPI_ABI_HEADER
+      (mapi_func) noop_generic
+};
+
+#endif /* DEBUG */
+#undef MAPI_TMP_NOOP_ARRAY
+#endif /* MAPI_TMP_NOOP_ARRAY */
+
+
+#ifdef MAPI_TMP_STUB_ASM_GCC
+#   define STUB_ASM_ALIAS(func, to)    \
+      ".globl " func "\n"              \
+      ".set " func ", " to
+#   define STUB_ASM_HIDE(func)         \
+      ".hidden " func
+
+#   define MAPI_ABI_ENTRY(ret, name, params)                         \
+      __asm__(STUB_ASM_ENTRY(U_CONCAT_STR(MAPI_ABI_PREFIX, name)));
+#   define MAPI_ABI_CODE(ret, name, args)                            \
+      __asm__(STUB_ASM_CODE(U_STRINGIFY(MAPI_SLOT_ ## name)));
+#   define MAPI_ALIAS_ENTRY(alias, ret, name, params)                \
+      __asm__(STUB_ASM_ALIAS(U_CONCAT_STR(MAPI_ABI_PREFIX, name),    \
+            U_CONCAT_STR(MAPI_ABI_PREFIX, alias)));
+#   define MAPI_ABI_ENTRY_HIDDEN(ret, name, params)                  \
+      __asm__(STUB_ASM_HIDE(U_CONCAT_STR(MAPI_ABI_PREFIX, name)));   \
+      MAPI_ABI_ENTRY(ret, name, params);
+#   define MAPI_ALIAS_ENTRY_HIDDEN(alias, ret, name, params)         \
+      __asm__(STUB_ASM_HIDE(U_CONCAT_STR(MAPI_ABI_PREFIX, name)));   \
+      MAPI_ALIAS_ENTRY(alias, ret, name, params);
+#   include MAPI_ABI_HEADER
+#undef MAPI_TMP_STUB_ASM_GCC
+#endif /* MAPI_TMP_STUB_ASM_GCC */
diff --git a/src/mapi/mapi/sources.mak b/src/mapi/mapi/sources.mak
new file mode 100644 (file)
index 0000000..5f327f3
--- /dev/null
@@ -0,0 +1,19 @@
+# src/mapi/mapi/sources.mak
+#
+# When MAPI_GLAPI_CURRENT is defined, MAPI_GLAPI_SOURCES can be built without
+# MAPI_SOURCES and it is used by glapi.
+#
+# Otherwise, MAPI_ABI_HEADER must be defined.  It should expand to the header
+# generated by mapi_abi.py.
+
+MAPI_GLAPI_SOURCES = \
+       u_current.c \
+       u_execmem.c \
+       u_thread.c
+
+MAPI_SOURCES = \
+       entry.c \
+       mapi.c \
+       stub.c \
+       table.c \
+       $(MAPI_GLAPI_SOURCES)
diff --git a/src/mapi/mapi/stub.c b/src/mapi/mapi/stub.c
new file mode 100644 (file)
index 0000000..8ceaec3
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+ * 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 <stdlib.h>
+#include <stddef.h> /* for offsetof */
+#include <string.h>
+#include <assert.h>
+
+#include "u_current.h"
+#include "u_thread.h"
+#include "entry.h"
+#include "stub.h"
+#include "table.h"
+
+#define MAPI_TABLE_FIRST_DYNAMIC \
+   (offsetof(struct mapi_table, dynamic0) / sizeof(mapi_func))
+#define MAPI_TABLE_NUM_DYNAMIC \
+   ((offsetof(struct mapi_table, last) - \
+     offsetof(struct mapi_table, dynamic0)) / sizeof(mapi_func))
+#define ARRAY_SIZE(x) (sizeof(x)/sizeof((x)[0]))
+
+/*
+ * This will define public_string_pool, public_sorted_indices, and
+ * public_stubs.
+ */
+#define MAPI_TMP_PUBLIC_STUBS
+#include "mapi_tmp.h"
+
+static struct mapi_stub dynamic_stubs[MAPI_TABLE_NUM_DYNAMIC];
+static int num_dynamic_stubs;
+static int next_dynamic_slot = MAPI_TABLE_FIRST_DYNAMIC;
+
+void
+stub_init_once(void)
+{
+#ifdef PTHREADS
+   static pthread_once_t once = PTHREAD_ONCE_INIT;
+   pthread_once(&once, entry_patch_public);
+#else
+   static int first = 1;
+   if (first) {
+      first = 0;
+      entry_patch_public();
+   }
+#endif
+}
+
+static int
+stub_compare(const void *key, const void *elem)
+{
+   const char *name = (const char *) key;
+   const int *index = (const int *) elem;
+   const struct mapi_stub *stub;
+   const char *stub_name;
+
+   stub = &public_stubs[*index];
+   stub_name = &public_string_pool[(unsigned long) stub->name];
+
+   return strcmp(name, stub_name);
+}
+
+/**
+ * Return the public stub with the given name.
+ */
+const struct mapi_stub *
+stub_find_public(const char *name)
+{
+   const int *index;
+
+   index = (const int *) bsearch(name, public_sorted_indices,
+         ARRAY_SIZE(public_sorted_indices) - 1,
+         sizeof(public_sorted_indices[0]), stub_compare);
+
+   return (index) ? &public_stubs[*index] : NULL;
+}
+
+/**
+ * Add a dynamic stub.
+ */
+static struct mapi_stub *
+stub_add_dynamic(const char *name)
+{
+   struct mapi_stub *stub;
+   int idx;
+
+   idx = num_dynamic_stubs;
+   if (idx >= MAPI_TABLE_NUM_DYNAMIC)
+      return NULL;
+
+   stub = &dynamic_stubs[idx];
+
+   /* dispatch to mapi_table->last, which is always no-op */
+   stub->addr =
+      entry_generate(MAPI_TABLE_FIRST_DYNAMIC + MAPI_TABLE_NUM_DYNAMIC);
+   if (!stub->addr)
+      return NULL;
+
+   stub->name = (const void *) name;
+   /* to be fixed later */
+   stub->slot = -1;
+
+   num_dynamic_stubs = idx + 1;
+
+   return stub;
+}
+
+/**
+ * Return the dynamic stub with the given name.  If no such stub exists and
+ * generate is true, a new stub is generated.
+ */
+struct mapi_stub *
+stub_find_dynamic(const char *name, int generate)
+{
+   u_mutex_declare_static(dynamic_mutex);
+   struct mapi_stub *stub = NULL;
+   int count, i;
+   
+   u_mutex_lock(dynamic_mutex);
+
+   if (generate)
+      assert(!stub_find_public(name));
+
+   count = num_dynamic_stubs;
+   for (i = 0; i < count; i++) {
+      if (strcmp(name, (const char *) dynamic_stubs[i].name) == 0) {
+         stub = &dynamic_stubs[i];
+         break;
+      }
+   }
+
+   /* generate a dynamic stub */
+   if (generate && !stub)
+         stub = stub_add_dynamic(name);
+
+   u_mutex_unlock(dynamic_mutex);
+
+   return stub;
+}
+
+void
+stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias)
+{
+   int slot;
+
+   if (stub->slot >= 0)
+      return;
+
+   if (alias)
+      slot = alias->slot;
+   else
+      slot = next_dynamic_slot++;
+
+   entry_patch(stub->addr, slot);
+   stub->slot = slot;
+}
diff --git a/src/mapi/mapi/stub.h b/src/mapi/mapi/stub.h
new file mode 100644 (file)
index 0000000..c7e194c
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * 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 _STUB_H_
+#define _STUB_H_
+
+typedef void (*mapi_func)(void);
+
+struct mapi_stub {
+   mapi_func addr;
+   int slot;
+   const void *name;
+};
+
+void
+stub_init_once(void);
+
+const struct mapi_stub *
+stub_find_public(const char *name);
+
+struct mapi_stub *
+stub_find_dynamic(const char *name, int generate);
+
+void
+stub_fix_dynamic(struct mapi_stub *stub, const struct mapi_stub *alias);
+
+#endif /* _STUB_H_ */
diff --git a/src/mapi/mapi/table.c b/src/mapi/mapi/table.c
new file mode 100644 (file)
index 0000000..8f4f700
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * 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 <stdlib.h>
+#include <stdio.h>
+
+#include "stub.h"
+#include "table.h"
+
+static void
+noop_warn(const char *name)
+{
+   static int debug = -1;
+   
+   if (debug < 0)
+      debug = (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG"));
+
+   if (debug)
+      fprintf(stderr, "%s is no-op", name);
+}
+
+static int
+noop_generic(void)
+{
+   noop_warn("function");
+   return 0;
+}
+
+/* define noop_array */
+#define MAPI_TMP_NOOP_ARRAY
+#include "mapi_tmp.h"
diff --git a/src/mapi/mapi/table.h b/src/mapi/mapi/table.h
new file mode 100644 (file)
index 0000000..48c9901
--- /dev/null
@@ -0,0 +1,76 @@
+/*
+ * 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 _TABLE_H_
+#define _TABLE_H_
+
+#include "u_compiler.h"
+#include "stub.h"
+
+#define MAPI_TMP_DEFINES
+#include "mapi_tmp.h"
+
+struct mapi_table {
+#define MAPI_TMP_TABLE
+#include "mapi_tmp.h"
+   mapi_func last;
+};
+
+extern const mapi_func table_noop_array[];
+
+/**
+ * Get the no-op dispatch table.
+ */
+static INLINE const struct mapi_table *
+table_get_noop(void)
+{
+   return (const struct mapi_table *) table_noop_array;
+}
+
+/**
+ * Update the dispatch table to dispatch a stub to the given function.
+ */
+static INLINE void
+table_set_func(struct mapi_table *tbl,
+               const struct mapi_stub *stub, mapi_func func)
+{
+   mapi_func *funcs = (mapi_func *) tbl;
+   funcs[stub->slot] = func;
+}
+
+/**
+ * Return the dispatched function of a stub.
+ */
+static INLINE mapi_func
+table_get_func(const struct mapi_table *tbl, const struct mapi_stub *stub)
+{
+   const mapi_func *funcs = (const mapi_func *) tbl;
+   return funcs[stub->slot];
+}
+
+#endif /* _TABLE_H_ */
diff --git a/src/mapi/mapi/u_compiler.h b/src/mapi/mapi/u_compiler.h
new file mode 100644 (file)
index 0000000..cc9e2cd
--- /dev/null
@@ -0,0 +1,48 @@
+#ifndef _U_COMPILER_H_
+#define _U_COMPILER_H_
+
+/* Function inlining */
+#ifndef INLINE
+#  ifdef __cplusplus
+#    define INLINE inline
+#  elif defined(__GNUC__)
+#    define INLINE __inline__
+#  elif defined(_MSC_VER)
+#    define INLINE __inline
+#  elif defined(__ICL)
+#    define INLINE __inline
+#  elif defined(__INTEL_COMPILER)
+#    define INLINE inline
+#  elif defined(__WATCOMC__) && (__WATCOMC__ >= 1100)
+#    define INLINE __inline
+#  elif defined(__SUNPRO_C) && defined(__C99FEATURES__)
+#    define INLINE inline
+#  elif (__STDC_VERSION__ >= 199901L) /* C99 */
+#    define INLINE inline
+#  else
+#    define INLINE
+#  endif
+#endif
+
+/* Function visibility */
+#ifndef PUBLIC
+#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
+#    define PUBLIC __attribute__((visibility("default")))
+#    define HIDDEN __attribute__((visibility("hidden")))
+#  else
+#    define PUBLIC
+#    define HIDDEN
+#  endif
+#endif
+
+#ifndef likely
+#  if defined(__GNUC__)
+#    define likely(x)   __builtin_expect(!!(x), 1)
+#    define unlikely(x) __builtin_expect(!!(x), 0)
+#  else
+#    define likely(x)   (x)
+#    define unlikely(x) (x)
+#  endif
+#endif
+
+#endif /* _U_COMPILER_H_ */
diff --git a/src/mapi/mapi/u_current.c b/src/mapi/mapi/u_current.c
new file mode 100644 (file)
index 0000000..91547c4
--- /dev/null
@@ -0,0 +1,274 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  7.1
+ *
+ * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/*
+ * This file manages the OpenGL API dispatch layer.
+ * The dispatch table (struct _glapi_table) is basically just a list
+ * of function pointers.
+ * There are functions to set/get the current dispatch table for the
+ * current thread and to manage registration/dispatch of dynamically
+ * added extension functions.
+ *
+ * It's intended that this file and the other glapi*.[ch] files are
+ * flexible enough to be reused in several places:  XFree86, DRI-
+ * based libGL.so, and perhaps the SGI SI.
+ *
+ * NOTE: There are no dependencies on Mesa in this code.
+ *
+ * Versions (API changes):
+ *   2000/02/23  - original version for Mesa 3.3 and XFree86 4.0
+ *   2001/01/16  - added dispatch override feature for Mesa 3.5
+ *   2002/06/28  - added _glapi_set_warning_func(), Mesa 4.1.
+ *   2002/10/01  - _glapi_get_proc_address() will now generate new entrypoints
+ *                 itself (using offset ~0).  _glapi_add_entrypoint() can be
+ *                 called afterward and it'll fill in the correct dispatch
+ *                 offset.  This allows DRI libGL to avoid probing for DRI
+ *                 drivers!  No changes to the public glapi interface.
+ */
+
+#include "u_current.h"
+#include "u_thread.h"
+
+#ifndef MAPI_GLAPI_CURRENT
+
+#include "table.h"
+#include "stub.h"
+
+#else
+
+extern void init_glapi_relocs_once(void);
+extern void (*__glapi_noop_table[])(void);
+
+#define table_noop_array __glapi_noop_table
+#define stub_init_once() init_glapi_relocs_once()
+
+#endif
+
+/**
+ * \name Current dispatch and current context control variables
+ *
+ * Depending on whether or not multithreading is support, and the type of
+ * support available, several variables are used to store the current context
+ * pointer and the current dispatch table pointer.  In the non-threaded case,
+ * the variables \c _glapi_Dispatch and \c _glapi_Context are used for this
+ * purpose.
+ *
+ * In the "normal" threaded case, the variables \c _glapi_Dispatch and
+ * \c _glapi_Context will be \c NULL if an application is detected as being
+ * multithreaded.  Single-threaded applications will use \c _glapi_Dispatch
+ * and \c _glapi_Context just like the case without any threading support.
+ * When \c _glapi_Dispatch and \c _glapi_Context are \c NULL, the thread state
+ * data \c _gl_DispatchTSD and \c ContextTSD are used.  Drivers and the
+ * static dispatch functions access these variables via \c _glapi_get_dispatch
+ * and \c _glapi_get_context.
+ *
+ * There is a race condition in setting \c _glapi_Dispatch to \c NULL.  It is
+ * possible for the original thread to be setting it at the same instant a new
+ * thread, perhaps running on a different processor, is clearing it.  Because
+ * of that, \c ThreadSafe, which can only ever be changed to \c GL_TRUE, is
+ * used to determine whether or not the application is multithreaded.
+ * 
+ * In the TLS case, the variables \c _glapi_Dispatch and \c _glapi_Context are
+ * hardcoded to \c NULL.  Instead the TLS variables \c _glapi_tls_Dispatch and
+ * \c _glapi_tls_Context are used.  Having \c _glapi_Dispatch and
+ * \c _glapi_Context be hardcoded to \c NULL maintains binary compatability
+ * between TLS enabled loaders and non-TLS DRI drivers.
+ */
+/*@{*/
+#if defined(GLX_USE_TLS)
+
+__thread struct _glapi_table *_glapi_tls_Dispatch
+    __attribute__((tls_model("initial-exec")))
+    = (struct _glapi_table *) table_noop_array;
+
+__thread void * _glapi_tls_Context
+    __attribute__((tls_model("initial-exec")));
+
+const struct _glapi_table *_glapi_Dispatch;
+const void *_glapi_Context;
+
+#else
+
+struct _glapi_table *_glapi_Dispatch =
+   (struct _glapi_table *) table_noop_array;
+void *_glapi_Context;
+
+#ifdef THREADS
+struct u_tsd _gl_DispatchTSD;
+static struct u_tsd ContextTSD;
+static int ThreadSafe;
+#endif /* THREADS */
+
+#endif /* defined(GLX_USE_TLS) */
+/*@}*/
+
+
+void
+_glapi_destroy_multithread(void)
+{
+#if defined(THREADS) && defined(WIN32_THREADS)
+   u_tsd_destroy(&_gl_DispatchTSD);
+   u_tsd_destroy(&ContextTSD);
+#endif
+}
+
+
+#if defined(THREADS) && !defined(GLX_USE_TLS)
+
+static void
+_glapi_init_multithread(void)
+{
+   u_tsd_init(&_gl_DispatchTSD);
+   u_tsd_init(&ContextTSD);
+}
+
+/**
+ * Mutex for multithread check.
+ */
+#ifdef WIN32_THREADS
+/* _glthread_DECLARE_STATIC_MUTEX is broken on windows.  There will be race! */
+#define CHECK_MULTITHREAD_LOCK()
+#define CHECK_MULTITHREAD_UNLOCK()
+#else
+u_mutex_declare_static(ThreadCheckMutex);
+#define CHECK_MULTITHREAD_LOCK() u_mutex_lock(ThreadCheckMutex)
+#define CHECK_MULTITHREAD_UNLOCK() u_mutex_unlock(ThreadCheckMutex)
+#endif
+
+/**
+ * We should call this periodically from a function such as glXMakeCurrent
+ * in order to test if multiple threads are being used.
+ */
+void
+_glapi_check_multithread(void)
+{
+   static unsigned long knownID;
+   static int firstCall = 1;
+
+   if (ThreadSafe)
+      return;
+
+   CHECK_MULTITHREAD_LOCK();
+   if (firstCall) {
+      _glapi_init_multithread();
+
+      knownID = u_thread_self();
+      firstCall = 0;
+   }
+   else if (knownID != u_thread_self()) {
+      ThreadSafe = 1;
+      _glapi_set_dispatch(NULL);
+      _glapi_set_context(NULL);
+   }
+   CHECK_MULTITHREAD_UNLOCK();
+}
+
+#else
+
+void
+_glapi_check_multithread(void)
+{
+}
+
+#endif
+
+
+
+/**
+ * Set the current context pointer for this thread.
+ * The context pointer is an opaque type which should be cast to
+ * void from the real context pointer type.
+ */
+void
+_glapi_set_context(void *context)
+{
+#if defined(GLX_USE_TLS)
+   _glapi_tls_Context = context;
+#elif defined(THREADS)
+   u_tsd_set(&ContextTSD, context);
+   _glapi_Context = (ThreadSafe) ? NULL : context;
+#else
+   _glapi_Context = context;
+#endif
+}
+
+/**
+ * Get the current context pointer for this thread.
+ * The context pointer is an opaque type which should be cast from
+ * void to the real context pointer type.
+ */
+void *
+_glapi_get_context(void)
+{
+#if defined(GLX_USE_TLS)
+   return _glapi_tls_Context;
+#elif defined(THREADS)
+   return (ThreadSafe)
+      ? u_tsd_get(&ContextTSD)
+      : _glapi_Context;
+#else
+   return _glapi_Context;
+#endif
+}
+
+/**
+ * Set the global or per-thread dispatch table pointer.
+ * If the dispatch parameter is NULL we'll plug in the no-op dispatch
+ * table (__glapi_noop_table).
+ */
+void
+_glapi_set_dispatch(struct _glapi_table *dispatch)
+{
+   stub_init_once();
+
+   if (!dispatch)
+      dispatch = (struct _glapi_table *) table_noop_array;
+
+#if defined(GLX_USE_TLS)
+   _glapi_tls_Dispatch = dispatch;
+#elif defined(THREADS)
+   u_tsd_set(&_gl_DispatchTSD, (void *) dispatch);
+   _glapi_Dispatch = (ThreadSafe) ? NULL : dispatch;
+#else
+   _glapi_Dispatch = dispatch;
+#endif
+}
+
+/**
+ * Return pointer to current dispatch table for calling thread.
+ */
+struct _glapi_table *
+_glapi_get_dispatch(void)
+{
+#if defined(GLX_USE_TLS)
+   return _glapi_tls_Dispatch;
+#elif defined(THREADS)
+   return (ThreadSafe)
+      ? (struct _glapi_table *) u_tsd_get(&_gl_DispatchTSD)
+      : _glapi_Dispatch;
+#else
+   return _glapi_Dispatch;
+#endif
+}
diff --git a/src/mapi/mapi/u_current.h b/src/mapi/mapi/u_current.h
new file mode 100644 (file)
index 0000000..a6256f5
--- /dev/null
@@ -0,0 +1,93 @@
+#ifndef _U_CURRENT_H_
+#define _U_CURRENT_H_
+
+#include "u_compiler.h"
+
+#ifdef MAPI_GLAPI_CURRENT
+#define GLAPI_EXPORT PUBLIC
+#else
+#define GLAPI_EXPORT
+#endif
+
+/*
+ * Unlike other utility functions, we need to keep the old names (_glapi_*) for
+ * ABI compatibility.  The desired functions are wrappers to the old ones.
+ */
+
+struct _glapi_table;
+
+#ifdef GLX_USE_TLS
+
+GLAPI_EXPORT extern __thread struct _glapi_table *_glapi_tls_Dispatch
+    __attribute__((tls_model("initial-exec")));
+
+GLAPI_EXPORT extern __thread void *_glapi_tls_Context
+    __attribute__((tls_model("initial-exec")));
+
+GLAPI_EXPORT extern const struct _glapi_table *_glapi_Dispatch;
+GLAPI_EXPORT extern const void *_glapi_Context;
+
+#else /* GLX_USE_TLS */
+
+GLAPI_EXPORT extern struct _glapi_table *_glapi_Dispatch;
+GLAPI_EXPORT extern void *_glapi_Context;
+
+#endif /* GLX_USE_TLS */
+
+GLAPI_EXPORT void
+_glapi_check_multithread(void);
+
+GLAPI_EXPORT void
+_glapi_set_context(void *context);
+
+GLAPI_EXPORT void *
+_glapi_get_context(void);
+
+GLAPI_EXPORT void
+_glapi_set_dispatch(struct _glapi_table *dispatch);
+
+GLAPI_EXPORT struct _glapi_table *
+_glapi_get_dispatch(void);
+
+void
+_glapi_destroy_multithread(void);
+
+
+struct mapi_table;
+
+static INLINE void
+u_current_set(const struct mapi_table *tbl)
+{
+   _glapi_check_multithread();
+   _glapi_set_dispatch((struct _glapi_table *) tbl);
+}
+
+static INLINE const struct mapi_table *
+u_current_get(void)
+{
+#ifdef GLX_USE_TLS
+   return (const struct mapi_table *) _glapi_tls_Dispatch;
+#else
+   return (const struct mapi_table *) (likely(_glapi_Dispatch) ?
+      _glapi_Dispatch : _glapi_get_dispatch());
+#endif
+}
+
+static INLINE void
+u_current_set_user(void *ptr)
+{
+   _glapi_check_multithread();
+   _glapi_set_context(ptr);
+}
+
+static INLINE void *
+u_current_get_user(void)
+{
+#ifdef GLX_USE_TLS
+   return _glapi_tls_Context;
+#else
+   return likely(_glapi_Context) ? _glapi_Context : _glapi_get_context();
+#endif
+}
+
+#endif /* GLX_USE_TLS */
diff --git a/src/mapi/mapi/u_execmem.c b/src/mapi/mapi/u_execmem.c
new file mode 100644 (file)
index 0000000..00df830
--- /dev/null
@@ -0,0 +1,143 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  6.5
+ *
+ * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/**
+ * \file glapi_execmem.c
+ *
+ * Function for allocating executable memory for dispatch stubs.
+ *
+ * Copied from main/execmem.c and simplified for dispatch stubs.
+ */
+
+
+#include "u_compiler.h"
+#include "u_thread.h"
+#include "u_execmem.h"
+
+
+#define EXEC_MAP_SIZE (4*1024)
+
+u_mutex_declare_static(exec_mutex);
+
+static unsigned int head = 0;
+
+static unsigned char *exec_mem = (unsigned char *)0;
+
+
+#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun)
+
+#include <unistd.h>
+#include <sys/mman.h>
+
+#ifdef MESA_SELINUX
+#include <selinux/selinux.h>
+#endif
+
+
+#ifndef MAP_ANONYMOUS
+#define MAP_ANONYMOUS MAP_ANON
+#endif
+
+
+/*
+ * Dispatch stubs are of fixed size and never freed. Thus, we do not need to
+ * overlay a heap, we just mmap a page and manage through an index.
+ */
+
+static int
+init_map(void)
+{
+#ifdef MESA_SELINUX
+   if (is_selinux_enabled()) {
+      if (!security_get_boolean_active("allow_execmem") ||
+         !security_get_boolean_pending("allow_execmem"))
+         return 0;
+   }
+#endif
+
+   if (!exec_mem)
+      exec_mem = mmap(NULL, EXEC_MAP_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE,
+                     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
+
+   return (exec_mem != MAP_FAILED);
+}
+
+
+#elif defined(_WIN32)
+
+#include <windows.h>
+
+
+/*
+ * Avoid Data Execution Prevention.
+ */
+
+static int
+init_map(void)
+{
+   exec_mem = VirtualAlloc(NULL, EXEC_MAP_SIZE, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
+
+   return (exec_mem != NULL);
+}
+
+
+#else
+
+static int
+init_map(void)
+{
+   exec_mem = malloc(EXEC_MAP_SIZE);
+
+   return (exec_mem != NULL);
+}
+
+
+#endif
+
+void *
+u_execmem_alloc(unsigned int size)
+{
+   void *addr = NULL;
+
+   u_mutex_lock(exec_mutex);
+
+   if (!init_map())
+      goto bail;
+
+   /* free space check, assumes no integer overflow */
+   if (head + size > EXEC_MAP_SIZE)
+      goto bail;
+
+   /* allocation, assumes proper addr and size alignement */
+   addr = exec_mem + head;
+   head += size;
+
+bail:
+   u_mutex_unlock(exec_mutex);
+
+   return addr;
+}
+
+
diff --git a/src/mapi/mapi/u_execmem.h b/src/mapi/mapi/u_execmem.h
new file mode 100644 (file)
index 0000000..13fff8d
--- /dev/null
@@ -0,0 +1,7 @@
+#ifndef _U_EXECMEM_H_
+#define _U_EXECMEM_H_
+
+void *
+u_execmem_alloc(unsigned int size);
+
+#endif /* _U_EXECMEM_H_ */
diff --git a/src/mapi/mapi/u_macros.h b/src/mapi/mapi/u_macros.h
new file mode 100644 (file)
index 0000000..72345b5
--- /dev/null
@@ -0,0 +1,12 @@
+#ifndef _U_MACROS_
+#define _U_MACROS_
+
+#define _U_STRINGIFY(x) #x
+#define _U_CONCAT(x, y) x ## y
+#define _U_CONCAT_STR(x, y) #x#y
+
+#define U_STRINGIFY(x) _U_STRINGIFY(x)
+#define U_CONCAT(x, y) _U_CONCAT(x, y)
+#define U_CONCAT_STR(x, y) _U_CONCAT_STR(x, y)
+
+#endif /* _U_MACROS_ */
diff --git a/src/mapi/mapi/u_thread.c b/src/mapi/mapi/u_thread.c
new file mode 100644 (file)
index 0000000..e0fa64a
--- /dev/null
@@ -0,0 +1,254 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  6.5.1
+ *
+ * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "u_compiler.h"
+#include "u_thread.h"
+
+
+/*
+ * This file should still compile even when THREADS is not defined.
+ * This is to make things easier to deal with on the makefile scene..
+ */
+#ifdef THREADS
+#include <errno.h>
+
+/*
+ * Error messages
+ */
+#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data"
+#define GET_TSD_ERROR "_glthread_: failed to get thread specific data"
+#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data"
+
+
+/*
+ * Magic number to determine if a TSD object has been initialized.
+ * Kind of a hack but there doesn't appear to be a better cross-platform
+ * solution.
+ */
+#define INIT_MAGIC 0xff8adc98
+
+
+
+/*
+ * POSIX Threads -- The best way to go if your platform supports them.
+ *                  Solaris >= 2.5 have POSIX threads, IRIX >= 6.4 reportedly
+ *                  has them, and many of the free Unixes now have them.
+ *                  Be sure to use appropriate -mt or -D_REENTRANT type
+ *                  compile flags when building.
+ */
+#ifdef PTHREADS
+
+unsigned long
+u_thread_self(void)
+{
+   return (unsigned long) pthread_self();
+}
+
+
+void
+u_tsd_init(struct u_tsd *tsd)
+{
+   if (pthread_key_create(&tsd->key, NULL/*free*/) != 0) {
+      perror(INIT_TSD_ERROR);
+      exit(-1);
+   }
+   tsd->initMagic = INIT_MAGIC;
+}
+
+
+void *
+u_tsd_get(struct u_tsd *tsd)
+{
+   if (tsd->initMagic != (int) INIT_MAGIC) {
+      u_tsd_init(tsd);
+   }
+   return pthread_getspecific(tsd->key);
+}
+
+
+void
+u_tsd_set(struct u_tsd *tsd, void *ptr)
+{
+   if (tsd->initMagic != (int) INIT_MAGIC) {
+      u_tsd_init(tsd);
+   }
+   if (pthread_setspecific(tsd->key, ptr) != 0) {
+      perror(SET_TSD_ERROR);
+      exit(-1);
+   }
+}
+
+#endif /* PTHREADS */
+
+
+
+/*
+ * Win32 Threads.  The only available option for Windows 95/NT.
+ * Be sure that you compile using the Multithreaded runtime, otherwise
+ * bad things will happen.
+ */
+#ifdef WIN32_THREADS
+
+static void InsteadOf_exit(int nCode)
+{
+   DWORD dwErr = GetLastError();
+}
+
+unsigned long
+u_thread_self(void)
+{
+   return GetCurrentThreadId();
+}
+
+
+void
+u_tsd_init(struct u_tsd *tsd)
+{
+   tsd->key = TlsAlloc();
+   if (tsd->key == TLS_OUT_OF_INDEXES) {
+      perror(INIT_TSD_ERROR);
+      InsteadOf_exit(-1);
+   }
+   tsd->initMagic = INIT_MAGIC;
+}
+
+
+void
+u_tsd_destroy(struct u_tsd *tsd)
+{
+   if (tsd->initMagic != INIT_MAGIC) {
+      return;
+   }
+   TlsFree(tsd->key);
+   tsd->initMagic = 0x0;
+}
+
+
+void *
+u_tsd_get(struct u_tsd *tsd)
+{
+   if (tsd->initMagic != INIT_MAGIC) {
+      u_tsd_init(tsd);
+   }
+   return TlsGetValue(tsd->key);
+}
+
+
+void
+u_tsd_set(struct u_tsd *tsd, void *ptr)
+{
+   /* the following code assumes that the struct u_tsd has been initialized
+      to zero at creation */
+   if (tsd->initMagic != INIT_MAGIC) {
+      u_tsd_init(tsd);
+   }
+   if (TlsSetValue(tsd->key, ptr) == 0) {
+      perror(SET_TSD_ERROR);
+      InsteadOf_exit(-1);
+   }
+}
+
+#endif /* WIN32_THREADS */
+
+/*
+ * BeOS threads
+ */
+#ifdef BEOS_THREADS
+
+unsigned long
+u_thread_self(void)
+{
+   return (unsigned long) find_thread(NULL);
+}
+
+void
+u_tsd_init(struct u_tsd *tsd)
+{
+   tsd->key = tls_allocate();
+   tsd->initMagic = INIT_MAGIC;
+}
+
+void *
+u_tsd_get(struct u_tsd *tsd)
+{
+   if (tsd->initMagic != (int) INIT_MAGIC) {
+      u_tsd_init(tsd);
+   }
+   return tls_get(tsd->key);
+}
+
+void
+u_tsd_set(struct u_tsd *tsd, void *ptr)
+{
+   if (tsd->initMagic != (int) INIT_MAGIC) {
+      u_tsd_init(tsd);
+   }
+   tls_set(tsd->key, ptr);
+}
+
+#endif /* BEOS_THREADS */
+
+
+
+#else  /* THREADS */
+
+
+/*
+ * no-op functions
+ */
+
+unsigned long
+_glthread_GetID(void)
+{
+   return 0;
+}
+
+
+void
+u_tsd_init(struct u_tsd *tsd)
+{
+   (void) tsd;
+}
+
+
+void *
+u_tsd_get(struct u_tsd *tsd)
+{
+   (void) tsd;
+   return NULL;
+}
+
+
+void
+u_tsd_set(struct u_tsd *tsd, void *ptr)
+{
+   (void) tsd;
+   (void) ptr;
+}
+
+
+#endif /* THREADS */
diff --git a/src/mapi/mapi/u_thread.h b/src/mapi/mapi/u_thread.h
new file mode 100644 (file)
index 0000000..b4487a3
--- /dev/null
@@ -0,0 +1,201 @@
+/*
+ * Mesa 3-D graphics library
+ * Version:  6.5.2
+ *
+ * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+
+/*
+ * Thread support for gl dispatch.
+ *
+ * Initial version by John Stone (j.stone@acm.org) (johns@cs.umr.edu)
+ *                and Christoph Poliwoda (poliwoda@volumegraphics.com)
+ * Revised by Keith Whitwell
+ * Adapted for new gl dispatcher by Brian Paul
+ * Modified for use in mapi by Chia-I Wu
+ */
+
+/*
+ * If this file is accidentally included by a non-threaded build,
+ * it should not cause the build to fail, or otherwise cause problems.
+ * In general, it should only be included when needed however.
+ */
+
+#ifndef _U_THREAD_H_
+#define _U_THREAD_H_
+
+#include "u_compiler.h"
+
+#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)
+#ifndef THREADS
+#define THREADS
+#endif
+#endif
+
+/*
+ * POSIX threads. This should be your choice in the Unix world
+ * whenever possible.  When building with POSIX threads, be sure
+ * to enable any compiler flags which will cause the MT-safe
+ * libc (if one exists) to be used when linking, as well as any
+ * header macros for MT-safe errno, etc.  For Solaris, this is the -mt
+ * compiler flag.  On Solaris with gcc, use -D_REENTRANT to enable
+ * proper compiling for MT-safe libc etc.
+ */
+#if defined(PTHREADS)
+#include <pthread.h> /* POSIX threads headers */
+
+struct u_tsd {
+   pthread_key_t key;
+   int initMagic;
+};
+
+typedef pthread_mutex_t u_mutex;
+
+#define u_mutex_declare_static(name) \
+   static u_mutex name = PTHREAD_MUTEX_INITIALIZER
+
+#define u_mutex_init(name)    pthread_mutex_init(&(name), NULL)
+#define u_mutex_destroy(name) pthread_mutex_destroy(&(name))
+#define u_mutex_lock(name)    (void) pthread_mutex_lock(&(name))
+#define u_mutex_unlock(name)  (void) pthread_mutex_unlock(&(name))
+
+#endif /* PTHREADS */
+
+
+/*
+ * Windows threads. Should work with Windows NT and 95.
+ * IMPORTANT: Link with multithreaded runtime library when THREADS are
+ * used!
+ */
+#ifdef WIN32_THREADS
+#include <windows.h>
+
+struct u_tsd {
+   DWORD key;
+   int   initMagic;
+};
+
+typedef CRITICAL_SECTION u_mutex;
+
+/* http://locklessinc.com/articles/pthreads_on_windows/ */
+#define u_mutex_declare_static(name) \
+   /* static */ u_mutex name = {(void*)-1, -1, 0, 0, 0, 0}
+
+#define u_mutex_init(name)    InitializeCriticalSection(&name)
+#define u_mutex_destroy(name) DeleteCriticalSection(&name)
+#define u_mutex_lock(name)    EnterCriticalSection(&name)
+#define u_mutex_unlock(name)  LeaveCriticalSection(&name)
+
+#endif /* WIN32_THREADS */
+
+
+/*
+ * BeOS threads. R5.x required.
+ */
+#ifdef BEOS_THREADS
+
+/* Problem with OS.h and this file on haiku */
+#ifndef __HAIKU__
+#include <kernel/OS.h>
+#endif
+
+#include <support/TLS.h>
+
+/* The only two typedefs required here
+ * this is cause of the OS.h problem
+ */
+#ifdef __HAIKU__
+typedef int32 thread_id;
+typedef int32 sem_id;
+#endif
+
+struct u_tsd {
+   int32        key;
+   int          initMagic;
+};
+
+/* Use Benaphore, aka speeder semaphore */
+typedef struct {
+    int32   lock;
+    sem_id  sem;
+} benaphore;
+typedef benaphore u_mutex;
+
+#define u_mutex_declare_static(name) \
+   static u_mutex name = { 0, 0 }
+
+#define u_mutex_init(name) \
+   name.sem = create_sem(0, #name"_benaphore"), \
+   name.lock = 0
+
+#define u_mutex_destroy(name) \
+   delete_sem(name.sem), \
+   name.lock = 0
+
+#define u_mutex_lock(name) \
+   if (name.sem == 0) \
+      u_mutex_init(name); \
+   if (atomic_add(&(name.lock), 1) >= 1) \
+      acquire_sem(name.sem)
+
+#define u_mutex_unlock(name) \
+   if (atomic_add(&(name.lock), -1) > 1) \
+      release_sem(name.sem)
+
+#endif /* BEOS_THREADS */
+
+
+/*
+ * THREADS not defined
+ */
+#ifndef THREADS
+
+struct u_tsd {
+   int initMagic; 
+};
+
+typedef unsigned u_mutex;
+
+#define u_mutex_declare_static(name)   static u_mutex name = 0
+#define u_mutex_init(name)             (void) name
+#define u_mutex_destroy(name)          (void) name
+#define u_mutex_lock(name)             (void) name
+#define u_mutex_unlock(name)           (void) name
+
+#endif /* THREADS */
+
+
+unsigned long
+u_thread_self(void);
+
+void
+u_tsd_init(struct u_tsd *tsd);
+
+void
+u_tsd_destroy(struct u_tsd *tsd); /* WIN32 only */
+
+void *
+u_tsd_get(struct u_tsd *tsd);
+
+void
+u_tsd_set(struct u_tsd *tsd, void *ptr);
+
+#endif /* _U_THREAD_H_ */
diff --git a/src/mapi/vgapi/Makefile b/src/mapi/vgapi/Makefile
new file mode 100644 (file)
index 0000000..702db03
--- /dev/null
@@ -0,0 +1,89 @@
+# src/mapi/vgapi/Makefile
+
+TOP := ../../..
+include $(TOP)/configs/current
+
+VG_LIB_MAJOR = 1
+VG_LIB_MINOR = 0
+VG_LIB_PATCH = 0
+
+MAPI := $(TOP)/src/mapi/mapi
+
+include $(MAPI)/sources.mak
+VGAPI_SOURCES := $(addprefix $(MAPI)/, $(MAPI_SOURCES))
+VGAPI_OBJECTS := $(MAPI_SOURCES:.c=.o)
+
+VGAPI_CPPFLAGS := -DMAPI_ABI_HEADER=\"vgapi/vgapi_tmp.h\"
+
+GENERATED_SOURCES := vgapi_tmp.h
+
+INCLUDE_DIRS := \
+       -I$(TOP)/include \
+       -I$(TOP)/src/mapi
+
+.PHONY: default
+default: depend $(TOP)/$(LIB_DIR)/$(VG_LIB_NAME)
+
+$(TOP)/$(LIB_DIR)/$(VG_LIB_NAME): $(VGAPI_OBJECTS)
+       $(MKLIB) -o $(VG_LIB) -linker '$(CC)' -ldflags '$(LDFLAGS)' \
+               -major $(VG_LIB_MAJOR) \
+               -minor $(VG_LIB_MINOR) \
+               -patch $(VG_LIB_PATCH) \
+               -id $(INSTALL_LIB_DIR)/lib$(VG_LIB).$(VG_LIB_MAJOR).dylib \
+               $(MKLIB_OPTIONS) -install $(TOP)/$(LIB_DIR) \
+               $(VGAPI_OBJECTS) $(VG_LIB_DEPS)
+
+# not used, but kept for completeness
+libvgapi.a: $(VGAPI_OBJECTS)
+       @$(MKLIB) -o vgapi -static $(VGAPI_OBJECTS)
+
+$(VGAPI_SOURCES): | $(GENERATED_SOURCES)
+
+$(VGAPI_OBJECTS): %.o: $(MAPI)/%.c
+       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $(VGAPI_CPPFLAGS) $< -o $@
+
+vgapi_tmp.h: vgapi.csv $(MAPI)/mapi_abi.py
+       $(PYTHON2) $(PYTHON_FLAGS) $(MAPI)/mapi_abi.py \
+               -i vgapi/vgapi_defines.h $< > $@
+
+.PHONY: clean
+clean:
+       -rm -f vg.pc
+       -rm -f $(TOP)/$(LIB_DIR)/$(VG_LIB_NAME)
+       -rm -f libvgapi.a
+       -rm -f $(VGAPI_OBJECTS)
+       -rm -f depend depend.bak
+       -rm -f $(GENERATED_SOURCES)
+
+pcedit = \
+       -e 's,@INSTALL_DIR@,$(INSTALL_DIR),' \
+       -e 's,@INSTALL_LIB_DIR@,$(INSTALL_LIB_DIR),' \
+       -e 's,@INSTALL_INC_DIR@,$(INSTALL_INC_DIR),' \
+       -e 's,@VERSION@,$(MESA_MAJOR).$(MESA_MINOR).$(MESA_TINY),' \
+       -e 's,@VG_PC_REQ_PRIV@,$(VG_PC_REQ_PRIV),' \
+       -e 's,@VG_PC_LIB_PRIV@,$(VG_PC_LIB_PRIV),' \
+       -e 's,@VG_PC_CFLAGS@,$(VG_PC_CFLAGS),' \
+       -e 's,@VG_LIB@,$(VG_LIB),'
+
+vg.pc: vg.pc.in
+       @sed $(pcedit) $< > $@
+
+install-pc: vg.pc
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+       $(INSTALL) -m 644 $< $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
+
+install-headers:
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/VG
+       $(INSTALL) -m 644 $(TOP)/include/VG/*.h $(DESTDIR)$(INSTALL_INC_DIR)/VG
+
+install: default install-headers install-pc
+       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
+       $(MINSTALL) $(TOP)/$(LIB_DIR)/$(VG_LIB_GLOB) \
+               $(DESTDIR)$(INSTALL_LIB_DIR)
+
+depend: $(VGAPI_SOURCES)
+       @echo "running $(MKDEP)"
+       @touch depend
+       @$(MKDEP) $(MKDEP_OPTIONS) -f- $(DEFINES) $(INCLUDE_DIRS) \
+               $(VGAPI_CPPFLAGS) $(VGAPI_SOURCES) 2>/dev/null | \
+               sed -e 's,^$(MAPI)/,,' > depend
diff --git a/src/mapi/vgapi/vg.pc.in b/src/mapi/vgapi/vg.pc.in
new file mode 100644 (file)
index 0000000..63e9af8
--- /dev/null
@@ -0,0 +1,12 @@
+prefix=@INSTALL_DIR@
+exec_prefix=${prefix}
+libdir=@INSTALL_LIB_DIR@
+includedir=@INSTALL_INC_DIR@
+
+Name: vg
+Description: Mesa OpenVG 1.0 library
+Requires.private: @VG_PC_REQ_PRIV@
+Version: @VERSION@
+Libs: -L${libdir} -l@VG_LIB@
+Libs.private: @VG_PC_LIB_PRIV@
+Cflags: -I${includedir} @VG_PC_CFLAGS@
diff --git a/src/mapi/vgapi/vgapi.csv b/src/mapi/vgapi/vgapi.csv
new file mode 100644 (file)
index 0000000..d28ee32
--- /dev/null
@@ -0,0 +1,93 @@
+# This is the source file for the various generate structs/tables/functions
+# used in st/vega.
+
+# OpenVG 1.0
+void,                   AppendPath,                VGPath dstPath, VGPath srcPath
+void,                   AppendPathData,            VGPath dstPath, VGint numSegments, const VGubyte *pathSegments, const void *pathData
+VGImage,                ChildImage,                VGImage parent, VGint x, VGint y, VGint width, VGint height
+void,                   Clear,                     VGint x, VGint y, VGint width, VGint height
+void,                   ClearImage,                VGImage image, VGint x, VGint y, VGint width, VGint height
+void,                   ClearPath,                 VGPath path, VGbitfield capabilities
+void,                   ColorMatrix,               VGImage dst, VGImage src, const VGfloat *matrix
+void,                   Convolve,                  VGImage dst, VGImage src, VGint kernelWidth, VGint kernelHeight, VGint shiftX, VGint shiftY, const VGshort *kernel, VGfloat scale, VGfloat bias, VGTilingMode tilingMode
+void,                   CopyImage,                 VGImage dst, VGint dx, VGint dy, VGImage src, VGint sx, VGint sy, VGint width, VGint height, VGboolean dither
+void,                   CopyPixels,                VGint dx, VGint dy, VGint sx, VGint sy, VGint width, VGint height
+VGImage,                CreateImage,               VGImageFormat format, VGint width, VGint height, VGbitfield allowedQuality
+VGPaint,                CreatePaint,               void
+VGPath,                 CreatePath,                VGint pathFormat, VGPathDatatype datatype, VGfloat scale, VGfloat bias, VGint segmentCapacityHint, VGint coordCapacityHint, VGbitfield capabilities
+void,                   DestroyImage,              VGImage image
+void,                   DestroyPaint,              VGPaint paint
+void,                   DestroyPath,               VGPath path
+void,                   DrawImage,                 VGImage image
+void,                   DrawPath,                  VGPath path, VGbitfield paintModes
+void,                   Finish,                    void
+void,                   Flush,                     void
+void,                   GaussianBlur,              VGImage dst, VGImage src, VGfloat stdDeviationX, VGfloat stdDeviationY, VGTilingMode tilingMode
+VGuint,                 GetColor,                  VGPaint paint
+VGErrorCode,            GetError,                  void
+void,                   GetImageSubData,           VGImage image, void *data, VGint dataStride, VGImageFormat dataFormat, VGint x, VGint y, VGint width, VGint height
+void,                   GetMatrix,                 VGfloat *m
+VGPaint,                GetPaint,                  VGPaintMode paintMode
+VGint,                  GetParameterVectorSize,    VGHandle object, VGint paramType
+VGfloat,                GetParameterf,             VGHandle object, VGint paramType
+void,                   GetParameterfv,            VGHandle object, VGint paramType, VGint count, VGfloat *values
+VGint,                  GetParameteri,             VGHandle object, VGint paramType
+void,                   GetParameteriv,            VGHandle object, VGint paramType, VGint count, VGint *values
+VGImage,                GetParent,                 VGImage image 
+VGbitfield,             GetPathCapabilities,       VGPath path
+void,                   GetPixels,                 VGImage dst, VGint dx, VGint dy, VGint sx, VGint sy, VGint width, VGint height
+const VGubyte *,        GetString,                 VGStringID name
+VGint,                  GetVectorSize,             VGParamType type
+VGfloat,                Getf,                      VGParamType type
+void,                   Getfv,                     VGParamType type, VGint count, VGfloat *values
+VGint,                  Geti,                      VGParamType type
+void,                   Getiv,                     VGParamType type, VGint count, VGint *values
+VGHardwareQueryResult,  HardwareQuery,             VGHardwareQueryType key, VGint setting
+void,                   ImageSubData,              VGImage image, const void *data, VGint dataStride, VGImageFormat dataFormat, VGint x, VGint y, VGint width, VGint height
+VGboolean,              InterpolatePath,           VGPath dstPath, VGPath startPath, VGPath endPath, VGfloat amount
+void,                   LoadIdentity,              void
+void,                   LoadMatrix,                const VGfloat *m
+void,                   Lookup,                    VGImage dst, VGImage src, const VGubyte *redLUT, const VGubyte *greenLUT, const VGubyte *blueLUT, const VGubyte *alphaLUT, VGboolean outputLinear, VGboolean outputPremultiplied
+void,                   LookupSingle,              VGImage dst, VGImage src, const VGuint *lookupTable, VGImageChannel sourceChannel, VGboolean outputLinear, VGboolean outputPremultiplied
+void,                   Mask,                      VGHandle mask, VGMaskOperation operation, VGint x, VGint y, VGint width, VGint height
+void,                   ModifyPathCoords,          VGPath dstPath, VGint startIndex, VGint numSegments, const void *pathData
+void,                   MultMatrix,                const VGfloat *m
+void,                   PaintPattern,              VGPaint paint, VGImage pattern
+void,                   PathBounds,                VGPath path, VGfloat *minX, VGfloat *minY, VGfloat *width, VGfloat *height
+VGfloat,                PathLength,                VGPath path, VGint startSegment, VGint numSegments
+void,                   PathTransformedBounds,     VGPath path, VGfloat *minX, VGfloat *minY, VGfloat *width, VGfloat *height
+void,                   PointAlongPath,            VGPath path, VGint startSegment, VGint numSegments, VGfloat distance, VGfloat *x, VGfloat *y, VGfloat *tangentX, VGfloat *tangentY
+void,                   ReadPixels,                void *data, VGint dataStride, VGImageFormat dataFormat, VGint sx, VGint sy, VGint width, VGint height
+void,                   RemovePathCapabilities,    VGPath path, VGbitfield capabilities
+void,                   Rotate,                    VGfloat angle
+void,                   Scale,                     VGfloat sx, VGfloat sy
+void,                   SeparableConvolve,         VGImage dst, VGImage src, VGint kernelWidth, VGint kernelHeight, VGint shiftX, VGint shiftY, const VGshort *kernelX, const VGshort *kernelY, VGfloat scale, VGfloat bias, VGTilingMode tilingMode
+void,                   SetColor,                  VGPaint paint, VGuint rgba
+void,                   SetPaint,                  VGPaint paint, VGbitfield paintModes
+void,                   SetParameterf,             VGHandle object, VGint paramType, VGfloat value
+void,                   SetParameterfv,            VGHandle object, VGint paramType, VGint count, const VGfloat *values
+void,                   SetParameteri,             VGHandle object, VGint paramType, VGint value
+void,                   SetParameteriv,            VGHandle object, VGint paramType, VGint count, const VGint *values
+void,                   SetPixels,                 VGint dx, VGint dy, VGImage src, VGint sx, VGint sy, VGint width, VGint height
+void,                   Setf,                      VGParamType type, VGfloat value
+void,                   Setfv,                     VGParamType type, VGint count, const VGfloat *values
+void,                   Seti,                      VGParamType type, VGint value
+void,                   Setiv,                     VGParamType type, VGint count, const VGint *values
+void,                   Shear,                     VGfloat shx, VGfloat shy
+void,                   TransformPath,             VGPath dstPath, VGPath srcPath
+void,                   Translate,                 VGfloat tx, VGfloat ty
+void,                   WritePixels,               const void *data, VGint dataStride, VGImageFormat dataFormat, VGint dx, VGint dy, VGint width, VGint height
+
+## OpenVG 1.1
+#void,                   ClearGlyph,                VGFont font,VGuint glyphIndex
+#void,                   CopyMask,                  VGMaskLayer maskLayer, VGint dx, VGint dy, VGint sx, VGint sy, VGint width, VGint height
+#VGFont,                 CreateFont,                VGint glyphCapacityHint
+#VGMaskLayer,            CreateMaskLayer,           VGint width, VGint height
+#void,                   DestroyFont,               VGFont font
+#void,                   DestroyMaskLayer,          VGMaskLayer maskLayer
+#void,                   DrawGlyph,                 VGFont font, VGuint glyphIndex, VGbitfield paintModes, VGboolean allowAutoHinting
+#void,                   DrawGlyphs,                VGFont font, VGint glyphCount, const VGuint *glyphIndices, const VGfloat *adjustments_x, const VGfloat *adjustments_y, VGbitfield paintModes, VGboolean allowAutoHinting
+#void,                   FillMaskLayer,             VGMaskLayer maskLayer, VGint x, VGint y, VGint width, VGint height, VGfloat value
+#void,                   RenderToMask,              VGPath path, VGbitfield paintModes, VGMaskOperation operation
+#void,                   SetGlyphToImage,           VGFont font, VGuint glyphIndex, VGImage image, const VGfloat glyphOrigin[2], const VGfloat escapement[2]
+#void,                   SetGlyphToPath,            VGFont font, VGuint glyphIndex, VGPath path, VGboolean isHinted, const VGfloat glyphOrigin[2], const VGfloat escapement[2]
diff --git a/src/mapi/vgapi/vgapi_defines.h b/src/mapi/vgapi/vgapi_defines.h
new file mode 100644 (file)
index 0000000..fb9f68c
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef VGAPI_DEFINES_H
+#define VGAPI_DEFINES_H
+
+#include "VG/openvg.h"
+#include "VG/vgext.h"
+
+#define MAPI_ABI_PREFIX vg
+#define MAPI_ABI_PUBLIC VG_API_CALL
+#define MAPI_ABI_ATTR VG_API_ENTRY
+
+#endif /* VGAPI_DEFINES_H */
index b83498b1d9dedb520230f7a054372e8bd3ebb814..ce83eaf47e0f9ead8f5959c107d0d2c2b04de56c 100644 (file)
@@ -1,2 +1,5 @@
 */gen_matypes
 */matypes.h
+depend.es*
+depend.es*
+objs-es*
index 72f983e10a059fecbc64cd2848ea349ce002ded2..3bb2f39475b094398178be0176fbd8bee6f6ec0c 100644 (file)
@@ -3,33 +3,68 @@
 TOP = ../..
 include $(TOP)/configs/current
 
+MESA_LIBS := libmesa.a libmesagallium.a
+DEPENDS := depend
+
+ifeq ($(GLES_OVERLAY),1)
+ES1_LIBS := libes1gallium.a
+ES2_LIBS := libes2gallium.a
+DEPENDS += depend.es1 depend.es2
+endif
+
+MESA_OBJ_DIR := .
+ES1_OBJ_DIR := objs-es1
+ES2_OBJ_DIR := objs-es2
+
+MESA_CPPFLAGS := $(API_DEFINES)
+ES1_CPPFLAGS := -DFEATURE_ES1=1 -D__GL_EXPORTS
+ES2_CPPFLAGS := -DFEATURE_ES2=1 -D__GL_EXPORTS
+
 include sources.mak
 
-.SUFFIXES : .cpp
+# adjust object dirs
+ES1_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_OBJECTS))
+ES2_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_OBJECTS))
+MESA_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_OBJECTS))
+
+ES1_GALLIUM_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS))
+ES2_GALLIUM_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS))
+MESA_GALLIUM_OBJECTS := $(addprefix $(MESA_OBJ_DIR)/, $(MESA_GALLIUM_OBJECTS))
+
+# adjust include dirs
+MESA_INCLUDES := $(INCLUDE_DIRS)
+ES1_INCLUDES := -I$(TOP)/src/mapi/es1api $(INCLUDE_DIRS)
+ES2_INCLUDES := -I$(TOP)/src/mapi/es2api $(INCLUDE_DIRS)
+
+
+define mesa-cc-c
+       @mkdir -p $(dir $@)
+       $(CC) -c -o $@ $< $($(1)_CPPFLAGS) $($(1)_INCLUDES) $(CFLAGS)
+endef
+
+$(MESA_OBJ_DIR)/%.o: %.c
+       $(call mesa-cc-c,MESA)
 
-.c.o:
-       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+$(MESA_OBJ_DIR)/%.o: %.S
+       $(call mesa-cc-c,MESA)
 
-.cpp.o:
-       $(CXX) -c $(INCLUDE_DIRS) $(CXXFLAGS) $< -o $@
+$(ES1_OBJ_DIR)/%.o: %.c
+       $(call mesa-cc-c,ES1)
 
-.S.o:
-       $(CC) -c $(INCLUDE_DIRS) $(CFLAGS) $< -o $@
+$(ES1_OBJ_DIR)/%.o: %.S
+       $(call mesa-cc-c,ES1)
 
-CFLAGS += $(API_DEFINES)
+$(ES2_OBJ_DIR)/%.o: %.c
+       $(call mesa-cc-c,ES2)
+
+$(ES2_OBJ_DIR)/%.o: %.S
+       $(call mesa-cc-c,ES2)
 
 
 # Default: build dependencies, then asm_subdirs, GLSL built-in lib,
 # then convenience libs (.a) and finally the device drivers:
-default: depend es_glapi asm_subdirs glsl_builtin libmesa.a libmesagallium.a \
-       libglapi.a driver_subdirs
-
-es_glapi:
-       @for api in $(APIS) ; do                        \
-           case "$$api" in                             \
-               es1|es2) $(MAKE) -C es/glapi $$api;;    \
-           esac;                                       \
-       done
+default: $(DEPENDS) asm_subdirs glsl_builtin \
+       $(MESA_LIBS) $(ES1_LIBS) $(ES2_LIBS) driver_subdirs
 
 main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
        $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES1.1 > $@
@@ -37,12 +72,6 @@ main/api_exec_es1.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py m
 main/api_exec_es2.c: main/APIspec.xml main/es_generator.py main/APIspecutil.py main/APIspec.py
        $(PYTHON2) $(PYTHON_FLAGS) main/es_generator.py -S main/APIspec.xml -V GLES2.0 > $@
 
-main/get_es1.c: main/get_gen_es.py
-       $(PYTHON2) $(PYTHON_FLAGS) $< 1 > $@
-
-main/get_es2.c: main/get_gen_es.py
-       $(PYTHON2) $(PYTHON_FLAGS) $< 2 > $@
-
 ######################################################################
 # Helper libraries used by many drivers:
 
@@ -50,17 +79,25 @@ main/get_es2.c: main/get_gen_es.py
 libmesa.a: $(MESA_OBJECTS) $(GLSL_LIBS)
        @ $(MKLIB) -o mesa -static $(MESA_OBJECTS) $(GLSL_LIBS)
 
+libes1.a: $(ES1_OBJECTS) $(GLSL_LIBS)
+       @$(MKLIB) -o es1 -static $(ES1_OBJECTS) $(GLSL_LIBS)
+
+libes2.a: $(ES2_OBJECTS) $(GLSL_LIBS)
+       @$(MKLIB) -o es2 -static $(ES2_OBJECTS) $(GLSL_LIBS)
+
 # Make archive of subset of core mesa object files for gallium
 libmesagallium.a: $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
        @ $(MKLIB) -o mesagallium -static $(MESA_GALLIUM_OBJECTS) $(GLSL_LIBS)
 
-# Make archive of gl* API dispatcher functions only
-libglapi.a: $(GLAPI_OBJECTS)
-       @ $(MKLIB) -o glapi -static $(GLAPI_OBJECTS)
+libes1gallium.a: $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS)
+       @$(MKLIB) -o es1gallium -static $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS)
+
+libes2gallium.a: $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS)
+       @$(MKLIB) -o es2gallium -static $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS)
 
 ######################################################################
 # Device drivers
-driver_subdirs: libmesa.a libglapi.a libmesagallium.a
+driver_subdirs: $(MESA_LIBS)
        @ (cd drivers && $(MAKE))
 
 
@@ -88,9 +125,22 @@ glsl_builtin:
 depend: $(ALL_SOURCES)
        @ echo "running $(MKDEP)"
        @ touch depend
-       @$(MKDEP) $(MKDEP_OPTIONS) $(DEFINES) $(INCLUDE_DIRS) $(ALL_SOURCES) \
+       @$(MKDEP) $(MKDEP_OPTIONS) -p$(MESA_OBJ_DIR)/ $(DEFINES) \
+               $(INCLUDE_DIRS) $(ALL_SOURCES) > /dev/null 2>/dev/null
+
+depend.es1: $(ALL_SOURCES)
+       @echo "running $(MKDEP) for ES1"
+       @touch $@
+       @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES1_OBJ_DIR)/ $(DEFINES) \
+               $(ES1_CPPFLAGS) $(ES1_INCLUDES) $(ALL_SOURCES) \
                > /dev/null 2>/dev/null
 
+depend.es2: $(ALL_SOURCES)
+       @echo "running $(MKDEP) for ES2"
+       @touch $@
+       @$(MKDEP) $(MKDEP_OPTIONS) -f$@ -p$(ES2_OBJ_DIR)/ $(DEFINES) \
+               $(ES2_CPPFLAGS) $(ES2_INCLUDES) $(ALL_SOURCES) \
+               > /dev/null 2>/dev/null
 
 ######################################################################
 # Installation rules
@@ -112,12 +162,6 @@ install: default
            dri)    $(MAKE) install-libgl install-dri || exit 1 ;; \
            *)      $(MAKE) install-libgl || exit 1 ;; \
          esac ; \
-       done; \
-       for api in $(APIS) ; do \
-         case "$$api" in \
-           es1) $(MAKE) install-es1 || exit 1;; \
-           es2) $(MAKE) install-es2 || exit 1;; \
-         esac; \
        done
 
 pcedit = \
@@ -137,22 +181,6 @@ gl_pcedit = sed \
 gl.pc: gl.pc.in
        $(gl_pcedit) $< > $@
 
-glesv2_pcedit = sed \
-       $(pcedit) \
-       -e 's,@GLESv2_PC_LIB_PRIV@,$(GLESv2_PC_LIB_PRIV),' \
-       -e 's,@GLESv2_LIB@,$(GLESv2_LIB),'
-
-glesv2.pc: glesv2.pc.in
-       $(glesv2_pcedit) $< > $@
-
-glesv1_cm_pcedit = sed \
-       $(pcedit) \
-       -e 's,@GLESv1_CM_PC_LIB_PRIV@,$(GLESv1_CM_PC_LIB_PRIV),' \
-       -e 's,@GLESv1_CM_LIB@,$(GLESv1_CM_LIB),'
-
-glesv1_cm.pc: glesv1_cm.pc.in
-       $(glesv1_cm_pcedit) $< > $@
-
 osmesa_pcedit = sed \
        $(pcedit) \
        -e 's,@OSMESA_LIB@,$(OSMESA_LIB),' \
@@ -174,30 +202,6 @@ install-libgl: default gl.pc install-headers
                $(DESTDIR)$(INSTALL_LIB_DIR)
        $(INSTALL) -m 644 gl.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
 
-install-headers-es1:
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GLES
-       $(INSTALL) -m 644 $(TOP)/include/GLES/*.h \
-               $(DESTDIR)$(INSTALL_INC_DIR)/GLES
-
-install-es1: default glesv1_cm.pc install-headers-es1
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-       $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLESv1_CM_LIB_GLOB) \
-               $(DESTDIR)$(INSTALL_LIB_DIR)
-       $(INSTALL) -m 644 glesv1_cm.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-
-install-headers-es2:
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_INC_DIR)/GLES2
-       $(INSTALL) -m 644 $(TOP)/include/GLES2/*.h \
-               $(DESTDIR)$(INSTALL_INC_DIR)/GLES2
-
-install-es2: default glesv2.pc install-headers-es2
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
-       $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-       $(MINSTALL) $(TOP)/$(LIB_DIR)/$(GLESv2_LIB_GLOB) \
-               $(DESTDIR)$(INSTALL_LIB_DIR)
-       $(INSTALL) -m 644 glesv2.pc $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
-
 install-osmesa: default osmesa.pc
        $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)
        $(INSTALL) -d $(DESTDIR)$(INSTALL_LIB_DIR)/pkgconfig
@@ -214,11 +218,20 @@ install-dri: default
 tags:
        etags `find . -name \*.[ch]` $(TOP)/include/GL/*.h
 
+clean-es1:
+       -rm -f $(ES1_LIBS)
+       -rm -rf $(ES1_OBJ_DIR)
+       -rm -f depend.es1 depend.es1.bak
+
+clean-es2:
+       -rm -f $(ES2_LIBS)
+       -rm -rf $(ES2_OBJ_DIR)
+       -rm -f depend.es2 depend.es2.bak
 
-clean:
+clean: clean-es1 clean-es2
        -rm -f */*.o
        -rm -f */*/*.o
-       -rm -f depend depend.bak libmesa.a libglapi.a libmesagallium.a
+       -rm -f depend depend.bak libmesa.a libmesagallium.a
        -rm -f drivers/*/*.o
        -rm -f *.pc
        -rm -f shader/slang/library/*_gc.h
@@ -229,4 +242,4 @@ clean:
        -@cd x86-64 && $(MAKE) clean
 
 
--include depend
+-include $(DEPENDS)
index a7572af45d4189d9ceaff88911b3b2879f517fff..b553804fcdc838cf07432d3c6d82b72c76e32d24 100644 (file)
@@ -9,6 +9,7 @@ if env['platform'] != 'winddk':
        env = env.Clone()
        
        env.Append(CPPPATH = [
+               '#/src/mapi',
                '#/src/mesa',
        ])
        
@@ -78,7 +79,6 @@ if env['platform'] != 'winddk':
                'main/polygon.c',
                'main/queryobj.c',
                'main/rastpos.c',
-               'main/rbadaptors.c',
                'main/readpix.c',
                'main/remap.c',
                'main/renderbuffer.c',
@@ -177,6 +177,7 @@ if env['platform'] != 'winddk':
                'state_tracker/st_cb_readpixels.c',
                'state_tracker/st_cb_strings.c',
                'state_tracker/st_cb_texture.c',
+               'state_tracker/st_cb_xformfb.c',
                'state_tracker/st_context.c',
                'state_tracker/st_debug.c',
                'state_tracker/st_draw.c',
@@ -249,16 +250,6 @@ if env['platform'] != 'winddk':
                slang_sources
        )
 
-       glapi_sources = [
-               'glapi/glapi.c',
-               'glapi/glapi_dispatch.c',
-               'glapi/glapi_entrypoint.c',
-               'glapi/glapi_execmem.c',
-               'glapi/glapi_getproc.c',
-               'glapi/glapi_nop.c',
-               'glapi/glthread.c',
-       ]
-       
        #
        # Assembly sources
        #
@@ -292,9 +283,6 @@ if env['platform'] != 'winddk':
                        'x86/sse_normal.S',
                        'x86/read_rgba_span_x86.S',
                ]
-               glapi_sources += [
-                       'x86/glapi_x86.S',
-               ]
        elif gcc and env['machine'] == 'x86_64':
                env.Append(CPPDEFINES = [
                        'USE_X86_64_ASM', 
@@ -303,9 +291,6 @@ if env['platform'] != 'winddk':
                        'x86-64/x86-64.c',
                        'x86-64/xform4.S',
                ]
-               glapi_sources += [
-                       'x86-64/glapi_x86-64.S'
-               ]
        elif gcc and env['machine'] == 'ppc':
                env.Append(CPPDEFINES = [
                        'USE_PPC_ASM', 
@@ -314,8 +299,6 @@ if env['platform'] != 'winddk':
                mesa_sources += [
                        'ppc/common_ppc.c',
                ]
-               glapi_sources += [
-               ]
        elif gcc and env['machine'] == 'sparc':
                mesa_sources += [
                        'sparc/sparc.c',
@@ -323,9 +306,6 @@ if env['platform'] != 'winddk':
                        'sparc/norm.S',
                        'sparc/xform.S',
                ]
-               glapi_sources += [
-                       'sparc/glapi_sparc.S'
-               ]
        else:
                pass
        
@@ -356,10 +336,3 @@ if env['platform'] != 'winddk':
                source = mesa_sources,
        )
        Export('mesa')
-       
-       glapi = env.ConvenienceLibrary(
-               target = 'glapi',
-               source = glapi_sources,
-       )
-       Export('glapi')
-
index ebfaa2f07bdd28f3ae12c67927e9aeca09e1144b..ca5eb5c7552e24ed5fb8529fda0744bf6ad8844b 100644 (file)
@@ -47,6 +47,9 @@
 #if FEATURE_ARB_sync
 #include "main/syncobj.h"
 #endif
+#if FEATURE_EXT_transform_feedback
+#include "main/transformfeedback.h"
+#endif
 
 #include "shader/program.h"
 #include "shader/shader_api.h"
@@ -178,14 +181,6 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
    driver->TexParameter = NULL;
    driver->Viewport = NULL;
 
-   /* state queries */
-   driver->GetBooleanv = NULL;
-   driver->GetDoublev = NULL;
-   driver->GetFloatv = NULL;
-   driver->GetIntegerv = NULL;
-   driver->GetInteger64v = NULL;
-   driver->GetPointerv = NULL;
-   
    /* buffer objects */
    _mesa_init_buffer_object_functions(driver);
 
@@ -213,6 +208,10 @@ _mesa_init_driver_functions(struct dd_function_table *driver)
    driver->DeleteArrayObject = _mesa_delete_array_object;
    driver->BindArrayObject = NULL;
 
+#if FEATURE_EXT_transform_feedback
+   _mesa_init_transform_feedback_functions(driver);
+#endif
+
    /* T&L stuff */
    driver->NeedValidate = GL_FALSE;
    driver->ValidateTnlModule = NULL;
index 4b9a0c1786daea6bd232a4358fbe434271a1d00a..8cb25439e4843ba15c36c1bf605bc10255163c9e 100644 (file)
@@ -26,6 +26,7 @@ SHARED_INCLUDES = \
        -I$(TOP)/src/mesa/drivers/dri/common \
        -Iserver \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/egl/main \
        -I$(TOP)/src/egl/drivers/dri \
index 360c5247548583ce1b4458e27cb5302b539bb58e..c3d1f2c4542bc227664742ec495b18580a9a2ade 100644 (file)
@@ -736,6 +736,8 @@ setupLoaderExtensions(__DRIscreen *psp,
            psp->dri2.loader = (__DRIdri2LoaderExtension *) extensions[i];
        if (strcmp(extensions[i]->name, __DRI_IMAGE_LOOKUP) == 0)
            psp->dri2.image = (__DRIimageLookupExtension *) extensions[i];
+       if (strcmp(extensions[i]->name, __DRI_USE_INVALIDATE) == 0)
+           psp->dri2.useInvalidate = (__DRIuseInvalidateExtension *) extensions[i];
     }
 }
 
index ab6c6e57afc1d6f9e007d873dc9c40d85f6ee44b..e4c590b13224bfde7c170428ad1ab64b647ca14b 100644 (file)
@@ -527,6 +527,7 @@ struct __DRIscreenRec {
        int enabled;
        __DRIdri2LoaderExtension *loader;
        __DRIimageLookupExtension *image;
+       __DRIuseInvalidateExtension *useInvalidate;
     } dri2;
 
     /* The lock actually in use, old sarea or DRI2 */
index 3b9b3ae329e8e73895139fff0c1e0fcd8c1fe461..38e524e183cc0c744a4740262e4432b1ddd6cdf7 100644 (file)
@@ -453,8 +453,6 @@ i830Viewport(GLcontext * ctx,
               GLint x, GLint y, GLsizei width, GLsizei height)
 {
    intelCalcViewport(ctx);
-
-   intel_viewport(ctx, x, y, width, height);
 }
 
 
index 91b228d52b9e62a677970b3e9dc3747bc9b2f6f7..26d387f383af906ee3575e18fc14e60b1fb72672 100644 (file)
@@ -394,8 +394,6 @@ i915Viewport(GLcontext * ctx,
               GLint x, GLint y, GLsizei width, GLsizei height)
 {
    intelCalcViewport(ctx);
-
-   intel_viewport(ctx, x, y, width, height);
 }
 
 
index 9449a158dc6695273e587ba9aca49475afec5c70..7aecf68e4a8f62807f2de6cced2e8a8cb9850d6f 100644 (file)
@@ -1208,7 +1208,7 @@ intelFallback(struct intel_context *intel, GLbitfield bit, GLboolean mode)
    if (mode) {
       intel->Fallback |= bit;
       if (oldfallback == 0) {
-         intelFlush(ctx);
+         intel_flush(ctx);
          if (INTEL_DEBUG & DEBUG_FALLBACKS)
             fprintf(stderr, "ENTER FALLBACK %x: %s\n",
                     bit, getFallbackString(bit));
index 029a16500b54cb7ee7c3470fd212e04e099cf554..49ef859e456126767e5592f03633d10765fced2a 100644 (file)
@@ -42,7 +42,6 @@
 #include "brw_state.h"
 #include "brw_clip.h"
 
-
 #define FRONT_UNFILLED_BIT  0x1
 #define BACK_UNFILLED_BIT   0x2
 
@@ -127,6 +126,14 @@ static void compile_clip_prog( struct brw_context *brw,
     */
    program = brw_get_program(&c.func, &program_size);
 
+    if (INTEL_DEBUG & DEBUG_CLIP) {
+      printf("clip:\n");
+      for (i = 0; i < program_size / sizeof(struct brw_instruction); i++)
+        brw_disasm(stdout, &((struct brw_instruction *)program)[i],
+                   intel->gen);
+      printf("\n");
+    }
+
    /* Upload
     */
    dri_bo_unreference(brw->clip.prog_bo);
index d71bac7f617512fceb6bdc37a55aea96ae55f9e9..68222c6c278ff84d6fbdaaee2989ae731a5f2824 100644 (file)
@@ -114,8 +114,6 @@ struct brw_clip_compile {
 
    GLboolean need_direction;
 
-   GLuint last_mrf;
-
    GLuint header_position_offset;
    GLuint offset[VERT_ATTRIB_MAX];
 };
index b27fe654ca9e6ccb3dbeffdb3e59c7da456cd911..916a99ea004e5871c63a3f2cbc3aa4bf9aa73b94 100644 (file)
@@ -177,7 +177,7 @@ void brw_clip_tri_init_vertices( struct brw_clip_compile *c )
 void brw_clip_tri_flat_shade( struct brw_clip_compile *c )
 {
    struct brw_compile *p = &c->func;
-   struct brw_instruction *is_poly;
+   struct brw_instruction *is_poly, *is_trifan;
    struct brw_reg tmp0 = c->reg.loopcount; /* handy temporary */
 
    brw_AND(p, tmp0, get_element_ud(c->reg.R0, 2), brw_imm_ud(PRIM_MASK)); 
@@ -195,8 +195,22 @@ void brw_clip_tri_flat_shade( struct brw_clip_compile *c )
    is_poly = brw_ELSE(p, is_poly);
    {
       if (c->key.pv_first) {
-         brw_clip_copy_colors(c, 1, 0);
-         brw_clip_copy_colors(c, 2, 0);
+        brw_CMP(p,
+                vec1(brw_null_reg()),
+                BRW_CONDITIONAL_EQ,
+                tmp0,
+                brw_imm_ud(_3DPRIM_TRIFAN));
+        is_trifan = brw_IF(p, BRW_EXECUTE_1);
+        {
+           brw_clip_copy_colors(c, 0, 1);
+           brw_clip_copy_colors(c, 2, 1);
+        }
+        is_trifan = brw_ELSE(p, is_trifan);
+        {
+           brw_clip_copy_colors(c, 1, 0);
+           brw_clip_copy_colors(c, 2, 0);
+        }
+        brw_ENDIF(p, is_trifan);
       }
       else {
          brw_clip_copy_colors(c, 0, 2);
index 34a966a47a224d4f751a1eb754190f171dcf6115..2148bc8244a70539e4a3a7011f5916b75881d239 100644 (file)
@@ -211,27 +211,14 @@ void brw_clip_emit_vue(struct brw_clip_compile *c,
                       GLuint header)
 {
    struct brw_compile *p = &c->func;
-   GLuint start = c->last_mrf;
 
    brw_clip_ff_sync(c);
 
    assert(!(allocate && eot));
-   
-   /* Cycle through mrf regs - probably futile as we have to wait for
-    * the allocation response anyway.  Also, the order this function
-    * is invoked doesn't correspond to the order the instructions will
-    * be executed, so it won't have any effect in many cases.
-    */
-#if 0
-   if (start + c->nr_regs + 1 >= MAX_MRF)
-      start = 0;
 
-   c->last_mrf = start + c->nr_regs + 1;
-#endif
-       
    /* Copy the vertex from vertn into m1..mN+1:
     */
-   brw_copy_from_indirect(p, brw_message_reg(start+1), vert, c->nr_regs);
+   brw_copy_from_indirect(p, brw_message_reg(1), vert, c->nr_regs);
 
    /* Overwrite PrimType and PrimStart in the message header, for
     * each vertex in turn:
@@ -247,7 +234,7 @@ void brw_clip_emit_vue(struct brw_clip_compile *c,
     */
    brw_urb_WRITE(p, 
                 allocate ? c->reg.R0 : retype(brw_null_reg(), BRW_REGISTER_TYPE_UD),
-                start,
+                0,
                 c->reg.R0,
                 allocate,
                 1,             /* used */
@@ -370,18 +357,13 @@ void brw_clip_ff_sync(struct brw_clip_compile *c)
         need_ff_sync = brw_IF(p, BRW_EXECUTE_1);
         {
             brw_OR(p, c->reg.ff_sync, c->reg.ff_sync, brw_imm_ud(0x1));
-            brw_ff_sync(p, 
-                    c->reg.R0,
-                    0,
-                    c->reg.R0,
-                    1, 
-                    1,         /* used */
-                    1,         /* msg length */
-                    1,         /* response length */
-                    0,         /* eot */
-                    1,         /* write compelete */
-                    0,         /* urb offset */
-                    BRW_URB_SWIZZLE_NONE);
+            brw_ff_sync(p,
+                       c->reg.R0,
+                       0,
+                       c->reg.R0,
+                       1, /* allocate */
+                       1, /* response length */
+                       0 /* eot */);
         }
         brw_ENDIF(p, need_ff_sync);
         brw_set_predicate_control(p, BRW_PREDICATE_NONE);
index 523a11aea332c00017e776798d3fd1774746d07a..dc4bd5802d4ccd126cc4a69552c3a9dc380726ac 100644 (file)
@@ -64,8 +64,6 @@ static void brwInitDriverFunctions( struct dd_function_table *functions )
    brwInitFragProgFuncs( functions );
    brwInitProgFuncs( functions );
    brw_init_queryobj_functions(functions);
-
-   functions->Viewport = intel_viewport;
 }
 
 GLboolean brwCreateContext( int api,
@@ -194,8 +192,6 @@ GLboolean brwCreateContext( int api,
    ctx->VertexProgram._MaintainTnlProgram = GL_TRUE;
    ctx->FragmentProgram._MaintainTexEnvProgram = GL_TRUE;
 
-   make_empty_list(&brw->query.active_head);
-
    brw_draw_init( brw );
 
    return GL_TRUE;
index 1f09651126b436518e7d4c7fb09c2d91c292d5a1..a97fcb0f4db8d84808be202940c81bf7f518c50a 100644 (file)
@@ -418,18 +418,12 @@ struct brw_vertex_info {
 struct brw_query_object {
    struct gl_query_object Base;
 
-   /** Doubly linked list of active query objects in the context. */
-   struct brw_query_object *prev, *next;
-
    /** Last query BO associated with this query. */
    dri_bo *bo;
    /** First index in bo with query data for this object. */
    int first_index;
    /** Last index in bo with query data for this object. */
    int last_index;
-
-   /* Total count of pixels from previous BOs */
-   unsigned int count;
 };
 
 
@@ -664,7 +658,7 @@ struct brw_context
    } cc;
 
    struct {
-      struct brw_query_object active_head;
+      struct brw_query_object *obj;
       dri_bo *bo;
       int index;
       GLboolean active;
@@ -726,7 +720,7 @@ void brw_upload_urb_fence(struct brw_context *brw);
 void brw_upload_cs_urb_state(struct brw_context *brw);
 
 /* brw_disasm.c */
-int brw_disasm (FILE *file, struct brw_instruction *inst);
+int brw_disasm (FILE *file, struct brw_instruction *inst, int gen);
 
 /*======================================================================
  * Inline conversion functions.  These are better-typed than the
index f26a13fc3c37aaaf19c21a2f23a35411b4f9851d..2d3556b80546cf4ae857840cd5ed0860c2edc4ba 100644 (file)
 #define CMD_BINDING_TABLE_PTRS        0x7801
 # define GEN6_BINDING_TABLE_MODIFY_VS  (1 << 8)
 # define GEN6_BINDING_TABLE_MODIFY_GS  (1 << 9)
-# define GEN6_BINDING_TABLE_MODIFY_PS  (1 << 10)
+# define GEN6_BINDING_TABLE_MODIFY_PS  (1 << 12)
 
 #define CMD_3D_SAMPLER_STATE_POINTERS                  0x7802 /* SNB+ */
 # define PS_SAMPLER_STATE_CHANGE                               (1 << 12)
index db3fc50a63b5e4ca43220d44690746550550047a..ff12daf497d296dbce6e8a00152de90446a12680 100644 (file)
@@ -323,6 +323,11 @@ char *math_precision[2] = {
     [1] = "partial_precision"
 };
 
+char *urb_opcode[2] = {
+    [0] = "urb_write",
+    [1] = "ff_sync",
+};
+
 char *urb_swizzle[4] = {
     [BRW_URB_SWIZZLE_NONE] = "",
     [BRW_URB_SWIZZLE_INTERLEAVE] = "interleave",
@@ -774,7 +779,7 @@ static int src1 (FILE *file, struct brw_instruction *inst)
     }
 }
 
-int brw_disasm (FILE *file, struct brw_instruction *inst)
+int brw_disasm (FILE *file, struct brw_instruction *inst, int gen)
 {
     int        err = 0;
     int space = 0;
@@ -829,12 +834,20 @@ int brw_disasm (FILE *file, struct brw_instruction *inst)
     }
 
     if (inst->header.opcode == BRW_OPCODE_SEND) {
+       int target;
+
+       if (gen >= 5)
+          target = inst->bits2.send_gen5.sfid;
+       else
+          target = inst->bits3.generic.msg_target;
+
        newline (file);
        pad (file, 16);
        space = 0;
        err |= control (file, "target function", target_function,
-                       inst->bits3.generic.msg_target, &space);
-       switch (inst->bits3.generic.msg_target) {
+                       target, &space);
+
+       switch (target) {
        case BRW_MESSAGE_TARGET_MATH:
            err |= control (file, "math function", math_function,
                            inst->bits3.math.function, &space);
@@ -864,8 +877,17 @@ int brw_disasm (FILE *file, struct brw_instruction *inst)
                    inst->bits3.dp_write.send_commit_msg);
            break;
        case BRW_MESSAGE_TARGET_URB:
-           format (file, " %d", inst->bits3.urb.offset);
+           if (gen >= 5) {
+               format (file, " %d", inst->bits3.urb_gen5.offset);
+           } else {
+               format (file, " %d", inst->bits3.urb.offset);
+           }
+
            space = 1;
+           if (gen >= 5) {
+               err |= control (file, "urb opcode", urb_opcode,
+                               inst->bits3.urb_gen5.opcode, &space);
+           }
            err |= control (file, "urb swizzle", urb_swizzle,
                            inst->bits3.urb.swizzle_control, &space);
            err |= control (file, "urb allocate", urb_allocate,
index e348d4686b1cbd41d0298e9de3d2577d3acc5923..fe633d3e2542e8f7a28a223bfc4a485f71fdfc58 100644 (file)
@@ -77,32 +77,41 @@ static const GLenum reduced_prim[GL_POLYGON+1] = {
  * programs be immune to the active primitive (ie. cope with all
  * possibilities).  That may not be realistic however.
  */
-static GLuint brw_set_prim(struct brw_context *brw, GLenum prim)
+static GLuint brw_set_prim(struct brw_context *brw,
+                          const struct _mesa_prim *prim)
 {
    GLcontext *ctx = &brw->intel.ctx;
+   GLenum mode = prim->mode;
 
    if (INTEL_DEBUG & DEBUG_PRIMS)
-      printf("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim));
-   
+      printf("PRIM: %s\n", _mesa_lookup_enum_by_nr(prim->mode));
+
    /* Slight optimization to avoid the GS program when not needed:
     */
-   if (prim == GL_QUAD_STRIP &&
+   if (mode == GL_QUAD_STRIP &&
        ctx->Light.ShadeModel != GL_FLAT &&
        ctx->Polygon.FrontMode == GL_FILL &&
        ctx->Polygon.BackMode == GL_FILL)
-      prim = GL_TRIANGLE_STRIP;
+      mode = GL_TRIANGLE_STRIP;
+
+   if (prim->mode == GL_QUADS && prim->count == 4 &&
+       ctx->Light.ShadeModel != GL_FLAT &&
+       ctx->Polygon.FrontMode == GL_FILL &&
+       ctx->Polygon.BackMode == GL_FILL) {
+      mode = GL_TRIANGLE_FAN;
+   }
 
-   if (prim != brw->primitive) {
-      brw->primitive = prim;
+   if (mode != brw->primitive) {
+      brw->primitive = mode;
       brw->state.dirty.brw |= BRW_NEW_PRIMITIVE;
 
-      if (reduced_prim[prim] != brw->intel.reduced_primitive) {
-        brw->intel.reduced_primitive = reduced_prim[prim];
+      if (reduced_prim[mode] != brw->intel.reduced_primitive) {
+        brw->intel.reduced_primitive = reduced_prim[mode];
         brw->state.dirty.brw |= BRW_NEW_REDUCED_PRIMITIVE;
       }
    }
 
-   return prim_to_hw_prim[prim];
+   return prim_to_hw_prim[mode];
 }
 
 
@@ -351,7 +360,7 @@ static GLboolean brw_try_draw_prims( GLcontext *ctx,
        */
       intel_batchbuffer_require_space(intel->batch, intel->batch->size / 4);
 
-      hw_prim = brw_set_prim(brw, prim[i].mode);
+      hw_prim = brw_set_prim(brw, &prim[i]);
 
       if (first_time || (brw->state.dirty.brw & BRW_NEW_PRIMITIVE)) {
         first_time = GL_FALSE;
index 8247faa36d8d082e891b91d57895ce3446433d58..9cbff24863d0adbd5192ac97b0d0745b93c1afc9 100644 (file)
@@ -59,7 +59,7 @@ static GLuint half_float_types[5] = {
    0,
    BRW_SURFACEFORMAT_R16_FLOAT,
    BRW_SURFACEFORMAT_R16G16_FLOAT,
-   0, /* can't seem to render this one */
+   BRW_SURFACEFORMAT_R16G16B16A16_FLOAT,
    BRW_SURFACEFORMAT_R16G16B16A16_FLOAT
 };
 
index 4f55158e8f38287a62672550aae44d27085a9e45..3a32ad26c12aa1f3b7181028796cdb5ff9d94544 100644 (file)
@@ -822,13 +822,8 @@ void brw_ff_sync(struct brw_compile *p,
                   GLuint msg_reg_nr,
                   struct brw_reg src0,
                   GLboolean allocate,
-                  GLboolean used,
-                  GLuint msg_length,
                   GLuint response_length,
-                  GLboolean eot,
-                  GLboolean writes_complete,
-                  GLuint offset,
-                  GLuint swizzle);
+                  GLboolean eot);
 
 void brw_fb_WRITE(struct brw_compile *p,
                   struct brw_reg dest,
index 785d382a009d8f7e772ba6106cf8a790e8bbe057..175899b026863c7d2c3913d2ae081d5671ed1441 100644 (file)
@@ -280,28 +280,23 @@ static void brw_set_math_message( struct brw_context *brw,
 }
 
 
-static void brw_set_ff_sync_message( struct brw_context *brw,
-                                struct brw_instruction *insn,
-                                GLboolean allocate,
-                                GLboolean used,
-                                GLuint msg_length,
-                                GLuint response_length,
-                                GLboolean end_of_thread,
-                                GLboolean complete,
-                                GLuint offset,
-                                GLuint swizzle_control )
+static void brw_set_ff_sync_message(struct brw_context *brw,
+                                   struct brw_instruction *insn,
+                                   GLboolean allocate,
+                                   GLuint response_length,
+                                   GLboolean end_of_thread)
 {
        brw_set_src1(insn, brw_imm_d(0));
 
-       insn->bits3.urb_gen5.opcode = 1;
-       insn->bits3.urb_gen5.offset = offset;
-       insn->bits3.urb_gen5.swizzle_control = swizzle_control;
+       insn->bits3.urb_gen5.opcode = 1; /* FF_SYNC */
+       insn->bits3.urb_gen5.offset = 0; /* Not used by FF_SYNC */
+       insn->bits3.urb_gen5.swizzle_control = 0; /* Not used by FF_SYNC */
        insn->bits3.urb_gen5.allocate = allocate;
-       insn->bits3.urb_gen5.used = used;
-       insn->bits3.urb_gen5.complete = complete;
+       insn->bits3.urb_gen5.used = 0; /* Not used by FF_SYNC */
+       insn->bits3.urb_gen5.complete = 0; /* Not used by FF_SYNC */
        insn->bits3.urb_gen5.header_present = 1;
-       insn->bits3.urb_gen5.response_length = response_length;
-       insn->bits3.urb_gen5.msg_length = msg_length;
+       insn->bits3.urb_gen5.response_length = response_length; /* may be 1 or 0 */
+       insn->bits3.urb_gen5.msg_length = 1;
        insn->bits3.urb_gen5.end_of_thread = end_of_thread;
        insn->bits2.send_gen5.sfid = BRW_MESSAGE_TARGET_URB;
        insn->bits2.send_gen5.end_of_thread = end_of_thread;
@@ -1451,18 +1446,11 @@ void brw_ff_sync(struct brw_compile *p,
                   GLuint msg_reg_nr,
                   struct brw_reg src0,
                   GLboolean allocate,
-                  GLboolean used,
-                  GLuint msg_length,
                   GLuint response_length,
-                  GLboolean eot,
-                  GLboolean writes_complete,
-                  GLuint offset,
-                  GLuint swizzle)
+                  GLboolean eot)
 {
    struct brw_instruction *insn = next_insn(p, BRW_OPCODE_SEND);
 
-   assert(msg_length < 16);
-
    brw_set_dest(insn, dest);
    brw_set_src0(insn, src0);
    brw_set_src1(insn, brw_imm_d(0));
@@ -1470,13 +1458,8 @@ void brw_ff_sync(struct brw_compile *p,
    insn->header.destreg__conditionalmod = msg_reg_nr;
 
    brw_set_ff_sync_message(p->brw,
-                      insn,
-                      allocate,
-                      used,
-                      msg_length,
-                      response_length, 
-                      eot, 
-                      writes_complete, 
-                      offset,
-                      swizzle);
+                          insn,
+                          allocate,
+                          response_length,
+                          eot);
 }
index 4b13494ecf901ac0ad1ca71f2b56ddafa8dbe60c..94d93f3aa65bca5a4eb962ee9de8262e94ee2e0a 100644 (file)
@@ -122,6 +122,16 @@ static void compile_gs_prog( struct brw_context *brw,
     */
    program = brw_get_program(&c.func, &program_size);
 
+    if (INTEL_DEBUG & DEBUG_GS) {
+       int i;
+
+      printf("gs:\n");
+      for (i = 0; i < program_size / sizeof(struct brw_instruction); i++)
+        brw_disasm(stdout, &((struct brw_instruction *)program)[i],
+                   intel->gen);
+      printf("\n");
+    }
+
    /* Upload
     */
    dri_bo_unreference(brw->gs.prog_bo);
@@ -163,6 +173,12 @@ static void populate_key( struct brw_context *brw,
    
    /* _NEW_LIGHT */
    key->pv_first = (ctx->Light.ProvokingVertex == GL_FIRST_VERTEX_CONVENTION);
+   if (key->primitive == GL_QUADS && ctx->Light.ShadeModel != GL_FLAT) {
+      /* Provide consistent primitive order with brw_set_prim's
+       * optimization of single quads to trifans.
+       */
+      key->pv_first = GL_TRUE;
+   }
 
    key->need_gs_prog = (key->hint_gs_always ||
                        brw->primitive == GL_QUADS ||
index dd7b057d62025046d0ea9e161a83653992059233..99a6f6be113aa935e2fc822528d27ed9ac85dbc5 100644 (file)
@@ -104,18 +104,13 @@ static void brw_gs_ff_sync(struct brw_gs_compile *c, int num_prim)
 {
        struct brw_compile *p = &c->func;
        brw_MOV(p, get_element_ud(c->reg.R0, 1), brw_imm_ud(num_prim));
-       brw_ff_sync(p, 
-                               c->reg.R0,
-                               0,
-                               c->reg.R0,
-                               1,      
-                               1,              /* used */
-                               1,      /* msg length */
-                               1,              /* response length */
-                               0,              /* eot */
-                               1,              /* write compelete */
-                               0,              /* urb offset */
-                               BRW_URB_SWIZZLE_NONE);
+       brw_ff_sync(p,
+                   c->reg.R0,
+                   0,
+                   c->reg.R0,
+                   1, /* allocate */
+                   1, /* response length */
+                   0 /* eot */);
 }
 
 
index 6cce7e50890b0af6ed1adbb7f79a3788b7f37d81..3f47a68049fd299d04bbe7db78e152c2c04b8de8 100644 (file)
@@ -38,7 +38,6 @@
  * required for handling queries, so that we can be sure that we won't
  * have to emit a batchbuffer without getting the ending PS_DEPTH_COUNT.
  */
-#include "main/simple_list.h"
 #include "main/imports.h"
 
 #include "brw_context.h"
@@ -105,7 +104,7 @@ brw_begin_query(GLcontext *ctx, struct gl_query_object *q)
    query->first_index = -1;
    query->last_index = -1;
 
-   insert_at_head(&brw->query.active_head, query);
+   brw->query.obj = query;
    intel->stats_wm++;
 }
 
@@ -131,7 +130,7 @@ brw_end_query(GLcontext *ctx, struct gl_query_object *q)
       brw->query.bo = NULL;
    }
 
-   remove_from_list(query);
+   brw->query.obj = NULL;
 
    intel->stats_wm--;
 }
@@ -161,7 +160,7 @@ brw_prepare_query_begin(struct brw_context *brw)
    struct intel_context *intel = &brw->intel;
 
    /* Skip if we're not doing any queries. */
-   if (is_empty_list(&brw->query.active_head))
+   if (!brw->query.obj)
       return;
 
    /* Get a new query BO if we're going to need it. */
@@ -182,10 +181,10 @@ void
 brw_emit_query_begin(struct brw_context *brw)
 {
    struct intel_context *intel = &brw->intel;
-   struct brw_query_object *query;
+   struct brw_query_object *query = brw->query.obj;
 
    /* Skip if we're not doing any queries, or we've emitted the start. */
-   if (brw->query.active || is_empty_list(&brw->query.active_head))
+   if (!query || brw->query.active)
       return;
 
    BEGIN_BATCH(4);
@@ -205,16 +204,14 @@ brw_emit_query_begin(struct brw_context *brw)
    OUT_BATCH(0);
    ADVANCE_BATCH();
 
-   foreach(query, &brw->query.active_head) {
-      if (query->bo != brw->query.bo) {
-        if (query->bo != NULL)
-           brw_queryobj_get_results(query);
-        dri_bo_reference(brw->query.bo);
-        query->bo = brw->query.bo;
-        query->first_index = brw->query.index;
-      }
-      query->last_index = brw->query.index;
+   if (query->bo != brw->query.bo) {
+      if (query->bo != NULL)
+        brw_queryobj_get_results(query);
+      dri_bo_reference(brw->query.bo);
+      query->bo = brw->query.bo;
+      query->first_index = brw->query.index;
    }
+   query->last_index = brw->query.index;
    brw->query.active = GL_TRUE;
 }
 
index 57d1c29ade11cd0f5608dc0417ac5f776396d833..b0dd1ff3afb5d670a10d6ec523bac48a208087c5 100644 (file)
@@ -46,6 +46,7 @@
 static void compile_sf_prog( struct brw_context *brw,
                             struct brw_sf_prog_key *key )
 {
+   struct intel_context *intel = &brw->intel;
    struct brw_sf_compile c;
    const GLuint *program;
    GLuint program_size;
@@ -107,6 +108,14 @@ static void compile_sf_prog( struct brw_context *brw,
     */
    program = brw_get_program(&c.func, &program_size);
 
+   if (INTEL_DEBUG & DEBUG_SF) {
+      printf("sf:\n");
+      for (i = 0; i < program_size / sizeof(struct brw_instruction); i++)
+        brw_disasm(stdout, &((struct brw_instruction *)program)[i],
+                   intel->gen);
+      printf("\n");
+   }
+
    /* Upload
     */
    dri_bo_unreference(brw->sf.prog_bo);
@@ -154,6 +163,7 @@ static void upload_sf_prog(struct brw_context *brw)
       break;
    }
 
+   /* _NEW_POINT */
    key.do_point_sprite = ctx->Point.PointSprite;
    if (key.do_point_sprite) {
       int i;
index 44b085e214b8654e0b37c2a24c259afa0508c0ca..57ffb2d89e029476a48735e715b58b4e115781d0 100644 (file)
@@ -48,6 +48,7 @@ static void do_vs_prog( struct brw_context *brw,
    const GLuint *program;
    struct brw_vs_compile c;
    int aux_size;
+   int i;
 
    memset(&c, 0, sizeof(c));
    memcpy(&c.key, key, sizeof(*key));
@@ -63,6 +64,17 @@ static void do_vs_prog( struct brw_context *brw,
       c.prog_data.inputs_read |= 1<<VERT_ATTRIB_EDGEFLAG;
    }
 
+   /* Put dummy slots into the VUE for the SF to put the replaced
+    * point sprite coords in.  We shouldn't need these dummy slots,
+    * which take up precious URB space, but it would mean that the SF
+    * doesn't get nice aligned pairs of input coords into output
+    * coords, which would be a pain to handle.
+    */
+   for (i = 0; i < 8; i++) {
+      if (c.key.point_coord_replace & (1 << i))
+        c.prog_data.outputs_written |= BITFIELD64_BIT(VERT_RESULT_TEX0 + i);
+   }
+
    if (0)
       _mesa_print_program(&c.vp->program.Base);
 
@@ -106,6 +118,7 @@ static void brw_upload_vs_prog(struct brw_context *brw)
    struct brw_vs_prog_key key;
    struct brw_vertex_program *vp = 
       (struct brw_vertex_program *)brw->vertex_program;
+   int i;
 
    memset(&key, 0, sizeof(key));
 
@@ -117,6 +130,14 @@ static void brw_upload_vs_prog(struct brw_context *brw)
    key.copy_edgeflag = (ctx->Polygon.FrontMode != GL_FILL ||
                        ctx->Polygon.BackMode != GL_FILL);
 
+   /* _NEW_POINT */
+   if (ctx->Point.PointSprite) {
+      for (i = 0; i < 8; i++) {
+        if (ctx->Point.CoordReplace[i])
+           key.point_coord_replace |= (1 << i);
+      }
+   }
+
    /* Make an early check for the key.
     */
    dri_bo_unreference(brw->vs.prog_bo);
@@ -135,7 +156,7 @@ static void brw_upload_vs_prog(struct brw_context *brw)
  */
 const struct brw_tracked_state brw_vs_prog = {
    .dirty = {
-      .mesa  = _NEW_TRANSFORM | _NEW_POLYGON,
+      .mesa  = _NEW_TRANSFORM | _NEW_POLYGON | _NEW_POINT,
       .brw   = BRW_NEW_VERTEX_PROGRAM,
       .cache = 0
    },
index 95e0501b1ebb3262bfb12936401aa56040b4b0cc..6493744f3eb486a17f2473c659a1dc7bfc95427c 100644 (file)
@@ -43,7 +43,7 @@ struct brw_vs_prog_key {
    GLuint program_string_id;
    GLuint nr_userclip:4;
    GLuint copy_edgeflag:1;
-   GLuint pad:26;
+   GLuint point_coord_replace:8;
 };
 
 
index dc6ab81c4acc3a7967c6d09358b744d290e47ef7..0b44deeb634f2beb37e21c92aa7de5c454f66b64 100644 (file)
@@ -1882,7 +1882,7 @@ void brw_vs_emit(struct brw_vs_compile *c )
 
       printf("vs-native:\n");
       for (i = 0; i < p->nr_insn; i++)
-        brw_disasm(stderr, &p->store[i]);
+        brw_disasm(stderr, &p->store[i], intel->gen);
       printf("\n");
    }
 }
index 375e7953912389ab580249d86295278ee2b7d284..323cfac8fa7851872a6888cf744775dd427c5f08 100644 (file)
@@ -1717,7 +1717,7 @@ void brw_wm_emit( struct brw_wm_compile *c )
 
       printf("wm-native:\n");
       for (i = 0; i < p->nr_insn; i++)
-        brw_disasm(stderr, &p->store[i]);
+        brw_disasm(stderr, &p->store[i], p->brw->intel.gen);
       printf("\n");
    }
 }
index 88b885cb94147bc981e4f66ffc471a1c943f3052..fe3c89b7212c82617c1ecb130540dab660c5a7c1 100644 (file)
@@ -2111,7 +2111,7 @@ static void brw_wm_emit_glsl(struct brw_context *brw, struct brw_wm_compile *c)
     if (INTEL_DEBUG & DEBUG_WM) {
       printf("wm-native:\n");
       for (i = 0; i < p->nr_insn; i++)
-        brw_disasm(stderr, &p->store[i]);
+        brw_disasm(stderr, &p->store[i], intel->gen);
       printf("\n");
     }
 }
index 9768b0deee77891b062ef3aae47377cce4a26b05..ca8e34483685dcf6992741371845ddaa23cffe48 100644 (file)
@@ -130,8 +130,7 @@ _intel_batchbuffer_flush(struct intel_batchbuffer *batch, const char *file,
    struct intel_context *intel = batch->intel;
    GLuint used = batch->ptr - batch->map;
 
-   if (!intel->using_dri2_swapbuffers &&
-       intel->first_post_swapbuffers_batch == NULL) {
+   if (intel->first_post_swapbuffers_batch == NULL) {
       intel->first_post_swapbuffers_batch = intel->batch->buf;
       drm_intel_bo_reference(intel->first_post_swapbuffers_batch);
    }
index 7d9f302dca6a2a33cb412a7276095ab90d870d0c..a590c799ad3a0b75315afd3db1f0e8e4c77f7ec1 100644 (file)
@@ -353,6 +353,9 @@ intelClearWithBlit(GLcontext *ctx, GLbitfield mask)
       OUT_BATCH(clear_val);
       ADVANCE_BATCH();
 
+      if (intel->always_flush_cache)
+        intel_batchbuffer_emit_mi_flush(intel->batch);
+
       if (buf == BUFFER_DEPTH || buf == BUFFER_STENCIL)
         mask &= ~(BUFFER_BIT_DEPTH | BUFFER_BIT_STENCIL);
       else
index 103aaf2b956198aa81ee4d144372623a82ab2b86..c38551bf952fb43ff27eef718333870e6c200b91 100644 (file)
@@ -277,7 +277,7 @@ intel_bufferobj_map(GLcontext * ctx,
 
    /* Flush any existing batchbuffer that might reference this data. */
    if (drm_intel_bo_references(intel->batch->buf, intel_obj->buffer))
-      intelFlush(ctx);
+      intel_flush(ctx);
 
    if (intel_obj->region)
       intel_bufferobj_cow(intel, intel_obj);
@@ -349,7 +349,7 @@ intel_bufferobj_map_range(GLcontext * ctx,
     */
    if (!(access & GL_MAP_UNSYNCHRONIZED_BIT) &&
        drm_intel_bo_references(intel->batch->buf, intel_obj->buffer))
-      intelFlush(ctx);
+      intel_flush(ctx);
 
    if (intel_obj->buffer == NULL) {
       obj->Pointer = NULL;
index 8ee9a292a1b593a87354414115f6878ae292b679..05d49986546727381de55163066e33bfc7343071 100644 (file)
@@ -177,6 +177,30 @@ intelGetString(GLcontext * ctx, GLenum name)
    }
 }
 
+static void
+intel_flush_front(GLcontext *ctx)
+{
+   struct intel_context *intel = intel_context(ctx);
+    __DRIcontext *driContext = intel->driContext;
+    __DRIscreen *const screen = intel->intelScreen->driScrnPriv;
+
+   if ((ctx->DrawBuffer->Name == 0) && intel->front_buffer_dirty) {
+      if (screen->dri2.loader &&
+          (screen->dri2.loader->base.version >= 2)
+         && (screen->dri2.loader->flushFrontBuffer != NULL) &&
+          driContext->driDrawablePriv &&
+         driContext->driDrawablePriv->loaderPrivate) {
+        (*screen->dri2.loader->flushFrontBuffer)(driContext->driDrawablePriv,
+                                                 driContext->driDrawablePriv->loaderPrivate);
+
+        /* We set the dirty bit in intel_prepare_render() if we're
+         * front buffer rendering once we get there.
+         */
+        intel->front_buffer_dirty = GL_FALSE;
+      }
+   }
+}
+
 static unsigned
 intel_bits_per_pixel(const struct intel_renderbuffer *rb)
 {
@@ -203,8 +227,10 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
     * real front buffer contents will get copied to the new fake front
     * buffer.
     */
-   if (intel->is_front_buffer_rendering)
-      intel_flush(&intel->ctx, GL_FALSE);
+   if (intel->is_front_buffer_rendering) {
+      intel_flush(&intel->ctx);
+      intel_flush_front(&intel->ctx);
+   }
 
    /* Set this up front, so that in case our buffers get invalidated
     * while we're getting new buffers, we don't clobber the stamp and
@@ -362,7 +388,7 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
        if (buffers[i].attachment == __DRI_BUFFER_DEPTH)
          depth_region = region;
 
-       intel_renderbuffer_set_region(rb, region);
+       intel_renderbuffer_set_region(intel, rb, region);
        intel_region_release(&region);
 
        if (buffers[i].attachment == __DRI_BUFFER_DEPTH_STENCIL) {
@@ -374,7 +400,7 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
                   continue;
 
             intel_region_reference(&stencil_region, region);
-            intel_renderbuffer_set_region(rb, stencil_region);
+            intel_renderbuffer_set_region(intel, rb, stencil_region);
             intel_region_release(&stencil_region);
          }
        }
@@ -383,6 +409,10 @@ intel_update_renderbuffers(__DRIcontext *context, __DRIdrawable *drawable)
    driUpdateFramebufferSize(&intel->ctx, drawable);
 }
 
+/**
+ * intel_prepare_render should be called anywhere that curent read/drawbuffer
+ * state is required.
+ */
 void
 intel_prepare_render(struct intel_context *intel)
 {
@@ -403,16 +433,47 @@ intel_prepare_render(struct intel_context *intel)
         intel_update_renderbuffers(driContext, drawable);
       driContext->dri2.read_stamp = drawable->dri2.stamp;
    }
+
+   /* If we're currently rendering to the front buffer, the rendering
+    * that will happen next will probably dirty the front buffer.  So
+    * mark it as dirty here.
+    */
+   if (intel->is_front_buffer_rendering)
+      intel->front_buffer_dirty = GL_TRUE;
+
+   /* Wait for the swapbuffers before the one we just emitted, so we
+    * don't get too many swaps outstanding for apps that are GPU-heavy
+    * but not CPU-heavy.
+    *
+    * We're using intelDRI2Flush (called from the loader before
+    * swapbuffer) and glFlush (for front buffer rendering) as the
+    * indicator that a frame is done and then throttle when we get
+    * here as we prepare to render the next frame.  At this point for
+    * round trips for swap/copy and getting new buffers are done and
+    * we'll spend less time waiting on the GPU.
+    *
+    * Unfortunately, we don't have a handle to the batch containing
+    * the swap, and getting our hands on that doesn't seem worth it,
+    * so we just us the first batch we emitted after the last swap.
+    */
+   if (intel->need_throttle && intel->first_post_swapbuffers_batch) {
+      drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch);
+      drm_intel_bo_unreference(intel->first_post_swapbuffers_batch);
+      intel->first_post_swapbuffers_batch = NULL;
+      intel->need_throttle = GL_FALSE;
+   }
 }
 
-void
+static void
 intel_viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
 {
     struct intel_context *intel = intel_context(ctx);
     __DRIcontext *driContext = intel->driContext;
 
-    if (!intel->using_dri2_swapbuffers &&
-       !intel->meta.internal_viewport_call && ctx->DrawBuffer->Name == 0) {
+    if (intel->saved_viewport)
+       intel->saved_viewport(ctx, x, y, w, h);
+
+    if (!intel->meta.internal_viewport_call && ctx->DrawBuffer->Name == 0) {
        dri2InvalidateDrawable(driContext->driDrawablePriv);
        dri2InvalidateDrawable(driContext->driReadablePriv);
     }
@@ -431,12 +492,12 @@ static const struct dri_debug_control debug_control[] = {
    { "buf",   DEBUG_BUFMGR},
    { "reg",   DEBUG_REGION},
    { "fbo",   DEBUG_FBO},
-   { "lock",  DEBUG_LOCK},
+   { "gs",    DEBUG_GS},
    { "sync",  DEBUG_SYNC},
    { "prim",  DEBUG_PRIMS },
    { "vert",  DEBUG_VERTS },
    { "dri",   DEBUG_DRI },
-   { "dma",   DEBUG_DMA },
+   { "sf",    DEBUG_SF },
    { "san",   DEBUG_SANITY },
    { "sleep", DEBUG_SLEEP },
    { "stats", DEBUG_STATS },
@@ -447,6 +508,7 @@ static const struct dri_debug_control debug_control[] = {
    { "glsl_force", DEBUG_GLSL_FORCE },
    { "urb",   DEBUG_URB },
    { "vs",    DEBUG_VS },
+   { "clip",  DEBUG_CLIP },
    { NULL,    0 }
 };
 
@@ -469,10 +531,9 @@ intelInvalidateState(GLcontext * ctx, GLuint new_state)
 }
 
 void
-intel_flush(GLcontext *ctx, GLboolean needs_mi_flush)
+intel_flush(GLcontext *ctx)
 {
    struct intel_context *intel = intel_context(ctx);
-    __DRIcontext *driContext = intel->driContext;
 
    if (intel->Fallback)
       _swrast_flush(ctx);
@@ -482,35 +543,6 @@ intel_flush(GLcontext *ctx, GLboolean needs_mi_flush)
 
    if (intel->batch->map != intel->batch->ptr)
       intel_batchbuffer_flush(intel->batch);
-
-   if ((ctx->DrawBuffer->Name == 0) && intel->front_buffer_dirty) {
-      __DRIscreen *const screen = intel->intelScreen->driScrnPriv;
-
-      if (screen->dri2.loader &&
-          (screen->dri2.loader->base.version >= 2)
-         && (screen->dri2.loader->flushFrontBuffer != NULL) &&
-          driContext->driDrawablePriv &&
-         driContext->driDrawablePriv->loaderPrivate) {
-        (*screen->dri2.loader->flushFrontBuffer)(driContext->driDrawablePriv,
-                                                 driContext->driDrawablePriv->loaderPrivate);
-
-        /* Only clear the dirty bit if front-buffer rendering is no longer
-         * enabled.  This is done so that the dirty bit can only be set in
-         * glDrawBuffer.  Otherwise the dirty bit would have to be set at
-         * each of N places that do rendering.  This has worse performances,
-         * but it is much easier to get correct.
-         */
-        if (!intel->is_front_buffer_rendering) {
-           intel->front_buffer_dirty = GL_FALSE;
-        }
-      }
-   }
-}
-
-void
-intelFlush(GLcontext * ctx)
-{
-   intel_flush(ctx, GL_FALSE);
 }
 
 static void
@@ -518,26 +550,9 @@ intel_glFlush(GLcontext *ctx)
 {
    struct intel_context *intel = intel_context(ctx);
 
-   intel_flush(ctx, GL_TRUE);
-
-   /* We're using glFlush as an indicator that a frame is done, which is
-    * what DRI2 does before calling SwapBuffers (and means we should catch
-    * people doing front-buffer rendering, as well)..
-    *
-    * Wait for the swapbuffers before the one we just emitted, so we don't
-    * get too many swaps outstanding for apps that are GPU-heavy but not
-    * CPU-heavy.
-    *
-    * Unfortunately, we don't have a handle to the batch containing the swap,
-    * and getting our hands on that doesn't seem worth it, so we just us the
-    * first batch we emitted after the last swap.
-    */
-   if (!intel->using_dri2_swapbuffers &&
-       intel->first_post_swapbuffers_batch != NULL) {
-      drm_intel_bo_wait_rendering(intel->first_post_swapbuffers_batch);
-      drm_intel_bo_unreference(intel->first_post_swapbuffers_batch);
-      intel->first_post_swapbuffers_batch = NULL;
-   }
+   intel_flush(ctx);
+   intel_flush_front(ctx);
+   intel->need_throttle = GL_TRUE;
 }
 
 void
@@ -546,7 +561,8 @@ intelFinish(GLcontext * ctx)
    struct gl_framebuffer *fb = ctx->DrawBuffer;
    int i;
 
-   intelFlush(ctx);
+   intel_flush(ctx);
+   intel_flush_front(ctx);
 
    for (i = 0; i < fb->_NumColorDrawBuffers; i++) {
        struct intel_renderbuffer *irb;
@@ -602,6 +618,12 @@ intelInitContext(struct intel_context *intel,
    if (intelScreen->bufmgr == NULL)
       return GL_FALSE;
 
+   /* Can't rely on invalidate events, fall back to glViewport hack */
+   if (!driContextPriv->driScreenPriv->dri2.useInvalidate) {
+      intel->saved_viewport = functions->Viewport;
+      functions->Viewport = intel_viewport;
+   }
+
    if (!_mesa_initialize_context_for_api(&intel->ctx, api, mesaVis, shareCtx,
                                         functions, (void *) intel)) {
       printf("%s: failed to init mesa context\n", __FUNCTION__);
@@ -886,6 +908,12 @@ intelMakeCurrent(__DRIcontext * driContextPriv,
       driContextPriv->dri2.read_stamp = driReadPriv->dri2.stamp - 1;
       intel_prepare_render(intel);
       _mesa_make_current(&intel->ctx, fb, readFb);
+
+      /* We do this in intel_prepare_render() too, but intel->ctx.DrawBuffer
+       * is NULL at that point.  We can't call _mesa_makecurrent()
+       * first, since we need the buffer size for the initial
+       * viewport.  So just call intel_draw_buffer() again here. */
+      intel_draw_buffer(&intel->ctx, intel->ctx.DrawBuffer);
    }
    else {
       _mesa_make_current(NULL, NULL, NULL);
index 02bb4d0d640aa46a294d99fec3646170697467b7..04d5fc92a251af35ac14dcefef0d1bf58dbcb038 100644 (file)
@@ -150,8 +150,8 @@ struct intel_context
 
    struct intel_batchbuffer *batch;
    drm_intel_bo *first_post_swapbuffers_batch;
+   GLboolean need_throttle;
    GLboolean no_batch_wrap;
-   GLboolean using_dri2_swapbuffers;
 
    struct
    {
@@ -243,6 +243,8 @@ struct intel_context
 
    __DRIcontext *driContext;
    struct intel_screen *intelScreen;
+   void (*saved_viewport)(GLcontext * ctx,
+                         GLint x, GLint y, GLsizei width, GLsizei height);
 
    /**
     * Configuration cache
@@ -324,12 +326,12 @@ extern int INTEL_DEBUG;
 #define DEBUG_BUFMGR    0x200
 #define DEBUG_REGION    0x400
 #define DEBUG_FBO       0x800
-#define DEBUG_LOCK      0x1000
+#define DEBUG_GS        0x1000
 #define DEBUG_SYNC     0x2000
 #define DEBUG_PRIMS    0x4000
 #define DEBUG_VERTS    0x8000
 #define DEBUG_DRI       0x10000
-#define DEBUG_DMA       0x20000
+#define DEBUG_SF        0x20000
 #define DEBUG_SANITY    0x40000
 #define DEBUG_SLEEP     0x80000
 #define DEBUG_STATS     0x100000
@@ -339,6 +341,7 @@ extern int INTEL_DEBUG;
 #define DEBUG_URB       0x1000000
 #define DEBUG_VS        0x2000000
 #define DEBUG_GLSL_FORCE 0x4000000
+#define DEBUG_CLIP      0x8000000
 
 #define DBG(...) do {                                          \
        if (INTEL_DEBUG & FILE_DEBUG_FLAG)                      \
@@ -371,8 +374,7 @@ extern GLboolean intelInitContext(struct intel_context *intel,
                                   struct dd_function_table *functions);
 
 extern void intelFinish(GLcontext * ctx);
-extern void intelFlush(GLcontext * ctx);
-extern void intel_flush(GLcontext * ctx, GLboolean needs_mi_flush);
+extern void intel_flush(GLcontext * ctx);
 
 extern void intelInitDriverFunctions(struct dd_function_table *functions);
 
@@ -447,9 +449,6 @@ extern int intel_translate_stencil_op(GLenum op);
 extern int intel_translate_blend_factor(GLenum factor);
 extern int intel_translate_logic_op(GLenum opcode);
 
-void intel_viewport(GLcontext * ctx, GLint x, GLint y,
-                   GLsizei width, GLsizei height);
-
 void intel_update_renderbuffers(__DRIcontext *context,
                                __DRIdrawable *drawable);
 void intel_prepare_render(struct intel_context *intel);
index 8278d12bb9002543a998988ea5201cfcd4cb86e4..217be7ef6cb2b01988972da8bf16a37bfa48fd13 100644 (file)
@@ -42,7 +42,9 @@
 #include "intel_fbo.h"
 #include "intel_mipmap_tree.h"
 #include "intel_regions.h"
-
+#ifndef I915
+#include "brw_state.h"
+#endif
 
 #define FILE_DEBUG_FLAG DEBUG_FBO
 
@@ -166,7 +168,7 @@ intel_alloc_renderbuffer_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
    rb->_BaseFormat = _mesa_base_fbo_format(ctx, internalFormat);
    cpp = _mesa_get_format_bytes(rb->Format);
 
-   intelFlush(ctx);
+   intel_flush(ctx);
 
    /* free old region */
    if (irb->region) {
@@ -280,7 +282,8 @@ intel_nop_alloc_storage(GLcontext * ctx, struct gl_renderbuffer *rb,
 
 
 void
-intel_renderbuffer_set_region(struct intel_renderbuffer *rb,
+intel_renderbuffer_set_region(struct intel_context *intel,
+                             struct intel_renderbuffer *rb,
                              struct intel_region *region)
 {
    struct intel_region *old;
@@ -288,6 +291,12 @@ intel_renderbuffer_set_region(struct intel_renderbuffer *rb,
    old = rb->region;
    rb->region = NULL;
    intel_region_reference(&rb->region, region);
+#ifndef I915
+   if (old) {
+      brw_state_cache_bo_delete(&brw_context(&intel->ctx)->surface_cache,
+                               old->buffer);
+   }
+#endif
    intel_region_release(&old);
 }
 
@@ -411,7 +420,7 @@ intel_framebuffer_renderbuffer(GLcontext * ctx,
 {
    DBG("Intel FramebufferRenderbuffer %u %u\n", fb->Name, rb ? rb->Name : 0);
 
-   intelFlush(ctx);
+   intel_flush(ctx);
 
    _mesa_framebuffer_renderbuffer(ctx, fb, attachment, rb);
    intel_draw_buffer(ctx, fb);
index 72413f7369445fe040f3b25f9b67b6d82675a496..028f657d12d48c5d9cf8d3a2e2095ea3a87a07bf 100644 (file)
@@ -82,7 +82,8 @@ intel_get_renderbuffer(struct gl_framebuffer *fb, int attIndex)
 
 
 extern void
-intel_renderbuffer_set_region(struct intel_renderbuffer *irb,
+intel_renderbuffer_set_region(struct intel_context *intel,
+                             struct intel_renderbuffer *irb,
                              struct intel_region *region);
 
 
index ef1966ea7e14c0136e87a1ec3bb59df08b38d7e0..71ef7a8e39b6d6b23ea9875239bb13c99ea27a1c 100644 (file)
@@ -116,17 +116,16 @@ intel_miptree_create(struct intel_context *intel,
                     GLboolean expect_accelerated_upload)
 {
    struct intel_mipmap_tree *mt;
-   uint32_t tiling;
+   uint32_t tiling = I915_TILING_NONE;
 
    if (intel->use_texture_tiling && compress_byte == 0) {
       if (intel->gen >= 4 &&
          (base_format == GL_DEPTH_COMPONENT ||
           base_format == GL_DEPTH_STENCIL_EXT))
         tiling = I915_TILING_Y;
-      else
+      else if (width0 >= 64)
         tiling = I915_TILING_X;
-   } else
-      tiling = I915_TILING_NONE;
+   }
 
    mt = intel_miptree_create_internal(intel, target, internal_format,
                                      first_level, last_level, width0,
index 56faf076c7e9d26d83cd9bf15486699657f713a6..2008a4c2becc46f25f965989b0e08c36bd73ccd0 100644 (file)
@@ -142,7 +142,7 @@ do_blit_copypixels(GLcontext * ctx,
    if (!src || !dst)
       return GL_FALSE;
 
-   intelFlush(&intel->ctx);
+   intel_flush(&intel->ctx);
 
    /* Clip to destination buffer. */
    orig_dstx = dstx;
index bd1dd13fb7d058f6961e7397a9a748290a25f1e7..a40b232fff88c52cfb3598392a967120fa1a38db 100644 (file)
@@ -167,7 +167,7 @@ intel_stencil_drawpixels(GLcontext * ctx,
    irb = intel_create_renderbuffer(MESA_FORMAT_ARGB8888);
    irb->Base.Width = depth_irb->Base.Width;
    irb->Base.Height = depth_irb->Base.Height;
-   intel_renderbuffer_set_region(irb, depth_irb->region);
+   intel_renderbuffer_set_region(intel, irb, depth_irb->region);
 
    /* Create a name for our renderbuffer, which lets us use other mesa
     * rb functions for convenience.
index 2ac3da7f42fae6f1e769c0d31d742884b380ca3e..21d2a7a93e2062ef03cdab7ec2595ca783ac7355 100644 (file)
@@ -170,11 +170,19 @@ intelReadPixels(GLcontext * ctx,
                 GLenum format, GLenum type,
                 const struct gl_pixelstore_attrib *pack, GLvoid * pixels)
 {
+   struct intel_context *intel = intel_context(ctx);
+   GLboolean dirty;
+
    if (INTEL_DEBUG & DEBUG_PIXEL)
       fprintf(stderr, "%s\n", __FUNCTION__);
 
-   intelFlush(ctx);
-   intel_prepare_render(intel_context(ctx));
+   intel_flush(ctx);
+
+   /* glReadPixels() wont dirty the front buffer, so reset the dirty
+    * flag after calling intel_prepare_render(). */
+   dirty = intel->front_buffer_dirty;
+   intel_prepare_render(intel);
+   intel->front_buffer_dirty = dirty;
 
    if (do_blit_readpixels
        (ctx, x, y, width, height, format, type, pack, pixels))
@@ -193,4 +201,7 @@ intelReadPixels(GLcontext * ctx,
       _mesa_update_state(ctx);
 
    _swrast_ReadPixels(ctx, x, y, width, height, format, type, pack, pixels);
+
+   /* There's an intel_prepare_render() call in intelSpanRenderStart(). */
+   intel->front_buffer_dirty = dirty;
 }
index 1172de90b1385776fd188274ea650d225df91c5d..8cdeaf608c8ac00be30a82b2734c4d097e670768 100644 (file)
@@ -111,7 +111,7 @@ debug_backtrace(void)
 GLubyte *
 intel_region_map(struct intel_context *intel, struct intel_region *region)
 {
-   intelFlush(&intel->ctx);
+   intel_flush(&intel->ctx);
 
    _DBG("%s %p\n", __FUNCTION__, region);
    if (!region->map_refcount++) {
index 3aed253e2407aa2a7b435ab4970386aec5bf7279..15a465c6402ae9b4bdb47a565251d554fd55e1fb 100644 (file)
@@ -110,23 +110,16 @@ intelDRI2Flush(__DRIdrawable *drawable)
    if (intel->gen < 4)
       INTEL_FIREVERTICES(intel);
 
+   intel->need_throttle = GL_TRUE;
+
    if (intel->batch->map != intel->batch->ptr)
       intel_batchbuffer_flush(intel->batch);
 }
 
-static void
-intelDRI2Invalidate(__DRIdrawable *drawable)
-{
-   struct intel_context *intel = drawable->driContextPriv->driverPrivate;
-
-   intel->using_dri2_swapbuffers = GL_TRUE;
-   dri2InvalidateDrawable(drawable);
-}
-
 static const struct __DRI2flushExtensionRec intelFlushExtension = {
     { __DRI2_FLUSH, __DRI2_FLUSH_VERSION },
     intelDRI2Flush,
-    intelDRI2Invalidate,
+    dri2InvalidateDrawable,
 };
 
 static __DRIimage *
index c1e15d1b0f299db27ff5d107f5cb23d72e5bfb13..059f76f289a3e754fdbd9cc68e5a255a18ce926e 100644 (file)
@@ -244,7 +244,7 @@ intelSpanRenderStart(GLcontext * ctx)
    struct intel_context *intel = intel_context(ctx);
    GLuint i;
 
-   intelFlush(&intel->ctx);
+   intel_flush(&intel->ctx);
    intel_prepare_render(intel);
 
    for (i = 0; i < ctx->Const.MaxTextureImageUnits; i++) {
index d67f0cb4a681bcef72cd005b3caa1db24429fe48..c2d86432ff9ca0cbd685c479f14a3414683f67a7 100644 (file)
@@ -77,7 +77,7 @@ intel_fence_sync(GLcontext *ctx, struct gl_sync_object *s,
    sync->bo = intel->batch->buf;
    drm_intel_bo_reference(sync->bo);
 
-   intelFlush(ctx);
+   intel_flush(ctx);
 }
 
 /* We ignore the user-supplied timeout.  This is weaselly -- we're allowed to
index 62e1e78f59be035ca2e3d9649a7e17f2aa4de8bc..549a4acc7d909d160581672f88a233a539db7b60 100644 (file)
@@ -108,7 +108,7 @@ do_copy_texsubimage(struct intel_context *intel,
       return GL_FALSE;
    }
 
-   /* intelFlush(ctx); */
+   /* intel_flush(ctx); */
    intel_prepare_render(intel);
    {
       drm_intel_bo *dst_bo = intel_region_buffer(intel,
index 7be5231eaef1ab5611be7c0d0e5b9e8e7e394e49..610a169beb2d7e7fb0c8838aafc0cbba3b6f0848 100644 (file)
@@ -1,7 +1,7 @@
 #include "intel_context.h"
 #include "intel_tex.h"
 #include "main/enums.h"
-
+#include "main/formats.h"
 
 /**
  * Choose hardware texture format given the user's glTexImage parameters.
@@ -208,22 +208,11 @@ intelChooseTextureFormat(GLcontext * ctx, GLint internalFormat,
 
 int intel_compressed_num_bytes(GLuint mesaFormat)
 {
-   int bytes = 0;
-   switch(mesaFormat) {
-     
-   case MESA_FORMAT_RGB_FXT1:
-   case MESA_FORMAT_RGBA_FXT1:
-   case MESA_FORMAT_RGB_DXT1:
-   case MESA_FORMAT_RGBA_DXT1:
-     bytes = 2;
-     break;
-     
-   case MESA_FORMAT_RGBA_DXT3:
-   case MESA_FORMAT_RGBA_DXT5:
-     bytes = 4;
-   default:
-     break;
-   }
-   
-   return bytes;
+   GLuint bw, bh;
+   GLuint block_size;
+
+   block_size = _mesa_get_format_bytes(mesaFormat);
+   _mesa_get_format_block_size(mesaFormat, &bw, &bh);
+
+   return block_size / bh;
 }
index 9db96acdc08d55bfb27e5db5c6f827618182c537..06bf2627049eabc12c9da4866354c69be33f62cb 100644 (file)
@@ -239,8 +239,8 @@ try_pbo_upload(struct intel_context *intel,
    dst_stride = intelImage->mt->region->pitch;
 
    if (drm_intel_bo_references(intel->batch->buf, dst_buffer))
-      intelFlush(&intel->ctx);
-   intel_prepare_render(intel);
+      intel_flush(&intel->ctx);
+
    {
       dri_bo *src_buffer = intel_bufferobj_buffer(intel, pbo, INTEL_READ);
 
@@ -473,14 +473,12 @@ intelTexImage(GLcontext * ctx,
                                           pixels, unpack, "glTexImage");
    }
 
-   intel_prepare_render(intel);
-
    if (intelImage->mt) {
       if (pixels != NULL) {
         /* Flush any queued rendering with the texture before mapping. */
         if (drm_intel_bo_references(intel->batch->buf,
                                     intelImage->mt->region->buffer)) {
-           intelFlush(ctx);
+           intel_flush(ctx);
         }
          texImage->Data = intel_miptree_image_map(intel,
                                                   intelImage->mt,
@@ -638,7 +636,7 @@ intel_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
     * make sure rendering is complete.
     * We could probably predicate this on texObj->_RenderToTexture
     */
-   intelFlush(ctx);
+   intel_flush(ctx);
 
    /* Map */
    if (intelImage->mt) {
@@ -728,7 +726,8 @@ intelSetTexBuffer2(__DRIcontext *pDRICtx, GLint target,
    if (!intelObj)
       return;
 
-   if (dPriv->lastStamp != dPriv->dri2.stamp)
+   if (dPriv->lastStamp != dPriv->dri2.stamp ||
+       !pDRICtx->driScreenPriv->dri2.useInvalidate)
       intel_update_renderbuffers(pDRICtx, dPriv);
 
    rb = intel_get_renderbuffer(fb, BUFFER_FRONT_LEFT);
index c35d2e875731ed130d9c96ca32aa3d3cee6016cd..4f5c26acf2735a88c85b286b9e04d23d4113d3d8 100644 (file)
@@ -59,7 +59,7 @@ intelTexSubimage(GLcontext * ctx,
        _mesa_lookup_enum_by_nr(target),
        level, xoffset, yoffset, width, height);
 
-   intelFlush(ctx);
+   intel_flush(ctx);
 
    if (compressed)
       pixels = _mesa_validate_pbo_compressed_teximage(ctx, imageSize,
index e432afc3d41eaf002f0c5a09fb334e09d295d8f4..34d22b45591117f00751ce53910e2d77f2104f59 100644 (file)
@@ -21,6 +21,7 @@ C_SOURCES = \
                radeon_dataflow.c \
                radeon_dataflow_deadcode.c \
                radeon_dataflow_swizzles.c \
+               radeon_optimize.c \
                r3xx_fragprog.c \
                r300_fragprog.c \
                r300_fragprog_swizzle.c \
index cfa48a59e3aadbd2d39b000c5f40dfe720b6e72f..5d5de2f1b2ab03186453fa346d3189b126574846 100644 (file)
@@ -56,7 +56,8 @@ static const struct swizzle_data native_swizzles[] = {
        {MAKE_SWZ3(Z, X, Y), R300_ALU_ARGC_SRC0C_ZXY, 1},
        {MAKE_SWZ3(W, Z, Y), R300_ALU_ARGC_SRC0CA_WZY, 1},
        {MAKE_SWZ3(ONE, ONE, ONE), R300_ALU_ARGC_ONE, 0},
-       {MAKE_SWZ3(ZERO, ZERO, ZERO), R300_ALU_ARGC_ZERO, 0}
+       {MAKE_SWZ3(ZERO, ZERO, ZERO), R300_ALU_ARGC_ZERO, 0},
+       {MAKE_SWZ3(HALF, HALF, HALF), R300_ALU_ARGC_HALF, 0}
 };
 
 static const int num_native_swizzles = sizeof(native_swizzles)/sizeof(native_swizzles[0]);
@@ -221,6 +222,7 @@ unsigned int r300FPTranslateAlphaSwizzle(unsigned int src, unsigned int swizzle)
        case RC_SWIZZLE_W: return R300_ALU_ARGA_SRC0A + src;
        case RC_SWIZZLE_ONE: return R300_ALU_ARGA_ONE;
        case RC_SWIZZLE_ZERO: return R300_ALU_ARGA_ZERO;
+       case RC_SWIZZLE_HALF: return R300_ALU_ARGA_HALF;
        default: return R300_ALU_ARGA_ONE;
        }
 }
index 25bf373b6fde682c7211785790f307c21eeec016..3e88ccbc46de9c8ef791d196bc22f2d302b8214a 100644 (file)
@@ -152,6 +152,10 @@ void r3xx_compile_fragment_program(struct r300_fragment_program_compiler* c)
 
        debug_program_log(c, "after deadcode");
 
+       rc_optimize(&c->Base);
+
+       debug_program_log(c, "after dataflow optimize");
+
        rc_dataflow_swizzles(&c->Base);
        if (c->Base.Error)
                return;
index 853b2becd1b6b63d070e109e21b4423fdb3f1592..0eab18c344da79271959f475262c48e114175ee3 100644 (file)
@@ -146,7 +146,7 @@ unsigned rc_constants_add_immediate_scalar(struct rc_constant_list * c, float da
                        unsigned comp;
                        for(comp = 0; comp < c->Constants[index].Size; ++comp) {
                                if (c->Constants[index].u.Immediate[comp] == data) {
-                                       *swizzle = RC_MAKE_SWIZZLE(comp, comp, comp, comp);
+                                       *swizzle = RC_MAKE_SWIZZLE_SMEAR(comp);
                                        return index;
                                }
                        }
@@ -159,7 +159,7 @@ unsigned rc_constants_add_immediate_scalar(struct rc_constant_list * c, float da
        if (free_index >= 0) {
                unsigned comp = c->Constants[free_index].Size++;
                c->Constants[free_index].u.Immediate[comp] = data;
-               *swizzle = RC_MAKE_SWIZZLE(comp, comp, comp, comp);
+               *swizzle = RC_MAKE_SWIZZLE_SMEAR(comp);
                return free_index;
        }
 
index 27274f07122d32b5985103d3ce387804e7ba4073..1979e7e4e49707f79c5549207dfe63acb82adb5a 100644 (file)
@@ -132,7 +132,7 @@ struct r300_fragment_program_external_state {
                 *  2 - GL_ALPHA
                 * depending on the depth texture mode.
                 */
-               unsigned depth_texture_mode : 2;
+               unsigned depth_texture_swizzle:12;
 
                /**
                 * If the sampler is used as a shadow sampler,
@@ -143,6 +143,12 @@ struct r300_fragment_program_external_state {
                 */
                unsigned texture_compare_func : 3;
 
+               /**
+                * No matter what the sampler type is,
+                * this field turns it into a shadow sampler.
+                */
+               unsigned compare_mode_enabled : 1;
+
                /**
                 * If the sampler needs to fake NPOT, this field is set.
                 */
index 16e2f3a218143ff19b97ee611c2509d7cc0c9424..0e6c62541fa46f39bee641fef2d965f745fbe290 100644 (file)
@@ -30,7 +30,7 @@
 #include "radeon_program.h"
 
 
-static void reads_normal(struct rc_instruction * fullinst, rc_read_write_fn cb, void * userdata)
+static void reads_normal(struct rc_instruction * fullinst, rc_read_write_chan_fn cb, void * userdata)
 {
        struct rc_sub_instruction * inst = &fullinst->U.I;
        const struct rc_opcode_info * opcode = rc_get_opcode_info(inst->Opcode);
@@ -46,18 +46,15 @@ static void reads_normal(struct rc_instruction * fullinst, rc_read_write_fn cb,
 
                refmask &= RC_MASK_XYZW;
 
-               for(unsigned int chan = 0; chan < 4; ++chan) {
-                       if (GET_BIT(refmask, chan)) {
-                               cb(userdata, fullinst, inst->SrcReg[src].File, inst->SrcReg[src].Index, chan);
-                       }
-               }
+               if (refmask)
+                       cb(userdata, fullinst, inst->SrcReg[src].File, inst->SrcReg[src].Index, refmask);
 
                if (refmask && inst->SrcReg[src].RelAddr)
                        cb(userdata, fullinst, RC_FILE_ADDRESS, 0, RC_MASK_X);
        }
 }
 
-static void reads_pair(struct rc_instruction * fullinst,  rc_read_write_fn cb, void * userdata)
+static void reads_pair(struct rc_instruction * fullinst,  rc_read_write_mask_fn cb, void * userdata)
 {
        struct rc_pair_instruction * inst = &fullinst->U.P;
        unsigned int refmasks[3] = { 0, 0, 0 };
@@ -84,27 +81,23 @@ static void reads_pair(struct rc_instruction * fullinst,  rc_read_write_fn cb, v
        }
 
        for(unsigned int src = 0; src < 3; ++src) {
-               if (inst->RGB.Src[src].Used) {
-                       for(unsigned int chan = 0; chan < 3; ++chan) {
-                               if (GET_BIT(refmasks[src], chan))
-                                       cb(userdata, fullinst, inst->RGB.Src[src].File, inst->RGB.Src[src].Index, chan);
-                       }
-               }
+               if (inst->RGB.Src[src].Used && (refmasks[src] & RC_MASK_XYZ))
+                       cb(userdata, fullinst, inst->RGB.Src[src].File, inst->RGB.Src[src].Index,
+                          refmasks[src] & RC_MASK_XYZ);
 
-               if (inst->Alpha.Src[src].Used) {
-                       if (GET_BIT(refmasks[src], 3))
-                               cb(userdata, fullinst, inst->Alpha.Src[src].File, inst->Alpha.Src[src].Index, 3);
-               }
+               if (inst->Alpha.Src[src].Used && (refmasks[src] & RC_MASK_W))
+                       cb(userdata, fullinst, inst->Alpha.Src[src].File, inst->Alpha.Src[src].Index, RC_MASK_W);
        }
 }
 
 /**
- * Calls a callback function for all sourced register channels.
+ * Calls a callback function for all register reads.
  *
- * This is conservative, i.e. channels may be called multiple times,
- * and the writemask of the instruction is not taken into account.
+ * This is conservative, i.e. if the same register is referenced multiple times,
+ * the callback may also be called multiple times.
+ * Also, the writemask of the instruction is not taken into account.
  */
-void rc_for_all_reads(struct rc_instruction * inst, rc_read_write_fn cb, void * userdata)
+void rc_for_all_reads_mask(struct rc_instruction * inst, rc_read_write_mask_fn cb, void * userdata)
 {
        if (inst->Type == RC_INSTRUCTION_NORMAL) {
                reads_normal(inst, cb, userdata);
@@ -115,44 +108,39 @@ void rc_for_all_reads(struct rc_instruction * inst, rc_read_write_fn cb, void *
 
 
 
-static void writes_normal(struct rc_instruction * fullinst, rc_read_write_fn cb, void * userdata)
+static void writes_normal(struct rc_instruction * fullinst, rc_read_write_mask_fn cb, void * userdata)
 {
        struct rc_sub_instruction * inst = &fullinst->U.I;
        const struct rc_opcode_info * opcode = rc_get_opcode_info(inst->Opcode);
 
-       if (opcode->HasDstReg) {
-               for(unsigned int chan = 0; chan < 4; ++chan) {
-                       if (GET_BIT(inst->DstReg.WriteMask, chan))
-                               cb(userdata, fullinst, inst->DstReg.File, inst->DstReg.Index, chan);
-               }
-       }
+       if (opcode->HasDstReg && inst->DstReg.WriteMask)
+               cb(userdata, fullinst, inst->DstReg.File, inst->DstReg.Index, inst->DstReg.WriteMask);
 
        if (inst->WriteALUResult)
-               cb(userdata, fullinst, RC_FILE_SPECIAL, RC_SPECIAL_ALU_RESULT, 0);
+               cb(userdata, fullinst, RC_FILE_SPECIAL, RC_SPECIAL_ALU_RESULT, RC_MASK_X);
 }
 
-static void writes_pair(struct rc_instruction * fullinst, rc_read_write_fn cb, void * userdata)
+static void writes_pair(struct rc_instruction * fullinst, rc_read_write_mask_fn cb, void * userdata)
 {
        struct rc_pair_instruction * inst = &fullinst->U.P;
 
-       for(unsigned int chan = 0; chan < 3; ++chan) {
-               if (GET_BIT(inst->RGB.WriteMask, chan))
-                       cb(userdata, fullinst, RC_FILE_TEMPORARY, inst->RGB.DestIndex, chan);
-       }
+       if (inst->RGB.WriteMask)
+               cb(userdata, fullinst, RC_FILE_TEMPORARY, inst->RGB.DestIndex, inst->RGB.WriteMask);
 
        if (inst->Alpha.WriteMask)
-               cb(userdata, fullinst, RC_FILE_TEMPORARY, inst->Alpha.DestIndex, 3);
+               cb(userdata, fullinst, RC_FILE_TEMPORARY, inst->Alpha.DestIndex, RC_MASK_W);
 
        if (inst->WriteALUResult)
-               cb(userdata, fullinst, RC_FILE_SPECIAL, RC_SPECIAL_ALU_RESULT, 0);
+               cb(userdata, fullinst, RC_FILE_SPECIAL, RC_SPECIAL_ALU_RESULT, RC_MASK_X);
 }
 
 /**
- * Calls a callback function for all written register channels.
+ * Calls a callback function for all register writes in the instruction,
+ * reporting writemasks to the callback function.
  *
  * \warning Does not report output registers for paired instructions!
  */
-void rc_for_all_writes(struct rc_instruction * inst, rc_read_write_fn cb, void * userdata)
+void rc_for_all_writes_mask(struct rc_instruction * inst, rc_read_write_mask_fn cb, void * userdata)
 {
        if (inst->Type == RC_INSTRUCTION_NORMAL) {
                writes_normal(inst, cb, userdata);
@@ -162,6 +150,48 @@ void rc_for_all_writes(struct rc_instruction * inst, rc_read_write_fn cb, void *
 }
 
 
+struct mask_to_chan_data {
+       void * UserData;
+       rc_read_write_chan_fn Fn;
+};
+
+static void mask_to_chan_cb(void * data, struct rc_instruction * inst,
+               rc_register_file file, unsigned int index, unsigned int mask)
+{
+       struct mask_to_chan_data * d = data;
+       for(unsigned int chan = 0; chan < 4; ++chan) {
+               if (GET_BIT(mask, chan))
+                       d->Fn(d->UserData, inst, file, index, chan);
+       }
+}
+
+/**
+ * Calls a callback function for all sourced register channels.
+ *
+ * This is conservative, i.e. channels may be called multiple times,
+ * and the writemask of the instruction is not taken into account.
+ */
+void rc_for_all_reads_chan(struct rc_instruction * inst, rc_read_write_chan_fn cb, void * userdata)
+{
+       struct mask_to_chan_data d;
+       d.UserData = userdata;
+       d.Fn = cb;
+       rc_for_all_reads_mask(inst, &mask_to_chan_cb, &d);
+}
+
+/**
+ * Calls a callback function for all written register channels.
+ *
+ * \warning Does not report output registers for paired instructions!
+ */
+void rc_for_all_writes_chan(struct rc_instruction * inst, rc_read_write_chan_fn cb, void * userdata)
+{
+       struct mask_to_chan_data d;
+       d.UserData = userdata;
+       d.Fn = cb;
+       rc_for_all_writes_mask(inst, &mask_to_chan_cb, &d);
+}
+
 static void remap_normal_instruction(struct rc_instruction * fullinst,
                rc_remap_register_fn cb, void * userdata)
 {
index 62cda20eea686c67ee251f9c6d397ef06e4dad6e..60a6e192a9f7371aebcd8f34b74883065e28f34b 100644 (file)
@@ -39,10 +39,15 @@ struct rc_swizzle_caps;
  * Help analyze and modify the register accesses of instructions.
  */
 /*@{*/
-typedef void (*rc_read_write_fn)(void * userdata, struct rc_instruction * inst,
+typedef void (*rc_read_write_chan_fn)(void * userdata, struct rc_instruction * inst,
                        rc_register_file file, unsigned int index, unsigned int chan);
-void rc_for_all_reads(struct rc_instruction * inst, rc_read_write_fn cb, void * userdata);
-void rc_for_all_writes(struct rc_instruction * inst, rc_read_write_fn cb, void * userdata);
+void rc_for_all_reads_chan(struct rc_instruction * inst, rc_read_write_chan_fn cb, void * userdata);
+void rc_for_all_writes_chan(struct rc_instruction * inst, rc_read_write_chan_fn cb, void * userdata);
+
+typedef void (*rc_read_write_mask_fn)(void * userdata, struct rc_instruction * inst,
+                       rc_register_file file, unsigned int index, unsigned int mask);
+void rc_for_all_reads_mask(struct rc_instruction * inst, rc_read_write_mask_fn cb, void * userdata);
+void rc_for_all_writes_mask(struct rc_instruction * inst, rc_read_write_mask_fn cb, void * userdata);
 
 typedef void (*rc_remap_register_fn)(void * userdata, struct rc_instruction * inst,
                        rc_register_file * pfile, unsigned int * pindex);
@@ -60,4 +65,6 @@ void rc_dataflow_deadcode(struct radeon_compiler * c, rc_dataflow_mark_outputs_f
 void rc_dataflow_swizzles(struct radeon_compiler * c);
 /*@}*/
 
+void rc_optimize(struct radeon_compiler * c);
+
 #endif /* RADEON_DATAFLOW_H */
index d889612f4f4eb244b8b20c47316f49af642daf1c..863654cf6850651262f5cbfe72f6842063d25b56 100644 (file)
@@ -150,7 +150,7 @@ static void allocate_and_insert_proxies(struct emulate_branch_state * s,
        sap.Proxies = proxies;
 
        for(struct rc_instruction * inst = begin; inst != end; inst = inst->Next) {
-               rc_for_all_writes(inst, scan_write, &sap);
+               rc_for_all_writes_mask(inst, scan_write, &sap);
                rc_remap_registers(inst, remap_proxy_function, &sap);
        }
 
diff --git a/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c b/src/mesa/drivers/dri/r300/compiler/radeon_optimize.c
new file mode 100644 (file)
index 0000000..21d7210
--- /dev/null
@@ -0,0 +1,446 @@
+/*
+ * Copyright (C) 2009 Nicolai Haehnle.
+ *
+ * All Rights Reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining
+ * a copy of this software and associated documentation files (the
+ * "Software"), to deal in the Software without restriction, including
+ * without limitation the rights to use, copy, modify, merge, publish,
+ * distribute, sublicense, and/or sell copies of the Software, and to
+ * permit persons to whom the Software is furnished to do so, subject to
+ * the following conditions:
+ *
+ * The above copyright notice and this permission notice (including the
+ * next paragraph) shall be included in all copies or substantial
+ * portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+ * IN NO EVENT SHALL THE COPYRIGHT OWNER(S) 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 "radeon_dataflow.h"
+
+#include "radeon_compiler.h"
+#include "radeon_swizzle.h"
+
+
+static struct rc_src_register chain_srcregs(struct rc_src_register outer, struct rc_src_register inner)
+{
+       struct rc_src_register combine;
+       combine.File = inner.File;
+       combine.Index = inner.Index;
+       combine.RelAddr = inner.RelAddr;
+       if (outer.Abs) {
+               combine.Abs = 1;
+               combine.Negate = outer.Negate;
+       } else {
+               combine.Abs = inner.Abs;
+               combine.Negate = 0;
+               for(unsigned int chan = 0; chan < 4; ++chan) {
+                       unsigned int swz = GET_SWZ(outer.Swizzle, chan);
+                       if (swz < 4)
+                               combine.Negate |= GET_BIT(inner.Negate, swz) << chan;
+               }
+               combine.Negate ^= outer.Negate;
+       }
+       combine.Swizzle = combine_swizzles(inner.Swizzle, outer.Swizzle);
+       return combine;
+}
+
+struct peephole_state {
+       struct radeon_compiler * C;
+       struct rc_instruction * Mov;
+       unsigned int Conflict:1;
+
+       /** Whether Mov's source has been clobbered */
+       unsigned int SourceClobbered:1;
+
+       /** Which components of Mov's destination register are still from that Mov? */
+       unsigned int MovMask:4;
+
+       /** Which components of Mov's destination register are clearly *not* from that Mov */
+       unsigned int DefinedMask:4;
+
+       /** Which components of Mov's source register are sourced */
+       unsigned int SourcedMask:4;
+
+       /** Branch depth beyond Mov; negative value indicates we left the Mov's block */
+       int BranchDepth;
+};
+
+static void peephole_scan_read(void * data, struct rc_instruction * inst,
+               rc_register_file file, unsigned int index, unsigned int mask)
+{
+       struct peephole_state * s = data;
+
+       if (file != RC_FILE_TEMPORARY || index != s->Mov->U.I.DstReg.Index)
+               return;
+
+       /* These instructions cannot read from the constants file.
+        * see radeonTransformTEX()
+        */
+       if(s->Mov->U.I.SrcReg[0].File != RC_FILE_TEMPORARY &&
+                       s->Mov->U.I.SrcReg[0].File != RC_FILE_INPUT &&
+                               (inst->U.I.Opcode == RC_OPCODE_TEX ||
+                               inst->U.I.Opcode == RC_OPCODE_TXB ||
+                               inst->U.I.Opcode == RC_OPCODE_TXP ||
+                               inst->U.I.Opcode == RC_OPCODE_KIL)){
+               s->Conflict = 1;
+               return;
+       }
+       if ((mask & s->MovMask) == mask) {
+               if (s->SourceClobbered) {
+                       s->Conflict = 1;
+               }
+       } else if ((mask & s->DefinedMask) == mask) {
+               /* read from something entirely written by other instruction: this is okay */
+       } else {
+               /* read from component combination that is not well-defined without
+                * the MOV: cannot remove it */
+               s->Conflict = 1;
+       }
+}
+
+static void peephole_scan_write(void * data, struct rc_instruction * inst,
+               rc_register_file file, unsigned int index, unsigned int mask)
+{
+       struct peephole_state * s = data;
+
+       if (s->BranchDepth < 0)
+               return;
+
+       if (file == s->Mov->U.I.DstReg.File && index == s->Mov->U.I.DstReg.Index) {
+               s->MovMask &= ~mask;
+               if (s->BranchDepth == 0)
+                       s->DefinedMask |= mask;
+               else
+                       s->DefinedMask &= ~mask;
+       }
+       if (file == s->Mov->U.I.SrcReg[0].File && index == s->Mov->U.I.SrcReg[0].Index) {
+               if (mask & s->SourcedMask)
+                       s->SourceClobbered = 1;
+       } else if (s->Mov->U.I.SrcReg[0].RelAddr && file == RC_FILE_ADDRESS) {
+               s->SourceClobbered = 1;
+       }
+}
+
+static void peephole(struct radeon_compiler * c, struct rc_instruction * inst_mov)
+{
+       struct peephole_state s;
+
+       if (inst_mov->U.I.DstReg.File != RC_FILE_TEMPORARY || inst_mov->U.I.WriteALUResult)
+               return;
+
+       memset(&s, 0, sizeof(s));
+       s.C = c;
+       s.Mov = inst_mov;
+       s.MovMask = inst_mov->U.I.DstReg.WriteMask;
+       s.DefinedMask = RC_MASK_XYZW & ~s.MovMask;
+
+       for(unsigned int chan = 0; chan < 4; ++chan) {
+               unsigned int swz = GET_SWZ(inst_mov->U.I.SrcReg[0].Swizzle, chan);
+               s.SourcedMask |= (1 << swz) & RC_MASK_XYZW;
+       }
+
+       /* 1st pass: Check whether all subsequent readers can be changed */
+       for(struct rc_instruction * inst = inst_mov->Next;
+           inst != &c->Program.Instructions;
+           inst = inst->Next) {
+               rc_for_all_reads_mask(inst, peephole_scan_read, &s);
+               rc_for_all_writes_mask(inst, peephole_scan_write, &s);
+               if (s.Conflict)
+                       return;
+
+               if (s.BranchDepth >= 0) {
+                       if (inst->U.I.Opcode == RC_OPCODE_IF) {
+                               s.BranchDepth++;
+                       } else if (inst->U.I.Opcode == RC_OPCODE_ENDIF) {
+                               s.BranchDepth--;
+                               if (s.BranchDepth < 0) {
+                                       s.DefinedMask &= ~s.MovMask;
+                                       s.MovMask = 0;
+                               }
+                       }
+               }
+       }
+
+       if (s.Conflict)
+               return;
+
+       /* 2nd pass: We can satisfy all readers, so switch them over all at once */
+       s.MovMask = inst_mov->U.I.DstReg.WriteMask;
+       s.BranchDepth = 0;
+
+       for(struct rc_instruction * inst = inst_mov->Next;
+           inst != &c->Program.Instructions;
+           inst = inst->Next) {
+               const struct rc_opcode_info * opcode = rc_get_opcode_info(inst->U.I.Opcode);
+
+               for(unsigned int src = 0; src < opcode->NumSrcRegs; ++src) {
+                       if (inst->U.I.SrcReg[src].File == RC_FILE_TEMPORARY &&
+                           inst->U.I.SrcReg[src].Index == s.Mov->U.I.DstReg.Index) {
+                               unsigned int refmask = 0;
+
+                               for(unsigned int chan = 0; chan < 4; ++chan) {
+                                       unsigned int swz = GET_SWZ(inst->U.I.SrcReg[src].Swizzle, chan);
+                                       refmask |= (1 << swz) & RC_MASK_XYZW;
+                               }
+
+                               if ((refmask & s.MovMask) == refmask)
+                                       inst->U.I.SrcReg[src] = chain_srcregs(inst->U.I.SrcReg[src], s.Mov->U.I.SrcReg[0]);
+                       }
+               }
+
+               if (opcode->HasDstReg) {
+                       if (inst->U.I.DstReg.File == RC_FILE_TEMPORARY &&
+                           inst->U.I.DstReg.Index == s.Mov->U.I.DstReg.Index) {
+                               s.MovMask &= ~inst->U.I.DstReg.WriteMask;
+                       }
+               }
+
+               if (s.BranchDepth >= 0) {
+                       if (inst->U.I.Opcode == RC_OPCODE_IF) {
+                               s.BranchDepth++;
+                       } else if (inst->U.I.Opcode == RC_OPCODE_ENDIF) {
+                               s.BranchDepth--;
+                               if (s.BranchDepth < 0)
+                                       break; /* no more readers after this point */
+                       }
+               }
+       }
+
+       /* Finally, remove the original MOV instruction */
+       rc_remove_instruction(inst_mov);
+}
+
+/**
+ * Check if a source register is actually always the same
+ * swizzle constant.
+ */
+static int is_src_uniform_constant(struct rc_src_register src,
+               rc_swizzle * pswz, unsigned int * pnegate)
+{
+       int have_used = 0;
+
+       if (src.File != RC_FILE_NONE) {
+               *pswz = 0;
+               return 0;
+       }
+
+       for(unsigned int chan = 0; chan < 4; ++chan) {
+               unsigned int swz = GET_SWZ(src.Swizzle, chan);
+               if (swz < 4) {
+                       *pswz = 0;
+                       return 0;
+               }
+               if (swz == RC_SWIZZLE_UNUSED)
+                       continue;
+
+               if (!have_used) {
+                       *pswz = swz;
+                       *pnegate = GET_BIT(src.Negate, chan);
+                       have_used = 1;
+               } else {
+                       if (swz != *pswz || *pnegate != GET_BIT(src.Negate, chan)) {
+                               *pswz = 0;
+                               return 0;
+                       }
+               }
+       }
+
+       return 1;
+}
+
+
+static void constant_folding_mad(struct rc_instruction * inst)
+{
+       rc_swizzle swz;
+       unsigned int negate;
+
+       if (is_src_uniform_constant(inst->U.I.SrcReg[2], &swz, &negate)) {
+               if (swz == RC_SWIZZLE_ZERO) {
+                       inst->U.I.Opcode = RC_OPCODE_MUL;
+                       return;
+               }
+       }
+
+       if (is_src_uniform_constant(inst->U.I.SrcReg[1], &swz, &negate)) {
+               if (swz == RC_SWIZZLE_ONE) {
+                       inst->U.I.Opcode = RC_OPCODE_ADD;
+                       if (negate)
+                               inst->U.I.SrcReg[0].Negate ^= RC_MASK_XYZW;
+                       inst->U.I.SrcReg[1] = inst->U.I.SrcReg[2];
+                       return;
+               } else if (swz == RC_SWIZZLE_ZERO) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       inst->U.I.SrcReg[0] = inst->U.I.SrcReg[2];
+                       return;
+               }
+       }
+
+       if (is_src_uniform_constant(inst->U.I.SrcReg[0], &swz, &negate)) {
+               if (swz == RC_SWIZZLE_ONE) {
+                       inst->U.I.Opcode = RC_OPCODE_ADD;
+                       if (negate)
+                               inst->U.I.SrcReg[1].Negate ^= RC_MASK_XYZW;
+                       inst->U.I.SrcReg[0] = inst->U.I.SrcReg[2];
+                       return;
+               } else if (swz == RC_SWIZZLE_ZERO) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       inst->U.I.SrcReg[0] = inst->U.I.SrcReg[2];
+                       return;
+               }
+       }
+}
+
+static void constant_folding_mul(struct rc_instruction * inst)
+{
+       rc_swizzle swz;
+       unsigned int negate;
+
+       if (is_src_uniform_constant(inst->U.I.SrcReg[0], &swz, &negate)) {
+               if (swz == RC_SWIZZLE_ONE) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       inst->U.I.SrcReg[0] = inst->U.I.SrcReg[1];
+                       if (negate)
+                               inst->U.I.SrcReg[0].Negate ^= RC_MASK_XYZW;
+                       return;
+               } else if (swz == RC_SWIZZLE_ZERO) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_0000;
+                       return;
+               }
+       }
+
+       if (is_src_uniform_constant(inst->U.I.SrcReg[1], &swz, &negate)) {
+               if (swz == RC_SWIZZLE_ONE) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       if (negate)
+                               inst->U.I.SrcReg[0].Negate ^= RC_MASK_XYZW;
+                       return;
+               } else if (swz == RC_SWIZZLE_ZERO) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       inst->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_0000;
+                       return;
+               }
+       }
+}
+
+static void constant_folding_add(struct rc_instruction * inst)
+{
+       rc_swizzle swz;
+       unsigned int negate;
+
+       if (is_src_uniform_constant(inst->U.I.SrcReg[0], &swz, &negate)) {
+               if (swz == RC_SWIZZLE_ZERO) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       inst->U.I.SrcReg[0] = inst->U.I.SrcReg[1];
+                       return;
+               }
+       }
+
+       if (is_src_uniform_constant(inst->U.I.SrcReg[1], &swz, &negate)) {
+               if (swz == RC_SWIZZLE_ZERO) {
+                       inst->U.I.Opcode = RC_OPCODE_MOV;
+                       return;
+               }
+       }
+}
+
+
+/**
+ * Replace 0.0, 1.0 and 0.5 immediate constants by their
+ * respective swizzles. Simplify instructions like ADD dst, src, 0;
+ */
+static void constant_folding(struct radeon_compiler * c, struct rc_instruction * inst)
+{
+       const struct rc_opcode_info * opcode = rc_get_opcode_info(inst->U.I.Opcode);
+
+       /* Replace 0.0, 1.0 and 0.5 immediates by their explicit swizzles */
+       for(unsigned int src = 0; src < opcode->NumSrcRegs; ++src) {
+               if (inst->U.I.SrcReg[src].File != RC_FILE_CONSTANT ||
+                   inst->U.I.SrcReg[src].RelAddr ||
+                   inst->U.I.SrcReg[src].Index >= c->Program.Constants.Count)
+                       continue;
+
+               struct rc_constant * constant =
+                       &c->Program.Constants.Constants[inst->U.I.SrcReg[src].Index];
+
+               if (constant->Type != RC_CONSTANT_IMMEDIATE)
+                       continue;
+
+               struct rc_src_register newsrc = inst->U.I.SrcReg[src];
+               int have_real_reference = 0;
+               for(unsigned int chan = 0; chan < 4; ++chan) {
+                       unsigned int swz = GET_SWZ(newsrc.Swizzle, chan);
+                       if (swz >= 4)
+                               continue;
+
+                       unsigned int newswz;
+                       float imm = constant->u.Immediate[swz];
+                       float baseimm = imm;
+                       if (imm < 0.0)
+                               baseimm = -baseimm;
+
+                       if (baseimm == 0.0) {
+                               newswz = RC_SWIZZLE_ZERO;
+                       } else if (baseimm == 1.0) {
+                               newswz = RC_SWIZZLE_ONE;
+                       } else if (baseimm == 0.5) {
+                               newswz = RC_SWIZZLE_HALF;
+                       } else {
+                               have_real_reference = 1;
+                               continue;
+                       }
+
+                       SET_SWZ(newsrc.Swizzle, chan, newswz);
+                       if (imm < 0.0 && !newsrc.Abs)
+                               newsrc.Negate ^= 1 << chan;
+               }
+
+               if (!have_real_reference) {
+                       newsrc.File = RC_FILE_NONE;
+                       newsrc.Index = 0;
+               }
+
+               /* don't make the swizzle worse */
+               if (!c->SwizzleCaps->IsNative(inst->U.I.Opcode, newsrc) &&
+                   c->SwizzleCaps->IsNative(inst->U.I.Opcode, inst->U.I.SrcReg[src]))
+                       continue;
+
+               inst->U.I.SrcReg[src] = newsrc;
+       }
+
+       /* Simplify instructions based on constants */
+       if (inst->U.I.Opcode == RC_OPCODE_MAD)
+               constant_folding_mad(inst);
+
+       /* note: MAD can simplify to MUL or ADD */
+       if (inst->U.I.Opcode == RC_OPCODE_MUL)
+               constant_folding_mul(inst);
+       else if (inst->U.I.Opcode == RC_OPCODE_ADD)
+               constant_folding_add(inst);
+}
+
+void rc_optimize(struct radeon_compiler * c)
+{
+       struct rc_instruction * inst = c->Program.Instructions.Next;
+       while(inst != &c->Program.Instructions) {
+               struct rc_instruction * cur = inst;
+               inst = inst->Next;
+
+               constant_folding(c, cur);
+
+               if (cur->U.I.Opcode == RC_OPCODE_MOV) {
+                       peephole(c, cur);
+                       /* cur may no longer be part of the program */
+               }
+       }
+}
index fdfee86701446721864be30df0b06ec561032ad7..8a912da461302f8da66753e58ff502b221d9a578 100644 (file)
@@ -159,7 +159,7 @@ static int try_add_live_intervals(struct regalloc_state * s,
 }
 
 static void scan_callback(void * data, struct rc_instruction * inst,
-               rc_register_file file, unsigned int index, unsigned int chan)
+               rc_register_file file, unsigned int index, unsigned int mask)
 {
        struct regalloc_state * s = data;
        struct register_info * reg;
@@ -191,8 +191,8 @@ static void compute_live_intervals(struct regalloc_state * s)
        for(struct rc_instruction * inst = s->C->Program.Instructions.Next;
            inst != &s->C->Program.Instructions;
            inst = inst->Next) {
-               rc_for_all_reads(inst, scan_callback, s);
-               rc_for_all_writes(inst, scan_callback, s);
+               rc_for_all_reads_mask(inst, scan_callback, s);
+               rc_for_all_writes_mask(inst, scan_callback, s);
        }
 }
 
index df67aafe02884e739f376e3e2e48ef1a9bd85770..a279549ff8940fdcaff9faf19aaa850c46901f05 100644 (file)
@@ -448,8 +448,8 @@ static void schedule_block(struct r300_fragment_program_compiler * c,
                 * counter-intuitive, to account for the case where an
                 * instruction writes to the same register as it reads
                 * from. */
-               rc_for_all_writes(inst, &scan_write, &s);
-               rc_for_all_reads(inst, &scan_read, &s);
+               rc_for_all_writes_chan(inst, &scan_write, &s);
+               rc_for_all_reads_chan(inst, &scan_read, &s);
 
                DBG("%i: Has %i dependencies\n", inst->IP, s.Current->NumDependencies);
 
index 05b874ba7cf7f41e36580a263348f533ca75b888..5ba2c29408cff013bc554c6f5218de5df0e734cc 100644 (file)
@@ -556,6 +556,29 @@ static void transform_r300_vertex_CMP(struct radeon_compiler* c,
        rc_remove_instruction(inst);
 }
 
+static void transform_r300_vertex_fix_LIT(struct radeon_compiler* c,
+       struct rc_instruction* inst)
+{
+       int tempreg = rc_find_free_temporary(c);
+       unsigned constant_swizzle;
+       int constant = rc_constants_add_immediate_scalar(&c->Program.Constants,
+                                                        0.0000000000000000001,
+                                                        &constant_swizzle);
+
+       /* MOV dst, src */
+       emit1(c, inst->Prev, RC_OPCODE_MOV, 0,
+               dstreg(RC_FILE_TEMPORARY, tempreg),
+               inst->U.I.SrcReg[0]);
+
+       /* MAX dst.z, src, 0.00...001 */
+       emit2(c, inst->Prev, RC_OPCODE_MAX, 0,
+               dstregtmpmask(tempreg, RC_MASK_Y),
+               srcreg(RC_FILE_TEMPORARY, tempreg),
+               srcregswz(RC_FILE_CONSTANT, constant, constant_swizzle));
+
+       inst->U.I.SrcReg[0] = srcreg(RC_FILE_TEMPORARY, tempreg);
+}
+
 /**
  * For use with radeonLocalTransform, this transforms non-native ALU
  * instructions of the r300 up to r500 vertex engine.
@@ -572,6 +595,7 @@ int r300_transform_vertex_alu(
        case RC_OPCODE_DP3: transform_DP3(c, inst); return 1;
        case RC_OPCODE_DPH: transform_DPH(c, inst); return 1;
        case RC_OPCODE_FLR: transform_FLR(c, inst); return 1;
+       case RC_OPCODE_LIT: transform_r300_vertex_fix_LIT(c, inst); return 1;
        case RC_OPCODE_LRP: transform_LRP(c, inst); return 1;
        case RC_OPCODE_SUB: transform_SUB(c, inst); return 1;
        case RC_OPCODE_SWZ: transform_SWZ(c, inst); return 1;
@@ -789,7 +813,7 @@ int radeonTransformDeriv(struct radeon_compiler* c,
        if (inst->U.I.Opcode != RC_OPCODE_DDX && inst->U.I.Opcode != RC_OPCODE_DDY)
                return 0;
 
-       inst->U.I.SrcReg[1].Swizzle = RC_MAKE_SWIZZLE(RC_SWIZZLE_ONE, RC_SWIZZLE_ONE, RC_SWIZZLE_ONE, RC_SWIZZLE_ONE);
+       inst->U.I.SrcReg[1].Swizzle = RC_SWIZZLE_1111;
        inst->U.I.SrcReg[1].Negate = RC_MASK_XYZW;
 
        return 1;
index 842012def02d9e998528f24e6afe58bc0b68a0d9..2ddf60b6774e53cb2629fe28515eeed49d7167f3 100644 (file)
@@ -115,6 +115,7 @@ typedef enum {
 
 #define RC_SWIZZLE_XYZW RC_MAKE_SWIZZLE(RC_SWIZZLE_X, RC_SWIZZLE_Y, RC_SWIZZLE_Z, RC_SWIZZLE_W)
 #define RC_SWIZZLE_XYZ0 RC_MAKE_SWIZZLE(RC_SWIZZLE_X, RC_SWIZZLE_Y, RC_SWIZZLE_Z, RC_SWIZZLE_ZERO)
+#define RC_SWIZZLE_XYZZ RC_MAKE_SWIZZLE(RC_SWIZZLE_X, RC_SWIZZLE_Y, RC_SWIZZLE_Z, RC_SWIZZLE_Z)
 #define RC_SWIZZLE_XXXX RC_MAKE_SWIZZLE_SMEAR(RC_SWIZZLE_X)
 #define RC_SWIZZLE_YYYY RC_MAKE_SWIZZLE_SMEAR(RC_SWIZZLE_Y)
 #define RC_SWIZZLE_ZZZZ RC_MAKE_SWIZZLE_SMEAR(RC_SWIZZLE_Z)
index b4ba0b3f870bba0faf3746cf80d45456ac97b0c5..8336e58d554502cfbe4637f706d55a0563bccba5 100644 (file)
@@ -97,7 +97,8 @@ int radeonTransformTEX(
 
        /* ARB_shadow & EXT_shadow_funcs */
        if (inst->U.I.Opcode != RC_OPCODE_KIL &&
-               c->Program.ShadowSamplers & (1 << inst->U.I.TexSrcUnit)) {
+               ((c->Program.ShadowSamplers & (1 << inst->U.I.TexSrcUnit)) ||
+                (compiler->state.unit[inst->U.I.TexSrcUnit].compare_mode_enabled))) {
                rc_compare_func comparefunc = compiler->state.unit[inst->U.I.TexSrcUnit].texture_compare_func;
 
                if (comparefunc == RC_COMPARE_FUNC_NEVER || comparefunc == RC_COMPARE_FUNC_ALWAYS) {
@@ -113,52 +114,75 @@ int radeonTransformTEX(
                        return 1;
                } else {
                        rc_compare_func comparefunc = compiler->state.unit[inst->U.I.TexSrcUnit].texture_compare_func;
-                       unsigned int depthmode = compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_mode;
-                       struct rc_instruction * inst_rcp = rc_insert_new_instruction(c, inst);
-                       struct rc_instruction * inst_mad = rc_insert_new_instruction(c, inst_rcp);
-                       struct rc_instruction * inst_cmp = rc_insert_new_instruction(c, inst_mad);
-                       int pass, fail;
-
-                       inst_rcp->U.I.Opcode = RC_OPCODE_RCP;
-                       inst_rcp->U.I.DstReg.File = RC_FILE_TEMPORARY;
-                       inst_rcp->U.I.DstReg.Index = rc_find_free_temporary(c);
-                       inst_rcp->U.I.DstReg.WriteMask = RC_MASK_W;
-                       inst_rcp->U.I.SrcReg[0] = inst->U.I.SrcReg[0];
-                       inst_rcp->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_WWWW;
-
-                       inst_cmp->U.I.DstReg = inst->U.I.DstReg;
+                       struct rc_instruction * inst_rcp = NULL;
+                       struct rc_instruction * inst_mad;
+                       struct rc_instruction * inst_cmp;
+                       unsigned tmp_texsample = rc_find_free_temporary(c);
+                       unsigned tmp_sum = rc_find_free_temporary(c);
+                       unsigned tmp_recip_w = 0;
+                       int pass, fail, tex;
+
+                       /* Save the output register. */
+                       struct rc_dst_register output_reg = inst->U.I.DstReg;
+
+                       /* Redirect TEX to a new temp. */
                        inst->U.I.DstReg.File = RC_FILE_TEMPORARY;
-                       inst->U.I.DstReg.Index = rc_find_free_temporary(c);
+                       inst->U.I.DstReg.Index = tmp_texsample;
                        inst->U.I.DstReg.WriteMask = RC_MASK_XYZW;
 
-                       inst_mad->U.I.Opcode = RC_OPCODE_MAD;
+                       if (inst->U.I.Opcode == RC_OPCODE_TXP) {
+                               tmp_recip_w = rc_find_free_temporary(c);
+
+                               /* Compute 1/W. */
+                               inst_rcp = rc_insert_new_instruction(c, inst);
+                               inst_rcp->U.I.Opcode = RC_OPCODE_RCP;
+                               inst_rcp->U.I.DstReg.File = RC_FILE_TEMPORARY;
+                               inst_rcp->U.I.DstReg.Index = tmp_recip_w;
+                               inst_rcp->U.I.DstReg.WriteMask = RC_MASK_W;
+                               inst_rcp->U.I.SrcReg[0] = inst->U.I.SrcReg[0];
+                               inst_rcp->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_WWWW;
+                       }
+
+                       /* Perspective-divide r by W (if it's TXP) and add the texture sample (see below). */
+                       inst_mad = rc_insert_new_instruction(c, inst_rcp ? inst_rcp : inst);
                        inst_mad->U.I.DstReg.File = RC_FILE_TEMPORARY;
-                       inst_mad->U.I.DstReg.Index = rc_find_free_temporary(c);
+                       inst_mad->U.I.DstReg.Index = tmp_sum;
                        inst_mad->U.I.SrcReg[0] = inst->U.I.SrcReg[0];
                        inst_mad->U.I.SrcReg[0].Swizzle = RC_SWIZZLE_ZZZZ;
-                       inst_mad->U.I.SrcReg[1].File = RC_FILE_TEMPORARY;
-                       inst_mad->U.I.SrcReg[1].Index = inst_rcp->U.I.DstReg.Index;
-                       inst_mad->U.I.SrcReg[1].Swizzle = RC_SWIZZLE_WWWW;
-                       inst_mad->U.I.SrcReg[2].File = RC_FILE_TEMPORARY;
-                       inst_mad->U.I.SrcReg[2].Index = inst->U.I.DstReg.Index;
-                       if (depthmode == 0) /* GL_LUMINANCE */
-                               inst_mad->U.I.SrcReg[2].Swizzle = RC_MAKE_SWIZZLE(RC_SWIZZLE_X, RC_SWIZZLE_Y, RC_SWIZZLE_Z, RC_SWIZZLE_Z);
-                       else if (depthmode == 2) /* GL_ALPHA */
-                               inst_mad->U.I.SrcReg[2].Swizzle = RC_SWIZZLE_WWWW;
-
-                       /* Recall that SrcReg[0] is tex, SrcReg[2] is r and:
-                        *   r  < tex  <=>      -tex+r < 0
-                        *   r >= tex  <=> not (-tex+r < 0 */
+                       if (inst->U.I.Opcode == RC_OPCODE_TXP) {
+                               inst_mad->U.I.Opcode = RC_OPCODE_MAD;
+                               inst_mad->U.I.SrcReg[1].File = RC_FILE_TEMPORARY;
+                               inst_mad->U.I.SrcReg[1].Index = tmp_recip_w;
+                               inst_mad->U.I.SrcReg[1].Swizzle = RC_SWIZZLE_WWWW;
+                               tex = 2;
+                       } else {
+                               inst_mad->U.I.Opcode = RC_OPCODE_ADD;
+                               tex = 1;
+                       }
+                       inst_mad->U.I.SrcReg[tex].File = RC_FILE_TEMPORARY;
+                       inst_mad->U.I.SrcReg[tex].Index = tmp_texsample;
+                       inst_mad->U.I.SrcReg[tex].Swizzle = compiler->state.unit[inst->U.I.TexSrcUnit].depth_texture_swizzle;
+
+                       /* Fake EQUAL/NOTEQUAL, it seems to pass some tests suprisingly. */
+                       if (comparefunc == RC_COMPARE_FUNC_EQUAL) {
+                               comparefunc = RC_COMPARE_FUNC_GEQUAL;
+                       } else if (comparefunc == RC_COMPARE_FUNC_NOTEQUAL) {
+                               comparefunc = RC_COMPARE_FUNC_LESS;
+                       }
+
+                       /* Recall that SrcReg[0] is r, SrcReg[tex] is tex and:
+                        *   LESS:    r  < tex  <=>      -tex+r < 0
+                        *   GEQUAL:  r >= tex  <=> not (-tex+r < 0)
+                        *   GREATER: r  > tex  <=>       tex-r < 0
+                        *   LEQUAL:  r <= tex  <=> not ( tex-r < 0)
+                        *
+                        * This negates either r or tex: */
                        if (comparefunc == RC_COMPARE_FUNC_LESS || comparefunc == RC_COMPARE_FUNC_GEQUAL)
-                               inst_mad->U.I.SrcReg[2].Negate = inst_mad->U.I.SrcReg[2].Negate ^ RC_MASK_XYZW;
+                               inst_mad->U.I.SrcReg[tex].Negate = inst_mad->U.I.SrcReg[tex].Negate ^ RC_MASK_XYZW;
                        else
                                inst_mad->U.I.SrcReg[0].Negate = inst_mad->U.I.SrcReg[0].Negate ^ RC_MASK_XYZW;
 
-                       inst_cmp->U.I.Opcode = RC_OPCODE_CMP;
-                       /* DstReg has been filled out above */
-                       inst_cmp->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
-                       inst_cmp->U.I.SrcReg[0].Index = inst_mad->U.I.DstReg.Index;
-
+                       /* This negates the whole expresion: */
                        if (comparefunc == RC_COMPARE_FUNC_LESS || comparefunc == RC_COMPARE_FUNC_GREATER) {
                                pass = 1;
                                fail = 2;
@@ -167,6 +191,11 @@ int radeonTransformTEX(
                                fail = 1;
                        }
 
+                       inst_cmp = rc_insert_new_instruction(c, inst_mad);
+                       inst_cmp->U.I.Opcode = RC_OPCODE_CMP;
+                       inst_cmp->U.I.DstReg = output_reg;
+                       inst_cmp->U.I.SrcReg[0].File = RC_FILE_TEMPORARY;
+                       inst_cmp->U.I.SrcReg[0].Index = tmp_sum;
                        inst_cmp->U.I.SrcReg[pass].File = RC_FILE_NONE;
                        inst_cmp->U.I.SrcReg[pass].Swizzle = RC_SWIZZLE_1111;
                        inst_cmp->U.I.SrcReg[fail] = shadow_ambient(compiler, inst->U.I.TexSrcUnit);
index 2b7c93a9575ddded61a0b0106fdb9b67ac9f0a8c..e678a42ca26d5d12a518a4072aebfdb3bf897f8f 100644 (file)
 #include "radeon_mesa_to_rc.h"
 
 
-static GLuint build_dtm(GLuint depthmode)
+static GLuint build_dts(GLuint depthmode)
 {
        switch(depthmode) {
        default:
-       case GL_LUMINANCE: return 0;
-       case GL_INTENSITY: return 1;
-       case GL_ALPHA: return 2;
+       case GL_LUMINANCE: return RC_SWIZZLE_XYZZ;
+       case GL_INTENSITY: return RC_SWIZZLE_XYZW;
+       case GL_ALPHA: return RC_SWIZZLE_WWWW;
        }
 }
 
@@ -78,7 +78,7 @@ static void build_state(
                if (fp->Base.ShadowSamplers & (1 << unit)) {
                        struct gl_texture_object* tex = r300->radeon.glCtx->Texture.Unit[unit]._Current;
 
-                       state->unit[unit].depth_texture_mode = build_dtm(tex->DepthMode);
+                       state->unit[unit].depth_texture_swizzle = build_dts(tex->DepthMode);
                        state->unit[unit].texture_compare_func = build_func(tex->CompareFunc);
                }
        }
index ee73f29a46ae942cc294dc9b26287e4fb8cb5b18..5120e1ac9e559bbdc5fd025867a6cb475f5f5c98 100644 (file)
@@ -11,10 +11,11 @@ OBJECTS = $(SOURCES:.c=.o)
 
 INCLUDE_DIRS = \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/mesa/main
 
-CORE_MESA = $(TOP)/src/mesa/libmesa.a $(TOP)/src/mesa/libglapi.a
+CORE_MESA = $(TOP)/src/mesa/libmesa.a $(TOP)/src/mapi/glapi/libglapi.a
 
 
 .c.o:
index 7dcf9a6541ae2bc4a37b9c696f629f5cbcf3d584..6da9f93f59a8616a2407ee7770149027915480c9 100644 (file)
@@ -11,11 +11,12 @@ OBJECTS = \
        glslcompiler.o \
        ../common/driverfuncs.o \
        ../../libmesa.a \
-       ../../libglapi.a
+       $(TOP)/src/mapi/glapi/libglapi.a
 
 INCLUDES = \
        -I$(TOP)/include \
        -I$(TOP)/include/GL/internal \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/mesa/main \
        -I$(TOP)/src/mesa/glapi \
index 9010bbd130a5ed10bf67e5f3b1b3c02d4c4860a7..ea49a89659058752364bb9d47a6cc0f1ab9ed594 100644 (file)
@@ -16,6 +16,7 @@ OBJECTS = $(SOURCES:.c=.o)
 
 INCLUDE_DIRS = \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/mesa/main
 
@@ -23,7 +24,7 @@ INCLUDE_DIRS = \
 ifeq ($(DRIVER_DIRS), osmesa)
 CORE_MESA = \
        $(TOP)/src/mesa/libmesa.a \
-       $(TOP)/src/mesa/libglapi.a \
+       $(TOP)/src/mapi/glapi/libglapi.a \
        $(TOP)/src/glsl/cl/libglslcl.a \
        $(TOP)/src/glsl/pp/libglslpp.a
 else
index e20507ae92fa578426e6ba58675e15da688ae428..ead405039776272ca5755d88c5b97c8ba20dea67 100644 (file)
@@ -1004,7 +1004,20 @@ new_osmesa_renderbuffer(GLcontext *ctx, GLenum format, GLenum type)
       rb->AllocStorage = osmesa_renderbuffer_storage;
 
       rb->InternalFormat = GL_RGBA;
-      rb->Format = MESA_FORMAT_RGBA8888;
+      switch (type) {
+      case GL_UNSIGNED_BYTE:
+         rb->Format = MESA_FORMAT_RGBA8888;
+         break;
+      case GL_UNSIGNED_SHORT:
+         rb->Format = MESA_FORMAT_RGBA_16;
+         break;
+      case GL_FLOAT:
+         rb->Format = MESA_FORMAT_RGBA_FLOAT32;
+         break;
+      default:
+         assert(0 && "Unexpected type in new_osmesa_renderbuffer()");
+         rb->Format = MESA_FORMAT_RGBA8888;
+      }
       rb->_BaseFormat = GL_RGBA;
       rb->DataType = type;
    }
@@ -1048,7 +1061,6 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
    struct dd_function_table functions;
    GLint rind, gind, bind, aind;
    GLint redBits = 0, greenBits = 0, blueBits = 0, alphaBits =0;
-   GLenum type = CHAN_TYPE;
 
    rind = gind = bind = aind = 0;
    if (format==OSMESA_RGBA) {
@@ -1167,11 +1179,9 @@ OSMesaCreateContextExt( GLenum format, GLint depthBits, GLint stencilBits,
          return NULL;
       }
 
-      /* create front color buffer in user-provided memory (no back buffer) */
-      osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, format, type);
-      _mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb);
-      assert(osmesa->rb->RefCount == 2);
-                        
+      /* Create depth/stencil/accum buffers.  We'll create the color
+       * buffer later in OSMesaMakeCurrent().
+       */
       _mesa_add_soft_renderbuffers(osmesa->gl_buffer,
                                    GL_FALSE, /* color */
                                    osmesa->gl_visual->haveDepthBuffer,
@@ -1308,11 +1318,23 @@ OSMesaMakeCurrent( OSMesaContext osmesa, void *buffer, GLenum type,
     */
    _glapi_check_multithread();
 
+
+   /* Create a front/left color buffer which wraps the user-provided buffer.
+    * There is no back color buffer.
+    * If the user tries to use a 8, 16 or 32-bit/channel buffer that
+    * doesn't match what Mesa was compiled for (CHAN_BITS) the
+    * _mesa_add_renderbuffer() function will create a "wrapper" renderbuffer
+    * that converts rendering from CHAN_BITS to the user-requested channel
+    * size.
+    */
+   osmesa->rb = new_osmesa_renderbuffer(&osmesa->mesa, osmesa->format, type);
+   _mesa_add_renderbuffer(osmesa->gl_buffer, BUFFER_FRONT_LEFT, osmesa->rb);
+   assert(osmesa->rb->RefCount == 2);
+
    /* Set renderbuffer fields.  Set width/height = 0 to force 
     * osmesa_renderbuffer_storage() being called by _mesa_resize_framebuffer()
     */
    osmesa->rb->Data = buffer;
-   osmesa->rb->DataType = type;
    osmesa->rb->Width = osmesa->rb->Height = 0;
 
    /* Set the framebuffer's size.  This causes the
index 5e427d2d5c6013dbfd1e0b4cd923bbd616a0e952..b5b0c1f11a872af629996f1ac23a3e59accd0254 100644 (file)
@@ -40,11 +40,12 @@ OBJECTS = $(SOURCES:.c=.o)
 
 INCLUDE_DIRS = \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/mesa \
        -I$(TOP)/src/mesa/main \
        $(X11_INCLUDES)
 
-CORE_MESA = $(TOP)/src/mesa/libmesa.a $(TOP)/src/mesa/libglapi.a
+CORE_MESA = $(TOP)/src/mesa/libmesa.a $(TOP)/src/mapi/glapi/libglapi.a
 
 
 
index a1723fa37b199b7fa6b7188dd36adf7d19758ab1..dac1668cfe11f5a92987f85296acf43f0c5dc82f 100644 (file)
@@ -210,7 +210,7 @@ gamma_adjust( GLfloat gamma, GLint value, GLint max )
    }
    else {
       double x = (double) value / (double) max;
-      return IROUND_POS((GLfloat) max * _mesa_pow(x, 1.0F/gamma));
+      return IROUND_POS((GLfloat) max * pow(x, 1.0F/gamma));
    }
 }
 
@@ -846,19 +846,19 @@ setup_8bit_hpcr(XMesaVisual v)
 
    g = 1.0 / v->RedGamma;
    for (i=0; i<256; i++) {
-      GLint red = IROUND_POS(255.0 * _mesa_pow( hpcr_rgbTbl[0][i]/255.0, g ));
+      GLint red = IROUND_POS(255.0 * pow( hpcr_rgbTbl[0][i]/255.0, g ));
       v->hpcr_rgbTbl[0][i] = CLAMP( red, 16, 239 );
    }
 
    g = 1.0 / v->GreenGamma;
    for (i=0; i<256; i++) {
-      GLint green = IROUND_POS(255.0 * _mesa_pow( hpcr_rgbTbl[1][i]/255.0, g ));
+      GLint green = IROUND_POS(255.0 * pow( hpcr_rgbTbl[1][i]/255.0, g ));
       v->hpcr_rgbTbl[1][i] = CLAMP( green, 16, 239 );
    }
 
    g = 1.0 / v->BlueGamma;
    for (i=0; i<256; i++) {
-      GLint blue = IROUND_POS(255.0 * _mesa_pow( hpcr_rgbTbl[2][i]/255.0, g ));
+      GLint blue = IROUND_POS(255.0 * pow( hpcr_rgbTbl[2][i]/255.0, g ));
       v->hpcr_rgbTbl[2][i] = CLAMP( blue, 32, 223 );
    }
    v->undithered_pf = PF_HPCR;  /* can't really disable dithering for now */
diff --git a/src/mesa/es/.gitignore b/src/mesa/es/.gitignore
deleted file mode 100644 (file)
index 7643e9f..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-glapi/glapi-es*
-glapi/glapi-stamp
-main/get_es*.c
-main/api_exec_es*.c
-objs-es*
diff --git a/src/mesa/es/Makefile b/src/mesa/es/Makefile
deleted file mode 100644 (file)
index 5498b08..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-# src/mesa/es/Makefile
-#
-TOP := ../../..
-MESA := ..
-
-include $(TOP)/configs/current
-include sources.mak
-
-ES1_LIBS := libes1gallium.a libes1api.a
-ES2_LIBS := libes2gallium.a libes2api.a
-
-# Default rule: create ES1 and ES2 libs
-.PHONY: default es1 es2
-default: depend es1 es2
-
-es1: $(ES1_LIBS)
-       @rm -f subdirs-stamp-tmp
-
-es2: $(ES2_LIBS)
-       @rm -f subdirs-stamp-tmp
-
-ES1_CPPFLAGS := -DFEATURE_ES1=1 -D__GL_EXPORTS
-ES2_CPPFLAGS := -DFEATURE_ES2=1 -D__GL_EXPORTS
-
-ES1_OBJ_DIR := objs-es1
-ES2_OBJ_DIR := objs-es2
-
-# adjust output dirs
-ES1_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(ES1_OBJECTS))
-ES1_GALLIUM_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(ES1_GALLIUM_OBJECTS))
-ES1_API_OBJECTS := $(addprefix $(ES1_OBJ_DIR)/, $(ES1_API_OBJECTS))
-
-ES2_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(ES2_OBJECTS))
-ES2_GALLIUM_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(ES2_GALLIUM_OBJECTS))
-ES2_API_OBJECTS := $(addprefix $(ES2_OBJ_DIR)/, $(ES2_API_OBJECTS))
-
-# compile either ES1 or ES2 sources
-define es-compile
-       @mkdir -p $(dir $@)
-       $(CC) -c $(CFLAGS) $(ES$(1)_CPPFLAGS) $(ES$(1)_INCLUDES) -o $@ $<
-endef
-
-$(ES1_OBJ_DIR)/%.o: %.c
-       $(call es-compile,1)
-
-$(ES1_OBJ_DIR)/%.o: %.S
-       $(call es-compile,1)
-
-$(ES1_OBJ_DIR)/%.o: $(MESA)/%.c
-       $(call es-compile,1)
-
-$(ES1_OBJ_DIR)/%.o: $(MESA)/%.S
-       $(call es-compile,1)
-
-$(ES2_OBJ_DIR)/%.o: %.c
-       $(call es-compile,2)
-
-$(ES2_OBJ_DIR)/%.o: %.S
-       $(call es-compile,2)
-
-$(ES2_OBJ_DIR)/%.o: $(MESA)/%.c
-       $(call es-compile,2)
-
-$(ES2_OBJ_DIR)/%.o: $(MESA)/%.S
-       $(call es-compile,2)
-
-libes1.a: $(ES1_OBJECTS) $(GLSL_LIBS)
-       @$(MKLIB) -o es1 -static $(ES1_OBJECTS) $(GLSL_LIBS)
-
-libes2.a: $(ES2_OBJECTS) $(GLSL_LIBS)
-       @$(MKLIB) -o es2 -static $(ES1_OBJECTS) $(GLSL_LIBS)
-
-libes1gallium.a: $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS)
-       @$(MKLIB) -o es1gallium -static $(ES1_GALLIUM_OBJECTS) $(GLSL_LIBS)
-
-libes2gallium.a: $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS)
-       @$(MKLIB) -o es2gallium -static $(ES2_GALLIUM_OBJECTS) $(GLSL_LIBS)
-
-libes1api.a: $(ES1_API_OBJECTS)
-       @$(MKLIB) -o es1api -static $(ES1_API_OBJECTS)
-
-libes2api.a: $(ES2_API_OBJECTS)
-       @$(MKLIB) -o es2api -static $(ES2_API_OBJECTS)
-
-.PHONY: clean
-clean:
-       -rm -f $(ES1_LIBS) $(ES2_LIBS)
-       -rm -rf $(ES1_OBJ_DIR) $(ES2_OBJ_DIR)
-       -rm -f $(GENERATED_SOURCES)
-       -rm -f depend depend.bak
-       -rm -f subdirs-stamp-tmp
-       @$(MAKE) -C glapi clean
-
-# nothing to install
-install:
-
-subdirs-stamp-tmp:
-       @$(MAKE) -C $(MESA) asm_subdirs
-       @$(MAKE) -C $(MESA) glsl_builtin
-       @$(MAKE) -C glapi
-       @touch subdirs-stamp-tmp
-
-# sort to avoid duplicates
-ALL_SOURCES := $(sort $(ES1_ALL_SOURCES) $(ES2_ALL_SOURCES))
-
-# need to make sure the subdirs are processed first
-$(ALL_SOURCES): | subdirs-stamp-tmp
-
-depend: $(ALL_SOURCES)
-       @echo "running $(MKDEP)"
-       @touch depend
-       @# MESA is "..", but luckily, directories are longer than 2 characters
-       @$(MKDEP) -f- -p$(ES1_OBJ_DIR)/ $(DEFINES) $(ES1_CFLAGS) \
-               $(ES1_INCLUDES) $(ES1_ALL_SOURCES) 2>/dev/null | \
-               sed -e 's,^$(ES1_OBJ_DIR)/$(MESA)/,$(ES1_OBJ_DIR)/,' > depend
-       @$(MKDEP) -f- -p$(ES2_OBJ_DIR)/ $(DEFINES) $(ES2_CFLAGS) \
-               $(ES2_INCLUDES) $(ES2_ALL_SOURCES) 2>/dev/null | \
-               sed -e 's,^$(ES2_OBJ_DIR)/$(MESA)/,$(ES2_OBJ_DIR)/,' >> depend
-
-ifneq ($(MAKECMDGOALS),clean)
--include depend
-endif
diff --git a/src/mesa/es/glapi/Makefile b/src/mesa/es/glapi/Makefile
deleted file mode 100644 (file)
index fea5559..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-TOP = ../../../..
-GLAPI = ../../glapi/gen
-include $(TOP)/configs/current
-
-OUTPUTS :=                     \
-       glapi/glapidispatch.h   \
-       glapi/glapioffsets.h    \
-       glapi/glapitable.h      \
-       glapi/glapitemp.h       \
-       glapi/glprocs.h         \
-       sparc/glapi_sparc.S     \
-       x86-64/glapi_x86-64.S   \
-       x86/glapi_x86.S         \
-       main/remap_helper.h
-
-COMMON = gl_XML.py glX_XML.py license.py typeexpr.py
-COMMON := $(addprefix $(GLAPI)/, $(COMMON))
-
-ES1_APIXML := es1_API.xml
-ES2_APIXML := es2_API.xml
-ES1_OUTPUT_DIR := glapi-es1
-ES2_OUTPUT_DIR := glapi-es2
-
-ES1_DEPS = $(ES1_APIXML) base1_API.xml es1_EXT.xml es_EXT.xml \
-          es1_COMPAT.xml es_COMPAT.xml
-ES2_DEPS = $(ES2_APIXML) base2_API.xml es2_EXT.xml es_EXT.xml \
-          es2_COMPAT.xml es_COMPAT.xml
-
-ES1_OUTPUTS := $(addprefix $(ES1_OUTPUT_DIR)/, $(OUTPUTS))
-ES2_OUTPUTS := $(addprefix $(ES2_OUTPUT_DIR)/, $(OUTPUTS))
-
-all: es1 es2
-
-es1: $(ES1_OUTPUTS)
-es2: $(ES2_OUTPUTS)
-
-$(ES1_OUTPUTS): APIXML := $(ES1_APIXML)
-$(ES2_OUTPUTS): APIXML := $(ES2_APIXML)
-$(ES1_OUTPUTS): $(ES1_DEPS)
-$(ES2_OUTPUTS): $(ES2_DEPS)
-
-define gen-glapi
-       @mkdir -p $(dir $@)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -f $(APIXML) $(1) > $@
-endef
-
-%/glapidispatch.h: $(GLAPI)/gl_table.py $(COMMON)
-       $(call gen-glapi,-c -m remap_table)
-
-%/glapioffsets.h: $(GLAPI)/gl_offsets.py $(COMMON)
-       $(call gen-glapi,-c)
-
-%/glapitable.h: $(GLAPI)/gl_table.py $(COMMON)
-       $(call gen-glapi,-c)
-
-%/glapitemp.h: $(GLAPI)/gl_apitemp.py $(COMMON)
-       $(call gen-glapi,-c)
-
-%/glprocs.h: $(GLAPI)/gl_procs.py $(COMMON)
-       $(call gen-glapi,-c)
-
-%/sparc/glapi_sparc.S: $(GLAPI)/gl_SPARC_asm.py $(COMMON)
-       $(call gen-glapi)
-
-%/x86-64/glapi_x86-64.S: $(GLAPI)/gl_x86-64_asm.py $(COMMON)
-       $(call gen-glapi)
-
-%/x86/glapi_x86.S: $(GLAPI)/gl_x86_asm.py $(COMMON)
-       $(call gen-glapi)
-
-%/main/remap_helper.h: $(GLAPI)/remap_helper.py $(COMMON)
-       $(call gen-glapi)
-
-verify_xml:
-       @if [ ! -f gl.h ]; then \
-               echo "Please copy gl.h and gl2.h to this directory"; \
-               exit 1; \
-       fi
-       @echo "Verifying that es1_API.xml covers OpenGL ES 1.1..."
-       @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl.h > tmp.xml
-       @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es1_API.xml
-       @echo "Verifying that es2_API.xml covers OpenGL ES 2.0..."
-       @$(PYTHON2) $(PYTHON_FLAGS) gl_parse_header.py gl2.h > tmp.xml
-       @$(PYTHON2) $(PYTHON_FLAGS) gl_compare.py difference tmp.xml es2_API.xml
-       @rm -f tmp.xml
-
-clean:
-       -rm -rf $(ES1_OUTPUT_DIR) $(ES2_OUTPUT_DIR)
-       -rm -f *~ *.pyc *.pyo
diff --git a/src/mesa/es/glapi/base1_API.xml b/src/mesa/es/glapi/base1_API.xml
deleted file mode 100644 (file)
index 72e4128..0000000
+++ /dev/null
@@ -1,744 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<!-- OpenGL and OpenGL ES 1.x APIs
-     This file defines the base categories that can be shared by all APIs.
-     They are defined in an incremental fashion.
--->
-
-<OpenGLAPI>
-
-<!-- base subset of OpenGL 1.0 -->
-<category name="base1.0">
-    <enum name="FALSE"                                    value="0x0"/>
-    <enum name="TRUE"                                     value="0x1"/>
-    <enum name="ZERO"                                     value="0x0"/>
-    <enum name="ONE"                                      value="0x1"/>
-    <enum name="NO_ERROR"                                 value="0x0"/>
-
-    <enum name="POINTS"                                   value="0x0000"/>
-    <enum name="LINES"                                    value="0x0001"/>
-    <enum name="LINE_LOOP"                                value="0x0002"/>
-    <enum name="LINE_STRIP"                               value="0x0003"/>
-    <enum name="TRIANGLES"                                value="0x0004"/>
-    <enum name="TRIANGLE_STRIP"                           value="0x0005"/>
-    <enum name="TRIANGLE_FAN"                             value="0x0006"/>
-    <enum name="NEVER"                                    value="0x0200"/>
-    <enum name="LESS"                                     value="0x0201"/>
-    <enum name="EQUAL"                                    value="0x0202"/>
-    <enum name="LEQUAL"                                   value="0x0203"/>
-    <enum name="GREATER"                                  value="0x0204"/>
-    <enum name="NOTEQUAL"                                 value="0x0205"/>
-    <enum name="GEQUAL"                                   value="0x0206"/>
-    <enum name="ALWAYS"                                   value="0x0207"/>
-    <enum name="SRC_COLOR"                                value="0x0300"/>
-    <enum name="ONE_MINUS_SRC_COLOR"                      value="0x0301"/>
-    <enum name="SRC_ALPHA"                                value="0x0302"/>
-    <enum name="ONE_MINUS_SRC_ALPHA"                      value="0x0303"/>
-    <enum name="DST_ALPHA"                                value="0x0304"/>
-    <enum name="ONE_MINUS_DST_ALPHA"                      value="0x0305"/>
-    <enum name="DST_COLOR"                                value="0x0306"/>
-    <enum name="ONE_MINUS_DST_COLOR"                      value="0x0307"/>
-    <enum name="SRC_ALPHA_SATURATE"                       value="0x0308"/>
-    <enum name="FRONT"                                    value="0x0404"/>
-    <enum name="BACK"                                     value="0x0405"/>
-    <enum name="FRONT_AND_BACK"                           value="0x0408"/>
-    <enum name="INVALID_ENUM"                             value="0x0500"/>
-    <enum name="INVALID_VALUE"                            value="0x0501"/>
-    <enum name="INVALID_OPERATION"                        value="0x0502"/>
-    <enum name="OUT_OF_MEMORY"                            value="0x0505"/>
-    <enum name="CW"                                       value="0x0900"/>
-    <enum name="CCW"                                      value="0x0901"/>
-    <enum name="CULL_FACE"                     count="1"  value="0x0B44">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_TEST"                    count="1"  value="0x0B71">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_TEST"                  count="1"  value="0x0B90">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DITHER"                        count="1"  value="0x0BD0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND"                         count="1"  value="0x0BE2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SCISSOR_TEST"                  count="1"  value="0x0C11">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_ALIGNMENT"              count="1"  value="0x0CF5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_ALIGNMENT"                count="1"  value="0x0D05">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_SIZE"              count="1"  value="0x0D33">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_VIEWPORT_DIMS"             count="2"  value="0x0D3A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SUBPIXEL_BITS"                 count="1"  value="0x0D50">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RED_BITS"                      count="1"  value="0x0D52">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="GREEN_BITS"                    count="1"  value="0x0D53">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLUE_BITS"                     count="1"  value="0x0D54">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_BITS"                    count="1"  value="0x0D55">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_BITS"                    count="1"  value="0x0D56">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BITS"                  count="1"  value="0x0D57">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_2D"                    count="1"  value="0x0DE1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DONT_CARE"                                value="0x1100"/>
-    <enum name="FASTEST"                                  value="0x1101"/>
-    <enum name="NICEST"                                   value="0x1102"/>
-    <enum name="BYTE"                          count="1"  value="0x1400">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="UNSIGNED_BYTE"                 count="1"  value="0x1401">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="SHORT"                         count="2"  value="0x1402">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="UNSIGNED_SHORT"                count="2"  value="0x1403">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="FLOAT"                         count="4"  value="0x1406">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="INVERT"                                   value="0x150A"/>
-    <enum name="TEXTURE"                                  value="0x1702"/>
-    <enum name="ALPHA"                                    value="0x1906"/>
-    <enum name="RGB"                                      value="0x1907"/>
-    <enum name="RGBA"                                     value="0x1908"/>
-    <enum name="LUMINANCE"                                value="0x1909"/>
-    <enum name="LUMINANCE_ALPHA"                          value="0x190A"/>
-    <enum name="KEEP"                                     value="0x1E00"/>
-    <enum name="REPLACE"                                  value="0x1E01"/>
-    <enum name="INCR"                                     value="0x1E02"/>
-    <enum name="DECR"                                     value="0x1E03"/>
-    <enum name="VENDOR"                                   value="0x1F00"/>
-    <enum name="RENDERER"                                 value="0x1F01"/>
-    <enum name="VERSION"                                  value="0x1F02"/>
-    <enum name="EXTENSIONS"                               value="0x1F03"/>
-    <enum name="NEAREST"                                  value="0x2600"/>
-    <enum name="LINEAR"                                   value="0x2601"/>
-    <enum name="NEAREST_MIPMAP_NEAREST"                   value="0x2700"/>
-    <enum name="LINEAR_MIPMAP_NEAREST"                    value="0x2701"/>
-    <enum name="NEAREST_MIPMAP_LINEAR"                    value="0x2702"/>
-    <enum name="LINEAR_MIPMAP_LINEAR"                     value="0x2703"/>
-    <enum name="TEXTURE_MAG_FILTER"            count="1"  value="0x2800">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MIN_FILTER"            count="1"  value="0x2801">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_WRAP_S"                count="1"  value="0x2802">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_WRAP_T"                count="1"  value="0x2803">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="REPEAT"                                   value="0x2901"/>
-
-    <enum name="DEPTH_BUFFER_BIT"                         value="0x00000100"/>
-    <enum name="STENCIL_BUFFER_BIT"                       value="0x00000400"/>
-    <enum name="COLOR_BUFFER_BIT"                         value="0x00004000"/>
-
-    <type name="float"   size="4"  float="true"    glx_name="FLOAT32"/>
-    <type name="clampf"  size="4"  float="true"    glx_name="FLOAT32"/>
-
-    <type name="int"     size="4"                  glx_name="CARD32"/>
-    <type name="uint"    size="4"  unsigned="true" glx_name="CARD32"/>
-    <type name="sizei"   size="4"                  glx_name="CARD32"/>
-    <type name="enum"    size="4"  unsigned="true" glx_name="ENUM"/>
-    <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
-
-    <type name="short"   size="2"                  glx_name="CARD16"/>
-    <type name="ushort"  size="2"  unsigned="true" glx_name="CARD16"/>
-
-    <type name="byte"    size="1"                  glx_name="CARD8"/>
-    <type name="ubyte"   size="1"  unsigned="true" glx_name="CARD8"/>
-    <type name="boolean" size="1"  unsigned="true" glx_name="CARD8"/>
-
-    <type name="void"    size="1"/>
-
-    <function name="BlendFunc" offset="241">
-        <param name="sfactor" type="GLenum"/>
-        <param name="dfactor" type="GLenum"/>
-        <glx rop="160"/>
-    </function>
-
-    <function name="Clear" offset="203">
-        <param name="mask" type="GLbitfield"/>
-        <glx rop="127"/>
-    </function>
-
-    <function name="ClearColor" offset="206">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-        <glx rop="130"/>
-    </function>
-
-    <function name="ClearStencil" offset="207">
-        <param name="s" type="GLint"/>
-        <glx rop="131"/>
-    </function>
-
-    <function name="ColorMask" offset="210">
-        <param name="red" type="GLboolean"/>
-        <param name="green" type="GLboolean"/>
-        <param name="blue" type="GLboolean"/>
-        <param name="alpha" type="GLboolean"/>
-        <glx rop="134"/>
-    </function>
-
-    <function name="CullFace" offset="152">
-        <param name="mode" type="GLenum"/>
-        <glx rop="79"/>
-    </function>
-
-    <function name="DepthFunc" offset="245">
-        <param name="func" type="GLenum"/>
-        <glx rop="164"/>
-    </function>
-
-    <function name="DepthMask" offset="211">
-        <param name="flag" type="GLboolean"/>
-        <glx rop="135"/>
-    </function>
-
-    <function name="Disable" offset="214">
-        <param name="cap" type="GLenum"/>
-        <glx rop="138" handcode="client"/>
-    </function>
-
-    <function name="Enable" offset="215">
-        <param name="cap" type="GLenum"/>
-        <glx rop="139" handcode="client"/>
-    </function>
-
-    <function name="Finish" offset="216">
-        <glx sop="108" handcode="true"/>
-    </function>
-
-    <function name="Flush" offset="217">
-        <glx sop="142" handcode="true"/>
-    </function>
-
-    <function name="FrontFace" offset="157">
-        <param name="mode" type="GLenum"/>
-        <glx rop="84"/>
-    </function>
-
-    <function name="GetError" offset="261">
-        <return type="GLenum"/>
-        <glx sop="115" handcode="client"/>
-    </function>
-
-    <function name="GetIntegerv" offset="263">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="117" handcode="client"/>
-    </function>
-
-    <function name="GetString" offset="275">
-        <param name="name" type="GLenum"/>
-        <return type="const GLubyte *"/>
-        <glx sop="129" handcode="true"/>
-    </function>
-
-    <function name="Hint" offset="158">
-        <param name="target" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx rop="85"/>
-    </function>
-
-    <function name="LineWidth" offset="168">
-        <param name="width" type="GLfloat"/>
-        <glx rop="95"/>
-    </function>
-
-    <function name="PixelStorei" offset="250">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx sop="110" handcode="client"/>
-    </function>
-
-    <function name="ReadPixels" offset="256">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="GLvoid *" output="true"  img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
-        <glx sop="111"/>
-    </function>
-
-    <function name="Scissor" offset="176">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="103"/>
-    </function>
-
-    <function name="StencilFunc" offset="243">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLint"/>
-        <param name="mask" type="GLuint"/>
-        <glx rop="162"/>
-    </function>
-
-    <function name="StencilMask" offset="209">
-        <param name="mask" type="GLuint"/>
-        <glx rop="133"/>
-    </function>
-
-    <function name="StencilOp" offset="244">
-        <param name="fail" type="GLenum"/>
-        <param name="zfail" type="GLenum"/>
-        <param name="zpass" type="GLenum"/>
-        <glx rop="163"/>
-    </function>
-
-    <function name="TexParameterf" offset="178">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="105"/>
-    </function>
-
-    <function name="Viewport" offset="305">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="191"/>
-    </function>
-
-    <!-- these are not in OpenGL ES 1.0 -->
-    <enum name="LINE_WIDTH"                    count="1"  value="0x0B21">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CULL_FACE_MODE"                count="1"  value="0x0B45">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FRONT_FACE"                    count="1"  value="0x0B46">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_RANGE"                   count="2"  value="0x0B70">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_WRITEMASK"               count="1"  value="0x0B72">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_CLEAR_VALUE"             count="1"  value="0x0B73">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_FUNC"                    count="1"  value="0x0B74">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_CLEAR_VALUE"           count="1"  value="0x0B91">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_FUNC"                  count="1"  value="0x0B92">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_VALUE_MASK"            count="1"  value="0x0B93">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_FAIL"                  count="1"  value="0x0B94">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_PASS_DEPTH_FAIL"       count="1"  value="0x0B95">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_PASS_DEPTH_PASS"       count="1"  value="0x0B96">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_REF"                   count="1"  value="0x0B97">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_WRITEMASK"             count="1"  value="0x0B98">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VIEWPORT"                      count="4"  value="0x0BA2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SCISSOR_BOX"                   count="4"  value="0x0C10">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_CLEAR_VALUE"             count="4"  value="0x0C22">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_WRITEMASK"               count="4"  value="0x0C23">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="TexParameterfv" offset="179">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="106"/>
-    </function>
-
-    <function name="TexParameteri" offset="180">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="107"/>
-    </function>
-
-    <function name="TexParameteriv" offset="181">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="108"/>
-    </function>
-
-    <function name="GetBooleanv" offset="258">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
-        <glx sop="112" handcode="client"/>
-    </function>
-
-    <function name="GetFloatv" offset="262">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="116" handcode="client"/>
-    </function>
-
-    <function name="GetTexParameterfv" offset="282">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="136"/>
-    </function>
-
-    <function name="GetTexParameteriv" offset="283">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="137"/>
-    </function>
-
-    <function name="IsEnabled" offset="286">
-        <param name="cap" type="GLenum"/>
-        <return type="GLboolean"/>
-        <glx sop="140" handcode="client"/>
-    </function>
-</category>
-
-<!-- base subset of OpenGL 1.1 -->
-<category name="base1.1">
-    <enum name="POLYGON_OFFSET_FILL"                      value="0x8037"/>
-
-    <function name="BindTexture" offset="307">
-        <param name="target" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <glx rop="4117"/>
-    </function>
-
-    <function name="CopyTexImage2D" offset="324">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <glx rop="4120"/>
-    </function>
-
-    <function name="CopyTexSubImage2D" offset="326">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4122"/>
-    </function>
-
-    <function name="DeleteTextures" offset="327">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <glx sop="144"/>
-    </function>
-
-    <function name="DrawArrays" offset="310">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <glx rop="193" handcode="true"/>
-    </function>
-
-    <function name="DrawElements" offset="311">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="GenTextures" offset="328">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="GLuint *" output="true" count="n"/>
-        <glx sop="145" always_array="true"/>
-    </function>
-
-    <function name="PolygonOffset" offset="319">
-        <param name="factor" type="GLfloat"/>
-        <param name="units" type="GLfloat"/>
-        <glx rop="192"/>
-    </function>
-
-    <function name="TexSubImage2D" offset="333">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4100" large="true"/>
-    </function>
-
-    <!-- these are not in OpenGL ES 1.0 -->
-    <enum name="POLYGON_OFFSET_UNITS"          count="1"  value="0x2A00">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_OFFSET_FACTOR"         count="1"  value="0x8038">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_2D"            count="1"  value="0x8069">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="IsTexture" offset="330">
-        <param name="texture" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx sop="146"/>
-    </function>
-</category>
-
-<!-- base subset of OpenGL 1.2 -->
-<category name="base1.2">
-    <enum name="UNSIGNED_SHORT_4_4_4_4"                   value="0x8033"/>
-    <enum name="UNSIGNED_SHORT_5_5_5_1"                   value="0x8034"/>
-    <enum name="CLAMP_TO_EDGE"                            value="0x812F"/>
-    <enum name="UNSIGNED_SHORT_5_6_5"                     value="0x8363"/>
-    <enum name="ALIASED_POINT_SIZE_RANGE"      count="2"  value="0x846D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALIASED_LINE_WIDTH_RANGE"      count="2"  value="0x846E">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<!-- base subset of OpenGL 1.3 -->
-<category name="base1.3">
-    <enum name="SAMPLE_ALPHA_TO_COVERAGE"      count="1"  value="0x809E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE"               count="1"  value="0x80A0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE0"                                 value="0x84C0"/>
-    <enum name="TEXTURE1"                                 value="0x84C1"/>
-    <enum name="TEXTURE2"                                 value="0x84C2"/>
-    <enum name="TEXTURE3"                                 value="0x84C3"/>
-    <enum name="TEXTURE4"                                 value="0x84C4"/>
-    <enum name="TEXTURE5"                                 value="0x84C5"/>
-    <enum name="TEXTURE6"                                 value="0x84C6"/>
-    <enum name="TEXTURE7"                                 value="0x84C7"/>
-    <enum name="TEXTURE8"                                 value="0x84C8"/>
-    <enum name="TEXTURE9"                                 value="0x84C9"/>
-    <enum name="TEXTURE10"                                value="0x84CA"/>
-    <enum name="TEXTURE11"                                value="0x84CB"/>
-    <enum name="TEXTURE12"                                value="0x84CC"/>
-    <enum name="TEXTURE13"                                value="0x84CD"/>
-    <enum name="TEXTURE14"                                value="0x84CE"/>
-    <enum name="TEXTURE15"                                value="0x84CF"/>
-    <enum name="TEXTURE16"                                value="0x84D0"/>
-    <enum name="TEXTURE17"                                value="0x84D1"/>
-    <enum name="TEXTURE18"                                value="0x84D2"/>
-    <enum name="TEXTURE19"                                value="0x84D3"/>
-    <enum name="TEXTURE20"                                value="0x84D4"/>
-    <enum name="TEXTURE21"                                value="0x84D5"/>
-    <enum name="TEXTURE22"                                value="0x84D6"/>
-    <enum name="TEXTURE23"                                value="0x84D7"/>
-    <enum name="TEXTURE24"                                value="0x84D8"/>
-    <enum name="TEXTURE25"                                value="0x84D9"/>
-    <enum name="TEXTURE26"                                value="0x84DA"/>
-    <enum name="TEXTURE27"                                value="0x84DB"/>
-    <enum name="TEXTURE28"                                value="0x84DC"/>
-    <enum name="TEXTURE29"                                value="0x84DD"/>
-    <enum name="TEXTURE30"                                value="0x84DE"/>
-    <enum name="TEXTURE31"                                value="0x84DF"/>
-    <enum name="NUM_COMPRESSED_TEXTURE_FORMATS" count="1" value="0x86A2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COMPRESSED_TEXTURE_FORMATS"    count="-1"  value="0x86A3">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="ActiveTexture" offset="374">
-        <param name="texture" type="GLenum"/>
-        <glx rop="197"/>
-    </function>
-
-    <function name="CompressedTexImage2D" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="215" handcode="client"/>
-    </function>
-
-    <function name="CompressedTexSubImage2D" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="218" handcode="client"/>
-    </function>
-
-    <function name="SampleCoverage" offset="assign">
-        <param name="value" type="GLclampf"/>
-        <param name="invert" type="GLboolean"/>
-        <glx rop="229"/>
-    </function>
-
-    <!-- these are not in OpenGL ES 1.0 -->
-    <enum name="SAMPLE_BUFFERS"                count="1"  value="0x80A8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLES"                       count="1"  value="0x80A9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE_VALUE"         count="1"  value="0x80AA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE_INVERT"        count="1"  value="0x80AB">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACTIVE_TEXTURE"                count="1"  value="0x84E0">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<!-- base subset of OpenGL 1.4 -->
-<category name="base1.4">
-    <enum name="GENERATE_MIPMAP_HINT"                     value="0x8192"/>
-</category>
-
-<!-- base subset of OpenGL 1.5 -->
-<category name="base1.5">
-    <enum name="BUFFER_SIZE"                              value="0x8764"/>
-    <enum name="BUFFER_USAGE"                             value="0x8765"/>
-    <enum name="ARRAY_BUFFER"                             value="0x8892"/>
-    <enum name="ELEMENT_ARRAY_BUFFER"                     value="0x8893"/>
-    <enum name="ARRAY_BUFFER_BINDING"                     value="0x8894"/>
-    <enum name="ELEMENT_ARRAY_BUFFER_BINDING"             value="0x8895"/>
-    <enum name="STATIC_DRAW"                              value="0x88E4"/>
-    <enum name="DYNAMIC_DRAW"                             value="0x88E8"/>
-
-    <type name="intptr"   size="4"                  glx_name="CARD32"/>
-    <type name="sizeiptr" size="4"                  glx_name="CARD32"/>
-
-    <function name="BindBuffer" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="buffer" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="BufferData" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="size" type="GLsizeiptr" counter="true"/>
-        <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/>
-        <param name="usage" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="BufferSubData" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptr"/>
-        <param name="size" type="GLsizeiptr" counter="true"/>
-        <param name="data" type="const GLvoid *" count="size"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DeleteBuffers" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="buffer" type="const GLuint *" count="n"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GenBuffers" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="buffer" type="GLuint *" output="true" count="n"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetBufferParameteriv" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="IsBuffer" offset="assign">
-        <param name="buffer" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/base2_API.xml b/src/mesa/es/glapi/base2_API.xml
deleted file mode 100644 (file)
index 5657b8e..0000000
+++ /dev/null
@@ -1,533 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<!-- OpenGL and OpenGL ES 2.x APIs -->
-
-<OpenGLAPI>
-
-<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- base subset of OpenGL 2.0 -->
-<category name="base2.0">
-    <enum name="BLEND_EQUATION_RGB"            count="1"  value="0x8009"> <!-- same as BLEND_EQUATION -->
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_ENABLED"   count="1"  value="0x8622">
-        <size name="GetVertexAttribdv" mode="get"/>
-        <size name="GetVertexAttribfv" mode="get"/>
-        <size name="GetVertexAttribiv" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_SIZE"      count="1"  value="0x8623">
-        <size name="GetVertexAttribdv" mode="get"/>
-        <size name="GetVertexAttribfv" mode="get"/>
-        <size name="GetVertexAttribiv" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_STRIDE"     count="1" value="0x8624">
-        <size name="GetVertexAttribdv" mode="get"/>
-        <size name="GetVertexAttribfv" mode="get"/>
-        <size name="GetVertexAttribiv" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_TYPE"      count="1"  value="0x8625">
-        <size name="GetVertexAttribdv" mode="get"/>
-        <size name="GetVertexAttribfv" mode="get"/>
-        <size name="GetVertexAttribiv" mode="get"/>
-    </enum>
-    <enum name="CURRENT_VERTEX_ATTRIB"         count="1"  value="0x8626">
-        <size name="GetVertexAttribdv" mode="get"/>
-        <size name="GetVertexAttribfv" mode="get"/>
-        <size name="GetVertexAttribiv" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_POINTER"              value="0x8645"/>
-    <enum name="STENCIL_BACK_FUNC"             count="1"  value="0x8800">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BACK_FAIL"             count="1"  value="0x8801">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BACK_PASS_DEPTH_FAIL"  count="1"  value="0x8802">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BACK_PASS_DEPTH_PASS"  count="1"  value="0x8803">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_EQUATION_ALPHA"          count="1"  value="0x883D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_VERTEX_ATTRIBS"            count="1"  value="0x8869">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED"           value="0x886A"/>
-    <enum name="MAX_TEXTURE_IMAGE_UNITS"       count="1"  value="0x8872">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FRAGMENT_SHADER"                          value="0x8B30"/>
-    <enum name="VERTEX_SHADER"                            value="0x8B31"/>
-    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS"           value="0x8B4C"/>
-    <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS"         value="0x8B4D"/>
-    <enum name="SHADER_TYPE"                              value="0x8B4F"/>
-    <enum name="FLOAT_VEC2"                               value="0x8B50"/>
-    <enum name="FLOAT_VEC3"                               value="0x8B51"/>
-    <enum name="FLOAT_VEC4"                               value="0x8B52"/>
-    <enum name="INT_VEC2"                                 value="0x8B53"/>
-    <enum name="INT_VEC3"                                 value="0x8B54"/>
-    <enum name="INT_VEC4"                                 value="0x8B55"/>
-    <enum name="BOOL"                                     value="0x8B56"/>
-    <enum name="BOOL_VEC2"                                value="0x8B57"/>
-    <enum name="BOOL_VEC3"                                value="0x8B58"/>
-    <enum name="BOOL_VEC4"                                value="0x8B59"/>
-    <enum name="FLOAT_MAT2"                               value="0x8B5A"/>
-    <enum name="FLOAT_MAT3"                               value="0x8B5B"/>
-    <enum name="FLOAT_MAT4"                               value="0x8B5C"/>
-    <enum name="SAMPLER_2D"                               value="0x8B5E"/>
-    <enum name="SAMPLER_CUBE"                             value="0x8B60"/>
-    <enum name="DELETE_STATUS"                            value="0x8B80"/>
-    <enum name="COMPILE_STATUS"                           value="0x8B81"/>
-    <enum name="LINK_STATUS"                              value="0x8B82"/>
-    <enum name="VALIDATE_STATUS"                          value="0x8B83"/>
-    <enum name="INFO_LOG_LENGTH"                          value="0x8B84"/>
-    <enum name="ATTACHED_SHADERS"                         value="0x8B85"/>
-    <enum name="ACTIVE_UNIFORMS"                          value="0x8B86"/>
-    <enum name="ACTIVE_UNIFORM_MAX_LENGTH"                value="0x8B87"/>
-    <enum name="SHADER_SOURCE_LENGTH"                     value="0x8B88"/>
-    <enum name="ACTIVE_ATTRIBUTES"                        value="0x8B89"/>
-    <enum name="ACTIVE_ATTRIBUTE_MAX_LENGTH"              value="0x8B8A"/>
-    <enum name="SHADING_LANGUAGE_VERSION"                 value="0x8B8C"/>
-    <enum name="CURRENT_PROGRAM"                          value="0x8B8D"/>
-    <enum name="STENCIL_BACK_REF"                         value="0x8CA3"/>
-    <enum name="STENCIL_BACK_VALUE_MASK"                  value="0x8CA4"/>
-    <enum name="STENCIL_BACK_WRITEMASK"                   value="0x8CA5"/>
-
-    <type name="char"    size="1"                  glx_name="CARD8"/>
-
-    <function name="AttachShader" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="shader" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="BindAttribLocation" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="index" type="GLuint"/>
-        <param name="name" type="const GLchar *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="BlendEquationSeparate" offset="assign">
-        <param name="modeRGB" type="GLenum"/>
-        <param name="modeA" type="GLenum"/>
-        <glx rop="4228"/>
-    </function>
-
-    <function name="CompileShader" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CreateProgram" offset="assign">
-        <return type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CreateShader" offset="assign">
-        <param name="type" type="GLenum"/>
-        <return type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DeleteProgram" offset="assign">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DeleteShader" offset="assign">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DetachShader" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="shader" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DisableVertexAttribArray" offset="assign">
-        <param name="index" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="EnableVertexAttribArray" offset="assign">
-        <param name="index" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetActiveAttrib" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="index" type="GLuint"/>
-        <param name="bufSize" type="GLsizei "/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="size" type="GLint *" output="true"/>
-        <param name="type" type="GLenum *" output="true"/>
-        <param name="name" type="GLchar *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetActiveUniform" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="index" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="size" type="GLint *" output="true"/>
-        <param name="type" type="GLenum *" output="true"/>
-        <param name="name" type="GLchar *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetAttachedShaders" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="maxCount" type="GLsizei"/>
-        <param name="count" type="GLsizei *" output="true"/>
-        <param name="obj" type="GLuint *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetAttribLocation" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="name" type="const GLchar *"/>
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetProgramiv" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetProgramInfoLog" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *"/>
-        <param name="infoLog" type="GLchar *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetShaderiv" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetShaderInfoLog" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *"/>
-        <param name="infoLog" type="GLchar *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetShaderSource" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="source" type="GLchar *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformfv" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="location" type="GLint"/>
-        <param name="params" type="GLfloat *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformiv" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="location" type="GLint"/>
-        <param name="params" type="GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformLocation" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="name" type="const GLchar *"/>
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetVertexAttribfv" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetVertexAttribiv" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetVertexAttribPointerv" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="pointer" type="GLvoid **" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="IsProgram" offset="assign">
-        <param name="program" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="IsShader" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="LinkProgram" offset="assign">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ShaderSource" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="string" type="const GLchar **"/>
-        <param name="length" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="StencilFuncSeparate" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLint"/>
-        <param name="mask" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="StencilOpSeparate" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="sfail" type="GLenum"/>
-        <param name="zfail" type="GLenum"/>
-        <param name="zpass" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="StencilMaskSeparate" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="mask" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1f" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1i" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1iv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2f" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2i" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2iv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3f" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3i" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <param name="v2" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3iv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4f" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <param name="v3" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4i" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <param name="v2" type="GLint"/>
-        <param name="v3" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4iv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UniformMatrix2fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UniformMatrix3fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UniformMatrix4fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UseProgram" offset="assign">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ValidateProgram" offset="assign">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="VertexAttrib1f" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib1fv" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="VertexAttrib2f" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib2fv" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="VertexAttrib3f" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib3fv" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="VertexAttrib4f" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib4fv" offset="assign">
-       <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="VertexAttribPointer" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="normalized" type="GLboolean"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es1_API.xml b/src/mesa/es/glapi/es1_API.xml
deleted file mode 100644 (file)
index 1ac1467..0000000
+++ /dev/null
@@ -1,1100 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<!-- OpenGL ES 1.x API -->
-
-<OpenGLAPI>
-
-<xi:include href="base1_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- core subset of OpenGL 1.3 defined in OpenGL ES 1.0 -->
-<category name="core1.0">
-    <!-- addition to base1.0 -->
-    <enum name="ADD"                                      value="0x0104"/>
-    <enum name="STACK_OVERFLOW"                           value="0x0503"/>
-    <enum name="STACK_UNDERFLOW"                          value="0x0504"/>
-    <enum name="EXP"                                      value="0x0800"/>
-    <enum name="EXP2"                                     value="0x0801"/>
-    <enum name="POINT_SMOOTH"                  count="1"  value="0x0B10">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_SMOOTH"                   count="1"  value="0x0B20">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHTING"                      count="1"  value="0x0B50">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT_MODEL_TWO_SIDE"          count="1"  value="0x0B52">
-        <size name="LightModelfv"/>
-        <size name="LightModeliv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT_MODEL_AMBIENT"           count="4"  value="0x0B53">
-        <size name="LightModelfv"/>
-        <size name="LightModeliv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_MATERIAL"                count="1"  value="0x0B57">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG"                           count="1"  value="0x0B60">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_DENSITY"                   count="1"  value="0x0B62">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_START"                     count="1"  value="0x0B63">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_END"                       count="1"  value="0x0B64">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_MODE"                      count="1"  value="0x0B65">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COLOR"                     count="4"  value="0x0B66">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMALIZE"                     count="1"  value="0x0BA1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_TEST"                    count="1"  value="0x0BC0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PERSPECTIVE_CORRECTION_HINT"   count="1"  value="0x0C50">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SMOOTH_HINT"             count="1"  value="0x0C51">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_SMOOTH_HINT"              count="1"  value="0x0C52">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_SMOOTH_HINT"           count="1"  value="0x0C53">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_HINT"                      count="1"  value="0x0C54">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_LIGHTS"                    count="1"  value="0x0D31">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_MODELVIEW_STACK_DEPTH"     count="1"  value="0x0D36">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_PROJECTION_STACK_DEPTH"    count="1"  value="0x0D38">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_STACK_DEPTH"       count="1"  value="0x0D39">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="AMBIENT"                       count="4"  value="0x1200">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="DIFFUSE"                       count="4"  value="0x1201">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPECULAR"                      count="4"  value="0x1202">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="POSITION"                      count="4"  value="0x1203">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPOT_DIRECTION"                count="3"  value="0x1204">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPOT_EXPONENT"                 count="1"  value="0x1205">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPOT_CUTOFF"                   count="1"  value="0x1206">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="CONSTANT_ATTENUATION"          count="1"  value="0x1207">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="LINEAR_ATTENUATION"            count="1"  value="0x1208">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="QUADRATIC_ATTENUATION"         count="1"  value="0x1209">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="CLEAR"                                    value="0x1500"/>
-    <enum name="AND"                                      value="0x1501"/>
-    <enum name="AND_REVERSE"                              value="0x1502"/>
-    <enum name="COPY"                                     value="0x1503"/>
-    <enum name="AND_INVERTED"                             value="0x1504"/>
-    <enum name="NOOP"                                     value="0x1505"/>
-    <enum name="XOR"                                      value="0x1506"/>
-    <enum name="OR"                                       value="0x1507"/>
-    <enum name="NOR"                                      value="0x1508"/>
-    <enum name="EQUIV"                                    value="0x1509"/>
-    <enum name="OR_REVERSE"                               value="0x150B"/>
-    <enum name="COPY_INVERTED"                            value="0x150C"/>
-    <enum name="OR_INVERTED"                              value="0x150D"/>
-    <enum name="NAND"                                     value="0x150E"/>
-    <enum name="SET"                                      value="0x150F"/>
-    <enum name="EMISSION"                      count="4"  value="0x1600">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-    </enum>
-    <enum name="SHININESS"                     count="1"  value="0x1601">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-    </enum>
-    <enum name="AMBIENT_AND_DIFFUSE"           count="4"  value="0x1602">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW"                                value="0x1700"/>
-    <enum name="PROJECTION"                               value="0x1701"/>
-    <enum name="FLAT"                                     value="0x1D00"/>
-    <enum name="SMOOTH"                                   value="0x1D01"/>
-    <enum name="MODULATE"                                 value="0x2100"/>
-    <enum name="DECAL"                                    value="0x2101"/>
-    <enum name="TEXTURE_ENV_MODE"              count="1"  value="0x2200">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_ENV_COLOR"             count="4"  value="0x2201">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_ENV"                              value="0x2300"/>
-    <enum name="LIGHT0"                        count="1"  value="0x4000">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT1"                        count="1"  value="0x4001">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT2"                        count="1"  value="0x4002">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT3"                        count="1"  value="0x4003">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT4"                        count="1"  value="0x4004">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT5"                        count="1"  value="0x4005">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT6"                        count="1"  value="0x4006">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT7"                        count="1"  value="0x4007">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="AlphaFunc" offset="240">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLclampf"/>
-        <glx rop="159"/>
-    </function>
-
-    <function name="Color4f" offset="29" vectorequiv="Color4fv">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-        <param name="alpha" type="GLfloat"/>
-    </function>
-
-    <function name="Fogf" offset="153">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="80"/>
-    </function>
-
-    <function name="Fogfv" offset="154">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="81"/>
-    </function>
-
-    <function name="Lightf" offset="159">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="86"/>
-    </function>
-
-    <function name="Lightfv" offset="160">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="87"/>
-    </function>
-
-    <function name="LightModelf" offset="163">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="90"/>
-    </function>
-
-    <function name="LightModelfv" offset="164">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="91"/>
-    </function>
-
-    <function name="LoadIdentity" offset="290">
-        <glx rop="176"/>
-    </function>
-
-    <function name="LoadMatrixf" offset="291">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="177"/>
-    </function>
-
-    <function name="LogicOp" offset="242">
-        <param name="opcode" type="GLenum"/>
-        <glx rop="161"/>
-    </function>
-
-    <function name="Materialf" offset="169">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="96"/>
-    </function>
-
-    <function name="Materialfv" offset="170">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="97"/>
-    </function>
-
-    <function name="MatrixMode" offset="293">
-        <param name="mode" type="GLenum"/>
-        <glx rop="179"/>
-    </function>
-
-    <function name="MultMatrixf" offset="294">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="180"/>
-    </function>
-
-    <function name="Normal3f" offset="56" vectorequiv="Normal3fv">
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-    </function>
-
-    <function name="PointSize" offset="173">
-        <param name="size" type="GLfloat"/>
-        <glx rop="100"/>
-    </function>
-
-    <function name="PopMatrix" offset="297">
-        <glx rop="183"/>
-    </function>
-
-    <function name="PushMatrix" offset="298">
-        <glx rop="184"/>
-    </function>
-
-    <function name="Rotatef" offset="300">
-        <param name="angle" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="186"/>
-    </function>
-
-    <function name="Scalef" offset="302">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="188"/>
-    </function>
-
-    <function name="ShadeModel" offset="177">
-        <param name="mode" type="GLenum"/>
-        <glx rop="104"/>
-    </function>
-
-    <function name="TexEnvf" offset="184">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="111"/>
-    </function>
-
-    <function name="TexEnvfv" offset="185">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="112"/>
-    </function>
-
-    <function name="TexImage2D" offset="183">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
-        <glx rop="110" large="true"/>
-    </function>
-
-    <function name="Translatef" offset="304">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="190"/>
-    </function>
-
-    <!-- addition to base1.1 -->
-    <enum name="COLOR_LOGIC_OP"                           value="0x0BF2"/>
-    <enum name="VERTEX_ARRAY"                  count="1"  value="0x8074">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY"                  count="1"  value="0x8075">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY"                   count="1"  value="0x8076">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY"           count="1"  value="0x8078">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="ColorPointer" offset="308">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DisableClientState" offset="309">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="EnableClientState" offset="313">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="NormalPointer" offset="318">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="TexCoordPointer" offset="320">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="VertexPointer" offset="321">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <!-- addition to base1.2 -->
-    <enum name="SMOOTH_POINT_SIZE_RANGE"       count="2"  value="0x0B12">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SMOOTH_LINE_WIDTH_RANGE"       count="2"  value="0x0B22">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RESCALE_NORMAL"                count="1"  value="0x803A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_ELEMENTS_VERTICES"         count="1"  value="0x80E8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_ELEMENTS_INDICES"          count="1"  value="0x80E9">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <!-- addition to base1.3 -->
-    <enum name="MULTISAMPLE"                   count="1"  value="0x809D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_ALPHA_TO_ONE"           count="1"  value="0x809F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_UNITS"             count="1"  value="0x84E2">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="ClientActiveTexture" offset="375">
-        <param name="texture" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultiTexCoord4f" offset="402" vectorequiv="MultiTexCoord4fv">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function>
-</category>
-
-<!-- core subset of OpenGL 1.5 defined in OpenGL ES 1.1 -->
-<category name="core1.1">
-    <!-- addition to base1.0 -->
-    <enum name="CURRENT_COLOR"                 count="4"  value="0x0B00">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_NORMAL"                count="3"  value="0x0B02">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_TEXTURE_COORDS"        count="4"  value="0x0B03">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SIZE"                    count="1"  value="0x0B11">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SHADE_MODEL"                   count="1"  value="0x0B54">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX_MODE"                   count="1"  value="0x0BA0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW_STACK_DEPTH"         count="1"  value="0x0BA3">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROJECTION_STACK_DEPTH"        count="1"  value="0x0BA4">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_STACK_DEPTH"           count="1"  value="0x0BA5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW_MATRIX"              count="16" value="0x0BA6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROJECTION_MATRIX"             count="16" value="0x0BA7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MATRIX"                count="16" value="0x0BA8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_TEST_FUNC"               count="1"  value="0x0BC1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_TEST_REF"                count="1"  value="0x0BC2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_DST"                     count="1"  value="0x0BE0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC"                     count="1"  value="0x0BE1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LOGIC_OP_MODE"                 count="1"  value="0x0BF0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_SCALE"                   count="1"  value="0x0D1C">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_CLIP_PLANES"               count="1"  value="0x0D32">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE0"                   count="1"  value="0x3000">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE1"                   count="1"  value="0x3001">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE2"                   count="1"  value="0x3002">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE3"                   count="1"  value="0x3003">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE4"                   count="1"  value="0x3004">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE5"                   count="1"  value="0x3005">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="Color4ub" offset="35" vectorequiv="Color4ubv">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-        <param name="alpha" type="GLubyte"/>
-    </function>
-
-    <function name="GetLightfv" offset="264">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="118"/>
-    </function>
-
-    <function name="GetMaterialfv" offset="269">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="123"/>
-    </function>
-
-    <function name="GetTexEnvfv" offset="276">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="130"/>
-    </function>
-
-    <function name="GetTexEnviv" offset="277">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="131"/>
-    </function>
-
-    <function name="TexEnvi" offset="186">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="113"/>
-    </function>
-
-    <function name="TexEnviv" offset="187">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="114"/>
-    </function>
-
-    <!-- addition to base1.1 -->
-    <enum name="VERTEX_ARRAY_SIZE"             count="1"  value="0x807A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_TYPE"             count="1"  value="0x807B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_STRIDE"           count="1"  value="0x807C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY_TYPE"             count="1"  value="0x807E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY_STRIDE"           count="1"  value="0x807F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_SIZE"              count="1"  value="0x8081">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_TYPE"              count="1"  value="0x8082">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_STRIDE"            count="1"  value="0x8083">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_SIZE"      count="1"  value="0x8088">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_TYPE"      count="1"  value="0x8089">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_STRIDE"    count="1"  value="0x808A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_POINTER"                     value="0x808E"/>
-    <enum name="NORMAL_ARRAY_POINTER"                     value="0x808F"/>
-    <enum name="COLOR_ARRAY_POINTER"                      value="0x8090"/>
-    <enum name="TEXTURE_COORD_ARRAY_POINTER"              value="0x8092"/>
-
-    <function name="GetPointerv" offset="329">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **" output="true"/>
-        <glx handcode="true"/>
-    </function>
-
-    <!-- addition to base1.2 -->
-
-    <!-- addition to base1.3 -->
-    <enum name="CLIENT_ACTIVE_TEXTURE"         count="1"  value="0x84E1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SUBTRACT"                                 value="0x84E7"/>
-    <enum name="COMBINE"                                  value="0x8570"/>
-    <enum name="COMBINE_RGB"                   count="1"  value="0x8571">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="COMBINE_ALPHA"                 count="1"  value="0x8572">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="RGB_SCALE"                     count="1"  value="0x8573">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="ADD_SIGNED"                               value="0x8574"/>
-    <enum name="INTERPOLATE"                              value="0x8575"/>
-    <enum name="CONSTANT"                                 value="0x8576"/>
-    <enum name="PRIMARY_COLOR"                            value="0x8577"/>
-    <enum name="PREVIOUS"                                 value="0x8578"/>
-    <enum name="OPERAND0_RGB"                  count="1"  value="0x8590">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND1_RGB"                  count="1"  value="0x8591">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND2_RGB"                  count="1"  value="0x8592">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND0_ALPHA"                count="1"  value="0x8598">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND1_ALPHA"                count="1"  value="0x8599">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND2_ALPHA"                count="1"  value="0x859A">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="DOT3_RGB"                                 value="0x86AE"/>
-    <enum name="DOT3_RGBA"                                value="0x86AF"/>
-
-    <!-- addition to base1.4 -->
-    <enum name="POINT_SIZE_MIN"                count="1"  value="0x8126">
-        <size name="PointParameterfv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SIZE_MAX"                count="1"  value="0x8127">
-        <size name="PointParameterfv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_FADE_THRESHOLD_SIZE"     count="1"  value="0x8128">
-        <size name="PointParameterfv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_DISTANCE_ATTENUATION"    count="3"  value="0x8129">
-        <size name="PointParameterfv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="GENERATE_MIPMAP"               count="1"  value="0x8191">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-
-    <function name="PointParameterf" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="2065"/>
-    </function>
-
-    <function name="PointParameterfv" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="2066"/>
-    </function>
-
-    <!-- addition to base1.5 -->
-    <enum name="SRC0_RGB"                                 value="0x8580"/>
-    <enum name="SRC1_RGB"                                 value="0x8581"/>
-    <enum name="SRC2_RGB"                                 value="0x8582"/>
-    <enum name="SRC0_ALPHA"                               value="0x8588"/>
-    <enum name="SRC1_ALPHA"                               value="0x8589"/>
-    <enum name="SRC2_ALPHA"                               value="0x858A"/>
-    <enum name="VERTEX_ARRAY_BUFFER_BINDING"   count="1"  value="0x8896">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY_BUFFER_BINDING"   count="1"  value="0x8897">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_BUFFER_BINDING"    count="1"  value="0x8898">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING" count="1" value="0x889A">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<!-- OpenGL ES 1.0 -->
-<category name="es1.0">
-    <!-- addition to core1.0 -->
-
-    <!-- from GL_OES_fixed_point -->
-    <enum name="FIXED"                                    value="0x140C"/>
-
-    <type name="fixed"   size="4"                                    />
-    <type name="clampx"  size="4"                                    />
-
-    <function name="AlphaFuncx" offset="assign">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLclampx"/>
-    </function>
-
-    <function name="ClearColorx" offset="assign">
-        <param name="red" type="GLclampx"/>
-        <param name="green" type="GLclampx"/>
-        <param name="blue" type="GLclampx"/>
-        <param name="alpha" type="GLclampx"/>
-    </function>
-
-    <function name="ClearDepthx" offset="assign">
-        <param name="depth" type="GLclampx"/>
-    </function>
-
-    <function name="Color4x" offset="assign">
-        <param name="red" type="GLfixed"/>
-        <param name="green" type="GLfixed"/>
-        <param name="blue" type="GLfixed"/>
-        <param name="alpha" type="GLfixed"/>
-    </function>
-
-    <function name="DepthRangex" offset="assign">
-        <param name="zNear" type="GLclampx"/>
-        <param name="zFar" type="GLclampx"/>
-    </function>
-
-    <function name="Fogx" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="Fogxv" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="Frustumx" offset="assign">
-        <param name="left" type="GLfixed"/>
-        <param name="right" type="GLfixed"/>
-        <param name="bottom" type="GLfixed"/>
-        <param name="top" type="GLfixed"/>
-        <param name="zNear" type="GLfixed"/>
-        <param name="zFar" type="GLfixed"/>
-    </function>
-
-    <function name="LightModelx" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="LightModelxv" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="Lightx" offset="assign">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="Lightxv" offset="assign">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="LineWidthx" offset="assign">
-        <param name="width" type="GLfixed"/>
-    </function>
-
-    <function name="LoadMatrixx" offset="assign">
-        <param name="m" type="const GLfixed *" count="16"/>
-    </function>
-
-    <function name="Materialx" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="Materialxv" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="MultMatrixx" offset="assign">
-        <param name="m" type="const GLfixed *" count="16"/>
-    </function>
-
-    <function name="MultiTexCoord4x" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfixed"/>
-        <param name="t" type="GLfixed"/>
-        <param name="r" type="GLfixed"/>
-        <param name="q" type="GLfixed"/>
-    </function>
-
-    <function name="Normal3x" offset="assign">
-        <param name="nx" type="GLfixed"/>
-        <param name="ny" type="GLfixed"/>
-        <param name="nz" type="GLfixed"/>
-    </function>
-
-    <function name="Orthox" offset="assign">
-        <param name="left" type="GLfixed"/>
-        <param name="right" type="GLfixed"/>
-        <param name="bottom" type="GLfixed"/>
-        <param name="top" type="GLfixed"/>
-        <param name="zNear" type="GLfixed"/>
-        <param name="zFar" type="GLfixed"/>
-    </function>
-
-    <function name="PointSizex" offset="assign">
-        <param name="size" type="GLfixed"/>
-    </function>
-
-    <function name="PolygonOffsetx" offset="assign">
-        <param name="factor" type="GLfixed"/>
-        <param name="units" type="GLfixed"/>
-    </function>
-
-    <function name="Rotatex" offset="assign">
-        <param name="angle" type="GLfixed"/>
-        <param name="x" type="GLfixed"/>
-        <param name="y" type="GLfixed"/>
-        <param name="z" type="GLfixed"/>
-    </function>
-
-    <function name="SampleCoveragex" offset="assign">
-        <param name="value" type="GLclampx"/>
-        <param name="invert" type="GLboolean"/>
-    </function>
-
-    <function name="Scalex" offset="assign">
-        <param name="x" type="GLfixed"/>
-        <param name="y" type="GLfixed"/>
-        <param name="z" type="GLfixed"/>
-    </function>
-
-    <function name="TexEnvx" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="TexEnvxv" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="TexParameterx" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="Translatex" offset="assign">
-        <param name="x" type="GLfixed"/>
-        <param name="y" type="GLfixed"/>
-        <param name="z" type="GLfixed"/>
-    </function>
-
-    <!-- from GL_OES_single_precision -->
-    <function name="ClearDepthf" offset="assign">
-        <param name="depth" type="GLclampf"/>
-    </function>
-
-    <function name="DepthRangef" offset="assign">
-        <param name="zNear" type="GLclampf"/>
-        <param name="zFar" type="GLclampf"/>
-    </function>
-
-    <function name="Frustumf" offset="assign">
-        <param name="left" type="GLfloat"/>
-        <param name="right" type="GLfloat"/>
-        <param name="bottom" type="GLfloat"/>
-        <param name="top" type="GLfloat"/>
-        <param name="zNear" type="GLfloat"/>
-        <param name="zFar" type="GLfloat"/>
-    </function>
-
-    <function name="Orthof" offset="assign">
-        <param name="left" type="GLfloat"/>
-        <param name="right" type="GLfloat"/>
-        <param name="bottom" type="GLfloat"/>
-        <param name="top" type="GLfloat"/>
-        <param name="zNear" type="GLfloat"/>
-        <param name="zFar" type="GLfloat"/>
-    </function>
-</category>
-
-<!-- OpenGL ES 1.1 -->
-<category name="es1.1">
-    <!-- addition to core1.1 -->
-
-    <!-- from GL_OES_fixed_point -->
-    <function name="ClipPlanex" offset="assign">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="const GLfixed *" count="4"/>
-    </function>
-
-    <function name="GetClipPlanex" offset="assign">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="GLfixed *" output="true" count="4"/>
-    </function>
-
-    <function name="GetFixedv" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetLightxv" offset="assign">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetMaterialxv" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetTexEnvxv" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetTexParameterxv" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="PointParameterx" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="PointParameterxv" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *"/>
-    </function>
-
-    <function name="TexParameterxv" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <!-- from GL_OES_matrix_get -->
-    <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"   value="0x898D"/>
-    <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"  value="0x898E"/>
-    <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"    value="0x898F"/>
-
-    <!-- from GL_OES_single_precision -->
-    <function name="ClipPlanef" offset="assign">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="const GLfloat *" count="4"/>
-    </function>
-
-    <function name="GetClipPlanef" offset="assign">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="GLfloat *" output="true" count="4"/>
-    </function>
-</category>
-
-<xi:include href="es1_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="es1_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es1_COMPAT.xml b/src/mesa/es/glapi/es1_COMPAT.xml
deleted file mode 100644 (file)
index 1f45a8c..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- This file defines the functions that are needed by Mesa.  It
-     makes sure the generated glapi headers are compatible with Mesa.
-     It mainly consists of missing functions and aliases in OpenGL ES.
--->
-
-<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- except for those defined by es_COMPAT.xml, these are also needed -->
-<category name="compat">
-    <!-- OpenGL 1.0 -->
-    <function name="TexGenf" alias="TexGenfOES" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="117"/>
-    </function>
-
-    <function name="TexGenfv" alias="TexGenfvOES" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="118"/>
-    </function>
-
-    <function name="TexGeni" alias="TexGeniOES" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="119"/>
-    </function>
-
-    <function name="TexGeniv" alias="TexGenivOES" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="120"/>
-    </function>
-
-    <function name="GetTexGenfv" alias="GetTexGenfvOES" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="133"/>
-    </function>
-
-    <function name="GetTexGeniv" alias="GetTexGenivOES" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="134"/>
-    </function>
-
-    <!-- OpenGL 1.2 -->
-    <function name="BlendColor" offset="336" static_dispatch="false">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-        <glx rop="4096"/>
-    </function>
-
-    <function name="BlendEquation" alias="BlendEquationOES" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="4097"/>
-    </function>
-
-    <function name="TexImage3D" offset="371" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
-        <glx rop="4114" large="true"/>
-    </function>
-
-    <function name="TexSubImage3D" offset="372" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4115" large="true"/>
-    </function>
-
-    <function name="CopyTexSubImage3D" offset="373" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4123"/>
-    </function>
-
-    <!-- GL_ARB_multitexture -->
-    <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false">
-        <param name="texture" type="GLenum"/>
-        <glx rop="197"/>
-    </function>
-
-    <function name="ClientActiveTextureARB" alias="ClientActiveTexture" static_dispatch="false">
-        <param name="texture" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultiTexCoord4fARB" alias="MultiTexCoord4f" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es1_EXT.xml b/src/mesa/es/glapi/es1_EXT.xml
deleted file mode 100644 (file)
index d4abd81..0000000
+++ /dev/null
@@ -1,699 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<!-- OpenGL ES 1.x extensions -->
-
-<OpenGLAPI>
-
-<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_blend_equation_separate" number="1">
-    <enum name="BLEND_EQUATION_RGB_OES"        count="1"  value="0x8009">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_EQUATION_ALPHA_OES"      count="1"  value="0x883D">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="BlendEquationSeparateOES" offset="assign">
-        <param name="modeRGB" type="GLenum"/>
-        <param name="modeA" type="GLenum"/>
-        <glx rop="4228"/>
-    </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_blend_func_separate" number="2">
-    <enum name="BLEND_DST_RGB_OES"             count="1"  value="0x80C8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC_RGB_OES"             count="1"  value="0x80C9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_DST_ALPHA_OES"           count="1"  value="0x80CA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC_ALPHA_OES"           count="1"  value="0x80CB">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="BlendFuncSeparateOES" offset="assign">
-        <param name="sfactorRGB" type="GLenum"/>
-        <param name="dfactorRGB" type="GLenum"/>
-        <param name="sfactorAlpha" type="GLenum"/>
-        <param name="dfactorAlpha" type="GLenum"/>
-        <glx rop="4134"/>
-    </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_blend_subtract" number="3">
-    <enum name="FUNC_ADD_OES"                             value="0x8006"/>
-    <enum name="BLEND_EQUATION_OES"            count="1"  value="0x8009">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FUNC_SUBTRACT_OES"                        value="0x800A"/>
-    <enum name="FUNC_REVERSE_SUBTRACT_OES"                value="0x800B"/>
-
-    <function name="BlendEquationOES" offset="337">
-        <param name="mode" type="GLenum"/>
-        <glx rop="4097"/>
-    </function>
-</category>
-
-<!-- core addition to es1.0 and later -->
-<category name="GL_OES_byte_coordinates" number="4">
-    <enum name="BYTE"                                     value="0x1400"/>
-</category>
-
-<!-- optional for es1.1 -->
-<category name="GL_OES_draw_texture" number="7">
-    <enum name="TEXTURE_CROP_RECT_OES"                    value="0x8B9D"/>
-
-    <function name="DrawTexiOES" offset="assign">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-        <param name="width" type="GLint"/>
-        <param name="height" type="GLint"/>
-    </function>
-
-    <function name="DrawTexivOES" offset="assign">
-        <param name="coords" type="const GLint *" count="5"/>
-    </function>
-
-    <function name="DrawTexfOES" offset="assign">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="width" type="GLfloat"/>
-        <param name="height" type="GLfloat"/>
-    </function>
-
-    <function name="DrawTexfvOES" offset="assign">
-        <param name="coords" type="const GLfloat *" count="5"/>
-    </function>
-
-    <function name="DrawTexsOES" offset="assign">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="width" type="GLshort"/>
-        <param name="height" type="GLshort"/>
-    </function>
-
-    <function name="DrawTexsvOES" offset="assign">
-        <param name="coords" type="const GLshort *" count="5"/>
-    </function>
-
-    <function name="DrawTexxOES" offset="assign">
-        <param name="x" type="GLfixed"/>
-        <param name="y" type="GLfixed"/>
-        <param name="z" type="GLfixed"/>
-        <param name="width" type="GLfixed"/>
-        <param name="height" type="GLfixed"/>
-    </function>
-
-    <function name="DrawTexxvOES" offset="assign">
-        <param name="coords" type="const GLfixed *" count="5"/>
-    </function>
-
-    <!-- TexParameter{ifx}v is skipped here -->
-</category>
-
-<!-- core addition to es1.0 and later -->
-<category name="GL_OES_fixed_point" number="9">
-    <enum name="FIXED_OES"                                value="0x140C"/>
-
-    <!-- additon to es1.0 -->
-    <function name="AlphaFuncxOES" alias="AlphaFuncx">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLclampx"/>
-    </function>
-
-    <function name="ClearColorxOES" alias="ClearColorx">
-        <param name="red" type="GLclampx"/>
-        <param name="green" type="GLclampx"/>
-        <param name="blue" type="GLclampx"/>
-        <param name="alpha" type="GLclampx"/>
-    </function>
-
-    <function name="ClearDepthxOES" alias="ClearDepthx">
-        <param name="depth" type="GLclampx"/>
-    </function>
-
-    <function name="Color4xOES" alias="Color4x">
-        <param name="red" type="GLfixed"/>
-        <param name="green" type="GLfixed"/>
-        <param name="blue" type="GLfixed"/>
-        <param name="alpha" type="GLfixed"/>
-    </function>
-
-    <function name="DepthRangexOES" alias="DepthRangex">
-        <param name="zNear" type="GLclampx"/>
-        <param name="zFar" type="GLclampx"/>
-    </function>
-
-    <function name="FogxOES" alias="Fogx">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="FogxvOES" alias="Fogxv">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="FrustumxOES" alias="Frustumx">
-        <param name="left" type="GLfixed"/>
-        <param name="right" type="GLfixed"/>
-        <param name="bottom" type="GLfixed"/>
-        <param name="top" type="GLfixed"/>
-        <param name="zNear" type="GLfixed"/>
-        <param name="zFar" type="GLfixed"/>
-    </function>
-
-    <function name="LightModelxOES" alias="LightModelx">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="LightModelxvOES" alias="LightModelxv">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="LightxOES" alias="Lightx">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="LightxvOES" alias="Lightxv">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="LineWidthxOES" alias="LineWidthx">
-        <param name="width" type="GLfixed"/>
-    </function>
-
-    <function name="LoadMatrixxOES" alias="LoadMatrixx">
-        <param name="m" type="const GLfixed *" count="16"/>
-    </function>
-
-    <function name="MaterialxOES" alias="Materialx">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="MaterialxvOES" alias="Materialxv">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="MultiTexCoord4xOES" alias="MultiTexCoord4x">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfixed"/>
-        <param name="t" type="GLfixed"/>
-        <param name="r" type="GLfixed"/>
-        <param name="q" type="GLfixed"/>
-    </function>
-
-    <function name="MultMatrixxOES" alias="MultMatrixx">
-        <param name="m" type="const GLfixed *" count="16"/>
-    </function>
-
-    <function name="Normal3xOES" alias="Normal3x">
-        <param name="nx" type="GLfixed"/>
-        <param name="ny" type="GLfixed"/>
-        <param name="nz" type="GLfixed"/>
-    </function>
-
-    <function name="OrthoxOES" alias="Orthox">
-        <param name="left" type="GLfixed"/>
-        <param name="right" type="GLfixed"/>
-        <param name="bottom" type="GLfixed"/>
-        <param name="top" type="GLfixed"/>
-        <param name="zNear" type="GLfixed"/>
-        <param name="zFar" type="GLfixed"/>
-    </function>
-
-    <function name="PointSizexOES" alias="PointSizex">
-        <param name="size" type="GLfixed"/>
-    </function>
-
-    <function name="PolygonOffsetxOES" alias="PolygonOffsetx">
-        <param name="factor" type="GLfixed"/>
-        <param name="units" type="GLfixed"/>
-    </function>
-
-    <function name="RotatexOES" alias="Rotatex">
-        <param name="angle" type="GLfixed"/>
-        <param name="x" type="GLfixed"/>
-        <param name="y" type="GLfixed"/>
-        <param name="z" type="GLfixed"/>
-    </function>
-
-    <function name="SampleCoveragexOES" alias="SampleCoveragex">
-        <param name="value" type="GLclampx"/>
-        <param name="invert" type="GLboolean"/>
-    </function>
-
-    <function name="ScalexOES" alias="Scalex">
-        <param name="x" type="GLfixed"/>
-        <param name="y" type="GLfixed"/>
-        <param name="z" type="GLfixed"/>
-    </function>
-
-    <function name="TexEnvxOES" alias="TexEnvx">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="TexEnvxvOES" alias="TexEnvxv">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-
-    <function name="TexParameterxOES" alias="TexParameterx">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="TranslatexOES" alias="Translatex">
-        <param name="x" type="GLfixed"/>
-        <param name="y" type="GLfixed"/>
-        <param name="z" type="GLfixed"/>
-    </function>
-
-    <!-- additon to es1.1 -->
-    <function name="ClipPlanexOES" alias="ClipPlanex">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="const GLfixed *" count="4"/>
-    </function>
-
-    <function name="GetClipPlanexOES" alias="GetClipPlanex">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="GLfixed *" output="true" count="4"/>
-    </function>
-
-    <function name="GetFixedvOES" alias="GetFixedv">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetLightxvOES" alias="GetLightxv">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetMaterialxvOES" alias="GetMaterialxv">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetTexEnvxvOES" alias="GetTexEnvxv">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetTexParameterxvOES" alias="GetTexParameterxv">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="PointParameterxOES" alias="PointParameterx">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfixed"/>
-    </function>
-
-    <function name="PointParameterxvOES" alias="PointParameterxv">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *"/>
-    </function>
-
-    <function name="TexParameterxvOES" alias="TexParameterxv">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_framebuffer_object" number="10">
-    <enum name="NONE_OES"                                 value="0"/>
-    <enum name="INVALID_FRAMEBUFFER_OPERATION_OES"        value="0x0506"/>
-    <enum name="RGBA4_OES"                                value="0x8056"/>
-    <enum name="RGB5_A1_OES"                              value="0x8057"/>
-    <enum name="DEPTH_COMPONENT16_OES"                    value="0x81A5"/>
-
-    <enum name="MAX_RENDERBUFFER_SIZE_OES"                value="0x84E8"/>
-    <enum name="FRAMEBUFFER_BINDING_OES"                  value="0x8CA6"/>
-    <enum name="RENDERBUFFER_BINDING_OES"                 value="0x8CA7"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_OES"   value="0x8CD0"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_OES"   value="0x8CD1"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_OES" value="0x8CD2"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_OES" value="0x8CD3"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>
-    <enum name="FRAMEBUFFER_COMPLETE_OES"                 value="0x8CD5"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_OES"    value="0x8CD6"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_OES" value="0x8CD7"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_OES"    value="0x8CD9"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_OES"       value="0x8CDA"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_OES"   value="0x8CDB"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_OES"   value="0x8CDC"/>
-    <enum name="FRAMEBUFFER_UNSUPPORTED_OES"              value="0x8CDD"/>
-    <enum name="COLOR_ATTACHMENT0_OES"                    value="0x8CE0"/>
-    <enum name="DEPTH_ATTACHMENT_OES"                     value="0x8D00"/>
-    <enum name="STENCIL_ATTACHMENT_OES"                   value="0x8D20"/>
-    <enum name="FRAMEBUFFER_OES"                          value="0x8D40"/>
-    <enum name="RENDERBUFFER_OES"                         value="0x8D41"/>
-    <enum name="RENDERBUFFER_WIDTH_OES"                   value="0x8D42"/>
-    <enum name="RENDERBUFFER_HEIGHT_OES"                  value="0x8D43"/>
-    <enum name="RENDERBUFFER_INTERNAL_FORMAT_OES"         value="0x8D44"/>
-    <enum name="STENCIL_INDEX1_OES"                       value="0x8D46"/>
-    <enum name="STENCIL_INDEX4_OES"                       value="0x8D47"/>
-    <enum name="STENCIL_INDEX8_OES"                       value="0x8D48"/>
-    <enum name="RENDERBUFFER_RED_SIZE_OES"                value="0x8D50"/>
-    <enum name="RENDERBUFFER_GREEN_SIZE_OES"              value="0x8D51"/>
-    <enum name="RENDERBUFFER_BLUE_SIZE_OES"               value="0x8D52"/>
-    <enum name="RENDERBUFFER_ALPHA_SIZE_OES"              value="0x8D53"/>
-    <enum name="RENDERBUFFER_DEPTH_SIZE_OES"              value="0x8D54"/>
-    <enum name="RENDERBUFFER_STENCIL_SIZE_OES"            value="0x8D55"/>
-    <enum name="RGB565_OES"                               value="0x8D62"/>
-
-    <function name="BindFramebufferOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="framebuffer" type="GLuint"/>
-    </function>
-
-    <function name="BindRenderbufferOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="CheckFramebufferStatusOES" offset="assign">
-        <param name="target" type="GLenum"/>
-       <return type="GLenum"/>
-    </function>
-
-    <function name="DeleteFramebuffersOES" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="const GLuint *" count="n"/>
-    </function>
-
-    <function name="DeleteRenderbuffersOES" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="const GLuint *" count="n"/>
-    </function>
-
-    <function name="FramebufferRenderbufferOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="renderbuffertarget" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="FramebufferTexture2DOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-    </function>
-
-    <function name="GenerateMipmapOES" offset="assign">
-        <param name="target" type="GLenum"/>
-    </function>
-
-    <function name="GenFramebuffersOES" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
-    </function>
-
-    <function name="GenRenderbuffersOES" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
-    </function>
-
-    <function name="GetFramebufferAttachmentParameterivOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="GetRenderbufferParameterivOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="IsFramebufferOES" offset="assign">
-        <param name="framebuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-
-    <function name="IsRenderbufferOES" offset="assign">
-        <param name="renderbuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-
-    <function name="RenderbufferStorageOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-    </function>
-</category>
-
-<!-- core addition to es1.1 -->
-<category name="GL_OES_matrix_get" number="11">
-    <enum name="MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES"   value="0x898D"/>
-    <enum name="PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES"  value="0x898E"/>
-    <enum name="TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES"    value="0x898F"/>
-</category>
-
-<!-- optional for es1.1 -->
-<category name="GL_OES_matrix_palette" number="12">
-    <enum name="MAX_VERTEX_UNITS_OES"                     value="0x86A4"/>
-    <enum name="WEIGHT_ARRAY_TYPE_OES"                    value="0x86A9"/>
-    <enum name="WEIGHT_ARRAY_STRIDE_OES"                  value="0x86AA"/>
-    <enum name="WEIGHT_ARRAY_SIZE_OES"                    value="0x86AB"/>
-    <enum name="WEIGHT_ARRAY_POINTER_OES"                 value="0x86AC"/>
-    <enum name="WEIGHT_ARRAY_OES"                         value="0x86AD"/>
-    <enum name="MATRIX_PALETTE_OES"                       value="0x8840"/>
-    <enum name="MAX_PALETTE_MATRICES_OES"                 value="0x8842"/>
-    <enum name="CURRENT_PALETTE_MATRIX_OES"               value="0x8843"/>
-    <enum name="MATRIX_INDEX_ARRAY_OES"                   value="0x8844"/>
-    <enum name="MATRIX_INDEX_ARRAY_SIZE_OES"              value="0x8846"/>
-    <enum name="MATRIX_INDEX_ARRAY_TYPE_OES"              value="0x8847"/>
-    <enum name="MATRIX_INDEX_ARRAY_STRIDE_OES"            value="0x8848"/>
-    <enum name="MATRIX_INDEX_ARRAY_POINTER_OES"           value="0x8849"/>
-    <enum name="WEIGHT_ARRAY_BUFFER_BINDING_OES"          value="0x889E"/>
-    <enum name="MATRIX_INDEX_ARRAY_BUFFER_BINDING_OES"    value="0x8B9E"/>
-
-    <function name="CurrentPaletteMatrixOES">
-        <param name="matrixpaletteindex" type="GLuint"/>
-    </function>
-
-    <function name="LoadPaletteFromModelViewMatrixOES">
-    </function>
-
-    <function name="MatrixIndexPointerOES">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-
-    <function name="WeightPointerOES">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-</category>
-
-<!-- required for es1.1 -->
-<category name="GL_OES_point_size_array" number="14">
-    <enum name="POINT_SIZE_ARRAY_TYPE_OES"                value="0x898A"/>
-    <enum name="POINT_SIZE_ARRAY_STRIDE_OES"             value="0x898B"/>
-    <enum name="POINT_SIZE_ARRAY_POINTER_OES"            value="0x898C"/>
-    <enum name="POINT_SIZE_ARRAY_OES"                     value="0x8B9C"/>
-    <enum name="POINT_SIZE_ARRAY_BUFFER_BINDING_OES"     value="0x8B9F"/>
-
-    <function name="PointSizePointerOES" offset="assign">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-</category>
-
-<!-- required for es1.1 -->
-<category name="GL_OES_point_sprite" number="15">
-    <enum name="POINT_SPRITE_OES"                         value="0x8861"/>
-    <enum name="COORD_REPLACE_OES"                       value="0x8862"/>
-</category>
-
-<!-- optional for es1.0 -->
-<category name="GL_OES_query_matrix" number="16">
-    <function name="QueryMatrixxOES" offset="assign">
-        <param name="mantissa" type="GLfixed *" count="16" />
-        <param name="exponent" type="GLint *" count="16" />
-       <return type="GLbitfield"/>
-    </function>
-</category>
-
-<!-- required for es1.0 and later -->
-<category name="GL_OES_read_format" number="17">
-    <enum name="IMPLEMENTATION_COLOR_READ_TYPE_OES"       value="0x8B9A"/>
-    <enum name="IMPLEMENTATION_COLOR_READ_FORMAT_OES"     value="0x8B9B"/>
-</category>
-
-<!-- core addition to es1.0 and later -->
-<category name="GL_OES_single_precision" number="18">
-    <!-- additon to es1.0 -->
-    <function name="ClearDepthfOES" alias="ClearDepthf">
-        <param name="depth" type="GLclampf"/>
-    </function>
-
-    <function name="DepthRangefOES" alias="DepthRangef">
-        <param name="zNear" type="GLclampf"/>
-        <param name="zFar" type="GLclampf"/>
-    </function>
-
-    <function name="FrustumfOES" alias="Frustumf">
-        <param name="left" type="GLfloat"/>
-        <param name="right" type="GLfloat"/>
-        <param name="bottom" type="GLfloat"/>
-        <param name="top" type="GLfloat"/>
-        <param name="zNear" type="GLfloat"/>
-        <param name="zFar" type="GLfloat"/>
-    </function>
-
-    <function name="OrthofOES" alias="Orthof">
-        <param name="left" type="GLfloat"/>
-        <param name="right" type="GLfloat"/>
-        <param name="bottom" type="GLfloat"/>
-        <param name="top" type="GLfloat"/>
-        <param name="zNear" type="GLfloat"/>
-        <param name="zFar" type="GLfloat"/>
-    </function>
-
-    <!-- additon to es1.1 -->
-    <function name="ClipPlanefOES" alias="ClipPlanef">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="const GLfloat *" count="4"/>
-    </function>
-
-    <function name="GetClipPlanefOES" alias="GetClipPlanef">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="GLfloat *" output="true" count="4"/>
-    </function>
-</category>
-
-<!-- part of es1.1 extension pack -->
-<category name="GL_OES_texture_cube_map" number="20">
-    <enum name="TEXTURE_GEN_MODE_OES"                  value="0x2500"/>
-    <enum name="NORMAL_MAP_OES"                        value="0x8511"/>
-    <enum name="REFLECTION_MAP_OES"                    value="0x8512"/>
-    <enum name="TEXTURE_CUBE_MAP_OES"                  value="0x8513"/>
-    <enum name="TEXTURE_BINDING_CUBE_MAP_OES"          value="0x8514"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X_OES"       value="0x8515"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X_OES"       value="0x8516"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y_OES"       value="0x8517"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y_OES"       value="0x8518"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z_OES"       value="0x8519"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z_OES"       value="0x851A"/>
-    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE_OES"         value="0x851C"/>
-    <enum name="TEXTURE_GEN_STR_OES"                   value="0x8D60"/>
-
-    <function name="GetTexGenfvOES" offset="279">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="133"/>
-    </function>
-
-    <function name="GetTexGenivOES" offset="280">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="134"/>
-    </function>
-
-    <function name="GetTexGenxvOES" offset="assign">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfixed *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="TexGenfOES" offset="190">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="117"/>
-    </function>
-
-    <function name="TexGenfvOES" offset="191">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="118"/>
-    </function>
-
-    <function name="TexGeniOES" offset="192">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="119"/>
-    </function>
-
-    <function name="TexGenivOES" offset="193">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="120"/>
-    </function>
-
-    <function name="TexGenxOES" offset="assign">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-    </function>
-
-    <function name="TexGenxvOES" offset="assign">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfixed *" variable_param="pname"/>
-    </function>
-</category>
-
-<category name="GL_OES_texture_env_crossbar" number="21">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_texture_mirrored_repeat" number="22">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_EXT_texture_lod_bias" number="60">
-    <enum name="TEXTURE_FILTER_CONTROL_EXT"               value="0x8500"/>
-    <enum name="TEXTURE_LOD_BIAS_EXT"                     value="0x8501"/>
-    <enum name="MAX_TEXTURE_LOD_BIAS_EXT"                 value="0x84FD"/>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es2_API.xml b/src/mesa/es/glapi/es2_API.xml
deleted file mode 100644 (file)
index b476dbe..0000000
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<!-- OpenGL ES 2.x API -->
-
-<OpenGLAPI>
-
-<xi:include href="base2_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- core subset of OpenGL 2.0 defined in OpenGL ES 2.0 -->
-<category name="core2.0">
-    <!-- addition to base1.0 -->
-    <enum name="NONE"                                     value="0x0"/>
-    <enum name="INT"                           count="4"  value="0x1404">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="UNSIGNED_INT"                  count="4"  value="0x1405">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="STENCIL_INDEX"                            value="0x1901"/>
-    <enum name="DEPTH_COMPONENT"                          value="0x1902"/>
-
-    <function name="TexImage2D" offset="183">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/> <!-- XXX the actual type is GLenum... -->
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
-        <glx rop="110" large="true"/>
-    </function>
-
-    <!-- addition to base1.1 -->
-    <enum name="RGBA4"                                    value="0x8056"/>
-    <enum name="RGB5_A1"                                  value="0x8057"/>
-
-    <!-- addition to base1.2 -->
-    <enum name="CONSTANT_COLOR"                           value="0x8001"/>
-    <enum name="ONE_MINUS_CONSTANT_COLOR"                 value="0x8002"/>
-    <enum name="CONSTANT_ALPHA"                           value="0x8003"/>
-    <enum name="ONE_MINUS_CONSTANT_ALPHA"                 value="0x8004"/>
-    <enum name="BLEND_COLOR"                   count="4"  value="0x8005">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FUNC_ADD"                                 value="0x8006"/>
-    <enum name="BLEND_EQUATION"                count="1"  value="0x8009">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FUNC_SUBTRACT"                            value="0x800A"/>
-    <enum name="FUNC_REVERSE_SUBTRACT"                    value="0x800B"/>
-
-    <function name="BlendColor" offset="336">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-        <glx rop="4096"/>
-    </function>
-
-    <function name="BlendEquation" offset="337">
-        <param name="mode" type="GLenum"/>
-        <glx rop="4097"/>
-    </function>
-
-    <!-- addition to base1.3 -->
-    <enum name="TEXTURE_CUBE_MAP"              count="1"  value="0x8513">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_CUBE_MAP"      count="1"  value="0x8514">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X"              value="0x8515"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X"              value="0x8516"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y"              value="0x8517"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y"              value="0x8518"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z"              value="0x8519"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z"              value="0x851A"/>
-    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE"     count="1"  value="0x851C">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <!-- addition to base1.4 -->
-    <enum name="BLEND_DST_RGB"                 count="1"  value="0x80C8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC_RGB"                 count="1"  value="0x80C9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_DST_ALPHA"               count="1"  value="0x80CA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC_ALPHA"               count="1"  value="0x80CB">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_COMPONENT16"                        value="0x81A5"/>
-    <enum name="MIRRORED_REPEAT"                          value="0x8370"/>
-    <enum name="INCR_WRAP"                                value="0x8507"/>
-    <enum name="DECR_WRAP"                                value="0x8508"/>
-
-    <function name="BlendFuncSeparate" offset="assign">
-        <param name="sfactorRGB" type="GLenum"/>
-        <param name="dfactorRGB" type="GLenum"/>
-        <param name="sfactorAlpha" type="GLenum"/>
-        <param name="dfactorAlpha" type="GLenum"/>
-        <glx rop="4134"/>
-    </function>
-
-    <!-- addition to base1.5 -->
-    <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING" count="1" value="0x889F">
-        <size name="GetVertexAttribdv" mode="get"/>
-        <size name="GetVertexAttribfv" mode="get"/>
-        <size name="GetVertexAttribiv" mode="get"/>
-    </enum>
-    <enum name="STREAM_DRAW"                              value="0x88E0"/>
-
-    <!-- addition to base2.0 -->
-    <!-- base2.0 should have everything defined -->
-</category>
-
-<!-- OpenGL ES 2.0 -->
-<category name="es2.0">
-    <!-- addition to core2.0 -->
-    <enum name="LOW_FLOAT"                                    value="0x8DF0"/>
-    <enum name="MEDIUM_FLOAT"                                 value="0x8DF1"/>
-    <enum name="HIGH_FLOAT"                                   value="0x8DF2"/>
-    <enum name="LOW_INT"                                      value="0x8DF3"/>
-    <enum name="MEDIUM_INT"                                   value="0x8DF4"/>
-    <enum name="HIGH_INT"                                     value="0x8DF5"/>
-    <enum name="SHADER_BINARY_FORMATS"                        value="0x8DF8"/>
-    <enum name="NUM_SHADER_BINARY_FORMATS"                    value="0x8DF9"/>
-    <enum name="SHADER_COMPILER"                              value="0x8DFA"/>
-    <enum name="MAX_VERTEX_UNIFORM_VECTORS"                   value="0x8DFB"/>
-    <enum name="MAX_VARYING_VECTORS"                          value="0x8DFC"/>
-    <enum name="MAX_FRAGMENT_UNIFORM_VECTORS"                 value="0x8DFD"/>
-
-    <function name="GetShaderPrecisionFormat" offset="assign">
-        <param name="shadertype" type="GLenum"/>
-        <param name="precisiontype" type="GLenum"/>
-        <param name="range" type="GLint *"/>
-        <param name="precision" type="GLint *"/>
-    </function>
-
-    <function name="ReleaseShaderCompiler" offset="assign">
-    </function>
-
-    <function name="ShaderBinary" offset="assign">
-        <param name="n" type="GLsizei"/>
-        <param name="shaders" type="const GLuint *"/>
-        <param name="binaryformat" type="GLenum"/>
-        <param name="binary" type="const GLvoid *"/>
-        <param name="length" type="GLsizei"/>
-    </function>
-
-    <!-- from GL_OES_fixed_point -->
-    <enum name="FIXED"                                    value="0x140C"/>
-    <type name="fixed"   size="4"                                    />
-
-    <!-- from GL_OES_framebuffer_object -->
-    <enum name="INVALID_FRAMEBUFFER_OPERATION"                value="0x0506"/>
-    <enum name="MAX_RENDERBUFFER_SIZE"                        value="0x84E8"/>
-    <enum name="FRAMEBUFFER_BINDING"                          value="0x8CA6"/>
-    <enum name="RENDERBUFFER_BINDING"                         value="0x8CA7"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE"           value="0x8CD0"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME"           value="0x8CD1"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL"         value="0x8CD2"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" value="0x8CD3"/>
-    <enum name="FRAMEBUFFER_COMPLETE"                         value="0x8CD5"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT"            value="0x8CD6"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT"    value="0x8CD7"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS"            value="0x8CD9"/>
-    <enum name="FRAMEBUFFER_UNSUPPORTED"                      value="0x8CDD"/>
-    <enum name="COLOR_ATTACHMENT0"                            value="0x8CE0"/>
-    <enum name="DEPTH_ATTACHMENT"                             value="0x8D00"/>
-    <enum name="STENCIL_ATTACHMENT"                           value="0x8D20"/>
-    <enum name="FRAMEBUFFER"                                  value="0x8D40"/>
-    <enum name="RENDERBUFFER"                                 value="0x8D41"/>
-    <enum name="RENDERBUFFER_WIDTH"                           value="0x8D42"/>
-    <enum name="RENDERBUFFER_HEIGHT"                          value="0x8D43"/>
-    <enum name="RENDERBUFFER_INTERNAL_FORMAT"                 value="0x8D44"/>
-    <enum name="STENCIL_INDEX8"                               value="0x8D48"/>
-    <enum name="RENDERBUFFER_RED_SIZE"                        value="0x8D50"/>
-    <enum name="RENDERBUFFER_GREEN_SIZE"                      value="0x8D51"/>
-    <enum name="RENDERBUFFER_BLUE_SIZE"                       value="0x8D52"/>
-    <enum name="RENDERBUFFER_ALPHA_SIZE"                      value="0x8D53"/>
-    <enum name="RENDERBUFFER_DEPTH_SIZE"                      value="0x8D54"/>
-    <enum name="RENDERBUFFER_STENCIL_SIZE"                    value="0x8D55"/>
-    <enum name="RGB565"                                       value="0x8D62"/>
-
-    <function name="BindFramebuffer" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="framebuffer" type="GLuint"/>
-    </function>
-
-    <function name="BindRenderbuffer" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="CheckFramebufferStatus" offset="assign">
-        <param name="target" type="GLenum"/>
-       <return type="GLenum"/>
-    </function>
-
-    <function name="DeleteFramebuffers" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="const GLuint *" count="n"/>
-    </function>
-
-    <function name="DeleteRenderbuffers" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="const GLuint *" count="n"/>
-    </function>
-
-    <function name="FramebufferRenderbuffer" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="renderbuffertarget" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="FramebufferTexture2D" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-    </function>
-
-    <function name="GenerateMipmap" offset="assign">
-        <param name="target" type="GLenum"/>
-    </function>
-
-    <function name="GenFramebuffers" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
-    </function>
-
-    <function name="GenRenderbuffers" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
-    </function>
-
-    <function name="GetFramebufferAttachmentParameteriv" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="GetRenderbufferParameteriv" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="IsFramebuffer" offset="assign">
-        <param name="framebuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-
-    <function name="IsRenderbuffer" offset="assign">
-        <param name="renderbuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-
-    <function name="RenderbufferStorage" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-    </function>
-
-    <!-- from GL_OES_read_format -->
-    <enum name="IMPLEMENTATION_COLOR_READ_TYPE"           value="0x8B9A"/>
-    <enum name="IMPLEMENTATION_COLOR_READ_FORMAT"         value="0x8B9B"/>
-
-    <!-- from GL_OES_single_precision -->
-    <function name="ClearDepthf" offset="assign">
-        <param name="depth" type="GLclampf"/>
-    </function>
-
-    <function name="DepthRangef" offset="assign">
-        <param name="zNear" type="GLclampf"/>
-        <param name="zFar" type="GLclampf"/>
-    </function>
-</category>
-
-<xi:include href="es2_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="es2_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es2_COMPAT.xml b/src/mesa/es/glapi/es2_COMPAT.xml
deleted file mode 100644 (file)
index 5ecd4a1..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- This file defines the functions that are needed by Mesa.  It
-     makes sure the generated glapi headers are compatible with Mesa.
-     It mainly consists of missing functions and aliases in OpenGL ES.
--->
-
-<xi:include href="es_COMPAT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<!-- except for those defined by es_COMPAT.xml, these are also needed -->
-<category name="compat">
-    <!-- OpenGL 1.0 -->
-    <function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-        <param name="alpha" type="GLfloat"/>
-    </function>
-
-    <function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-        <param name="alpha" type="GLubyte"/>
-    </function>
-
-    <function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false">
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-    </function>
-
-    <function name="Fogf" offset="153" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="80"/>
-    </function>
-
-    <function name="Fogfv" offset="154" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="81"/>
-    </function>
-
-    <function name="Lightf" offset="159" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="86"/>
-    </function>
-
-    <function name="Lightfv" offset="160" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="87"/>
-    </function>
-
-    <function name="LightModelf" offset="163" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="90"/>
-    </function>
-
-    <function name="LightModelfv" offset="164" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="91"/>
-    </function>
-
-    <function name="Materialf" offset="169" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="96"/>
-    </function>
-
-    <function name="Materialfv" offset="170" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="97"/>
-    </function>
-
-    <function name="PointSize" offset="173" static_dispatch="false">
-        <param name="size" type="GLfloat"/>
-        <glx rop="100"/>
-    </function>
-
-    <function name="ShadeModel" offset="177" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="104"/>
-    </function>
-
-    <function name="TexEnvf" offset="184" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="111"/>
-    </function>
-
-    <function name="TexEnvfv" offset="185" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="112"/>
-    </function>
-
-    <function name="TexEnvi" offset="186" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="113"/>
-    </function>
-
-    <function name="TexEnviv" offset="187" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="114"/>
-    </function>
-
-    <function name="TexGenf" offset="190" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="117"/>
-    </function>
-
-    <function name="TexGenfv" offset="191" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="118"/>
-    </function>
-
-    <function name="TexGeni" offset="192" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="119"/>
-    </function>
-
-    <function name="TexGeniv" offset="193" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="120"/>
-    </function>
-
-    <function name="AlphaFunc" offset="240" static_dispatch="false">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLclampf"/>
-        <glx rop="159"/>
-    </function>
-
-    <function name="LogicOp" offset="242" static_dispatch="false">
-        <param name="opcode" type="GLenum"/>
-        <glx rop="161"/>
-    </function>
-
-    <function name="GetLightfv" offset="264" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="118"/>
-    </function>
-
-    <function name="GetMaterialfv" offset="269" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="123"/>
-    </function>
-
-    <function name="GetTexEnvfv" offset="276" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="130"/>
-    </function>
-
-    <function name="GetTexEnviv" offset="277" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="131"/>
-    </function>
-
-    <function name="GetTexGenfv" offset="279" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="133"/>
-    </function>
-
-    <function name="GetTexGeniv" offset="280" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="134"/>
-    </function>
-
-    <function name="LoadIdentity" offset="290" static_dispatch="false">
-        <glx rop="176"/>
-    </function>
-
-    <function name="LoadMatrixf" offset="291" static_dispatch="false">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="177"/>
-    </function>
-
-    <function name="MatrixMode" offset="293" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="179"/>
-    </function>
-
-    <function name="MultMatrixf" offset="294" static_dispatch="false">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="180"/>
-    </function>
-
-    <function name="PopMatrix" offset="297" static_dispatch="false">
-        <glx rop="183"/>
-    </function>
-
-    <function name="PushMatrix" offset="298" static_dispatch="false">
-        <glx rop="184"/>
-    </function>
-
-    <function name="Rotatef" offset="300" static_dispatch="false">
-        <param name="angle" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="186"/>
-    </function>
-
-    <function name="Scalef" offset="302" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="188"/>
-    </function>
-
-    <function name="Translatef" offset="304" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="190"/>
-    </function>
-
-    <!-- OpenGL 1.1 -->
-    <function name="ColorPointer" offset="308" static_dispatch="false">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DisableClientState" offset="309" static_dispatch="false">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="EnableClientState" offset="313" static_dispatch="false">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="NormalPointer" offset="318" static_dispatch="false">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="TexCoordPointer" offset="320" static_dispatch="false">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="VertexPointer" offset="321" static_dispatch="false">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="GetPointerv" offset="329" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **" output="true"/>
-        <glx handcode="true"/>
-    </function>
-
-    <!-- OpenGL 1.2 -->
-    <function name="TexImage3D" alias="TexImage3DOES" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
-        <glx rop="4114" large="true"/>
-    </function>
-
-    <function name="TexSubImage3D" alias="TexSubImage3DOES" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4115" large="true"/>
-    </function>
-
-    <function name="CopyTexSubImage3D" alias="CopyTexSubImage3DOES" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4123"/>
-    </function>
-
-    <!-- GL_ARB_multitexture -->
-    <function name="ActiveTextureARB" alias="ActiveTexture" static_dispatch="false">
-        <param name="texture" type="GLenum"/>
-        <glx rop="197"/>
-    </function>
-
-    <function name="ClientActiveTextureARB" offset="375" static_dispatch="false">
-        <param name="texture" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es2_EXT.xml b/src/mesa/es/glapi/es2_EXT.xml
deleted file mode 100644 (file)
index dcf9858..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<!-- OpenGL ES 2.x extensions -->
-
-<OpenGLAPI>
-
-<xi:include href="es_EXT.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<category name="GL_OES_texture_3D" number="34">
-    <enum name="TEXTURE_BINDING_3D_OES"                   value="0x806A"/>
-    <enum name="TEXTURE_3D_OES"                           value="0x806F"/>
-    <enum name="TEXTURE_WRAP_R_OES"                       value="0x8072"/>
-    <enum name="MAX_3D_TEXTURE_SIZE_OES"                  value="0x8073"/>
-    <enum name="SAMPLER_3D_OES"                           value="0x8B5F"/>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_OES" value="0x8CD4"/>
-
-    <function name="CompressedTexImage3DOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="216" handcode="client"/>
-    </function>
-
-    <function name="CompressedTexSubImage3DOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="219" handcode="client"/>
-    </function>
-
-    <function name="CopyTexSubImage3DOES" offset="373">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4123"/>
-    </function>
-
-    <function name="FramebufferTexture3DOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <glx rop="4323"/>
-    </function>
-
-    <function name="TexImage3DOES" offset="371">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
-        <glx rop="4114" large="true"/>
-    </function>
-
-    <function name="TexSubImage3DOES" offset="372">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4115" large="true"/>
-    </function>
-</category>
-
-<!-- the other name is OES_texture_float_linear -->
-<category name="OES_texture_half_float_linear" number="35">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<!-- the other name is OES_texture_float -->
-<category name="OES_texture_half_float" number="36">
-    <enum name="HALF_FLOAT_OES"                           value="0x8D61"/>
-</category>
-
-<category name="GL_OES_texture_npot" number="37">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_vertex_half_float" number="38">
-    <enum name="HALF_FLOAT_OES"                           value="0x8D61"/>
-</category>
-
-<category name="GL_EXT_texture_type_2_10_10_10_REV" number="42">
-    <enum name="UNSIGNED_INT_2_10_10_10_REV_EXT"          value="0x8368"/>
-</category>
-
-<category name="GL_OES_packed_depth_stencil" number="43">
-    <enum name="DEPTH_STENCIL_OES"                        value="0x84F9"/>
-    <enum name="UNSIGNED_INT_24_8_OES"                    value="0x84FA"/>
-    <enum name="DEPTH24_STENCIL8_OES"                     value="0x88F0"/>
-</category>
-
-<category name="GL_OES_depth_texture" number="44">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_standard_derivatives" number="45">
-    <enum name="FRAGMENT_SHADER_DERIVATIVE_HINT_OES"      value="0x8B8B"/>
-</category>
-
-<category name="GL_OES_vertex_type_10_10_10_2" number="46">
-    <enum name="UNSIGNED_INT_10_10_10_2_OES"              value="0x8DF6"/>
-    <enum name="INT_10_10_10_2_OES"                       value="0x8DF7"/>
-</category>
-
-<category name="GL_OES_get_program_binary" number="47">
-    <enum name="PROGRAM_BINARY_LENGTH_OES"                value="0x8741"/>
-    <enum name="NUM_PROGRAM_BINARY_FORMATS_OES"           value="0x87FE"/>
-    <enum name="PROGRAM_BINARY_FORMATS_OES"               value="0x87FF"/>
-
-    <function name="GetProgramBinaryOES" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *"/>
-        <param name="binaryFormat" type="GLenum *"/>
-        <param name="binary" type="GLvoid *"/>
-    </function>
-
-    <function name="ProgramBinaryOES" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="binaryFormat" type="GLenum"/>
-        <param name="binary" type="const GLvoid *"/>
-        <param name="length" type="GLint"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es_COMPAT.xml b/src/mesa/es/glapi/es_COMPAT.xml
deleted file mode 100644 (file)
index 1bd66da..0000000
+++ /dev/null
@@ -1,2646 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- This file defines the following categories
-
-         a subset of 1.0
-         a subset of 1.1
-         a subset of 1.2
-         a subset of GL_ARB_multitexture
-         GL_APPLE_vertex_array_object
-
-     to make sure the generated glapi headers are compatible with Mesa.
-     It is included by es1_COMPAT.xml and es2_COMPAT.xml.
--->
-
-<category name="1.0">
-    <type name="double"  size="8"  float="true"    glx_name="FLOAT64"/>
-    <type name="clampd"  size="8"  float="true"    glx_name="FLOAT64"/>
-
-    <type name="float"   size="4"  float="true"    glx_name="FLOAT32"/>
-    <type name="clampf"  size="4"  float="true"    glx_name="FLOAT32"/>
-
-    <type name="int"     size="4"                  glx_name="CARD32"/>
-    <type name="uint"    size="4"  unsigned="true" glx_name="CARD32"/>
-    <type name="sizei"   size="4"  unsigned="true" glx_name="CARD32"/>
-    <type name="enum"    size="4"  unsigned="true" glx_name="ENUM"/>
-    <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
-
-    <type name="short"   size="2"                  glx_name="CARD16"/>
-    <type name="ushort"  size="2"  unsigned="true" glx_name="CARD16"/>
-
-    <type name="byte"    size="1"                  glx_name="CARD8"/>
-    <type name="ubyte"   size="1"  unsigned="true" glx_name="CARD8"/>
-    <type name="boolean" size="1"  unsigned="true" glx_name="CARD8"/>
-
-    <type name="void"    size="1"/>
-
-    <function name="NewList" offset="0" static_dispatch="false">
-        <param name="list" type="GLuint"/>
-        <param name="mode" type="GLenum"/>
-        <glx sop="101"/>
-    </function>
-
-    <function name="EndList" offset="1" static_dispatch="false">
-        <glx sop="102"/>
-    </function>
-
-    <function name="CallList" offset="2" static_dispatch="false">
-        <param name="list" type="GLuint"/>
-        <glx rop="1"/>
-    </function>
-
-    <function name="CallLists" offset="3" static_dispatch="false">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="type" type="GLenum"/>
-        <param name="lists" type="const GLvoid *" variable_param="type" count="n"/>
-        <glx rop="2" large="true"/>
-    </function>
-
-    <function name="DeleteLists" offset="4" static_dispatch="false">
-        <param name="list" type="GLuint"/>
-        <param name="range" type="GLsizei"/>
-        <glx sop="103"/>
-    </function>
-
-    <function name="GenLists" offset="5" static_dispatch="false">
-        <param name="range" type="GLsizei"/>
-        <return type="GLuint"/>
-        <glx sop="104"/>
-    </function>
-
-    <function name="ListBase" offset="6" static_dispatch="false">
-        <param name="base" type="GLuint"/>
-        <glx rop="3"/>
-    </function>
-
-    <function name="Begin" offset="7" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="4"/>
-    </function>
-
-    <function name="Bitmap" offset="8" static_dispatch="false">
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="xorig" type="GLfloat"/>
-        <param name="yorig" type="GLfloat"/>
-        <param name="xmove" type="GLfloat"/>
-        <param name="ymove" type="GLfloat"/>
-        <param name="bitmap" type="const GLubyte *" img_width="width" img_height="height" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
-        <glx rop="5" large="true"/>
-    </function>
-
-    <function name="Color3b" offset="9" vectorequiv="Color3bv" static_dispatch="false">
-        <param name="red" type="GLbyte"/>
-        <param name="green" type="GLbyte"/>
-        <param name="blue" type="GLbyte"/>
-    </function>
-
-    <function name="Color3bv" offset="10" static_dispatch="false">
-        <param name="v" type="const GLbyte *" count="3"/>
-        <glx rop="6"/>
-    </function>
-
-    <function name="Color3d" offset="11" vectorequiv="Color3dv" static_dispatch="false">
-        <param name="red" type="GLdouble"/>
-        <param name="green" type="GLdouble"/>
-        <param name="blue" type="GLdouble"/>
-    </function>
-
-    <function name="Color3dv" offset="12" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="7"/>
-    </function>
-
-    <function name="Color3f" offset="13" vectorequiv="Color3fv" static_dispatch="false">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-    </function>
-
-    <function name="Color3fv" offset="14" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="8"/>
-    </function>
-
-    <function name="Color3i" offset="15" vectorequiv="Color3iv" static_dispatch="false">
-        <param name="red" type="GLint"/>
-        <param name="green" type="GLint"/>
-        <param name="blue" type="GLint"/>
-    </function>
-
-    <function name="Color3iv" offset="16" static_dispatch="false">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="9"/>
-    </function>
-
-    <function name="Color3s" offset="17" vectorequiv="Color3sv" static_dispatch="false">
-        <param name="red" type="GLshort"/>
-        <param name="green" type="GLshort"/>
-        <param name="blue" type="GLshort"/>
-    </function>
-
-    <function name="Color3sv" offset="18" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="10"/>
-    </function>
-
-    <function name="Color3ub" offset="19" vectorequiv="Color3ubv" static_dispatch="false">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-    </function>
-
-    <function name="Color3ubv" offset="20" static_dispatch="false">
-        <param name="v" type="const GLubyte *" count="3"/>
-        <glx rop="11"/>
-    </function>
-
-    <function name="Color3ui" offset="21" vectorequiv="Color3uiv" static_dispatch="false">
-        <param name="red" type="GLuint"/>
-        <param name="green" type="GLuint"/>
-        <param name="blue" type="GLuint"/>
-    </function>
-
-    <function name="Color3uiv" offset="22" static_dispatch="false">
-        <param name="v" type="const GLuint *" count="3"/>
-        <glx rop="12"/>
-    </function>
-
-    <function name="Color3us" offset="23" vectorequiv="Color3usv" static_dispatch="false">
-        <param name="red" type="GLushort"/>
-        <param name="green" type="GLushort"/>
-        <param name="blue" type="GLushort"/>
-    </function>
-
-    <function name="Color3usv" offset="24" static_dispatch="false">
-        <param name="v" type="const GLushort *" count="3"/>
-        <glx rop="13"/>
-    </function>
-
-    <function name="Color4b" offset="25" vectorequiv="Color4bv" static_dispatch="false">
-        <param name="red" type="GLbyte"/>
-        <param name="green" type="GLbyte"/>
-        <param name="blue" type="GLbyte"/>
-        <param name="alpha" type="GLbyte"/>
-    </function>
-
-    <function name="Color4bv" offset="26" static_dispatch="false">
-        <param name="v" type="const GLbyte *" count="4"/>
-        <glx rop="14"/>
-    </function>
-
-    <function name="Color4d" offset="27" vectorequiv="Color4dv" static_dispatch="false">
-        <param name="red" type="GLdouble"/>
-        <param name="green" type="GLdouble"/>
-        <param name="blue" type="GLdouble"/>
-        <param name="alpha" type="GLdouble"/>
-    </function>
-
-    <function name="Color4dv" offset="28" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="15"/>
-    </function>
-
-    <!--function name="Color4f" offset="29" vectorequiv="Color4fv" static_dispatch="false">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-        <param name="alpha" type="GLfloat"/>
-    </function-->
-
-    <function name="Color4fv" offset="30" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="16"/>
-    </function>
-
-    <function name="Color4i" offset="31" vectorequiv="Color4iv" static_dispatch="false">
-        <param name="red" type="GLint"/>
-        <param name="green" type="GLint"/>
-        <param name="blue" type="GLint"/>
-        <param name="alpha" type="GLint"/>
-    </function>
-
-    <function name="Color4iv" offset="32" static_dispatch="false">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="17"/>
-    </function>
-
-    <function name="Color4s" offset="33" vectorequiv="Color4sv" static_dispatch="false">
-        <param name="red" type="GLshort"/>
-        <param name="green" type="GLshort"/>
-        <param name="blue" type="GLshort"/>
-        <param name="alpha" type="GLshort"/>
-    </function>
-
-    <function name="Color4sv" offset="34" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="18"/>
-    </function>
-
-    <!--function name="Color4ub" offset="35" vectorequiv="Color4ubv" static_dispatch="false">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-        <param name="alpha" type="GLubyte"/>
-    </function-->
-
-    <function name="Color4ubv" offset="36" static_dispatch="false">
-        <param name="v" type="const GLubyte *" count="4"/>
-        <glx rop="19"/>
-    </function>
-
-    <function name="Color4ui" offset="37" vectorequiv="Color4uiv" static_dispatch="false">
-        <param name="red" type="GLuint"/>
-        <param name="green" type="GLuint"/>
-        <param name="blue" type="GLuint"/>
-        <param name="alpha" type="GLuint"/>
-    </function>
-
-    <function name="Color4uiv" offset="38" static_dispatch="false">
-        <param name="v" type="const GLuint *" count="4"/>
-        <glx rop="20"/>
-    </function>
-
-    <function name="Color4us" offset="39" vectorequiv="Color4usv" static_dispatch="false">
-        <param name="red" type="GLushort"/>
-        <param name="green" type="GLushort"/>
-        <param name="blue" type="GLushort"/>
-        <param name="alpha" type="GLushort"/>
-    </function>
-
-    <function name="Color4usv" offset="40" static_dispatch="false">
-        <param name="v" type="const GLushort *" count="4"/>
-        <glx rop="21"/>
-    </function>
-
-    <function name="EdgeFlag" offset="41" vectorequiv="EdgeFlagv" static_dispatch="false">
-        <param name="flag" type="GLboolean"/>
-    </function>
-
-    <function name="EdgeFlagv" offset="42" static_dispatch="false">
-        <param name="flag" type="const GLboolean *" count="1"/>
-        <glx rop="22"/>
-    </function>
-
-    <function name="End" offset="43" static_dispatch="false">
-        <glx rop="23"/>
-    </function>
-
-    <function name="Indexd" offset="44" vectorequiv="Indexdv" static_dispatch="false">
-        <param name="c" type="GLdouble"/>
-    </function>
-
-    <function name="Indexdv" offset="45" static_dispatch="false">
-        <param name="c" type="const GLdouble *" count="1"/>
-        <glx rop="24"/>
-    </function>
-
-    <function name="Indexf" offset="46" vectorequiv="Indexfv" static_dispatch="false">
-        <param name="c" type="GLfloat"/>
-    </function>
-
-    <function name="Indexfv" offset="47" static_dispatch="false">
-        <param name="c" type="const GLfloat *" count="1"/>
-        <glx rop="25"/>
-    </function>
-
-    <function name="Indexi" offset="48" vectorequiv="Indexiv" static_dispatch="false">
-        <param name="c" type="GLint"/>
-    </function>
-
-    <function name="Indexiv" offset="49" static_dispatch="false">
-        <param name="c" type="const GLint *" count="1"/>
-        <glx rop="26"/>
-    </function>
-
-    <function name="Indexs" offset="50" vectorequiv="Indexsv" static_dispatch="false">
-        <param name="c" type="GLshort"/>
-    </function>
-
-    <function name="Indexsv" offset="51" static_dispatch="false">
-        <param name="c" type="const GLshort *" count="1"/>
-        <glx rop="27"/>
-    </function>
-
-    <function name="Normal3b" offset="52" vectorequiv="Normal3bv" static_dispatch="false">
-        <param name="nx" type="GLbyte"/>
-        <param name="ny" type="GLbyte"/>
-        <param name="nz" type="GLbyte"/>
-    </function>
-
-    <function name="Normal3bv" offset="53" static_dispatch="false">
-        <param name="v" type="const GLbyte *" count="3"/>
-        <glx rop="28"/>
-    </function>
-
-    <function name="Normal3d" offset="54" vectorequiv="Normal3dv" static_dispatch="false">
-        <param name="nx" type="GLdouble"/>
-        <param name="ny" type="GLdouble"/>
-        <param name="nz" type="GLdouble"/>
-    </function>
-
-    <function name="Normal3dv" offset="55" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="29"/>
-    </function>
-
-    <!--function name="Normal3f" offset="56" vectorequiv="Normal3fv" static_dispatch="false">
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-    </function-->
-
-    <function name="Normal3fv" offset="57" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="30"/>
-    </function>
-
-    <function name="Normal3i" offset="58" vectorequiv="Normal3iv" static_dispatch="false">
-        <param name="nx" type="GLint"/>
-        <param name="ny" type="GLint"/>
-        <param name="nz" type="GLint"/>
-    </function>
-
-    <function name="Normal3iv" offset="59" static_dispatch="false">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="31"/>
-    </function>
-
-    <function name="Normal3s" offset="60" vectorequiv="Normal3sv" static_dispatch="false">
-        <param name="nx" type="GLshort"/>
-        <param name="ny" type="GLshort"/>
-        <param name="nz" type="GLshort"/>
-    </function>
-
-    <function name="Normal3sv" offset="61" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="32"/>
-    </function>
-
-    <function name="RasterPos2d" offset="62" vectorequiv="RasterPos2dv" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="RasterPos2dv" offset="63" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="33"/>
-    </function>
-
-    <function name="RasterPos2f" offset="64" vectorequiv="RasterPos2fv" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="RasterPos2fv" offset="65" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="34"/>
-    </function>
-
-    <function name="RasterPos2i" offset="66" vectorequiv="RasterPos2iv" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-    </function>
-
-    <function name="RasterPos2iv" offset="67" static_dispatch="false">
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="35"/>
-    </function>
-
-    <function name="RasterPos2s" offset="68" vectorequiv="RasterPos2sv" static_dispatch="false">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="RasterPos2sv" offset="69" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="36"/>
-    </function>
-
-    <function name="RasterPos3d" offset="70" vectorequiv="RasterPos3dv" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="RasterPos3dv" offset="71" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="37"/>
-    </function>
-
-    <function name="RasterPos3f" offset="72" vectorequiv="RasterPos3fv" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="RasterPos3fv" offset="73" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="38"/>
-    </function>
-
-    <function name="RasterPos3i" offset="74" vectorequiv="RasterPos3iv" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-    </function>
-
-    <function name="RasterPos3iv" offset="75" static_dispatch="false">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="39"/>
-    </function>
-
-    <function name="RasterPos3s" offset="76" vectorequiv="RasterPos3sv" static_dispatch="false">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="RasterPos3sv" offset="77" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="40"/>
-    </function>
-
-    <function name="RasterPos4d" offset="78" vectorequiv="RasterPos4dv" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="RasterPos4dv" offset="79" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="41"/>
-    </function>
-
-    <function name="RasterPos4f" offset="80" vectorequiv="RasterPos4fv" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="RasterPos4fv" offset="81" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="42"/>
-    </function>
-
-    <function name="RasterPos4i" offset="82" vectorequiv="RasterPos4iv" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-        <param name="w" type="GLint"/>
-    </function>
-
-    <function name="RasterPos4iv" offset="83" static_dispatch="false">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="43"/>
-    </function>
-
-    <function name="RasterPos4s" offset="84" vectorequiv="RasterPos4sv" static_dispatch="false">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-    </function>
-
-    <function name="RasterPos4sv" offset="85" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="44"/>
-    </function>
-
-    <function name="Rectd" offset="86" vectorequiv="Rectdv" static_dispatch="false">
-        <param name="x1" type="GLdouble"/>
-        <param name="y1" type="GLdouble"/>
-        <param name="x2" type="GLdouble"/>
-        <param name="y2" type="GLdouble"/>
-    </function>
-
-    <function name="Rectdv" offset="87" static_dispatch="false">
-        <param name="v1" type="const GLdouble *" count="2"/>
-        <param name="v2" type="const GLdouble *" count="2"/>
-        <glx rop="45"/>
-    </function>
-
-    <function name="Rectf" offset="88" vectorequiv="Rectfv" static_dispatch="false">
-        <param name="x1" type="GLfloat"/>
-        <param name="y1" type="GLfloat"/>
-        <param name="x2" type="GLfloat"/>
-        <param name="y2" type="GLfloat"/>
-    </function>
-
-    <function name="Rectfv" offset="89" static_dispatch="false">
-        <param name="v1" type="const GLfloat *" count="2"/>
-        <param name="v2" type="const GLfloat *" count="2"/>
-        <glx rop="46"/>
-    </function>
-
-    <function name="Recti" offset="90" vectorequiv="Rectiv" static_dispatch="false">
-        <param name="x1" type="GLint"/>
-        <param name="y1" type="GLint"/>
-        <param name="x2" type="GLint"/>
-        <param name="y2" type="GLint"/>
-    </function>
-
-    <function name="Rectiv" offset="91" static_dispatch="false">
-        <param name="v1" type="const GLint *" count="2"/>
-        <param name="v2" type="const GLint *" count="2"/>
-        <glx rop="47"/>
-    </function>
-
-    <function name="Rects" offset="92" vectorequiv="Rectsv" static_dispatch="false">
-        <param name="x1" type="GLshort"/>
-        <param name="y1" type="GLshort"/>
-        <param name="x2" type="GLshort"/>
-        <param name="y2" type="GLshort"/>
-    </function>
-
-    <function name="Rectsv" offset="93" static_dispatch="false">
-        <param name="v1" type="const GLshort *" count="2"/>
-        <param name="v2" type="const GLshort *" count="2"/>
-        <glx rop="48"/>
-    </function>
-
-    <function name="TexCoord1d" offset="94" vectorequiv="TexCoord1dv" static_dispatch="false">
-        <param name="s" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord1dv" offset="95" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="1"/>
-        <glx rop="49"/>
-    </function>
-
-    <function name="TexCoord1f" offset="96" vectorequiv="TexCoord1fv" static_dispatch="false">
-        <param name="s" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord1fv" offset="97" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="1"/>
-        <glx rop="50"/>
-    </function>
-
-    <function name="TexCoord1i" offset="98" vectorequiv="TexCoord1iv" static_dispatch="false">
-        <param name="s" type="GLint"/>
-    </function>
-
-    <function name="TexCoord1iv" offset="99" static_dispatch="false">
-        <param name="v" type="const GLint *" count="1"/>
-        <glx rop="51"/>
-    </function>
-
-    <function name="TexCoord1s" offset="100" vectorequiv="TexCoord1sv" static_dispatch="false">
-        <param name="s" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord1sv" offset="101" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="1"/>
-        <glx rop="52"/>
-    </function>
-
-    <function name="TexCoord2d" offset="102" vectorequiv="TexCoord2dv" static_dispatch="false">
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord2dv" offset="103" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="53"/>
-    </function>
-
-    <function name="TexCoord2f" offset="104" vectorequiv="TexCoord2fv" static_dispatch="false">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord2fv" offset="105" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="54"/>
-    </function>
-
-    <function name="TexCoord2i" offset="106" vectorequiv="TexCoord2iv" static_dispatch="false">
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-    </function>
-
-    <function name="TexCoord2iv" offset="107" static_dispatch="false">
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="55"/>
-    </function>
-
-    <function name="TexCoord2s" offset="108" vectorequiv="TexCoord2sv" static_dispatch="false">
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord2sv" offset="109" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="56"/>
-    </function>
-
-    <function name="TexCoord3d" offset="110" vectorequiv="TexCoord3dv" static_dispatch="false">
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord3dv" offset="111" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="57"/>
-    </function>
-
-    <function name="TexCoord3f" offset="112" vectorequiv="TexCoord3fv" static_dispatch="false">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord3fv" offset="113" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="58"/>
-    </function>
-
-    <function name="TexCoord3i" offset="114" vectorequiv="TexCoord3iv" static_dispatch="false">
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-    </function>
-
-    <function name="TexCoord3iv" offset="115" static_dispatch="false">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="59"/>
-    </function>
-
-    <function name="TexCoord3s" offset="116" vectorequiv="TexCoord3sv" static_dispatch="false">
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord3sv" offset="117" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="60"/>
-    </function>
-
-    <function name="TexCoord4d" offset="118" vectorequiv="TexCoord4dv" static_dispatch="false">
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-        <param name="q" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord4dv" offset="119" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="61"/>
-    </function>
-
-    <function name="TexCoord4f" offset="120" vectorequiv="TexCoord4fv" static_dispatch="false">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord4fv" offset="121" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="62"/>
-    </function>
-
-    <function name="TexCoord4i" offset="122" vectorequiv="TexCoord4iv" static_dispatch="false">
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-        <param name="q" type="GLint"/>
-    </function>
-
-    <function name="TexCoord4iv" offset="123" static_dispatch="false">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="63"/>
-    </function>
-
-    <function name="TexCoord4s" offset="124" vectorequiv="TexCoord4sv" static_dispatch="false">
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-        <param name="q" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord4sv" offset="125" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="64"/>
-    </function>
-
-    <function name="Vertex2d" offset="126" vectorequiv="Vertex2dv" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="Vertex2dv" offset="127" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="65"/>
-    </function>
-
-    <function name="Vertex2f" offset="128" vectorequiv="Vertex2fv" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="Vertex2fv" offset="129" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="66"/>
-    </function>
-
-    <function name="Vertex2i" offset="130" vectorequiv="Vertex2iv" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-    </function>
-
-    <function name="Vertex2iv" offset="131" static_dispatch="false">
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="67"/>
-    </function>
-
-    <function name="Vertex2s" offset="132" vectorequiv="Vertex2sv" static_dispatch="false">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="Vertex2sv" offset="133" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="68"/>
-    </function>
-
-    <function name="Vertex3d" offset="134" vectorequiv="Vertex3dv" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="Vertex3dv" offset="135" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="69"/>
-    </function>
-
-    <function name="Vertex3f" offset="136" vectorequiv="Vertex3fv" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="Vertex3fv" offset="137" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="70"/>
-    </function>
-
-    <function name="Vertex3i" offset="138" vectorequiv="Vertex3iv" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-    </function>
-
-    <function name="Vertex3iv" offset="139" static_dispatch="false">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="71"/>
-    </function>
-
-    <function name="Vertex3s" offset="140" vectorequiv="Vertex3sv" static_dispatch="false">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="Vertex3sv" offset="141" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="72"/>
-    </function>
-
-    <function name="Vertex4d" offset="142" vectorequiv="Vertex4dv" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="Vertex4dv" offset="143" static_dispatch="false">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="73"/>
-    </function>
-
-    <function name="Vertex4f" offset="144" vectorequiv="Vertex4fv" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="Vertex4fv" offset="145" static_dispatch="false">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="74"/>
-    </function>
-
-    <function name="Vertex4i" offset="146" vectorequiv="Vertex4iv" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-        <param name="w" type="GLint"/>
-    </function>
-
-    <function name="Vertex4iv" offset="147" static_dispatch="false">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="75"/>
-    </function>
-
-    <function name="Vertex4s" offset="148" vectorequiv="Vertex4sv" static_dispatch="false">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-    </function>
-
-    <function name="Vertex4sv" offset="149" static_dispatch="false">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="76"/>
-    </function>
-
-    <function name="ClipPlane" offset="150" static_dispatch="false">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="const GLdouble *" count="4"/>
-        <glx rop="77"/>
-    </function>
-
-    <function name="ColorMaterial" offset="151" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx rop="78"/>
-    </function>
-
-    <!--function name="CullFace" offset="152" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="79"/>
-    </function>
-
-    <function name="Fogf" offset="153" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="80"/>
-    </function>
-
-    <function name="Fogfv" offset="154" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="81"/>
-    </function-->
-
-    <function name="Fogi" offset="155" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="82"/>
-    </function>
-
-    <function name="Fogiv" offset="156" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="83"/>
-    </function>
-
-    <!--function name="FrontFace" offset="157" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="84"/>
-    </function>
-
-    <function name="Hint" offset="158" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx rop="85"/>
-    </function>
-
-    <function name="Lightf" offset="159" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="86"/>
-    </function>
-
-    <function name="Lightfv" offset="160" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="87"/>
-    </function-->
-
-    <function name="Lighti" offset="161" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="88"/>
-    </function>
-
-    <function name="Lightiv" offset="162" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="89"/>
-    </function>
-
-    <!--function name="LightModelf" offset="163" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="90"/>
-    </function>
-
-    <function name="LightModelfv" offset="164" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="91"/>
-    </function-->
-
-    <function name="LightModeli" offset="165" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="92"/>
-    </function>
-
-    <function name="LightModeliv" offset="166" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="93"/>
-    </function>
-
-    <function name="LineStipple" offset="167" static_dispatch="false">
-        <param name="factor" type="GLint"/>
-        <param name="pattern" type="GLushort"/>
-        <glx rop="94"/>
-    </function>
-
-    <!--function name="LineWidth" offset="168" static_dispatch="false">
-        <param name="width" type="GLfloat"/>
-        <glx rop="95"/>
-    </function>
-
-    <function name="Materialf" offset="169" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="96"/>
-    </function>
-
-    <function name="Materialfv" offset="170" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="97"/>
-    </function-->
-
-    <function name="Materiali" offset="171" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="98"/>
-    </function>
-
-    <function name="Materialiv" offset="172" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="99"/>
-    </function>
-
-    <!--function name="PointSize" offset="173" static_dispatch="false">
-        <param name="size" type="GLfloat"/>
-        <glx rop="100"/>
-    </function-->
-
-    <function name="PolygonMode" offset="174" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx rop="101"/>
-    </function>
-
-    <function name="PolygonStipple" offset="175" static_dispatch="false">
-        <param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
-        <glx rop="102"/>
-    </function>
-
-    <!--function name="Scissor" offset="176" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="103"/>
-    </function>
-
-    <function name="ShadeModel" offset="177" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="104"/>
-    </function>
-
-    <function name="TexParameterf" offset="178" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="105"/>
-    </function>
-
-    <function name="TexParameterfv" offset="179" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="106"/>
-    </function>
-
-    <function name="TexParameteri" offset="180" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="107"/>
-    </function>
-
-    <function name="TexParameteriv" offset="181" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="108"/>
-    </function-->
-
-    <function name="TexImage1D" offset="182" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
-        <glx rop="109" large="true"/>
-    </function>
-
-    <!--function name="TexImage2D" offset="183" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
-        <glx rop="110" large="true"/>
-    </function>
-
-    <function name="TexEnvf" offset="184" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="111"/>
-    </function>
-
-    <function name="TexEnvfv" offset="185" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="112"/>
-    </function>
-
-    <function name="TexEnvi" offset="186" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="113"/>
-    </function>
-
-    <function name="TexEnviv" offset="187" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="114"/>
-    </function-->
-
-    <function name="TexGend" offset="188" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLdouble"/>
-        <glx rop="115"/>
-    </function>
-
-    <function name="TexGendv" offset="189" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLdouble *" variable_param="pname"/>
-        <glx rop="116"/>
-    </function>
-
-    <!--function name="TexGenf" offset="190" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="117"/>
-    </function>
-
-    <function name="TexGenfv" offset="191" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="118"/>
-    </function>
-
-    <function name="TexGeni" offset="192" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="119"/>
-    </function>
-
-    <function name="TexGeniv" offset="193" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="120"/>
-    </function-->
-
-    <function name="FeedbackBuffer" offset="194" static_dispatch="false">
-        <param name="size" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="buffer" type="GLfloat *" output="true"/>
-        <glx sop="105" handcode="true"/>
-    </function>
-
-    <function name="SelectBuffer" offset="195" static_dispatch="false">
-        <param name="size" type="GLsizei"/>
-        <param name="buffer" type="GLuint *" output="true"/>
-        <glx sop="106" handcode="true"/>
-    </function>
-
-    <function name="RenderMode" offset="196" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <return type="GLint"/>
-        <glx sop="107" handcode="true"/>
-    </function>
-
-    <function name="InitNames" offset="197" static_dispatch="false">
-        <glx rop="121"/>
-    </function>
-
-    <function name="LoadName" offset="198" static_dispatch="false">
-        <param name="name" type="GLuint"/>
-        <glx rop="122"/>
-    </function>
-
-    <function name="PassThrough" offset="199" static_dispatch="false">
-        <param name="token" type="GLfloat"/>
-        <glx rop="123"/>
-    </function>
-
-    <function name="PopName" offset="200" static_dispatch="false">
-        <glx rop="124"/>
-    </function>
-
-    <function name="PushName" offset="201" static_dispatch="false">
-        <param name="name" type="GLuint"/>
-        <glx rop="125"/>
-    </function>
-
-    <function name="DrawBuffer" offset="202" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="126"/>
-    </function>
-
-    <!--function name="Clear" offset="203" static_dispatch="false">
-        <param name="mask" type="GLbitfield"/>
-        <glx rop="127"/>
-    </function-->
-
-    <function name="ClearAccum" offset="204" static_dispatch="false">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-        <param name="alpha" type="GLfloat"/>
-        <glx rop="128"/>
-    </function>
-
-    <function name="ClearIndex" offset="205" static_dispatch="false">
-        <param name="c" type="GLfloat"/>
-        <glx rop="129"/>
-    </function>
-
-    <!--function name="ClearColor" offset="206" static_dispatch="false">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-        <glx rop="130"/>
-    </function>
-
-    <function name="ClearStencil" offset="207" static_dispatch="false">
-        <param name="s" type="GLint"/>
-        <glx rop="131"/>
-    </function-->
-
-    <function name="ClearDepth" offset="208" static_dispatch="false">
-        <param name="depth" type="GLclampd"/>
-        <glx rop="132"/>
-    </function>
-
-    <!--function name="StencilMask" offset="209" static_dispatch="false">
-        <param name="mask" type="GLuint"/>
-        <glx rop="133"/>
-    </function>
-
-    <function name="ColorMask" offset="210" static_dispatch="false">
-        <param name="red" type="GLboolean"/>
-        <param name="green" type="GLboolean"/>
-        <param name="blue" type="GLboolean"/>
-        <param name="alpha" type="GLboolean"/>
-        <glx rop="134"/>
-    </function>
-
-    <function name="DepthMask" offset="211" static_dispatch="false">
-        <param name="flag" type="GLboolean"/>
-        <glx rop="135"/>
-    </function-->
-
-    <function name="IndexMask" offset="212" static_dispatch="false">
-        <param name="mask" type="GLuint"/>
-        <glx rop="136"/>
-    </function>
-
-    <function name="Accum" offset="213" static_dispatch="false">
-        <param name="op" type="GLenum"/>
-        <param name="value" type="GLfloat"/>
-        <glx rop="137"/>
-    </function>
-
-    <!--function name="Disable" offset="214" static_dispatch="false">
-        <param name="cap" type="GLenum"/>
-        <glx rop="138" handcode="client"/>
-    </function>
-
-    <function name="Enable" offset="215" static_dispatch="false">
-        <param name="cap" type="GLenum"/>
-        <glx rop="139" handcode="client"/>
-    </function>
-
-    <function name="Finish" offset="216" static_dispatch="false">
-        <glx sop="108" handcode="true"/>
-    </function>
-
-    <function name="Flush" offset="217" static_dispatch="false">
-        <glx sop="142" handcode="true"/>
-    </function-->
-
-    <function name="PopAttrib" offset="218" static_dispatch="false">
-        <glx rop="141"/>
-    </function>
-
-    <function name="PushAttrib" offset="219" static_dispatch="false">
-        <param name="mask" type="GLbitfield"/>
-        <glx rop="142"/>
-    </function>
-
-    <function name="Map1d" offset="220" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <param name="stride" type="GLint" client_only="true"/>
-        <param name="order" type="GLint"/>
-        <param name="points" type="const GLdouble *" variable_param="order"/>
-        <glx rop="143" handcode="true"/>
-    </function>
-
-    <function name="Map1f" offset="221" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <param name="stride" type="GLint" client_only="true"/>
-        <param name="order" type="GLint"/>
-        <param name="points" type="const GLfloat *" variable_param="order"/>
-        <glx rop="144" handcode="true"/>
-    </function>
-
-    <function name="Map2d" offset="222" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <param name="ustride" type="GLint" client_only="true"/>
-        <param name="uorder" type="GLint"/>
-        <param name="v1" type="GLdouble"/>
-        <param name="v2" type="GLdouble"/>
-        <param name="vstride" type="GLint" client_only="true"/>
-        <param name="vorder" type="GLint"/>
-        <param name="points" type="const GLdouble *" variable_param="uorder"/>
-        <glx rop="145" handcode="true"/>
-    </function>
-
-    <function name="Map2f" offset="223" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <param name="ustride" type="GLint" client_only="true"/>
-        <param name="uorder" type="GLint"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <param name="vstride" type="GLint" client_only="true"/>
-        <param name="vorder" type="GLint"/>
-        <param name="points" type="const GLfloat *" variable_param="uorder"/>
-        <glx rop="146" handcode="true"/>
-    </function>
-
-    <function name="MapGrid1d" offset="224" static_dispatch="false">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <glx rop="147"/>
-    </function>
-
-    <function name="MapGrid1f" offset="225" static_dispatch="false">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <glx rop="148"/>
-    </function>
-
-    <function name="MapGrid2d" offset="226" static_dispatch="false">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <param name="vn" type="GLint"/>
-        <param name="v1" type="GLdouble"/>
-        <param name="v2" type="GLdouble"/>
-        <glx rop="149"/>
-    </function>
-
-    <function name="MapGrid2f" offset="227" static_dispatch="false">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <param name="vn" type="GLint"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <glx rop="150"/>
-    </function>
-
-    <function name="EvalCoord1d" offset="228" vectorequiv="EvalCoord1dv" static_dispatch="false">
-        <param name="u" type="GLdouble"/>
-    </function>
-
-    <function name="EvalCoord1dv" offset="229" static_dispatch="false">
-        <param name="u" type="const GLdouble *" count="1"/>
-        <glx rop="151"/>
-    </function>
-
-    <function name="EvalCoord1f" offset="230" vectorequiv="EvalCoord1fv" static_dispatch="false">
-        <param name="u" type="GLfloat"/>
-    </function>
-
-    <function name="EvalCoord1fv" offset="231" static_dispatch="false">
-        <param name="u" type="const GLfloat *" count="1"/>
-        <glx rop="152"/>
-    </function>
-
-    <function name="EvalCoord2d" offset="232" vectorequiv="EvalCoord2dv" static_dispatch="false">
-        <param name="u" type="GLdouble"/>
-        <param name="v" type="GLdouble"/>
-    </function>
-
-    <function name="EvalCoord2dv" offset="233" static_dispatch="false">
-        <param name="u" type="const GLdouble *" count="2"/>
-        <glx rop="153"/>
-    </function>
-
-    <function name="EvalCoord2f" offset="234" vectorequiv="EvalCoord2fv" static_dispatch="false">
-        <param name="u" type="GLfloat"/>
-        <param name="v" type="GLfloat"/>
-    </function>
-
-    <function name="EvalCoord2fv" offset="235" static_dispatch="false">
-        <param name="u" type="const GLfloat *" count="2"/>
-        <glx rop="154"/>
-    </function>
-
-    <function name="EvalMesh1" offset="236" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <param name="i1" type="GLint"/>
-        <param name="i2" type="GLint"/>
-        <glx rop="155"/>
-    </function>
-
-    <function name="EvalPoint1" offset="237" static_dispatch="false">
-        <param name="i" type="GLint"/>
-        <glx rop="156"/>
-    </function>
-
-    <function name="EvalMesh2" offset="238" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <param name="i1" type="GLint"/>
-        <param name="i2" type="GLint"/>
-        <param name="j1" type="GLint"/>
-        <param name="j2" type="GLint"/>
-        <glx rop="157"/>
-    </function>
-
-    <function name="EvalPoint2" offset="239" static_dispatch="false">
-        <param name="i" type="GLint"/>
-        <param name="j" type="GLint"/>
-        <glx rop="158"/>
-    </function>
-
-    <!--function name="AlphaFunc" offset="240" static_dispatch="false">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLclampf"/>
-        <glx rop="159"/>
-    </function>
-
-    <function name="BlendFunc" offset="241" static_dispatch="false">
-        <param name="sfactor" type="GLenum"/>
-        <param name="dfactor" type="GLenum"/>
-        <glx rop="160"/>
-    </function>
-
-    <function name="LogicOp" offset="242" static_dispatch="false">
-        <param name="opcode" type="GLenum"/>
-        <glx rop="161"/>
-    </function>
-
-    <function name="StencilFunc" offset="243" static_dispatch="false">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLint"/>
-        <param name="mask" type="GLuint"/>
-        <glx rop="162"/>
-    </function>
-
-    <function name="StencilOp" offset="244" static_dispatch="false">
-        <param name="fail" type="GLenum"/>
-        <param name="zfail" type="GLenum"/>
-        <param name="zpass" type="GLenum"/>
-        <glx rop="163"/>
-    </function>
-
-    <function name="DepthFunc" offset="245" static_dispatch="false">
-        <param name="func" type="GLenum"/>
-        <glx rop="164"/>
-    </function-->
-
-    <function name="PixelZoom" offset="246" static_dispatch="false">
-        <param name="xfactor" type="GLfloat"/>
-        <param name="yfactor" type="GLfloat"/>
-        <glx rop="165"/>
-    </function>
-
-    <function name="PixelTransferf" offset="247" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="166"/>
-    </function>
-
-    <function name="PixelTransferi" offset="248" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="167"/>
-    </function>
-
-    <function name="PixelStoref" offset="249" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx sop="109" handcode="client"/>
-    </function>
-
-    <!--function name="PixelStorei" offset="250" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx sop="110" handcode="client"/>
-    </function-->
-
-    <function name="PixelMapfv" offset="251" static_dispatch="false">
-        <param name="map" type="GLenum"/>
-        <param name="mapsize" type="GLsizei" counter="true"/>
-        <param name="values" type="const GLfloat *" count="mapsize"/>
-        <glx rop="168" large="true"/>
-    </function>
-
-    <function name="PixelMapuiv" offset="252" static_dispatch="false">
-        <param name="map" type="GLenum"/>
-        <param name="mapsize" type="GLsizei" counter="true"/>
-        <param name="values" type="const GLuint *" count="mapsize"/>
-        <glx rop="169" large="true"/>
-    </function>
-
-    <function name="PixelMapusv" offset="253" static_dispatch="false">
-        <param name="map" type="GLenum"/>
-        <param name="mapsize" type="GLsizei" counter="true"/>
-        <param name="values" type="const GLushort *" count="mapsize"/>
-        <glx rop="170" large="true"/>
-    </function>
-
-    <function name="ReadBuffer" offset="254" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="171"/>
-    </function>
-
-    <function name="CopyPixels" offset="255" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <glx rop="172"/>
-    </function>
-
-    <!--function name="ReadPixels" offset="256" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="GLvoid *" output="true"  img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
-        <glx sop="111"/>
-    </function-->
-
-    <function name="DrawPixels" offset="257" static_dispatch="false">
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0" img_pad_dimensions="false"/>
-        <glx rop="173" large="true"/>
-    </function>
-
-    <!--function name="GetBooleanv" offset="258" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
-        <glx sop="112" handcode="client"/>
-    </function-->
-
-    <function name="GetClipPlane" offset="259" static_dispatch="false">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="GLdouble *" output="true" count="4"/>
-        <glx sop="113" always_array="true"/>
-    </function>
-
-    <function name="GetDoublev" offset="260" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
-        <glx sop="114" handcode="client"/>
-    </function>
-
-    <!--function name="GetError" offset="261" static_dispatch="false">
-        <return type="GLenum"/>
-        <glx sop="115" handcode="client"/>
-    </function>
-
-    <function name="GetFloatv" offset="262" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="116" handcode="client"/>
-    </function>
-
-    <function name="GetIntegerv" offset="263" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="117" handcode="client"/>
-    </function>
-
-    <function name="GetLightfv" offset="264" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="118"/>
-    </function-->
-
-    <function name="GetLightiv" offset="265" static_dispatch="false">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="119"/>
-    </function>
-
-    <function name="GetMapdv" offset="266" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="query" type="GLenum"/>
-        <param name="v" type="GLdouble *" output="true" variable_param="target query"/>
-        <glx sop="120"/>
-    </function>
-
-    <function name="GetMapfv" offset="267" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="query" type="GLenum"/>
-        <param name="v" type="GLfloat *" output="true" variable_param="target query"/>
-        <glx sop="121"/>
-    </function>
-
-    <function name="GetMapiv" offset="268" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="query" type="GLenum"/>
-        <param name="v" type="GLint *" output="true" variable_param="target query"/>
-        <glx sop="122"/>
-    </function>
-
-    <!--function name="GetMaterialfv" offset="269" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="123"/>
-    </function-->
-
-    <function name="GetMaterialiv" offset="270" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="124"/>
-    </function>
-
-    <function name="GetPixelMapfv" offset="271" static_dispatch="false">
-        <param name="map" type="GLenum"/>
-        <param name="values" type="GLfloat *" output="true" variable_param="map"/>
-        <glx sop="125"/>
-    </function>
-
-    <function name="GetPixelMapuiv" offset="272" static_dispatch="false">
-        <param name="map" type="GLenum"/>
-        <param name="values" type="GLuint *" output="true" variable_param="map"/>
-        <glx sop="126"/>
-    </function>
-
-    <function name="GetPixelMapusv" offset="273" static_dispatch="false">
-        <param name="map" type="GLenum"/>
-        <param name="values" type="GLushort *" output="true" variable_param="map"/>
-        <glx sop="127"/>
-    </function>
-
-    <function name="GetPolygonStipple" offset="274" static_dispatch="false">
-        <param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/>
-        <glx sop="128"/>
-    </function>
-
-    <!--function name="GetString" offset="275" static_dispatch="false">
-        <param name="name" type="GLenum"/>
-        <return type="const GLubyte *"/>
-        <glx sop="129" handcode="true"/>
-    </function>
-
-    <function name="GetTexEnvfv" offset="276" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="130"/>
-    </function>
-
-    <function name="GetTexEnviv" offset="277" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="131"/>
-    </function-->
-
-    <function name="GetTexGendv" offset="278" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
-        <glx sop="132"/>
-    </function>
-
-    <!--function name="GetTexGenfv" offset="279" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="133"/>
-    </function>
-
-    <function name="GetTexGeniv" offset="280" static_dispatch="false">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="134"/>
-    </function-->
-
-    <function name="GetTexImage" offset="281" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type"/>
-        <glx sop="135" dimensions_in_reply="true"/>
-    </function>
-
-    <!--function name="GetTexParameterfv" offset="282" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="136"/>
-    </function>
-
-    <function name="GetTexParameteriv" offset="283" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="137"/>
-    </function-->
-
-    <function name="GetTexLevelParameterfv" offset="284" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="138"/>
-    </function>
-
-    <function name="GetTexLevelParameteriv" offset="285" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="139"/>
-    </function>
-
-    <!--function name="IsEnabled" offset="286" static_dispatch="false">
-        <param name="cap" type="GLenum"/>
-        <return type="GLboolean"/>
-        <glx sop="140" handcode="client"/>
-    </function-->
-
-    <function name="IsList" offset="287" static_dispatch="false">
-        <param name="list" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx sop="141"/>
-    </function>
-
-    <function name="DepthRange" offset="288" static_dispatch="false">
-        <param name="zNear" type="GLclampd"/>
-        <param name="zFar" type="GLclampd"/>
-        <glx rop="174"/>
-    </function>
-
-    <function name="Frustum" offset="289" static_dispatch="false">
-        <param name="left" type="GLdouble"/>
-        <param name="right" type="GLdouble"/>
-        <param name="bottom" type="GLdouble"/>
-        <param name="top" type="GLdouble"/>
-        <param name="zNear" type="GLdouble"/>
-        <param name="zFar" type="GLdouble"/>
-        <glx rop="175"/>
-    </function>
-
-    <!--function name="LoadIdentity" offset="290" static_dispatch="false">
-        <glx rop="176"/>
-    </function>
-
-    <function name="LoadMatrixf" offset="291" static_dispatch="false">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="177"/>
-    </function-->
-
-    <function name="LoadMatrixd" offset="292" static_dispatch="false">
-        <param name="m" type="const GLdouble *" count="16"/>
-        <glx rop="178"/>
-    </function>
-
-    <!--function name="MatrixMode" offset="293" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="179"/>
-    </function>
-
-    <function name="MultMatrixf" offset="294" static_dispatch="false">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="180"/>
-    </function-->
-
-    <function name="MultMatrixd" offset="295" static_dispatch="false">
-        <param name="m" type="const GLdouble *" count="16"/>
-        <glx rop="181"/>
-    </function>
-
-    <function name="Ortho" offset="296" static_dispatch="false">
-        <param name="left" type="GLdouble"/>
-        <param name="right" type="GLdouble"/>
-        <param name="bottom" type="GLdouble"/>
-        <param name="top" type="GLdouble"/>
-        <param name="zNear" type="GLdouble"/>
-        <param name="zFar" type="GLdouble"/>
-        <glx rop="182"/>
-    </function>
-
-    <!--function name="PopMatrix" offset="297" static_dispatch="false">
-        <glx rop="183"/>
-    </function>
-
-    <function name="PushMatrix" offset="298" static_dispatch="false">
-        <glx rop="184"/>
-    </function-->
-
-    <function name="Rotated" offset="299" static_dispatch="false">
-        <param name="angle" type="GLdouble"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <glx rop="185"/>
-    </function>
-
-    <!--function name="Rotatef" offset="300" static_dispatch="false">
-        <param name="angle" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="186"/>
-    </function-->
-
-    <function name="Scaled" offset="301" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <glx rop="187"/>
-    </function>
-
-    <!--function name="Scalef" offset="302" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="188"/>
-    </function-->
-
-    <function name="Translated" offset="303" static_dispatch="false">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <glx rop="189"/>
-    </function>
-
-    <!--function name="Translatef" offset="304" static_dispatch="false">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="190"/>
-    </function>
-
-    <function name="Viewport" offset="305" static_dispatch="false">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="191"/>
-    </function-->
-</category>
-
-<category name="1.1">
-    <function name="ArrayElement" offset="306" static_dispatch="false">
-        <param name="i" type="GLint"/>
-        <glx handcode="true"/>
-    </function>
-
-    <!--function name="ColorPointer" offset="308" static_dispatch="false">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DisableClientState" offset="309" static_dispatch="false">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DrawArrays" offset="310" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <glx rop="193" handcode="true"/>
-    </function>
-
-    <function name="DrawElements" offset="311" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function-->
-
-    <function name="EdgeFlagPointer" offset="312" static_dispatch="false">
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <!--function name="EnableClientState" offset="313" static_dispatch="false">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="GetPointerv" offset="329" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **" output="true"/>
-        <glx handcode="true"/>
-    </function-->
-
-    <function name="IndexPointer" offset="314" static_dispatch="false">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="InterleavedArrays" offset="317" static_dispatch="false">
-        <param name="format" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <!--function name="NormalPointer" offset="318" static_dispatch="false">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="TexCoordPointer" offset="320" static_dispatch="false">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="VertexPointer" offset="321" static_dispatch="false">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="PolygonOffset" offset="319" static_dispatch="false">
-        <param name="factor" type="GLfloat"/>
-        <param name="units" type="GLfloat"/>
-        <glx rop="192"/>
-    </function-->
-
-    <function name="CopyTexImage1D" offset="323" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <glx rop="4119"/>
-    </function>
-
-    <!--function name="CopyTexImage2D" offset="324" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <glx rop="4120"/>
-    </function-->
-
-    <function name="CopyTexSubImage1D" offset="325" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="4121"/>
-    </function>
-
-    <!--function name="CopyTexSubImage2D" offset="326" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4122"/>
-    </function-->
-
-    <function name="TexSubImage1D" offset="332" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_xoff="xoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4099" large="true"/>
-    </function>
-
-    <!--function name="TexSubImage2D" offset="333" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4100" large="true"/>
-    </function-->
-
-    <function name="AreTexturesResident" offset="322" static_dispatch="false">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <param name="residences" type="GLboolean *" output="true" count="n"/>
-        <return type="GLboolean"/>
-        <glx sop="143" handcode="client" always_array="true"/>
-    </function>
-
-    <!--function name="BindTexture" offset="307" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <glx rop="4117"/>
-    </function>
-
-    <function name="DeleteTextures" offset="327" static_dispatch="false">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <glx sop="144"/>
-    </function>
-
-    <function name="GenTextures" offset="328" static_dispatch="false">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="GLuint *" output="true" count="n"/>
-        <glx sop="145" always_array="true"/>
-    </function>
-
-    <function name="IsTexture" offset="330" static_dispatch="false">
-        <param name="texture" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx sop="146"/>
-    </function-->
-
-    <function name="PrioritizeTextures" offset="331" static_dispatch="false">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <param name="priorities" type="const GLclampf *" count="n"/>
-        <glx rop="4118"/>
-    </function>
-
-    <function name="Indexub" offset="315" vectorequiv="Indexubv" static_dispatch="false">
-        <param name="c" type="GLubyte"/>
-    </function>
-
-    <function name="Indexubv" offset="316" static_dispatch="false">
-        <param name="c" type="const GLubyte *" count="1"/>
-        <glx rop="194"/>
-    </function>
-
-    <function name="PopClientAttrib" offset="334" static_dispatch="false">
-        <glx handcode="true"/>
-    </function>
-
-    <function name="PushClientAttrib" offset="335" static_dispatch="false">
-        <param name="mask" type="GLbitfield"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<category name="1.2">
-    <!--function name="BlendColor" offset="336" static_dispatch="false">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-        <glx rop="4096"/>
-    </function>
-
-    <function name="BlendEquation" offset="337" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="4097"/>
-    </function-->
-
-    <function name="DrawRangeElements" offset="338" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <param name="start" type="GLuint"/>
-        <param name="end" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="ColorTable" offset="339" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="const GLvoid *" img_width="width" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
-        <glx rop="2053" large="true"/>
-    </function>
-
-    <function name="ColorTableParameterfv" offset="340" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="2054"/>
-    </function>
-
-    <function name="ColorTableParameteriv" offset="341" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="2055"/>
-    </function>
-
-    <function name="CopyColorTable" offset="342" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="2056"/>
-    </function>
-
-    <function name="GetColorTable" offset="343" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
-        <glx sop="147" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetColorTableParameterfv" offset="344" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="148"/>
-    </function>
-
-    <function name="GetColorTableParameteriv" offset="345" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="149"/>
-    </function>
-
-    <function name="ColorSubTable" offset="346" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="start" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="data" type="const GLvoid *" img_width="count" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
-        <glx rop="195" large="true"/>
-    </function>
-
-    <function name="CopyColorSubTable" offset="347" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="start" type="GLsizei"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="196"/>
-    </function>
-
-    <function name="ConvolutionFilter1D" offset="348" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4101" large="true"/>
-    </function>
-
-    <function name="ConvolutionFilter2D" offset="349" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4102" large="true"/>
-    </function>
-
-    <function name="ConvolutionParameterf" offset="350" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat"/>
-        <glx rop="4103"/>
-    </function>
-
-    <function name="ConvolutionParameterfv" offset="351" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="4104"/>
-    </function>
-
-    <function name="ConvolutionParameteri" offset="352" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint"/>
-        <glx rop="4105"/>
-    </function>
-
-    <function name="ConvolutionParameteriv" offset="353" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="4106"/>
-    </function>
-
-    <function name="CopyConvolutionFilter1D" offset="354" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="4107"/>
-    </function>
-
-    <function name="CopyConvolutionFilter2D" offset="355" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4108"/>
-    </function>
-
-    <function name="GetConvolutionFilter" offset="356" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/>
-        <glx sop="150" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetConvolutionParameterfv" offset="357" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="151"/>
-    </function>
-
-    <function name="GetConvolutionParameteriv" offset="358" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="152"/>
-    </function>
-
-    <function name="GetSeparableFilter" offset="359" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="row" type="GLvoid *" output="true"/>
-        <param name="column" type="GLvoid *" output="true"/>
-        <param name="span" type="GLvoid *" output="true"/>
-        <glx sop="153" handcode="true"/>
-    </function>
-
-    <function name="SeparableFilter2D" offset="360" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="row" type="const GLvoid *"/>
-        <param name="column" type="const GLvoid *"/>
-        <glx rop="4109" handcode="true"/>
-    </function>
-
-    <function name="GetHistogram" offset="361" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="reset" type="GLboolean"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
-        <glx sop="154" dimensions_in_reply="true" img_reset="reset"/>
-    </function>
-
-    <function name="GetHistogramParameterfv" offset="362" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="155"/>
-    </function>
-
-    <function name="GetHistogramParameteriv" offset="363" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="156"/>
-    </function>
-
-    <function name="GetMinmax" offset="364" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="reset" type="GLboolean"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/>
-        <glx sop="157" img_reset="reset"/>
-    </function>
-
-    <function name="GetMinmaxParameterfv" offset="365" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="158"/>
-    </function>
-
-    <function name="GetMinmaxParameteriv" offset="366" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="159"/>
-    </function>
-
-    <function name="Histogram" offset="367" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="sink" type="GLboolean"/>
-        <glx rop="4110"/>
-    </function>
-
-    <function name="Minmax" offset="368" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="sink" type="GLboolean"/>
-        <glx rop="4111"/>
-    </function>
-
-    <function name="ResetHistogram" offset="369" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <glx rop="4112"/>
-    </function>
-
-    <function name="ResetMinmax" offset="370" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <glx rop="4113"/>
-    </function>
-
-    <!--function name="TexImage3D" offset="371" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
-        <glx rop="4114" large="true"/>
-    </function>
-
-    <function name="TexSubImage3D" offset="372" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4115" large="true"/>
-    </function>
-
-    <function name="CopyTexSubImage3D" offset="373" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4123"/>
-    </function-->
-</category>
-
-<category name="GL_ARB_multitexture" number="1">
-    <!--function name="ActiveTextureARB" offset="374" static_dispatch="false">
-        <param name="texture" type="GLenum"/>
-        <glx rop="197"/>
-    </function>
-
-    <function name="ClientActiveTextureARB" offset="375" static_dispatch="false">
-        <param name="texture" type="GLenum"/>
-        <glx handcode="true"/>
-    </function-->
-
-    <function name="MultiTexCoord1dARB" offset="376" vectorequiv="MultiTexCoord1dvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord1dvARB" offset="377" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="1"/>
-        <glx rop="198"/>
-    </function>
-
-    <function name="MultiTexCoord1fARB" offset="378" vectorequiv="MultiTexCoord1fvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord1fvARB" offset="379" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="1"/>
-        <glx rop="199"/>
-    </function>
-
-    <function name="MultiTexCoord1iARB" offset="380" vectorequiv="MultiTexCoord1ivARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord1ivARB" offset="381" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="1"/>
-        <glx rop="200"/>
-    </function>
-
-    <function name="MultiTexCoord1sARB" offset="382" vectorequiv="MultiTexCoord1svARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord1svARB" offset="383" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="1"/>
-        <glx rop="201"/>
-    </function>
-
-    <function name="MultiTexCoord2dARB" offset="384" vectorequiv="MultiTexCoord2dvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord2dvARB" offset="385" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="202"/>
-    </function>
-
-    <function name="MultiTexCoord2fARB" offset="386" vectorequiv="MultiTexCoord2fvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord2fvARB" offset="387" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="203"/>
-    </function>
-
-    <function name="MultiTexCoord2iARB" offset="388" vectorequiv="MultiTexCoord2ivARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord2ivARB" offset="389" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="204"/>
-    </function>
-
-    <function name="MultiTexCoord2sARB" offset="390" vectorequiv="MultiTexCoord2svARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord2svARB" offset="391" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="205"/>
-    </function>
-
-    <function name="MultiTexCoord3dARB" offset="392" vectorequiv="MultiTexCoord3dvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord3dvARB" offset="393" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="206"/>
-    </function>
-
-    <function name="MultiTexCoord3fARB" offset="394" vectorequiv="MultiTexCoord3fvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord3fvARB" offset="395" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="207"/>
-    </function>
-
-    <function name="MultiTexCoord3iARB" offset="396" vectorequiv="MultiTexCoord3ivARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord3ivARB" offset="397" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="208"/>
-    </function>
-
-    <function name="MultiTexCoord3sARB" offset="398" vectorequiv="MultiTexCoord3svARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord3svARB" offset="399" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="209"/>
-    </function>
-
-    <function name="MultiTexCoord4dARB" offset="400" vectorequiv="MultiTexCoord4dvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-        <param name="q" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord4dvARB" offset="401" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="210"/>
-    </function>
-
-    <!--function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function-->
-
-    <function name="MultiTexCoord4fvARB" offset="403" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="211"/>
-    </function>
-
-    <function name="MultiTexCoord4iARB" offset="404" vectorequiv="MultiTexCoord4ivARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-        <param name="q" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord4ivARB" offset="405" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="212"/>
-    </function>
-
-    <function name="MultiTexCoord4sARB" offset="406" vectorequiv="MultiTexCoord4svARB" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-        <param name="q" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord4svARB" offset="407" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="213"/>
-    </function>
-</category>
-
-<xi:include href="../../glapi/gen/APPLE_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/es_EXT.xml b/src/mesa/es/glapi/es_EXT.xml
deleted file mode 100644 (file)
index 291a53b..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "../../glapi/gen/gl_API.dtd">
-
-<!-- OpenGL ES extensions -->
-
-<OpenGLAPI>
-
-<category name="GL_OES_compressed_paletted_texture" number="6">
-    <enum name="PALETTE4_RGB8_OES"                        value="0x8B90"/>
-    <enum name="PALETTE4_RGBA8_OES"                       value="0x8B91"/>
-    <enum name="PALETTE4_R5_G6_B5_OES"                    value="0x8B92"/>
-    <enum name="PALETTE4_RGBA4_OES"                       value="0x8B93"/>
-    <enum name="PALETTE4_RGB5_A1_OES"                     value="0x8B94"/>
-    <enum name="PALETTE8_RGB8_OES"                        value="0x8B95"/>
-    <enum name="PALETTE8_RGBA8_OES"                       value="0x8B96"/>
-    <enum name="PALETTE8_R5_G6_B5_OES"                    value="0x8B97"/>
-    <enum name="PALETTE8_RGBA4_OES"                       value="0x8B98"/>
-    <enum name="PALETTE8_RGB5_A1_OES"                     value="0x8B99"/>
-</category>
-
-<!-- 23. GL_OES_EGL_image -->
-<xi:include href="../../glapi/gen/OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<category name="GL_OES_depth24" number="24">
-    <enum name="DEPTH_COMPONENT24_OES"                    value="0x81A6"/>
-</category>
-
-<category name="GL_OES_depth32" number="25">
-    <enum name="DEPTH_COMPONENT32_OES"                    value="0x81A7"/>
-</category>
-
-<category name="GL_OES_element_index_uint" number="26">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_fbo_render_mipmap" number="27">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_OES_mapbuffer" number="29">
-    <enum name="WRITE_ONLY_OES"                           value="0x88B9"/>
-    <enum name="BUFFER_ACCESS_OES"                        value="0x88BB"/>
-    <enum name="BUFFER_MAPPED_OES"                        value="0x88BC"/>
-    <enum name="BUFFER_MAP_POINTER_OES"                   value="0x88BD"/>
-
-    <function name="GetBufferPointervOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **"/>
-    </function>
-
-    <function name="MapBufferOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="access" type="GLenum"/>
-       <return type="GLvoid *"/>
-    </function>
-
-    <function name="UnmapBufferOES" offset="assign">
-        <param name="target" type="GLenum"/>
-       <return type="GLboolean"/>
-    </function>
-</category>
-
-<category name="GL_OES_rgb8_rgba8" number="30">
-    <enum name="RGB8_OES"                                 value="0x8051"/>
-    <enum name="RGBA8_OES"                                value="0x8058"/>
-</category>
-
-<category name="GL_OES_stencil1" number="31">
-    <enum name="STENCIL_INDEX1_OES"                       value="0x8D46"/>
-</category>
-
-<category name="GL_OES_stencil4" number="32">
-    <enum name="STENCIL_INDEX4_OES"                       value="0x8D47"/>
-</category>
-
-<category name="GL_OES_stencil8" number="33">
-    <enum name="STENCIL_INDEX8_OES"                       value="0x8D48"/>
-</category>
-
-<category name="GL_EXT_texture_filter_anisotropic" number="41">
-    <enum name="TEXTURE_MAX_ANISOTROPY_EXT"               value="0x84FE"/>
-    <enum name="MAX_TEXTURE_MAX_ANISOTROPY_EXT"           value="0x84FF"/>
-</category>
-
-<category name="GL_EXT_texture_compression_dxt1" number="49">
-    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
-</category>
-
-<category name="GL_EXT_texture_format_BGRA8888" number="51">
-    <enum name="BGRA_EXT"                              value="0x80E1"/>
-</category>
-
-<category name="GL_EXT_blend_minmax" number="65">
-    <enum name="MIN_EXT"                               value="0x8007"/>
-    <enum name="MAX_EXT"                               value="0x8008"/>
-</category>
-
-<category name="GL_EXT_read_format_bgra" number="66">
-    <enum name="BGRA_EXT"                              value="0x80E1"/>
-    <enum name="UNSIGNED_SHORT_4_4_4_4_REV_EXT"        value="0x8365"/>
-    <enum name="UNSIGNED_SHORT_1_5_5_5_REV_EXT"        value="0x8366"/>
-</category>
-
-<category name="GL_EXT_multi_draw_arrays" number="69">
-    <function name="MultiDrawArraysEXT" offset="assign">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint *"/> <!-- Spec bug. Should be const. -->
-        <param name="count" type="GLsizei *"/> <!-- Spec bug. Should be const. -->
-        <param name="primcount" type="GLsizei"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultiDrawElementsEXT" offset="assign">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="const GLsizei *"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid **"/>
-        <param name="primcount" type="GLsizei"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/es/glapi/gl_compare.py b/src/mesa/es/glapi/gl_compare.py
deleted file mode 100644 (file)
index 6b5e43b..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# 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
-# IBM 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.
-
-import sys
-import os.path
-import getopt
-
-GLAPI = "../../glapi/gen"
-sys.path.append(GLAPI)
-
-import gl_XML
-import glX_XML
-
-class ApiSet(object):
-    def __init__(self, api, elts=["enum", "type", "function"]):
-        self.api = api
-        self.elts = elts
-
-    def _check_enum(self, e1, e2, strict=True):
-        if e1.name != e2.name:
-            raise ValueError("%s: name mismatch" % e1.name)
-        if e1.value != e2.value:
-            raise ValueError("%s: value 0x%04x != 0x%04x"
-                    % (e1.name, e1.value, e2.value))
-
-    def _check_type(self, t1, t2, strict=True):
-        if t1.name != t2.name:
-            raise ValueError("%s: name mismatch" % t1.name)
-        if t1.type_expr.string() != t2.type_expr.string():
-            raise ValueError("%s: type %s != %s"
-                    % (t1.name, t1.type_expr.string(), t2.type_expr.string()))
-
-    def _check_function(self, f1, f2, strict=True):
-        if f1.name != f2.name:
-            raise ValueError("%s: name mismatch" % f1.name)
-        if f1.return_type != f2.return_type:
-            raise ValueError("%s: return type %s != %s"
-                    % (f1.name, f1.return_type, f2.return_type))
-        # there might be padded parameters
-        if strict and len(f1.parameters) != len(f2.parameters):
-            raise ValueError("%s: parameter length %d != %d"
-                    % (f1.name, len(f1.parameters), len(f2.parameters)))
-        if f1.assign_offset != f2.assign_offset:
-            if ((f1.assign_offset and f2.offset < 0) or
-                (f2.assign_offset and f1.offset < 0)):
-                raise ValueError("%s: assign offset %d != %d"
-                        % (f1.name, f1.assign_offset, f2.assign_offset))
-        elif not f1.assign_offset:
-            if f1.offset != f2.offset:
-                raise ValueError("%s: offset %d != %d"
-                        % (f1.name, f1.offset, f2.offset))
-
-        if strict:
-            l1 = f1.entry_points
-            l2 = f2.entry_points
-            l1.sort()
-            l2.sort()
-            if l1 != l2:
-                raise ValueError("%s: entry points %s != %s"
-                        % (f1.name, l1, l2))
-
-            l1 = f1.static_entry_points
-            l2 = f2.static_entry_points
-            l1.sort()
-            l2.sort()
-            if l1 != l2:
-                raise ValueError("%s: static entry points %s != %s"
-                        % (f1.name, l1, l2))
-
-        pad = 0
-        for i in xrange(len(f1.parameters)):
-            p1 = f1.parameters[i]
-            p2 = f2.parameters[i + pad]
-
-            if not strict and p1.is_padding != p2.is_padding:
-                if p1.is_padding:
-                    pad -= 1
-                    continue
-                else:
-                    pad += 1
-                    p2 = f2.parameters[i + pad]
-
-            if strict and p1.name != p2.name:
-                raise ValueError("%s: parameter %d name %s != %s"
-                        % (f1.name, i, p1.name, p2.name))
-            if p1.type_expr.string() != p2.type_expr.string():
-                if (strict or
-                    # special case
-                    f1.name == "TexImage2D" and p1.name != "internalformat"):
-                    raise ValueError("%s: parameter %s type %s != %s"
-                            % (f1.name, p1.name, p1.type_expr.string(),
-                               p2.type_expr.string()))
-
-    def union(self, other):
-        union = gl_XML.gl_api(None)
-
-        if "enum" in self.elts:
-            union.enums_by_name = other.enums_by_name.copy()
-            for key, val in self.api.enums_by_name.iteritems():
-                if key not in union.enums_by_name:
-                    union.enums_by_name[key] = val
-                else:
-                    self._check_enum(val, other.enums_by_name[key])
-
-        if "type" in self.elts:
-            union.types_by_name = other.types_by_name.copy()
-            for key, val in self.api.types_by_name.iteritems():
-                if key not in union.types_by_name:
-                    union.types_by_name[key] = val
-                else:
-                    self._check_type(val, other.types_by_name[key])
-
-        if "function" in self.elts:
-            union.functions_by_name = other.functions_by_name.copy()
-            for key, val in self.api.functions_by_name.iteritems():
-                if key not in union.functions_by_name:
-                    union.functions_by_name[key] = val
-                else:
-                    self._check_function(val, other.functions_by_name[key])
-
-        return union
-
-    def intersection(self, other):
-        intersection = gl_XML.gl_api(None)
-
-        if "enum" in self.elts:
-            for key, val in self.api.enums_by_name.iteritems():
-                if key in other.enums_by_name:
-                    self._check_enum(val, other.enums_by_name[key])
-                    intersection.enums_by_name[key] = val
-
-        if "type" in self.elts:
-            for key, val in self.api.types_by_name.iteritems():
-                if key in other.types_by_name:
-                    self._check_type(val, other.types_by_name[key])
-                    intersection.types_by_name[key] = val
-
-        if "function" in self.elts:
-            for key, val in self.api.functions_by_name.iteritems():
-                if key in other.functions_by_name:
-                    self._check_function(val, other.functions_by_name[key])
-                    intersection.functions_by_name[key] = val
-
-        return intersection
-
-    def difference(self, other):
-        difference = gl_XML.gl_api(None)
-
-        if "enum" in self.elts:
-            for key, val in self.api.enums_by_name.iteritems():
-                if key not in other.enums_by_name:
-                    difference.enums_by_name[key] = val
-                else:
-                    self._check_enum(val, other.enums_by_name[key])
-
-        if "type" in self.elts:
-            for key, val in self.api.types_by_name.iteritems():
-                if key not in other.types_by_name:
-                    difference.types_by_name[key] = val
-                else:
-                    self._check_type(val, other.types_by_name[key])
-
-        if "function" in self.elts:
-            for key, val in self.api.functions_by_name.iteritems():
-                if key not in other.functions_by_name:
-                    difference.functions_by_name[key] = val
-                else:
-                    self._check_function(val, other.functions_by_name[key], False)
-
-        return difference
-
-def cmp_enum(e1, e2):
-    if e1.value < e2.value:
-        return -1
-    elif e1.value > e2.value:
-        return 1
-    else:
-        return 0
-
-def cmp_type(t1, t2):
-    return t1.size - t2.size
-
-def cmp_function(f1, f2):
-    if f1.name > f2.name:
-        return 1
-    elif f1.name < f2.name:
-        return -1
-    else:
-        return 0
-
-def spaces(n, str=""):
-    spaces = n - len(str)
-    if spaces < 1:
-        spaces = 1
-    return " " * spaces
-
-def output_enum(e, indent=0):
-    attrs = 'name="%s"' % e.name
-    if e.default_count > 0:
-        tab = spaces(37, attrs)
-        attrs += '%scount="%d"' % (tab, e.default_count)
-    tab = spaces(48, attrs)
-    val = "%04x" % e.value
-    val = "0x" + val.upper()
-    attrs += '%svalue="%s"' % (tab, val)
-
-    # no child
-    if not e.functions:
-        print '%s<enum %s/>' % (spaces(indent), attrs)
-        return
-
-    print '%s<enum %s>' % (spaces(indent), attrs)
-    for key, val in e.functions.iteritems():
-        attrs = 'name="%s"' % key
-        if val[0] != e.default_count:
-            attrs += ' count="%d"' % val[0]
-        if not val[1]:
-            attrs += ' mode="get"'
-
-        print '%s<size %s/>' % (spaces(indent * 2), attrs)
-
-    print '%s</enum>' % spaces(indent)
-
-def output_type(t, indent=0):
-    tab = spaces(16, t.name)
-    attrs = 'name="%s"%ssize="%d"' % (t.name, tab, t.size)
-    ctype = t.type_expr.string()
-    if ctype.find("unsigned") != -1:
-        attrs += ' unsigned="true"'
-    elif ctype.find("signed") == -1:
-        attrs += ' float="true"'
-    print '%s<type %s/>' % (spaces(indent), attrs)
-
-def output_function(f, indent=0):
-    attrs = 'name="%s"' % f.name
-    if f.offset > 0:
-        if f.assign_offset:
-            attrs += ' offset="assign"'
-        else:
-            attrs += ' offset="%d"' % f.offset
-    print '%s<function %s>' % (spaces(indent), attrs)
-
-    for p in f.parameters:
-        attrs = 'name="%s" type="%s"' \
-                % (p.name, p.type_expr.original_string)
-        print '%s<param %s/>' % (spaces(indent * 2), attrs)
-    if f.return_type != "void":
-        attrs = 'type="%s"' % f.return_type
-        print '%s<return %s/>' % (spaces(indent * 2), attrs)
-
-    print '%s</function>' % spaces(indent)
-
-def output_category(api, indent=0):
-    enums = api.enums_by_name.values()
-    enums.sort(cmp_enum)
-    types = api.types_by_name.values()
-    types.sort(cmp_type)
-    functions = api.functions_by_name.values()
-    functions.sort(cmp_function)
-
-    for e in enums:
-        output_enum(e, indent)
-    if enums and types:
-        print
-    for t in types:
-        output_type(t, indent)
-    if enums or types:
-        print
-    for f in functions:
-        output_function(f, indent)
-        if f != functions[-1]:
-            print
-
-def is_api_empty(api):
-    return bool(not api.enums_by_name and
-                not api.types_by_name and
-                not api.functions_by_name)
-
-def show_usage(ops):
-    print "Usage: %s [-k elts] <%s> <file1> <file2>" % (sys.argv[0], "|".join(ops))
-    print "    -k elts   A comma separated string of types of elements to"
-    print "              skip.  Possible types are enum, type, and function."
-    sys.exit(1)
-
-def main():
-    ops = ["union", "intersection", "difference"]
-    elts = ["enum", "type", "function"]
-
-    try:
-        options, args = getopt.getopt(sys.argv[1:], "k:")
-    except Exception, e:
-        show_usage(ops)
-
-    if len(args) != 3:
-        show_usage(ops)
-    op, file1, file2 = args
-    if op not in ops:
-        show_usage(ops)
-
-    skips = []
-    for opt, val in options:
-        if opt == "-k":
-            skips = val.split(",")
-
-    for elt in skips:
-        try:
-            elts.remove(elt)
-        except ValueError:
-            show_usage(ops)
-
-    api1 = gl_XML.parse_GL_API(file1, glX_XML.glx_item_factory())
-    api2 = gl_XML.parse_GL_API(file2, glX_XML.glx_item_factory())
-
-    set = ApiSet(api1, elts)
-    func = getattr(set, op)
-    result = func(api2)
-
-    if not is_api_empty(result):
-        cat_name = "%s_of_%s_and_%s" \
-                % (op, os.path.basename(file1), os.path.basename(file2))
-
-        print '<?xml version="1.0"?>'
-        print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI
-        print
-        print '<OpenGLAPI>'
-        print
-        print '<category name="%s">' % (cat_name)
-        output_category(result, 4)
-        print '</category>'
-        print
-        print '</OpenGLAPI>'
-
-if __name__ == "__main__":
-    main()
diff --git a/src/mesa/es/glapi/gl_parse_header.py b/src/mesa/es/glapi/gl_parse_header.py
deleted file mode 100644 (file)
index 5382eba..0000000
+++ /dev/null
@@ -1,450 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# 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
-# IBM 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.
-
-import sys
-import os.path
-import getopt
-import re
-
-GLAPI = "../../glapi/gen"
-sys.path.append(GLAPI)
-
-class HeaderParser(object):
-    """Parser for GL header files."""
-
-    def __init__(self, verbose=0):
-        # match #if and #ifdef
-        self.IFDEF = re.compile('#\s*if(n?def\s+(?P<ifdef>\w+)|\s+(?P<if>.+))')
-        # match #endif
-        self.ENDIF = re.compile('#\s*endif')
-        # match typedef abc def;
-        self.TYPEDEF = re.compile('typedef\s+(?P<from>[\w ]+)\s+(?P<to>\w+);')
-        # match #define XYZ VAL
-        self.DEFINE = re.compile('#\s*define\s+(?P<key>\w+)(?P<value>\s+[\w"]*)?')
-        # match GLAPI
-        self.GLAPI = re.compile('^GL_?API(CALL)?\s+(?P<return>[\w\s*]+[\w*])\s+(GL)?_?APIENTRY\s+(?P<name>\w+)\s*\((?P<params>[\w\s(,*\[\])]+)\)\s*;')
-
-        self.split_params = re.compile('\s*,\s*')
-        self.split_ctype = re.compile('(\W)')
-        # ignore GL_VERSION_X_Y
-        self.ignore_enum = re.compile('GL(_ES)?_VERSION(_ES_C[ML])?_\d_\d')
-
-        self.verbose = verbose
-        self._reset()
-
-    def _reset(self):
-        """Reset to initial state."""
-        self.ifdef_levels = []
-        self.need_char = False
-
-    # use typeexpr?
-    def _format_ctype(self, ctype, fix=True):
-        """Format a ctype string, optionally fix it."""
-        # split the type string
-        tmp = self.split_ctype.split(ctype)
-        tmp = [s for s in tmp if s and s != " "]
-
-        pretty = ""
-        for i in xrange(len(tmp)):
-            # add missing GL prefix
-            if (fix and tmp[i] != "const" and tmp[i] != "*" and
-                not tmp[i].startswith("GL")):
-                tmp[i] = "GL" + tmp[i]
-
-            if i == 0:
-                pretty = tmp[i]
-            else:
-                sep = " "
-                if tmp[i - 1] == "*":
-                    sep = ""
-                pretty += sep + tmp[i]
-        return pretty
-
-    # use typeexpr?
-    def _get_ctype_attrs(self, ctype):
-        """Get the attributes of a ctype."""
-        is_float = (ctype.find("float") != -1 or ctype.find("double") != -1)
-        is_signed = not (ctype.find("unsigned")  != -1)
-
-        size = 0
-        if ctype.find("char") != -1:
-            size = 1
-        elif ctype.find("short") != -1:
-            size = 2
-        elif ctype.find("int") != -1:
-            size = 4
-        elif is_float:
-            if ctype.find("float") != -1:
-                size = 4
-            else:
-                size = 8
-
-        return (size, is_float, is_signed)
-
-    def _parse_define(self, line):
-        """Parse a #define line for an <enum>."""
-        m = self.DEFINE.search(line)
-        if not m:
-            if self.verbose and line.find("#define") >= 0:
-                print "ignore %s" % (line)
-            return None
-
-        key = m.group("key").strip()
-        val = m.group("value").strip()
-
-        # enum must begin with GL_ and be all uppercase
-        if ((not (key.startswith("GL_") and key.isupper())) or
-            (self.ignore_enum.match(key) and val == "1")):
-            if self.verbose:
-                print "ignore enum %s" % (key)
-            return None
-
-        return (key, val)
-
-    def _parse_typedef(self, line):
-        """Parse a typedef line for a <type>."""
-        m = self.TYPEDEF.search(line)
-        if not m:
-            if self.verbose and line.find("typedef") >= 0:
-                print "ignore %s" % (line)
-            return None
-
-        f = m.group("from").strip()
-        t = m.group("to").strip()
-        if not t.startswith("GL"):
-            if self.verbose:
-                print "ignore type %s" % (t)
-            return None
-        attrs = self._get_ctype_attrs(f)
-
-        return (f, t, attrs)
-
-    def _parse_gl_api(self, line):
-        """Parse a GLAPI line for a <function>."""
-        m = self.GLAPI.search(line)
-        if not m:
-            if self.verbose and line.find("APIENTRY") >= 0:
-                print "ignore %s" % (line)
-            return None
-
-        rettype = m.group("return")
-        rettype = self._format_ctype(rettype)
-        if rettype == "GLvoid":
-            rettype = ""
-
-        name = m.group("name")
-
-        param_str = m.group("params")
-        chunks = self.split_params.split(param_str)
-        chunks = [s.strip() for s in chunks]
-        if len(chunks) == 1 and (chunks[0] == "void" or chunks[0] == "GLvoid"):
-            chunks = []
-
-        params = []
-        for c in chunks:
-            # split type and variable name
-            idx = c.rfind("*")
-            if idx < 0:
-                idx = c.rfind(" ")
-            if idx >= 0:
-                idx += 1
-                ctype = c[:idx]
-                var = c[idx:]
-            else:
-                ctype = c
-                var = "unnamed"
-
-            # convert array to pointer
-            idx = var.find("[")
-            if idx >= 0:
-                var = var[:idx]
-                ctype += "*"
-
-            ctype = self._format_ctype(ctype)
-            var = var.strip()
-
-            if not self.need_char and ctype.find("GLchar") >= 0:
-                self.need_char = True
-
-            params.append((ctype, var))
-
-        return (rettype, name, params)
-
-    def _change_level(self, line):
-        """Parse a #ifdef line and change level."""
-        m = self.IFDEF.search(line)
-        if m:
-            ifdef = m.group("ifdef")
-            if not ifdef:
-                ifdef = m.group("if")
-            self.ifdef_levels.append(ifdef)
-            return True
-        m = self.ENDIF.search(line)
-        if m:
-            self.ifdef_levels.pop()
-            return True
-        return False
-
-    def _read_header(self, header):
-        """Open a header file and read its contents."""
-        lines = []
-        try:
-            fp = open(header, "rb")
-            lines = fp.readlines()
-            fp.close()
-        except IOError, e:
-            print "failed to read %s: %s" % (header, e)
-        return lines
-
-    def _cmp_enum(self, enum1, enum2):
-        """Compare two enums."""
-        # sort by length of the values as strings
-        val1 = enum1[1]
-        val2 = enum2[1]
-        ret = len(val1) - len(val2)
-        # sort by the values
-        if not ret:
-            val1 = int(val1, 16)
-            val2 = int(val2, 16)
-            ret = val1 - val2
-            # in case int cannot hold the result
-            if ret > 0:
-                ret = 1
-            elif ret < 0:
-                ret = -1
-        # sort by the names
-        if not ret:
-            if enum1[0] < enum2[0]:
-                ret = -1
-            elif enum1[0] > enum2[0]:
-                ret = 1
-        return ret
-
-    def _cmp_type(self, type1, type2):
-        """Compare two types."""
-        attrs1 = type1[2]
-        attrs2 = type2[2]
-        # sort by type size
-        ret = attrs1[0] - attrs2[0]
-        # float is larger
-        if not ret:
-            ret = attrs1[1] - attrs2[1]
-        # signed is larger
-        if not ret:
-            ret = attrs1[2] - attrs2[2]
-        # reverse
-        ret = -ret
-        return ret
-
-    def _cmp_function(self, func1, func2):
-        """Compare two functions."""
-        name1 = func1[1]
-        name2 = func2[1]
-        ret = 0
-        # sort by the names
-        if name1 < name2:
-            ret = -1
-        elif name1 > name2:
-            ret = 1
-        return ret
-
-    def _postprocess_dict(self, hdict):
-        """Post-process a header dict and return an ordered list."""
-        hlist = []
-        largest = 0
-        for key, cat in hdict.iteritems():
-            size = len(cat["enums"]) + len(cat["types"]) + len(cat["functions"])
-            # ignore empty category
-            if not size:
-                continue
-
-            cat["enums"].sort(self._cmp_enum)
-            # remove duplicates
-            dup = []
-            for i in xrange(1, len(cat["enums"])):
-                if cat["enums"][i] == cat["enums"][i - 1]:
-                    dup.insert(0, i)
-            for i in dup:
-                e = cat["enums"].pop(i)
-                if self.verbose:
-                    print "remove duplicate enum %s" % e[0]
-
-            cat["types"].sort(self._cmp_type)
-            cat["functions"].sort(self._cmp_function)
-
-            # largest category comes first
-            if size > largest:
-                hlist.insert(0, (key, cat))
-                largest = size
-            else:
-                hlist.append((key, cat))
-        return hlist
-
-    def parse(self, header):
-        """Parse a header file."""
-        self._reset()
-
-        if self.verbose:
-            print "Parsing %s" % (header)
-
-        hdict = {}
-        lines = self._read_header(header)
-        for line in lines:
-            if self._change_level(line):
-                continue
-
-            # skip until the first ifdef (i.e. __gl_h_)
-            if not self.ifdef_levels:
-                continue
-
-            cat_name = os.path.basename(header)
-            # check if we are in an extension
-            if (len(self.ifdef_levels) > 1 and
-                self.ifdef_levels[-1].startswith("GL_")):
-                cat_name = self.ifdef_levels[-1]
-
-            try:
-                cat = hdict[cat_name]
-            except KeyError:
-                cat = {
-                        "enums": [],
-                        "types": [],
-                        "functions": []
-                }
-                hdict[cat_name] = cat
-
-            key = "enums"
-            elem = self._parse_define(line)
-            if not elem:
-                key = "types"
-                elem = self._parse_typedef(line)
-            if not elem:
-                key = "functions"
-                elem = self._parse_gl_api(line)
-
-            if elem:
-                cat[key].append(elem)
-
-        if self.need_char:
-            if self.verbose:
-                print "define GLchar"
-            elem = self._parse_typedef("typedef char GLchar;")
-            cat["types"].append(elem)
-        return self._postprocess_dict(hdict)
-
-def spaces(n, str=""):
-    spaces = n - len(str)
-    if spaces < 1:
-        spaces = 1
-    return " " * spaces
-
-def output_xml(name, hlist):
-    """Output a parsed header in OpenGLAPI XML."""
-
-    for i in xrange(len(hlist)):
-        cat_name, cat = hlist[i]
-
-        print '<category name="%s">' % (cat_name)
-        indent = 4
-
-        for enum in cat["enums"]:
-            name = enum[0][3:]
-            value = enum[1]
-            tab = spaces(41, name)
-            attrs = 'name="%s"%svalue="%s"' % (name, tab, value)
-            print '%s<enum %s/>' % (spaces(indent), attrs)
-
-        if cat["enums"] and cat["types"]:
-            print
-
-        for type in cat["types"]:
-            ctype = type[0]
-            size, is_float, is_signed = type[2]
-
-            attrs = 'name="%s"' % (type[1][2:])
-            attrs += spaces(16, attrs) + 'size="%d"' % (size)
-            if is_float:
-                attrs += ' float="true"'
-            elif not is_signed:
-                attrs += ' unsigned="true"'
-
-            print '%s<type %s/>' % (spaces(indent), attrs)
-
-        for func in cat["functions"]:
-            print
-            ret = func[0]
-            name = func[1][2:]
-            params = func[2]
-
-            attrs = 'name="%s" offset="assign"' % name
-            print '%s<function %s>' % (spaces(indent), attrs)
-
-            for param in params:
-                attrs = 'name="%s" type="%s"' % (param[1], param[0])
-                print '%s<param %s/>' % (spaces(indent * 2), attrs)
-            if ret:
-                attrs = 'type="%s"' % ret
-                print '%s<return %s/>' % (spaces(indent * 2), attrs)
-
-            print '%s</function>' % spaces(indent)
-
-        print '</category>'
-        print
-
-def show_usage():
-    print "Usage: %s [-v] <header> ..." % sys.argv[0]
-    sys.exit(1)
-
-def main():
-    try:
-        args, headers = getopt.getopt(sys.argv[1:], "v")
-    except Exception, e:
-        show_usage()
-    if not headers:
-        show_usage()
-
-    verbose = 0
-    for arg in args:
-        if arg[0] == "-v":
-            verbose += 1
-
-    need_xml_header = True
-    parser = HeaderParser(verbose)
-    for h in headers:
-        h = os.path.abspath(h)
-        hlist = parser.parse(h)
-
-        if need_xml_header:
-            print '<?xml version="1.0"?>'
-            print '<!DOCTYPE OpenGLAPI SYSTEM "%s/gl_API.dtd">' % GLAPI
-            need_xml_header = False
-
-        print
-        print '<!-- %s -->' % (h)
-        print '<OpenGLAPI>'
-        print
-        output_xml(h, hlist)
-        print '</OpenGLAPI>'
-
-if __name__ == '__main__':
-    main()
diff --git a/src/mesa/es/sources.mak b/src/mesa/es/sources.mak
deleted file mode 100644 (file)
index 9bb7a6f..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-include $(MESA)/sources.mak
-
-# always use local version of GLAPI_ASM_SOURCES
-LOCAL_ES1_API_ASM := $(addprefix glapi/glapi-es1/, $(GLAPI_ASM_SOURCES))
-
-LOCAL_ES1_INCLUDES :=                  \
-       -I.                             \
-       -I./glapi/glapi-es1             \
-       -I$(MESA)/state_tracker
-
-LOCAL_ES2_API_ASM := $(subst es1,es2, $(LOCAL_ES1_API_ASM))
-LOCAL_ES2_INCLUDES := $(subst es1,es2, $(LOCAL_ES1_INCLUDES))
-
-# MESA sources
-# Ideally, the omit list should be replaced by features.
-
-MAIN_OMITTED :=                                \
-       main/api_exec.c                 \
-       main/condrender.c               \
-       main/dlopen.c                   \
-       main/get.c
-MAIN_SOURCES := $(filter-out $(MAIN_OMITTED), $(MAIN_SOURCES))
-
-VBO_OMITTED :=                         \
-       vbo/vbo_save.c                  \
-       vbo/vbo_save_api.c              \
-       vbo/vbo_save_draw.c             \
-       vbo/vbo_save_loopback.c
-VBO_SOURCES := $(filter-out $(VBO_OMITTED), $(VBO_SOURCES))
-
-STATETRACKER_OMITTED :=                                \
-       state_tracker/st_api.c                  \
-       state_tracker/st_cb_drawpixels.c        \
-       state_tracker/st_cb_feedback.c          \
-       state_tracker/st_cb_rasterpos.c         \
-       state_tracker/st_draw_feedback.c
-STATETRACKER_SOURCES := $(filter-out $(STATETRACKER_OMITTED), $(STATETRACKER_SOURCES))
-
-SHADER_OMITTED :=                      \
-       shader/atifragshader.c
-SHADER_SOURCES := $(filter-out $(SHADER_OMITTED), $(SHADER_SOURCES))
-
-MESA_ES1_SOURCES :=                    \
-       $(MAIN_SOURCES)                 \
-       $(MATH_SOURCES)                 \
-       $(MATH_XFORM_SOURCES)           \
-       $(VBO_SOURCES)                  \
-       $(TNL_SOURCES)                  \
-       $(SHADER_SOURCES)               \
-       $(SWRAST_SOURCES)               \
-       $(SWRAST_SETUP_SOURCES)         \
-       $(COMMON_DRIVER_SOURCES)        \
-       $(ASM_C_SOURCES)                \
-       $(SLANG_SOURCES)
-
-MESA_ES1_GALLIUM_SOURCES :=            \
-       $(MAIN_SOURCES)                 \
-       $(MATH_SOURCES)                 \
-       $(VBO_SOURCES)                  \
-       $(STATETRACKER_SOURCES)         \
-       $(SHADER_SOURCES)               \
-       ppc/common_ppc.c                \
-       x86/common_x86.c                \
-       $(SLANG_SOURCES)
-
-MESA_ES1_API_SOURCES :=                        \
-       $(GLAPI_SOURCES)
-
-MESA_ES1_INCLUDES := $(INCLUDE_DIRS)
-
-# right now es2 and es1 share MESA sources
-MESA_ES2_SOURCES := $(MESA_ES1_SOURCES)
-MESA_ES2_GALLIUM_SOURCES := $(MESA_ES1_GALLIUM_SOURCES)
-MESA_ES2_API_SOURCES := $(MESA_ES1_API_SOURCES)
-
-MESA_ES2_INCLUDES := $(MESA_ES1_INCLUDES)
-
-# asm is shared by any ES version and any library
-MESA_ES_ASM := $(MESA_ASM_SOURCES)
-
-# collect sources, adjust the pathes
-ES1_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_SOURCES))
-ES1_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_GALLIUM_SOURCES))
-ES1_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES1_API_SOURCES))
-
-ES2_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_SOURCES))
-ES2_GALLIUM_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_GALLIUM_SOURCES))
-ES2_API_SOURCES := $(addprefix $(MESA)/,$(MESA_ES2_API_SOURCES))
-
-# collect includes
-ES1_INCLUDES := $(LOCAL_ES1_INCLUDES) $(MESA_ES1_INCLUDES)
-ES2_INCLUDES := $(LOCAL_ES2_INCLUDES) $(MESA_ES2_INCLUDES)
-
-# collect objects, including asm
-ES1_OBJECTS :=                                 \
-       $(MESA_ES1_SOURCES:.c=.o)               \
-       $(MESA_ES_ASM:.S=.o)
-
-ES1_GALLIUM_OBJECTS :=                         \
-       $(MESA_ES1_GALLIUM_SOURCES:.c=.o)       \
-       $(MESA_ES_ASM:.S=.o)
-
-ES1_API_OBJECTS :=                             \
-       $(LOCAL_ES1_API_ASM:.S=.o)              \
-       $(MESA_ES1_API_SOURCES:.c=.o)
-
-ES2_OBJECTS :=                                 \
-       $(MESA_ES2_SOURCES:.c=.o)               \
-       $(MESA_ES_ASM:.S=.o)
-
-ES2_GALLIUM_OBJECTS :=                         \
-       $(MESA_ES2_GALLIUM_SOURCES:.c=.o)       \
-       $(MESA_ES_ASM:.S=.o)
-
-ES2_API_OBJECTS :=                             \
-       $(LOCAL_ES2_API_ASM:.S=.o)              \
-       $(MESA_ES2_API_SOURCES:.c=.o)
-
-# collect sources for makedepend
-ES1_ALL_SOURCES := $(ES1_SOURCES) $(ES1_GALLIUM_SOURCES) $(ES1_API_SOURCES)
-ES2_ALL_SOURCES := $(ES2_SOURCES) $(ES2_GALLIUM_SOURCES) $(ES2_API_SOURCES)
-
-# sort to remove duplicates
-ES1_ALL_SOURCES := $(sort $(ES1_ALL_SOURCES))
-ES2_ALL_SOURCES := $(sort $(ES2_ALL_SOURCES))
diff --git a/src/mesa/glapi/.gitignore b/src/mesa/glapi/.gitignore
deleted file mode 100644 (file)
index e706bc2..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-.cvsignore
-glX_proto_common.pyo
-glX_proto_common.pyc
-typeexpr.pyo
-typeexpr.pyc
-license.pyo
-license.pyc
-gl_XML.pyo
-gl_XML.pyc
-glX_XML.pyo
-glX_XML.pyc
diff --git a/src/mesa/glapi/gen/APPLE_object_purgeable.xml b/src/mesa/glapi/gen/APPLE_object_purgeable.xml
deleted file mode 100644 (file)
index 62fa64a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-<category name="GL_APPLE_object_purgeable" number="371">
-    <enum name="RELEASED_APPLE"               value="0x8A19"/>
-    <enum name="VOLATILE_APPLE"               value="0x8A1A"/>
-    <enum name="RETAINED_APPLE"               value="0x8A1B"/>
-    <enum name="UNDEFINED_APPLE"              value="0x8A1C"/>
-    <enum name="PURGEABLE_APPLE"    count="1" value="0x8A1D">
-       <size name="GetObjectParameterivAPPLE" count="1" mode="get"/>
-    </enum>
-
-    <enum name="BUFFER_OBJECT_APPLE"          value="0x85B3"/>
-
-    <function name="ObjectPurgeableAPPLE" offset="assign">
-        <param name="objectType" type="GLenum"/>
-        <param name="name" type="GLuint"/>
-        <param name="option" type="GLenum"/>
-       <return type="GLenum"/>
-    </function>
-
-    <function name="ObjectUnpurgeableAPPLE" offset="assign">
-        <param name="objectType" type="GLenum"/>
-        <param name="name" type="GLuint"/>
-        <param name="option" type="GLenum"/>
-       <return type="GLenum"/>
-    </function>
-
-    <function name="GetObjectParameterivAPPLE" offset="assign">
-        <param name="objectType" type="GLenum"/>
-        <param name="name" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="value" type="GLint *" output="true"/>
-    </function>
-</category>
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/APPLE_vertex_array_object.xml b/src/mesa/glapi/gen/APPLE_vertex_array_object.xml
deleted file mode 100644 (file)
index bd8427e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-<category name="GL_APPLE_vertex_array_object" number="273">
-    <enum name="VERTEX_ARRAY_BINDING_APPLE"               value="0x85B5"/>
-
-    <function name="BindVertexArrayAPPLE" offset="assign" static_dispatch="false">
-        <param name="array" type="GLuint"/>
-    </function>
-
-    <function name="DeleteVertexArraysAPPLE" offset="assign" static_dispatch="false">
-        <param name="n" type="GLsizei"/>
-       <param name="arrays" type="const GLuint *" count="n"/>
-    </function>
-
-    <function name="GenVertexArraysAPPLE" offset="assign" static_dispatch="false">
-        <param name="n" type="GLsizei"/>
-       <param name="arrays" type="GLuint *" count="n" output="true"/>
-    </function>
-
-    <function name="IsVertexArrayAPPLE" offset="assign" static_dispatch="false">
-        <param name="array" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-</category>
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_copy_buffer.xml b/src/mesa/glapi/gen/ARB_copy_buffer.xml
deleted file mode 100644 (file)
index 719816d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_ARB_copy_buffer" number="59">
-
-    <enum name="COPY_READ_BUFFER"   value="0x8F36"/>
-    <enum name="COPY_WRITE_BUFFER"  value="0x8F37"/>
-
-    <function name="CopyBufferSubData" offset="assign">
-        <param name="readTarget" type="GLenum"/>
-        <param name="writeTarget" type="GLenum"/>
-        <param name="readOffset" type="GLintptr"/>
-        <param name="writeOffset" type="GLintptr"/>
-        <param name="size" type="GLsizeiptr"/>
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_depth_clamp.xml b/src/mesa/glapi/gen/ARB_depth_clamp.xml
deleted file mode 100644 (file)
index 157c9a8..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<category name="GL_ARB_depth_clamp" number="61">
-    <enum name="DEPTH_CLAMP" count="1"  value="0x864F">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_draw_elements_base_vertex.xml b/src/mesa/glapi/gen/ARB_draw_elements_base_vertex.xml
deleted file mode 100644 (file)
index f4067f4..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_ARB_draw_elements_base_vertex" number="62">
-
-    <function name="DrawElementsBaseVertex" offset="assign">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <param name="basevertex" type="GLint"/>
-    </function>
-
-    <function name="DrawRangeElementsBaseVertex" offset="assign">
-        <param name="mode" type="GLenum"/>
-        <param name="start" type="GLuint"/>
-        <param name="end" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <param name="basevertex" type="GLint"/>
-    </function>
-
-    <function name="MultiDrawElementsBaseVertex" offset="assign">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="const GLsizei *"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid **"/>
-        <param name="primcount" type="GLsizei"/>
-        <param name="basevertex" type="const GLint *"/>
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_draw_instanced.xml b/src/mesa/glapi/gen/ARB_draw_instanced.xml
deleted file mode 100644 (file)
index 5741a58..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="3.1">
-
-  <function name="DrawArraysInstanced" offset="assign">
-    <param name="mode" type="GLenum"/>
-    <param name="first" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-  <function name="DrawElementsInstanced" offset="assign">
-    <param name="mode" type="GLenum"/>
-    <param name="count" type="GLsizei"/>
-    <param name="type" type="GLenum"/>
-    <param name="indices" type="const GLvoid *"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-</category>
-
-
-<category name="GL_ARB_draw_instanced" number="44">
-
-  <function name="DrawArraysInstancedARB" alias="DrawArraysInstanced">
-    <param name="mode" type="GLenum"/>
-    <param name="first" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-  <function name="DrawElementsInstancedARB" alias="DrawElementsInstanced">
-    <param name="mode" type="GLenum"/>
-    <param name="count" type="GLsizei"/>
-    <param name="type" type="GLenum"/>
-    <param name="indices" type="const GLvoid *"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-</category>
-
-
-<category name="GL_EXT_draw_instanced" number="327">
-
-  <function name="DrawArraysInstancedEXT"  alias="DrawArraysInstanced">
-    <param name="mode" type="GLenum"/>
-    <param name="first" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-  <function name="DrawElementsInstancedEXT" alias="DrawElementsInstanced">
-    <param name="mode" type="GLenum"/>
-    <param name="count" type="GLsizei"/>
-    <param name="type" type="GLenum"/>
-    <param name="indices" type="const GLvoid *"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-</category>
-
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_framebuffer_object.xml b/src/mesa/glapi/gen/ARB_framebuffer_object.xml
deleted file mode 100644 (file)
index e6bdcd6..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-<category name="GL_ARB_framebuffer_object" number="45">
-    <enum name="FRAMEBUFFER"                              value="0x8D40"/>
-    <enum name="READ_FRAMEBUFFER"                         value="0x8CA8"/>
-    <enum name="DRAW_FRAMEBUFFER"                         value="0x8CA9"/>
-
-    <enum name="RENDERBUFFER"                             value="0x8D41"/>
-
-    <enum name="STENCIL_INDEX1"                           value="0x8D46"/>
-    <enum name="STENCIL_INDEX4"                           value="0x8D47"/>
-    <enum name="STENCIL_INDEX8"                           value="0x8D48"/>
-    <enum name="STENCIL_INDEX16"                          value="0x8D49"/>
-
-    <enum name="RENDERBUFFER_WIDTH"              value="0x8D42"/>
-    <enum name="RENDERBUFFER_HEIGHT"             value="0x8D43"/>
-    <enum name="RENDERBUFFER_INTERNAL_FORMAT"    value="0x8D44"/>
-    <enum name="RENDERBUFFER_RED_SIZE"           value="0x8D50"/>
-    <enum name="RENDERBUFFER_GREEN_SIZE"         value="0x8D51"/>
-    <enum name="RENDERBUFFER_BLUE_SIZE"          value="0x8D52"/>
-    <enum name="RENDERBUFFER_ALPHA_SIZE"         value="0x8D53"/>
-    <enum name="RENDERBUFFER_DEPTH_SIZE"         value="0x8D54"/>
-    <enum name="RENDERBUFFER_STENCIL_SIZE"       value="0x8D55"/>
-    <enum name="RENDERBUFFER_SAMPLES"            value="0x8CAB"/>
-
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE" count="1" value="0x8CD0">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME" count="1" value="0x8CD1">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL" count="1" value="0x8CD2">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE" count="1" value="0x8CD3">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER" count="1" value="0x8CD4">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_COLOR_ENCODING" count="1" value="0x8210">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_COMPONENT_TYPE" count="1" value="0x8211">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_RED_SIZE" count="1" value="0x8212">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_GREEN_SIZE" count="1" value="0x8213">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_BLUE_SIZE" count="1" value="0x8214">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_ALPHA_SIZE" count="1" value="0x8215">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_DEPTH_SIZE" count="1" value="0x8216">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_STENCIL_SIZE" count="1" value="0x8217">
-        <size name="GetFramebufferAttachmentParameteriv" mode="get"/>
-    </enum>
-
-    <enum name="SRGB"                                      value="0x8C40"/>
-    <enum name="UNSIGNED_NORMALIZED"                       value="0x8C17"/>
-    <enum name="FRAMEBUFFER_DEFAULT"                       value="0x8218"/>
-    <enum name="INDEX"                                     value="0x8222"/>
-
-    <enum name="COLOR_ATTACHMENT0"                         value="0x8CE0"/>
-    <enum name="COLOR_ATTACHMENT1"                         value="0x8CE1"/>
-    <enum name="COLOR_ATTACHMENT2"                         value="0x8CE2"/>
-    <enum name="COLOR_ATTACHMENT3"                         value="0x8CE3"/>
-    <enum name="COLOR_ATTACHMENT4"                         value="0x8CE4"/>
-    <enum name="COLOR_ATTACHMENT5"                         value="0x8CE5"/>
-    <enum name="COLOR_ATTACHMENT6"                         value="0x8CE6"/>
-    <enum name="COLOR_ATTACHMENT7"                         value="0x8CE7"/>
-    <enum name="COLOR_ATTACHMENT8"                         value="0x8CE8"/>
-    <enum name="COLOR_ATTACHMENT9"                         value="0x8CE9"/>
-    <enum name="COLOR_ATTACHMENT10"                        value="0x8CEA"/>
-    <enum name="COLOR_ATTACHMENT11"                        value="0x8CEB"/>
-    <enum name="COLOR_ATTACHMENT12"                        value="0x8CEC"/>
-    <enum name="COLOR_ATTACHMENT13"                        value="0x8CED"/>
-    <enum name="COLOR_ATTACHMENT14"                        value="0x8CEE"/>
-    <enum name="COLOR_ATTACHMENT15"                        value="0x8CEF"/>
-    <enum name="DEPTH_ATTACHMENT"                          value="0x8D00"/>
-    <enum name="STENCIL_ATTACHMENT"                        value="0x8D20"/>
-    <enum name="DEPTH_STENCIL_ATTACHMENT"                  value="0x821A"/>
-
-    <enum name="MAX_SAMPLES"                     count="1" value="0x8D57">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="FRAMEBUFFER_COMPLETE"                      value="0x8CD5"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT"         value="0x8CD6"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT" value="0x8CD7"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER"        value="0x8CDB"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER"        value="0x8CDC"/>
-    <enum name="FRAMEBUFFER_UNSUPPORTED"                   value="0x8CDD"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE"        value="0x8D56"/>
-    <enum name="FRAMEBUFFER_UNDEFINED"                     value="0x8219"/>
-
-    <enum name="FRAMEBUFFER_BINDING"             count="1" value="0x8CA6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_FRAMEBUFFER_BINDING"        count="1" value="0x8CA6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="READ_FRAMEBUFFER_BINDING"        count="1" value="0x8CAA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RENDERBUFFER_BINDING"            count="1" value="0x8CA7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_COLOR_ATTACHMENTS"           count="1" value="0x8CDF">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_RENDERBUFFER_SIZE"           count="1" value="0x84E8">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="INVALID_FRAMEBUFFER_OPERATION"            value="0x0506"/>
-
-    <enum name="DEPTH_STENCIL"                            value="0x84F9"/>
-
-    <enum name="UNSIGNED_INT_24_8"                        value="0x84FA"/>
-
-    <enum name="DEPTH24_STENCIL8"                         value="0x88F0"/>
-
-    <enum name="TEXTURE_STENCIL_SIZE"          count="1"  value="0x88F1">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-
-
-
-    <function name="IsRenderbuffer" alias="IsRenderbufferEXT">
-        <param name="renderbuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-
-    <function name="BindRenderbuffer" alias="BindRenderbufferEXT">
-        <param name="target" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="DeleteRenderbuffers" alias="DeleteRenderbuffersEXT">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="const GLuint *" count="n"/>
-    </function>
-
-    <function name="GenRenderbuffers" alias="GenRenderbuffersEXT">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
-    </function>
-
-    <function name="RenderbufferStorage" alias="RenderbufferStorageEXT">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-    </function>
-
-    <function name="RenderbufferStorageMultisample" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="samples" type="GLsizei"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4331"/>
-    </function>
-
-    <function name="GetRenderbufferParameteriv" alias="GetRenderbufferParameterivEXT">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="IsFramebuffer" alias="IsFramebufferEXT">
-        <param name="framebuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-
-    <function name="BindFramebuffer" alias="BindFramebufferEXT">
-        <param name="target" type="GLenum"/>
-        <param name="framebuffer" type="GLuint"/>
-    </function>
-
-    <function name="DeleteFramebuffers" alias="DeleteFramebuffersEXT">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="const GLuint *" count="n"/>
-    </function>
-
-    <function name="GenFramebuffers" alias="GenFramebuffersEXT">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
-    </function>
-
-    <function name="CheckFramebufferStatus" alias="CheckFramebufferStatusEXT">
-        <param name="target" type="GLenum"/>
-       <return type="GLenum"/>
-    </function>
-
-    <function name="FramebufferTexture1D" alias="FramebufferTexture1DEXT">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-    </function>
-
-    <function name="FramebufferTexture2D" alias="FramebufferTexture2DEXT">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-    </function>
-
-    <function name="FramebufferTexture3D" alias="FramebufferTexture3DEXT">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-    </function>
-
-    <function name="FramebufferTextureLayer" alias="FramebufferTextureLayerEXT">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-        <param name="layer" type="GLint"/>
-    </function>
-
-    <function name="FramebufferRenderbuffer" alias="FramebufferRenderbufferEXT">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="renderbuffertarget" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-    </function>
-
-    <function name="GetFramebufferAttachmentParameteriv" alias="GetFramebufferAttachmentParameterivEXT">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="BlitFramebuffer" alias="BlitFramebufferEXT">
-        <param name="srcX0" type="GLint"/>
-        <param name="srcY0" type="GLint"/>
-        <param name="srcX1" type="GLint"/>
-        <param name="srcY1" type="GLint"/>
-        <param name="dstX0" type="GLint"/>
-        <param name="dstY0" type="GLint"/>
-        <param name="dstX1" type="GLint"/>
-        <param name="dstY1" type="GLint"/>
-        <param name="mask" type="GLbitfield"/>
-        <param name="filter" type="GLenum"/>
-    </function>
-
-    <function name="GenerateMipmap" alias="GenerateMipmapEXT">
-        <param name="target" type="GLenum"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_map_buffer_range.xml b/src/mesa/glapi/gen/ARB_map_buffer_range.xml
deleted file mode 100644 (file)
index afcb9b6..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_ARB_map_buffer_range" number="50">
-
-    <enum name="MAP_READ_BIT"                value="0x0001"/>
-    <enum name="MAP_WRITE_BIT"               value="0x0002"/>
-    <enum name="MAP_INVALIDATE_RANGE_BIT"    value="0x0004"/>
-    <enum name="MAP_INVALIDATE_BUFFER_BIT"   value="0x0008"/>
-    <enum name="MAP_FLUSH_EXPLICIT_BIT"      value="0x0010"/>
-    <enum name="MAP_UNSYNCHRONIZED_BIT"      value="0x0020"/>
-
-    <function name="MapBufferRange" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptr"/>
-        <param name="length" type="GLsizeiptr"/>
-        <param name="access" type="GLbitfield"/>
-        <return type="GLvoid *"/>
-    </function>
-
-    <function name="FlushMappedBufferRange" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptr"/>
-        <param name="length" type="GLsizeiptr"/>
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_seamless_cube_map.xml b/src/mesa/glapi/gen/ARB_seamless_cube_map.xml
deleted file mode 100644 (file)
index 8dc827c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<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>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_sync.xml b/src/mesa/glapi/gen/ARB_sync.xml
deleted file mode 100644 (file)
index 4e4eeba..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-<category name="GL_ARB_sync" number="61">
-    <type name="int64"   size="8"                  glx_name="CARD64"/>
-    <type name="uint64"  size="8"  unsigned="true" glx_name="CARD64"/>
-    <type name="sync"    size="8"  unsigned="true" glx_name="CARD64"/>
-
-    <enum name="MAX_SERVER_WAIT_TIMEOUT"       count="1"  value="0x9111">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="OBJECT_TYPE"                   count="1"  value="0x9112">
-        <size name="GetSynciv" mode="get"/>
-    </enum>
-    <enum name="SYNC_CONDITION"                count="1"  value="0x9113">
-        <size name="GetSynciv" mode="get"/>
-    </enum>
-    <enum name="SYNC_STATUS"                   count="1"  value="0x9114">
-        <size name="GetSynciv" mode="get"/>
-    </enum>
-    <enum name="SYNC_FLAGS"                    count="1"  value="0x9115">
-        <size name="GetSynciv" mode="get"/>
-    </enum>
-
-    <enum name="SYNC_FENCE"                               value="0x9116"/>
-    <enum name="SYNC_GPU_COMMANDS_COMPLETE"               value="0x9117"/>
-    <enum name="UNSIGNALED"                               value="0x9118"/>
-    <enum name="SIGNALED"                                 value="0x9119"/>
-    <enum name="ALREADY_SIGNALED"                         value="0x911A"/>
-    <enum name="TIMEOUT_EXPIRED"                          value="0x911B"/>
-    <enum name="CONDITION_SATISFIED"                      value="0x911C"/>
-    <enum name="WAIT_FAILED"                              value="0x911D"/>
-
-    <enum name="SYNC_FLUSH_COMMANDS_BIT"                  value="0x00000001"/>
-
-    <!-- Not really an enum:
-    <enum name="TIMEOUT_IGNORED"                  value="0xFFFFFFFFFFFFFFFF"/>
-    -->
-
-
-    <function name="FenceSync" offset="assign">
-        <param name="condition" type="GLenum"/>
-        <param name="flags" type="GLbitfield"/>
-        <return type="GLsync"/>
-    </function>
-
-    <function name="IsSync" offset="assign">
-        <param name="sync" type="GLsync"/>
-       <return type="GLboolean"/>
-    </function>
-
-    <function name="DeleteSync" offset="assign">
-        <param name="sync" type="GLsync"/>
-    </function>
-
-    <function name="ClientWaitSync" offset="assign">
-        <param name="sync" type="GLsync"/>
-        <param name="flags" type="GLbitfield"/>
-       <param name="timeout" type="GLuint64"/>
-        <return type="GLenum"/>
-    </function>
-
-    <function name="WaitSync" offset="assign">
-        <param name="sync" type="GLsync"/>
-        <param name="flags" type="GLbitfield"/>
-       <param name="timeout" type="GLuint64"/>
-    </function>
-
-    <function name="GetInteger64v" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint64 *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetSynciv" offset="assign">
-        <param name="sync" type="GLsync"/>
-        <param name="pname" type="GLenum"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="values" type="GLint *" output="true" variable_param="pname"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/ARB_vertex_array_object.xml b/src/mesa/glapi/gen/ARB_vertex_array_object.xml
deleted file mode 100644 (file)
index 3b4ab64..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_ARB_vertex_array_object" number="54">
-
-    <enum name="VERTEX_ARRAY_BINDING" value="0x85B5"/>
-
-    <function name="BindVertexArray" offset="assign">
-        <param name="array" type="GLuint"/>
-    </function>
-
-    <function name="DeleteVertexArrays" alias="DeleteVertexArraysAPPLE">
-        <param name="n" type="GLsizei"/>
-        <param name="arrays" type="const GLuint *"/>
-    </function>
-
-    <function name="GenVertexArrays" offset="assign">
-        <param name="n" type="GLsizei"/>
-        <param name="arrays" type="GLuint *"/>
-    </function>
-
-    <function name="IsVertexArray" alias="IsVertexArrayAPPLE">
-        <param name="array" type="GLuint"/>
-        <return type="GLboolean"/>
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/EXT_draw_buffers2.xml b/src/mesa/glapi/gen/EXT_draw_buffers2.xml
deleted file mode 100644 (file)
index efbe61f..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_EXT_draw_buffers2" number="340">
-
-    <function name="ColorMaskIndexedEXT" offset="assign">
-       <param name="buf" type="GLuint"/>
-       <param name="r" type="GLboolean"/>
-       <param name="g" type="GLboolean"/>
-       <param name="b" type="GLboolean"/>
-       <param name="a" type="GLboolean"/>
-    </function>
-
-    <function name="GetBooleanIndexedvEXT" offset="assign">
-        <param name="value" type="GLenum"/>
-       <param name="index" type="GLuint"/>
-       <param name="data" type="GLboolean *"/>
-    </function>
-
-    <function name="GetIntegerIndexedvEXT" offset="assign">
-        <param name="value" type="GLenum"/>
-       <param name="index" type="GLuint"/>
-       <param name="data" type="GLint *"/>
-    </function>
-
-    <function name="EnableIndexedEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-       <param name="index" type="GLuint"/>
-    </function>
-
-    <function name="DisableIndexedEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-       <param name="index" type="GLuint"/>
-    </function>
-
-    <function name ="IsEnabledIndexedEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-       <param name="index" type="GLuint"/>
-       <return type="GLboolean"/>
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/EXT_framebuffer_object.xml b/src/mesa/glapi/gen/EXT_framebuffer_object.xml
deleted file mode 100644 (file)
index 4f418f7..0000000
+++ /dev/null
@@ -1,235 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-<category name="GL_EXT_framebuffer_object" number="310">
-    <enum name="FRAMEBUFFER_EXT"                          value="0x8D40"/>
-    <enum name="RENDERBUFFER_EXT"                         value="0x8D41"/>
-    <enum name="RENDERBUFFER_WIDTH_EXT"                   value="0x8D42"/>
-    <enum name="RENDERBUFFER_HEIGHT_EXT"                  value="0x8D43"/>
-    <enum name="RENDERBUFFER_INTERNAL_FORMAT_EXT"         value="0x8D44"/>
-    <enum name="STENCIL_INDEX_EXT"                        value="0x8D45"/>
-    <enum name="STENCIL_INDEX1_EXT"                       value="0x8D46"/>
-    <enum name="STENCIL_INDEX4_EXT"                       value="0x8D47"/>
-    <enum name="STENCIL_INDEX8_EXT"                       value="0x8D48"/>
-    <enum name="STENCIL_INDEX16_EXT"                      value="0x8D49"/>
-
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE_EXT"   count="1" value="0x8CD0">
-        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_OBJECT_NAME_EXT"   count="1" value="0x8CD1">
-        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL_EXT" count="1" value="0x8CD2">
-        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE_EXT" count="1" value="0x8CD3">
-        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_3D_ZOFFSET_EXT"    count="1" value="0x8CD4">
-        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
-    </enum>
-
-    <enum name="COLOR_ATTACHMENT0_EXT"                    value="0x8CE0"/>
-    <enum name="COLOR_ATTACHMENT1_EXT"                    value="0x8CE1"/>
-    <enum name="COLOR_ATTACHMENT2_EXT"                    value="0x8CE2"/>
-    <enum name="COLOR_ATTACHMENT3_EXT"                    value="0x8CE3"/>
-    <enum name="COLOR_ATTACHMENT4_EXT"                    value="0x8CE4"/>
-    <enum name="COLOR_ATTACHMENT5_EXT"                    value="0x8CE5"/>
-    <enum name="COLOR_ATTACHMENT6_EXT"                    value="0x8CE6"/>
-    <enum name="COLOR_ATTACHMENT7_EXT"                    value="0x8CE7"/>
-    <enum name="COLOR_ATTACHMENT8_EXT"                    value="0x8CE8"/>
-    <enum name="COLOR_ATTACHMENT9_EXT"                    value="0x8CE9"/>
-    <enum name="COLOR_ATTACHMENT10_EXT"                   value="0x8CEA"/>
-    <enum name="COLOR_ATTACHMENT11_EXT"                   value="0x8CEB"/>
-    <enum name="COLOR_ATTACHMENT12_EXT"                   value="0x8CEC"/>
-    <enum name="COLOR_ATTACHMENT13_EXT"                   value="0x8CED"/>
-    <enum name="COLOR_ATTACHMENT14_EXT"                   value="0x8CEE"/>
-    <enum name="COLOR_ATTACHMENT15_EXT"                   value="0x8CEF"/>
-    <enum name="DEPTH_ATTACHMENT_EXT"                     value="0x8D00"/>
-    <enum name="STENCIL_ATTACHMENT_EXT"                   value="0x8D20"/>
-
-    <enum name="FRAMEBUFFER_COMPLETE_EXT"                 value="0x8CD5"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT"    value="0x8CD6"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT"   value="0x8CD7"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT" value="0x8CD8"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT"    value="0x8CD9"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_FORMATS_EXT"       value="0x8CDA"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT"   value="0x8CDB"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT"   value="0x8CDC"/>
-    <enum name="FRAMEBUFFER_UNSUPPORTED_EXT"              value="0x8CDD"/>
-    <enum name="FRAMEBUFFER_STATUS_ERROR_EXT"             value="0x8CDE"/>
-    <enum name="FRAMEBUFFER_BINDING_EXT"        count="1" value="0x8CA6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RENDERBUFFER_BINDING_EXT"       count="1" value="0x8CA7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_COLOR_ATTACHMENTS_EXT"      count="1" value="0x8CDF">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_RENDERBUFFER_SIZE_EXT"      count="1" value="0x84E8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INVALID_FRAMEBUFFER_OPERATION_EXT"        value="0x0506"/>
-
-    <function name="IsRenderbufferEXT" offset="assign">
-        <param name="renderbuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-       <glx vendorpriv="1422"/>
-    </function>
-
-    <function name="BindRenderbufferEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-       <glx rop="4316"/>
-    </function>
-
-    <function name="DeleteRenderbuffersEXT" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="const GLuint *" count="n"/>
-       <glx rop="4317"/>
-    </function>
-
-    <function name="GenRenderbuffersEXT" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="renderbuffers" type="GLuint *" count="n" output="true"/>
-       <glx vendorpriv="1423" always_array="true"/>
-    </function>
-
-    <function name="RenderbufferStorageEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-       <glx rop="4318"/>
-    </function>
-
-    <function name="GetRenderbufferParameterivEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-       <glx vendorpriv="1424"/>
-    </function>
-
-    <function name="IsFramebufferEXT" offset="assign">
-        <param name="framebuffer" type="GLuint"/>
-       <return type="GLboolean"/>
-       <glx vendorpriv="1425"/>
-    </function>
-
-    <function name="BindFramebufferEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="framebuffer" type="GLuint"/>
-       <glx rop="4319"/>
-    </function>
-
-    <function name="DeleteFramebuffersEXT" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="const GLuint *" count="n"/>
-       <glx rop="4320"/>
-    </function>
-
-    <function name="GenFramebuffersEXT" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="framebuffers" type="GLuint *" count="n" output="true"/>
-       <glx vendorpriv="1426" always_array="true"/>
-    </function>
-
-    <function name="CheckFramebufferStatusEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-       <return type="GLenum"/>
-       <glx vendorpriv="1427"/>
-    </function>
-
-    <function name="FramebufferTexture1DEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-       <glx rop="4321"/>
-    </function>
-
-    <function name="FramebufferTexture2DEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-       <glx rop="4322"/>
-    </function>
-
-    <function name="FramebufferTexture3DEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="textarget" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-       <glx rop="4323"/>
-    </function>
-
-    <function name="FramebufferRenderbufferEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="renderbuffertarget" type="GLenum"/>
-        <param name="renderbuffer" type="GLuint"/>
-       <glx rop="4324"/>
-    </function>
-
-    <function name="GetFramebufferAttachmentParameterivEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-       <glx vendorpriv="1428"/>
-    </function>
-
-    <function name="GenerateMipmapEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-       <glx rop="4325"/>
-    </function>
-</category>
-
-<category name="GL_EXT_framebuffer_blit" number="316">
-    <enum name="READ_FRAMEBUFFER_EXT" value="0x8CA8"/>
-    <enum name="DRAW_FRAMEBUFFER_EXT" value="0x8CA9"/>
-    <enum name="DRAW_FRAMEBUFFER_BINDING_EXT" count="1" value="0x8CA6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="READ_FRAMEBUFFER_BINDING_EXT" count="1" value="0x8CAA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <function name="BlitFramebufferEXT" offset="assign" static_dispatch="false">
-        <param name="srcX0" type="GLint"/>
-        <param name="srcY0" type="GLint"/>
-        <param name="srcX1" type="GLint"/>
-        <param name="srcY1" type="GLint"/>
-        <param name="dstX0" type="GLint"/>
-        <param name="dstY0" type="GLint"/>
-        <param name="dstX1" type="GLint"/>
-        <param name="dstY1" type="GLint"/>
-        <param name="mask" type="GLbitfield"/>
-        <param name="filter" type="GLenum"/>
-        <glx rop="4330"/>
-    </function>
-</category>
-
-<category name="GL_EXT_framebuffer_multisample" number="317">
-    <enum name="RENDERBUFFER_SAMPLES_EXT"                  value="0x8CAB"/>
-    <enum name="FRAMEBUFFER_INCOMPLETE_MULTISAMPLE_EXT"    value="0x8D56"/>
-    <enum name="MAX_SAMPLES_EXT"                 count="1" value="0x8D57">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="RenderbufferStorageMultisampleEXT" alias="RenderbufferStorageMultisample">
-        <param name="target" type="GLenum"/>
-        <param name="samples" type="GLsizei"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/EXT_packed_depth_stencil.xml b/src/mesa/glapi/gen/EXT_packed_depth_stencil.xml
deleted file mode 100644 (file)
index 5be8103..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-<category name="GL_EXT_packed_depth_stencil" number="312">
-    <!-- These enums are shared with GL_NV_packed_depth_stencil. -->
-    <enum name="DEPTH_STENCIL_EXT"                        value="0x84F9"/>
-    <enum name="UNSIGNED_INT_24_8_EXT"                    value="0x84FA"/>
-
-    <enum name="DEPTH24_STENCIL8_EXT"                     value="0x88F0"/>
-
-    <enum name="TEXTURE_STENCIL_SIZE_EXT"      count="1"  value="0x88F1">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/EXT_provoking_vertex.xml b/src/mesa/glapi/gen/EXT_provoking_vertex.xml
deleted file mode 100644 (file)
index 71d2c72..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_EXT_provoking_vertex" number="364">
-
-    <enum name="FIRST_VERTEX_CONVENTION_EXT"                  value="0x8E4D"/>
-    <enum name="LAST_VERTEX_CONVENTION_EXT"                   value="0x8E4E"/>
-    <enum name="PROVOKING_VERTEX_EXT"                         value="0x8E4F"/>
-    <enum name="QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT" value="0x8E4C"/>
-
-    <function name="ProvokingVertexEXT" offset="assign">
-        <param name="mode" type="GLenum"/>
-    </function>
-
-</category>
-
-<category name="GL_ARB_provoking_vertex" number="64">
-
-    <enum name="FIRST_VERTEX_CONVENTION"                  value="0x8E4D"/>
-    <enum name="LAST_VERTEX_CONVENTION"                   value="0x8E4E"/>
-    <enum name="PROVOKING_VERTEX"                         value="0x8E4F"/>
-    <enum name="QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION" value="0x8E4C"/>
-
-    <function name="ProvokingVertex" alias="ProvokingVertexEXT">
-        <param name="mode" type="GLenum"/>
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/EXT_texture_array.xml b/src/mesa/glapi/gen/EXT_texture_array.xml
deleted file mode 100644 (file)
index b5b8bd4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<category name="GL_EXT_texture_array" number="329">
-    <enum name="TEXTURE_1D_ARRAY_EXT"                      value="0x8C18"/>
-    <enum name="PROXY_TEXTURE_1D_ARRAY_EXT"                value="0x8C19"/>
-    <enum name="TEXTURE_2D_ARRAY_EXT"                      value="0x8C1A"/>
-    <enum name="PROXY_TEXTURE_2D_ARRAY_EXT"                value="0x8C1B"/>
-
-    <enum name="TEXTURE_BINDING_1D_ARRAY_EXT"   count="1"  value="0x8C1C">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="TEXTURE_BINDING_2D_ARRAY_EXT"   count="1"  value="0x8C1D">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="MAX_ARRAY_TEXTURE_LAYERS_EXT"   count="1"  value="0x88FF">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="COMPARE_REF_DEPTH_TO_TEXTURE_EXT" count="1" value="0x884E">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="FRAMEBUFFER_ATTACHMENT_TEXTURE_LAYER_EXT"   count="1" value="0x8CD4">
-        <size name="GetFramebufferAttachmentParameterivEXT" mode="get"/>
-    </enum>
-
-    <function name="FramebufferTextureLayerEXT" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="attachment" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <param name="level" type="GLint"/>
-        <param name="layer" type="GLint"/>
-       <glx rop="237"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/EXT_transform_feedback.xml b/src/mesa/glapi/gen/EXT_transform_feedback.xml
deleted file mode 100644 (file)
index abbed9b..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_EXT_transform_feedback" number="352">
-
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_EXT"                  value="0x8C8E"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_START_EXT"            value="0x8C84"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_SIZE_EXT"             value="0x8C85"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_BINDING_EXT"          value="0x8C8F"/>
-  <enum name="INTERLEAVED_ATTRIBS_EXT"                        value="0x8C8C"/>
-  <enum name="SEPARATE_ATTRIBS_EXT"                           value="0x8C8D"/>
-  <enum name="PRIMITIVES_GENERATED_EXT"                       value="0x8C87"/>
-  <enum name="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN_EXT"      value="0x8C88"/>
-  <enum name="RASTERIZER_DISCARD_EXT"                         value="0x8C89"/>
-  <enum name="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS_EXT" value="0x8C8A"/>
-  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS_EXT"    value="0x8C8B"/>
-  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS_EXT" value="0x8C80"/>
-  <enum name="TRANSFORM_FEEDBACK_VARYINGS_EXT"                value="0x8C83"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_MODE_EXT"             value="0x8C7F"/>
-  <enum name="TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH_EXT"      value="0x8C76"/>
-
-  <function name="BindBufferRangeEXT" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="buffer" type="GLuint"/>
-    <param name="offset" type="GLintptr"/>
-    <param name="size" type="GLsizeiptr"/>
-  </function>
-
-  <function name="BindBufferOffsetEXT" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="buffer" type="GLuint"/>
-    <param name="offset" type="GLintptr"/>
-  </function>
-
-  <function name="BindBufferBaseEXT" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="buffer" type="GLuint"/>
-  </function>
-
-  <function name="BeginTransformFeedbackEXT" offset="assign">
-    <param name="mode" type="GLenum"/>
-  </function>
-
-  <function name="EndTransformFeedbackEXT" offset="assign">
-  </function>
-
-  <function name="TransformFeedbackVaryingsEXT" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="varyings" type="const char **"/>
-    <param name="bufferMode" type="GLenum"/>
-  </function>
-
-  <function name="GetTransformFeedbackVaryingEXT" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="index" type="GLuint"/>
-    <param name="bufSize" type="GLsizei"/>
-    <param name="length" type="GLsizei *"/>
-    <param name="size" type="GLsizei *"/>
-    <param name="type" type="GLenum *"/>
-    <param name="name" type="GLchar *"/>
-  </function>
-
-  <!-- Note: the glGetIntegerIndexedvEXT() and glGetBooleanIndexedvEXT
-       functions are defined in the EXT_draw_buffers2.xml file -->
-
-</category>
-
-
-<!-- Note: these 3.0 entrypoints might get moved to a new file -->
-
-<category name="3.0">
-
-  <function name="BindBufferRange" alias="BindBufferRangeEXT">
-    <param name="target" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="buffer" type="GLuint"/>
-    <param name="offset" type="GLintptr"/>
-    <param name="size" type="GLsizeiptr"/>
-  </function>
-
-  <function name="BindBufferBase" alias="BindBufferBaseEXT">
-    <param name="target" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="buffer" type="GLuint"/>
-  </function>
-
-  <function name="BeginTransformFeedback" alias="BeginTransformFeedbackEXT">
-    <param name="mode" type="GLenum"/>
-  </function>
-
-  <function name="EndTransformFeedback" alias="EndTransformFeedbackEXT">
-  </function>
-
-  <function name="TransformFeedbackVaryings" alias="TransformFeedbackVaryingsEXT">
-    <param name="program" type="GLuint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="varyings" type="const char **"/>
-    <param name="bufferMode" type="GLenum"/>
-  </function>
-
-  <function name="GetTransformFeedbackVarying" alias="GetTransformFeedbackVaryingEXT">
-    <param name="program" type="GLuint"/>
-    <param name="index" type="GLuint"/>
-    <param name="bufSize" type="GLsizei"/>
-    <param name="length" type="GLsizei *"/>
-    <param name="size" type="GLsizei *"/>
-    <param name="type" type="GLenum *"/>
-    <param name="name" type="GLchar *"/>
-  </function>
-
-</category>
-
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/GL3.xml b/src/mesa/glapi/gen/GL3.xml
deleted file mode 100644 (file)
index 0d8d935..0000000
+++ /dev/null
@@ -1,581 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="3.0">
-
-  <enum name="COMPARE_REF_TO_TEXTURE"           value="0x884E"/>
-  <enum name="CLIP_DISTANCE0"                   value="0x3000"/>
-  <enum name="CLIP_DISTANCE1"                   value="0x3001"/>
-  <enum name="CLIP_DISTANCE2"                   value="0x3002"/>
-  <enum name="CLIP_DISTANCE3"                   value="0x3003"/>
-  <enum name="CLIP_DISTANCE4"                   value="0x3004"/>
-  <enum name="CLIP_DISTANCE5"                   value="0x3005"/>
-  <enum name="CLIP_DISTANCE6"                   value="0x3006"/>
-  <enum name="CLIP_DISTANCE7"                   value="0x3007"/>
-  <enum name="MAX_CLIP_DISTANCES"               value="0x0D32"/>
-  <enum name="MAJOR_VERSION"                    value="0x821B"/>
-  <enum name="MINOR_VERSION"                    value="0x821C"/>
-  <enum name="NUM_EXTENSIONS"                   value="0x821D"/>
-  <enum name="CONTEXT_FLAGS"                    value="0x821E"/>
-  <enum name="DEPTH_BUFFER"                     value="0x8223"/>
-  <enum name="STENCIL_BUFFER"                   value="0x8224"/>
-  <enum name="COMPRESSED_RED"                   value="0x8225"/>
-  <enum name="COMPRESSED_RG"                    value="0x8226"/>
-  <enum name="CONTEXT_FLAG_FORWARD_COMPATIBLE_BIT"  value="0x0001"/>
-  <enum name="RGBA32F"                          value="0x8814"/>
-  <enum name="RGB32F"                           value="0x8815"/>
-  <enum name="RGBA16F"                          value="0x881A"/>
-  <enum name="RGB16F"                           value="0x881B"/>
-  <enum name="VERTEX_ATTRIB_ARRAY_INTEGER"      value="0x88FD"/>
-  <enum name="MAX_ARRAY_TEXTURE_LAYERS"         value="0x88FF"/>
-  <enum name="MIN_PROGRAM_TEXEL_OFFSET"         value="0x8904"/>
-  <enum name="MAX_PROGRAM_TEXEL_OFFSET"         value="0x8905"/>
-  <enum name="CLAMP_READ_COLOR"                 value="0x891C"/>
-  <enum name="FIXED_ONLY"                       value="0x891D"/>
-  <enum name="MAX_VARYING_COMPONENTS"           value="0x8B4B"/>
-  <enum name="TEXTURE_1D_ARRAY"                 value="0x8C18"/>
-  <enum name="PROXY_TEXTURE_1D_ARRAY"           value="0x8C19"/>
-  <enum name="TEXTURE_2D_ARRAY"                 value="0x8C1A"/>
-  <enum name="PROXY_TEXTURE_2D_ARRAY"           value="0x8C1B"/>
-  <enum name="TEXTURE_BINDING_1D_ARRAY"         value="0x8C1C"/>
-  <enum name="TEXTURE_BINDING_2D_ARRAY"         value="0x8C1D"/>
-  <enum name="R11F_G11F_B10F"                   value="0x8C3A"/>
-  <enum name="UNSIGNED_INT_10F_11F_11F_REV"     value="0x8C3B"/>
-  <enum name="RGB9_E5"                          value="0x8C3D"/>
-  <enum name="UNSIGNED_INT_5_9_9_9_REV"         value="0x8C3E"/>
-  <enum name="TEXTURE_SHARED_SIZE"              value="0x8C3F"/>
-  <enum name="TRANSFORM_FEEDBACK_VARYING_MAX_LENGTH"  value="0x8C76"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_MODE"   value="0x8C7F"/>
-  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS"  value="0x8C80"/>
-  <enum name="TRANSFORM_FEEDBACK_VARYINGS"      value="0x8C83"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_START"  value="0x8C84"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_SIZE"   value="0x8C85"/>
-  <enum name="PRIMITIVES_GENERATED"             value="0x8C87"/>
-  <enum name="TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN"  value="0x8C88"/>
-  <enum name="RASTERIZER_DISCARD"               value="0x8C89"/>
-  <enum name="MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS"  value="0x8C8A"/>
-  <enum name="MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS"  value="0x8C8B"/>
-  <enum name="INTERLEAVED_ATTRIBS"              value="0x8C8C"/>
-  <enum name="SEPARATE_ATTRIBS"                 value="0x8C8D"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER"        value="0x8C8E"/>
-  <enum name="TRANSFORM_FEEDBACK_BUFFER_BINDING"  value="0x8C8F"/>
-  <enum name="RGBA32UI"                         value="0x8D70"/>
-  <enum name="RGB32UI"                          value="0x8D71"/>
-  <enum name="RGBA16UI"                         value="0x8D76"/>
-  <enum name="RGB16UI"                          value="0x8D77"/>
-  <enum name="RGBA8UI"                          value="0x8D7C"/>
-  <enum name="RGB8UI"                           value="0x8D7D"/>
-  <enum name="RGBA32I"                          value="0x8D82"/>
-  <enum name="RGB32I"                           value="0x8D83"/>
-  <enum name="RGBA16I"                          value="0x8D88"/>
-  <enum name="RGB16I"                           value="0x8D89"/>
-  <enum name="RGBA8I"                           value="0x8D8E"/>
-  <enum name="RGB8I"                            value="0x8D8F"/>
-  <enum name="RED_INTEGER"                      value="0x8D94"/>
-  <enum name="GREEN_INTEGER"                    value="0x8D95"/>
-  <enum name="BLUE_INTEGER"                     value="0x8D96"/>
-  <enum name="RGB_INTEGER"                      value="0x8D98"/>
-  <enum name="RGBA_INTEGER"                     value="0x8D99"/>
-  <enum name="BGR_INTEGER"                      value="0x8D9A"/>
-  <enum name="BGRA_INTEGER"                     value="0x8D9B"/>
-  <enum name="SAMPLER_1D_ARRAY"                 value="0x8DC0"/>
-  <enum name="SAMPLER_2D_ARRAY"                 value="0x8DC1"/>
-  <enum name="SAMPLER_1D_ARRAY_SHADOW"          value="0x8DC3"/>
-  <enum name="SAMPLER_2D_ARRAY_SHADOW"          value="0x8DC4"/>
-  <enum name="SAMPLER_CUBE_SHADOW"              value="0x8DC5"/>
-  <enum name="UNSIGNED_INT_VEC2"                value="0x8DC6"/>
-  <enum name="UNSIGNED_INT_VEC3"                value="0x8DC7"/>
-  <enum name="UNSIGNED_INT_VEC4"                value="0x8DC8"/>
-  <enum name="INT_SAMPLER_1D"                   value="0x8DC9"/>
-  <enum name="INT_SAMPLER_2D"                   value="0x8DCA"/>
-  <enum name="INT_SAMPLER_3D"                   value="0x8DCB"/>
-  <enum name="INT_SAMPLER_CUBE"                 value="0x8DCC"/>
-  <enum name="INT_SAMPLER_1D_ARRAY"             value="0x8DCE"/>
-  <enum name="INT_SAMPLER_2D_ARRAY"             value="0x8DCF"/>
-  <enum name="UNSIGNED_INT_SAMPLER_1D"          value="0x8DD1"/>
-  <enum name="UNSIGNED_INT_SAMPLER_2D"          value="0x8DD2"/>
-  <enum name="UNSIGNED_INT_SAMPLER_3D"          value="0x8DD3"/>
-  <enum name="UNSIGNED_INT_SAMPLER_CUBE"        value="0x8DD4"/>
-  <enum name="UNSIGNED_INT_SAMPLER_1D_ARRAY"    value="0x8DD6"/>
-  <enum name="UNSIGNED_INT_SAMPLER_2D_ARRAY"    value="0x8DD7"/>
-  <enum name="QUERY_WAIT"                       value="0x8E13"/>
-  <enum name="QUERY_NO_WAIT"                    value="0x8E14"/>
-  <enum name="QUERY_BY_REGION_WAIT"             value="0x8E15"/>
-  <enum name="QUERY_BY_REGION_NO_WAIT"          value="0x8E16"/>
-  <enum name="BUFFER_ACCESS_FLAGS"              value="0x911F"/>
-  <enum name="BUFFER_MAP_LENGTH"                value="0x9120"/>
-  <enum name="BUFFER_MAP_OFFSET"                value="0x9121"/>
-
-  <function name="ClearBufferiv" offset="assign">
-    <param name="buffer" type="GLenum"/>
-    <param name="drawbuffer" type="GLint"/>
-    <param name="value" type="const GLint *"/>
-  </function>
-
-  <function name="ClearBufferuiv" offset="assign">
-    <param name="buffer" type="GLenum"/>
-    <param name="drawbuffer" type="GLint"/>
-    <param name="value" type="const GLuint *"/>
-  </function>
-
-  <function name="ClearBufferfv" offset="assign">
-    <param name="buffer" type="GLenum"/>
-    <param name="drawbuffer" type="GLint"/>
-    <param name="value" type="const GLfloat *"/>
-  </function>
-
-  <function name="ClearBufferfi" offset="assign">
-    <param name="buffer" type="GLenum"/>
-    <param name="drawbuffer" type="GLint"/>
-    <param name="depth" type="const GLfloat"/>
-    <param name="stencil" type="const GLint"/>
-  </function>
-
-  <function name="GetStringi" offset="assign">
-    <param name="name" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-      <return type="const GLubyte *"/>
-  </function>
-
-  <function name="IsEnabledi" offset="assign">
-    <param name="cap" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-      <return type="GLboolean"/>
-  </function>
-
-  <function name="GetFragDataLocation" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="name" type="const GLchar *"/>
-      <return type="GLint"/>
-  </function>
-
-  <function name="BindFragDataLocation" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="color" type="GLuint"/>
-    <param name="name" type="const GLchar *"/>
-  </function>
-
-  <function name="ColorMaski" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="r" type="GLboolean"/>
-    <param name="g" type="GLboolean"/>
-    <param name="b" type="GLboolean"/>
-    <param name="a" type="GLboolean"/>
-  </function>
-
-  <function name="GetBooleani_v" offset="assign">
-    <param name="cap" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="value" type="GLboolean *"/>
-  </function>
-
-  <function name="GetIntegeri_v" offset="assign">
-    <param name="cap" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="value" type="GLint *"/>
-  </function>
-
-  <function name="Enablei" offset="assign">
-    <param name="cap" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-  </function>
-
-  <function name="Disablei" offset="assign">
-    <param name="cap" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-  </function>
-
-  <function name="BeginTransformFeedback" offset="assign">
-    <param name="mode" type="GLenum"/>
-  </function>
-
-  <function name="EndTransformFeedback" offset="assign">
-  </function>
-
-  <function name="BindBufferRange" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="buffer" type="GLuint"/>
-    <param name="offset" type="GLintptr"/>
-    <param name="size" type="GLsizeiptr"/>
-  </function>
-
-  <function name="BindBufferBase" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="buffer" type="GLuint"/>
-  </function>
-
-  <function name="TransformFeedbackVaryings" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="varyings" type="const GLchar* *"/>
-    <param name="bufferMode" type="GLenum"/>
-  </function>
-
-  <function name="GetTransformFeedbackVarying" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="index" type="GLuint"/>
-    <param name="bufSize" type="GLsizei"/>
-    <param name="length" type="GLsizei *"/>
-    <param name="size" type="GLsizei *"/>
-    <param name="type" type="GLenum *"/>
-    <param name="name" type="GLchar *"/>
-  </function>
-
-  <function name="ClampColor" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="clamp" type="GLenum"/>
-  </function>
-
-  <function name="BeginConditionalRender" offset="assign">
-    <param name="id" type="GLuint"/>
-    <param name="mode" type="GLenum"/>
-  </function>
-
-  <function name="EndConditionalRender" offset="assign">
-  </function>
-
-  <function name="VertexAttribIPointer" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="size" type="GLint"/>
-    <param name="type" type="GLenum"/>
-    <param name="stride" type="GLsizei"/>
-    <param name="pointer" type="const GLvoid *"/>
-  </function>
-
-  <function name="GetVertexAttribIiv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="pname" type="GLenum"/>
-    <param name="params" type="GLint *"/>
-  </function>
-
-  <function name="GetVertexAttribIuiv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="pname" type="GLenum"/>
-    <param name="params" type="GLuint *"/>
-  </function>
-
-  <function name="VertexAttribI1i" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLint"/>
-  </function>
-
-  <function name="VertexAttribI2i" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLint"/>
-    <param name="y" type="GLint"/>
-  </function>
-
-  <function name="VertexAttribI3i" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLint"/>
-    <param name="y" type="GLint"/>
-    <param name="z" type="GLint"/>
-  </function>
-
-  <function name="VertexAttribI4i" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLint"/>
-    <param name="y" type="GLint"/>
-    <param name="z" type="GLint"/>
-    <param name="w" type="GLint"/>
-  </function>
-
-  <function name="VertexAttribI1ui" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLuint"/>
-  </function>
-
-  <function name="VertexAttribI2ui" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLuint"/>
-    <param name="y" type="GLuint"/>
-  </function>
-
-  <function name="VertexAttribI3ui" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLuint"/>
-    <param name="y" type="GLuint"/>
-    <param name="z" type="GLuint"/>
-  </function>
-
-  <function name="VertexAttribI4ui" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="x" type="GLuint"/>
-    <param name="y" type="GLuint"/>
-    <param name="z" type="GLuint"/>
-    <param name="w" type="GLuint"/>
-  </function>
-
-  <function name="VertexAttribI1iv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLint *"/>
-  </function>
-
-  <function name="VertexAttribI2iv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLint *"/>
-  </function>
-
-  <function name="VertexAttribI3iv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLint *"/>
-  </function>
-
-  <function name="VertexAttribI4iv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLint *"/>
-  </function>
-
-  <function name="VertexAttribI1uiv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLuint *"/>
-  </function>
-
-  <function name="VertexAttribI2uiv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLuint *"/>
-  </function>
-
-  <function name="VertexAttribI3uiv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLuint *"/>
-  </function>
-
-  <function name="VertexAttribI4uiv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLuint *"/>
-  </function>
-
-  <function name="VertexAttribI4bv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLbyte *"/>
-  </function>
-
-  <function name="VertexAttribI4sv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLshort *"/>
-  </function>
-
-  <function name="VertexAttribI4ubv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLubyte *"/>
-  </function>
-
-  <function name="VertexAttribI4usv" offset="assign">
-    <param name="index" type="GLuint"/>
-    <param name="v" type="const GLushort *"/>
-  </function>
-
-  <function name="GetUniformuiv" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="location" type="GLint"/>
-    <param name="params" type="GLuint *"/>
-  </function>
-
-  <function name="Uniform1ui" offset="assign">
-    <param name="locatoin" type="GLint"/>
-    <param name="x" type="GLuint"/>
-  </function>
-
-  <function name="Uniform2ui" offset="assign">
-    <param name="location" type="GLint"/>
-    <param name="x" type="GLuint"/>
-    <param name="y" type="GLuint"/>
-  </function>
-
-  <function name="Uniform3ui" offset="assign">
-    <param name="location" type="GLint"/>
-    <param name="x" type="GLuint"/>
-    <param name="y" type="GLuint"/>
-    <param name="z" type="GLuint"/>
-  </function>
-
-  <function name="Uniform4ui" offset="assign">
-    <param name="location" type="GLint"/>
-    <param name="x" type="GLuint"/>
-    <param name="y" type="GLuint"/>
-    <param name="z" type="GLuint"/>
-    <param name="w" type="GLuint"/>
-  </function>
-
-  <function name="Uniform1uiv" offset="assign">
-    <param name="location" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="value" type="const GLuint *"/>
-  </function>
-
-  <function name="Uniform2uiv" offset="assign">
-    <param name="location" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="value" type="const GLuint *"/>
-  </function>
-
-  <function name="Uniform3uiv" offset="assign">
-    <param name="location" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="value" type="const GLuint *"/>
-  </function>
-
-  <function name="Uniform4uiv" offset="assign">
-    <param name="location" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="value" type="const GLuint *"/>
-  </function>
-
-  <function name="TexParameterIiv" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="pname" type="GLenum"/>
-    <param name="value" type="const GLint *"/>
-  </function>
-
-  <function name="TexParameterIuiv" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="pname" type="GLenum"/>
-    <param name="value" type="const GLuint *"/>
-  </function>
-
-  <function name="GetTexParameterIiv" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="pname" type="GLenum"/>
-    <param name="value" type="GLint *"/>
-  </function>
-
-  <function name="GetTexParameterIuiv" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="pname" type="GLenum"/>
-    <param name="value" type="GLuint *"/>
-  </function>
-
-</category>
-
-
-<category name="3.1">
-
-  <enum name="SAMPLER_2D_RECT"                value="0x8B63"/>
-  <enum name="SAMPLER_2D_RECT_SHADOW"         value="0x8B64"/>
-  <enum name="SAMPLER_BUFFER"                 value="0x8DC2"/>
-  <enum name="INT_SAMPLER_2D_RECT"            value="0x8DCD"/>
-  <enum name="INT_SAMPLER_BUFFER"             value="0x8DD0"/>
-  <enum name="UNSIGNED_INT_SAMPLER_2D_RECT"   value="0x8DD5"/>
-  <enum name="UNSIGNED_INT_SAMPLER_BUFFER"    value="0x8DD8"/>
-  <enum name="TEXTURE_BUFFER"                 value="0x8C2A"/>
-  <enum name="MAX_TEXTURE_BUFFER_SIZE"        value="0x8C2B"/>
-  <enum name="TEXTURE_BINDING_BUFFER"         value="0x8C2C"/>
-  <enum name="TEXTURE_BUFFER_DATA_STORE_BINDING" value="0x8C2D"/>
-  <enum name="TEXTURE_BUFFER_FORMAT"          value="0x8C2E"/>
-  <enum name="TEXTURE_RECTANGLE"              value="0x84F5"/>
-  <enum name="TEXTURE_BINDING_RECTANGLE"      value="0x84F6"/>
-  <enum name="PROXY_TEXTURE_RECTANGLE"        value="0x84F7"/>
-  <enum name="MAX_RECTANGLE_TEXTURE_SIZE"     value="0x84F8"/>
-  <enum name="RED_SNORM"                      value="0x8F90"/>
-  <enum name="RG_SNORM"                       value="0x8F91"/>
-  <enum name="RGB_SNORM"                      value="0x8F92"/>
-  <enum name="RGBA_SNORM"                     value="0x8F93"/>
-  <enum name="R8_SNORM"                       value="0x8F94"/>
-  <enum name="RG8_SNORM"                      value="0x8F95"/>
-  <enum name="RGB8_SNORM"                     value="0x8F96"/>
-  <enum name="RGBA8_SNORM"                    value="0x8F97"/>
-  <enum name="R16_SNORM"                      value="0x8F98"/>
-  <enum name="RG16_SNORM"                     value="0x8F99"/>
-  <enum name="RGB16_SNORM"                    value="0x8F9A"/>
-  <enum name="RGBA16_SNORM"                   value="0x8F9B"/>
-  <enum name="SIGNED_NORMALIZED"              value="0x8F9C"/>
-  <enum name="PRIMITIVE_RESTART"              value="0x8F9D"/>
-  <enum name="PRIMITIVE_RESTART_INDEX"        value="0x8F9E"/>
-
-  <function name="DrawArraysInstanced" offset="assign">
-    <param name="mode" type="GLenum"/>
-    <param name="first" type="GLint"/>
-    <param name="count" type="GLsizei"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-  <function name="DrawElementsInstanced" offset="assign">
-    <param name="mode" type="GLenum"/>
-    <param name="count" type="GLsizei"/>
-    <param name="type" type="GLenum"/>
-    <param name="indices" type="const GLvoid *"/>
-    <param name="primcount" type="GLsizei"/>
-  </function>
-
-  <function name="TexBuffer" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="internalFormat" type="GLenum"/>
-    <param name="buffer" type="GLuint"/>
-  </function>
-
-  <function name="glPrimitiveRestartIndex" offset="assign">
-    <param name="index" type="GLuint"/>
-  </function>
-
-</category>
-
-
-<category name="3.2">
-
-  <enum name="CONTEXT_CORE_PROFILE_BIT"             value="0x00000001"/>
-  <enum name="CONTEXT_COMPATIBILITY_PROFILE_BIT"    value="0x00000002"/>
-  <enum name="LINES_ADJACENCY"                      value="0x000A"/>
-  <enum name="LINE_STRIP_ADJACENCY"                 value="0x000B"/>
-  <enum name="TRIANGLES_ADJACENCY"                  value="0x000C"/>
-  <enum name="TRIANGLE_STRIP_ADJACENCY"             value="0x000D"/>
-  <enum name="PROGRAM_POINT_SIZE"                   value="0x8642"/>
-  <enum name="MAX_GEOMETRY_TEXTURE_IMAGE_UNITS"     value="0x8C29"/>
-  <enum name="FRAMEBUFFER_ATTACHMENT_LAYERED"       value="0x8DA7"/>
-  <enum name="FRAMEBUFFER_INCOMPLETE_LAYER_TARGETS" value="0x8DA8"/>
-  <enum name="GEOMETRY_SHADER"                      value="0x8DD9"/>
-  <enum name="GEOMETRY_VERTICES_OUT"                value="0x8916"/>
-  <enum name="GEOMETRY_INPUT_TYPE"                  value="0x8917"/>
-  <enum name="GEOMETRY_OUTPUT_TYPE"                 value="0x8918"/>
-  <enum name="MAX_GEOMETRY_UNIFORM_COMPONENTS"      value="0x8DDF"/>
-  <enum name="MAX_GEOMETRY_OUTPUT_VERTICES"         value="0x8DE0"/>
-  <enum name="MAX_GEOMETRY_TOTAL_OUTPUT_COMPONENTS" value="0x8DE1"/>
-  <enum name="MAX_VERTEX_OUTPUT_COMPONENTS"         value="0x9122"/>
-  <enum name="MAX_GEOMETRY_INPUT_COMPONENTS"        value="0x9123"/>
-  <enum name="MAX_GEOMETRY_OUTPUT_COMPONENTS"       value="0x9124"/>
-  <enum name="MAX_FRAGMENT_INPUT_COMPONENTS"        value="0x9125"/>
-  <enum name="CONTEXT_PROFILE_MASK"                 value="0x9126"/>
-
-  <function name="GetInteger64i_v" offset="assign">
-    <param name="cap" type="GLenum"/>
-    <param name="index" type="GLuint"/>
-    <param name="data" type="GLint64 *"/>
-  </function>
-
-  <function name="GetBufferParameteri64v" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="pname" type="GLenum"/>
-    <param name="params" type="GLint64 *"/>
-  </function>
-
-  <function name="ProgramParameteri" offset="assign">
-    <param name="program" type="GLuint"/>
-    <param name="pname" type="GLenum"/>
-    <param name="value" type="GLint"/>
-  </function>
-
-  <function name="FramebufferTexture" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="attachment" type="GLenum"/>
-    <param name="texture" type="GLuint"/>
-    <param name="level" type="GLint"/>
-  </function>
-
-  <function name="FramebufferTextureFace" offset="assign">
-    <param name="target" type="GLenum"/>
-    <param name="attachment" type="GLenum"/>
-    <param name="texture" type="GLuint"/>
-    <param name="level" type="GLint"/>
-    <param name="face" type="GLenum"/>
-  </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/Makefile b/src/mesa/glapi/gen/Makefile
deleted file mode 100644 (file)
index 10998b2..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-# This file isn't used during a normal compilation since we don't want to
-# require Python in order to compile Mesa.
-# Instead, when the Mesa developers update/change the API interface it's
-# up to him/her to re-run this makefile and check in the newly generated files.
-
-
-TOP = ../../../..
-include $(TOP)/configs/current
-
-MESA_DIR = $(TOP)/src/mesa
-MESA_GLAPI_DIR = $(TOP)/src/mesa/glapi
-MESA_GLX_DIR = $(TOP)/src/glx
-
-MESA_GLAPI_OUTPUTS = \
-       $(MESA_GLAPI_DIR)/glprocs.h \
-       $(MESA_GLAPI_DIR)/glapitemp.h \
-       $(MESA_GLAPI_DIR)/glapioffsets.h \
-       $(MESA_GLAPI_DIR)/glapitable.h \
-       $(MESA_GLAPI_DIR)/glapidispatch.h
-
-MESA_GLAPI_ASM_OUTPUTS = \
-       $(MESA_DIR)/x86/glapi_x86.S \
-       $(MESA_DIR)/x86-64/glapi_x86-64.S \
-       $(MESA_DIR)/sparc/glapi_sparc.S
-
-MESA_OUTPUTS = \
-       $(MESA_GLAPI_OUTPUTS) \
-       $(MESA_GLAPI_ASM_OUTPUTS) \
-       $(MESA_DIR)/main/enums.c \
-       $(MESA_DIR)/main/remap_helper.h \
-       $(MESA_GLX_DIR)/indirect.c \
-       $(MESA_GLX_DIR)/indirect.h \
-       $(MESA_GLX_DIR)/indirect_init.c \
-       $(MESA_GLX_DIR)/indirect_size.h \
-       $(MESA_GLX_DIR)/indirect_size.c
-
-######################################################################
-
-XORG_GLX_DIR = $(XORG_BASE)/glx
-XORG_GLAPI_DIR = $(XORG_BASE)/glx/glapi
-
-XORG_GLAPI_FILES = \
-       $(XORG_GLAPI_DIR)/glapi.h \
-       $(XORG_GLAPI_DIR)/glapi.c \
-       $(XORG_GLAPI_DIR)/glapi_getproc.c \
-       $(XORG_GLAPI_DIR)/glapi_nop.c \
-       $(XORG_GLAPI_DIR)/glthread.c \
-       $(XORG_GLAPI_DIR)/glthread.h
-
-XORG_GLAPI_OUTPUTS = \
-       $(XORG_GLAPI_DIR)/glprocs.h \
-       $(XORG_GLAPI_DIR)/glapitemp.h \
-       $(XORG_GLAPI_DIR)/glapioffsets.h \
-       $(XORG_GLAPI_DIR)/glapitable.h \
-       $(XORG_GLAPI_DIR)/glapidispatch.h
-
-XORG_OUTPUTS = \
-       $(XORG_GLAPI_FILES) \
-       $(XORG_GLAPI_OUTPUTS) \
-       $(XORG_GLX_DIR)/indirect_dispatch.c \
-       $(XORG_GLX_DIR)/indirect_dispatch_swap.c \
-       $(XORG_GLX_DIR)/indirect_dispatch.h \
-       $(XORG_GLX_DIR)/indirect_reqsize.c \
-       $(XORG_GLX_DIR)/indirect_reqsize.h \
-       $(XORG_GLX_DIR)/indirect_size.h \
-       $(XORG_GLX_DIR)/indirect_size_get.c \
-       $(XORG_GLX_DIR)/indirect_size_get.h \
-       $(XORG_GLX_DIR)/indirect_table.c
-
-######################################################################
-
-API_XML = \
-       gl_API.xml \
-       ARB_copy_buffer.xml \
-       ARB_depth_clamp.xml \
-       ARB_draw_elements_base_vertex.xml \
-       ARB_draw_instanced.xml \
-       ARB_framebuffer_object.xml \
-       ARB_map_buffer_range.xml \
-       ARB_seamless_cube_map.xml \
-       ARB_sync.xml \
-       ARB_vertex_array_object.xml \
-       APPLE_object_purgeable.xml \
-       APPLE_vertex_array_object.xml \
-       EXT_draw_buffers2.xml \
-       EXT_framebuffer_object.xml \
-       EXT_packed_depth_stencil.xml \
-       EXT_provoking_vertex.xml \
-       EXT_texture_array.xml \
-       EXT_transform_feedback.xml \
-       NV_conditional_render.xml \
-       OES_EGL_image.xml
-
-COMMON = $(API_XML) gl_XML.py glX_XML.py license.py typeexpr.py
-
-COMMON_GLX = $(COMMON) glX_API.xml glX_XML.py glX_proto_common.py
-
-######################################################################
-
-all: mesa xorg
-
-mesa: $(MESA_OUTPUTS)
-
-xorg: check-xorg-source $(XORG_OUTPUTS)
-
-check-xorg-source:
-       @if ! test -d $(XORG_GLX_DIR); then \
-               echo "ERROR: Must specify path to xserver/GL/GLX checkout; set XORG_GLX_DIR."; \
-               exit 1; \
-       fi
-
-clean:
-       -rm -f *~ *.pyo
-       -rm -f $(MESA_OUTPUTS)
-
-######################################################################
-
-$(XORG_GLAPI_DIR)/%.c: $(MESA_GLAPI_DIR)/%.c
-       cp $< $@
-
-$(XORG_GLAPI_DIR)/%.h: $(MESA_GLAPI_DIR)/%.h
-       cp $< $@
-
-######################################################################
-
-$(MESA_GLAPI_DIR)/glprocs.h: gl_procs.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-$(MESA_GLAPI_DIR)/glapitemp.h: gl_apitemp.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-$(MESA_GLAPI_DIR)/glapioffsets.h: gl_offsets.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-$(MESA_GLAPI_DIR)/glapitable.h: gl_table.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-$(MESA_GLAPI_DIR)/glapidispatch.h: gl_table.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m remap_table > $@
-
-######################################################################
-
-$(MESA_DIR)/x86/glapi_x86.S: gl_x86_asm.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-$(MESA_DIR)/x86-64/glapi_x86-64.S: gl_x86-64_asm.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-$(MESA_DIR)/sparc/glapi_sparc.S: gl_SPARC_asm.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-######################################################################
-
-$(MESA_DIR)/main/enums.c: gl_enums.py $(COMMON) $(ES_API)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_API.xml \
-               -f $(MESA_DIR)/es/glapi/es1_API.xml \
-               -f $(MESA_DIR)/es/glapi/es2_API.xml > $@
-
-$(MESA_DIR)/main/remap_helper.h: remap_helper.py $(COMMON)
-       $(PYTHON2) $(PYTHON_FLAGS) $< > $@
-
-######################################################################
-
-$(MESA_GLX_DIR)/indirect.c: glX_proto_send.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m proto | $(INDENT) $(INDENT_FLAGS) > $@
-
-$(MESA_GLX_DIR)/indirect.h: glX_proto_send.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m init_h > $@
-
-$(MESA_GLX_DIR)/indirect_init.c: glX_proto_send.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m init_c > $@
-
-$(MESA_GLX_DIR)/indirect_size.h $(XORG_GLX_DIR)/indirect_size.h: glX_proto_size.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_h --only-set -h _INDIRECT_SIZE_H_ \
-         | $(INDENT) $(INDENT_FLAGS) > $@
-
-$(MESA_GLX_DIR)/indirect_size.c: glX_proto_size.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_c --only-set \
-         | $(INDENT) $(INDENT_FLAGS) > $@
-
-######################################################################
-
-$(XORG_GLX_DIR)/indirect_dispatch.c: glX_proto_recv.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_c > $@
-
-$(XORG_GLX_DIR)/indirect_dispatch_swap.c: glX_proto_recv.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_c -s > $@
-
-$(XORG_GLX_DIR)/indirect_dispatch.h: glX_proto_recv.py gl_and_glX_API.xml $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m dispatch_h -f gl_and_glX_API.xml -s > $@
-
-$(XORG_GLX_DIR)/indirect_size_get.h: glX_proto_size.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_h --only-get -h '_INDIRECT_SIZE_GET_H_' \
-         | $(INDENT) $(INDENT_FLAGS) > $@
-
-$(XORG_GLX_DIR)/indirect_size_get.c: glX_proto_size.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m size_c | $(INDENT) $(INDENT_FLAGS) > $@
-
-$(XORG_GLX_DIR)/indirect_reqsize.h: glX_proto_size.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m reqsize_h --only-get -h '_INDIRECT_SIZE_GET_H_' \
-         | $(INDENT) $(INDENT_FLAGS) -l200 > $@
-
-$(XORG_GLX_DIR)/indirect_reqsize.c: glX_proto_size.py $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -m reqsize_c | $(INDENT) $(INDENT_FLAGS) > $@
-
-$(XORG_GLX_DIR)/indirect_table.c: glX_server_table.py gl_and_glX_API.xml $(COMMON_GLX)
-       $(PYTHON2) $(PYTHON_FLAGS) $< -f gl_and_glX_API.xml > $@
diff --git a/src/mesa/glapi/gen/NV_conditional_render.xml b/src/mesa/glapi/gen/NV_conditional_render.xml
deleted file mode 100644 (file)
index 8bb31dd..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<!-- Note: no GLX protocol info yet. -->
-
-
-<OpenGLAPI>
-
-<category name="GL_NV_condtitional_render" number="346">
-
-    <enum name="QUERY_WAIT_NV"               value="0x8E13"/>
-    <enum name="QUERY_NO_WAIT_NV"            value="0x8E14"/>
-    <enum name="QUERY_BY_REGION_WAIT_NV"     value="0x8E15"/>
-    <enum name="QUERY_BY_REGION_NO_WAIT_NV"  value="0x8E16"/>
-
-    <function name="BeginConditionalRenderNV" offset="assign">
-       <param name="query" type="GLuint"/>
-       <param name="mode" type="GLenum"/>
-    </function>
-
-    <function name="EndConditionalRenderNV" offset="assign">
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/OES_EGL_image.xml b/src/mesa/glapi/gen/OES_EGL_image.xml
deleted file mode 100644 (file)
index 1cb43d4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<category name="GL_OES_EGL_image">
-
-    <function name="EGLImageTargetTexture2DOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="writeOffset" type="GLvoid *"/>
-    </function>
-
-    <function name="EGLImageTargetRenderbufferStorageOES" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="writeOffset" type="GLvoid *"/>
-    </function>
-
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/extension_helper.py b/src/mesa/glapi/gen/extension_helper.py
deleted file mode 100644 (file)
index 2c83b4e..0000000
+++ /dev/null
@@ -1,324 +0,0 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML
-import license
-import sys, getopt, string
-
-vtxfmt = [
-    "ArrayElement", \
-    "Color3f", \
-    "Color3fv", \
-    "Color4f", \
-    "Color4fv", \
-    "EdgeFlag", \
-    "EdgeFlagv", \
-    "EvalCoord1f", \
-    "EvalCoord1fv", \
-    "EvalCoord2f", \
-    "EvalCoord2fv", \
-    "EvalPoint1", \
-    "EvalPoint2", \
-    "FogCoordfEXT", \
-    "FogCoordfvEXT", \
-    "Indexf", \
-    "Indexfv", \
-    "Materialfv", \
-    "MultiTexCoord1fARB", \
-    "MultiTexCoord1fvARB", \
-    "MultiTexCoord2fARB", \
-    "MultiTexCoord2fvARB", \
-    "MultiTexCoord3fARB", \
-    "MultiTexCoord3fvARB", \
-    "MultiTexCoord4fARB", \
-    "MultiTexCoord4fvARB", \
-    "Normal3f", \
-    "Normal3fv", \
-    "SecondaryColor3fEXT", \
-    "SecondaryColor3fvEXT", \
-    "TexCoord1f", \
-    "TexCoord1fv", \
-    "TexCoord2f", \
-    "TexCoord2fv", \
-    "TexCoord3f", \
-    "TexCoord3fv", \
-    "TexCoord4f", \
-    "TexCoord4fv", \
-    "Vertex2f", \
-    "Vertex2fv", \
-    "Vertex3f", \
-    "Vertex3fv", \
-    "Vertex4f", \
-    "Vertex4fv", \
-    "CallList", \
-    "CallLists", \
-    "Begin", \
-    "End", \
-    "VertexAttrib1fNV", \
-    "VertexAttrib1fvNV", \
-    "VertexAttrib2fNV", \
-    "VertexAttrib2fvNV", \
-    "VertexAttrib3fNV", \
-    "VertexAttrib3fvNV", \
-    "VertexAttrib4fNV", \
-    "VertexAttrib4fvNV", \
-    "VertexAttrib1fARB", \
-    "VertexAttrib1fvARB", \
-    "VertexAttrib2fARB", \
-    "VertexAttrib2fvARB", \
-    "VertexAttrib3fARB", \
-    "VertexAttrib3fvARB", \
-    "VertexAttrib4fARB", \
-    "VertexAttrib4fvARB", \
-    "Rectf", \
-    "DrawArrays", \
-    "DrawElements", \
-    "DrawRangeElements", \
-    "EvalMesh1", \
-    "EvalMesh2", \
-]
-
-def all_entrypoints_in_abi(f, abi, api):
-       for n in f.entry_points:
-               [category, num] = api.get_category_for_name( n )
-               if category not in abi:
-                       return 0
-
-       return 1
-
-
-def any_entrypoints_in_abi(f, abi, api):
-       for n in f.entry_points:
-               [category, num] = api.get_category_for_name( n )
-               if category in abi:
-                       return 1
-
-       return 0
-
-
-def condition_for_function(f, abi, all_not_in_ABI):
-       """Create a C-preprocessor condition for the function.
-       
-       There are two modes of operation.  If all_not_in_ABI is set, a
-       condition is only created is all of the entry-point names for f are
-       not in the selected ABI.  If all_not_in_ABI is not set, a condition
-       is created if any entryp-point name is not in the selected ABI.
-       """
-
-       condition = []
-       for n in f.entry_points:
-               [category, num] = api.get_category_for_name( n )
-               if category not in abi:
-                       condition.append( 'defined(need_%s)' % (gl_XML.real_category_name( category )) )
-               elif all_not_in_ABI:
-                       return []
-
-       return condition
-
-
-class PrintGlExtensionGlue(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "extension_helper.py (from Mesa)"
-               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
-               return
-
-
-       def printRealHeader(self):
-               print '#include "utils.h"'
-               print '#include "main/dispatch.h"'
-               print ''
-               return
-
-
-       def printBody(self, api):
-               abi = [ "1.0", "1.1", "1.2", "GL_ARB_multitexture" ]
-
-               category_list = {}
-
-               print '#ifndef NULL'
-               print '# define NULL 0'
-               print '#endif'
-               print ''
-
-               for f in api.functionIterateAll():
-                       condition = condition_for_function(f, abi, 0)
-                       if len(condition):
-                               print '#if %s' % (string.join(condition, " || "))
-                               print 'static const char %s_names[] =' % (f.name)
-
-                               parameter_signature = ''
-                               for p in f.parameterIterator():
-                                       if p.is_padding:
-                                               continue
-
-                                       # FIXME: This is a *really* ugly hack. :(
-
-                                       tn = p.type_expr.get_base_type_node()
-                                       if p.is_pointer():
-                                               parameter_signature += 'p'
-                                       elif tn.integer:
-                                               parameter_signature += 'i'
-                                       elif tn.size == 4:
-                                               parameter_signature += 'f'
-                                       else:
-                                               parameter_signature += 'd'
-
-                               print '    "%s\\0" /* Parameter signature */' % (parameter_signature)
-
-                               for n in f.entry_points:
-                                       print '    "gl%s\\0"' % (n)
-
-                                       [category, num] = api.get_category_for_name( n )
-                                       if category not in abi:
-                                               c = gl_XML.real_category_name(category)
-                                               if not category_list.has_key(c):
-                                                       category_list[ c ] = []
-
-                                               category_list[ c ].append( f )
-
-                               print '    "";'
-                               print '#endif'
-                               print ''
-
-               keys = category_list.keys()
-               keys.sort()
-
-               for category in keys:
-                       print '#if defined(need_%s)' % (category)
-                       print 'static const struct dri_extension_function %s_functions[] = {' % (category)
-                       
-                       for f in category_list[ category ]:
-                               # A function either has an offset that is
-                               # assigned by the ABI, or it has a remap
-                               # index.
-                               if any_entrypoints_in_abi(f, abi, api):
-                                       index_name = "-1"
-                                       offset = f.offset
-                               else:
-                                       index_name = "%s_remap_index" % (f.name)
-                                       offset = -1
-
-                               print '    { %s_names, %s, %d },' % (f.name, index_name, offset)
-
-
-                       print '    { NULL, 0, 0 }'
-                       print '};'
-                       print '#endif'
-                       print ''
-               
-               return
-
-
-class PrintInitDispatch(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "extension_helper.py (from Mesa)"
-               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
-               return
-
-
-       def do_function_body(self, api, abi, vtxfmt_only):
-               last_condition_string = None
-               for f in api.functionIterateByOffset():
-                       if (f.name in vtxfmt) and not vtxfmt_only:
-                               continue
-
-                       if (f.name not in vtxfmt) and vtxfmt_only:
-                               continue
-
-                       condition = condition_for_function(f, abi, 1)
-                       condition_string = string.join(condition, " || ")
-
-                       if condition_string != last_condition_string:
-                               if last_condition_string:
-                                       print '#endif /* %s */' % (last_condition_string)
-
-                               if condition_string:
-                                       print '#if %s' % (condition_string)
-                               
-                       if vtxfmt_only:
-                               print '   disp->%s = vfmt->%s;' % (f.name, f.name)
-                       else:
-                               print '   disp->%s = _mesa_%s;' % (f.name, f.name)
-
-                       last_condition_string = condition_string
-
-               if last_condition_string:
-                       print '#endif /* %s */' % (last_condition_string)
-               
-
-
-       def printBody(self, api):
-               abi = [ "1.0", "1.1", "1.2", "GL_ARB_multitexture" ]
-               
-               print 'void driver_init_exec_table(struct _glapi_table *disp)'
-               print '{'
-               self.do_function_body(api, abi, 0)
-               print '}'
-               print ''
-               print 'void driver_install_vtxfmt(struct _glapi_table *disp, const GLvertexformat *vfmt)'
-               print '{'
-               self.do_function_body(api, abi, 1)
-               print '}'
-
-               return
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
-       print "    -m output_mode   Output mode can be one of 'extensions' or 'exec_init'."
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-    
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:")
-       except Exception,e:
-               show_usage()
-
-       mode = "extensions"
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               if arg == '-m':
-                       mode = val
-
-
-       api = gl_XML.parse_GL_API( file_name )
-
-       if mode == "extensions":
-               printer = PrintGlExtensionGlue()
-       elif mode == "exec_init":
-               printer = PrintInitDispatch()
-       else:
-               show_usage()
-
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/glX_API.xml b/src/mesa/glapi/gen/glX_API.xml
deleted file mode 100644 (file)
index 9e02aa4..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- Right now this file is just used to generate the GLX protocol
-     decode tables on the server.  The only information that is needed
-     for that purpose is the name of the function (or pseudo-function
-     in the case of Render of VendorPrivate) and its opcode.  Once
-     this file is used for other purposes, additional information will
-     need to be added.
-  -->
-
-<category name="1.0" window_system="glX">
-    <function name="Render">
-        <glx sop="1"/>
-    </function>
-
-    <function name="RenderLarge">
-        <glx sop="2"/>
-    </function>
-
-    <function name="CreateContext">
-        <glx sop="3"/>
-    </function>
-
-    <function name="DestroyContext">
-        <glx sop="4"/>
-    </function>
-
-    <function name="MakeCurrent">
-        <glx sop="5"/>
-    </function>
-
-    <function name="IsDirect">
-        <glx sop="6"/>
-    </function>
-
-    <function name="QueryVersion">
-        <glx sop="7"/>
-    </function>
-
-    <function name="WaitGL">
-        <glx sop="8"/>
-    </function>
-
-    <function name="WaitX">
-        <glx sop="9"/>
-    </function>
-
-    <function name="CopyContext">
-        <glx sop="10"/>
-    </function>
-
-    <function name="SwapBuffers">
-        <glx sop="11"/>
-    </function>
-
-    <function name="UseXFont">
-        <glx sop="12"/>
-    </function>
-
-    <function name="CreateGLXPixmap">
-        <glx sop="13"/>
-    </function>
-
-    <function name="GetVisualConfigs">
-        <glx sop="14"/>
-    </function>
-
-    <function name="DestroyGLXPixmap">
-        <glx sop="15"/>
-    </function>
-
-    <function name="VendorPrivate">
-        <glx sop="16"/>
-    </function>
-
-    <function name="VendorPrivateWithReply">
-        <glx sop="17"/>
-    </function>
-
-    <function name="QueryExtensionsString">
-        <glx sop="18"/>
-    </function>
-</category>
-
-<category name="1.1" window_system="glX">
-    <function name="QueryServerString">
-        <glx sop="19"/>
-    </function>
-
-    <function name="ClientInfo">
-        <glx sop="20"/>
-    </function>
-</category>
-
-<category name="1.3" window_system="glX">
-    <function name="GetFBConfigs">
-        <glx sop="21"/>
-    </function>
-
-    <function name="CreatePixmap">
-        <glx sop="22"/>
-    </function>
-
-    <function name="DestroyPixmap">
-        <glx sop="23"/>
-    </function>
-
-    <function name="CreateNewContext">
-        <glx sop="24"/>
-    </function>
-
-    <function name="QueryContext">
-        <glx sop="25"/>
-    </function>
-
-    <function name="MakeContextCurrent">
-        <glx sop="26"/>
-    </function>
-
-    <function name="CreatePbuffer">
-        <glx sop="27"/>
-    </function>
-
-    <function name="DestroyPbuffer">
-        <glx sop="28"/>
-    </function>
-
-    <function name="GetDrawableAttributes">
-        <glx sop="29"/>
-    </function>
-
-    <function name="ChangeDrawableAttributes">
-        <glx sop="30"/>
-    </function>
-
-    <function name="CreateWindow">
-        <glx sop="31"/>
-    </function>
-
-    <function name="DestroyWindow">
-        <glx sop="32"/>
-    </function>
-</category>
-
-<category name="GLX_SGI_swap_control" number="40" window_system="glX">
-    <function name="SwapIntervalSGI">
-        <return type="int"/>
-        <glx vendorpriv="65536"/>
-    </function>
-</category>
-
-<category name="GLX_SGI_make_current_read" number="42" window_system="glX">
-    <function name="MakeCurrentReadSGI">
-<!--        <param name="dpy" type="Display *"/>
-       <param name="draw" type="GLXDrawable"/>
-       <param name="read" type="GLXDrawable"/>
-       <param name="ctx" type="GLXContext"/> -->
-        <return type="Bool"/>
-        <glx vendorpriv="65537"/>
-    </function>
-</category>
-
-<category name="GLX_EXT_import_context" number="47" window_system="glX">
-    <function name="QueryContextInfoEXT">
-        <glx vendorpriv="1024"/>
-    </function>
-</category>
-
-<category name="GLX_SGIX_fbconfig" number="49" window_system="glX">
-    <function name="GetFBConfigsSGIX">
-        <glx vendorpriv="65540"/>
-    </function>
-
-    <function name="CreateContextWithConfigSGIX">
-        <glx vendorpriv="65541"/>
-    </function>
-
-    <function name="CreateGLXPixmapWithConfigSGIX">
-        <glx vendorpriv="65542"/>
-    </function>
-</category>
-
-<category name="GLX_SGIX_pbuffer" number="50" window_system="glX">
-    <function name="CreateGLXPbufferSGIX">
-        <glx vendorpriv="65543"/>
-    </function>
-
-    <function name="DestroyGLXPbufferSGIX">
-        <glx vendorpriv="65544"/>
-    </function>
-
-    <function name="ChangeDrawableAttributesSGIX">
-        <glx vendorpriv="65545"/>
-    </function>
-
-    <function name="GetDrawableAttributesSGIX">
-        <glx vendorpriv="65546"/>
-    </function>
-</category>
-
-<category name="GLX_MESA_copy_sub_buffer" number="215">
-    <function name="CopySubBufferMESA">
-        <glx vendorpriv="5154"/>
-    </function>
-</category>
-
-<category name="GLX_EXT_texture_from_pixmap">
-    <function name="BindTexImageEXT">
-        <glx vendorpriv="1330"/>
-    </function>
-
-    <function name="ReleaseTexImageEXT">
-        <glx vendorpriv="1331"/>
-    </function>
-</category>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/glX_XML.py b/src/mesa/glapi/gen/glX_XML.py
deleted file mode 100644 (file)
index 4c2e0f9..0000000
+++ /dev/null
@@ -1,570 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML
-import license
-import sys, getopt, string
-
-
-class glx_item_factory(gl_XML.gl_item_factory):
-       """Factory to create GLX protocol oriented objects derived from gl_item."""
-    
-       def create_item(self, name, element, context):
-               if name == "function":
-                       return glx_function(element, context)
-               elif name == "enum":
-                       return glx_enum(element, context)
-               elif name == "api":
-                       return glx_api(self)
-               else:
-                       return gl_XML.gl_item_factory.create_item(self, name, element, context)
-
-
-class glx_enum(gl_XML.gl_enum):
-       def __init__(self, element, context):
-               gl_XML.gl_enum.__init__(self, element, context)
-               
-               self.functions = {}
-
-               child = element.children
-               while child:
-                       if child.type == "element" and child.name == "size":
-                               n = child.nsProp( "name", None )
-                               c = child.nsProp( "count", None )
-                               m = child.nsProp( "mode", None )
-                               
-                               if not c:
-                                       c = self.default_count
-                               else:
-                                       c = int(c)
-
-                               if m == "get":
-                                       mode = 0
-                               else:
-                                       mode = 1
-
-                               if not self.functions.has_key(n):
-                                       self.functions[ n ] = [c, mode]
-
-                       child = child.next
-
-               return
-
-
-class glx_function(gl_XML.gl_function):
-       def __init__(self, element, context):
-               self.glx_rop = 0
-               self.glx_sop = 0
-               self.glx_vendorpriv = 0
-
-               self.glx_vendorpriv_names = []
-
-               # If this is set to true, it means that GLdouble parameters should be
-               # written to the GLX protocol packet in the order they appear in the
-               # prototype.  This is different from the "classic" ordering.  In the
-               # classic ordering GLdoubles are written to the protocol packet first,
-               # followed by non-doubles.  NV_vertex_program was the first extension
-               # to break with this tradition.
-
-               self.glx_doubles_in_order = 0
-
-               self.vectorequiv = None
-               self.output = None
-               self.can_be_large = 0
-               self.reply_always_array = 0
-               self.dimensions_in_reply = 0
-               self.img_reset = None
-
-               self.server_handcode = 0
-               self.client_handcode = 0
-               self.ignore = 0
-
-               self.count_parameter_list = []
-               self.counter_list = []
-               self.parameters_by_name = {}
-               self.offsets_calculated = 0
-
-               gl_XML.gl_function.__init__(self, element, context)
-               return
-
-
-       def process_element(self, element):
-               gl_XML.gl_function.process_element(self, element)
-
-               # If the function already has a vector equivalent set, don't
-               # set it again.  This can happen if an alias to a function
-               # appears after the function that it aliases.
-
-               if not self.vectorequiv:
-                       self.vectorequiv = element.nsProp("vectorequiv", None)
-
-
-               name = element.nsProp("name", None)
-               if name == self.name:
-                       for param in self.parameters:
-                               self.parameters_by_name[ param.name ] = param
-                               
-                               if len(param.count_parameter_list):
-                                       self.count_parameter_list.extend( param.count_parameter_list )
-                               
-                               if param.counter and param.counter not in self.counter_list:
-                                       self.counter_list.append(param.counter)
-
-
-               child = element.children
-               while child:
-                       if child.type == "element" and child.name == "glx":
-                               rop = child.nsProp( 'rop', None )
-                               sop = child.nsProp( 'sop', None )
-                               vop = child.nsProp( 'vendorpriv', None )
-
-                               if rop:
-                                       self.glx_rop = int(rop)
-
-                               if sop:
-                                       self.glx_sop = int(sop)
-
-                               if vop:
-                                       self.glx_vendorpriv = int(vop)
-                                       self.glx_vendorpriv_names.append(name)
-
-                               self.img_reset = child.nsProp( 'img_reset', None )
-
-                               # The 'handcode' attribute can be one of 'true',
-                               # 'false', 'client', or 'server'.
-
-                               handcode = child.nsProp( 'handcode', None )
-                               if handcode == "false":
-                                       self.server_handcode = 0
-                                       self.client_handcode = 0
-                               elif handcode == "true":
-                                       self.server_handcode = 1
-                                       self.client_handcode = 1
-                               elif handcode == "client":
-                                       self.server_handcode = 0
-                                       self.client_handcode = 1
-                               elif handcode == "server":
-                                       self.server_handcode = 1
-                                       self.client_handcode = 0
-                               else:
-                                       raise RuntimeError('Invalid handcode mode "%s" in function "%s".' % (handcode, self.name))
-
-                               self.ignore               = gl_XML.is_attr_true( child, 'ignore' )
-                               self.can_be_large         = gl_XML.is_attr_true( child, 'large' )
-                               self.glx_doubles_in_order = gl_XML.is_attr_true( child, 'doubles_in_order' )
-                               self.reply_always_array   = gl_XML.is_attr_true( child, 'always_array' )
-                               self.dimensions_in_reply  = gl_XML.is_attr_true( child, 'dimensions_in_reply' )
-
-                       child = child.next
-
-
-               # Do some validation of the GLX protocol information.  As
-               # new tests are discovered, they should be added here.
-
-               for param in self.parameters:
-                       if param.is_output and self.glx_rop != 0:
-                               raise RuntimeError("Render / RenderLarge commands cannot have outputs (%s)." % (self.name))
-
-               return
-
-
-       def has_variable_size_request(self):
-               """Determine if the GLX request packet is variable sized.
-
-               The GLX request packet is variable sized in several common
-               situations.
-               
-               1. The function has a non-output parameter that is counted
-                  by another parameter (e.g., the 'textures' parameter of
-                  glDeleteTextures).
-                  
-               2. The function has a non-output parameter whose count is
-                  determined by another parameter that is an enum (e.g., the
-                  'params' parameter of glLightfv).
-                  
-               3. The function has a non-output parameter that is an
-                  image.
-
-               4. The function must be hand-coded on the server.
-               """
-
-               if self.glx_rop == 0:
-                       return 0
-
-               if self.server_handcode or self.images:
-                       return 1
-
-               for param in self.parameters:
-                       if not param.is_output:
-                               if param.counter or len(param.count_parameter_list):
-                                       return 1
-
-               return 0
-
-
-       def variable_length_parameter(self):
-               for param in self.parameters:
-                       if not param.is_output:
-                               if param.counter or len(param.count_parameter_list):
-                                       return param
-                               
-               return None
-
-
-       def calculate_offsets(self):
-               if not self.offsets_calculated:
-                       # Calculate the offset of the first function parameter
-                       # in the GLX command packet.  This byte offset is
-                       # measured from the end of the Render / RenderLarge
-                       # header.  The offset for all non-pixel commends is
-                       # zero.  The offset for pixel commands depends on the
-                       # number of dimensions of the pixel data.
-
-                       if len(self.images) and not self.images[0].is_output:
-                               [dim, junk, junk, junk, junk] = self.images[0].get_dimensions()
-
-                               # The base size is the size of the pixel pack info
-                               # header used by images with the specified number
-                               # of dimensions.
-
-                               if dim <=  2:
-                                       offset = 20
-                               elif dim <= 4:
-                                       offset = 36
-                               else:
-                                       raise RuntimeError('Invalid number of dimensions %u for parameter "%s" in function "%s".' % (dim, self.image.name, self.name))
-                       else:
-                               offset = 0
-
-                       for param in self.parameterIterateGlxSend():
-                               if param.img_null_flag:
-                                       offset += 4
-
-                               if param.name != self.img_reset:
-                                       param.offset = offset
-                                       if not param.is_variable_length() and not param.is_client_only:
-                                               offset += param.size()
-                                       
-                               if self.pad_after( param ):
-                                       offset += 4
-
-
-                       self.offsets_calculated = 1
-               return
-
-
-       def offset_of(self, param_name):
-               self.calculate_offsets()
-               return self.parameters_by_name[ param_name ].offset
-
-
-       def parameterIterateGlxSend(self, include_variable_parameters = 1):
-               """Create an iterator for parameters in GLX request order."""
-
-               # The parameter lists are usually quite short, so it's easier
-               # (i.e., less code) to just generate a new list with the
-               # required elements than it is to create a new iterator class.
-               
-               temp = [ [],  [], [] ]
-               for param in self.parameters:
-                       if param.is_output: continue
-
-                       if param.is_variable_length():
-                               temp[2].append( param )
-                       elif not self.glx_doubles_in_order and param.is_64_bit():
-                               temp[0].append( param )
-                       else:
-                               temp[1].append( param )
-
-               parameters = temp[0]
-               parameters.extend( temp[1] )
-               if include_variable_parameters:
-                       parameters.extend( temp[2] )
-               return parameters.__iter__()
-
-
-       def parameterIterateCounters(self):
-               temp = []
-               for name in self.counter_list:
-                       temp.append( self.parameters_by_name[ name ] )
-
-               return temp.__iter__()
-
-
-       def parameterIterateOutputs(self):
-               temp = []
-               for p in self.parameters:
-                       if p.is_output:
-                               temp.append( p )
-
-               return temp
-
-
-       def command_fixed_length(self):
-               """Return the length, in bytes as an integer, of the
-               fixed-size portion of the command."""
-
-               if len(self.parameters) == 0:
-                       return 0
-               
-               self.calculate_offsets()
-
-               size = 0
-               for param in self.parameterIterateGlxSend(0):
-                       if param.name != self.img_reset and not param.is_client_only:
-                               if size == 0:
-                                       size = param.offset + param.size()
-                               else:
-                                       size += param.size()
-
-                               if self.pad_after( param ):
-                                       size += 4
-
-               for param in self.images:
-                       if param.img_null_flag or param.is_output:
-                               size += 4
-
-               return size
-
-
-       def command_variable_length(self):
-               """Return the length, as a string, of the variable-sized
-               portion of the command."""
-
-               size_string = ""
-               for p in self.parameterIterateGlxSend():
-                       if (not p.is_output) and (p.is_variable_length() or p.is_image()):
-                               # FIXME Replace the 1 in the size_string call
-                               # FIXME w/0 to eliminate some un-needed parnes
-                               # FIXME This would already be done, but it
-                               # FIXME adds some extra diffs to the generated
-                               # FIXME code.
-
-                               size_string = size_string + " + __GLX_PAD(%s)" % (p.size_string(1))
-
-               return size_string
-
-
-       def command_length(self):
-               size = self.command_fixed_length()
-
-               if self.glx_rop != 0:
-                       size += 4
-
-               size = ((size + 3) & ~3)
-               return "%u%s" % (size, self.command_variable_length())
-
-
-       def opcode_real_value(self):
-               """Get the true numeric value of the GLX opcode
-               
-               Behaves similarly to opcode_value, except for
-               X_GLXVendorPrivate and X_GLXVendorPrivateWithReply commands.
-               In these cases the value for the GLX opcode field (i.e.,
-               16 for X_GLXVendorPrivate or 17 for
-               X_GLXVendorPrivateWithReply) is returned.  For other 'single'
-               commands, the opcode for the command (e.g., 101 for
-               X_GLsop_NewList) is returned."""
-
-               if self.glx_vendorpriv != 0:
-                       if self.needs_reply():
-                               return 17
-                       else:
-                               return 16
-               else:
-                       return self.opcode_value()
-
-
-       def opcode_value(self):
-               """Get the unique protocol opcode for the glXFunction"""
-
-               if (self.glx_rop == 0) and self.vectorequiv:
-                       equiv = self.context.functions_by_name[ self.vectorequiv ]
-                       self.glx_rop = equiv.glx_rop
-
-
-               if self.glx_rop != 0:
-                       return self.glx_rop
-               elif self.glx_sop != 0:
-                       return self.glx_sop
-               elif self.glx_vendorpriv != 0:
-                       return self.glx_vendorpriv
-               else:
-                       return -1
-       
-
-       def opcode_rop_basename(self):
-               """Return either the name to be used for GLX protocol enum.
-               
-               Returns either the name of the function or the name of the
-               name of the equivalent vector (e.g., glVertex3fv for
-               glVertex3f) function."""
-
-               if self.vectorequiv == None:
-                       return self.name
-               else:
-                       return self.vectorequiv
-
-
-       def opcode_name(self):
-               """Get the unique protocol enum name for the glXFunction"""
-
-               if (self.glx_rop == 0) and self.vectorequiv:
-                       equiv = self.context.functions_by_name[ self.vectorequiv ]
-                       self.glx_rop = equiv.glx_rop
-                       self.glx_doubles_in_order = equiv.glx_doubles_in_order
-
-
-               if self.glx_rop != 0:
-                       return "X_GLrop_%s" % (self.opcode_rop_basename())
-               elif self.glx_sop != 0:
-                       return "X_GLsop_%s" % (self.name)
-               elif self.glx_vendorpriv != 0:
-                       return "X_GLvop_%s" % (self.name)
-               else:
-                       raise RuntimeError('Function "%s" has no opcode.' % (self.name))
-
-
-       def opcode_vendor_name(self, name):
-               if name in self.glx_vendorpriv_names:
-                       return "X_GLvop_%s" % (name)
-               else:
-                       raise RuntimeError('Function "%s" has no VendorPrivate opcode.' % (name))
-
-
-       def opcode_real_name(self):
-               """Get the true protocol enum name for the GLX opcode
-               
-               Behaves similarly to opcode_name, except for
-               X_GLXVendorPrivate and X_GLXVendorPrivateWithReply commands.
-               In these cases the string 'X_GLXVendorPrivate' or
-               'X_GLXVendorPrivateWithReply' is returned.  For other
-               single or render commands 'X_GLsop' or 'X_GLrop' plus the
-               name of the function returned."""
-
-               if self.glx_vendorpriv != 0:
-                       if self.needs_reply():
-                               return "X_GLXVendorPrivateWithReply"
-                       else:
-                               return "X_GLXVendorPrivate"
-               else:
-                       return self.opcode_name()
-
-
-       def needs_reply(self):
-               try:
-                       x = self._needs_reply
-               except Exception, e:
-                       x = 0
-                       if self.return_type != 'void':
-                               x = 1
-
-                       for param in self.parameters:
-                               if param.is_output:
-                                       x = 1
-                                       break
-
-                       self._needs_reply = x
-
-               return x
-
-
-       def pad_after(self, p):
-               """Returns the name of the field inserted after the
-               specified field to pad out the command header."""
-
-               for image in self.images:
-                       if image.img_pad_dimensions:
-                               if not image.height:
-                                       if p.name == image.width:
-                                               return "height"
-                                       elif p.name == image.img_xoff:
-                                               return "yoffset"
-                               elif not image.extent:
-                                       if p.name == image.depth:
-                                               # Should this be "size4d"?
-                                               return "extent"
-                                       elif p.name == image.img_zoff:
-                                               return "woffset"
-
-               return None
-
-
-       def has_different_protocol(self, name):
-               """Returns true if the named version of the function uses different protocol from the other versions.
-               
-               Some functions, such as glDeleteTextures and
-               glDeleteTexturesEXT are functionally identical, but have
-               different protocol.  This function returns true if the
-               named function is an alias name and that named version uses
-               different protocol from the function that is aliased.
-               """
-
-               return (name in self.glx_vendorpriv_names) and self.glx_sop
-
-
-       def static_glx_name(self, name):
-               if self.has_different_protocol(name):
-                       for n in self.glx_vendorpriv_names:
-                               if n in self.static_entry_points:
-                                       return n
-                               
-               return self.static_name(name)
-
-
-       def client_supported_for_indirect(self):
-               """Returns true if the function is supported on the client
-               side for indirect rendering."""
-
-               return not self.ignore and (self.offset != -1) and (self.glx_rop or self.glx_sop or self.glx_vendorpriv or self.vectorequiv or self.client_handcode)
-
-
-class glx_function_iterator:
-       """Class to iterate over a list of glXFunctions"""
-
-       def __init__(self, context):
-               self.iterator = context.functionIterateByOffset()
-               return
-
-
-       def __iter__(self):
-               return self
-
-
-       def next(self):
-               f = self.iterator.next()
-
-               if f.client_supported_for_indirect():
-                       return f
-               else:
-                       return self.next()
-
-
-class glx_api(gl_XML.gl_api):
-       def functionIterateGlx(self):
-               return glx_function_iterator(self)
-
diff --git a/src/mesa/glapi/gen/glX_doc.py b/src/mesa/glapi/gen/glX_doc.py
deleted file mode 100644 (file)
index e9fbbe6..0000000
+++ /dev/null
@@ -1,280 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML, glX_XML, glX_proto_common, license
-import sys, getopt
-
-
-class glx_doc_item_factory(glX_proto_common.glx_proto_item_factory):
-       """Factory to create GLX protocol documentation oriented objects derived from glItem."""
-    
-       def create_item(self, name, element, context):
-               if name == "parameter":
-                       return glx_doc_parameter(element, context)
-               else:
-                       return glX_proto_common.glx_proto_item_factory.create_item(self, name, element, context)
-
-
-class glx_doc_parameter(gl_XML.gl_parameter):
-       def packet_type(self, type_dict):
-               """Get the type string for the packet header
-               
-               GLX protocol documentation uses type names like CARD32,
-               FLOAT64, LISTofCARD8, and ENUM.  This function converts the
-               type of the parameter to one of these names."""
-
-               list_of = ""
-               if self.is_array():
-                       list_of = "LISTof"
-
-               t_name = self.get_base_type_string()
-               if not type_dict.has_key( t_name ):
-                       type_name = "CARD8"
-               else:
-                       type_name = type_dict[ t_name ]
-
-               return "%s%s" % (list_of, type_name)
-
-
-       def packet_size(self):
-               p = None
-               s = self.size()
-               if s == 0:
-                       a_prod = "n"
-                       b_prod = self.p_type.size
-
-                       if not self.count_parameter_list and self.counter:
-                               a_prod = self.counter
-                       elif self.count_parameter_list and not self.counter or self.is_output:
-                               pass
-                       elif self.count_parameter_list and self.counter:
-                               b_prod = self.counter
-                       else:
-                               raise RuntimeError("Parameter '%s' to function '%s' has size 0." % (self.name, self.context.name))
-
-                       ss = "%s*%s" % (a_prod, b_prod)
-
-                       return [ss, p]
-               else:
-                       if s % 4 != 0:
-                               p = "p"
-
-                       return [str(s), p]
-
-class PrintGlxProtoText(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-               self.license = ""
-
-
-       def printHeader(self):
-               return
-
-
-       def body_size(self, f):
-               # At some point, refactor this function and
-               # glXFunction::command_payload_length.
-
-               size = 0;
-               size_str = ""
-               pad_str = ""
-               plus = ""
-               for p in f.parameterIterateGlxSend():
-                       [s, pad] = p.packet_size()
-                       try: 
-                               size += int(s)
-                       except Exception,e:
-                               size_str += "%s%s" % (plus, s)
-                               plus = "+"
-
-                       if pad != None:
-                               pad_str = pad
-
-               return [size, size_str, pad_str]
-
-
-       def print_render_header(self, f):
-               [size, size_str, pad_str] = self.body_size(f)
-               size += 4;
-
-               if size_str == "":
-                       s = "%u" % ((size + 3) & ~3)
-               elif pad_str != "":
-                       s = "%u+%s+%s" % (size, size_str, pad_str)
-               else:
-                       s = "%u+%s" % (size, size_str)
-
-               print '            2        %-15s rendering command length' % (s)
-               print '            2        %-4u            rendering command opcode' % (f.glx_rop)
-               return
-
-
-       def print_single_header(self, f):
-               [size, size_str, pad_str] = self.body_size(f)
-               size = ((size + 3) / 4) + 2;
-
-               if f.glx_vendorpriv != 0:
-                       size += 1
-
-               print '            1        CARD8           opcode (X assigned)'
-               print '            1        %-4u            GLX opcode (%s)' % (f.opcode_real_value(), f.opcode_real_name())
-
-               if size_str == "":
-                       s = "%u" % (size)
-               elif pad_str != "":
-                       s = "%u+((%s+%s)/4)" % (size, size_str, pad_str)
-               else:
-                       s = "%u+((%s)/4)" % (size, size_str)
-
-               print '            2        %-15s request length' % (s)
-
-               if f.glx_vendorpriv != 0:
-                       print '            4        %-4u            vendor specific opcode' % (f.opcode_value())
-                       
-               print '            4        GLX_CONTEXT_TAG context tag'
-
-               return
-               
-
-       def print_reply(self, f):
-               print '          =>'
-               print '            1        1               reply'
-               print '            1                        unused'
-               print '            2        CARD16          sequence number'
-
-               if f.output == None:
-                       print '            4        0               reply length'
-               elif f.reply_always_array:
-                       print '            4        m               reply length'
-               else:
-                       print '            4        m               reply length, m = (n == 1 ? 0 : n)'
-
-
-               output = None
-               for x in f.parameterIterateOutputs():
-                       output = x
-                       break
-
-
-               unused = 24
-               if f.return_type != 'void':
-                       print '            4        %-15s return value' % (f.return_type)
-                       unused -= 4
-               elif output != None:
-                       print '            4                        unused'
-                       unused -= 4
-
-               if output != None:
-                       print '            4        CARD32          n'
-                       unused -= 4
-
-               if output != None:
-                       if not f.reply_always_array:
-                               print ''
-                               print '            if (n = 1) this follows:'
-                               print ''
-                               print '            4        CARD32          %s' % (output.name)
-                               print '            %-2u                       unused' % (unused - 4)
-                               print ''
-                               print '            otherwise this follows:'
-                               print ''
-
-                       print '            %-2u                       unused' % (unused)
-
-                       [s, pad] = output.packet_size()
-                       print '            %-8s %-15s %s' % (s, output.packet_type( self.type_map ), output.name)
-                       if pad != None:
-                               try:
-                                       bytes = int(s)
-                                       bytes = 4 - (bytes & 3)
-                                       print '            %-8u %-15s unused' % (bytes, "")
-                               except Exception,e:
-                                       print '            %-8s %-15s unused, %s=pad(%s)' % (pad, "", pad, s)
-               else:
-                       print '            %-2u                       unused' % (unused)
-
-
-       def print_body(self, f):
-               for p in f.parameterIterateGlxSend():
-                       [s, pad] = p.packet_size()
-                       print '            %-8s %-15s %s' % (s, p.packet_type( self.type_map ), p.name)
-                       if pad != None:
-                               try:
-                                       bytes = int(s)
-                                       bytes = 4 - (bytes & 3)
-                                       print '            %-8u %-15s unused' % (bytes, "")
-                               except Exception,e:
-                                       print '            %-8s %-15s unused, %s=pad(%s)' % (pad, "", pad, s)
-
-       def printBody(self, api):
-               self.type_map = {}
-               for t in api.typeIterate():
-                       self.type_map[ "GL" + t.name ] = t.glx_name
-
-
-               # At some point this should be expanded to support pixel
-               # functions, but I'm not going to lose any sleep over it now.
-
-               for f in api.functionIterateByOffset():
-                       if f.client_handcode or f.server_handcode or f.vectorequiv or len(f.get_images()):
-                               continue
-
-
-                       if f.glx_rop:
-                               print '        %s' % (f.name)
-                               self.print_render_header(f)
-                       elif f.glx_sop or f.glx_vendorpriv:
-                               print '        %s' % (f.name)
-                               self.print_single_header(f)
-                       else:
-                               continue
-
-                       self.print_body(f)
-
-                       if f.needs_reply():
-                               self.print_reply(f)
-
-                       print ''
-               return
-
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:")
-       except Exception,e:
-               show_usage()
-
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-
-       api = gl_XML.parse_GL_API( file_name, glx_doc_item_factory() )
-
-       printer = PrintGlxProtoText()
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/glX_proto_common.py b/src/mesa/glapi/gen/glX_proto_common.py
deleted file mode 100644 (file)
index 6f094e2..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML, glX_XML
-import string
-
-
-class glx_proto_item_factory(glX_XML.glx_item_factory):
-       """Factory to create GLX protocol oriented objects derived from gl_item."""
-    
-       def create_item(self, name, element, context):
-               if name == "type":
-                       return glx_proto_type(element, context)
-               else:
-                       return glX_XML.glx_item_factory.create_item(self, name, element, context)
-
-
-class glx_proto_type(gl_XML.gl_type):
-       def __init__(self, element, context):
-               gl_XML.gl_type.__init__(self, element, context)
-
-               self.glx_name = element.nsProp( "glx_name", None )
-               return
-
-
-class glx_print_proto(gl_XML.gl_print_base):
-       def size_call(self, func, outputs_also = 0):
-               """Create C code to calculate 'compsize'.
-
-               Creates code to calculate 'compsize'.  If the function does
-               not need 'compsize' to be calculated, None will be
-               returned."""
-       
-               compsize = None
-
-               for param in func.parameterIterator():
-                       if outputs_also or not param.is_output:
-                               if param.is_image():
-                                       [dim, w, h, d, junk] = param.get_dimensions()
-
-                                       compsize = '__glImageSize(%s, %s, %s, %s, %s, %s)' % (w, h, d, param.img_format, param.img_type, param.img_target)
-                                       if not param.img_send_null:
-                                               compsize = '(%s != NULL) ? %s : 0' % (param.name, compsize)
-
-                                       return compsize
-
-                               elif len(param.count_parameter_list):
-                                       parameters = string.join( param.count_parameter_list, "," )
-                                       compsize = "__gl%s_size(%s)" % (func.name, parameters)
-
-                                       return compsize
-
-               return None
-
-
-       def emit_packet_size_calculation(self, f, bias):
-               # compsize is only used in the command size calculation if
-               # the function has a non-output parameter that has a non-empty
-               # counter_parameter_list.
-
-               compsize = self.size_call(f)
-               if compsize:
-                       print '    const GLuint compsize = %s;' % (compsize)
-
-               if bias:
-                       print '    const GLuint cmdlen = %s - %u;' % (f.command_length(), bias)
-               else:
-                       print '    const GLuint cmdlen = %s;' % (f.command_length())
-
-               #print ''
-               return compsize
diff --git a/src/mesa/glapi/gen/glX_proto_recv.py b/src/mesa/glapi/gen/glX_proto_recv.py
deleted file mode 100644 (file)
index 31745fc..0000000
+++ /dev/null
@@ -1,554 +0,0 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML, glX_XML, glX_proto_common, license
-import sys, getopt, string
-
-
-class PrintGlxDispatch_h(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "glX_proto_recv.py (from Mesa)"
-               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005", "IBM")
-
-               self.header_tag = "_INDIRECT_DISPATCH_H_"
-               return
-
-
-       def printRealHeader(self):
-               self.printVisibility( "HIDDEN", "hidden" )
-               print 'struct __GLXclientStateRec;'
-               print ''
-               return
-
-
-       def printBody(self, api):
-               for func in api.functionIterateAll():
-                       if not func.ignore and not func.vectorequiv:
-                               if func.glx_rop:
-                                       print 'extern HIDDEN void __glXDisp_%s(GLbyte * pc);' % (func.name)
-                                       print 'extern HIDDEN void __glXDispSwap_%s(GLbyte * pc);' % (func.name)
-                               elif func.glx_sop or func.glx_vendorpriv:
-                                       print 'extern HIDDEN int __glXDisp_%s(struct __GLXclientStateRec *, GLbyte *);' % (func.name)
-                                       print 'extern HIDDEN int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (func.name)
-
-                                       if func.glx_sop and func.glx_vendorpriv:
-                                               n = func.glx_vendorpriv_names[0]
-                                               print 'extern HIDDEN int __glXDisp_%s(struct __GLXclientStateRec *, GLbyte *);' % (n)
-                                               print 'extern HIDDEN int __glXDispSwap_%s(struct __GLXclientStateRec *, GLbyte *);' % (n)
-
-               return
-
-
-class PrintGlxDispatchFunctions(glX_proto_common.glx_print_proto):
-       def __init__(self, do_swap):
-               gl_XML.gl_print_base.__init__(self)
-               self.name = "glX_proto_recv.py (from Mesa)"
-               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005", "IBM")
-
-               self.real_types = [ '', '', 'uint16_t', '', 'uint32_t', '', '', '', 'uint64_t' ]
-               self.do_swap = do_swap
-               return
-
-
-       def printRealHeader(self):
-               print '#include <X11/Xmd.h>'
-               print '#include <GL/gl.h>'
-               print '#include <GL/glxproto.h>'
-
-               print '#include <inttypes.h>'
-               print '#include "indirect_size.h"'
-               print '#include "indirect_size_get.h"'
-               print '#include "indirect_dispatch.h"'
-               print '#include "glxserver.h"'
-               print '#include "glxbyteorder.h"'
-               print '#include "indirect_util.h"'
-               print '#include "singlesize.h"'
-               print '#include "glapi.h"'
-               print '#include "glapitable.h"'
-               print '#include "glthread.h"'
-               print '#include "glapidispatch.h"'
-               print ''
-               print '#define __GLX_PAD(x)  (((x) + 3) & ~3)'
-               print ''
-               print 'typedef struct {'
-               print '    __GLX_PIXEL_3D_HDR;'
-               print '} __GLXpixel3DHeader;'
-               print ''
-               print 'extern GLboolean __glXErrorOccured( void );'
-               print 'extern void __glXClearErrorOccured( void );'
-               print ''
-               print 'static const unsigned dummy_answer[2] = {0, 0};'
-               print ''
-               return
-
-
-       def printBody(self, api):
-               if self.do_swap:
-                       self.emit_swap_wrappers(api)
-
-
-               for func in api.functionIterateByOffset():
-                       if not func.ignore and not func.server_handcode and not func.vectorequiv and (func.glx_rop or func.glx_sop or func.glx_vendorpriv):
-                               self.printFunction(func, func.name)
-                               if func.glx_sop and func.glx_vendorpriv:
-                                       self.printFunction(func, func.glx_vendorpriv_names[0])
-                                       
-
-               return
-
-
-       def printFunction(self, f, name):
-               if (f.glx_sop or f.glx_vendorpriv) and (len(f.get_images()) != 0):
-                       return
-
-               if not self.do_swap:
-                       base = '__glXDisp'
-               else:
-                       base = '__glXDispSwap'
-
-               if f.glx_rop:
-                       print 'void %s_%s(GLbyte * pc)' % (base, name)
-               else:
-                       print 'int %s_%s(__GLXclientState *cl, GLbyte *pc)' % (base, name)
-
-               print '{'
-
-               if f.glx_rop or f.vectorequiv:
-                       self.printRenderFunction(f)
-               elif f.glx_sop or f.glx_vendorpriv:
-                       if len(f.get_images()) == 0: 
-                               self.printSingleFunction(f, name)
-               else:
-                       print "/* Missing GLX protocol for %s. */" % (name)
-
-               print '}'
-               print ''
-               return
-
-
-       def swap_name(self, bytes):
-               return 'bswap_%u_array' % (8 * bytes)
-
-
-       def emit_swap_wrappers(self, api):
-               self.type_map = {}
-               already_done = [ ]
-
-               for t in api.typeIterate():
-                       te = t.get_type_expression()
-                       t_size = te.get_element_size()
-
-                       if t_size > 1 and t.glx_name:
-                               
-                               t_name = "GL" + t.name
-                               self.type_map[ t_name ] = t.glx_name
-
-                               if t.glx_name not in already_done:
-                                       real_name = self.real_types[t_size]
-
-                                       print 'static %s' % (t_name)
-                                       print 'bswap_%s( const void * src )' % (t.glx_name)
-                                       print '{'
-                                       print '    union { %s dst; %s ret; } x;' % (real_name, t_name)
-                                       print '    x.dst = bswap_%u( *(%s *) src );' % (t_size * 8, real_name)
-                                       print '    return x.ret;'
-                                       print '}'
-                                       print ''
-                                       already_done.append( t.glx_name )
-
-               for bits in [16, 32, 64]:
-                       print 'static void *'
-                       print 'bswap_%u_array( uint%u_t * src, unsigned count )' % (bits, bits)
-                       print '{'
-                       print '    unsigned  i;'
-                       print ''
-                       print '    for ( i = 0 ; i < count ; i++ ) {'
-                       print '        uint%u_t temp = bswap_%u( src[i] );' % (bits, bits)
-                       print '        src[i] = temp;'
-                       print '    }'
-                       print ''
-                       print '    return src;'
-                       print '}'
-                       print ''
-                       
-
-       def fetch_param(self, param):
-               t = param.type_string()
-               o = param.offset
-               element_size = param.size() / param.get_element_count()
-
-               if self.do_swap and (element_size != 1):
-                       if param.is_array():
-                               real_name = self.real_types[ element_size ]
-
-                               swap_func = self.swap_name( element_size )
-                               return ' (%-8s)%s( (%s *) (pc + %2s), %s )' % (t, swap_func, real_name, o, param.count)
-                       else:
-                               t_name = param.get_base_type_string()
-                               return ' (%-8s)bswap_%-7s( pc + %2s )' % (t, self.type_map[ t_name ], o)
-               else:
-                       if param.is_array():
-                               return ' (%-8s)(pc + %2u)' % (t, o)
-                       else:
-                               return '*(%-8s *)(pc + %2u)' % (t, o)
-                               
-               return None
-
-
-       def emit_function_call(self, f, retval_assign, indent):
-               list = []
-
-               for param in f.parameterIterator():
-                       if param.is_padding:
-                               continue
-
-                       if param.is_counter or param.is_image() or param.is_output or param.name in f.count_parameter_list or len(param.count_parameter_list):
-                               location = param.name
-                       else:
-                               location = self.fetch_param(param)
-
-                       list.append( '%s        %s' % (indent, location) )
-                       
-
-               if len( list ):
-                       print '%s    %sCALL_%s( GET_DISPATCH(), (' % (indent, retval_assign, f.name)
-                       print string.join( list, ",\n" )
-                       print '%s    ) );' % (indent)
-               else:
-                       print '%s    %sCALL_%s( GET_DISPATCH(), () );' % (indent, retval_assign, f.name)
-               return
-
-
-       def common_func_print_just_start(self, f, indent):
-               align64 = 0
-               need_blank = 0
-
-
-               f.calculate_offsets()
-               for param in f.parameterIterateGlxSend():
-                       # If any parameter has a 64-bit base type, then we
-                       # have to do alignment magic for the while thing.
-
-                       if param.is_64_bit():
-                               align64 = 1
-
-
-                       # FIXME img_null_flag is over-loaded.  In addition to
-                       # FIXME being used for images, it is used to signify
-                       # FIXME NULL data pointers for vertex buffer object
-                       # FIXME related functions.  Re-name it to null_data
-                       # FIXME or something similar.
-
-                       if param.img_null_flag:
-                               print '%s    const CARD32 ptr_is_null = *(CARD32 *)(pc + %s);' % (indent, param.offset - 4)
-                               cond = '(ptr_is_null != 0) ? NULL : '
-                       else:
-                               cond = ""
-
-
-                       type_string = param.type_string()
-
-                       if param.is_image():
-                               offset = f.offset_of( param.name )
-
-                               print '%s    %s const %s = (%s) (%s(pc + %s));' % (indent, type_string, param.name, type_string, cond, offset)
-                               
-                               if param.depth:
-                                       print '%s    __GLXpixel3DHeader * const hdr = (__GLXpixel3DHeader *)(pc);' % (indent)
-                               else:
-                                       print '%s    __GLXpixelHeader * const hdr = (__GLXpixelHeader *)(pc);' % (indent)
-
-                               need_blank = 1
-                       elif param.is_counter or param.name in f.count_parameter_list:
-                               location = self.fetch_param(param)
-                               print '%s    const %s %s = %s;' % (indent, type_string, param.name, location)
-                               need_blank = 1
-                       elif len(param.count_parameter_list):
-                               if param.size() == 1 and not self.do_swap:
-                                       location = self.fetch_param(param)
-                                       print '%s    %s %s = %s%s;' % (indent, type_string, param.name, cond, location)
-                               else:
-                                       print '%s    %s %s;' % (indent, type_string, param.name)
-                               need_blank = 1
-
-
-
-               if need_blank:
-                       print ''
-
-               if align64:
-                       print '#ifdef __GLX_ALIGN64'
-
-                       if f.has_variable_size_request():
-                               self.emit_packet_size_calculation(f, 4)
-                               s = "cmdlen"
-                       else:
-                               s = str((f.command_fixed_length() + 3) & ~3)
-
-                       print '    if ((unsigned long)(pc) & 7) {'
-                       print '        (void) memmove(pc-4, pc, %s);' % (s)
-                       print '        pc -= 4;'
-                       print '    }'
-                       print '#endif'
-                       print ''
-
-
-               need_blank = 0
-               if self.do_swap:
-                       for param in f.parameterIterateGlxSend():
-                               if param.count_parameter_list:
-                                       o = param.offset
-                                       count = param.get_element_count()
-                                       type_size = param.size() / count
-                                       
-                                       if param.counter:
-                                               count_name = param.counter
-                                       else:
-                                               count_name = str(count)
-
-                                       # This is basically an ugly special-
-                                       # case for glCallLists.
-
-                                       if type_size == 1:
-                                               x = [] 
-                                               x.append( [1, ['BYTE', 'UNSIGNED_BYTE', '2_BYTES', '3_BYTES', '4_BYTES']] )
-                                               x.append( [2, ['SHORT', 'UNSIGNED_SHORT']] )
-                                               x.append( [4, ['INT', 'UNSIGNED_INT', 'FLOAT']] )
-
-                                               print '    switch(%s) {' % (param.count_parameter_list[0])
-                                               for sub in x:
-                                                       for t_name in sub[1]:
-                                                               print '    case GL_%s:' % (t_name)
-
-                                                       if sub[0] == 1:
-                                                               print '        %s = (%s) (pc + %s); break;' % (param.name, param.type_string(), o)
-                                                       else:
-                                                               swap_func = self.swap_name(sub[0])
-                                                               print '        %s = (%s) %s( (%s *) (pc + %s), %s ); break;' % (param.name, param.type_string(), swap_func, self.real_types[sub[0]], o, count_name)
-                                               print '    default:'
-                                               print '        return;'
-                                               print '    }'
-                                       else:
-                                               swap_func = self.swap_name(type_size)
-                                               compsize = self.size_call(f, 1)
-                                               print '    %s = (%s) %s( (%s *) (pc + %s), %s );' % (param.name, param.type_string(), swap_func, self.real_types[type_size], o, compsize)
-
-                                       need_blank = 1
-
-               else:
-                       for param in f.parameterIterateGlxSend():
-                               if param.count_parameter_list:
-                                       print '%s    %s = (%s) (pc + %s);' % (indent, param.name, param.type_string(), param.offset)
-                                       need_blank = 1
-
-
-               if need_blank:
-                       print ''
-
-
-               return
-
-
-       def printSingleFunction(self, f, name):
-               if name not in f.glx_vendorpriv_names:
-                       print '    xGLXSingleReq * const req = (xGLXSingleReq *) pc;'
-               else:
-                       print '    xGLXVendorPrivateReq * const req = (xGLXVendorPrivateReq *) pc;'
-
-               print '    int error;'
-
-               if self.do_swap:
-                   print '    __GLXcontext * const cx = __glXForceCurrent(cl, bswap_CARD32( &req->contextTag ), &error);'
-               else:
-                   print '    __GLXcontext * const cx = __glXForceCurrent(cl, req->contextTag, &error);'
-
-               print ''
-               if name not in f.glx_vendorpriv_names:
-                       print '    pc += __GLX_SINGLE_HDR_SIZE;'
-               else:
-                       print '    pc += __GLX_VENDPRIV_HDR_SIZE;'
-
-               print '    if ( cx != NULL ) {'
-               self.common_func_print_just_start(f, "    ")
-               
-
-               if f.return_type != 'void':
-                       print '        %s retval;' % (f.return_type)
-                       retval_string = "retval"
-                       retval_assign = "retval = "
-               else:
-                       retval_string = "0"
-                       retval_assign = ""
-
-
-               type_size = 0
-               answer_string = "dummy_answer"
-               answer_count = "0"
-               is_array_string = "GL_FALSE"
-
-               for param in f.parameterIterateOutputs():
-                       answer_type = param.get_base_type_string()
-                       if answer_type == "GLvoid":
-                               answer_type = "GLubyte"
-
-
-                       c = param.get_element_count()
-                       type_size = (param.size() / c)
-                       if type_size == 1:
-                               size_scale = ""
-                       else:
-                               size_scale = " * %u" % (type_size)
-
-
-                       if param.count_parameter_list:
-                               print '        const GLuint compsize = %s;' % (self.size_call(f, 1))
-                               print '        %s answerBuffer[200];' %  (answer_type)
-                               print '        %s %s = __glXGetAnswerBuffer(cl, compsize%s, answerBuffer, sizeof(answerBuffer), %u);' % (param.type_string(), param.name, size_scale, type_size )
-                               answer_string = param.name
-                               answer_count = "compsize"
-
-                               print ''
-                               print '        if (%s == NULL) return BadAlloc;' % (param.name)
-                               print '        __glXClearErrorOccured();'
-                               print ''
-                       elif param.counter:
-                               print '        %s answerBuffer[200];' %  (answer_type)
-                               print '        %s %s = __glXGetAnswerBuffer(cl, %s%s, answerBuffer, sizeof(answerBuffer), %u);' % (param.type_string(), param.name, param.counter, size_scale, type_size)
-                               answer_string = param.name
-                               answer_count = param.counter
-                       elif c >= 1:
-                               print '        %s %s[%u];' % (answer_type, param.name, c)
-                               answer_string = param.name
-                               answer_count = "%u" % (c)
-
-                       if f.reply_always_array:
-                               is_array_string = "GL_TRUE"
-
-
-               self.emit_function_call(f, retval_assign, "    ")
-
-
-               if f.needs_reply():
-                       if self.do_swap:
-                               for param in f.parameterIterateOutputs():
-                                       c = param.get_element_count()
-                                       type_size = (param.size() / c)
-
-                                       if type_size > 1:
-                                               swap_name = self.swap_name( type_size )
-                                               print '        (void) %s( (uint%u_t *) %s, %s );' % (swap_name, 8 * type_size, param.name, answer_count)
-
-
-                               reply_func = '__glXSendReplySwap'
-                       else:
-                               reply_func = '__glXSendReply'
-
-                       print '        %s(cl->client, %s, %s, %u, %s, %s);' % (reply_func, answer_string, answer_count, type_size, is_array_string, retval_string)
-               #elif f.note_unflushed:
-               #       print '        cx->hasUnflushedCommands = GL_TRUE;'
-
-               print '        error = Success;'
-               print '    }'
-               print ''
-               print '    return error;'
-               return
-
-
-       def printRenderFunction(self, f):
-               # There are 4 distinct phases in a rendering dispatch function.
-               # In the first phase we compute the sizes and offsets of each
-               # element in the command.  In the second phase we (optionally)
-               # re-align 64-bit data elements.  In the third phase we
-               # (optionally) byte-swap array data.  Finally, in the fourth
-               # phase we actually dispatch the function.
-
-               self.common_func_print_just_start(f, "")
-
-               images = f.get_images()
-               if len(images):
-                       if self.do_swap:
-                               pre = "bswap_CARD32( & "
-                               post = " )"
-                       else:
-                               pre = ""
-                               post = ""
-
-                       img = images[0]
-
-                       # swapBytes and lsbFirst are single byte fields, so
-                       # the must NEVER be byte-swapped.
-
-                       if not (img.img_type == "GL_BITMAP" and img.img_format == "GL_COLOR_INDEX"):
-                               print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SWAP_BYTES,   hdr->swapBytes) );'
-
-                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_LSB_FIRST,    hdr->lsbFirst) );'
-
-                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ROW_LENGTH,   (GLint) %shdr->rowLength%s) );' % (pre, post)
-                       if img.depth:
-                               print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_IMAGE_HEIGHT, (GLint) %shdr->imageHeight%s) );' % (pre, post)
-                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_ROWS,    (GLint) %shdr->skipRows%s) );' % (pre, post)
-                       if img.depth:
-                               print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_IMAGES,  (GLint) %shdr->skipImages%s) );' % (pre, post)
-                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_SKIP_PIXELS,  (GLint) %shdr->skipPixels%s) );' % (pre, post)
-                       print '    CALL_PixelStorei( GET_DISPATCH(), (GL_UNPACK_ALIGNMENT,    (GLint) %shdr->alignment%s) );' % (pre, post)
-                       print ''
-
-
-               self.emit_function_call(f, "", "")
-               return
-
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:s")
-       except Exception,e:
-               show_usage()
-
-       mode = "dispatch_c"
-       do_swap = 0
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-m":
-                       mode = val
-               elif arg == "-s":
-                       do_swap = 1
-
-       if mode == "dispatch_c":
-               printer = PrintGlxDispatchFunctions(do_swap)
-       elif mode == "dispatch_h":
-               printer = PrintGlxDispatch_h()
-       else:
-               show_usage()
-
-       api = gl_XML.parse_GL_API( file_name, glX_proto_common.glx_proto_item_factory() )
-
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/glX_proto_send.py b/src/mesa/glapi/gen/glX_proto_send.py
deleted file mode 100644 (file)
index c52b85b..0000000
+++ /dev/null
@@ -1,1042 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-#    Jeremy Kolb <jkolb@brandeis.edu>
-
-import gl_XML, glX_XML, glX_proto_common, license
-import sys, getopt, copy, string
-
-def convertStringForXCB(str):
-    tmp = ""
-    special = [ "ARB" ]
-    i = 0
-    while i < len(str):
-        if str[i:i+3] in special:
-            tmp = '%s_%s' % (tmp, string.lower(str[i:i+3]))
-            i = i + 2;
-        elif str[i].isupper():
-            tmp = '%s_%s' % (tmp, string.lower(str[i]))
-        else:
-            tmp = '%s%s' % (tmp, str[i])
-        i += 1
-    return tmp
-
-def hash_pixel_function(func):
-       """Generate a 'unique' key for a pixel function.  The key is based on
-       the parameters written in the command packet.  This includes any
-       padding that might be added for the original function and the 'NULL
-       image' flag."""
-
-
-       h = ""
-       hash_pre = ""
-       hash_suf = ""
-       for param in func.parameterIterateGlxSend():
-               if param.is_image():
-                       [dim, junk, junk, junk, junk] = param.get_dimensions()
-
-                       d = (dim + 1) & ~1
-                       hash_pre = "%uD%uD_" % (d - 1, d)
-
-                       if param.img_null_flag:
-                               hash_suf = "_NF"
-
-               h += "%u" % (param.size())
-
-               if func.pad_after(param):
-                       h += "4"
-
-
-       n = func.name.replace("%uD" % (dim), "")
-       n = "__glx_%s_%uD%uD" % (n, d - 1, d)
-
-       h = hash_pre + h + hash_suf
-       return [h, n]
-
-
-class glx_pixel_function_stub(glX_XML.glx_function):
-       """Dummy class used to generate pixel "utility" functions that are
-       shared by multiple dimension image functions.  For example, these
-       objects are used to generate shared functions used to send GLX
-       protocol for TexImage1D and TexImage2D, TexSubImage1D and
-       TexSubImage2D, etc."""
-
-       def __init__(self, func, name):
-               # The parameters to the utility function are the same as the
-               # parameters to the real function except for the added "pad"
-               # parameters.
-
-               self.name = name
-               self.images = []
-               self.parameters = []
-               self.parameters_by_name = {}
-               for _p in func.parameterIterator():
-                       p = copy.copy(_p)
-                       self.parameters.append(p)
-                       self.parameters_by_name[ p.name ] = p
-
-
-                       if p.is_image():
-                               self.images.append(p)
-                               p.height = "height"
-
-                               if p.img_yoff == None:
-                                       p.img_yoff = "yoffset"
-
-                               if p.depth:
-                                       if p.extent == None:
-                                               p.extent = "extent"
-
-                                       if p.img_woff == None:
-                                               p.img_woff = "woffset"
-
-
-                       pad_name = func.pad_after(p)
-                       if pad_name:
-                               pad = copy.copy(p)
-                               pad.name = pad_name
-                               self.parameters.append(pad)
-                               self.parameters_by_name[ pad.name ] = pad
-                               
-
-               self.return_type = func.return_type
-
-               self.glx_rop = ~0
-               self.glx_sop = 0
-               self.glx_vendorpriv = 0
-
-               self.glx_doubles_in_order = func.glx_doubles_in_order
-
-               self.vectorequiv = None
-               self.output = None
-               self.can_be_large = func.can_be_large
-               self.reply_always_array = func.reply_always_array
-               self.dimensions_in_reply = func.dimensions_in_reply
-               self.img_reset = None
-
-               self.server_handcode = 0
-               self.client_handcode = 0
-               self.ignore = 0
-
-               self.count_parameter_list = func.count_parameter_list
-               self.counter_list = func.counter_list
-               self.offsets_calculated = 0
-               return
-
-
-class PrintGlxProtoStubs(glX_proto_common.glx_print_proto):
-       def __init__(self):
-               glX_proto_common.glx_print_proto.__init__(self)
-               self.name = "glX_proto_send.py (from Mesa)"
-               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004, 2005", "IBM")
-
-
-               self.last_category = ""
-               self.generic_sizes = [3, 4, 6, 8, 12, 16, 24, 32]
-               self.pixel_stubs = {}
-               self.debug = 0
-               return
-
-       def printRealHeader(self):
-               print ''
-               print '#include <GL/gl.h>'
-               print '#include "indirect.h"'
-               print '#include "glxclient.h"'
-               print '#include "indirect_size.h"'
-               print '#include "glapidispatch.h"'
-               print '#include "glapi.h"'
-               print '#include "glthread.h"'
-               print '#include <GL/glxproto.h>'
-               print '#ifdef USE_XCB'
-               print '#include <X11/Xlib-xcb.h>'
-               print '#include <xcb/xcb.h>'
-               print '#include <xcb/glx.h>'
-               print '#endif /* USE_XCB */'
-
-               print ''
-               print '#define __GLX_PAD(n) (((n) + 3) & ~3)'
-               print ''
-               self.printFastcall()
-               self.printNoinline()
-               print ''
-               print '#ifndef __GNUC__'
-               print '#  define __builtin_expect(x, y) x'
-               print '#endif'
-               print ''
-               print '/* If the size and opcode values are known at compile-time, this will, on'
-               print ' * x86 at least, emit them with a single instruction.'
-               print ' */'
-               print '#define emit_header(dest, op, size)            \\'
-               print '    do { union { short s[2]; int i; } temp;    \\'
-               print '         temp.s[0] = (size); temp.s[1] = (op); \\'
-               print '         *((int *)(dest)) = temp.i; } while(0)'
-               print ''
-               print """NOINLINE 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;
-}
-
-NOINLINE 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);
-        }
-    }
-}
-
-#define X_GLXSingle 0
-
-NOINLINE FASTCALL 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;
-}
-
-NOINLINE FASTCALL 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;
-}
-
-const GLuint __glXDefaultPixelStore[9] = { 0, 0, 0, 0, 0, 0, 0, 0, 1 };
-
-#define zero                        (__glXDefaultPixelStore+0)
-#define one                         (__glXDefaultPixelStore+8)
-#define default_pixel_store_1D      (__glXDefaultPixelStore+4)
-#define default_pixel_store_1D_size 20
-#define default_pixel_store_2D      (__glXDefaultPixelStore+4)
-#define default_pixel_store_2D_size 20
-#define default_pixel_store_3D      (__glXDefaultPixelStore+0)
-#define default_pixel_store_3D_size 36
-#define default_pixel_store_4D      (__glXDefaultPixelStore+0)
-#define default_pixel_store_4D_size 36
-"""
-
-               for size in self.generic_sizes:
-                       self.print_generic_function(size)
-               return
-
-
-       def printBody(self, api):
-
-               self.pixel_stubs = {}
-               generated_stubs = []
-
-               for func in api.functionIterateGlx():
-                       if func.client_handcode: continue
-
-                       # If the function is a pixel function with a certain
-                       # GLX protocol signature, create a fake stub function
-                       # for it.  For example, create a single stub function
-                       # that is used to implement both glTexImage1D and
-                       # glTexImage2D.
-
-                       if func.glx_rop != 0:
-                               do_it = 0
-                               for image in func.get_images():
-                                       if image.img_pad_dimensions:
-                                               do_it = 1
-                                               break
-
-
-                               if do_it:
-                                       [h, n] = hash_pixel_function(func)
-
-
-                                       self.pixel_stubs[ func.name ] = n
-                                       if h not in generated_stubs:
-                                               generated_stubs.append(h)
-
-                                               fake_func = glx_pixel_function_stub( func, n )
-                                               self.printFunction(fake_func, fake_func.name)
-
-
-                       self.printFunction(func, func.name)
-                       if func.glx_sop and func.glx_vendorpriv:
-                               self.printFunction(func, func.glx_vendorpriv_names[0])
-
-               return
-
-
-       def printFunction(self, func, name):
-               footer = '}\n'
-               if func.glx_rop == ~0:
-                       print 'static %s' % (func.return_type)
-                       print '%s( unsigned opcode, unsigned dim, %s )' % (func.name, func.get_parameter_string())
-                       print '{'
-               else:
-                       if func.has_different_protocol(name):
-                               if func.return_type == "void":
-                                       ret_string = ''
-                               else:
-                                       ret_string = "return "
-
-                               func_name = func.static_glx_name(name)
-                               print '#define %s %d' % (func.opcode_vendor_name(name), func.glx_vendorpriv)
-                               print '%s gl%s(%s)' % (func.return_type, func_name, func.get_parameter_string())
-                               print '{'
-                               print '    __GLXcontext * const gc = __glXGetCurrentContext();'
-                               print ''
-                               print '#ifdef GLX_DIRECT_RENDERING'
-                               print '    if (gc->driContext) {'
-                               print '    %sCALL_%s(GET_DISPATCH(), (%s));' % (ret_string, func.name, func.get_called_parameter_string())
-                               print '    } else'
-                               print '#endif'
-                               print '    {'
-
-                               footer = '}\n}\n'
-                       else:
-                               print '#define %s %d' % (func.opcode_name(), func.opcode_value())
-
-                               print '%s __indirect_gl%s(%s)' % (func.return_type, name, func.get_parameter_string())
-                               print '{'
-
-
-               if func.glx_rop != 0 or func.vectorequiv != None:
-                       if len(func.images):
-                               self.printPixelFunction(func)
-                       else:
-                               self.printRenderFunction(func)
-               elif func.glx_sop != 0 or func.glx_vendorpriv != 0:
-                       self.printSingleFunction(func, name)
-                       pass
-               else:
-                       print "/* Missing GLX protocol for %s. */" % (name)
-
-               print footer
-               return
-
-
-       def print_generic_function(self, n):
-               size = (n + 3) & ~3
-               print """static FASTCALL NOINLINE void
-generic_%u_byte( GLint rop, const void * ptr )
-{
-    __GLXcontext * const gc = __glXGetCurrentContext();
-    const GLuint cmdlen = %u;
-
-    emit_header(gc->pc, rop, cmdlen);
-    (void) memcpy((void *)(gc->pc + 4), ptr, %u);
-    gc->pc += cmdlen;
-    if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }
-}
-""" % (n, size + 4, size)
-               return
-
-
-       def common_emit_one_arg(self, p, pc, adjust, extra_offset):
-               if p.is_array():
-                       src_ptr = p.name
-               else:
-                       src_ptr = "&" + p.name
-
-               if p.is_padding:
-                       print '(void) memset((void *)(%s + %u), 0, %s);' \
-                           % (pc, p.offset + adjust, p.size_string() )
-               elif not extra_offset:
-                       print '(void) memcpy((void *)(%s + %u), (void *)(%s), %s);' \
-                           % (pc, p.offset + adjust, src_ptr, p.size_string() )
-               else:
-                       print '(void) memcpy((void *)(%s + %u + %s), (void *)(%s), %s);' \
-                           % (pc, p.offset + adjust, extra_offset, src_ptr, p.size_string() )
-
-       def common_emit_args(self, f, pc, adjust, skip_vla):
-               extra_offset = None
-
-               for p in f.parameterIterateGlxSend( not skip_vla ):
-                       if p.name != f.img_reset:
-                               self.common_emit_one_arg(p, pc, adjust, extra_offset)
-                               
-                               if p.is_variable_length():
-                                       temp = p.size_string()
-                                       if extra_offset:
-                                               extra_offset += " + %s" % (temp)
-                                       else:
-                                               extra_offset = temp
-
-               return
-
-
-       def pixel_emit_args(self, f, pc, large):
-               """Emit the arguments for a pixel function.  This differs from
-               common_emit_args in that pixel functions may require padding
-               be inserted (i.e., for the missing width field for
-               TexImage1D), and they may also require a 'NULL image' flag
-               be inserted before the image data."""
-
-               if large:
-                       adjust = 8
-               else:
-                       adjust = 4
-
-               for param in f.parameterIterateGlxSend():
-                       if not param.is_image():
-                               self.common_emit_one_arg(param, pc, adjust, None)
-
-                               if f.pad_after(param):
-                                       print '(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset + param.size()) + adjust)
-
-                       else:
-                               [dim, width, height, depth, extent] = param.get_dimensions()
-                               if f.glx_rop == ~0:
-                                       dim_str = "dim"
-                               else:
-                                       dim_str = str(dim)
-
-                               if param.is_padding:
-                                       print '(void) memset((void *)(%s + %u), 0, %s);' \
-                                       % (pc, (param.offset - 4) + adjust, param.size_string() )
-
-                               if param.img_null_flag:
-                                       if large:
-                                               print '(void) memcpy((void *)(%s + %u), zero, 4);' % (pc, (param.offset - 4) + adjust)
-                                       else:
-                                               print '(void) memcpy((void *)(%s + %u), (void *)((%s == NULL) ? one : zero), 4);' % (pc, (param.offset - 4) + adjust, param.name)
-
-
-                               pixHeaderPtr = "%s + %u" % (pc, adjust)
-                               pcPtr = "%s + %u" % (pc, param.offset + adjust)
-
-                               if not large:
-                                       if param.img_send_null:
-                                               condition = '(compsize > 0) && (%s != NULL)' % (param.name)
-                                       else:
-                                               condition = 'compsize > 0'
-
-                                       print 'if (%s) {' % (condition)
-                                       print '    (*gc->fillImage)(gc, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
-                                       print '} else {'
-                                       print '    (void) memcpy( %s, default_pixel_store_%uD, default_pixel_store_%uD_size );' % (pixHeaderPtr, dim, dim)
-                                       print '}'
-                               else:
-                                       print '__glXSendLargeImage(gc, compsize, %s, %s, %s, %s, %s, %s, %s, %s, %s);' % (dim_str, width, height, depth, param.img_format, param.img_type, param.name, pcPtr, pixHeaderPtr)
-
-               return
-
-
-       def large_emit_begin(self, f, op_name = None):
-               if not op_name:
-                       op_name = f.opcode_real_name()
-
-               print 'const GLint op = %s;' % (op_name)
-               print 'const GLuint cmdlenLarge = cmdlen + 4;'
-               print 'GLubyte * const pc = __glXFlushRenderBuffer(gc, gc->pc);'
-               print '(void) memcpy((void *)(pc + 0), (void *)(&cmdlenLarge), 4);'
-               print '(void) memcpy((void *)(pc + 4), (void *)(&op), 4);'
-               return
-
-
-       def common_func_print_just_start(self, f, name):
-               print '    __GLXcontext * const gc = __glXGetCurrentContext();'
-
-               # The only reason that single and vendor private commands need
-               # a variable called 'dpy' is becuase they use the SyncHandle
-               # macro.  For whatever brain-dead reason, that macro is hard-
-               # coded to use a variable called 'dpy' instead of taking a
-               # parameter.
-
-               # FIXME Simplify the logic related to skip_condition and
-               # FIXME condition_list in this function.  Basically, remove
-               # FIXME skip_condition, and just append the "dpy != NULL" type
-               # FIXME condition to condition_list from the start.  The only
-               # FIXME reason it's done in this confusing way now is to
-               # FIXME minimize the diffs in the generated code.
-
-               if not f.glx_rop:
-                       for p in f.parameterIterateOutputs():
-                               if p.is_image() and (p.img_format != "GL_COLOR_INDEX" or p.img_type != "GL_BITMAP"):
-                                       print '    const __GLXattribute * const state = gc->client_state_private;'
-                                       break
-
-                       print '    Display * const dpy = gc->currentDpy;'
-                       skip_condition = "dpy != NULL"
-               elif f.can_be_large:
-                       skip_condition = "gc->currentDpy != NULL"
-               else:
-                       skip_condition = None
-
-
-               if f.return_type != 'void':
-                       print '    %s retval = (%s) 0;' % (f.return_type, f.return_type)
-
-
-               if name != None and name not in f.glx_vendorpriv_names:
-                       print '#ifndef USE_XCB'
-               self.emit_packet_size_calculation(f, 0)
-               if name != None and name not in f.glx_vendorpriv_names:
-                       print '#endif'
-
-               condition_list = []
-               for p in f.parameterIterateCounters():
-                       condition_list.append( "%s >= 0" % (p.name) )
-                       # 'counter' parameters cannot be negative
-                       print "    if (%s < 0) {" % p.name
-                       print "        __glXSetError(gc, GL_INVALID_VALUE);"
-                       if f.return_type != 'void':
-                               print "        return 0;"
-                       else:
-                               print "        return;"
-                       print "    }"
-
-               if skip_condition:
-                       condition_list.append( skip_condition )
-
-               if len( condition_list ) > 0:
-                       if len( condition_list ) > 1:
-                               skip_condition = "(%s)" % (string.join( condition_list, ") && (" ))
-                       else:
-                               skip_condition = "%s" % (condition_list.pop(0))
-
-                       print '    if (__builtin_expect(%s, 1)) {' % (skip_condition)
-                       return 1
-               else:
-                       return 0
-
-
-       def printSingleFunction(self, f, name):
-               self.common_func_print_just_start(f, name)
-
-               if self.debug:
-                       print '        printf( "Enter %%s...\\n", "gl%s" );' % (f.name)
-
-               if name not in f.glx_vendorpriv_names:
-
-                       # XCB specific:
-                       print '#ifdef USE_XCB'
-                       if self.debug:
-                               print '        printf("\\tUsing XCB.\\n");'
-                       print '        xcb_connection_t *c = XGetXCBConnection(dpy);'
-                       print '        (void) __glXFlushRenderBuffer(gc, gc->pc);'
-                       xcb_name = 'xcb_glx%s' % convertStringForXCB(name)
-
-                       iparams=[]
-                       extra_iparams = []
-                       output = None
-                       for p in f.parameterIterator():
-                               if p.is_output:
-                                       output = p
-
-                                       if p.is_image():
-                                               if p.img_format != "GL_COLOR_INDEX" or p.img_type != "GL_BITMAP":
-                                                       extra_iparams.append("state->storePack.swapEndian")
-                                               else:
-                                                       extra_iparams.append("0")
-                                       
-                                               # Hardcode this in.  lsb_first param (apparently always GL_FALSE)
-                                               # also present in GetPolygonStipple, but taken care of above.
-                                               if xcb_name == "xcb_glx_read_pixels": 
-                                                       extra_iparams.append("0")
-                               else:
-                                       iparams.append(p.name)
-
-
-                       xcb_request = '%s(%s)' % (xcb_name, ", ".join(["c", "gc->currentContextTag"] + iparams + extra_iparams))
-
-                       if f.needs_reply():
-                               print '        %s_reply_t *reply = %s_reply(c, %s, NULL);' % (xcb_name, xcb_name, xcb_request)
-                               if output and f.reply_always_array:
-                                       print '        (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
-
-                               elif output and not f.reply_always_array:
-                                       if not output.is_image():
-                                               print '        if (%s_data_length(reply) == 0)' % (xcb_name)
-                                               print '            (void)memcpy(%s, &reply->datum, sizeof(reply->datum));' % (output.name)
-                                               print '        else'
-                                       print '        (void)memcpy(%s, %s_data(reply), %s_data_length(reply) * sizeof(%s));' % (output.name, xcb_name, xcb_name, output.get_base_type_string())
-
-
-                               if f.return_type != 'void':
-                                       print '        retval = reply->ret_val;'
-                               print '        free(reply);'
-                       else:
-                               print '        ' + xcb_request + ';'
-                       print '#else'
-                       # End of XCB specific.
-
-
-               if f.parameters != []:
-                       pc_decl = "GLubyte const * pc ="
-               else:
-                       pc_decl = "(void)"
-
-               if name in f.glx_vendorpriv_names:
-                       print '        %s __glXSetupVendorRequest(gc, %s, %s, cmdlen);' % (pc_decl, f.opcode_real_name(), f.opcode_vendor_name(name))
-               else:
-                       print '        %s __glXSetupSingleRequest(gc, %s, cmdlen);' % (pc_decl, f.opcode_name())
-
-               self.common_emit_args(f, "pc", 0, 0)
-
-               images = f.get_images()
-
-               for img in images:
-                       if img.is_output:
-                               o = f.command_fixed_length() - 4
-                               print '        *(int32_t *)(pc + %u) = 0;' % (o)
-                               if img.img_format != "GL_COLOR_INDEX" or img.img_type != "GL_BITMAP":
-                                       print '        * (int8_t *)(pc + %u) = state->storePack.swapEndian;' % (o)
-               
-                               if f.img_reset:
-                                       print '        * (int8_t *)(pc + %u) = %s;' % (o + 1, f.img_reset)
-
-
-               return_name = ''
-               if f.needs_reply():
-                       if f.return_type != 'void':
-                               return_name = " retval"
-                               return_str = " retval = (%s)" % (f.return_type)
-                       else:
-                               return_str = " (void)"
-
-                       got_reply = 0
-
-                       for p in f.parameterIterateOutputs():
-                               if p.is_image():
-                                       [dim, w, h, d, junk] = p.get_dimensions()
-                                       if f.dimensions_in_reply:
-                                               print "        __glXReadPixelReply(dpy, gc, %u, 0, 0, 0, %s, %s, %s, GL_TRUE);" % (dim, p.img_format, p.img_type, p.name)
-                                       else:
-                                               print "        __glXReadPixelReply(dpy, gc, %u, %s, %s, %s, %s, %s, %s, GL_FALSE);" % (dim, w, h, d, p.img_format, p.img_type, p.name)
-
-                                       got_reply = 1
-                               else:
-                                       if f.reply_always_array:
-                                               aa = "GL_TRUE"
-                                       else:
-                                               aa = "GL_FALSE"
-
-                                       # gl_parameter.size() returns the size
-                                       # of the entire data item.  If the
-                                       # item is a fixed-size array, this is
-                                       # the size of the whole array.  This
-                                       # is not what __glXReadReply wants. It
-                                       # wants the size of a single data
-                                       # element in the reply packet.
-                                       # Dividing by the array size (1 for
-                                       # non-arrays) gives us this.
-
-                                       s = p.size() / p.get_element_count()
-                                       print "       %s __glXReadReply(dpy, %s, %s, %s);" % (return_str, s, p.name, aa)
-                                       got_reply = 1
-
-
-                       # If a reply wasn't read to fill an output parameter,
-                       # read a NULL reply to get the return value.
-
-                       if not got_reply:
-                               print "       %s __glXReadReply(dpy, 0, NULL, GL_FALSE);" % (return_str)
-
-
-               elif self.debug:
-                       # Only emit the extra glFinish call for functions
-                       # that don't already require a reply from the server.
-                       print '        __indirect_glFinish();'
-
-               if self.debug:
-                       print '        printf( "Exit %%s.\\n", "gl%s" );' % (name)
-
-
-               print '        UnlockDisplay(dpy); SyncHandle();'
-
-               if name not in f.glx_vendorpriv_names:
-                       print '#endif /* USE_XCB */'
-
-               print '    }'
-               print '    return%s;' % (return_name)
-               return
-
-
-       def printPixelFunction(self, f):
-               if self.pixel_stubs.has_key( f.name ):
-                       # Normally gl_function::get_parameter_string could be
-                       # used.  However, this call needs to have the missing
-                       # dimensions (e.g., a fake height value for
-                       # glTexImage1D) added in.
-
-                       p_string = ""
-                       for param in f.parameterIterateGlxSend():
-                               if param.is_padding:
-                                       continue
-
-                               p_string += ", " + param.name
-
-                               if param.is_image():
-                                       [dim, junk, junk, junk, junk] = param.get_dimensions()
-
-                               if f.pad_after(param):
-                                       p_string += ", 1"
-
-                       print '    %s(%s, %u%s );' % (self.pixel_stubs[f.name] , f.opcode_name(), dim, p_string)
-                       return
-
-
-               if self.common_func_print_just_start(f, None):
-                       trailer = "    }"
-               else:
-                       trailer = None
-
-
-               if f.can_be_large:
-                       print 'if (cmdlen <= gc->maxSmallRenderCommandSize) {'
-                       print '    if ( (gc->pc + cmdlen) > gc->bufEnd ) {'
-                       print '        (void) __glXFlushRenderBuffer(gc, gc->pc);'
-                       print '    }'
-
-               if f.glx_rop == ~0:
-                       opcode = "opcode"
-               else:
-                       opcode = f.opcode_real_name()
-
-               print 'emit_header(gc->pc, %s, cmdlen);' % (opcode)
-
-               self.pixel_emit_args( f, "gc->pc", 0 )
-               print 'gc->pc += cmdlen;'
-               print 'if (gc->pc > gc->limit) { (void) __glXFlushRenderBuffer(gc, gc->pc); }'
-
-               if f.can_be_large:
-                       print '}'
-                       print 'else {'
-
-                       self.large_emit_begin(f, opcode)
-                       self.pixel_emit_args(f, "pc", 1)
-
-                       print '}'
-
-               if trailer: print trailer
-               return
-
-
-       def printRenderFunction(self, f):
-               # There is a class of GL functions that take a single pointer
-               # as a parameter.  This pointer points to a fixed-size chunk
-               # of data, and the protocol for this functions is very
-               # regular.  Since they are so regular and there are so many
-               # of them, special case them with generic functions.  On
-               # x86, this saves about 26KB in the libGL.so binary.
-
-               if f.variable_length_parameter() == None and len(f.parameters) == 1:
-                       p = f.parameters[0]
-                       if p.is_pointer():
-                               cmdlen = f.command_fixed_length()
-                               if cmdlen in self.generic_sizes:
-                                       print '    generic_%u_byte( %s, %s );' % (cmdlen, f.opcode_real_name(), p.name)
-                                       return
-
-               if self.common_func_print_just_start(f, None):
-                       trailer = "    }"
-               else:
-                       trailer = None
-
-               if self.debug:
-                       print 'printf( "Enter %%s...\\n", "gl%s" );' % (f.name)
-
-               if f.can_be_large:
-                       print 'if (cmdlen <= gc->maxSmallRenderCommandSize) {'
-                       print '    if ( (gc->pc + cmdlen) > gc->bufEnd ) {'
-                       print '        (void) __glXFlushRenderBuffer(gc, gc->pc);'
-                       print '    }'
-
-               print 'emit_header(gc->pc, %s, cmdlen);' % (f.opcode_real_name())
-
-               self.common_emit_args(f, "gc->pc", 4, 0)
-               print 'gc->pc += cmdlen;'
-               print 'if (__builtin_expect(gc->pc > gc->limit, 0)) { (void) __glXFlushRenderBuffer(gc, gc->pc); }'
-
-               if f.can_be_large:
-                       print '}'
-                       print 'else {'
-
-                       self.large_emit_begin(f)
-                       self.common_emit_args(f, "pc", 8, 1)
-
-                       p = f.variable_length_parameter()
-                       print '    __glXSendLargeCommand(gc, pc, %u, %s, %s);' % (p.offset + 8, p.name, p.size_string())
-                       print '}'
-
-               if self.debug:
-                       print '__indirect_glFinish();'
-                       print 'printf( "Exit %%s.\\n", "gl%s" );' % (f.name)
-
-               if trailer: print trailer
-               return
-
-
-class PrintGlxProtoInit_c(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "glX_proto_send.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-(C) Copyright IBM Corporation 2004""", "PRECISION INSIGHT, IBM")
-               return
-
-
-       def printRealHeader(self):
-               print """/**
- * \\file indirect_init.c
- * Initialize indirect rendering dispatch table.
- *
- * \\author Kevin E. Martin <kevin@precisioninsight.com>
- * \\author Brian Paul <brian@precisioninsight.com>
- * \\author Ian Romanick <idr@us.ibm.com>
- */
-
-#include "indirect_init.h"
-#include "indirect.h"
-#include "glapi.h"
-
-
-/**
- * No-op function used to initialize functions that have no GLX protocol
- * support.
- */
-static int NoOp(void)
-{
-    return 0;
-}
-
-/**
- * Create and initialize a new GL dispatch table.  The table is initialized
- * with GLX indirect rendering protocol functions.
- */
-__GLapi * __glXNewIndirectAPI( void )
-{
-    __GLapi *glAPI;
-    GLuint entries;
-
-    entries = _glapi_get_dispatch_table_size();
-    glAPI = (__GLapi *) Xmalloc(entries * sizeof(void *));
-
-    /* first, set all entries to point to no-op functions */
-    {
-       int i;
-       void **dispatch = (void **) glAPI;
-       for (i = 0; i < entries; i++) {
-          dispatch[i] = (void *) NoOp;
-       }
-    }
-
-    /* now, initialize the entries we understand */"""
-
-       def printRealFooter(self):
-               print """
-    return glAPI;
-}
-"""
-               return
-
-
-       def printBody(self, api):
-               for [name, number] in api.categoryIterate():
-                       if number != None:
-                               preamble = '\n    /* %3u. %s */\n\n' % (int(number), name)
-                       else:
-                               preamble = '\n    /* %s */\n\n' % (name)
-
-                       for func in api.functionIterateByCategory(name):
-                               if func.client_supported_for_indirect():
-                                       print '%s    glAPI->%s = __indirect_gl%s;' % (preamble, func.name, func.name)
-                                       preamble = ''
-
-               return
-
-
-class PrintGlxProtoInit_h(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "glX_proto_send.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
-(C) Copyright IBM Corporation 2004""", "PRECISION INSIGHT, IBM")
-               self.header_tag = "_INDIRECT_H_"
-
-               self.last_category = ""
-               return
-
-
-       def printRealHeader(self):
-               print """/**
- * \\file
- * Prototypes for indirect rendering functions.
- *
- * \\author Kevin E. Martin <kevin@precisioninsight.com>
- * \\author Ian Romanick <idr@us.ibm.com>
- */
-"""
-               self.printVisibility( "HIDDEN", "hidden" )
-               self.printFastcall()
-               self.printNoinline()
-
-               print """
-#include "glxclient.h"
-
-extern HIDDEN NOINLINE CARD32 __glXReadReply( Display *dpy, size_t size,
-    void * dest, GLboolean reply_is_always_array );
-
-extern HIDDEN NOINLINE 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 );
-
-extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupSingleRequest(
-    __GLXcontext * gc, GLint sop, GLint cmdlen );
-
-extern HIDDEN NOINLINE FASTCALL GLubyte * __glXSetupVendorRequest(
-    __GLXcontext * gc, GLint code, GLint vop, GLint cmdlen );
-"""
-
-
-       def printBody(self, api):
-               for func in api.functionIterateGlx():
-                       params = func.get_parameter_string()
-
-                       print 'extern HIDDEN %s __indirect_gl%s(%s);' % (func.return_type, func.name, params)
-
-                       for n in func.entry_points:
-                               if func.has_different_protocol(n):
-                                       asdf = func.static_glx_name(n)
-                                       if asdf not in func.static_entry_points:
-                                               print 'extern HIDDEN %s gl%s(%s);' % (func.return_type, asdf, params)
-                                       else:
-                                               print 'GLAPI %s GLAPIENTRY gl%s(%s);' % (func.return_type, asdf, params)
-                                               
-                                       break
-
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-m output_mode] [-d]" % sys.argv[0]
-       print "    -m output_mode   Output mode can be one of 'proto', 'init_c' or 'init_h'."
-       print "    -d               Enable extra debug information in the generated code."
-       sys.exit(1)
-
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:d")
-       except Exception,e:
-               show_usage()
-
-       debug = 0
-       mode = "proto"
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-m":
-                       mode = val
-               elif arg == "-d":
-                       debug = 1
-
-       if mode == "proto":
-               printer = PrintGlxProtoStubs()
-       elif mode == "init_c":
-               printer = PrintGlxProtoInit_c()
-       elif mode == "init_h":
-               printer = PrintGlxProtoInit_h()
-       else:
-               show_usage()
-
-
-       printer.debug = debug
-       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
-
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/glX_proto_size.py b/src/mesa/glapi/gen/glX_proto_size.py
deleted file mode 100644 (file)
index 95cb511..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML, glX_XML
-import license
-import sys, getopt, copy, string
-
-
-class glx_enum_function:
-       def __init__(self, func_name, enum_dict):
-               self.name = func_name
-               self.mode = 1
-               self.sig = None
-
-               # "enums" is a set of lists.  The element in the set is the
-               # value of the enum.  The list is the list of names for that
-               # value.  For example, [0x8126] = {"POINT_SIZE_MIN",
-               # "POINT_SIZE_MIN_ARB", "POINT_SIZE_MIN_EXT",
-               # "POINT_SIZE_MIN_SGIS"}.
-
-               self.enums = {}
-
-               # "count" is indexed by count values.  Each element of count
-               # is a list of index to "enums" that have that number of
-               # associated data elements.  For example, [4] = 
-               # {GL_AMBIENT, GL_DIFFUSE, GL_SPECULAR, GL_EMISSION,
-               # GL_AMBIENT_AND_DIFFUSE} (the enum names are used here,
-               # but the actual hexadecimal values would be in the array).
-
-               self.count = {}
-
-
-               # Fill self.count and self.enums using the dictionary of enums
-               # that was passed in.  The generic Get functions (e.g.,
-               # GetBooleanv and friends) are handled specially here.  In
-               # the data the generic Get functions are refered to as "Get".
-
-               if func_name in ["GetIntegerv", "GetBooleanv", "GetFloatv", "GetDoublev"]:
-                       match_name = "Get"
-               else:
-                       match_name = func_name
-
-               mode_set = 0
-               for enum_name in enum_dict:
-                       e = enum_dict[ enum_name ]
-
-                       if e.functions.has_key( match_name ):
-                               [count, mode] = e.functions[ match_name ]
-
-                               if mode_set and mode != self.mode:
-                                       raise RuntimeError("Not all enums for %s have the same mode." % (func_name))
-
-                               self.mode = mode
-
-                               if self.enums.has_key( e.value ):
-                                       if e.name not in self.enums[ e.value ]:
-                                               self.enums[ e.value ].append( e )
-                               else:
-                                       if not self.count.has_key( count ):
-                                               self.count[ count ] = []
-
-                                       self.enums[ e.value ] = [ e ]
-                                       self.count[ count ].append( e.value )
-
-
-               return
-
-
-       def signature( self ):
-               if self.sig == None:
-                       self.sig = ""
-                       for i in self.count:
-                               if i == None:
-                                       raise RuntimeError("i is None.  WTF?")
-
-                               self.count[i].sort()
-                               for e in self.count[i]:
-                                       self.sig += "%04x,%d," % (e, i)
-
-               return self.sig
-
-
-       def is_set( self ):
-               return self.mode
-
-
-       def PrintUsingTable(self):
-               """Emit the body of the __gl*_size function using a pair
-               of look-up tables and a mask.  The mask is calculated such
-               that (e & mask) is unique for all the valid values of e for
-               this function.  The result of (e & mask) is used as an index
-               into the first look-up table.  If it matches e, then the
-               same entry of the second table is returned.  Otherwise zero
-               is returned.
-               
-               It seems like this should cause better code to be generated.
-               However, on x86 at least, the resulting .o file is about 20%
-               larger then the switch-statment version.  I am leaving this
-               code in because the results may be different on other
-               platforms (e.g., PowerPC or x86-64)."""
-
-               return 0
-               count = 0
-               for a in self.enums:
-                       count += 1
-
-               if self.count.has_key(-1):
-                       return 0
-
-               # Determine if there is some mask M, such that M = (2^N) - 1,
-               # that will generate unique values for all of the enums.
-
-               mask = 0
-               for i in [1, 2, 3, 4, 5, 6, 7, 8]:
-                       mask = (1 << i) - 1
-
-                       fail = 0;
-                       for a in self.enums:
-                               for b in self.enums:
-                                       if a != b:
-                                               if (a & mask) == (b & mask):
-                                                       fail = 1;
-
-                       if not fail:
-                               break;
-                       else:
-                               mask = 0
-
-               if (mask != 0) and (mask < (2 * count)):
-                       masked_enums = {}
-                       masked_count = {}
-
-                       for i in range(0, mask + 1):
-                               masked_enums[i] = "0";
-                               masked_count[i] = 0;
-
-                       for c in self.count:
-                               for e in self.count[c]:
-                                       i = e & mask
-                                       enum_obj = self.enums[e][0]
-                                       masked_enums[i] = '0x%04x /* %s */' % (e, enum_obj.name )
-                                       masked_count[i] = c
-
-
-                       print '    static const GLushort a[%u] = {' % (mask + 1)
-                       for e in masked_enums:
-                               print '        %s, ' % (masked_enums[e])
-                       print '    };'
-
-                       print '    static const GLubyte b[%u] = {' % (mask + 1)
-                       for c in masked_count:
-                               print '        %u, ' % (masked_count[c])
-                       print '    };'
-
-                       print '    const unsigned idx = (e & 0x%02xU);' % (mask)
-                       print ''
-                       print '    return (e == a[idx]) ? (GLint) b[idx] : 0;'
-                       return 1;
-               else:
-                       return 0;
-
-
-       def PrintUsingSwitch(self, name):
-               """Emit the body of the __gl*_size function using a 
-               switch-statement."""
-
-               print '    switch( e ) {'
-
-               for c in self.count:
-                       for e in self.count[c]:
-                               first = 1
-
-                               # There may be multiple enums with the same
-                               # value.  This happens has extensions are
-                               # promoted from vendor-specific or EXT to
-                               # ARB and to the core.  Emit the first one as
-                               # a case label, and emit the others as
-                               # commented-out case labels.
-
-                               list = {}
-                               for enum_obj in self.enums[e]:
-                                       list[ enum_obj.priority() ] = enum_obj.name
-
-                               keys = list.keys()
-                               keys.sort()
-                               for k in keys:
-                                       j = list[k]
-                                       if first:
-                                               print '        case GL_%s:' % (j)
-                                               first = 0
-                                       else:
-                                               print '/*      case GL_%s:*/' % (j)
-                                       
-                       if c == -1:
-                               print '            return __gl%s_variable_size( e );' % (name)
-                       else:
-                               print '            return %u;' % (c)
-                                       
-               print '        default: return 0;'
-               print '    }'
-
-
-       def Print(self, name):
-               print 'INTERNAL PURE FASTCALL GLint'
-               print '__gl%s_size( GLenum e )' % (name)
-               print '{'
-
-               if not self.PrintUsingTable():
-                       self.PrintUsingSwitch(name)
-
-               print '}'
-               print ''
-
-
-class glx_server_enum_function(glx_enum_function):
-       def __init__(self, func, enum_dict):
-               glx_enum_function.__init__(self, func.name, enum_dict)
-               
-               self.function = func
-               return
-
-
-       def signature( self ):
-               if self.sig == None:
-                       sig = glx_enum_function.signature(self)
-
-                       p = self.function.variable_length_parameter()
-                       if p:
-                               sig += "%u" % (p.size())
-
-                       self.sig = sig
-
-               return self.sig;
-
-
-       def Print(self, name, printer):
-               f = self.function
-               printer.common_func_print_just_header( f )
-
-               fixup = []
-               
-               foo = {}
-               for param_name in f.count_parameter_list:
-                       o = f.offset_of( param_name )
-                       foo[o] = param_name
-
-               for param_name in f.counter_list:
-                       o = f.offset_of( param_name )
-                       foo[o] = param_name
-
-               keys = foo.keys()
-               keys.sort()
-               for o in keys:
-                       p = f.parameters_by_name[ foo[o] ]
-
-                       printer.common_emit_one_arg(p, "pc", 0)
-                       fixup.append( p.name )
-
-
-               print '    GLsizei compsize;'
-               print ''
-
-               printer.common_emit_fixups(fixup)
-
-               print ''
-               print '    compsize = __gl%s_size(%s);' % (f.name, string.join(f.count_parameter_list, ","))
-               p = f.variable_length_parameter()
-               print '    return __GLX_PAD(%s);' % (p.size_string())
-
-               print '}'
-               print ''
-
-
-class PrintGlxSizeStubs_common(gl_XML.gl_print_base):
-       do_get = (1 << 0)
-       do_set = (1 << 1)
-
-       def __init__(self, which_functions):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "glX_proto_size.py (from Mesa)"
-               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2004", "IBM")
-
-               self.emit_set = ((which_functions & PrintGlxSizeStubs_common.do_set) != 0)
-               self.emit_get = ((which_functions & PrintGlxSizeStubs_common.do_get) != 0)
-               return
-
-
-class PrintGlxSizeStubs_c(PrintGlxSizeStubs_common):
-       def printRealHeader(self):
-               print ''
-               print '#include <GL/gl.h>'
-               if self.emit_get:
-                       print '#include "indirect_size_get.h"'
-                       print '#include "glxserver.h"'
-                       print '#include "indirect_util.h"'
-               
-               print '#include "indirect_size.h"'
-
-               print ''
-               self.printPure()
-               print ''
-               self.printFastcall()
-               print ''
-               self.printVisibility( "INTERNAL", "internal" )
-               print ''
-               print ''
-               print '#if defined(__CYGWIN__) || defined(__MINGW32__) || defined(__APPLE__)'
-               print '#  undef HAVE_ALIAS'
-               print '#endif'
-               print '#ifdef HAVE_ALIAS'
-               print '#  define ALIAS2(from,to) \\'
-               print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\'
-               print '        __attribute__ ((alias( # to )));'
-               print '#  define ALIAS(from,to) ALIAS2( from, __gl ## to ## _size )'
-               print '#else'
-               print '#  define ALIAS(from,to) \\'
-               print '    INTERNAL PURE FASTCALL GLint __gl ## from ## _size( GLenum e ) \\'
-               print '    { return __gl ## to ## _size( e ); }'
-               print '#endif'
-               print ''
-               print ''
-
-
-       def printBody(self, api):
-               enum_sigs = {}
-               aliases = []
-
-               for func in api.functionIterateGlx():
-                       ef = glx_enum_function( func.name, api.enums_by_name )
-                       if len(ef.enums) == 0:
-                               continue
-
-                       if (ef.is_set() and self.emit_set) or (not ef.is_set() and self.emit_get):
-                               sig = ef.signature()
-                               if enum_sigs.has_key( sig ):
-                                       aliases.append( [func.name, enum_sigs[ sig ]] )
-                               else:
-                                       enum_sigs[ sig ] = func.name
-                                       ef.Print( func.name )
-
-
-               for [alias_name, real_name] in aliases:
-                       print 'ALIAS( %s, %s )' % (alias_name, real_name)
-
-
-                               
-class PrintGlxSizeStubs_h(PrintGlxSizeStubs_common):
-       def printRealHeader(self):
-               print """/**
- * \\file
- * Prototypes for functions used to determine the number of data elements in
- * various GLX protocol messages.
- *
- * \\author Ian Romanick <idr@us.ibm.com>
- */
-"""
-               self.printPure();
-               print ''
-               self.printFastcall();
-               print ''
-               self.printVisibility( "INTERNAL", "internal" );
-               print ''
-
-
-       def printBody(self, api):
-               for func in api.functionIterateGlx():
-                       ef = glx_enum_function( func.name, api.enums_by_name )
-                       if len(ef.enums) == 0:
-                               continue
-
-                       if (ef.is_set() and self.emit_set) or (not ef.is_set() and self.emit_get):
-                               print 'extern INTERNAL PURE FASTCALL GLint __gl%s_size(GLenum);' % (func.name)
-
-
-class PrintGlxReqSize_common(gl_XML.gl_print_base):
-       """Common base class for PrintGlxSizeReq_h and PrintGlxSizeReq_h.
-
-       The main purpose of this common base class is to provide the infrastructure
-       for the derrived classes to iterate over the same set of functions.
-       """
-
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "glX_proto_size.py (from Mesa)"
-               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005", "IBM")
-
-
-class PrintGlxReqSize_h(PrintGlxReqSize_common):
-       def __init__(self):
-               PrintGlxReqSize_common.__init__(self)
-               self.header_tag = "_INDIRECT_REQSIZE_H_"
-
-
-       def printRealHeader(self):
-               self.printVisibility("HIDDEN", "hidden")
-               print ''
-               self.printPure()
-               print ''
-
-
-       def printBody(self, api):
-               for func in api.functionIterateGlx():
-                       if not func.ignore and func.has_variable_size_request():
-                               print 'extern PURE HIDDEN int __glX%sReqSize(const GLbyte *pc, Bool swap);' % (func.name)
-
-
-class PrintGlxReqSize_c(PrintGlxReqSize_common):
-       """Create the server-side 'request size' functions.
-
-       Create the server-side functions that are used to determine what the
-       size of a varible length command should be.  The server then uses
-       this value to determine if the incoming command packed it malformed.
-       """
-
-       def __init__(self):
-               PrintGlxReqSize_common.__init__(self)
-               self.counter_sigs = {}
-
-
-       def printRealHeader(self):
-               print ''
-               print '#include <GL/gl.h>'
-               print '#include "glxserver.h"'
-               print '#include "glxbyteorder.h"'
-               print '#include "indirect_size.h"'
-               print '#include "indirect_reqsize.h"'
-               print ''
-               print '#define __GLX_PAD(x)  (((x) + 3) & ~3)'
-               print ''
-               print '#if defined(__CYGWIN__) || defined(__MINGW32__)'
-               print '#  undef HAVE_ALIAS'
-               print '#endif'
-               print '#ifdef HAVE_ALIAS'
-               print '#  define ALIAS2(from,to) \\'
-               print '    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \\'
-               print '        __attribute__ ((alias( # to )));'
-               print '#  define ALIAS(from,to) ALIAS2( from, __glX ## to ## ReqSize )'
-               print '#else'
-               print '#  define ALIAS(from,to) \\'
-               print '    GLint __glX ## from ## ReqSize( const GLbyte * pc, Bool swap ) \\'
-               print '    { return __glX ## to ## ReqSize( pc, swap ); }'
-               print '#endif'
-               print ''
-               print ''
-
-
-       def printBody(self, api):
-               aliases = []
-               enum_functions = {}
-               enum_sigs = {}
-
-               for func in api.functionIterateGlx():
-                       if not func.has_variable_size_request(): continue
-
-                       ef = glx_server_enum_function( func, api.enums_by_name )
-                       if len(ef.enums) == 0: continue
-
-                       sig = ef.signature()
-
-                       if not enum_functions.has_key(func.name):
-                               enum_functions[ func.name ] = sig
-
-                       if not enum_sigs.has_key( sig ):
-                               enum_sigs[ sig ] = ef
-                       
-
-
-               for func in api.functionIterateGlx():
-                       # Even though server-handcode fuctions are on "the
-                       # list", and prototypes are generated for them, there
-                       # isn't enough information to generate a size
-                       # function.  If there was enough information, they
-                       # probably wouldn't need to be handcoded in the first
-                       # place!
-
-                       if func.server_handcode: continue
-                       if not func.has_variable_size_request(): continue
-
-                       if enum_functions.has_key(func.name):
-                               sig = enum_functions[func.name]
-                               ef = enum_sigs[ sig ]
-
-                               if ef.name != func.name:
-                                       aliases.append( [func.name, ef.name] )
-                               else:
-                                       ef.Print( func.name, self )
-
-                       elif func.images:
-                               self.printPixelFunction(func)
-                       elif func.has_variable_size_request():
-                               a = self.printCountedFunction(func)
-                               if a: aliases.append(a)
-
-
-               for [alias_name, real_name] in aliases:
-                       print 'ALIAS( %s, %s )' % (alias_name, real_name)
-
-               return
-
-
-       def common_emit_fixups(self, fixup):
-               """Utility function to emit conditional byte-swaps."""
-
-               if fixup:
-                       print '    if (swap) {'
-                       for name in fixup:
-                               print '        %s = bswap_32(%s);' % (name, name)
-                       print '    }'
-
-               return
-
-
-       def common_emit_one_arg(self, p, pc, adjust):
-               offset = p.offset
-               dst = p.string()
-               src = '(%s *)' % (p.type_string())
-               print '%-18s = *%11s(%s + %u);' % (dst, src, pc, offset + adjust);
-               return
-
-
-       def common_func_print_just_header(self, f):
-               print 'int'
-               print '__glX%sReqSize( const GLbyte * pc, Bool swap )' % (f.name)
-               print '{'
-
-
-       def printPixelFunction(self, f):
-               self.common_func_print_just_header(f)
-               
-               f.offset_of( f.parameters[0].name )
-               [dim, w, h, d, junk] = f.get_images()[0].get_dimensions()
-
-               print '    GLint row_length   = *  (GLint *)(pc +  4);'
-
-               if dim < 3:
-                       fixup = ['row_length', 'skip_rows', 'alignment']
-                       print '    GLint image_height = 0;'
-                       print '    GLint skip_images  = 0;'
-                       print '    GLint skip_rows    = *  (GLint *)(pc +  8);'
-                       print '    GLint alignment    = *  (GLint *)(pc + 16);'
-               else:
-                       fixup = ['row_length', 'image_height', 'skip_rows', 'skip_images', 'alignment']
-                       print '    GLint image_height = *  (GLint *)(pc +  8);'
-                       print '    GLint skip_rows    = *  (GLint *)(pc + 16);'
-                       print '    GLint skip_images  = *  (GLint *)(pc + 20);'
-                       print '    GLint alignment    = *  (GLint *)(pc + 32);'
-
-               img = f.images[0]
-               for p in f.parameterIterateGlxSend():
-                       if p.name in [w, h, d, img.img_format, img.img_type, img.img_target]:
-                               self.common_emit_one_arg(p, "pc", 0)
-                               fixup.append( p.name )
-
-               print ''
-
-               self.common_emit_fixups(fixup)
-
-               if img.img_null_flag:
-                       print ''
-                       print '    if (*(CARD32 *) (pc + %s))' % (img.offset - 4)
-                       print '        return 0;'
-
-               print ''
-               print '    return __glXImageSize(%s, %s, %s, %s, %s, %s,' % (img.img_format, img.img_type, img.img_target, w, h, d )
-               print '                          image_height, row_length, skip_images,'
-               print '                          skip_rows, alignment);'
-               print '}'
-               print ''
-               return
-
-
-       def printCountedFunction(self, f):
-
-               sig = ""
-               offset = 0
-               fixup = []
-               params = []
-               plus = ''
-               size = ''
-               param_offsets = {}
-
-               # Calculate the offset of each counter parameter and the
-               # size string for the variable length parameter(s).  While
-               # that is being done, calculate a unique signature for this
-               # function.
-
-               for p in f.parameterIterateGlxSend():
-                       if p.is_counter:
-                               fixup.append( p.name )
-                               params.append( p )
-                       elif p.counter:
-                               s = p.size()
-                               if s == 0: s = 1
-
-                               sig += "(%u,%u)" % (f.offset_of(p.counter), s)
-                               size += '%s%s' % (plus, p.size_string())
-                               plus = ' + '
-
-
-               # If the calculated signature matches a function that has
-               # already be emitted, don't emit this function.  Instead, add
-               # it to the list of function aliases.
-
-               if self.counter_sigs.has_key(sig):
-                       n = self.counter_sigs[sig];
-                       alias = [f.name, n]
-               else:
-                       alias = None
-                       self.counter_sigs[sig] = f.name
-
-                       self.common_func_print_just_header(f)
-
-                       for p in params:
-                               self.common_emit_one_arg(p, "pc", 0)
-
-
-                       print ''
-                       self.common_emit_fixups(fixup)
-                       print ''
-
-                       print '    return __GLX_PAD(%s);' % (size)
-                       print '}'
-                       print ''
-
-               return alias
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] -m output_mode [--only-get | --only-set] [--get-alias-set]" % sys.argv[0]
-       print "    -m output_mode   Output mode can be one of 'size_c' or 'size_h'."
-       print "    --only-get       Only emit 'get'-type functions."
-       print "    --only-set       Only emit 'set'-type functions."
-       print ""
-       print "By default, both 'get' and 'set'-type functions are emitted."
-       sys.exit(1)
-
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:h:", ["only-get", "only-set", "header-tag"])
-       except Exception,e:
-               show_usage()
-
-       mode = None
-       header_tag = None
-       which_functions = PrintGlxSizeStubs_common.do_get | PrintGlxSizeStubs_common.do_set
-
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-m":
-                       mode = val
-               elif arg == "--only-get":
-                       which_functions = PrintGlxSizeStubs_common.do_get
-               elif arg == "--only-set":
-                       which_functions = PrintGlxSizeStubs_common.do_set
-               elif (arg == '-h') or (arg == "--header-tag"):
-                       header_tag = val
-
-       if mode == "size_c":
-               printer = PrintGlxSizeStubs_c( which_functions )
-       elif mode == "size_h":
-               printer = PrintGlxSizeStubs_h( which_functions )
-               if header_tag:
-                       printer.header_tag = header_tag
-       elif mode == "reqsize_c":
-               printer = PrintGlxReqSize_c()
-       elif mode == "reqsize_h":
-               printer = PrintGlxReqSize_h()
-       else:
-               show_usage()
-
-       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
-
-
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/glX_server_table.py b/src/mesa/glapi/gen/glX_server_table.py
deleted file mode 100644 (file)
index f3962f8..0000000
+++ /dev/null
@@ -1,411 +0,0 @@
-#!/bin/env python
-
-# (C) Copyright IBM Corporation 2005, 2006
-# 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML, glX_XML, glX_proto_common, license
-import sys, getopt
-
-
-def log2(value):
-       for i in range(0, 30):
-               p = 1 << i
-               if p >= value:
-                       return i
-
-       return -1
-
-
-def round_down_to_power_of_two(n):
-       """Returns the nearest power-of-two less than or equal to n."""
-
-       for i in range(30, 0, -1):
-               p = 1 << i
-               if p <= n:
-                       return p
-
-       return -1
-
-
-class function_table:
-       def __init__(self, name, do_size_check):
-               self.name_base = name
-               self.do_size_check = do_size_check
-
-
-               self.max_bits = 1
-               self.next_opcode_threshold = (1 << self.max_bits)
-               self.max_opcode = 0
-
-               self.functions = {}
-               self.lookup_table = []
-               
-               # Minimum number of opcodes in a leaf node.
-               self.min_op_bits = 3
-               self.min_op_count = (1 << self.min_op_bits)
-               return
-
-
-       def append(self, opcode, func):
-               self.functions[opcode] = func
-
-               if opcode > self.max_opcode:
-                       self.max_opcode = opcode
-
-                       if opcode > self.next_opcode_threshold:
-                               bits = log2(opcode)
-                               if (1 << bits) <= opcode:
-                                       bits += 1
-
-                               self.max_bits = bits
-                               self.next_opcode_threshold = 1 << bits
-               return
-
-
-       def divide_group(self, min_opcode, total):
-               """Divide the group starting min_opcode into subgroups.
-               Returns a tuple containing the number of bits consumed by
-               the node, the list of the children's tuple, and the number
-               of entries in the final array used by this node and its
-               children, and the depth of the subtree rooted at the node."""
-
-               remaining_bits = self.max_bits - total
-               next_opcode = min_opcode + (1 << remaining_bits)
-               empty_children = 0
-               
-               for M in range(0, remaining_bits):
-                       op_count = 1 << (remaining_bits - M);
-                       child_count = 1 << M;
-
-                       empty_children = 0
-                       full_children = 0
-                       for i in range(min_opcode, next_opcode, op_count):
-                               used = 0
-                               empty = 0
-
-                               for j in range(i, i + op_count):
-                                       if self.functions.has_key(j):
-                                               used += 1;
-                                       else:
-                                               empty += 1;
-                                               
-
-                               if empty == op_count:
-                                       empty_children += 1
-
-                               if used == op_count:
-                                       full_children += 1
-
-                       if (empty_children > 0) or (full_children == child_count) or (op_count <= self.min_op_count):
-                               break
-
-
-               # If all the remaining bits are used by this node, as is the
-               # case when M is 0 or remaining_bits, the node is a leaf.
-
-               if (M == 0) or (M == remaining_bits):
-                       return [remaining_bits, [], 0, 0]
-               else:
-                       children = []
-                       count = 1
-                       depth = 1
-                       all_children_are_nonempty_leaf_nodes = 1
-                       for i in range(min_opcode, next_opcode, op_count):
-                               n = self.divide_group(i, total + M)
-
-                               if not (n[1] == [] and not self.is_empty_leaf(i, n[0])):
-                                       all_children_are_nonempty_leaf_nodes = 0
-
-                               children.append(n)
-                               count += n[2] + 1
-                               
-                               if n[3] >= depth:
-                                       depth = n[3] + 1
-
-                       # If all of the child nodes are non-empty leaf nodes, pull
-                       # them up and make this node a leaf.
-
-                       if all_children_are_nonempty_leaf_nodes:
-                               return [remaining_bits, [], 0, 0]
-                       else:
-                               return [M, children, count, depth]
-
-
-       def is_empty_leaf(self, base_opcode, M):
-               for op in range(base_opcode, base_opcode + (1 << M)):
-                       if self.functions.has_key(op):
-                               return 0
-                               break
-
-               return 1
-
-
-       def dump_tree(self, node, base_opcode, remaining_bits, base_entry, depth):
-               M = node[0]
-               children = node[1]
-               child_M = remaining_bits - M
-
-
-               # This actually an error condition.
-               if children == []:
-                       return
-
-               print '    /* [%u] -> opcode range [%u, %u], node depth %u */' % (base_entry, base_opcode, base_opcode + (1 << remaining_bits), depth)
-               print '    %u,' % (M)
-
-               base_entry += (1 << M) + 1
-
-               child_index = base_entry
-               child_base_opcode = base_opcode
-               for child in children:
-                       if child[1] == []:
-                               if self.is_empty_leaf(child_base_opcode, child_M):
-                                       print '    EMPTY_LEAF,'
-                               else:
-                                       # Emit the index of the next dispatch
-                                       # function.  Then add all the
-                                       # dispatch functions for this leaf
-                                       # node to the dispatch function
-                                       # lookup table.
-
-                                       print '    LEAF(%u),' % (len(self.lookup_table))
-
-                                       for op in range(child_base_opcode, child_base_opcode + (1 << child_M)):
-                                               if self.functions.has_key(op):
-                                                       func = self.functions[op]
-                                                       size = func.command_fixed_length()
-
-                                                       if func.glx_rop != 0:
-                                                               size += 4
-
-                                                       size = ((size + 3) & ~3)
-
-                                                       if func.has_variable_size_request():
-                                                               size_name = "__glX%sReqSize" % (func.name)
-                                                       else:
-                                                               size_name = ""
-
-                                                       if func.glx_vendorpriv == op:
-                                                               func_name = func.glx_vendorpriv_names[0]
-                                                       else:
-                                                               func_name = func.name
-
-                                                       temp = [op, "__glXDisp_%s" % (func_name), "__glXDispSwap_%s" % (func_name), size, size_name]
-                                               else:
-                                                       temp = [op, "NULL", "NULL", 0, ""]
-
-                                               self.lookup_table.append(temp)
-                       else:
-                               print '    %u,' % (child_index)
-                               child_index += child[2]
-
-                       child_base_opcode += 1 << child_M
-
-               print ''
-
-               child_index = base_entry
-               for child in children:
-                       if child[1] != []:
-                               self.dump_tree(child, base_opcode, remaining_bits - M, child_index, depth + 1)
-                               child_index += child[2]
-
-                       base_opcode += 1 << (remaining_bits - M)
-
-
-       def Print(self):
-               # Each dispatch table consists of two data structures.
-               #
-               # The first structure is an N-way tree where the opcode for
-               # the function is the key.  Each node switches on a range of
-               # bits from the opcode.  M bits are extracted from the opcde
-               # and are used as an index to select one of the N, where
-               # N = 2^M, children.
-               #
-               # The tree is stored as a flat array.  The first value is the
-               # number of bits, M, used by the node.  For inner nodes, the
-               # following 2^M values are indexes into the array for the
-               # child nodes.  For leaf nodes, the followign 2^M values are
-               # indexes into the second data structure.
-               #
-               # If an inner node's child index is 0, the child is an empty
-               # leaf node.  That is, none of the opcodes selectable from
-               # that child exist.  Since most of the possible opcode space
-               # is unused, this allows compact data storage.
-               #
-               # The second data structure is an array of pairs of function
-               # pointers.  Each function contains a pointer to a protocol
-               # decode function and a pointer to a byte-swapped protocol
-               # decode function.  Elements in this array are selected by the
-               # leaf nodes of the first data structure.
-               #
-               # As the tree is traversed, an accumulator is kept.  This
-               # accumulator counts the bits of the opcode consumed by the
-               # traversal.  When accumulator + M = B, where B is the
-               # maximum number of bits in an opcode, the traversal has
-               # reached a leaf node.  The traversal starts with the most
-               # significant bits and works down to the least significant
-               # bits.
-               #
-               # Creation of the tree is the most complicated part.  At
-               # each node the elements are divided into groups of 2^M
-               # elements.  The value of M selected is the smallest possible
-               # value where all of the groups are either empty or full, or
-               # the groups are a preset minimum size.  If all the children
-               # of a node are non-empty leaf nodes, the children are merged
-               # to create a single leaf node that replaces the parent.
-
-               tree = self.divide_group(0, 0)
-
-               print '/*****************************************************************/'
-               print '/* tree depth = %u */' % (tree[3])
-               print 'static const int_fast16_t %s_dispatch_tree[%u] = {' % (self.name_base, tree[2])
-               self.dump_tree(tree, 0, self.max_bits, 0, 1)
-               print '};\n'
-               
-               # After dumping the tree, dump the function lookup table.
-               
-               print 'static const void *%s_function_table[%u][2] = {' % (self.name_base, len(self.lookup_table))
-               index = 0
-               for func in self.lookup_table:
-                       opcode = func[0]
-                       name = func[1]
-                       name_swap = func[2]
-                       
-                       print '    /* [% 3u] = %5u */ {%s, %s},' % (index, opcode, name, name_swap)
-                       
-                       index += 1
-
-               print '};\n'
-               
-               if self.do_size_check:
-                       var_table = []
-
-                       print 'static const int_fast16_t %s_size_table[%u][2] = {' % (self.name_base, len(self.lookup_table))
-                       index = 0
-                       var_table = []
-                       for func in self.lookup_table:
-                               opcode = func[0]
-                               fixed = func[3]
-                               var = func[4]
-                               
-                               if var != "":
-                                       var_offset = "%2u" % (len(var_table))
-                                       var_table.append(var)
-                               else:
-                                       var_offset = "~0"
-
-                               print '    /* [%3u] = %5u */ {%3u, %s},' % (index, opcode, fixed, var_offset)
-                               index += 1
-
-                               
-                       print '};\n'
-
-
-                       print 'static const gl_proto_size_func %s_size_func_table[%u] = {' % (self.name_base, len(var_table))
-                       for func in var_table:
-                               print '   %s,' % (func)
-                       print '};\n'
-
-
-               print 'const struct __glXDispatchInfo %s_dispatch_info = {' % (self.name_base)
-               print '    %u,' % (self.max_bits)
-               print '    %s_dispatch_tree,' % (self.name_base)
-               print '    %s_function_table,' % (self.name_base)
-               if self.do_size_check:
-                       print '    %s_size_table,' % (self.name_base)
-                       print '    %s_size_func_table' % (self.name_base)
-               else:
-                       print '    NULL,'
-                       print '    NULL'
-               print '};\n'
-               return
-
-
-class PrintGlxDispatchTables(glX_proto_common.glx_print_proto):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-               self.name = "glX_server_table.py (from Mesa)"
-               self.license = license.bsd_license_template % ( "(C) Copyright IBM Corporation 2005, 2006", "IBM")
-
-               self.rop_functions = function_table("Render", 1)
-               self.sop_functions = function_table("Single", 0)
-               self.vop_functions = function_table("VendorPriv", 0)
-               return
-
-
-       def printRealHeader(self):
-               print '#include <inttypes.h>'
-               print '#include "glxserver.h"'
-               print '#include "glxext.h"'
-               print '#include "indirect_dispatch.h"'
-               print '#include "indirect_reqsize.h"'
-               print '#include "g_disptab.h"'
-               print '#include "indirect_table.h"'
-               print ''
-               return
-
-
-       def printBody(self, api):
-               for f in api.functionIterateAll():
-                       if not f.ignore and f.vectorequiv == None:
-                               if f.glx_rop != 0:
-                                       self.rop_functions.append(f.glx_rop, f)
-                               if f.glx_sop != 0:
-                                       self.sop_functions.append(f.glx_sop, f)
-                               if f.glx_vendorpriv != 0:
-                                       self.vop_functions.append(f.glx_vendorpriv, f)
-
-               self.sop_functions.Print()
-               self.rop_functions.Print()
-               self.vop_functions.Print()
-               return
-
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m")
-       except Exception,e:
-               show_usage()
-
-       mode = "table_c"
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-m":
-                       mode = val
-
-       if mode == "table_c":
-               printer = PrintGlxDispatchTables()
-       else:
-               show_usage()
-
-
-       api = gl_XML.parse_GL_API( file_name, glX_XML.glx_item_factory() )
-
-
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/gl_API.dtd b/src/mesa/glapi/gen/gl_API.dtd
deleted file mode 100644 (file)
index 30c646c..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-<!ELEMENT OpenGLAPI (category?, xi:include?, OpenGLAPI?)+>
-<!ELEMENT category (type*, enum*, function*)*>
-<!ELEMENT type EMPTY>
-<!ELEMENT enum (size*)>
-<!ELEMENT size EMPTY>
-<!ELEMENT function (param*, return?, glx?)*>
-<!ELEMENT param EMPTY>
-<!ELEMENT return EMPTY>
-<!ELEMENT glx EMPTY>
-
-<!ELEMENT xi:include (xi:fallback)?>
-<!ATTLIST xi:include
-          xmlns:xi  CDATA #FIXED "http://www.w3.org/2001/XInclude"
-          href       CDATA #REQUIRED
-          parse      (xml|text) "xml"
-          encoding   CDATA #IMPLIED>
-<!ELEMENT xi:fallback ANY>
-<!ATTLIST xi:fallback
-          xmlns:xi   CDATA #FIXED "http://www.w3.org/2001/XInclude">
-
-
-<!ATTLIST category name                NMTOKEN #REQUIRED
-                   number              NMTOKEN #IMPLIED
-                  window_system       NMTOKEN #IMPLIED>
-<!ATTLIST type     name                NMTOKEN #REQUIRED
-                   size                NMTOKEN #REQUIRED
-                  float               (true | false) "false"
-                  unsigned            (true | false) "false"
-                   glx_name            NMTOKEN #IMPLIED>
-<!ATTLIST enum     name                NMTOKEN #REQUIRED
-                   count               CDATA   #IMPLIED
-                   value               NMTOKEN #REQUIRED>
-<!ATTLIST function name                NMTOKEN #REQUIRED
-                   alias               NMTOKEN #IMPLIED
-                   offset              CDATA   #IMPLIED
-                   static_dispatch     (true | false) "true"
-                   vectorequiv         NMTOKEN #IMPLIED>
-<!ATTLIST size     name                NMTOKEN #REQUIRED
-                   count               NMTOKEN #IMPLIED
-                   mode                (get | set) "set">
-<!ATTLIST param    name                NMTOKEN #REQUIRED
-                   type                CDATA   #REQUIRED
-                  client_only         (true | false) "false"
-                   count               NMTOKEN #IMPLIED
-                   counter             (true | false) "false"
-                   count_scale         NMTOKEN "1"
-                   output              (true | false) "false"
-                   padding             (true | false) "false"
-                   img_width           NMTOKEN #IMPLIED
-                   img_height          NMTOKEN #IMPLIED
-                   img_depth           NMTOKEN #IMPLIED
-                   img_extent          NMTOKEN #IMPLIED
-                   img_xoff            NMTOKEN #IMPLIED
-                   img_yoff            NMTOKEN #IMPLIED
-                   img_zoff            NMTOKEN #IMPLIED
-                   img_woff            NMTOKEN #IMPLIED
-                   img_format          NMTOKEN #IMPLIED
-                   img_type            NMTOKEN #IMPLIED
-                   img_target          NMTOKEN #IMPLIED
-                   img_send_null       (true | false) "false"
-                   img_null_flag       (true | false) "false"
-                   img_pad_dimensions  (true | false) "false"
-                   variable_param      NMTOKENS #IMPLIED>
-<!ATTLIST return   type                CDATA   "void">
-<!ATTLIST glx      rop                 NMTOKEN #IMPLIED
-                   sop                 NMTOKEN #IMPLIED
-                   vendorpriv          NMTOKEN #IMPLIED
-                   large               (true | false) "false"
-                   doubles_in_order    (true | false) "false"
-                   always_array        (true | false) "false"
-                   handcode            (true | false | client | server) "false"
-                   img_reset           NMTOKEN #IMPLIED
-                   dimensions_in_reply (true | false) "false"
-                   ignore              (true | false) "false">
-
-<!--
-The various attributes for param and glx have the meanings listed below.
-When adding new functions, please annote them correctly.  In most cases this
-will just mean adding a '<glx ignore="true"/>' tag.
-
-param:
-     name - name of the parameter
-     type - fully qualified type (e.g., with "const", etc.)
-     client_only - boolean flag set on parameters which are interpreted only
-         by the client and are not present in the protocol encoding (e.g.,
-        the stride parameters to Map1f, etc.)
-     count - for counted arrays (e.g., the 'lists' parameter to glCallLists),
-         the parameter or literal that represents the count.  For functions
-         like glVertex3fv it will be a litteral, for others it will be one of
-         the parameters.
-     counter - this parameter is a counter that will be referenced by the
-         'count' attribute in another parameter.
-     count_scale - literal value scale factor for the 'count' attribute.
-         See ProgramParameters4dvNV for an example.
-     output - this parameter is used to store the output of the function.
-     variable_param - name of parameter used to determine the number of
-         elements referenced by this parameter.  This should be the name of a
-         single enum parameter.  Most of the gl*Parameter[if]v functions use
-         this.  Additionally, the enums that can be passed should be properly
-         annotated.
-     img_width / img_height / img_depth / img_extent - name of parameters
-         (or hardcoded integer) used for the dimensions of pixel data.
-     img_xoff / img_yoff / img_zoff / img_woff - name of parameters used
-         for x, y, z, and w offsets of pixel data.
-     img_format - name of parameter used as the pixel data format.
-     img_type - name of parameter used as the pixel data type.
-     img_target - name of parameter used as a texture target.  Non-texture
-        pixel data should hardcode 0.
-     img_send_null - boolean flag to determine if blank pixel data should
-        be sent when a NULL pointer is passed.  This is only used by
-        TexImage1D and TexImage2D.
-     img_null_flag - boolean flag to determine if an extra flag is used to
-        determine if a NULL pixel pointer was passed.  This is used by
-        TexSubImage1D, TexSubImage2D, TexImage3D and others.
-     img_pad_dimensions - boolean flag to determine if dimension data and
-        offset data should be padded to the next even number of dimensions.
-        For example, this will insert an empty "height" field after the
-        "width" field in the protocol for TexImage1D.
-
-glx:
-     rop - Opcode value for "render" commands
-     sop - Opcode value for "single" commands
-     vendorpriv - Opcode value for vendor private (or vendor private with
-         reply) commands
-     large - set to "true" of the render command can use RenderLarge protocol.
-     doubles_in_order - older commands always put GLdouble data at the
-         start of the render packet.  Newer commands (e.g., 
-         ProgramEnvParameter4dvARB) put the in the order that they appear
-         in the parameter list.
-     always_array - some single commands take reply data as an array or as
-         return value data (e.g., glGetLightfv).  Other single commands take
-         reply data only as an array (e.g., glGetClipPlane).
-     handcode - some functions are just too complicated to generate 
-         (e.g., glSeperableFilter2D) or operate only on client-side data
-         (e.g., glVertexPointer) and must be handcoded.
-     ignore - some functions have an entry in the dispatch table, but aren't
-         suitable for protocol implementation (e.g., glLockArraysEXT).  This
-         also applies to functions that don't have any GLX protocol specified
-         (e.g., glGetFogFuncSGIS).
--->
diff --git a/src/mesa/glapi/gen/gl_API.xml b/src/mesa/glapi/gen/gl_API.xml
deleted file mode 100644 (file)
index 31df7a5..0000000
+++ /dev/null
@@ -1,12512 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-
-<!-- Core versions sorted by version number. -->
-
-<category name="1.0">
-    <enum name="FALSE"                                    value="0x0"/>
-    <enum name="TRUE"                                     value="0x1"/>
-    <enum name="ZERO"                                     value="0x0"/>
-    <enum name="ONE"                                      value="0x1"/>
-    <enum name="NONE"                                     value="0x0"/>
-    <enum name="NO_ERROR"                                 value="0x0"/>
-    <enum name="POINTS"                                   value="0x0000"/>
-    <enum name="LINES"                                    value="0x0001"/>
-    <enum name="LINE_LOOP"                                value="0x0002"/>
-    <enum name="LINE_STRIP"                               value="0x0003"/>
-    <enum name="TRIANGLES"                                value="0x0004"/>
-    <enum name="TRIANGLE_STRIP"                           value="0x0005"/>
-    <enum name="TRIANGLE_FAN"                             value="0x0006"/>
-    <enum name="QUADS"                                    value="0x0007"/>
-    <enum name="QUAD_STRIP"                               value="0x0008"/>
-    <enum name="POLYGON"                                  value="0x0009"/>
-    <enum name="ACCUM"                                    value="0x0100"/>
-    <enum name="LOAD"                                     value="0x0101"/>
-    <enum name="RETURN"                                   value="0x0102"/>
-    <enum name="MULT"                                     value="0x0103"/>
-    <enum name="ADD"                                      value="0x0104"/>
-    <enum name="NEVER"                                    value="0x0200"/>
-    <enum name="LESS"                                     value="0x0201"/>
-    <enum name="EQUAL"                                    value="0x0202"/>
-    <enum name="LEQUAL"                                   value="0x0203"/>
-    <enum name="GREATER"                                  value="0x0204"/>
-    <enum name="NOTEQUAL"                                 value="0x0205"/>
-    <enum name="GEQUAL"                                   value="0x0206"/>
-    <enum name="ALWAYS"                                   value="0x0207"/>
-    <enum name="SRC_COLOR"                                value="0x0300"/>
-    <enum name="ONE_MINUS_SRC_COLOR"                      value="0x0301"/>
-    <enum name="SRC_ALPHA"                                value="0x0302"/>
-    <enum name="ONE_MINUS_SRC_ALPHA"                      value="0x0303"/>
-    <enum name="DST_ALPHA"                                value="0x0304"/>
-    <enum name="ONE_MINUS_DST_ALPHA"                      value="0x0305"/>
-    <enum name="DST_COLOR"                                value="0x0306"/>
-    <enum name="ONE_MINUS_DST_COLOR"                      value="0x0307"/>
-    <enum name="SRC_ALPHA_SATURATE"                       value="0x0308"/>
-    <enum name="FRONT_LEFT"                               value="0x0400"/>
-    <enum name="FRONT_RIGHT"                              value="0x0401"/>
-    <enum name="BACK_LEFT"                                value="0x0402"/>
-    <enum name="BACK_RIGHT"                               value="0x0403"/>
-    <enum name="FRONT"                                    value="0x0404"/>
-    <enum name="BACK"                                     value="0x0405"/>
-    <enum name="LEFT"                                     value="0x0406"/>
-    <enum name="RIGHT"                                    value="0x0407"/>
-    <enum name="FRONT_AND_BACK"                           value="0x0408"/>
-    <enum name="AUX0"                                     value="0x0409"/>
-    <enum name="AUX1"                                     value="0x040A"/>
-    <enum name="AUX2"                                     value="0x040B"/>
-    <enum name="AUX3"                                     value="0x040C"/>
-    <enum name="INVALID_VALUE"                            value="0x0501"/>
-    <enum name="INVALID_ENUM"                             value="0x0500"/>
-    <enum name="INVALID_OPERATION"                        value="0x0502"/>
-    <enum name="STACK_OVERFLOW"                           value="0x0503"/>
-    <enum name="STACK_UNDERFLOW"                          value="0x0504"/>
-    <enum name="OUT_OF_MEMORY"                            value="0x0505"/>
-    <enum name="2D"                                       value="0x0600"/>
-    <enum name="3D"                                       value="0x0601"/>
-    <enum name="3D_COLOR"                                 value="0x0602"/>
-    <enum name="3D_COLOR_TEXTURE"                         value="0x0603"/>
-    <enum name="4D_COLOR_TEXTURE"                         value="0x0604"/>
-    <enum name="PASS_THROUGH_TOKEN"                       value="0x0700"/>
-    <enum name="POINT_TOKEN"                              value="0x0701"/>
-    <enum name="LINE_TOKEN"                               value="0x0702"/>
-    <enum name="POLYGON_TOKEN"                            value="0x0703"/>
-    <enum name="BITMAP_TOKEN"                             value="0x0704"/>
-    <enum name="DRAW_PIXEL_TOKEN"                         value="0x0705"/>
-    <enum name="COPY_PIXEL_TOKEN"                         value="0x0706"/>
-    <enum name="LINE_RESET_TOKEN"                         value="0x0707"/>
-    <enum name="EXP"                                      value="0x0800"/>
-    <enum name="EXP2"                                     value="0x0801"/>
-    <enum name="CW"                                       value="0x0900"/>
-    <enum name="CCW"                                      value="0x0901"/>
-    <enum name="COEFF"                                    value="0x0A00"/>
-    <enum name="ORDER"                                    value="0x0A01"/>
-    <enum name="DOMAIN"                                   value="0x0A02"/>
-    <enum name="CURRENT_COLOR"                 count="4"  value="0x0B00">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_INDEX"                 count="1"  value="0x0B01">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_NORMAL"                count="3"  value="0x0B02">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_TEXTURE_COORDS"        count="4"  value="0x0B03">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_RASTER_COLOR"          count="4"  value="0x0B04">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_RASTER_INDEX"          count="1"  value="0x0B05">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_RASTER_TEXTURE_COORDS" count="4"  value="0x0B06">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_RASTER_POSITION"       count="4"  value="0x0B07">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_RASTER_POSITION_VALID" count="1"  value="0x0B08">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_RASTER_DISTANCE"       count="1"  value="0x0B09">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SMOOTH"                  count="1"  value="0x0B10">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SIZE"                    count="1"  value="0x0B11">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SIZE_RANGE"              count="2"  value="0x0B12">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SIZE_GRANULARITY"        count="1"  value="0x0B13">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_SMOOTH"                   count="1"  value="0x0B20">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_WIDTH"                    count="1"  value="0x0B21">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_WIDTH_RANGE"              count="2"  value="0x0B22">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_WIDTH_GRANULARITY"        count="1"  value="0x0B23">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_STIPPLE"                  count="1"  value="0x0B24">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_STIPPLE_PATTERN"          count="1"  value="0x0B25">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_STIPPLE_REPEAT"           count="1"  value="0x0B26">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIST_MODE"                     count="1"  value="0x0B30">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_LIST_NESTING"              count="1"  value="0x0B31">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIST_BASE"                     count="1"  value="0x0B32">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIST_INDEX"                    count="1"  value="0x0B33">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_MODE"                  count="2"  value="0x0B40">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_SMOOTH"                count="1"  value="0x0B41">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_STIPPLE"               count="1"  value="0x0B42">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="EDGE_FLAG"                     count="1"  value="0x0B43">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CULL_FACE"                     count="1"  value="0x0B44">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CULL_FACE_MODE"                count="1"  value="0x0B45">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FRONT_FACE"                    count="1"  value="0x0B46">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHTING"                      count="1"  value="0x0B50">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT_MODEL_LOCAL_VIEWER"      count="1"  value="0x0B51">
-        <size name="LightModelfv"/>
-        <size name="LightModeliv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT_MODEL_TWO_SIDE"          count="1"  value="0x0B52">
-        <size name="LightModelfv"/>
-        <size name="LightModeliv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT_MODEL_AMBIENT"           count="4"  value="0x0B53">
-        <size name="LightModelfv"/>
-        <size name="LightModeliv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SHADE_MODEL"                   count="1"  value="0x0B54">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_MATERIAL_FACE"           count="1"  value="0x0B55">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_MATERIAL_PARAMETER"      count="1"  value="0x0B56">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_MATERIAL"                count="1"  value="0x0B57">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG"                           count="1"  value="0x0B60">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_INDEX"                     count="1"  value="0x0B61">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_DENSITY"                   count="1"  value="0x0B62">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_START"                     count="1"  value="0x0B63">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_END"                       count="1"  value="0x0B64">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_MODE"                      count="1"  value="0x0B65">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COLOR"                     count="4"  value="0x0B66">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_RANGE"                   count="2"  value="0x0B70">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_TEST"                    count="1"  value="0x0B71">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_WRITEMASK"               count="1"  value="0x0B72">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_CLEAR_VALUE"             count="1"  value="0x0B73">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_FUNC"                    count="1"  value="0x0B74">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACCUM_CLEAR_VALUE"             count="4"  value="0x0B80">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_TEST"                  count="1"  value="0x0B90">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_CLEAR_VALUE"           count="1"  value="0x0B91">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_FUNC"                  count="1"  value="0x0B92">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_VALUE_MASK"            count="1"  value="0x0B93">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_FAIL"                  count="1"  value="0x0B94">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_PASS_DEPTH_FAIL"       count="1"  value="0x0B95">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_PASS_DEPTH_PASS"       count="1"  value="0x0B96">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_REF"                   count="1"  value="0x0B97">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_WRITEMASK"             count="1"  value="0x0B98">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX_MODE"                   count="1"  value="0x0BA0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMALIZE"                     count="1"  value="0x0BA1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VIEWPORT"                      count="4"  value="0x0BA2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW_STACK_DEPTH"         count="1"  value="0x0BA3">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROJECTION_STACK_DEPTH"        count="1"  value="0x0BA4">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_STACK_DEPTH"           count="1"  value="0x0BA5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW_MATRIX"              count="16" value="0x0BA6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROJECTION_MATRIX"             count="16" value="0x0BA7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MATRIX"                count="16" value="0x0BA8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ATTRIB_STACK_DEPTH"            count="1"  value="0x0BB0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIENT_ATTRIB_STACK_DEPTH"     count="1"  value="0x0BB1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_TEST"                    count="1"  value="0x0BC0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_TEST_FUNC"               count="1"  value="0x0BC1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_TEST_REF"                count="1"  value="0x0BC2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DITHER"                        count="1"  value="0x0BD0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_DST"                     count="1"  value="0x0BE0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC"                     count="1"  value="0x0BE1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND"                         count="1"  value="0x0BE2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LOGIC_OP_MODE"                 count="1"  value="0x0BF0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LOGIC_OP"                      count="1"  value="0x0BF1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="AUX_BUFFERS"                   count="1"  value="0x0C00">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER"                   count="1"  value="0x0C01">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="READ_BUFFER"                   count="1"  value="0x0C02">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SCISSOR_BOX"                   count="4"  value="0x0C10">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SCISSOR_TEST"                  count="1"  value="0x0C11">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_CLEAR_VALUE"             count="1"  value="0x0C20">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_WRITEMASK"               count="1"  value="0x0C21">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_CLEAR_VALUE"             count="4"  value="0x0C22">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_WRITEMASK"               count="4"  value="0x0C23">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_MODE"                    count="1"  value="0x0C30">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RGBA_MODE"                     count="1"  value="0x0C31">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DOUBLEBUFFER"                  count="1"  value="0x0C32">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STEREO"                        count="1"  value="0x0C33">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RENDER_MODE"                   count="1"  value="0x0C40">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PERSPECTIVE_CORRECTION_HINT"   count="1"  value="0x0C50">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SMOOTH_HINT"             count="1"  value="0x0C51">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LINE_SMOOTH_HINT"              count="1"  value="0x0C52">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_SMOOTH_HINT"           count="1"  value="0x0C53">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_HINT"                      count="1"  value="0x0C54">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_GEN_S"                 count="1"  value="0x0C60">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_GEN_T"                 count="1"  value="0x0C61">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_GEN_R"                 count="1"  value="0x0C62">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_GEN_Q"                 count="1"  value="0x0C63">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_I_TO_I"              count="1"  value="0x0C70">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_S_TO_S"                         value="0x0C71"/>
-    <enum name="PIXEL_MAP_I_TO_R"                         value="0x0C72"/>
-    <enum name="PIXEL_MAP_I_TO_G"                         value="0x0C73"/>
-    <enum name="PIXEL_MAP_I_TO_B"                         value="0x0C74"/>
-    <enum name="PIXEL_MAP_I_TO_A"                         value="0x0C75"/>
-    <enum name="PIXEL_MAP_R_TO_R"                         value="0x0C76"/>
-    <enum name="PIXEL_MAP_G_TO_G"                         value="0x0C77"/>
-    <enum name="PIXEL_MAP_B_TO_B"                         value="0x0C78"/>
-    <enum name="PIXEL_MAP_A_TO_A"                         value="0x0C79"/>
-    <enum name="PIXEL_MAP_I_TO_I_SIZE"         count="1"  value="0x0CB0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_S_TO_S_SIZE"         count="1"  value="0x0CB1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_I_TO_R_SIZE"         count="1"  value="0x0CB2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_I_TO_G_SIZE"         count="1"  value="0x0CB3">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_I_TO_B_SIZE"         count="1"  value="0x0CB4">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_I_TO_A_SIZE"         count="1"  value="0x0CB5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_R_TO_R_SIZE"         count="1"  value="0x0CB6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_G_TO_G_SIZE"         count="1"  value="0x0CB7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_B_TO_B_SIZE"         count="1"  value="0x0CB8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PIXEL_MAP_A_TO_A_SIZE"         count="1"  value="0x0CB9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_SWAP_BYTES"             count="1"  value="0x0CF0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_LSB_FIRST"              count="1"  value="0x0CF1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_ROW_LENGTH"             count="1"  value="0x0CF2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_SKIP_PIXELS"            count="1"  value="0x0CF4">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_SKIP_ROWS"              count="1"  value="0x0CF3">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_ALIGNMENT"              count="1"  value="0x0CF5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_SWAP_BYTES"               count="1"  value="0x0D00">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_LSB_FIRST"                count="1"  value="0x0D01">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_ROW_LENGTH"               count="1"  value="0x0D02">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_SKIP_ROWS"                count="1"  value="0x0D03">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_SKIP_PIXELS"              count="1"  value="0x0D04">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_ALIGNMENT"                count="1"  value="0x0D05">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAP_COLOR"                     count="1"  value="0x0D10">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAP_STENCIL"                   count="1"  value="0x0D11">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_SHIFT"                   count="1"  value="0x0D12">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_OFFSET"                  count="1"  value="0x0D13">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RED_SCALE"                     count="1"  value="0x0D14">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RED_BIAS"                      count="1"  value="0x0D15">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ZOOM_X"                        count="1"  value="0x0D16">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ZOOM_Y"                        count="1"  value="0x0D17">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="GREEN_SCALE"                   count="1"  value="0x0D18">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="GREEN_BIAS"                    count="1"  value="0x0D19">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLUE_SCALE"                    count="1"  value="0x0D1A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLUE_BIAS"                     count="1"  value="0x0D1B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_SCALE"                   count="1"  value="0x0D1C">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_BIAS"                    count="1"  value="0x0D1D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_SCALE"                   count="1"  value="0x0D1E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_BIAS"                    count="1"  value="0x0D1F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_EVAL_ORDER"                count="1"  value="0x0D30">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_LIGHTS"                    count="1"  value="0x0D31">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_CLIP_PLANES"               count="1"  value="0x0D32">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_SIZE"              count="1"  value="0x0D33">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_PIXEL_MAP_TABLE"           count="1"  value="0x0D34">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_ATTRIB_STACK_DEPTH"        count="1"  value="0x0D35">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_MODELVIEW_STACK_DEPTH"     count="1"  value="0x0D36">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_NAME_STACK_DEPTH"          count="1"  value="0x0D37">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_PROJECTION_STACK_DEPTH"    count="1"  value="0x0D38">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_STACK_DEPTH"       count="1"  value="0x0D39">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_VIEWPORT_DIMS"             count="2"  value="0x0D3A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_CLIENT_ATTRIB_STACK_DEPTH" count="1"  value="0x0D3B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SUBPIXEL_BITS"                 count="1"  value="0x0D50">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_BITS"                    count="1"  value="0x0D51">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="RED_BITS"                      count="1"  value="0x0D52">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="GREEN_BITS"                    count="1"  value="0x0D53">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLUE_BITS"                     count="1"  value="0x0D54">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALPHA_BITS"                    count="1"  value="0x0D55">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_BITS"                    count="1"  value="0x0D56">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BITS"                  count="1"  value="0x0D57">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACCUM_RED_BITS"                count="1"  value="0x0D58">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACCUM_GREEN_BITS"              count="1"  value="0x0D59">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACCUM_BLUE_BITS"               count="1"  value="0x0D5A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACCUM_ALPHA_BITS"              count="1"  value="0x0D5B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NAME_STACK_DEPTH"              count="1"  value="0x0D70">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="AUTO_NORMAL"                   count="1"  value="0x0D80">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAP1_COLOR_4"                  count="4"  value="0x0D90">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_INDEX"                    count="1"  value="0x0D91">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_NORMAL"                   count="3"  value="0x0D92">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_TEXTURE_COORD_1"          count="1"  value="0x0D93">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_TEXTURE_COORD_2"          count="2"  value="0x0D94">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_TEXTURE_COORD_3"          count="3"  value="0x0D95">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_TEXTURE_COORD_4"          count="4"  value="0x0D96">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_VERTEX_3"                 count="3"  value="0x0D97">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_VERTEX_4"                 count="4"  value="0x0D98">
-        <size name="Map1d"/>
-        <size name="Map1f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_COLOR_4"                  count="4"  value="0x0DB0">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_INDEX"                    count="1"  value="0x0DB1">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_NORMAL"                   count="3"  value="0x0DB2">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_TEXTURE_COORD_1"          count="1"  value="0x0DB3">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_TEXTURE_COORD_2"          count="2"  value="0x0DB4">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_TEXTURE_COORD_3"          count="3"  value="0x0DB5">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_TEXTURE_COORD_4"          count="4"  value="0x0DB6">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_VERTEX_3"                 count="3"  value="0x0DB7">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP2_VERTEX_4"                 count="4"  value="0x0DB8">
-        <size name="Map2d"/>
-        <size name="Map2f"/>
-        <size name="Get" count="1" mode="get"/>
-    </enum>
-    <enum name="MAP1_GRID_DOMAIN"              count="2"  value="0x0DD0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAP1_GRID_SEGMENTS"            count="1"  value="0x0DD1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAP2_GRID_DOMAIN"              count="4"  value="0x0DD2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAP2_GRID_SEGMENTS"            count="2"  value="0x0DD3">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_1D"                    count="1"  value="0x0DE0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_2D"                    count="1"  value="0x0DE1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FEEDBACK_BUFFER_POINTER"                  value="0x0DF0"/>
-    <enum name="FEEDBACK_BUFFER_SIZE"                     value="0x0DF1"/>
-    <enum name="FEEDBACK_BUFFER_TYPE"                     value="0x0DF2"/>
-    <enum name="SELECTION_BUFFER_POINTER"                 value="0x0DF3"/>
-    <enum name="SELECTION_BUFFER_SIZE"                    value="0x0DF4"/>
-    <enum name="TEXTURE_WIDTH"                 count="1"  value="0x1000">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_HEIGHT"                count="1"  value="0x1001">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BORDER"                count="1"  value="0x1005">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPONENTS"            count="1"  value="0x1003">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BORDER_COLOR"          count="4"  value="0x1004">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="DONT_CARE"                                value="0x1100"/>
-    <enum name="FASTEST"                                  value="0x1101"/>
-    <enum name="NICEST"                                   value="0x1102"/>
-    <enum name="AMBIENT"                       count="4"  value="0x1200">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="DIFFUSE"                       count="4"  value="0x1201">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPECULAR"                      count="4"  value="0x1202">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="POSITION"                      count="4"  value="0x1203">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPOT_DIRECTION"                count="3"  value="0x1204">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPOT_EXPONENT"                 count="1"  value="0x1205">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="SPOT_CUTOFF"                   count="1"  value="0x1206">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="CONSTANT_ATTENUATION"          count="1"  value="0x1207">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="LINEAR_ATTENUATION"            count="1"  value="0x1208">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="QUADRATIC_ATTENUATION"         count="1"  value="0x1209">
-        <size name="Lightfv"/>
-        <size name="Lightiv"/>
-        <size name="GetLightfv" mode="get"/>
-        <size name="GetLightiv" mode="get"/>
-    </enum>
-    <enum name="COMPILE"                                  value="0x1300"/>
-    <enum name="COMPILE_AND_EXECUTE"                      value="0x1301"/>
-    <enum name="BYTE"                          count="1"  value="0x1400">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="UNSIGNED_BYTE"                 count="1"  value="0x1401">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="SHORT"                         count="2"  value="0x1402">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="UNSIGNED_SHORT"                count="2"  value="0x1403">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="INT"                           count="4"  value="0x1404">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="UNSIGNED_INT"                  count="4"  value="0x1405">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="FLOAT"                         count="4"  value="0x1406">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="2_BYTES"                       count="2"  value="0x1407">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="3_BYTES"                       count="3"  value="0x1408">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="4_BYTES"                       count="4"  value="0x1409">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="HALF_FLOAT"                    count="2"  value="0x140B">
-        <size name="CallLists"/>
-    </enum>
-    <enum name="CLEAR"                                    value="0x1500"/>
-    <enum name="AND"                                      value="0x1501"/>
-    <enum name="AND_REVERSE"                              value="0x1502"/>
-    <enum name="COPY"                                     value="0x1503"/>
-    <enum name="AND_INVERTED"                             value="0x1504"/>
-    <enum name="NOOP"                                     value="0x1505"/>
-    <enum name="XOR"                                      value="0x1506"/>
-    <enum name="OR"                                       value="0x1507"/>
-    <enum name="NOR"                                      value="0x1508"/>
-    <enum name="EQUIV"                                    value="0x1509"/>
-    <enum name="INVERT"                                   value="0x150A"/>
-    <enum name="OR_REVERSE"                               value="0x150B"/>
-    <enum name="COPY_INVERTED"                            value="0x150C"/>
-    <enum name="OR_INVERTED"                              value="0x150D"/>
-    <enum name="NAND"                                     value="0x150E"/>
-    <enum name="SET"                                      value="0x150F"/>
-    <enum name="EMISSION"                      count="4"  value="0x1600">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-    </enum>
-    <enum name="SHININESS"                     count="1"  value="0x1601">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-    </enum>
-    <enum name="AMBIENT_AND_DIFFUSE"           count="4"  value="0x1602">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-    </enum>
-    <enum name="COLOR_INDEXES"                 count="3"  value="0x1603">
-        <size name="Materialfv"/>
-        <size name="Materialiv"/>
-        <size name="GetMaterialfv" mode="get"/>
-        <size name="GetMaterialiv" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW"                                value="0x1700"/>
-    <enum name="PROJECTION"                               value="0x1701"/>
-    <enum name="TEXTURE"                                  value="0x1702"/>
-    <enum name="COLOR"                                    value="0x1800"/>
-    <enum name="DEPTH"                                    value="0x1801"/>
-    <enum name="STENCIL"                                  value="0x1802"/>
-    <enum name="COLOR_INDEX"                              value="0x1900"/>
-    <enum name="STENCIL_INDEX"                            value="0x1901"/>
-    <enum name="DEPTH_COMPONENT"                          value="0x1902"/>
-    <enum name="RED"                                      value="0x1903"/>
-    <enum name="GREEN"                                    value="0x1904"/>
-    <enum name="BLUE"                                     value="0x1905"/>
-    <enum name="ALPHA"                                    value="0x1906"/>
-    <enum name="RGBA"                                     value="0x1908"/>
-    <enum name="RGB"                                      value="0x1907"/>
-    <enum name="LUMINANCE"                                value="0x1909"/>
-    <enum name="LUMINANCE_ALPHA"                          value="0x190A"/>
-    <enum name="BITMAP"                                   value="0x1A00"/>
-    <enum name="POINT"                                    value="0x1B00"/>
-    <enum name="LINE"                                     value="0x1B01"/>
-    <enum name="FILL"                                     value="0x1B02"/>
-    <enum name="FEEDBACK"                                 value="0x1C01"/>
-    <enum name="RENDER"                                   value="0x1C00"/>
-    <enum name="SELECT"                                   value="0x1C02"/>
-    <enum name="FLAT"                                     value="0x1D00"/>
-    <enum name="SMOOTH"                                   value="0x1D01"/>
-    <enum name="KEEP"                                     value="0x1E00"/>
-    <enum name="REPLACE"                                  value="0x1E01"/>
-    <enum name="INCR"                                     value="0x1E02"/>
-    <enum name="DECR"                                     value="0x1E03"/>
-    <enum name="VENDOR"                                   value="0x1F00"/>
-    <enum name="RENDERER"                                 value="0x1F01"/>
-    <enum name="VERSION"                                  value="0x1F02"/>
-    <enum name="EXTENSIONS"                               value="0x1F03"/>
-    <enum name="S"                                        value="0x2000"/>
-    <enum name="T"                                        value="0x2001"/>
-    <enum name="R"                                        value="0x2002"/>
-    <enum name="Q"                                        value="0x2003"/>
-    <enum name="MODULATE"                                 value="0x2100"/>
-    <enum name="DECAL"                                    value="0x2101"/>
-    <enum name="TEXTURE_ENV_MODE"              count="1"  value="0x2200">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_ENV_COLOR"             count="4"  value="0x2201">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_ENV"                              value="0x2300"/>
-    <enum name="EYE_LINEAR"                               value="0x2400"/>
-    <enum name="OBJECT_LINEAR"                            value="0x2401"/>
-    <enum name="SPHERE_MAP"                               value="0x2402"/>
-    <enum name="TEXTURE_GEN_MODE"              count="1"  value="0x2500">
-        <size name="TexGendv"/>
-        <size name="TexGenfv"/>
-        <size name="TexGeniv"/>
-        <size name="GetTexGendv" mode="get"/>
-        <size name="GetTexGenfv" mode="get"/>
-        <size name="GetTexGeniv" mode="get"/>
-    </enum>
-    <enum name="OBJECT_PLANE"                  count="4"  value="0x2501">
-        <size name="TexGendv"/>
-        <size name="TexGenfv"/>
-        <size name="TexGeniv"/>
-        <size name="GetTexGendv" mode="get"/>
-        <size name="GetTexGenfv" mode="get"/>
-        <size name="GetTexGeniv" mode="get"/>
-    </enum>
-    <enum name="EYE_PLANE"                     count="4"  value="0x2502">
-        <size name="TexGendv"/>
-        <size name="TexGenfv"/>
-        <size name="TexGeniv"/>
-        <size name="GetTexGendv" mode="get"/>
-        <size name="GetTexGenfv" mode="get"/>
-        <size name="GetTexGeniv" mode="get"/>
-    </enum>
-    <enum name="NEAREST"                                  value="0x2600"/>
-    <enum name="LINEAR"                                   value="0x2601"/>
-    <enum name="NEAREST_MIPMAP_NEAREST"                   value="0x2700"/>
-    <enum name="LINEAR_MIPMAP_NEAREST"                    value="0x2701"/>
-    <enum name="NEAREST_MIPMAP_LINEAR"                    value="0x2702"/>
-    <enum name="LINEAR_MIPMAP_LINEAR"                     value="0x2703"/>
-    <enum name="TEXTURE_MAG_FILTER"            count="1"  value="0x2800">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MIN_FILTER"            count="1"  value="0x2801">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_WRAP_S"                count="1"  value="0x2802">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_WRAP_T"                count="1"  value="0x2803">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="CLAMP"                                    value="0x2900"/>
-    <enum name="REPEAT"                                   value="0x2901"/>
-    <enum name="CLIP_PLANE0"                   count="1"  value="0x3000">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE1"                   count="1"  value="0x3001">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE2"                   count="1"  value="0x3002">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE3"                   count="1"  value="0x3003">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE4"                   count="1"  value="0x3004">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIP_PLANE5"                   count="1"  value="0x3005">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT0"                        count="1"  value="0x4000">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT1"                        count="1"  value="0x4001">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT2"                        count="1"  value="0x4002">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT3"                        count="1"  value="0x4003">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT4"                        count="1"  value="0x4004">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT5"                        count="1"  value="0x4005">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT6"                        count="1"  value="0x4006">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="LIGHT7"                        count="1"  value="0x4007">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_BIT"                              value="0x00000001"/>
-    <enum name="POINT_BIT"                                value="0x00000002"/>
-    <enum name="LINE_BIT"                                 value="0x00000004"/>
-    <enum name="POLYGON_BIT"                              value="0x00000008"/>
-    <enum name="POLYGON_STIPPLE_BIT"                      value="0x00000010"/>
-    <enum name="PIXEL_MODE_BIT"                           value="0x00000020"/>
-    <enum name="LIGHTING_BIT"                             value="0x00000040"/>
-    <enum name="FOG_BIT"                                  value="0x00000080"/>
-    <enum name="DEPTH_BUFFER_BIT"                         value="0x00000100"/>
-    <enum name="ACCUM_BUFFER_BIT"                         value="0x00000200"/>
-    <enum name="STENCIL_BUFFER_BIT"                       value="0x00000400"/>
-    <enum name="VIEWPORT_BIT"                             value="0x00000800"/>
-    <enum name="TRANSFORM_BIT"                            value="0x00001000"/>
-    <enum name="ENABLE_BIT"                               value="0x00002000"/>
-    <enum name="COLOR_BUFFER_BIT"                         value="0x00004000"/>
-    <enum name="HINT_BIT"                                 value="0x00008000"/>
-    <enum name="EVAL_BIT"                                 value="0x00010000"/>
-    <enum name="LIST_BIT"                                 value="0x00020000"/>
-    <enum name="TEXTURE_BIT"                              value="0x00040000"/>
-    <enum name="SCISSOR_BIT"                              value="0x00080000"/>
-    <enum name="ALL_ATTRIB_BITS"                          value="0x000FFFFF"/>
-
-    <type name="double"  size="8"  float="true"    glx_name="FLOAT64"/>
-    <type name="clampd"  size="8"  float="true"    glx_name="FLOAT64"/>
-
-    <type name="float"   size="4"  float="true"    glx_name="FLOAT32"/>
-    <type name="clampf"  size="4"  float="true"    glx_name="FLOAT32"/>
-
-    <type name="int"     size="4"                  glx_name="CARD32"/>
-    <type name="uint"    size="4"  unsigned="true" glx_name="CARD32"/>
-    <type name="sizei"   size="4"  unsigned="true" glx_name="CARD32"/>
-    <type name="enum"    size="4"  unsigned="true" glx_name="ENUM"/>
-    <type name="bitfield" size="4" unsigned="true" glx_name="CARD32"/>
-
-    <type name="short"   size="2"                  glx_name="CARD16"/>
-    <type name="ushort"  size="2"  unsigned="true" glx_name="CARD16"/>
-
-    <type name="byte"    size="1"                  glx_name="CARD8"/>
-    <type name="ubyte"   size="1"  unsigned="true" glx_name="CARD8"/>
-    <type name="boolean" size="1"  unsigned="true" glx_name="CARD8"/>
-    
-    <type name="void"    size="1"/>
-
-    <function name="NewList" offset="0">
-        <param name="list" type="GLuint"/>
-        <param name="mode" type="GLenum"/>
-        <glx sop="101"/>
-    </function>
-
-    <function name="EndList" offset="1">
-        <glx sop="102"/>
-    </function>
-
-    <function name="CallList" offset="2">
-        <param name="list" type="GLuint"/>
-        <glx rop="1"/>
-    </function>
-
-    <function name="CallLists" offset="3">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="type" type="GLenum"/>
-        <param name="lists" type="const GLvoid *" variable_param="type" count="n"/>
-        <glx rop="2" large="true"/>
-    </function>
-
-    <function name="DeleteLists" offset="4">
-        <param name="list" type="GLuint"/>
-        <param name="range" type="GLsizei"/>
-        <glx sop="103"/>
-    </function>
-
-    <function name="GenLists" offset="5">
-        <param name="range" type="GLsizei"/>
-        <return type="GLuint"/>
-        <glx sop="104"/>
-    </function>
-
-    <function name="ListBase" offset="6">
-        <param name="base" type="GLuint"/>
-        <glx rop="3"/>
-    </function>
-
-    <function name="Begin" offset="7">
-        <param name="mode" type="GLenum"/>
-        <glx rop="4"/>
-    </function>
-
-    <function name="Bitmap" offset="8">
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="xorig" type="GLfloat"/>
-        <param name="yorig" type="GLfloat"/>
-        <param name="xmove" type="GLfloat"/>
-        <param name="ymove" type="GLfloat"/>
-        <param name="bitmap" type="const GLubyte *" img_width="width" img_height="height" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
-        <glx rop="5" large="true"/>
-    </function>
-
-    <function name="Color3b" offset="9" vectorequiv="Color3bv">
-        <param name="red" type="GLbyte"/>
-        <param name="green" type="GLbyte"/>
-        <param name="blue" type="GLbyte"/>
-    </function>
-
-    <function name="Color3bv" offset="10">
-        <param name="v" type="const GLbyte *" count="3"/>
-        <glx rop="6"/>
-    </function>
-
-    <function name="Color3d" offset="11" vectorequiv="Color3dv">
-        <param name="red" type="GLdouble"/>
-        <param name="green" type="GLdouble"/>
-        <param name="blue" type="GLdouble"/>
-    </function>
-
-    <function name="Color3dv" offset="12">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="7"/>
-    </function>
-
-    <function name="Color3f" offset="13" vectorequiv="Color3fv">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-    </function>
-
-    <function name="Color3fv" offset="14">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="8"/>
-    </function>
-
-    <function name="Color3i" offset="15" vectorequiv="Color3iv">
-        <param name="red" type="GLint"/>
-        <param name="green" type="GLint"/>
-        <param name="blue" type="GLint"/>
-    </function>
-
-    <function name="Color3iv" offset="16">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="9"/>
-    </function>
-
-    <function name="Color3s" offset="17" vectorequiv="Color3sv">
-        <param name="red" type="GLshort"/>
-        <param name="green" type="GLshort"/>
-        <param name="blue" type="GLshort"/>
-    </function>
-
-    <function name="Color3sv" offset="18">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="10"/>
-    </function>
-
-    <function name="Color3ub" offset="19" vectorequiv="Color3ubv">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-    </function>
-
-    <function name="Color3ubv" offset="20">
-        <param name="v" type="const GLubyte *" count="3"/>
-        <glx rop="11"/>
-    </function>
-
-    <function name="Color3ui" offset="21" vectorequiv="Color3uiv">
-        <param name="red" type="GLuint"/>
-        <param name="green" type="GLuint"/>
-        <param name="blue" type="GLuint"/>
-    </function>
-
-    <function name="Color3uiv" offset="22">
-        <param name="v" type="const GLuint *" count="3"/>
-        <glx rop="12"/>
-    </function>
-
-    <function name="Color3us" offset="23" vectorequiv="Color3usv">
-        <param name="red" type="GLushort"/>
-        <param name="green" type="GLushort"/>
-        <param name="blue" type="GLushort"/>
-    </function>
-
-    <function name="Color3usv" offset="24">
-        <param name="v" type="const GLushort *" count="3"/>
-        <glx rop="13"/>
-    </function>
-
-    <function name="Color4b" offset="25" vectorequiv="Color4bv">
-        <param name="red" type="GLbyte"/>
-        <param name="green" type="GLbyte"/>
-        <param name="blue" type="GLbyte"/>
-        <param name="alpha" type="GLbyte"/>
-    </function>
-
-    <function name="Color4bv" offset="26">
-        <param name="v" type="const GLbyte *" count="4"/>
-        <glx rop="14"/>
-    </function>
-
-    <function name="Color4d" offset="27" vectorequiv="Color4dv">
-        <param name="red" type="GLdouble"/>
-        <param name="green" type="GLdouble"/>
-        <param name="blue" type="GLdouble"/>
-        <param name="alpha" type="GLdouble"/>
-    </function>
-
-    <function name="Color4dv" offset="28">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="15"/>
-    </function>
-
-    <function name="Color4f" offset="29" vectorequiv="Color4fv">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-        <param name="alpha" type="GLfloat"/>
-    </function>
-
-    <function name="Color4fv" offset="30">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="16"/>
-    </function>
-
-    <function name="Color4i" offset="31" vectorequiv="Color4iv">
-        <param name="red" type="GLint"/>
-        <param name="green" type="GLint"/>
-        <param name="blue" type="GLint"/>
-        <param name="alpha" type="GLint"/>
-    </function>
-
-    <function name="Color4iv" offset="32">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="17"/>
-    </function>
-
-    <function name="Color4s" offset="33" vectorequiv="Color4sv">
-        <param name="red" type="GLshort"/>
-        <param name="green" type="GLshort"/>
-        <param name="blue" type="GLshort"/>
-        <param name="alpha" type="GLshort"/>
-    </function>
-
-    <function name="Color4sv" offset="34">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="18"/>
-    </function>
-
-    <function name="Color4ub" offset="35" vectorequiv="Color4ubv">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-        <param name="alpha" type="GLubyte"/>
-    </function>
-
-    <function name="Color4ubv" offset="36">
-        <param name="v" type="const GLubyte *" count="4"/>
-        <glx rop="19"/>
-    </function>
-
-    <function name="Color4ui" offset="37" vectorequiv="Color4uiv">
-        <param name="red" type="GLuint"/>
-        <param name="green" type="GLuint"/>
-        <param name="blue" type="GLuint"/>
-        <param name="alpha" type="GLuint"/>
-    </function>
-
-    <function name="Color4uiv" offset="38">
-        <param name="v" type="const GLuint *" count="4"/>
-        <glx rop="20"/>
-    </function>
-
-    <function name="Color4us" offset="39" vectorequiv="Color4usv">
-        <param name="red" type="GLushort"/>
-        <param name="green" type="GLushort"/>
-        <param name="blue" type="GLushort"/>
-        <param name="alpha" type="GLushort"/>
-    </function>
-
-    <function name="Color4usv" offset="40">
-        <param name="v" type="const GLushort *" count="4"/>
-        <glx rop="21"/>
-    </function>
-
-    <function name="EdgeFlag" offset="41" vectorequiv="EdgeFlagv">
-        <param name="flag" type="GLboolean"/>
-    </function>
-
-    <function name="EdgeFlagv" offset="42">
-        <param name="flag" type="const GLboolean *" count="1"/>
-        <glx rop="22"/>
-    </function>
-
-    <function name="End" offset="43">
-        <glx rop="23"/>
-    </function>
-
-    <function name="Indexd" offset="44" vectorequiv="Indexdv">
-        <param name="c" type="GLdouble"/>
-    </function>
-
-    <function name="Indexdv" offset="45">
-        <param name="c" type="const GLdouble *" count="1"/>
-        <glx rop="24"/>
-    </function>
-
-    <function name="Indexf" offset="46" vectorequiv="Indexfv">
-        <param name="c" type="GLfloat"/>
-    </function>
-
-    <function name="Indexfv" offset="47">
-        <param name="c" type="const GLfloat *" count="1"/>
-        <glx rop="25"/>
-    </function>
-
-    <function name="Indexi" offset="48" vectorequiv="Indexiv">
-        <param name="c" type="GLint"/>
-    </function>
-
-    <function name="Indexiv" offset="49">
-        <param name="c" type="const GLint *" count="1"/>
-        <glx rop="26"/>
-    </function>
-
-    <function name="Indexs" offset="50" vectorequiv="Indexsv">
-        <param name="c" type="GLshort"/>
-    </function>
-
-    <function name="Indexsv" offset="51">
-        <param name="c" type="const GLshort *" count="1"/>
-        <glx rop="27"/>
-    </function>
-
-    <function name="Normal3b" offset="52" vectorequiv="Normal3bv">
-        <param name="nx" type="GLbyte"/>
-        <param name="ny" type="GLbyte"/>
-        <param name="nz" type="GLbyte"/>
-    </function>
-
-    <function name="Normal3bv" offset="53">
-        <param name="v" type="const GLbyte *" count="3"/>
-        <glx rop="28"/>
-    </function>
-
-    <function name="Normal3d" offset="54" vectorequiv="Normal3dv">
-        <param name="nx" type="GLdouble"/>
-        <param name="ny" type="GLdouble"/>
-        <param name="nz" type="GLdouble"/>
-    </function>
-
-    <function name="Normal3dv" offset="55">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="29"/>
-    </function>
-
-    <function name="Normal3f" offset="56" vectorequiv="Normal3fv">
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-    </function>
-
-    <function name="Normal3fv" offset="57">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="30"/>
-    </function>
-
-    <function name="Normal3i" offset="58" vectorequiv="Normal3iv">
-        <param name="nx" type="GLint"/>
-        <param name="ny" type="GLint"/>
-        <param name="nz" type="GLint"/>
-    </function>
-
-    <function name="Normal3iv" offset="59">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="31"/>
-    </function>
-
-    <function name="Normal3s" offset="60" vectorequiv="Normal3sv">
-        <param name="nx" type="GLshort"/>
-        <param name="ny" type="GLshort"/>
-        <param name="nz" type="GLshort"/>
-    </function>
-
-    <function name="Normal3sv" offset="61">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="32"/>
-    </function>
-
-    <function name="RasterPos2d" offset="62" vectorequiv="RasterPos2dv">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="RasterPos2dv" offset="63">
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="33"/>
-    </function>
-
-    <function name="RasterPos2f" offset="64" vectorequiv="RasterPos2fv">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="RasterPos2fv" offset="65">
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="34"/>
-    </function>
-
-    <function name="RasterPos2i" offset="66" vectorequiv="RasterPos2iv">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-    </function>
-
-    <function name="RasterPos2iv" offset="67">
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="35"/>
-    </function>
-
-    <function name="RasterPos2s" offset="68" vectorequiv="RasterPos2sv">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="RasterPos2sv" offset="69">
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="36"/>
-    </function>
-
-    <function name="RasterPos3d" offset="70" vectorequiv="RasterPos3dv">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="RasterPos3dv" offset="71">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="37"/>
-    </function>
-
-    <function name="RasterPos3f" offset="72" vectorequiv="RasterPos3fv">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="RasterPos3fv" offset="73">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="38"/>
-    </function>
-
-    <function name="RasterPos3i" offset="74" vectorequiv="RasterPos3iv">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-    </function>
-
-    <function name="RasterPos3iv" offset="75">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="39"/>
-    </function>
-
-    <function name="RasterPos3s" offset="76" vectorequiv="RasterPos3sv">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="RasterPos3sv" offset="77">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="40"/>
-    </function>
-
-    <function name="RasterPos4d" offset="78" vectorequiv="RasterPos4dv">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="RasterPos4dv" offset="79">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="41"/>
-    </function>
-
-    <function name="RasterPos4f" offset="80" vectorequiv="RasterPos4fv">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="RasterPos4fv" offset="81">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="42"/>
-    </function>
-
-    <function name="RasterPos4i" offset="82" vectorequiv="RasterPos4iv">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-        <param name="w" type="GLint"/>
-    </function>
-
-    <function name="RasterPos4iv" offset="83">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="43"/>
-    </function>
-
-    <function name="RasterPos4s" offset="84" vectorequiv="RasterPos4sv">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-    </function>
-
-    <function name="RasterPos4sv" offset="85">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="44"/>
-    </function>
-
-    <function name="Rectd" offset="86" vectorequiv="Rectdv">
-        <param name="x1" type="GLdouble"/>
-        <param name="y1" type="GLdouble"/>
-        <param name="x2" type="GLdouble"/>
-        <param name="y2" type="GLdouble"/>
-    </function>
-
-    <function name="Rectdv" offset="87">
-        <param name="v1" type="const GLdouble *" count="2"/>
-        <param name="v2" type="const GLdouble *" count="2"/>
-        <glx rop="45"/>
-    </function>
-
-    <function name="Rectf" offset="88" vectorequiv="Rectfv">
-        <param name="x1" type="GLfloat"/>
-        <param name="y1" type="GLfloat"/>
-        <param name="x2" type="GLfloat"/>
-        <param name="y2" type="GLfloat"/>
-    </function>
-
-    <function name="Rectfv" offset="89">
-        <param name="v1" type="const GLfloat *" count="2"/>
-        <param name="v2" type="const GLfloat *" count="2"/>
-        <glx rop="46"/>
-    </function>
-
-    <function name="Recti" offset="90" vectorequiv="Rectiv">
-        <param name="x1" type="GLint"/>
-        <param name="y1" type="GLint"/>
-        <param name="x2" type="GLint"/>
-        <param name="y2" type="GLint"/>
-    </function>
-
-    <function name="Rectiv" offset="91">
-        <param name="v1" type="const GLint *" count="2"/>
-        <param name="v2" type="const GLint *" count="2"/>
-        <glx rop="47"/>
-    </function>
-
-    <function name="Rects" offset="92" vectorequiv="Rectsv">
-        <param name="x1" type="GLshort"/>
-        <param name="y1" type="GLshort"/>
-        <param name="x2" type="GLshort"/>
-        <param name="y2" type="GLshort"/>
-    </function>
-
-    <function name="Rectsv" offset="93">
-        <param name="v1" type="const GLshort *" count="2"/>
-        <param name="v2" type="const GLshort *" count="2"/>
-        <glx rop="48"/>
-    </function>
-
-    <function name="TexCoord1d" offset="94" vectorequiv="TexCoord1dv">
-        <param name="s" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord1dv" offset="95">
-        <param name="v" type="const GLdouble *" count="1"/>
-        <glx rop="49"/>
-    </function>
-
-    <function name="TexCoord1f" offset="96" vectorequiv="TexCoord1fv">
-        <param name="s" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord1fv" offset="97">
-        <param name="v" type="const GLfloat *" count="1"/>
-        <glx rop="50"/>
-    </function>
-
-    <function name="TexCoord1i" offset="98" vectorequiv="TexCoord1iv">
-        <param name="s" type="GLint"/>
-    </function>
-
-    <function name="TexCoord1iv" offset="99">
-        <param name="v" type="const GLint *" count="1"/>
-        <glx rop="51"/>
-    </function>
-
-    <function name="TexCoord1s" offset="100" vectorequiv="TexCoord1sv">
-        <param name="s" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord1sv" offset="101">
-        <param name="v" type="const GLshort *" count="1"/>
-        <glx rop="52"/>
-    </function>
-
-    <function name="TexCoord2d" offset="102" vectorequiv="TexCoord2dv">
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord2dv" offset="103">
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="53"/>
-    </function>
-
-    <function name="TexCoord2f" offset="104" vectorequiv="TexCoord2fv">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord2fv" offset="105">
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="54"/>
-    </function>
-
-    <function name="TexCoord2i" offset="106" vectorequiv="TexCoord2iv">
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-    </function>
-
-    <function name="TexCoord2iv" offset="107">
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="55"/>
-    </function>
-
-    <function name="TexCoord2s" offset="108" vectorequiv="TexCoord2sv">
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord2sv" offset="109">
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="56"/>
-    </function>
-
-    <function name="TexCoord3d" offset="110" vectorequiv="TexCoord3dv">
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord3dv" offset="111">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="57"/>
-    </function>
-
-    <function name="TexCoord3f" offset="112" vectorequiv="TexCoord3fv">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord3fv" offset="113">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="58"/>
-    </function>
-
-    <function name="TexCoord3i" offset="114" vectorequiv="TexCoord3iv">
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-    </function>
-
-    <function name="TexCoord3iv" offset="115">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="59"/>
-    </function>
-
-    <function name="TexCoord3s" offset="116" vectorequiv="TexCoord3sv">
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord3sv" offset="117">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="60"/>
-    </function>
-
-    <function name="TexCoord4d" offset="118" vectorequiv="TexCoord4dv">
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-        <param name="q" type="GLdouble"/>
-    </function>
-
-    <function name="TexCoord4dv" offset="119">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="61"/>
-    </function>
-
-    <function name="TexCoord4f" offset="120" vectorequiv="TexCoord4fv">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord4fv" offset="121">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="62"/>
-    </function>
-
-    <function name="TexCoord4i" offset="122" vectorequiv="TexCoord4iv">
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-        <param name="q" type="GLint"/>
-    </function>
-
-    <function name="TexCoord4iv" offset="123">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="63"/>
-    </function>
-
-    <function name="TexCoord4s" offset="124" vectorequiv="TexCoord4sv">
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-        <param name="q" type="GLshort"/>
-    </function>
-
-    <function name="TexCoord4sv" offset="125">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="64"/>
-    </function>
-
-    <function name="Vertex2d" offset="126" vectorequiv="Vertex2dv">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="Vertex2dv" offset="127">
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="65"/>
-    </function>
-
-    <function name="Vertex2f" offset="128" vectorequiv="Vertex2fv">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="Vertex2fv" offset="129">
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="66"/>
-    </function>
-
-    <function name="Vertex2i" offset="130" vectorequiv="Vertex2iv">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-    </function>
-
-    <function name="Vertex2iv" offset="131">
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="67"/>
-    </function>
-
-    <function name="Vertex2s" offset="132" vectorequiv="Vertex2sv">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="Vertex2sv" offset="133">
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="68"/>
-    </function>
-
-    <function name="Vertex3d" offset="134" vectorequiv="Vertex3dv">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="Vertex3dv" offset="135">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="69"/>
-    </function>
-
-    <function name="Vertex3f" offset="136" vectorequiv="Vertex3fv">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="Vertex3fv" offset="137">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="70"/>
-    </function>
-
-    <function name="Vertex3i" offset="138" vectorequiv="Vertex3iv">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-    </function>
-
-    <function name="Vertex3iv" offset="139">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="71"/>
-    </function>
-
-    <function name="Vertex3s" offset="140" vectorequiv="Vertex3sv">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="Vertex3sv" offset="141">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="72"/>
-    </function>
-
-    <function name="Vertex4d" offset="142" vectorequiv="Vertex4dv">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="Vertex4dv" offset="143">
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="73"/>
-    </function>
-
-    <function name="Vertex4f" offset="144" vectorequiv="Vertex4fv">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="Vertex4fv" offset="145">
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="74"/>
-    </function>
-
-    <function name="Vertex4i" offset="146" vectorequiv="Vertex4iv">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-        <param name="w" type="GLint"/>
-    </function>
-
-    <function name="Vertex4iv" offset="147">
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="75"/>
-    </function>
-
-    <function name="Vertex4s" offset="148" vectorequiv="Vertex4sv">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-    </function>
-
-    <function name="Vertex4sv" offset="149">
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="76"/>
-    </function>
-
-    <function name="ClipPlane" offset="150">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="const GLdouble *" count="4"/>
-        <glx rop="77"/>
-    </function>
-
-    <function name="ColorMaterial" offset="151">
-        <param name="face" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx rop="78"/>
-    </function>
-
-    <function name="CullFace" offset="152">
-        <param name="mode" type="GLenum"/>
-        <glx rop="79"/>
-    </function>
-
-    <function name="Fogf" offset="153">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="80"/>
-    </function>
-
-    <function name="Fogfv" offset="154">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="81"/>
-    </function>
-
-    <function name="Fogi" offset="155">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="82"/>
-    </function>
-
-    <function name="Fogiv" offset="156">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="83"/>
-    </function>
-
-    <function name="FrontFace" offset="157">
-        <param name="mode" type="GLenum"/>
-        <glx rop="84"/>
-    </function>
-
-    <function name="Hint" offset="158">
-        <param name="target" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx rop="85"/>
-    </function>
-
-    <function name="Lightf" offset="159">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="86"/>
-    </function>
-
-    <function name="Lightfv" offset="160">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="87"/>
-    </function>
-
-    <function name="Lighti" offset="161">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="88"/>
-    </function>
-
-    <function name="Lightiv" offset="162">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="89"/>
-    </function>
-
-    <function name="LightModelf" offset="163">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="90"/>
-    </function>
-
-    <function name="LightModelfv" offset="164">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="91"/>
-    </function>
-
-    <function name="LightModeli" offset="165">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="92"/>
-    </function>
-
-    <function name="LightModeliv" offset="166">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="93"/>
-    </function>
-
-    <function name="LineStipple" offset="167">
-        <param name="factor" type="GLint"/>
-        <param name="pattern" type="GLushort"/>
-        <glx rop="94"/>
-    </function>
-
-    <function name="LineWidth" offset="168">
-        <param name="width" type="GLfloat"/>
-        <glx rop="95"/>
-    </function>
-
-    <function name="Materialf" offset="169">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="96"/>
-    </function>
-
-    <function name="Materialfv" offset="170">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="97"/>
-    </function>
-
-    <function name="Materiali" offset="171">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="98"/>
-    </function>
-
-    <function name="Materialiv" offset="172">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="99"/>
-    </function>
-
-    <function name="PointSize" offset="173">
-        <param name="size" type="GLfloat"/>
-        <glx rop="100"/>
-    </function>
-
-    <function name="PolygonMode" offset="174">
-        <param name="face" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx rop="101"/>
-    </function>
-
-    <function name="PolygonStipple" offset="175">
-        <param name="mask" type="const GLubyte *" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP" img_target="0" img_pad_dimensions="false"/>
-        <glx rop="102"/>
-    </function>
-
-    <function name="Scissor" offset="176">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="103"/>
-    </function>
-
-    <function name="ShadeModel" offset="177">
-        <param name="mode" type="GLenum"/>
-        <glx rop="104"/>
-    </function>
-
-    <function name="TexParameterf" offset="178">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="105"/>
-    </function>
-
-    <function name="TexParameterfv" offset="179">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="106"/>
-    </function>
-
-    <function name="TexParameteri" offset="180">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="107"/>
-    </function>
-
-    <function name="TexParameteriv" offset="181">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="108"/>
-    </function>
-
-    <function name="TexImage1D" offset="182">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
-        <glx rop="109" large="true"/>
-    </function>
-
-    <function name="TexImage2D" offset="183">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_send_null="true" img_pad_dimensions="true"/>
-        <glx rop="110" large="true"/>
-    </function>
-
-    <function name="TexEnvf" offset="184">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="111"/>
-    </function>
-
-    <function name="TexEnvfv" offset="185">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="112"/>
-    </function>
-
-    <function name="TexEnvi" offset="186">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="113"/>
-    </function>
-
-    <function name="TexEnviv" offset="187">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="114"/>
-    </function>
-
-    <function name="TexGend" offset="188">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLdouble"/>
-        <glx rop="115"/>
-    </function>
-
-    <function name="TexGendv" offset="189">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLdouble *" variable_param="pname"/>
-        <glx rop="116"/>
-    </function>
-
-    <function name="TexGenf" offset="190">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="117"/>
-    </function>
-
-    <function name="TexGenfv" offset="191">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="118"/>
-    </function>
-
-    <function name="TexGeni" offset="192">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="119"/>
-    </function>
-
-    <function name="TexGeniv" offset="193">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="120"/>
-    </function>
-
-    <function name="FeedbackBuffer" offset="194">
-        <param name="size" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="buffer" type="GLfloat *" output="true"/>
-        <glx sop="105" handcode="true"/>
-    </function>
-
-    <function name="SelectBuffer" offset="195">
-        <param name="size" type="GLsizei"/>
-        <param name="buffer" type="GLuint *" output="true"/>
-        <glx sop="106" handcode="true"/>
-    </function>
-
-    <function name="RenderMode" offset="196">
-        <param name="mode" type="GLenum"/>
-        <return type="GLint"/>
-        <glx sop="107" handcode="true"/>
-    </function>
-
-    <function name="InitNames" offset="197">
-        <glx rop="121"/>
-    </function>
-
-    <function name="LoadName" offset="198">
-        <param name="name" type="GLuint"/>
-        <glx rop="122"/>
-    </function>
-
-    <function name="PassThrough" offset="199">
-        <param name="token" type="GLfloat"/>
-        <glx rop="123"/>
-    </function>
-
-    <function name="PopName" offset="200">
-        <glx rop="124"/>
-    </function>
-
-    <function name="PushName" offset="201">
-        <param name="name" type="GLuint"/>
-        <glx rop="125"/>
-    </function>
-
-    <function name="DrawBuffer" offset="202">
-        <param name="mode" type="GLenum"/>
-        <glx rop="126"/>
-    </function>
-
-    <function name="Clear" offset="203">
-        <param name="mask" type="GLbitfield"/>
-        <glx rop="127"/>
-    </function>
-
-    <function name="ClearAccum" offset="204">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-        <param name="alpha" type="GLfloat"/>
-        <glx rop="128"/>
-    </function>
-
-    <function name="ClearIndex" offset="205">
-        <param name="c" type="GLfloat"/>
-        <glx rop="129"/>
-    </function>
-
-    <function name="ClearColor" offset="206">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-        <glx rop="130"/>
-    </function>
-
-    <function name="ClearStencil" offset="207">
-        <param name="s" type="GLint"/>
-        <glx rop="131"/>
-    </function>
-
-    <function name="ClearDepth" offset="208">
-        <param name="depth" type="GLclampd"/>
-        <glx rop="132"/>
-    </function>
-
-    <function name="StencilMask" offset="209">
-        <param name="mask" type="GLuint"/>
-        <glx rop="133"/>
-    </function>
-
-    <function name="ColorMask" offset="210">
-        <param name="red" type="GLboolean"/>
-        <param name="green" type="GLboolean"/>
-        <param name="blue" type="GLboolean"/>
-        <param name="alpha" type="GLboolean"/>
-        <glx rop="134"/>
-    </function>
-
-    <function name="DepthMask" offset="211">
-        <param name="flag" type="GLboolean"/>
-        <glx rop="135"/>
-    </function>
-
-    <function name="IndexMask" offset="212">
-        <param name="mask" type="GLuint"/>
-        <glx rop="136"/>
-    </function>
-
-    <function name="Accum" offset="213">
-        <param name="op" type="GLenum"/>
-        <param name="value" type="GLfloat"/>
-        <glx rop="137"/>
-    </function>
-
-    <function name="Disable" offset="214">
-        <param name="cap" type="GLenum"/>
-        <glx rop="138" handcode="client"/>
-    </function>
-
-    <function name="Enable" offset="215">
-        <param name="cap" type="GLenum"/>
-        <glx rop="139" handcode="client"/>
-    </function>
-
-    <function name="Finish" offset="216">
-        <glx sop="108" handcode="true"/>
-    </function>
-
-    <function name="Flush" offset="217">
-        <glx sop="142" handcode="true"/>
-    </function>
-
-    <function name="PopAttrib" offset="218">
-        <glx rop="141"/>
-    </function>
-
-    <function name="PushAttrib" offset="219">
-        <param name="mask" type="GLbitfield"/>
-        <glx rop="142"/>
-    </function>
-
-    <function name="Map1d" offset="220">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <param name="stride" type="GLint" client_only="true"/>
-        <param name="order" type="GLint"/>
-        <param name="points" type="const GLdouble *" variable_param="order"/>
-        <glx rop="143" handcode="true"/>
-    </function>
-
-    <function name="Map1f" offset="221">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <param name="stride" type="GLint" client_only="true"/>
-        <param name="order" type="GLint"/>
-        <param name="points" type="const GLfloat *" variable_param="order"/>
-        <glx rop="144" handcode="true"/>
-    </function>
-
-    <function name="Map2d" offset="222">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <param name="ustride" type="GLint" client_only="true"/>
-        <param name="uorder" type="GLint"/>
-        <param name="v1" type="GLdouble"/>
-        <param name="v2" type="GLdouble"/>
-        <param name="vstride" type="GLint" client_only="true"/>
-        <param name="vorder" type="GLint"/>
-        <param name="points" type="const GLdouble *" variable_param="uorder"/>
-        <glx rop="145" handcode="true"/>
-    </function>
-
-    <function name="Map2f" offset="223">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <param name="ustride" type="GLint" client_only="true"/>
-        <param name="uorder" type="GLint"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <param name="vstride" type="GLint" client_only="true"/>
-        <param name="vorder" type="GLint"/>
-        <param name="points" type="const GLfloat *" variable_param="uorder"/>
-        <glx rop="146" handcode="true"/>
-    </function>
-
-    <function name="MapGrid1d" offset="224">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <glx rop="147"/>
-    </function>
-
-    <function name="MapGrid1f" offset="225">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <glx rop="148"/>
-    </function>
-
-    <function name="MapGrid2d" offset="226">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <param name="vn" type="GLint"/>
-        <param name="v1" type="GLdouble"/>
-        <param name="v2" type="GLdouble"/>
-        <glx rop="149"/>
-    </function>
-
-    <function name="MapGrid2f" offset="227">
-        <param name="un" type="GLint"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <param name="vn" type="GLint"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <glx rop="150"/>
-    </function>
-
-    <function name="EvalCoord1d" offset="228" vectorequiv="EvalCoord1dv">
-        <param name="u" type="GLdouble"/>
-    </function>
-
-    <function name="EvalCoord1dv" offset="229">
-        <param name="u" type="const GLdouble *" count="1"/>
-        <glx rop="151"/>
-    </function>
-
-    <function name="EvalCoord1f" offset="230" vectorequiv="EvalCoord1fv">
-        <param name="u" type="GLfloat"/>
-    </function>
-
-    <function name="EvalCoord1fv" offset="231">
-        <param name="u" type="const GLfloat *" count="1"/>
-        <glx rop="152"/>
-    </function>
-
-    <function name="EvalCoord2d" offset="232" vectorequiv="EvalCoord2dv">
-        <param name="u" type="GLdouble"/>
-        <param name="v" type="GLdouble"/>
-    </function>
-
-    <function name="EvalCoord2dv" offset="233">
-        <param name="u" type="const GLdouble *" count="2"/>
-        <glx rop="153"/>
-    </function>
-
-    <function name="EvalCoord2f" offset="234" vectorequiv="EvalCoord2fv">
-        <param name="u" type="GLfloat"/>
-        <param name="v" type="GLfloat"/>
-    </function>
-
-    <function name="EvalCoord2fv" offset="235">
-        <param name="u" type="const GLfloat *" count="2"/>
-        <glx rop="154"/>
-    </function>
-
-    <function name="EvalMesh1" offset="236">
-        <param name="mode" type="GLenum"/>
-        <param name="i1" type="GLint"/>
-        <param name="i2" type="GLint"/>
-        <glx rop="155"/>
-    </function>
-
-    <function name="EvalPoint1" offset="237">
-        <param name="i" type="GLint"/>
-        <glx rop="156"/>
-    </function>
-
-    <function name="EvalMesh2" offset="238">
-        <param name="mode" type="GLenum"/>
-        <param name="i1" type="GLint"/>
-        <param name="i2" type="GLint"/>
-        <param name="j1" type="GLint"/>
-        <param name="j2" type="GLint"/>
-        <glx rop="157"/>
-    </function>
-
-    <function name="EvalPoint2" offset="239">
-        <param name="i" type="GLint"/>
-        <param name="j" type="GLint"/>
-        <glx rop="158"/>
-    </function>
-
-    <function name="AlphaFunc" offset="240">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLclampf"/>
-        <glx rop="159"/>
-    </function>
-
-    <function name="BlendFunc" offset="241">
-        <param name="sfactor" type="GLenum"/>
-        <param name="dfactor" type="GLenum"/>
-        <glx rop="160"/>
-    </function>
-
-    <function name="LogicOp" offset="242">
-        <param name="opcode" type="GLenum"/>
-        <glx rop="161"/>
-    </function>
-
-    <function name="StencilFunc" offset="243">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLint"/>
-        <param name="mask" type="GLuint"/>
-        <glx rop="162"/>
-    </function>
-
-    <function name="StencilOp" offset="244">
-        <param name="fail" type="GLenum"/>
-        <param name="zfail" type="GLenum"/>
-        <param name="zpass" type="GLenum"/>
-        <glx rop="163"/>
-    </function>
-
-    <function name="DepthFunc" offset="245">
-        <param name="func" type="GLenum"/>
-        <glx rop="164"/>
-    </function>
-
-    <function name="PixelZoom" offset="246">
-        <param name="xfactor" type="GLfloat"/>
-        <param name="yfactor" type="GLfloat"/>
-        <glx rop="165"/>
-    </function>
-
-    <function name="PixelTransferf" offset="247">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="166"/>
-    </function>
-
-    <function name="PixelTransferi" offset="248">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="167"/>
-    </function>
-
-    <function name="PixelStoref" offset="249">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx sop="109" handcode="client"/>
-    </function>
-
-    <function name="PixelStorei" offset="250">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx sop="110" handcode="client"/>
-    </function>
-
-    <function name="PixelMapfv" offset="251">
-        <param name="map" type="GLenum"/>
-        <param name="mapsize" type="GLsizei" counter="true"/>
-        <param name="values" type="const GLfloat *" count="mapsize"/>
-        <glx rop="168" large="true"/>
-    </function>
-
-    <function name="PixelMapuiv" offset="252">
-        <param name="map" type="GLenum"/>
-        <param name="mapsize" type="GLsizei" counter="true"/>
-        <param name="values" type="const GLuint *" count="mapsize"/>
-        <glx rop="169" large="true"/>
-    </function>
-
-    <function name="PixelMapusv" offset="253">
-        <param name="map" type="GLenum"/>
-        <param name="mapsize" type="GLsizei" counter="true"/>
-        <param name="values" type="const GLushort *" count="mapsize"/>
-        <glx rop="170" large="true"/>
-    </function>
-
-    <function name="ReadBuffer" offset="254">
-        <param name="mode" type="GLenum"/>
-        <glx rop="171"/>
-    </function>
-
-    <function name="CopyPixels" offset="255">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <glx rop="172"/>
-    </function>
-
-    <function name="ReadPixels" offset="256">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="GLvoid *" output="true"  img_width="width" img_height="height" img_format="format" img_type="type" img_target="0"/>
-        <glx sop="111"/>
-    </function>
-
-    <function name="DrawPixels" offset="257">
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="0" img_pad_dimensions="false"/>
-        <glx rop="173" large="true"/>
-    </function>
-
-    <function name="GetBooleanv" offset="258">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLboolean *" output="true" variable_param="pname"/>
-        <glx sop="112" handcode="client"/>
-    </function>
-
-    <function name="GetClipPlane" offset="259">
-        <param name="plane" type="GLenum"/>
-        <param name="equation" type="GLdouble *" output="true" count="4"/>
-        <glx sop="113" always_array="true"/>
-    </function>
-
-    <function name="GetDoublev" offset="260">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
-        <glx sop="114" handcode="client"/>
-    </function>
-
-    <function name="GetError" offset="261">
-        <return type="GLenum"/>
-        <glx sop="115" handcode="client"/>
-    </function>
-
-    <function name="GetFloatv" offset="262">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="116" handcode="client"/>
-    </function>
-
-    <function name="GetIntegerv" offset="263">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="117" handcode="client"/>
-    </function>
-
-    <function name="GetLightfv" offset="264">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="118"/>
-    </function>
-
-    <function name="GetLightiv" offset="265">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="119"/>
-    </function>
-
-    <function name="GetMapdv" offset="266">
-        <param name="target" type="GLenum"/>
-        <param name="query" type="GLenum"/>
-        <param name="v" type="GLdouble *" output="true" variable_param="target query"/>
-        <glx sop="120"/>
-    </function>
-
-    <function name="GetMapfv" offset="267">
-        <param name="target" type="GLenum"/>
-        <param name="query" type="GLenum"/>
-        <param name="v" type="GLfloat *" output="true" variable_param="target query"/>
-        <glx sop="121"/>
-    </function>
-
-    <function name="GetMapiv" offset="268">
-        <param name="target" type="GLenum"/>
-        <param name="query" type="GLenum"/>
-        <param name="v" type="GLint *" output="true" variable_param="target query"/>
-        <glx sop="122"/>
-    </function>
-
-    <function name="GetMaterialfv" offset="269">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="123"/>
-    </function>
-
-    <function name="GetMaterialiv" offset="270">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="124"/>
-    </function>
-
-    <function name="GetPixelMapfv" offset="271">
-        <param name="map" type="GLenum"/>
-        <param name="values" type="GLfloat *" output="true" variable_param="map"/>
-        <glx sop="125"/>
-    </function>
-
-    <function name="GetPixelMapuiv" offset="272">
-        <param name="map" type="GLenum"/>
-        <param name="values" type="GLuint *" output="true" variable_param="map"/>
-        <glx sop="126"/>
-    </function>
-
-    <function name="GetPixelMapusv" offset="273">
-        <param name="map" type="GLenum"/>
-        <param name="values" type="GLushort *" output="true" variable_param="map"/>
-        <glx sop="127"/>
-    </function>
-
-    <function name="GetPolygonStipple" offset="274">
-        <param name="mask" type="GLubyte *" output="true" img_width="32" img_height="32" img_format="GL_COLOR_INDEX" img_type="GL_BITMAP"/>
-        <glx sop="128"/>
-    </function>
-
-    <function name="GetString" offset="275">
-        <param name="name" type="GLenum"/>
-        <return type="const GLubyte *"/>
-        <glx sop="129" handcode="true"/>
-    </function>
-
-    <function name="GetTexEnvfv" offset="276">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="130"/>
-    </function>
-
-    <function name="GetTexEnviv" offset="277">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="131"/>
-    </function>
-
-    <function name="GetTexGendv" offset="278">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
-        <glx sop="132"/>
-    </function>
-
-    <function name="GetTexGenfv" offset="279">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="133"/>
-    </function>
-
-    <function name="GetTexGeniv" offset="280">
-        <param name="coord" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="134"/>
-    </function>
-
-    <function name="GetTexImage" offset="281">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="GLvoid *" output="true" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type"/>
-        <glx sop="135" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetTexParameterfv" offset="282">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="136"/>
-    </function>
-
-    <function name="GetTexParameteriv" offset="283">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="137"/>
-    </function>
-
-    <function name="GetTexLevelParameterfv" offset="284">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="138"/>
-    </function>
-
-    <function name="GetTexLevelParameteriv" offset="285">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="139"/>
-    </function>
-
-    <function name="IsEnabled" offset="286">
-        <param name="cap" type="GLenum"/>
-        <return type="GLboolean"/>
-        <glx sop="140" handcode="client"/>
-    </function>
-
-    <function name="IsList" offset="287">
-        <param name="list" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx sop="141"/>
-    </function>
-
-    <function name="DepthRange" offset="288">
-        <param name="zNear" type="GLclampd"/>
-        <param name="zFar" type="GLclampd"/>
-        <glx rop="174"/>
-    </function>
-
-    <function name="Frustum" offset="289">
-        <param name="left" type="GLdouble"/>
-        <param name="right" type="GLdouble"/>
-        <param name="bottom" type="GLdouble"/>
-        <param name="top" type="GLdouble"/>
-        <param name="zNear" type="GLdouble"/>
-        <param name="zFar" type="GLdouble"/>
-        <glx rop="175"/>
-    </function>
-
-    <function name="LoadIdentity" offset="290">
-        <glx rop="176"/>
-    </function>
-
-    <function name="LoadMatrixf" offset="291">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="177"/>
-    </function>
-
-    <function name="LoadMatrixd" offset="292">
-        <param name="m" type="const GLdouble *" count="16"/>
-        <glx rop="178"/>
-    </function>
-
-    <function name="MatrixMode" offset="293">
-        <param name="mode" type="GLenum"/>
-        <glx rop="179"/>
-    </function>
-
-    <function name="MultMatrixf" offset="294">
-        <param name="m" type="const GLfloat *" count="16"/>
-        <glx rop="180"/>
-    </function>
-
-    <function name="MultMatrixd" offset="295">
-        <param name="m" type="const GLdouble *" count="16"/>
-        <glx rop="181"/>
-    </function>
-
-    <function name="Ortho" offset="296">
-        <param name="left" type="GLdouble"/>
-        <param name="right" type="GLdouble"/>
-        <param name="bottom" type="GLdouble"/>
-        <param name="top" type="GLdouble"/>
-        <param name="zNear" type="GLdouble"/>
-        <param name="zFar" type="GLdouble"/>
-        <glx rop="182"/>
-    </function>
-
-    <function name="PopMatrix" offset="297">
-        <glx rop="183"/>
-    </function>
-
-    <function name="PushMatrix" offset="298">
-        <glx rop="184"/>
-    </function>
-
-    <function name="Rotated" offset="299">
-        <param name="angle" type="GLdouble"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <glx rop="185"/>
-    </function>
-
-    <function name="Rotatef" offset="300">
-        <param name="angle" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="186"/>
-    </function>
-
-    <function name="Scaled" offset="301">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <glx rop="187"/>
-    </function>
-
-    <function name="Scalef" offset="302">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="188"/>
-    </function>
-
-    <function name="Translated" offset="303">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <glx rop="189"/>
-    </function>
-
-    <function name="Translatef" offset="304">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <glx rop="190"/>
-    </function>
-
-    <function name="Viewport" offset="305">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="191"/>
-    </function>
-</category>
-
-<category name="1.1">
-    <enum name="INDEX_LOGIC_OP"                           value="0x0BF1"/>
-    <enum name="COLOR_LOGIC_OP"                           value="0x0BF2"/>
-    <enum name="TEXTURE_INTERNAL_FORMAT"                  value="0x1003"/>
-    <enum name="DOUBLE"                                   value="0x140A"/>
-    <enum name="POLYGON_OFFSET_UNITS"          count="1"  value="0x2A00">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_OFFSET_POINT"                     value="0x2A01"/>
-    <enum name="POLYGON_OFFSET_LINE"                      value="0x2A02"/>
-    <enum name="R3_G3_B2"                                 value="0x2A10"/>
-    <enum name="V2F"                                      value="0x2A20"/>
-    <enum name="V3F"                                      value="0x2A21"/>
-    <enum name="C4UB_V2F"                                 value="0x2A22"/>
-    <enum name="C4UB_V3F"                                 value="0x2A23"/>
-    <enum name="C3F_V3F"                                  value="0x2A24"/>
-    <enum name="N3F_V3F"                                  value="0x2A25"/>
-    <enum name="C4F_N3F_V3F"                              value="0x2A26"/>
-    <enum name="T2F_V3F"                                  value="0x2A27"/>
-    <enum name="T4F_V4F"                                  value="0x2A28"/>
-    <enum name="T2F_C4UB_V3F"                             value="0x2A29"/>
-    <enum name="T2F_C3F_V3F"                              value="0x2A2A"/>
-    <enum name="T2F_N3F_V3F"                              value="0x2A2B"/>
-    <enum name="T2F_C4F_N3F_V3F"                          value="0x2A2C"/>
-    <enum name="T4F_C4F_N3F_V4F"                          value="0x2A2D"/>
-    <enum name="POLYGON_OFFSET_FILL"                      value="0x8037"/>
-    <enum name="POLYGON_OFFSET_FACTOR"         count="1"  value="0x8038">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POLYGON_OFFSET_BIAS"                      value="0x8039"/>
-    <enum name="ALPHA4"                                   value="0x803B"/>
-    <enum name="ALPHA8"                                   value="0x803C"/>
-    <enum name="ALPHA12"                                  value="0x803D"/>
-    <enum name="ALPHA16"                                  value="0x803E"/>
-    <enum name="LUMINANCE4"                               value="0x803F"/>
-    <enum name="LUMINANCE8"                               value="0x8040"/>
-    <enum name="LUMINANCE12"                              value="0x8041"/>
-    <enum name="LUMINANCE16"                              value="0x8042"/>
-    <enum name="LUMINANCE4_ALPHA4"                        value="0x8043"/>
-    <enum name="LUMINANCE6_ALPHA2"                        value="0x8044"/>
-    <enum name="LUMINANCE8_ALPHA8"                        value="0x8045"/>
-    <enum name="LUMINANCE12_ALPHA4"                       value="0x8046"/>
-    <enum name="LUMINANCE12_ALPHA12"                      value="0x8047"/>
-    <enum name="LUMINANCE16_ALPHA16"                      value="0x8048"/>
-    <enum name="INTENSITY"                                value="0x8049"/>
-    <enum name="INTENSITY4"                               value="0x804A"/>
-    <enum name="INTENSITY8"                               value="0x804B"/>
-    <enum name="INTENSITY12"                              value="0x804C"/>
-    <enum name="INTENSITY16"                              value="0x804D"/>
-    <enum name="RGB4"                                     value="0x804F"/>
-    <enum name="RGB5"                                     value="0x8050"/>
-    <enum name="RGB8"                                     value="0x8051"/>
-    <enum name="RGB10"                                    value="0x8052"/>
-    <enum name="RGB12"                                    value="0x8053"/>
-    <enum name="RGB16"                                    value="0x8054"/>
-    <enum name="RGBA2"                                    value="0x8055"/>
-    <enum name="RGBA4"                                    value="0x8056"/>
-    <enum name="RGB5_A1"                                  value="0x8057"/>
-    <enum name="RGBA8"                                    value="0x8058"/>
-    <enum name="RGB10_A2"                                 value="0x8059"/>
-    <enum name="RGBA12"                                   value="0x805A"/>
-    <enum name="RGBA16"                                   value="0x805B"/>
-    <enum name="TEXTURE_RED_SIZE"              count="1"  value="0x805C">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_GREEN_SIZE"            count="1"  value="0x805D">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BLUE_SIZE"             count="1"  value="0x805E">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_ALPHA_SIZE"            count="1"  value="0x805F">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_LUMINANCE_SIZE"        count="1"  value="0x8060">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_INTENSITY_SIZE"        count="1"  value="0x8061">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="PROXY_TEXTURE_1D"                         value="0x8063"/>
-    <enum name="PROXY_TEXTURE_2D"                         value="0x8064"/>
-    <enum name="TEXTURE_PRIORITY"              count="1"  value="0x8066">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_RESIDENT"              count="1"  value="0x8067">
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_1D"            count="1"  value="0x8068">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_2D"            count="1"  value="0x8069">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY"                  count="1"  value="0x8074">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY"                  count="1"  value="0x8075">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY"                   count="1"  value="0x8076">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_ARRAY"                   count="1"  value="0x8077">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY"           count="1"  value="0x8078">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="EDGE_FLAG_ARRAY"               count="1"  value="0x8079">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_SIZE"             count="1"  value="0x807A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_TYPE"             count="1"  value="0x807B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_STRIDE"           count="1"  value="0x807C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY_TYPE"             count="1"  value="0x807E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY_STRIDE"           count="1"  value="0x807F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_SIZE"              count="1"  value="0x8081">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_TYPE"              count="1"  value="0x8082">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_STRIDE"            count="1"  value="0x8083">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_ARRAY_TYPE"              count="1"  value="0x8085">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_ARRAY_STRIDE"            count="1"  value="0x8086">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_SIZE"      count="1"  value="0x8088">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_TYPE"      count="1"  value="0x8089">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_STRIDE"    count="1"  value="0x808A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="EDGE_FLAG_ARRAY_STRIDE"        count="1"  value="0x808C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_POINTER"                     value="0x808E"/>
-    <enum name="NORMAL_ARRAY_POINTER"                     value="0x808F"/>
-    <enum name="COLOR_ARRAY_POINTER"                      value="0x8090"/>
-    <enum name="INDEX_ARRAY_POINTER"                      value="0x8091"/>
-    <enum name="TEXTURE_COORD_ARRAY_POINTER"              value="0x8092"/>
-    <enum name="EDGE_FLAG_ARRAY_POINTER"                  value="0x8093"/>
-    <enum name="CLIENT_PIXEL_STORE_BIT"                   value="0x00000001"/>
-    <enum name="CLIENT_VERTEX_ARRAY_BIT"                  value="0x00000002"/>
-    <enum name="ALL_CLIENT_ATTRIB_BITS"                   value="0xFFFFFFFF"/>
-    <enum name="CLIENT_ALL_ATTRIB_BITS"                   value="0xFFFFFFFF"/>
-
-    <function name="ArrayElement" offset="306">
-        <param name="i" type="GLint"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="ColorPointer" offset="308">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DisableClientState" offset="309">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DrawArrays" offset="310">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <glx rop="193" handcode="true"/>
-    </function>
-
-    <function name="DrawElements" offset="311">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="EdgeFlagPointer" offset="312">
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="EnableClientState" offset="313">
-        <param name="array" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="GetPointerv" offset="329">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **" output="true"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="IndexPointer" offset="314">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="InterleavedArrays" offset="317">
-        <param name="format" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="NormalPointer" offset="318">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="TexCoordPointer" offset="320">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="VertexPointer" offset="321">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="PolygonOffset" offset="319">
-        <param name="factor" type="GLfloat"/>
-        <param name="units" type="GLfloat"/>
-        <glx rop="192"/>
-    </function>
-
-    <function name="CopyTexImage1D" offset="323">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <glx rop="4119"/>
-    </function>
-
-    <function name="CopyTexImage2D" offset="324">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <glx rop="4120"/>
-    </function>
-
-    <function name="CopyTexSubImage1D" offset="325">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="4121"/>
-    </function>
-
-    <function name="CopyTexSubImage2D" offset="326">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4122"/>
-    </function>
-
-    <function name="TexSubImage1D" offset="332">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_xoff="xoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4099" large="true"/>
-    </function>
-
-    <function name="TexSubImage2D" offset="333">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_xoff="xoffset" img_yoff="yoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4100" large="true"/>
-    </function>
-
-    <function name="AreTexturesResident" offset="322">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <param name="residences" type="GLboolean *" output="true" count="n"/>
-        <return type="GLboolean"/>
-        <glx sop="143" handcode="client" always_array="true"/>
-    </function>
-
-    <function name="BindTexture" offset="307">
-        <param name="target" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-        <glx rop="4117"/>
-    </function>
-
-    <function name="DeleteTextures" offset="327">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <glx sop="144"/>
-    </function>
-
-    <function name="GenTextures" offset="328">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="GLuint *" output="true" count="n"/>
-        <glx sop="145" always_array="true"/>
-    </function>
-
-    <function name="IsTexture" offset="330">
-        <param name="texture" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx sop="146"/>
-    </function>
-
-    <function name="PrioritizeTextures" offset="331">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <param name="priorities" type="const GLclampf *" count="n"/>
-        <glx rop="4118"/>
-    </function>
-
-    <function name="Indexub" offset="315" vectorequiv="Indexubv">
-        <param name="c" type="GLubyte"/>
-    </function>
-
-    <function name="Indexubv" offset="316">
-        <param name="c" type="const GLubyte *" count="1"/>
-        <glx rop="194"/>
-    </function>
-
-    <function name="PopClientAttrib" offset="334">
-        <glx handcode="true"/>
-    </function>
-
-    <function name="PushClientAttrib" offset="335">
-        <param name="mask" type="GLbitfield"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<category name="1.2">
-    <enum name="UNSIGNED_BYTE_3_3_2"                      value="0x8032"/>
-    <enum name="UNSIGNED_SHORT_4_4_4_4"                   value="0x8033"/>
-    <enum name="UNSIGNED_SHORT_5_5_5_1"                   value="0x8034"/>
-    <enum name="UNSIGNED_INT_8_8_8_8"                     value="0x8035"/>
-    <enum name="UNSIGNED_INT_10_10_10_2"                  value="0x8036"/>
-    <enum name="RESCALE_NORMAL"                count="1"  value="0x803A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_3D"            count="1"  value="0x806A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_SKIP_IMAGES"              count="1"  value="0x806B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PACK_IMAGE_HEIGHT"             count="1"  value="0x806C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_SKIP_IMAGES"            count="1"  value="0x806D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNPACK_IMAGE_HEIGHT"           count="1"  value="0x806E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_3D"                    count="1"  value="0x806F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROXY_TEXTURE_3D"                         value="0x8070"/>
-    <enum name="TEXTURE_DEPTH"                 count="1"  value="0x8071">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_WRAP_R"                count="1"  value="0x8072">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="MAX_3D_TEXTURE_SIZE"           count="1"  value="0x8073">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="UNSIGNED_BYTE_2_3_3_REV"                  value="0x8362"/>
-    <enum name="UNSIGNED_SHORT_5_6_5"                     value="0x8363"/>
-    <enum name="UNSIGNED_SHORT_5_6_5_REV"                 value="0x8364"/>
-    <enum name="UNSIGNED_SHORT_4_4_4_4_REV"               value="0x8365"/>
-    <enum name="UNSIGNED_SHORT_1_5_5_5_REV"               value="0x8366"/>
-    <enum name="UNSIGNED_INT_8_8_8_8_REV"                 value="0x8367"/>
-    <enum name="UNSIGNED_INT_2_10_10_10_REV"              value="0x8368"/>
-    <enum name="BGR"                                      value="0x80E0"/>
-    <enum name="BGRA"                                     value="0x80E1"/>
-    <enum name="MAX_ELEMENTS_VERTICES"         count="1"  value="0x80E8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_ELEMENTS_INDICES"          count="1"  value="0x80E9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLAMP_TO_EDGE"                            value="0x812F"/>
-    <enum name="TEXTURE_MIN_LOD"               count="1"  value="0x813A">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MAX_LOD"               count="1"  value="0x813B">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BASE_LEVEL"            count="1"  value="0x813C">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MAX_LEVEL"             count="1"  value="0x813D">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="LIGHT_MODEL_COLOR_CONTROL"     count="1"  value="0x81F8">
-        <size name="LightModelfv"/>
-        <size name="LightModeliv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SINGLE_COLOR"                             value="0x81F9"/>
-    <enum name="SEPARATE_SPECULAR_COLOR"                  value="0x81FA"/>
-    <enum name="SMOOTH_POINT_SIZE_RANGE"       count="2"  value="0x0B12">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SMOOTH_POINT_SIZE_GRANULARITY" count="1"  value="0x0B13">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SMOOTH_LINE_WIDTH_RANGE"       count="2"  value="0x0B22">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SMOOTH_LINE_WIDTH_GRANULARITY" count="1"  value="0x0B23">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALIASED_POINT_SIZE_RANGE"      count="2"  value="0x846D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ALIASED_LINE_WIDTH_RANGE"      count="2"  value="0x846E">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <!-- These enums are actually part of the ARB_imaging subset. -->
-
-    <enum name="CONSTANT_COLOR"                           value="0x8001"/>
-    <enum name="ONE_MINUS_CONSTANT_COLOR"                 value="0x8002"/>
-    <enum name="CONSTANT_ALPHA"                           value="0x8003"/>
-    <enum name="ONE_MINUS_CONSTANT_ALPHA"                 value="0x8004"/>
-    <enum name="BLEND_COLOR"                   count="4"  value="0x8005">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FUNC_ADD"                                 value="0x8006"/>
-    <enum name="MIN"                                      value="0x8007"/>
-    <enum name="MAX"                                      value="0x8008"/>
-    <enum name="BLEND_EQUATION"                count="1"  value="0x8009">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FUNC_SUBTRACT"                            value="0x800A"/>
-    <enum name="FUNC_REVERSE_SUBTRACT"                    value="0x800B"/>
-    <enum name="CONVOLUTION_1D"                count="1"  value="0x8010">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_2D"                count="1"  value="0x8011">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SEPARABLE_2D"                  count="1"  value="0x8012">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="CONVOLUTION_BORDER_MODE"       count="1"  value="0x8013">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_BORDER_COLOR"      count="4"  value="0x8154">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_FILTER_SCALE"      count="4"  value="0x8014">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_FILTER_BIAS"       count="4"  value="0x8015">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="REDUCE"                                   value="0x8016"/>
-    <enum name="CONVOLUTION_FORMAT"            count="1"  value="0x8017">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_WIDTH"             count="1"  value="0x8018">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_HEIGHT"            count="1"  value="0x8019">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="MAX_CONVOLUTION_WIDTH"         count="1"  value="0x801A">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_CONVOLUTION_HEIGHT"        count="1"  value="0x801B">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_RED_SCALE"    count="1"  value="0x801C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_GREEN_SCALE"  count="1"  value="0x801D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_BLUE_SCALE"   count="1"  value="0x801E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_ALPHA_SCALE"  count="1"  value="0x801F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_RED_BIAS"     count="1"  value="0x8020">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_GREEN_BIAS"   count="1"  value="0x8021">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_BLUE_BIAS"    count="1"  value="0x8022">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_ALPHA_BIAS"   count="1"  value="0x8023">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="HISTOGRAM"                     count="1"  value="0x8024">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROXY_HISTOGRAM"                          value="0x8025"/>
-    <enum name="HISTOGRAM_WIDTH"               count="1"  value="0x8026">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_FORMAT"              count="1"  value="0x8027">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_RED_SIZE"            count="1"  value="0x8028">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_GREEN_SIZE"          count="1"  value="0x8029">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_BLUE_SIZE"           count="1"  value="0x802A">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_ALPHA_SIZE"          count="1"  value="0x802B">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_LUMINANCE_SIZE"      count="1"  value="0x802C">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_SINK"                count="1"  value="0x802D">
-        <size name="GetHistogramParameterfv" mode="get"/>
-        <size name="GetHistogramParameteriv" mode="get"/>
-    </enum>
-    <enum name="MINMAX"                        count="1"  value="0x802E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MINMAX_FORMAT"                 count="1"  value="0x802F">
-        <size name="GetMinmaxParameterfv" mode="get"/>
-        <size name="GetMinmaxParameteriv" mode="get"/>
-    </enum>
-    <enum name="MINMAX_SINK"                   count="1"  value="0x8030">
-        <size name="GetMinmaxParameterfv" mode="get"/>
-        <size name="GetMinmaxParameteriv" mode="get"/>
-    </enum>
-
-    <enum name="COLOR_MATRIX"                  count="16" value="0x80B1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_MATRIX_STACK_DEPTH"      count="1"  value="0x80B2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_COLOR_MATRIX_STACK_DEPTH"  count="1"  value="0x80B3">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_RED_SCALE"   count="1"  value="0x80B4">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_GREEN_SCALE" count="1"  value="0x80B5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_BLUE_SCALE"  count="1"  value="0x80B6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_ALPHA_SCALE" count="1"  value="0x80B7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_RED_BIAS"    count="1"  value="0x80B8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_GREEN_BIAS"  count="1"  value="0x80B9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_BLUE_BIAS"   count="1"  value="0x80BA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_ALPHA_BIAS"  count="1"  value="0x80BB">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <enum name="COLOR_TABLE"                   count="1"  value="0x80D0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_COLOR_TABLE"  count="1"  value="0x80D1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_COLOR_MATRIX_COLOR_TABLE" count="1"  value="0x80D2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROXY_COLOR_TABLE"                              value="0x80D3"/>
-    <enum name="PROXY_POST_CONVOLUTION_COLOR_TABLE"             value="0x80D4"/>
-    <enum name="PROXY_POST_COLOR_MATRIX_COLOR_TABLE"            value="0x80D5"/>
-
-    <enum name="COLOR_TABLE_SCALE"             count="4"  value="0x80D6">
-        <size name="ColorTableParameterfv"/>
-        <size name="ColorTableParameteriv"/>
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_BIAS"              count="4"  value="0x80D7">
-        <size name="ColorTableParameterfv"/>
-        <size name="ColorTableParameteriv"/>
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_FORMAT"            count="1"  value="0x80D8">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_WIDTH"             count="1"  value="0x80D9">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_RED_SIZE"          count="1"  value="0x80DA">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_GREEN_SIZE"        count="1"  value="0x80DB">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_BLUE_SIZE"         count="1"  value="0x80DC">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_ALPHA_SIZE"        count="1"  value="0x80DD">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_LUMINANCE_SIZE"    count="1"  value="0x80DE">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_INTENSITY_SIZE"    count="1"  value="0x80DF">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-
-
-    <function name="BlendColor" offset="336">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-        <glx rop="4096"/>
-    </function>
-
-    <function name="BlendEquation" offset="337">
-        <param name="mode" type="GLenum"/>
-        <glx rop="4097"/>
-    </function>
-
-    <function name="DrawRangeElements" offset="338">
-        <param name="mode" type="GLenum"/>
-        <param name="start" type="GLuint"/>
-        <param name="end" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="ColorTable" offset="339">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="const GLvoid *" img_width="width" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
-        <glx rop="2053" large="true"/>
-    </function>
-
-    <function name="ColorTableParameterfv" offset="340">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="2054"/>
-    </function>
-
-    <function name="ColorTableParameteriv" offset="341">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="2055"/>
-    </function>
-
-    <function name="CopyColorTable" offset="342">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="2056"/>
-    </function>
-
-    <function name="GetColorTable" offset="343">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
-        <glx sop="147" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetColorTableParameterfv" offset="344">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="148"/>
-    </function>
-
-    <function name="GetColorTableParameteriv" offset="345">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="149"/>
-    </function>
-
-    <function name="ColorSubTable" offset="346">
-        <param name="target" type="GLenum"/>
-        <param name="start" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="data" type="const GLvoid *" img_width="count" img_pad_dimensions="false" img_format="format" img_type="type" img_target="target"/>
-        <glx rop="195" large="true"/>
-    </function>
-
-    <function name="CopyColorSubTable" offset="347">
-        <param name="target" type="GLenum"/>
-        <param name="start" type="GLsizei"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="196"/>
-    </function>
-
-    <function name="ConvolutionFilter1D" offset="348">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="const GLvoid *" img_width="width" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4101" large="true"/>
-    </function>
-
-    <function name="ConvolutionFilter2D" offset="349">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="const GLvoid *" img_width="width" img_height="height" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4102" large="true"/>
-    </function>
-
-    <function name="ConvolutionParameterf" offset="350">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat"/>
-        <glx rop="4103"/>
-    </function>
-
-    <function name="ConvolutionParameterfv" offset="351">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="4104"/>
-    </function>
-
-    <function name="ConvolutionParameteri" offset="352">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint"/>
-        <glx rop="4105"/>
-    </function>
-
-    <function name="ConvolutionParameteriv" offset="353">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="4106"/>
-    </function>
-
-    <function name="CopyConvolutionFilter1D" offset="354">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <glx rop="4107"/>
-    </function>
-
-    <function name="CopyConvolutionFilter2D" offset="355">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4108"/>
-    </function>
-
-    <function name="GetConvolutionFilter" offset="356">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/>
-        <glx sop="150" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetConvolutionParameterfv" offset="357">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="151"/>
-    </function>
-
-    <function name="GetConvolutionParameteriv" offset="358">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="152"/>
-    </function>
-
-    <function name="GetSeparableFilter" offset="359">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="row" type="GLvoid *" output="true"/>
-        <param name="column" type="GLvoid *" output="true"/>
-        <param name="span" type="GLvoid *" output="true"/>
-        <glx sop="153" handcode="true"/>
-    </function>
-
-    <function name="SeparableFilter2D" offset="360">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="row" type="const GLvoid *"/>
-        <param name="column" type="const GLvoid *"/>
-        <glx rop="4109" handcode="true"/>
-    </function>
-
-    <function name="GetHistogram" offset="361">
-        <param name="target" type="GLenum"/>
-        <param name="reset" type="GLboolean"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
-        <glx sop="154" dimensions_in_reply="true" img_reset="reset"/>
-    </function>
-
-    <function name="GetHistogramParameterfv" offset="362">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="155"/>
-    </function>
-
-    <function name="GetHistogramParameteriv" offset="363">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="156"/>
-    </function>
-
-    <function name="GetMinmax" offset="364">
-        <param name="target" type="GLenum"/>
-        <param name="reset" type="GLboolean"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/>
-        <glx sop="157" img_reset="reset"/>
-    </function>
-
-    <function name="GetMinmaxParameterfv" offset="365">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx sop="158"/>
-    </function>
-
-    <function name="GetMinmaxParameteriv" offset="366">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="159"/>
-    </function>
-
-    <function name="Histogram" offset="367">
-        <param name="target" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="sink" type="GLboolean"/>
-        <glx rop="4110"/>
-    </function>
-
-    <function name="Minmax" offset="368">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="sink" type="GLboolean"/>
-        <glx rop="4111"/>
-    </function>
-
-    <function name="ResetHistogram" offset="369">
-        <param name="target" type="GLenum"/>
-        <glx rop="4112"/>
-    </function>
-
-    <function name="ResetMinmax" offset="370">
-        <param name="target" type="GLenum"/>
-        <glx rop="4113"/>
-    </function>
-
-    <function name="TexImage3D" offset="371">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
-        <glx rop="4114" large="true"/>
-    </function>
-
-    <function name="TexSubImage3D" offset="372">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="4115" large="true"/>
-    </function>
-
-    <function name="CopyTexSubImage3D" offset="373">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <glx rop="4123"/>
-    </function>
-</category>
-
-<category name="1.3">
-    <enum name="TEXTURE0"                                 value="0x84C0"/>
-    <enum name="TEXTURE1"                                 value="0x84C1"/>
-    <enum name="TEXTURE2"                                 value="0x84C2"/>
-    <enum name="TEXTURE3"                                 value="0x84C3"/>
-    <enum name="TEXTURE4"                                 value="0x84C4"/>
-    <enum name="TEXTURE5"                                 value="0x84C5"/>
-    <enum name="TEXTURE6"                                 value="0x84C6"/>
-    <enum name="TEXTURE7"                                 value="0x84C7"/>
-    <enum name="TEXTURE8"                                 value="0x84C8"/>
-    <enum name="TEXTURE9"                                 value="0x84C9"/>
-    <enum name="TEXTURE10"                                value="0x84CA"/>
-    <enum name="TEXTURE11"                                value="0x84CB"/>
-    <enum name="TEXTURE12"                                value="0x84CC"/>
-    <enum name="TEXTURE13"                                value="0x84CD"/>
-    <enum name="TEXTURE14"                                value="0x84CE"/>
-    <enum name="TEXTURE15"                                value="0x84CF"/>
-    <enum name="TEXTURE16"                                value="0x84D0"/>
-    <enum name="TEXTURE17"                                value="0x84D1"/>
-    <enum name="TEXTURE18"                                value="0x84D2"/>
-    <enum name="TEXTURE19"                                value="0x84D3"/>
-    <enum name="TEXTURE20"                                value="0x84D4"/>
-    <enum name="TEXTURE21"                                value="0x84D5"/>
-    <enum name="TEXTURE22"                                value="0x84D6"/>
-    <enum name="TEXTURE23"                                value="0x84D7"/>
-    <enum name="TEXTURE24"                                value="0x84D8"/>
-    <enum name="TEXTURE25"                                value="0x84D9"/>
-    <enum name="TEXTURE26"                                value="0x84DA"/>
-    <enum name="TEXTURE27"                                value="0x84DB"/>
-    <enum name="TEXTURE28"                                value="0x84DC"/>
-    <enum name="TEXTURE29"                                value="0x84DD"/>
-    <enum name="TEXTURE30"                                value="0x84DE"/>
-    <enum name="TEXTURE31"                                value="0x84DF"/>
-    <enum name="ACTIVE_TEXTURE"                count="1"  value="0x84E0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIENT_ACTIVE_TEXTURE"         count="1"  value="0x84E1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_UNITS"             count="1"  value="0x84E2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TRANSPOSE_MODELVIEW_MATRIX"               value="0x84E3"/>
-    <enum name="TRANSPOSE_PROJECTION_MATRIX"              value="0x84E4"/>
-    <enum name="TRANSPOSE_TEXTURE_MATRIX"                 value="0x84E5"/>
-    <enum name="TRANSPOSE_COLOR_MATRIX"                   value="0x84E6"/>
-    <enum name="MULTISAMPLE"                   count="1"  value="0x809D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_ALPHA_TO_COVERAGE"      count="1"  value="0x809E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_ALPHA_TO_ONE"           count="1"  value="0x809F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE"               count="1"  value="0x80A0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_BUFFERS"                count="1"  value="0x80A8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLES"                       count="1"  value="0x80A9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE_VALUE"         count="1"  value="0x80AA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE_INVERT"        count="1"  value="0x80AB">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MULTISAMPLE_BIT"                          value="0x20000000"/>
-    <enum name="NORMAL_MAP"                               value="0x8511"/>
-    <enum name="REFLECTION_MAP"                           value="0x8512"/>
-    <enum name="TEXTURE_CUBE_MAP"              count="1"  value="0x8513">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_CUBE_MAP"      count="1"  value="0x8514">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X"              value="0x8515"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X"              value="0x8516"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y"              value="0x8517"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y"              value="0x8518"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z"              value="0x8519"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z"              value="0x851A"/>
-    <enum name="PROXY_TEXTURE_CUBE_MAP"                   value="0x851B"/>
-    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE"     count="1"  value="0x851C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COMPRESSED_ALPHA"                         value="0x84E9"/>
-    <enum name="COMPRESSED_LUMINANCE"                     value="0x84EA"/>
-    <enum name="COMPRESSED_LUMINANCE_ALPHA"               value="0x84EB"/>
-    <enum name="COMPRESSED_INTENSITY"                     value="0x84EC"/>
-    <enum name="COMPRESSED_RGB"                           value="0x84ED"/>
-    <enum name="COMPRESSED_RGBA"                          value="0x84EE"/>
-    <enum name="TEXTURE_COMPRESSION_HINT"      count="1"  value="0x84EF">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPRESSED_IMAGE_SIZE" count="1"  value="0x86A0">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPRESSED"            count="1"  value="0x86A1">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="NUM_COMPRESSED_TEXTURE_FORMATS" count="1" value="0x86A2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COMPRESSED_TEXTURE_FORMATS"    count="-1"  value="0x86A3">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLAMP_TO_BORDER"                          value="0x812D"/>
-    <enum name="COMBINE"                                  value="0x8570"/>
-    <enum name="COMBINE_RGB"                   count="1"  value="0x8571">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="COMBINE_ALPHA"                 count="1"  value="0x8572">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="SOURCE0_RGB"                   count="1"  value="0x8580">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="SOURCE1_RGB"                   count="1"  value="0x8581">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="SOURCE2_RGB"                   count="1"  value="0x8582">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="SOURCE0_ALPHA"                 count="1"  value="0x8588">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="SOURCE1_ALPHA"                 count="1"  value="0x8589">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="SOURCE2_ALPHA"                 count="1"  value="0x858A">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND0_RGB"                  count="1"  value="0x8590">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND1_RGB"                  count="1"  value="0x8591">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND2_RGB"                  count="1"  value="0x8592">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND0_ALPHA"                count="1"  value="0x8598">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND1_ALPHA"                count="1"  value="0x8599">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND2_ALPHA"                count="1"  value="0x859A">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="RGB_SCALE"                     count="1"  value="0x8573">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="ADD_SIGNED"                               value="0x8574"/>
-    <enum name="INTERPOLATE"                              value="0x8575"/>
-    <enum name="SUBTRACT"                                 value="0x84E7"/>
-    <enum name="CONSTANT"                                 value="0x8576"/>
-    <enum name="PRIMARY_COLOR"                            value="0x8577"/>
-    <enum name="PREVIOUS"                                 value="0x8578"/>
-    <enum name="DOT3_RGB"                                 value="0x86AE"/>
-    <enum name="DOT3_RGBA"                                value="0x86AF"/>
-
-    <function name="ActiveTexture" alias="ActiveTextureARB">
-        <param name="texture" type="GLenum"/>
-    </function>
-
-    <function name="ClientActiveTexture" alias="ClientActiveTextureARB">
-        <param name="texture" type="GLenum"/>
-    </function>
-
-    <function name="MultiTexCoord1d" alias="MultiTexCoord1dARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord1dv" alias="MultiTexCoord1dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="MultiTexCoord1f" alias="MultiTexCoord1fARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord1fv" alias="MultiTexCoord1fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="MultiTexCoord1i" alias="MultiTexCoord1iARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord1iv" alias="MultiTexCoord1ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="MultiTexCoord1s" alias="MultiTexCoord1sARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord1sv" alias="MultiTexCoord1svARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="MultiTexCoord2d" alias="MultiTexCoord2dARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord2dv" alias="MultiTexCoord2dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="MultiTexCoord2f" alias="MultiTexCoord2fARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord2fv" alias="MultiTexCoord2fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="MultiTexCoord2i" alias="MultiTexCoord2iARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord2iv" alias="MultiTexCoord2ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="MultiTexCoord2s" alias="MultiTexCoord2sARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord2sv" alias="MultiTexCoord2svARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="MultiTexCoord3d" alias="MultiTexCoord3dARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord3dv" alias="MultiTexCoord3dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="MultiTexCoord3f" alias="MultiTexCoord3fARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord3fv" alias="MultiTexCoord3fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="MultiTexCoord3i" alias="MultiTexCoord3iARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord3iv" alias="MultiTexCoord3ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="MultiTexCoord3s" alias="MultiTexCoord3sARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord3sv" alias="MultiTexCoord3svARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="MultiTexCoord4d" alias="MultiTexCoord4dARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-        <param name="q" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord4dv" alias="MultiTexCoord4dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="MultiTexCoord4f" alias="MultiTexCoord4fARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord4fv" alias="MultiTexCoord4fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="MultiTexCoord4i" alias="MultiTexCoord4iARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-        <param name="q" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord4iv" alias="MultiTexCoord4ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="MultiTexCoord4s" alias="MultiTexCoord4sARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-        <param name="q" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord4sv" alias="MultiTexCoord4svARB">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="LoadTransposeMatrixf" alias="LoadTransposeMatrixfARB">
-        <param name="m" type="const GLfloat *"/>
-    </function>
-
-    <function name="LoadTransposeMatrixd" alias="LoadTransposeMatrixdARB">
-        <param name="m" type="const GLdouble *"/>
-    </function>
-
-    <function name="MultTransposeMatrixf" alias="MultTransposeMatrixfARB">
-        <param name="m" type="const GLfloat *"/>
-    </function>
-
-    <function name="MultTransposeMatrixd" alias="MultTransposeMatrixdARB">
-        <param name="m" type="const GLdouble *"/>
-    </function>
-
-    <function name="SampleCoverage" alias="SampleCoverageARB">
-        <param name="value" type="GLclampf"/>
-        <param name="invert" type="GLboolean"/>
-    </function>
-
-    <function name="CompressedTexImage3D" alias="CompressedTexImage3DARB">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="CompressedTexImage2D" alias="CompressedTexImage2DARB">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="CompressedTexImage1D" alias="CompressedTexImage1DARB">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="CompressedTexSubImage3D" alias="CompressedTexSubImage3DARB">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="CompressedTexSubImage2D" alias="CompressedTexSubImage2DARB">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="CompressedTexSubImage1D" alias="CompressedTexSubImage1DARB">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="GetCompressedTexImage" alias="GetCompressedTexImageARB">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="img" type="GLvoid *" output="true"/>
-    </function>
-</category>
-
-<category name="1.4">
-    <enum name="BLEND_DST_RGB"                 count="1"  value="0x80C8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC_RGB"                 count="1"  value="0x80C9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_DST_ALPHA"               count="1"  value="0x80CA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_SRC_ALPHA"               count="1"  value="0x80CB">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SIZE_MIN"                count="1"  value="0x8126">
-        <size name="PointParameterfvEXT"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_SIZE_MAX"                count="1"  value="0x8127">
-        <size name="PointParameterfvEXT"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_FADE_THRESHOLD_SIZE"     count="1"  value="0x8128">
-        <size name="PointParameterfvEXT"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POINT_DISTANCE_ATTENUATION"    count="3"  value="0x8129">
-        <size name="PointParameterfvEXT"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="GENERATE_MIPMAP"               count="1"  value="0x8191">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="GENERATE_MIPMAP_HINT"                     value="0x8192"/>
-    <enum name="DEPTH_COMPONENT16"                        value="0x81A5"/>
-    <enum name="DEPTH_COMPONENT24"                        value="0x81A6"/>
-    <enum name="DEPTH_COMPONENT32"                        value="0x81A7"/>
-    <enum name="MIRRORED_REPEAT"                          value="0x8370"/>
-    <enum name="FOG_COORDINATE_SOURCE"         count="1"  value="0x8450">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORDINATE"                           value="0x8451"/>
-    <enum name="FRAGMENT_DEPTH"                           value="0x8452"/>
-    <enum name="CURRENT_FOG_COORDINATE"        count="1"  value="0x8453">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORDINATE_ARRAY_TYPE"     count="1"  value="0x8454">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORDINATE_ARRAY_STRIDE"   count="1"  value="0x8455">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORDINATE_ARRAY_POINTER"             value="0x8456"/>
-    <enum name="FOG_COORDINATE_ARRAY"          count="1"  value="0x8457">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_SUM"                                value="0x8458"/>
-    <enum name="CURRENT_SECONDARY_COLOR"       count="4"  value="0x8459">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SECONDARY_COLOR_ARRAY_SIZE"    count="1"  value="0x845A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SECONDARY_COLOR_ARRAY_TYPE"    count="1"  value="0x845B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SECONDARY_COLOR_ARRAY_STRIDE"  count="1"  value="0x845C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SECONDARY_COLOR_ARRAY_POINTER"            value="0x845D"/>
-    <enum name="SECONDARY_COLOR_ARRAY"         count="1"  value="0x845E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_LOD_BIAS"          count="1"  value="0x84FD">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_FILTER_CONTROL"                   value="0x8500"/>
-    <enum name="TEXTURE_LOD_BIAS"              count="1"  value="0x8501">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="INCR_WRAP"                                value="0x8507"/>
-    <enum name="DECR_WRAP"                                value="0x8508"/>
-    <enum name="TEXTURE_DEPTH_SIZE"            count="1"  value="0x884A">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="DEPTH_TEXTURE_MODE"            count="1"  value="0x884B">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPARE_MODE"          count="1"  value="0x884C">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPARE_FUNC"          count="1"  value="0x884D">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="COMPARE_R_TO_TEXTURE"                     value="0x884E"/>
-
-    <function name="BlendFuncSeparate" alias="BlendFuncSeparateEXT">
-        <param name="sfactorRGB" type="GLenum"/>
-        <param name="dfactorRGB" type="GLenum"/>
-        <param name="sfactorAlpha" type="GLenum"/>
-        <param name="dfactorAlpha" type="GLenum"/>
-    </function>
-
-    <function name="FogCoordf" alias="FogCoordfEXT">
-        <param name="coord" type="GLfloat"/>
-    </function>
-
-    <function name="FogCoordfv" alias="FogCoordfvEXT">
-        <param name="coord" type="const GLfloat *"/>
-    </function>
-
-    <function name="FogCoordd" alias="FogCoorddEXT">
-        <param name="coord" type="GLdouble"/>
-    </function>
-
-    <function name="FogCoorddv" alias="FogCoorddvEXT">
-        <param name="coord" type="const GLdouble *"/>
-    </function>
-
-    <function name="FogCoordPointer" alias="FogCoordPointerEXT">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-
-    <function name="MultiDrawArrays" alias="MultiDrawArraysEXT">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint *"/> <!-- Spec bug. Should be const. -->
-        <param name="count" type="GLsizei *"/> <!-- Spec bug. Should be const. -->
-        <param name="primcount" type="GLsizei"/>
-    </function>
-
-    <function name="MultiDrawElements" alias="MultiDrawElementsEXT">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="const GLsizei *"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid **"/>
-        <param name="primcount" type="GLsizei"/>
-    </function>
-
-    <function name="PointParameterf" alias="PointParameterfEXT">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-    </function>
-
-    <function name="PointParameterfv" alias="PointParameterfvEXT">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="PointParameteri" alias="PointParameteriNV">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-    </function>
-
-    <function name="PointParameteriv" alias="PointParameterivNV">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-    </function>
-
-    <function name="SecondaryColor3b" alias="SecondaryColor3bEXT">
-        <param name="red" type="GLbyte"/>
-        <param name="green" type="GLbyte"/>
-        <param name="blue" type="GLbyte"/>
-    </function>
-
-    <function name="SecondaryColor3bv" alias="SecondaryColor3bvEXT">
-        <param name="v" type="const GLbyte *"/>
-    </function>
-
-    <function name="SecondaryColor3d" alias="SecondaryColor3dEXT">
-        <param name="red" type="GLdouble"/>
-        <param name="green" type="GLdouble"/>
-        <param name="blue" type="GLdouble"/>
-    </function>
-
-    <function name="SecondaryColor3dv" alias="SecondaryColor3dvEXT">
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="SecondaryColor3f" alias="SecondaryColor3fEXT">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-    </function>
-
-    <function name="SecondaryColor3fv" alias="SecondaryColor3fvEXT">
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="SecondaryColor3i" alias="SecondaryColor3iEXT">
-        <param name="red" type="GLint"/>
-        <param name="green" type="GLint"/>
-        <param name="blue" type="GLint"/>
-    </function>
-
-    <function name="SecondaryColor3iv" alias="SecondaryColor3ivEXT">
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="SecondaryColor3s" alias="SecondaryColor3sEXT">
-        <param name="red" type="GLshort"/>
-        <param name="green" type="GLshort"/>
-        <param name="blue" type="GLshort"/>
-    </function>
-
-    <function name="SecondaryColor3sv" alias="SecondaryColor3svEXT">
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="SecondaryColor3ub" alias="SecondaryColor3ubEXT">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-    </function>
-
-    <function name="SecondaryColor3ubv" alias="SecondaryColor3ubvEXT">
-        <param name="v" type="const GLubyte *"/>
-    </function>
-
-    <function name="SecondaryColor3ui" alias="SecondaryColor3uiEXT">
-        <param name="red" type="GLuint"/>
-        <param name="green" type="GLuint"/>
-        <param name="blue" type="GLuint"/>
-    </function>
-
-    <function name="SecondaryColor3uiv" alias="SecondaryColor3uivEXT">
-        <param name="v" type="const GLuint *"/>
-    </function>
-
-    <function name="SecondaryColor3us" alias="SecondaryColor3usEXT">
-        <param name="red" type="GLushort"/>
-        <param name="green" type="GLushort"/>
-        <param name="blue" type="GLushort"/>
-    </function>
-
-    <function name="SecondaryColor3usv" alias="SecondaryColor3usvEXT">
-        <param name="v" type="const GLushort *"/>
-    </function>
-
-    <function name="SecondaryColorPointer" alias="SecondaryColorPointerEXT">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-
-    <function name="WindowPos2d" alias="WindowPos2dMESA">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="WindowPos2dv" alias="WindowPos2dvMESA">
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="WindowPos2f" alias="WindowPos2fMESA">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="WindowPos2fv" alias="WindowPos2fvMESA">
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="WindowPos2i" alias="WindowPos2iMESA">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-    </function>
-
-    <function name="WindowPos2iv" alias="WindowPos2ivMESA">
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="WindowPos2s" alias="WindowPos2sMESA">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="WindowPos2sv" alias="WindowPos2svMESA">
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="WindowPos3d" alias="WindowPos3dMESA">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="WindowPos3dv" alias="WindowPos3dvMESA">
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="WindowPos3f" alias="WindowPos3fMESA">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="WindowPos3fv" alias="WindowPos3fvMESA">
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="WindowPos3i" alias="WindowPos3iMESA">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-    </function>
-
-    <function name="WindowPos3iv" alias="WindowPos3ivMESA">
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="WindowPos3s" alias="WindowPos3sMESA">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="WindowPos3sv" alias="WindowPos3svMESA">
-        <param name="v" type="const GLshort *"/>
-    </function>
-</category>
-
-<category name="1.5">
-    <enum name="BUFFER_SIZE"                              value="0x8764"/>
-    <enum name="BUFFER_USAGE"                             value="0x8765"/>
-    <enum name="QUERY_COUNTER_BITS"                       value="0x8864"/>
-    <enum name="CURRENT_QUERY"                            value="0x8865"/>
-    <enum name="QUERY_RESULT"                             value="0x8866"/>
-    <enum name="QUERY_RESULT_AVAILABLE"                   value="0x8867"/>
-    <enum name="ARRAY_BUFFER"                             value="0x8892"/>
-    <enum name="ELEMENT_ARRAY_BUFFER"                     value="0x8893"/>
-    <enum name="ARRAY_BUFFER_BINDING"                     value="0x8894"/>
-    <enum name="ELEMENT_ARRAY_BUFFER_BINDING"             value="0x8895"/>
-    <enum name="VERTEX_ARRAY_BUFFER_BINDING"              value="0x8896"/>
-    <enum name="NORMAL_ARRAY_BUFFER_BINDING"              value="0x8897"/>
-    <enum name="COLOR_ARRAY_BUFFER_BINDING"               value="0x8898"/>
-    <enum name="INDEX_ARRAY_BUFFER_BINDING"               value="0x8899"/>
-    <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING"       value="0x889A"/>
-    <enum name="EDGE_FLAG_ARRAY_BUFFER_BINDING"           value="0x889B"/>
-    <enum name="SECONDARY_COLOR_ARRAY_BUFFER_BINDING"     value="0x889C"/>
-    <enum name="FOG_COORDINATE_ARRAY_BUFFER_BINDING"      value="0x889D"/>
-    <enum name="WEIGHT_ARRAY_BUFFER_BINDING"              value="0x889E"/>
-    <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING"       value="0x889F"/>
-    <enum name="READ_ONLY"                                value="0x88B8"/>
-    <enum name="WRITE_ONLY"                               value="0x88B9"/>
-    <enum name="READ_WRITE"                               value="0x88BA"/>
-    <enum name="BUFFER_ACCESS"                            value="0x88BB"/>
-    <enum name="BUFFER_MAPPED"                            value="0x88BC"/>
-    <enum name="BUFFER_MAP_POINTER"                       value="0x88BD"/>
-    <enum name="STREAM_DRAW"                              value="0x88E0"/>
-    <enum name="STREAM_READ"                              value="0x88E1"/>
-    <enum name="STREAM_COPY"                              value="0x88E2"/>
-    <enum name="STATIC_DRAW"                              value="0x88E4"/>
-    <enum name="STATIC_READ"                              value="0x88E5"/>
-    <enum name="STATIC_COPY"                              value="0x88E6"/>
-    <enum name="DYNAMIC_DRAW"                             value="0x88E8"/>
-    <enum name="DYNAMIC_READ"                             value="0x88E9"/>
-    <enum name="DYNAMIC_COPY"                             value="0x88EA"/>
-    <enum name="SAMPLES_PASSED"                count="1"  value="0x8914"/>
-    <enum name="FOG_COORD_SRC"                            value="0x8450">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORD"                                value="0x8451"/>
-    <enum name="CURRENT_FOG_COORD"             count="1"  value="0x8453">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORD_ARRAY_TYPE"          count="1"  value="0x8454">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORD_ARRAY_STRIDE"        count="1"  value="0x8455">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORD_ARRAY_POINTER"                  value="0x8456"/>
-    <enum name="FOG_COORD_ARRAY"               count="1"  value="0x8457">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORD_ARRAY_BUFFER_BINDING"           value="0x889D"/>
-    <enum name="SRC0_RGB"                                 value="0x8580"/>
-    <enum name="SRC1_RGB"                                 value="0x8581"/>
-    <enum name="SRC2_RGB"                                 value="0x8582"/>
-    <enum name="SRC0_ALPHA"                               value="0x8588"/>
-    <enum name="SRC1_ALPHA"                               value="0x8589"/>
-    <enum name="SRC2_ALPHA"                               value="0x858A"/>
-
-    <type name="intptr"   size="4"                  glx_name="CARD32"/>
-    <type name="sizeiptr" size="4"  unsigned="true" glx_name="CARD32"/>
-
-    <function name="BindBuffer" alias="BindBufferARB">
-        <param name="target" type="GLenum"/>
-        <param name="buffer" type="GLuint"/>
-    </function>
-
-    <function name="BufferData" alias="BufferDataARB">
-        <param name="target" type="GLenum"/>
-        <param name="size" type="GLsizeiptr"/>
-        <param name="data" type="const GLvoid *"/>
-        <param name="usage" type="GLenum"/>
-    </function>
-
-    <function name="BufferSubData" alias="BufferSubDataARB">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptr"/>
-        <param name="size" type="GLsizeiptr"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="DeleteBuffers" alias="DeleteBuffersARB">
-        <param name="n" type="GLsizei"/>
-        <param name="buffer" type="const GLuint *"/>
-    </function>
-
-    <function name="GenBuffers" alias="GenBuffersARB">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="buffer" type="GLuint *" output="true" count="n"/>
-    </function>
-
-    <function name="GetBufferParameteriv" alias="GetBufferParameterivARB">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetBufferPointerv" alias="GetBufferPointervARB">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **" output="true"/>
-    </function>
-
-    <function name="GetBufferSubData" alias="GetBufferSubDataARB">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptr"/>
-        <param name="size" type="GLsizeiptr"/>
-        <param name="data" type="GLvoid *" output="true"/>
-    </function>
-
-    <function name="IsBuffer" alias="IsBufferARB">
-        <param name="buffer" type="GLuint"/>
-        <return type="GLboolean"/>
-    </function>
-
-    <function name="MapBuffer" alias="MapBufferARB">
-        <param name="target" type="GLenum"/>
-        <param name="access" type="GLenum"/>
-        <return type="GLvoid *"/>
-    </function>
-
-    <function name="UnmapBuffer" alias="UnmapBufferARB">
-        <param name="target" type="GLenum"/>
-        <return type="GLboolean"/>
-    </function>
-
-    <function name="GenQueries" alias="GenQueriesARB">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="ids" type="GLuint *" output="true" count="n"/>
-    </function>
-
-    <function name="DeleteQueries" alias="DeleteQueriesARB">
-        <param name="n" type="GLsizei"/>
-        <param name="ids" type="const GLuint *"/>
-    </function>
-
-    <function name="IsQuery" alias="IsQueryARB">
-        <param name="id" type="GLuint"/>
-        <return type="GLboolean"/>
-    </function>
-
-    <function name="BeginQuery" alias="BeginQueryARB">
-        <param name="target" type="GLenum"/>
-        <param name="id" type="GLuint"/>
-    </function>
-
-    <function name="EndQuery" alias="EndQueryARB">
-        <param name="target" type="GLenum"/>
-    </function>
-
-    <function name="GetQueryiv" alias="GetQueryivARB">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetQueryObjectiv" alias="GetQueryObjectivARB">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetQueryObjectuiv" alias="GetQueryObjectuivARB">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLuint *" output="true" variable_param="pname"/>
-    </function>
-</category>
-
-
-<category name="2.0">
-    <!-- XXX some of the enums and functions probably need additional -->
-    <!-- flags/attributes. -->
-
-    <type name="char"   size="1" glx_name="CARD8"/>
-
-    <enum name="BLEND_EQUATION_RGB"            value="0x8009"/>
-    <enum name="VERTEX_ATTRIB_ARRAY_ENABLED"      value="0x8622"/>
-    <enum name="VERTEX_ATTRIB_ARRAY_SIZE"         value="0x8623"/>
-    <enum name="VERTEX_ATTRIB_ARRAY_STRIDE"       value="0x8624"/>
-    <enum name="VERTEX_ATTRIB_ARRAY_TYPE"         value="0x8625"/>
-    <enum name="CURRENT_VERTEX_ATTRIB"            value="0x8626"/>
-    <enum name="VERTEX_PROGRAM_POINT_SIZE"        value="0x8642"/>
-    <enum name="VERTEX_PROGRAM_TWO_SIDE"          value="0x8643"/>
-    <enum name="VERTEX_ATTRIB_ARRAY_POINTER"      value="0x8645"/>
-    <enum name="STENCIL_BACK_FUNC"                value="0x8800"/>
-    <enum name="STENCIL_BACK_FAIL"                value="0x8801"/>
-    <enum name="STENCIL_BACK_PASS_DEPTH_FAIL"     value="0x8802"/>
-    <enum name="STENCIL_BACK_PASS_DEPTH_PASS"     value="0x8803"/>
-    <enum name="MAX_DRAW_BUFFERS"                 value="0x8824"/>
-    <enum name="DRAW_BUFFER0"                     value="0x8825"/>
-    <enum name="DRAW_BUFFER1"                     value="0x8826"/>
-    <enum name="DRAW_BUFFER2"                     value="0x8827"/>
-    <enum name="DRAW_BUFFER3"                     value="0x8828"/>
-    <enum name="DRAW_BUFFER4"                     value="0x8829"/>
-    <enum name="DRAW_BUFFER5"                     value="0x882A"/>
-    <enum name="DRAW_BUFFER6"                     value="0x882B"/>
-    <enum name="DRAW_BUFFER7"                     value="0x882C"/>
-    <enum name="DRAW_BUFFER8"                     value="0x882D"/>
-    <enum name="DRAW_BUFFER9"                     value="0x882E"/>
-    <enum name="DRAW_BUFFER10"                    value="0x882F"/>
-    <enum name="DRAW_BUFFER11"                    value="0x8830"/>
-    <enum name="DRAW_BUFFER12"                    value="0x8831"/>
-    <enum name="DRAW_BUFFER13"                    value="0x8832"/>
-    <enum name="DRAW_BUFFER14"                    value="0x8833"/>
-    <enum name="DRAW_BUFFER15"                    value="0x8834"/>
-    <enum name="BLEND_EQUATION_ALPHA"             value="0x883D"/>
-    <enum name="POINT_SPRITE"                     value="0x8861"/>
-    <enum name="COORD_REPLACE"                    value="0x8862"/>
-    <enum name="MAX_VERTEX_ATTRIBS"               value="0x8869"/>
-    <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED"   value="0x886A"/>
-    <enum name="MAX_TEXTURE_COORDS"               value="0x8871"/>
-    <enum name="MAX_TEXTURE_IMAGE_UNITS"          value="0x8872"/>
-    <enum name="FRAGMENT_SHADER"                  value="0x8B30"/>
-    <enum name="VERTEX_SHADER"                    value="0x8B31"/>
-    <enum name="MAX_FRAGMENT_UNIFORM_COMPONENTS"  value="0x8B49"/>
-    <enum name="MAX_VERTEX_UNIFORM_COMPONENTS"    value="0x8B4A"/>
-    <enum name="MAX_VARYING_FLOATS"               value="0x8B4B"/>
-    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS"   value="0x8B4C"/>
-    <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS" value="0x8B4D"/>
-    <enum name="SHADER_TYPE"                      value="0x8B4F"/>
-    <enum name="FLOAT_VEC2"                       value="0x8B50"/>
-    <enum name="FLOAT_VEC3"                       value="0x8B51"/>
-    <enum name="FLOAT_VEC4"                       value="0x8B52"/>
-    <enum name="INT_VEC2"                         value="0x8B53"/>
-    <enum name="INT_VEC3"                         value="0x8B54"/>
-    <enum name="INT_VEC4"                         value="0x8B55"/>
-    <enum name="BOOL"                             value="0x8B56"/>
-    <enum name="BOOL_VEC2"                        value="0x8B57"/>
-    <enum name="BOOL_VEC3"                        value="0x8B58"/>
-    <enum name="BOOL_VEC4"                        value="0x8B59"/>
-    <enum name="FLOAT_MAT2"                       value="0x8B5A"/>
-    <enum name="FLOAT_MAT3"                       value="0x8B5B"/>
-    <enum name="FLOAT_MAT4"                       value="0x8B5C"/>
-    <enum name="SAMPLER_1D"                       value="0x8B5D"/>
-    <enum name="SAMPLER_2D"                       value="0x8B5E"/>
-    <enum name="SAMPLER_3D"                       value="0x8B5F"/>
-    <enum name="SAMPLER_CUBE"                     value="0x8B60"/>
-    <enum name="SAMPLER_1D_SHADOW"                value="0x8B61"/>
-    <enum name="SAMPLER_2D_SHADOW"                value="0x8B62"/>
-    <enum name="DELETE_STATUS"                    value="0x8B80"/>
-    <enum name="COMPILE_STATUS"                   value="0x8B81"/>
-    <enum name="LINK_STATUS"                      value="0x8B82"/>
-    <enum name="VALIDATE_STATUS"                  value="0x8B83"/>
-    <enum name="INFO_LOG_LENGTH"                  value="0x8B84"/>
-    <enum name="ATTACHED_SHADERS"                 value="0x8B85"/>
-    <enum name="ACTIVE_UNIFORMS"                  value="0x8B86"/>
-    <enum name="ACTIVE_UNIFORM_MAX_LENGTH"        value="0x8B87"/>
-    <enum name="SHADER_SOURCE_LENGTH"             value="0x8B88"/>
-    <enum name="ACTIVE_ATTRIBUTES"                value="0x8B89"/>
-    <enum name="ACTIVE_ATTRIBUTE_MAX_LENGTH"      value="0x8B8A"/>
-    <enum name="FRAGMENT_SHADER_DERIVATIVE_HINT"  value="0x8B8B"/>
-    <enum name="SHADING_LANGUAGE_VERSION"         value="0x8B8C"/>
-    <enum name="CURRENT_PROGRAM"                  value="0x8B8D"/>
-    <enum name="POINT_SPRITE_COORD_ORIGIN" count="1"  value="0x8CA0">
-        <size name="PointParameterfvEXT"/>
-        <size name="PointParameterivNV"/>
-    </enum>
-    <enum name="LOWER_LEFT"                       value="0x8CA1"/>
-    <enum name="UPPER_LEFT"                       value="0x8CA2"/>
-    <enum name="STENCIL_BACK_REF"                 value="0x8CA3"/>
-    <enum name="STENCIL_BACK_VALUE_MASK"          value="0x8CA4"/>
-    <enum name="STENCIL_BACK_WRITEMASK"           value="0x8CA5"/>
-
-    <function name="BlendEquationSeparate" alias="BlendEquationSeparateEXT">
-        <param name="modeRGB" type="GLenum"/>
-        <param name="modeA" type="GLenum"/>
-    </function>
-
-    <function name="DrawBuffers" alias="DrawBuffersARB">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="bufs" type="const GLenum *" count="n"/>
-    </function>
-
-    <function name="StencilFuncSeparate" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLint"/>
-        <param name="mask" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="StencilOpSeparate" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="sfail" type="GLenum"/>
-        <param name="zfail" type="GLenum"/>
-        <param name="zpass" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="StencilMaskSeparate" offset="assign">
-        <param name="face" type="GLenum"/>
-        <param name="mask" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="AttachShader" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="shader" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="BindAttribLocation" alias="BindAttribLocationARB">
-        <param name="program" type="GLuint"/>
-        <param name="index" type="GLuint"/>
-        <param name="name" type="const GLchar *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CompileShader" alias="CompileShaderARB">
-        <param name="shader" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CreateProgram" offset="assign">
-        <return type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CreateShader" offset="assign">
-        <param name="type" type="GLenum"/>
-        <return type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DeleteProgram" offset="assign">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DeleteShader" offset="assign">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DetachShader" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="shader" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DisableVertexAttribArray" alias="DisableVertexAttribArrayARB">
-        <param name="index" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="EnableVertexAttribArray" alias="EnableVertexAttribArrayARB">
-        <param name="index" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetActiveAttrib" alias="GetActiveAttribARB">
-        <param name="program" type="GLuint"/>
-        <param name="index" type="GLuint"/>
-        <param name="bufSize" type="GLsizei "/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="size" type="GLint *" output="true"/>
-        <param name="type" type="GLenum *" output="true"/>
-        <param name="name" type="GLchar *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetActiveUniform" alias="GetActiveUniformARB">
-        <param name="program" type="GLuint"/>
-        <param name="index" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="size" type="GLint *" output="true"/>
-        <param name="type" type="GLenum *" output="true"/>
-        <param name="name" type="GLchar *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetAttachedShaders" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="maxCount" type="GLsizei"/>
-        <param name="count" type="GLsizei *" output="true"/>
-        <param name="obj" type="GLuint *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetAttribLocation" alias="GetAttribLocationARB">
-        <param name="program" type="GLuint"/>
-        <param name="name" type="const GLchar *"/>
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetProgramiv" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetProgramInfoLog" offset="assign">
-        <param name="program" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *"/>
-        <param name="infoLog" type="GLchar *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetShaderiv" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetShaderInfoLog" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *"/>
-        <param name="infoLog" type="GLchar *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetShaderSource" alias="GetShaderSourceARB">
-        <param name="shader" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="source" type="GLchar *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformLocation" alias="GetUniformLocationARB">
-        <param name="program" type="GLuint"/>
-        <param name="name" type="const GLchar *"/>
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformfv" alias="GetUniformfvARB">
-        <param name="program" type="GLuint"/>
-        <param name="location" type="GLint"/>
-        <param name="params" type="GLfloat *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformiv" alias="GetUniformivARB">
-        <param name="program" type="GLuint"/>
-        <param name="location" type="GLint"/>
-        <param name="params" type="GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetVertexAttribdv" alias="GetVertexAttribdvARB">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetVertexAttribfv" alias="GetVertexAttribfvARB">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetVertexAttribiv" alias="GetVertexAttribivARB">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetVertexAttribPointerv" alias="GetVertexAttribPointervNV">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="pointer" type="GLvoid **" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="IsProgram" offset="assign">
-        <param name="program" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="IsShader" offset="assign">
-        <param name="shader" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="LinkProgram" alias="LinkProgramARB">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ShaderSource" alias="ShaderSourceARB">
-        <param name="shader" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="string" type="const GLchar **"/>
-        <param name="length" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UseProgram" alias="UseProgramObjectARB">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1f" alias="Uniform1fARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform2f" alias="Uniform2fARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform3f" alias="Uniform3fARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform4f" alias="Uniform4fARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <param name="v3" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1i" alias="Uniform1iARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform2i" alias="Uniform2iARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform3i" alias="Uniform3iARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <param name="v2" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform4i" alias="Uniform4iARB">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <param name="v2" type="GLint"/>
-        <param name="v3" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1fv" alias="Uniform1fvARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform2fv" alias="Uniform2fvARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform3fv" alias="Uniform3fvARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform4fv" alias="Uniform4fvARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1iv" alias="Uniform1ivARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform2iv" alias="Uniform2ivARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform3iv" alias="Uniform3ivARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="Uniform4iv" alias="Uniform4ivARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UniformMatrix2fv" alias="UniformMatrix2fvARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="UniformMatrix3fv" alias="UniformMatrix3fvARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="UniformMatrix4fv" alias="UniformMatrix4fvARB">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ValidateProgram" alias="ValidateProgramARB">
-        <param name="program" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="VertexAttrib1d" alias="VertexAttrib1dARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-    </function>
-    <function name="VertexAttrib1dv" alias="VertexAttrib1dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-    <function name="VertexAttrib1f" alias="VertexAttrib1fARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-    </function>
-    <function name="VertexAttrib1fv" alias="VertexAttrib1fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-    <function name="VertexAttrib1s" alias="VertexAttrib1sARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-    </function>
-    <function name="VertexAttrib1sv" alias="VertexAttrib1svARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="VertexAttrib2d" alias="VertexAttrib2dARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-    <function name="VertexAttrib2dv" alias="VertexAttrib2dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-    <function name="VertexAttrib2f" alias="VertexAttrib2fARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-    <function name="VertexAttrib2fv" alias="VertexAttrib2fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-    <function name="VertexAttrib2s" alias="VertexAttrib2sARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-    <function name="VertexAttrib2sv" alias="VertexAttrib2svARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="VertexAttrib3d" alias="VertexAttrib3dARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-    <function name="VertexAttrib3dv" alias="VertexAttrib3dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-    <function name="VertexAttrib3f" alias="VertexAttrib3fARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-    <function name="VertexAttrib3fv" alias="VertexAttrib3fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-    <function name="VertexAttrib3s" alias="VertexAttrib3sARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-    <function name="VertexAttrib3sv" alias="VertexAttrib3svARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="VertexAttrib4Nbv" alias="VertexAttrib4NbvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLbyte *"/>
-    </function>
-    <function name="VertexAttrib4Niv" alias="VertexAttrib4NivARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLint *"/>
-    </function>
-    <function name="VertexAttrib4Nsv" alias="VertexAttrib4NsvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-    <function name="VertexAttrib4Nub" alias="VertexAttrib4NubARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLubyte"/>
-        <param name="y" type="GLubyte"/>
-        <param name="z" type="GLubyte"/>
-        <param name="w" type="GLubyte"/>
-    </function>
-    <function name="VertexAttrib4Nubv" alias="VertexAttrib4NubvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLubyte *"/>
-    </function>
-    <function name="VertexAttrib4Nuiv" alias="VertexAttrib4NuivARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLuint *"/>
-    </function>
-    <function name="VertexAttrib4Nusv" alias="VertexAttrib4NusvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLushort *"/>
-    </function>
-    <function name="VertexAttrib4bv" alias="VertexAttrib4bvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLbyte *" count="4"/>
-    </function>
-    <function name="VertexAttrib4d" alias="VertexAttrib4dARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-    <function name="VertexAttrib4dv" alias="VertexAttrib4dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *"/>
-    </function>
-    <function name="VertexAttrib4f" alias="VertexAttrib4fARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-    <function name="VertexAttrib4fv" alias="VertexAttrib4fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-    <function name="VertexAttrib4iv" alias="VertexAttrib4ivARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLint *" count="4"/>
-    </function>
-    <function name="VertexAttrib4s" alias="VertexAttrib4sARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-    </function>
-    <function name="VertexAttrib4sv" alias="VertexAttrib4svARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *"/>
-    </function>
-    <function name="VertexAttrib4ubv" alias="VertexAttrib4ubvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLubyte *" count="4"/>
-    </function>
-    <function name="VertexAttrib4uiv" alias="VertexAttrib4uivARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLuint *" count="4"/>
-    </function>
-    <function name="VertexAttrib4usv" alias="VertexAttrib4usvARB">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLushort *" count="4"/>
-    </function>
-
-    <function name="VertexAttribPointer" alias="VertexAttribPointerARB">
-        <param name="index" type="GLuint"/>
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="normalized" type="GLboolean"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-
-</category>
-
-
-<category name="2.1">
-    <!-- XXX some of the enums and functions probably need additional -->
-    <!-- flags/attributes. -->
-
-    <enum name="CURRENT_RASTER_SECONDARY_COLOR" value="0x845F"/>
-    <enum name="PIXEL_PACK_BUFFER"              value="0x88EB"/>
-    <enum name="PIXEL_UNPACK_BUFFER"            value="0x88EC"/>
-    <enum name="PIXEL_PACK_BUFFER_BINDING"      value="0x88ED"/>
-    <enum name="PIXEL_UNPACK_BUFFER_BINDING"    value="0x88EF"/>
-    <enum name="FLOAT_MAT2x3"                   value="0x8B65"/>
-    <enum name="FLOAT_MAT2x4"                   value="0x8B66"/>
-    <enum name="FLOAT_MAT3x2"                   value="0x8B67"/>
-    <enum name="FLOAT_MAT3x4"                   value="0x8B68"/>
-    <enum name="FLOAT_MAT4x2"                   value="0x8B69"/>
-    <enum name="FLOAT_MAT4x3"                   value="0x8B6A"/>
-    <enum name="SRGB"                           value="0x8C40"/>
-    <enum name="SRGB8"                          value="0x8C41"/>
-    <enum name="SRGB_ALPHA"                     value="0x8C42"/>
-    <enum name="SRGB8_ALPHA8"                   value="0x8C43"/>
-    <enum name="SLUMINANCE_ALPHA"               value="0x8C44"/>
-    <enum name="SLUMINANCE8_ALPHA8"             value="0x8C45"/>
-    <enum name="SLUMINANCE"                     value="0x8C46"/>
-    <enum name="SLUMINANCE8"                    value="0x8C47"/>
-    <enum name="COMPRESSED_SRGB"                value="0x8C48"/>
-    <enum name="COMPRESSED_SRGB_ALPHA"          value="0x8C49"/>
-    <enum name="COMPRESSED_SLUMINANCE"          value="0x8C4A"/>
-    <enum name="COMPRESSED_SLUMINANCE_ALPHA"    value="0x8C4B"/>
-
-    <function name="UniformMatrix2x3fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="UniformMatrix3x2fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="UniformMatrix2x4fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="UniformMatrix4x2fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="UniformMatrix3x4fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="UniformMatrix4x3fv" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-</category>
-
-
-<!-- ARB extensions sorted by extension number. -->
-
-<category name="GL_ARB_multitexture" number="1">
-    <enum name="TEXTURE0_ARB"                             value="0x84C0"/>
-    <enum name="TEXTURE1_ARB"                             value="0x84C1"/>
-    <enum name="TEXTURE2_ARB"                             value="0x84C2"/>
-    <enum name="TEXTURE3_ARB"                             value="0x84C3"/>
-    <enum name="TEXTURE4_ARB"                             value="0x84C4"/>
-    <enum name="TEXTURE5_ARB"                             value="0x84C5"/>
-    <enum name="TEXTURE6_ARB"                             value="0x84C6"/>
-    <enum name="TEXTURE7_ARB"                             value="0x84C7"/>
-    <enum name="TEXTURE8_ARB"                             value="0x84C8"/>
-    <enum name="TEXTURE9_ARB"                             value="0x84C9"/>
-    <enum name="TEXTURE10_ARB"                            value="0x84CA"/>
-    <enum name="TEXTURE11_ARB"                            value="0x84CB"/>
-    <enum name="TEXTURE12_ARB"                            value="0x84CC"/>
-    <enum name="TEXTURE13_ARB"                            value="0x84CD"/>
-    <enum name="TEXTURE14_ARB"                            value="0x84CE"/>
-    <enum name="TEXTURE15_ARB"                            value="0x84CF"/>
-    <enum name="TEXTURE16_ARB"                            value="0x84D0"/>
-    <enum name="TEXTURE17_ARB"                            value="0x84D1"/>
-    <enum name="TEXTURE18_ARB"                            value="0x84D2"/>
-    <enum name="TEXTURE19_ARB"                            value="0x84D3"/>
-    <enum name="TEXTURE20_ARB"                            value="0x84D4"/>
-    <enum name="TEXTURE21_ARB"                            value="0x84D5"/>
-    <enum name="TEXTURE22_ARB"                            value="0x84D6"/>
-    <enum name="TEXTURE23_ARB"                            value="0x84D7"/>
-    <enum name="TEXTURE24_ARB"                            value="0x84D8"/>
-    <enum name="TEXTURE25_ARB"                            value="0x84D9"/>
-    <enum name="TEXTURE26_ARB"                            value="0x84DA"/>
-    <enum name="TEXTURE27_ARB"                            value="0x84DB"/>
-    <enum name="TEXTURE28_ARB"                            value="0x84DC"/>
-    <enum name="TEXTURE29_ARB"                            value="0x84DD"/>
-    <enum name="TEXTURE30_ARB"                            value="0x84DE"/>
-    <enum name="TEXTURE31_ARB"                            value="0x84DF"/>
-    <enum name="ACTIVE_TEXTURE_ARB"            count="1"  value="0x84E0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CLIENT_ACTIVE_TEXTURE_ARB"     count="1"  value="0x84E1">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_UNITS_ARB"         count="1"  value="0x84E2">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="ActiveTextureARB" offset="374">
-        <param name="texture" type="GLenum"/>
-        <glx rop="197"/>
-    </function>
-
-    <function name="ClientActiveTextureARB" offset="375">
-        <param name="texture" type="GLenum"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultiTexCoord1dARB" offset="376" vectorequiv="MultiTexCoord1dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord1dvARB" offset="377">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="1"/>
-        <glx rop="198"/>
-    </function>
-
-    <function name="MultiTexCoord1fARB" offset="378" vectorequiv="MultiTexCoord1fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord1fvARB" offset="379">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="1"/>
-        <glx rop="199"/>
-    </function>
-
-    <function name="MultiTexCoord1iARB" offset="380" vectorequiv="MultiTexCoord1ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord1ivARB" offset="381">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="1"/>
-        <glx rop="200"/>
-    </function>
-
-    <function name="MultiTexCoord1sARB" offset="382" vectorequiv="MultiTexCoord1svARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord1svARB" offset="383">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="1"/>
-        <glx rop="201"/>
-    </function>
-
-    <function name="MultiTexCoord2dARB" offset="384" vectorequiv="MultiTexCoord2dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord2dvARB" offset="385">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="202"/>
-    </function>
-
-    <function name="MultiTexCoord2fARB" offset="386" vectorequiv="MultiTexCoord2fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord2fvARB" offset="387">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="203"/>
-    </function>
-
-    <function name="MultiTexCoord2iARB" offset="388" vectorequiv="MultiTexCoord2ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord2ivARB" offset="389">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="2"/>
-        <glx rop="204"/>
-    </function>
-
-    <function name="MultiTexCoord2sARB" offset="390" vectorequiv="MultiTexCoord2svARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord2svARB" offset="391">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="205"/>
-    </function>
-
-    <function name="MultiTexCoord3dARB" offset="392" vectorequiv="MultiTexCoord3dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord3dvARB" offset="393">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="206"/>
-    </function>
-
-    <function name="MultiTexCoord3fARB" offset="394" vectorequiv="MultiTexCoord3fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord3fvARB" offset="395">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="207"/>
-    </function>
-
-    <function name="MultiTexCoord3iARB" offset="396" vectorequiv="MultiTexCoord3ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord3ivARB" offset="397">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="208"/>
-    </function>
-
-    <function name="MultiTexCoord3sARB" offset="398" vectorequiv="MultiTexCoord3svARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord3svARB" offset="399">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="209"/>
-    </function>
-
-    <function name="MultiTexCoord4dARB" offset="400" vectorequiv="MultiTexCoord4dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLdouble"/>
-        <param name="t" type="GLdouble"/>
-        <param name="r" type="GLdouble"/>
-        <param name="q" type="GLdouble"/>
-    </function>
-
-    <function name="MultiTexCoord4dvARB" offset="401">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="210"/>
-    </function>
-
-    <function name="MultiTexCoord4fARB" offset="402" vectorequiv="MultiTexCoord4fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-    </function>
-
-    <function name="MultiTexCoord4fvARB" offset="403">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="211"/>
-    </function>
-
-    <function name="MultiTexCoord4iARB" offset="404" vectorequiv="MultiTexCoord4ivARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLint"/>
-        <param name="t" type="GLint"/>
-        <param name="r" type="GLint"/>
-        <param name="q" type="GLint"/>
-    </function>
-
-    <function name="MultiTexCoord4ivARB" offset="405">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="212"/>
-    </function>
-
-    <function name="MultiTexCoord4sARB" offset="406" vectorequiv="MultiTexCoord4svARB">
-        <param name="target" type="GLenum"/>
-        <param name="s" type="GLshort"/>
-        <param name="t" type="GLshort"/>
-        <param name="r" type="GLshort"/>
-        <param name="q" type="GLshort"/>
-    </function>
-
-    <function name="MultiTexCoord4svARB" offset="407">
-        <param name="target" type="GLenum"/>
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="213"/>
-    </function>
-</category>
-
-<!-- ARB extension number 2 is a GLX extension. -->
-
-<category name="GL_ARB_transpose_matrix" number="3">
-    <enum name="TRANSPOSE_MODELVIEW_MATRIX_ARB"           value="0x84E3"/>
-    <enum name="TRANSPOSE_PROJECTION_MATRIX_ARB"          value="0x84E4"/>
-    <enum name="TRANSPOSE_TEXTURE_MATRIX_ARB"             value="0x84E5"/>
-    <enum name="TRANSPOSE_COLOR_MATRIX_ARB"               value="0x84E6"/>
-
-    <function name="LoadTransposeMatrixfARB" offset="assign">
-        <param name="m" type="const GLfloat *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="LoadTransposeMatrixdARB" offset="assign">
-        <param name="m" type="const GLdouble *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultTransposeMatrixfARB" offset="assign">
-        <param name="m" type="const GLfloat *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultTransposeMatrixdARB" offset="assign">
-        <param name="m" type="const GLdouble *"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<!-- ARB extension number 4 is a WGL extension. -->
-
-<category name="GL_ARB_multisample" number="5">
-    <enum name="MULTISAMPLE_ARB"               count="1"  value="0x809D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_ALPHA_TO_COVERAGE_ARB"  count="1"  value="0x809E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_ALPHA_TO_ONE_ARB"       count="1"  value="0x809F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE_ARB"           count="1"  value="0x80A0">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_BUFFERS_ARB"            count="1"  value="0x80A8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLES_ARB"                   count="1"  value="0x80A9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE_VALUE_ARB"     count="1"  value="0x80AA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SAMPLE_COVERAGE_INVERT_ARB"    count="1"  value="0x80AB">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MULTISAMPLE_BIT_ARB"                      value="0x20000000"/>
-
-    <function name="SampleCoverageARB" offset="assign">
-        <param name="value" type="GLclampf"/>
-        <param name="invert" type="GLboolean"/>
-        <glx rop="229"/>
-    </function>
-</category>
-
-<category name="GL_ARB_texture_env_add" number="6">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_ARB_texture_cube_map" number="7">
-    <enum name="NORMAL_MAP_ARB"                           value="0x8511"/>
-    <enum name="REFLECTION_MAP_ARB"                       value="0x8512"/>
-    <enum name="TEXTURE_CUBE_MAP_ARB"          count="1"  value="0x8513">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_CUBE_MAP_ARB"  count="1"  value="0x8514">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_X_ARB"          value="0x8515"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_X_ARB"          value="0x8516"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Y_ARB"          value="0x8517"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB"          value="0x8518"/>
-    <enum name="TEXTURE_CUBE_MAP_POSITIVE_Z_ARB"          value="0x8519"/>
-    <enum name="TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB"          value="0x851A"/>
-    <enum name="PROXY_TEXTURE_CUBE_MAP_ARB"               value="0x851B"/>
-    <enum name="MAX_CUBE_MAP_TEXTURE_SIZE_ARB" count="1"  value="0x851C">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<!-- ARB extension number 8 is a WGL extension. -->
-<!-- ARB extension number 9 is a WGL extension. -->
-<!-- ARB extension number 10 is a WGL extension. -->
-<!-- ARB extension number 11 is a WGL extension. -->
-
-<category name="GL_ARB_texture_compression" number="12">
-    <enum name="COMPRESSED_ALPHA_ARB"                     value="0x84E9"/>
-    <enum name="COMPRESSED_LUMINANCE_ARB"                 value="0x84EA"/>
-    <enum name="COMPRESSED_LUMINANCE_ALPHA_ARB"           value="0x84EB"/>
-    <enum name="COMPRESSED_INTENSITY_ARB"                 value="0x84EC"/>
-    <enum name="COMPRESSED_RGB_ARB"                       value="0x84ED"/>
-    <enum name="COMPRESSED_RGBA_ARB"                      value="0x84EE"/>
-    <enum name="TEXTURE_COMPRESSION_HINT_ARB"  count="1"  value="0x84EF">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPRESSED_IMAGE_SIZE_ARB" count="1" value="0x86A0">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPRESSED_ARB"        count="1"  value="0x86A1">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="NUM_COMPRESSED_TEXTURE_FORMATS_ARB" count="1" value="0x86A2">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPRESSED_FORMATS_ARB"           value="0x86A3"/>
-
-    <function name="CompressedTexImage3DARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="216" handcode="client"/>
-    </function>
-
-    <function name="CompressedTexImage2DARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="215" handcode="client"/>
-    </function>
-
-    <function name="CompressedTexImage1DARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="214" handcode="client"/>
-    </function>
-
-    <function name="CompressedTexSubImage3DARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="219" handcode="client"/>
-    </function>
-
-    <function name="CompressedTexSubImage2DARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="218" handcode="client"/>
-    </function>
-
-    <function name="CompressedTexSubImage1DARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="imageSize" type="GLsizei" counter="true"/>
-        <param name="data" type="const GLvoid *" count="imageSize"/>
-        <glx rop="217" handcode="client"/>
-    </function>
-
-    <function name="GetCompressedTexImageARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="img" type="GLvoid *" output="true"/>
-
-        <!-- This has to be hand coded because the image size is in the
-             "wrong" place.  Technically, this should be a
-             'always_array="true"' case.  The size field in the reply would
-             be at offset 12.  However, the size is actually at offset 16.
-             This is where the 'width' is in a GetTexImage reply. -->
-        <glx sop="160" handcode="true"/>
-    </function>
-</category>
-
-<category name="GL_ARB_texture_border_clamp" number="13">
-    <enum name="CLAMP_TO_BORDER_ARB"                      value="0x812D"/>
-</category>
-
-<category name="GL_ARB_point_parameters" number="14">
-    <enum name="POINT_SIZE_MIN_ARB"            count="1"  value="0x8126">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_SIZE_MAX_ARB"            count="1"  value="0x8127">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_FADE_THRESHOLD_SIZE_ARB" count="1"  value="0x8128">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_DISTANCE_ATTENUATION_ARB" count="3" value="0x8129">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-
-    <function name="PointParameterfARB" alias="PointParameterfEXT">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="2065"/>
-    </function>
-
-    <function name="PointParameterfvARB" alias="PointParameterfvEXT">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="2066"/>
-    </function>
-</category>
-
-<category name="GL_ARB_vertex_blend" number="15">
-    <enum name="MAX_VERTEX_UNITS_ARB"          count="1"  value="0x86A4">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACTIVE_VERTEX_UNITS_ARB"       count="1"  value="0x86A5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="WEIGHT_SUM_UNITY_ARB"          count="1"  value="0x86A6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_BLEND_ARB"              count="1"  value="0x86A7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_WEIGHT_ARB"            count="1"  value="0x86A8">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="WEIGHT_ARRAY_TYPE_ARB"         count="1"  value="0x86A9">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="WEIGHT_ARRAY_STRIDE_ARB"       count="1"  value="0x86AA">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="WEIGHT_ARRAY_SIZE_ARB"         count="1"  value="0x86AB">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="WEIGHT_ARRAY_POINTER_ARB"                 value="0x86AC"/>
-    <enum name="WEIGHT_ARRAY_ARB"              count="1"  value="0x86AD">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW0_ARB"                count="16" value="0x1700">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW1_ARB"                count="16" value="0x850A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW2_ARB"                count="16" value="0x8722">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW3_ARB"                count="16" value="0x8723">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW4_ARB"                count="16" value="0x8724">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW5_ARB"                count="16" value="0x8725">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW6_ARB"                count="16" value="0x8726">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW7_ARB"                count="16" value="0x8727">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW8_ARB"                count="16" value="0x8728">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW9_ARB"                count="16" value="0x8729">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW10_ARB"               count="16" value="0x872A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW11_ARB"               count="16" value="0x872B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW12_ARB"               count="16" value="0x872C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW13_ARB"               count="16" value="0x872D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW14_ARB"               count="16" value="0x872E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW15_ARB"               count="16" value="0x872F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW16_ARB"               count="16" value="0x8730">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW17_ARB"               count="16" value="0x8731">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW18_ARB"               count="16" value="0x8732">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW19_ARB"               count="16" value="0x8733">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW20_ARB"               count="16" value="0x8734">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW21_ARB"               count="16" value="0x8735">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW22_ARB"               count="16" value="0x8736">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW23_ARB"               count="16" value="0x8737">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW24_ARB"               count="16" value="0x8738">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW25_ARB"               count="16" value="0x8739">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW26_ARB"               count="16" value="0x873A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW27_ARB"               count="16" value="0x873B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW28_ARB"               count="16" value="0x873C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW29_ARB"               count="16" value="0x873D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW30_ARB"               count="16" value="0x873E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MODELVIEW31_ARB"               count="16" value="0x873F">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="WeightbvARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLbyte *"/>
-    </function>
-
-    <function name="WeightsvARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLshort *"/>
-    </function>
-
-    <function name="WeightivARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLint *"/>
-    </function>
-
-    <function name="WeightfvARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLfloat *"/>
-    </function>
-
-    <function name="WeightdvARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLdouble *"/>
-    </function>
-
-    <function name="WeightubvARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLubyte *"/>
-    </function>
-
-    <function name="WeightusvARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLushort *"/>
-    </function>
-
-    <function name="WeightuivARB">
-        <param name="size" type="GLint"/>
-        <param name="weights" type="const GLuint *"/>
-    </function>
-
-    <function name="WeightPointerARB">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="VertexBlendARB">
-        <param name="count" type="GLint"/>
-    </function>
-</category>
-
-<category name="GL_ARB_matrix_palette" number="16">
-    <enum name="MATRIX_PALETTE_ARB"            count="1"  value="0x8840">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_MATRIX_PALETTE_STACK_DEPTH_ARB" count="1" value="0x8841">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_PALETTE_MATRICES_ARB"      count="1"  value="0x8842">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_PALETTE_MATRIX_ARB"    count="1"  value="0x8843">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX_INDEX_ARRAY_ARB"        count="1"  value="0x8844">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_MATRIX_INDEX_ARB"      count="1"  value="0x8845">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX_INDEX_ARRAY_SIZE_ARB"   count="1"  value="0x8846">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX_INDEX_ARRAY_TYPE_ARB"   count="1"  value="0x8847">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX_INDEX_ARRAY_STRIDE_ARB" count="1"  value="0x8848">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX_INDEX_ARRAY_POINTER_ARB"           value="0x8849"/>
-
-    <function name="CurrentPaletteMatrixARB">
-        <param name="index" type="GLint"/>
-        <glx ignore="true" rop="4329"/>
-    </function>
-
-    <function name="MatrixIndexubvARB">
-        <param name="size" type="GLint" counter="true"/>
-        <param name="indices" type="const GLubyte *" count="size"/>
-        <glx ignore="true" rop="4326"/>
-    </function>
-
-    <function name="MatrixIndexusvARB">
-        <param name="size" type="GLint" counter="true"/>
-        <param name="indices" type="const GLushort *" count="size"/>
-        <glx ignore="true" rop="4327"/>
-    </function>
-
-    <function name="MatrixIndexuivARB">
-        <param name="size" type="GLint" counter="true"/>
-        <param name="indices" type="const GLuint *" count="size"/>
-        <glx ignore="true" rop="4328"/>
-    </function>
-
-    <function name="MatrixIndexPointerARB">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<category name="GL_ARB_texture_env_combine" number="17">
-    <enum name="COMBINE_ARB"                              value="0x8570"/>
-    <enum name="COMBINE_RGB_ARB"                          value="0x8571"/>
-    <enum name="COMBINE_ALPHA_ARB"                        value="0x8572"/>
-    <enum name="SOURCE0_RGB_ARB"                          value="0x8580"/>
-    <enum name="SOURCE1_RGB_ARB"                          value="0x8581"/>
-    <enum name="SOURCE2_RGB_ARB"                          value="0x8582"/>
-    <enum name="SOURCE0_ALPHA_ARB"                        value="0x8588"/>
-    <enum name="SOURCE1_ALPHA_ARB"                        value="0x8589"/>
-    <enum name="SOURCE2_ALPHA_ARB"                        value="0x858A"/>
-    <enum name="OPERAND0_RGB_ARB"                         value="0x8590"/>
-    <enum name="OPERAND1_RGB_ARB"                         value="0x8591"/>
-    <enum name="OPERAND2_RGB_ARB"                         value="0x8592"/>
-    <enum name="OPERAND0_ALPHA_ARB"                       value="0x8598"/>
-    <enum name="OPERAND1_ALPHA_ARB"                       value="0x8599"/>
-    <enum name="OPERAND2_ALPHA_ARB"                       value="0x859A"/>
-    <enum name="RGB_SCALE_ARB"                            value="0x8573"/>
-    <enum name="ADD_SIGNED_ARB"                           value="0x8574"/>
-    <enum name="INTERPOLATE_ARB"                          value="0x8575"/>
-    <enum name="SUBTRACT_ARB"                             value="0x84E7"/>
-    <enum name="CONSTANT_ARB"                             value="0x8576"/>
-    <enum name="PRIMARY_COLOR_ARB"                        value="0x8577"/>
-    <enum name="PREVIOUS_ARB"                             value="0x8578"/>
-</category>
-
-<category name="GL_ARB_texture_env_crossbar" number="18">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_ARB_texture_env_dot3" number="19">
-    <enum name="DOT3_RGB_ARB"                             value="0x86AE"/>
-    <enum name="DOT3_RGBA_ARB"                            value="0x86AF"/>
-</category>
-
-<!-- ARB extension number 20 is a WGL extension. -->
-
-<category name="GL_ARB_texture_mirrored_repeat" number="21">
-    <enum name="MIRRORED_REPEAT_ARB"                      value="0x8370"/>
-</category>
-
-<category name="GL_ARB_depth_texture" number="22">
-    <enum name="DEPTH_COMPONENT16_ARB"                    value="0x81A5"/>
-    <enum name="DEPTH_COMPONENT24_ARB"                    value="0x81A6"/>
-    <enum name="DEPTH_COMPONENT32_ARB"                    value="0x81A7"/>
-    <enum name="TEXTURE_DEPTH_SIZE_ARB"        count="1"  value="0x884A">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="DEPTH_TEXTURE_MODE_ARB"        count="1"  value="0x884B">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_ARB_shadow" number="23">
-    <enum name="TEXTURE_COMPARE_MODE_ARB"      count="1"  value="0x884C">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPARE_FUNC_ARB"      count="1"  value="0x884D">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="COMPARE_R_TO_TEXTURE_ARB"                 value="0x884E"/>
-</category>
-
-<category name="GL_ARB_shadow_ambient" number="24">
-    <enum name="TEXTURE_COMPARE_FAIL_VALUE_ARB" count="1" value="0x80BF">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_ARB_window_pos" number="25">
-    <function name="WindowPos2dARB" alias="WindowPos2dMESA">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="WindowPos2fARB" alias="WindowPos2fMESA">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="WindowPos2iARB" alias="WindowPos2iMESA">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-    </function>
-
-    <function name="WindowPos2sARB" alias="WindowPos2sMESA">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="WindowPos2dvARB" alias="WindowPos2dvMESA">
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="WindowPos2fvARB" alias="WindowPos2fvMESA">
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="WindowPos2ivARB" alias="WindowPos2ivMESA">
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="WindowPos2svARB" alias="WindowPos2svMESA">
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="WindowPos3dARB" alias="WindowPos3dMESA">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="WindowPos3fARB" alias="WindowPos3fMESA">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="WindowPos3iARB" alias="WindowPos3iMESA">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-    </function>
-
-    <function name="WindowPos3sARB" alias="WindowPos3sMESA">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="WindowPos3dvARB" alias="WindowPos3dvMESA">
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="WindowPos3fvARB" alias="WindowPos3fvMESA">
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="WindowPos3ivARB" alias="WindowPos3ivMESA">
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="WindowPos3svARB" alias="WindowPos3svMESA">
-        <param name="v" type="const GLshort *"/>
-    </function>
-</category>
-
-<category name="GL_ARB_vertex_program" number="26">
-    <enum name="COLOR_SUM_ARB"                 count="1"  value="0x8458">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_PROGRAM_ARB"            count="1"  value="0x8620">
-        <size name="GetVertexAttribdvARB" mode="get"/>
-        <size name="GetVertexAttribfvARB" mode="get"/>
-        <size name="GetVertexAttribivARB" mode="get"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_ENABLED_ARB" count="1" value="0x8622">
-        <size name="GetVertexAttribdvARB" mode="get"/>
-        <size name="GetVertexAttribfvARB" mode="get"/>
-        <size name="GetVertexAttribivARB" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_SIZE_ARB"  count="1"  value="0x8623">
-        <size name="GetVertexAttribdvARB" mode="get"/>
-        <size name="GetVertexAttribfvARB" mode="get"/>
-        <size name="GetVertexAttribivARB" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_STRIDE_ARB" count="1" value="0x8624">
-        <size name="GetVertexAttribdvARB" mode="get"/>
-        <size name="GetVertexAttribfvARB" mode="get"/>
-        <size name="GetVertexAttribivARB" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_TYPE_ARB"  count="1"  value="0x8625">
-        <size name="GetVertexAttribdvARB" mode="get"/>
-        <size name="GetVertexAttribfvARB" mode="get"/>
-        <size name="GetVertexAttribivARB" mode="get"/>
-    </enum>
-    <enum name="CURRENT_VERTEX_ATTRIB_ARB"     count="1"  value="0x8626">
-        <size name="GetVertexAttribdvARB" mode="get"/>
-        <size name="GetVertexAttribfvARB" mode="get"/>
-        <size name="GetVertexAttribivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_LENGTH_ARB"            count="1"  value="0x8627">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_STRING_ARB"                       value="0x8628"/>
-    <enum name="MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB" count="1" value="0x862E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_MATRICES_ARB"      count="1"  value="0x862F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_MATRIX_STACK_DEPTH_ARB" count="1" value="0x8640">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="CURRENT_MATRIX_ARB"            count="16" value="0x8641">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_PROGRAM_POINT_SIZE_ARB" count="1"  value="0x8642">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_PROGRAM_TWO_SIDE_ARB"   count="1"  value="0x8643">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_POINTER_ARB"          value="0x8645"/>
-    <enum name="PROGRAM_ERROR_POSITION_ARB"    count="1"  value="0x864B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_BINDING_ARB"           count="1"  value="0x8677">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_VERTEX_ATTRIBS_ARB"        count="1"  value="0x8869">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_NORMALIZED_ARB"       value="0x886A"/>
-    <enum name="PROGRAM_ERROR_STRING_ARB"                 value="0x8874"/>
-    <enum name="PROGRAM_FORMAT_ASCII_ARB"                 value="0x8875"/>
-    <enum name="PROGRAM_FORMAT_ARB"            count="1"  value="0x8876">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_INSTRUCTIONS_ARB"      count="1"  value="0x88A0">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_INSTRUCTIONS_ARB"  count="1"  value="0x88A1">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_INSTRUCTIONS_ARB" count="1" value="0x88A2">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_INSTRUCTIONS_ARB" count="1" value="0x88A3">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_TEMPORARIES_ARB"       count="1"  value="0x88A4">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_TEMPORARIES_ARB"   count="1"  value="0x88A5">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_TEMPORARIES_ARB" count="1" value="0x88A6">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_TEMPORARIES_ARB" count="1" value="0x88A7">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_PARAMETERS_ARB"        count="1"  value="0x88A8">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_PARAMETERS_ARB"    count="1"  value="0x88A9">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_PARAMETERS_ARB" count="1"  value="0x88AA">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_PARAMETERS_ARB" count="1" value="0x88AB">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_ATTRIBS_ARB"           count="1"  value="0x88AC">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_ATTRIBS_ARB"       count="1"  value="0x88AD">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_ATTRIBS_ARB"    count="1"  value="0x88AE">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_ATTRIBS_ARB" count="1" value="0x88AF">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_ADDRESS_REGISTERS_ARB" count="1"  value="0x88B0">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_ADDRESS_REGISTERS_ARB" count="1" value="0x88B1">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB" count="1" value="0x88B2">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_ADDRESS_REGISTERS_ARB" count="1" value="0x88B3">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_LOCAL_PARAMETERS_ARB" count="1" value="0x88B4">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_ENV_PARAMETERS_ARB" count="1" value="0x88B5">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_UNDER_NATIVE_LIMITS_ARB" count="1" value="0x88B6">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="TRANSPOSE_CURRENT_MATRIX_ARB"  count="16" value="0x88B7">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MATRIX0_ARB"                              value="0x88C0"/>
-    <enum name="MATRIX1_ARB"                              value="0x88C1"/>
-    <enum name="MATRIX2_ARB"                              value="0x88C2"/>
-    <enum name="MATRIX3_ARB"                              value="0x88C3"/>
-    <enum name="MATRIX4_ARB"                              value="0x88C4"/>
-    <enum name="MATRIX5_ARB"                              value="0x88C5"/>
-    <enum name="MATRIX6_ARB"                              value="0x88C6"/>
-    <enum name="MATRIX7_ARB"                              value="0x88C7"/>
-    <enum name="MATRIX8_ARB"                              value="0x88C8"/>
-    <enum name="MATRIX9_ARB"                              value="0x88C9"/>
-    <enum name="MATRIX10_ARB"                             value="0x88CA"/>
-    <enum name="MATRIX11_ARB"                             value="0x88CB"/>
-    <enum name="MATRIX12_ARB"                             value="0x88CC"/>
-    <enum name="MATRIX13_ARB"                             value="0x88CD"/>
-    <enum name="MATRIX14_ARB"                             value="0x88CE"/>
-    <enum name="MATRIX15_ARB"                             value="0x88CF"/>
-    <enum name="MATRIX16_ARB"                             value="0x88D0"/>
-    <enum name="MATRIX17_ARB"                             value="0x88D1"/>
-    <enum name="MATRIX18_ARB"                             value="0x88D2"/>
-    <enum name="MATRIX19_ARB"                             value="0x88D3"/>
-    <enum name="MATRIX20_ARB"                             value="0x88D4"/>
-    <enum name="MATRIX21_ARB"                             value="0x88D5"/>
-    <enum name="MATRIX22_ARB"                             value="0x88D6"/>
-    <enum name="MATRIX23_ARB"                             value="0x88D7"/>
-    <enum name="MATRIX24_ARB"                             value="0x88D8"/>
-    <enum name="MATRIX25_ARB"                             value="0x88D9"/>
-    <enum name="MATRIX26_ARB"                             value="0x88DA"/>
-    <enum name="MATRIX27_ARB"                             value="0x88DB"/>
-    <enum name="MATRIX28_ARB"                             value="0x88DC"/>
-    <enum name="MATRIX29_ARB"                             value="0x88DD"/>
-    <enum name="MATRIX30_ARB"                             value="0x88DE"/>
-    <enum name="MATRIX31_ARB"                             value="0x88DF"/>
-
-    <function name="GetVertexAttribdvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
-        <glx handcode="client" vendorpriv="1301"/>
-    </function>
-
-    <function name="GetVertexAttribfvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx handcode="client" vendorpriv="1302"/>
-    </function>
-
-    <function name="GetVertexAttribivARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx handcode="client" vendorpriv="1303"/>
-    </function>
-
-    <function name="VertexAttrib1dARB" offset="assign" vectorequiv="VertexAttrib1dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib1dvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="1"/>
-        <glx rop="4197" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib1fARB" offset="assign" vectorequiv="VertexAttrib1fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib1fvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="1"/>
-        <glx rop="4193"/>
-    </function>
-
-    <function name="VertexAttrib1sARB" offset="assign" vectorequiv="VertexAttrib1svARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib1svARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="1"/>
-        <glx rop="4189"/>
-    </function>
-
-    <function name="VertexAttrib2dARB" offset="assign" vectorequiv="VertexAttrib2dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib2dvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="4198" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib2fARB" offset="assign" vectorequiv="VertexAttrib2fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib2fvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="4194"/>
-    </function>
-
-    <function name="VertexAttrib2sARB" offset="assign" vectorequiv="VertexAttrib2svARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib2svARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="4190"/>
-    </function>
-
-    <function name="VertexAttrib3dARB" offset="assign" vectorequiv="VertexAttrib3dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib3dvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="4199" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib3fARB" offset="assign" vectorequiv="VertexAttrib3fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib3fvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="4195"/>
-    </function>
-
-    <function name="VertexAttrib3sARB" offset="assign" vectorequiv="VertexAttrib3svARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib3svARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="4191"/>
-    </function>
-
-    <function name="VertexAttrib4dARB" offset="assign" vectorequiv="VertexAttrib4dvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib4dvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="4200" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib4fARB" offset="assign" vectorequiv="VertexAttrib4fvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib4fvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="4196"/>
-    </function>
-
-    <function name="VertexAttrib4sARB" offset="assign" vectorequiv="VertexAttrib4svARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib4svARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="4192"/>
-    </function>
-
-    <function name="VertexAttrib4NubARB" offset="assign" vectorequiv="VertexAttrib4NubvARB">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLubyte"/>
-        <param name="y" type="GLubyte"/>
-        <param name="z" type="GLubyte"/>
-        <param name="w" type="GLubyte"/>
-    </function>
-
-    <function name="VertexAttrib4NubvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLubyte *" count="4"/>
-        <glx rop="4201"/>
-    </function>
-
-    <function name="VertexAttrib4bvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLbyte *" count="4"/>
-        <glx rop="4230"/>
-    </function>
-
-    <function name="VertexAttrib4ivARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="4231"/>
-    </function>
-
-    <function name="VertexAttrib4ubvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLubyte *" count="4"/>
-        <glx rop="4232"/>
-    </function>
-
-    <function name="VertexAttrib4usvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLushort *" count="4"/>
-        <glx rop="4233"/>
-    </function>
-
-    <function name="VertexAttrib4uivARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLuint *" count="4"/>
-        <glx rop="4234"/>
-    </function>
-
-    <function name="VertexAttrib4NbvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLbyte *" count="4"/>
-        <glx rop="4235"/>
-    </function>
-
-    <function name="VertexAttrib4NsvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="4236"/>
-    </function>
-
-    <function name="VertexAttrib4NivARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLint *" count="4"/>
-        <glx rop="4237"/>
-    </function>
-
-    <function name="VertexAttrib4NusvARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLushort *" count="4"/>
-        <glx rop="4238"/>
-    </function>
-
-    <function name="VertexAttrib4NuivARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLuint *" count="4"/>
-        <glx rop="4239"/>
-    </function>
-
-    <function name="VertexAttribPointerARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="normalized" type="GLboolean"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="EnableVertexAttribArrayARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DisableVertexAttribArrayARB" offset="assign">
-        <param name="index" type="GLuint"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="ProgramStringARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="string" type="const GLvoid *" count="len"/>
-        <glx rop="4217" large="true"/>
-    </function>
-
-    <function name="BindProgramARB" alias="BindProgramNV">
-        <param name="target" type="GLenum"/>
-        <param name="program" type="GLuint"/>
-    </function>
-
-    <function name="DeleteProgramsARB" alias="DeleteProgramsNV">
-        <param name="n" type="GLsizei"/>
-        <param name="programs" type="const GLuint *"/>
-    </function>
-
-    <function name="GenProgramsARB" alias="GenProgramsNV">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="programs" type="GLuint *" output="true" count="n"/>
-    </function>
-
-    <function name="IsProgramARB" alias="IsProgramNV">
-        <param name="program" type="GLuint"/>
-        <return type="GLboolean"/>
-    </function>
-
-    <function name="ProgramEnvParameter4dARB" offset="assign" vectorequiv="ProgramEnvParameter4dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="ProgramEnvParameter4dvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="const GLdouble *" count="4"/>
-        <glx rop="4185" doubles_in_order="true"/>
-    </function>
-
-    <function name="ProgramEnvParameter4fARB" offset="assign" vectorequiv="ProgramEnvParameter4fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="ProgramEnvParameter4fvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="const GLfloat *" count="4"/>
-        <glx rop="4184"/>
-    </function>
-
-    <function name="ProgramLocalParameter4dARB" offset="assign" vectorequiv="ProgramLocalParameter4dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="ProgramLocalParameter4dvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="const GLdouble *" count="4"/>
-        <glx rop="4216" doubles_in_order="true"/>
-    </function>
-
-    <function name="ProgramLocalParameter4fARB" offset="assign" vectorequiv="ProgramLocalParameter4fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="ProgramLocalParameter4fvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="const GLfloat *" count="4"/>
-        <glx rop="4215"/>
-    </function>
-
-    <!-- The GetProgramEnvParameter[df]vARB are handcoded because there
-         is an extra CARD32 of padding after the "index" field.  Originally,
-         GetProgranEnvParameter[df]vARB and GetProgramParameter[df]vNV
-         shared the same GLX protocol.  The pad field was where the pname
-         parameter was in the NV functions.  When this error was discovered
-         and fixed, there was already at least one implementation of
-         GLX protocol for ARB_vertex_program, but there were no
-         implementations of NV_vertex_program.  The sollution was to renumber
-         the opcodes for NV_vertex_program and convert the unused field in
-         the ARB_vertex_program protocol to unused padding.
-      -->
-
-    <function name="GetProgramEnvParameterdvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="GLdouble *" output="true" count="4"/>
-        <glx vendorpriv="1297" handcode="client" doubles_in_order="true"/>
-    </function>
-
-    <function name="GetProgramEnvParameterfvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="GLfloat *" output="true" count="4"/>
-        <glx vendorpriv="1296" handcode="client"/>
-    </function>
-
-    <function name="GetProgramLocalParameterdvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="GLdouble *" output="true" count="4"/>
-        <glx vendorpriv="1306" handcode="client" doubles_in_order="true"/>
-    </function>
-
-    <function name="GetProgramLocalParameterfvARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="GLfloat *" output="true" count="4"/>
-        <glx vendorpriv="1305" handcode="client"/>
-    </function>
-
-
-    <function name="GetProgramivARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="1307"/>
-    </function>
-
-    <function name="GetProgramStringARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="string" type="GLvoid *" output="true"/>
-        <glx vendorpriv="1308" handcode="server" always_array="true"/>
-    </function>
-
-    <function name="GetVertexAttribPointervARB" alias="GetVertexAttribPointervNV">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="pointer" type="GLvoid **" output="true"/>
-    </function>
-</category>
-
-<category name="GL_ARB_fragment_program" number="27">
-    <enum name="FRAGMENT_PROGRAM_ARB"          count="1"  value="0x8804">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_ALU_INSTRUCTIONS_ARB"  count="1"  value="0x8805">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_TEX_INSTRUCTIONS_ARB"  count="1"  value="0x8806">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_TEX_INDIRECTIONS_ARB"  count="1"  value="0x8807">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB" count="1" value="0x8808">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB" count="1" value="0x8809">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB" count="1" value="0x880A">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_ALU_INSTRUCTIONS_ARB" count="1" value="0x880B">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_TEX_INSTRUCTIONS_ARB" count="1" value="0x880C">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_TEX_INDIRECTIONS_ARB" count="1" value="0x880D">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_ALU_INSTRUCTIONS_ARB" count="1" value="0x880E">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_TEX_INSTRUCTIONS_ARB" count="1" value="0x880F">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_NATIVE_TEX_INDIRECTIONS_ARB" count="1" value="0x8810">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_COORDS_ARB"        count="1"  value="0x8871">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_IMAGE_UNITS_ARB"   count="1"  value="0x8872">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_ARB_vertex_buffer_object" number="28">
-    <enum name="BUFFER_SIZE_ARB"               count="1"  value="0x8764">
-        <size name="GetBufferParameterivARB" mode="get"/>
-    </enum>
-    <enum name="BUFFER_USAGE_ARB"              count="1"  value="0x8765">
-        <size name="GetBufferParameterivARB" mode="get"/>
-    </enum>
-    <enum name="ARRAY_BUFFER_BINDING_ARB"      count="1"  value="0x8894">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ELEMENT_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8895">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8896">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="NORMAL_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8897">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COLOR_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8898">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="INDEX_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x8899">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="WEIGHT_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="VERTEX_ATTRIB_ARRAY_BUFFER_BINDING_ARB" count="1" value="0x889F">
-        <size name="GetVertexAttribdvARB" mode="get"/>
-        <size name="GetVertexAttribfvARB" mode="get"/>
-        <size name="GetVertexAttribivARB" mode="get"/>
-    </enum>
-    <enum name="READ_ONLY_ARB"                            value="0x88B8"/>
-    <enum name="WRITE_ONLY_ARB"                           value="0x88B9"/>
-    <enum name="READ_WRITE_ARB"                           value="0x88BA"/>
-    <enum name="BUFFER_ACCESS_ARB"             count="1"  value="0x88BB">
-        <size name="GetBufferParameterivARB" mode="get"/>
-    </enum>
-    <enum name="BUFFER_MAPPED_ARB"             count="1"  value="0x88BC">
-        <size name="GetBufferParameterivARB" mode="get"/>
-    </enum>
-    <enum name="BUFFER_MAP_POINTER_ARB"                   value="0x88BD"/>
-    <enum name="STREAM_DRAW_ARB"                          value="0x88E0"/>
-    <enum name="STREAM_READ_ARB"                          value="0x88E1"/>
-    <enum name="STREAM_COPY_ARB"                          value="0x88E2"/>
-    <enum name="STATIC_DRAW_ARB"                          value="0x88E4"/>
-    <enum name="STATIC_READ_ARB"                          value="0x88E5"/>
-    <enum name="STATIC_COPY_ARB"                          value="0x88E6"/>
-    <enum name="DYNAMIC_DRAW_ARB"                         value="0x88E8"/>
-    <enum name="DYNAMIC_READ_ARB"                         value="0x88E9"/>
-    <enum name="DYNAMIC_COPY_ARB"                         value="0x88EA"/>
-
-    <type name="intptrARB"   size="4"                  glx_name="CARD32"/>
-    <type name="sizeiptrARB" size="4"  unsigned="true" glx_name="CARD32"/>
-
-    <function name="BindBufferARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="buffer" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="BufferDataARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="size" type="GLsizeiptrARB" counter="true"/>
-        <param name="data" type="const GLvoid *" count="size" img_null_flag="true"/>
-        <param name="usage" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="BufferSubDataARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptrARB"/>
-        <param name="size" type="GLsizeiptrARB" counter="true"/>
-        <param name="data" type="const GLvoid *" count="size"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DeleteBuffersARB" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="buffer" type="const GLuint *" count="n"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GenBuffersARB" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="buffer" type="GLuint *" output="true" count="n"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetBufferParameterivARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetBufferPointervARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetBufferSubDataARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptrARB"/>
-        <param name="size" type="GLsizeiptrARB" counter="true"/>
-        <param name="data" type="GLvoid *" output="true" count="size"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="IsBufferARB" offset="assign">
-        <param name="buffer" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="MapBufferARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="access" type="GLenum"/>
-        <return type="GLvoid *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UnmapBufferARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_ARB_occlusion_query" number="29">
-    <enum name="QUERY_COUNTER_BITS_ARB"        count="1"  value="0x8864">
-        <size name="GetQueryivARB" mode="get"/>
-    </enum>
-    <enum name="CURRENT_QUERY_ARB"             count="1"  value="0x8865">
-        <size name="GetQueryivARB" mode="get"/>
-    </enum>
-    <enum name="QUERY_RESULT_ARB"              count="1"  value="0x8866">
-        <size name="GetQueryObjectivARB" mode="get"/>
-        <size name="GetQueryObjectuivARB" mode="get"/>
-    </enum>
-    <enum name="QUERY_RESULT_AVAILABLE_ARB"    count="1"  value="0x8867">
-        <size name="GetQueryObjectivARB" mode="get"/>
-        <size name="GetQueryObjectuivARB" mode="get"/>
-    </enum>
-    <enum name="SAMPLES_PASSED_ARB"                       value="0x8914"/>
-
-    <function name="GenQueriesARB" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="ids" type="GLuint *" output="true" count="n"/>
-        <glx sop="162" always_array="true"/>
-    </function>
-
-    <function name="DeleteQueriesARB" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="ids" type="const GLuint *" count="n"/>
-        <glx sop="161"/>
-    </function>
-
-    <function name="IsQueryARB" offset="assign">
-        <param name="id" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx sop="163"/>
-    </function>
-
-    <function name="BeginQueryARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="id" type="GLuint"/>
-        <glx rop="231"/>
-    </function>
-
-    <function name="EndQueryARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <glx rop="232"/>
-    </function>
-
-    <function name="GetQueryivARB" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="164"/>
-    </function>
-
-    <function name="GetQueryObjectivARB" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx sop="165"/>
-    </function>
-
-    <function name="GetQueryObjectuivARB" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLuint *" output="true" variable_param="pname"/>
-        <glx sop="166"/>
-    </function>
-</category>
-
-<category name="GL_ARB_shader_objects" number="30">
-    <enum name="PROGRAM_OBJECT_ARB"                       value="0x8B40"/>
-    <enum name="SHADER_OBJECT_ARB"                        value="0x8B48"/>
-    <enum name="OBJECT_TYPE_ARB"                          value="0x8B4E"/>
-    <enum name="OBJECT_SUBTYPE_ARB"                       value="0x8B4F"/>
-    <enum name="FLOAT_VEC2_ARB"                           value="0x8B50"/>
-    <enum name="FLOAT_VEC3_ARB"                           value="0x8B51"/>
-    <enum name="FLOAT_VEC4_ARB"                           value="0x8B52"/>
-    <enum name="INT_VEC2_ARB"                             value="0x8B53"/>
-    <enum name="INT_VEC3_ARB"                             value="0x8B54"/>
-    <enum name="INT_VEC4_ARB"                             value="0x8B55"/>
-    <enum name="BOOL_ARB"                                 value="0x8B56"/>
-    <enum name="BOOL_VEC2_ARB"                            value="0x8B57"/>
-    <enum name="BOOL_VEC3_ARB"                            value="0x8B58"/>
-    <enum name="BOOL_VEC4_ARB"                            value="0x8B59"/>
-    <enum name="FLOAT_MAT2_ARB"                           value="0x8B5A"/>
-    <enum name="FLOAT_MAT3_ARB"                           value="0x8B5B"/>
-    <enum name="FLOAT_MAT4_ARB"                           value="0x8B5C"/>
-    <enum name="OBJECT_DELETE_STATUS_ARB"                 value="0x8B80"/>
-    <enum name="OBJECT_COMPILE_STATUS_ARB"                value="0x8B81"/>
-    <enum name="OBJECT_LINK_STATUS_ARB"                   value="0x8B82"/>
-    <enum name="OBJECT_VALIDATE_STATUS_ARB"               value="0x8B83"/>
-    <enum name="OBJECT_INFO_LOG_LENGTH_ARB"               value="0x8B84"/>
-    <enum name="OBJECT_ATTACHED_OBJECTS_ARB"              value="0x8B85"/>
-    <enum name="OBJECT_ACTIVE_UNIFORMS_ARB"               value="0x8B86"/>
-    <enum name="OBJECT_ACTIVE_UNIFORM_MAX_LENGTH_ARB"     value="0x8B87"/>
-    <enum name="OBJECT_SHADER_SOURCE_LENGTH_ARB"          value="0x8B88"/>
-
-    <type name="charARB"   size="1" glx_name="CARD8"/>
-    <type name="handleARB" size="4" glx_name="CARD32"/>
-
-    <function name="DeleteObjectARB" offset="assign">
-        <param name="obj" type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetHandleARB" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <return type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="DetachObjectARB" offset="assign">
-        <param name="containerObj" type="GLhandleARB"/>
-        <param name="attachedObj" type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CreateShaderObjectARB" offset="assign">
-        <param name="shaderType" type="GLenum"/>
-        <return type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ShaderSourceARB" offset="assign">
-        <param name="shader" type="GLhandleARB"/>
-        <param name="count" type="GLsizei"/>
-        <param name="string" type="const GLcharARB **"/>
-        <param name="length" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CompileShaderARB" offset="assign">
-        <param name="shader" type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CreateProgramObjectARB" offset="assign">
-        <return type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="AttachObjectARB" offset="assign">
-        <param name="containerObj" type="GLhandleARB"/>
-        <param name="obj" type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="LinkProgramARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UseProgramObjectARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ValidateProgramARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1fARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2fARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3fARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4fARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLfloat"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <param name="v3" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1iARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2iARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3iARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <param name="v2" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4iARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="v0" type="GLint"/>
-        <param name="v1" type="GLint"/>
-        <param name="v2" type="GLint"/>
-        <param name="v3" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1fvARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2fvARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3fvARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4fvARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform1ivARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform2ivARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform3ivARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="Uniform4ivARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="value" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UniformMatrix2fvARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UniformMatrix3fvARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="UniformMatrix4fvARB" offset="assign">
-        <param name="location" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="transpose" type="GLboolean"/>
-        <param name="value" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetObjectParameterfvARB" offset="assign">
-        <param name="obj" type="GLhandleARB"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetObjectParameterivARB" offset="assign">
-        <param name="obj" type="GLhandleARB"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetInfoLogARB" offset="assign">
-        <param name="obj" type="GLhandleARB"/>
-        <param name="maxLength" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="infoLog" type="GLcharARB *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetAttachedObjectsARB" offset="assign">
-        <param name="containerObj" type="GLhandleARB"/>
-        <param name="maxLength" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="infoLog" type="GLhandleARB *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformLocationARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <param name="name" type="const GLcharARB *"/>
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetActiveUniformARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <param name="index" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="size" type="GLint *" output="true"/>
-        <param name="type" type="GLenum *" output="true"/>
-        <param name="name" type="GLcharARB *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformfvARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <param name="location" type="GLint"/>
-        <param name="params" type="GLfloat *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetUniformivARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <param name="location" type="GLint"/>
-        <param name="params" type="GLint *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetShaderSourceARB" offset="assign">
-        <param name="shader" type="GLhandleARB"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="source" type="GLcharARB *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_ARB_vertex_shader" number="31">
-    <enum name="VERTEX_SHADER_ARB"                        value="0x8B31"/>
-    <enum name="MAX_VERTEX_UNIFORM_COMPONENTS_ARB"        value="0x8B4A"/>
-    <enum name="MAX_VARYING_FLOATS_ARB"                   value="0x8B4B"/>
-    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB"       value="0x8B4C"/>
-    <enum name="MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB"     value="0x8B4D"/>
-    <enum name="OBJECT_ACTIVE_ATTRIBUTES_ARB"             value="0x8B89"/>
-    <enum name="OBJECT_ACTIVE_ATTRIBUTE_MAX_LENGTH_ARB"   value="0x8B8A"/>
-
-    <function name="BindAttribLocationARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <param name="index" type="GLuint"/>
-        <param name="name" type="const GLcharARB *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetActiveAttribARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <param name="index" type="GLuint"/>
-        <param name="bufSize" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="size" type="GLint *" output="true"/>
-        <param name="type" type="GLenum *" output="true"/>
-        <param name="name" type="GLcharARB *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetAttribLocationARB" offset="assign">
-        <param name="program" type="GLhandleARB"/>
-        <param name="name" type="const GLcharARB *"/>
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_ARB_fragment_shader" number="32">
-    <enum name="FRAGMENT_SHADER_ARB"                      value="0x8B30"/>
-    <enum name="MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB"      value="0x8B49"/>
-</category>
-
-<category name="GL_ARB_shading_language_100" number="33">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_ARB_texture_non_power_of_two" number="34">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_ARB_point_sprite" number="35">
-    <enum name="POINT_SPRITE_ARB"              count="1"  value="0x8861">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COORD_REPLACE_ARB"             count="1"  value="0x8862">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_ARB_fragment_program_shadow" number="36">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_ARB_draw_buffers" number="37">
-    <enum name="MAX_DRAW_BUFFERS_ARB"          count="1"  value="0x8824">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER0_ARB"              count="1"  value="0x8825">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER1_ARB"              count="1"  value="0x8826">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER2_ARB"              count="1"  value="0x8827">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER3_ARB"              count="1"  value="0x8828">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER4_ARB"              count="1"  value="0x8829">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER5_ARB"              count="1"  value="0x882A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER6_ARB"              count="1"  value="0x882B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER7_ARB"              count="1"  value="0x882C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER8_ARB"              count="1"  value="0x882D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER9_ARB"              count="1"  value="0x882E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER10_ARB"             count="1"  value="0x882F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER11_ARB"             count="1"  value="0x8830">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER12_ARB"             count="1"  value="0x8831">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER13_ARB"             count="1"  value="0x8832">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER14_ARB"             count="1"  value="0x8833">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER15_ARB"             count="1"  value="0x8834">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="DrawBuffersARB" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="bufs" type="const GLenum *" count="n"/>
-        <glx rop="233" large="true"/>
-    </function>
-</category>
-
-<category name="GL_ARB_texture_rectangle" number="38">
-    <enum name="TEXTURE_RECTANGLE_ARB"         count="1"  value="0x84F5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_RECTANGLE_ARB" count="1"  value="0x84F6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROXY_TEXTURE_RECTANGLE_ARB"              value="0x84F7"/>
-    <enum name="MAX_RECTANGLE_TEXTURE_SIZE_ARB" count="1" value="0x84F8">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<xi:include href="ARB_framebuffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_copy_buffer.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_depth_clamp.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_map_buffer_range.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_sync.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_seamless_cube_map.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_draw_elements_base_vertex.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="NV_conditional_render.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="EXT_transform_feedback.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="ARB_draw_instanced.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-
-<!-- Non-ARB extensions sorted by extension number. -->
-
-<category name="GL_EXT_blend_color" number="2">
-    <enum name="CONSTANT_COLOR_EXT"                       value="0x8001"/>
-    <enum name="ONE_MINUS_CONSTANT_COLOR_EXT"             value="0x8002"/>
-    <enum name="CONSTANT_ALPHA_EXT"                       value="0x8003"/>
-    <enum name="ONE_MINUS_CONSTANT_ALPHA_EXT"             value="0x8004"/>
-    <enum name="BLEND_COLOR_EXT"               count="4"  value="0x8005">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="BlendColorEXT" alias="BlendColor">
-        <param name="red" type="GLclampf"/>
-        <param name="green" type="GLclampf"/>
-        <param name="blue" type="GLclampf"/>
-        <param name="alpha" type="GLclampf"/>
-    </function>
-</category>
-
-<category name="GL_EXT_polygon_offset" number="3">
-    <function name="PolygonOffsetEXT" offset="assign">
-        <param name="factor" type="GLfloat"/>
-        <param name="bias" type="GLfloat"/>
-        <glx rop="4098" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_texture" number="4">
-    <enum name="ALPHA4_EXT"                               value="0x803B"/>
-    <enum name="ALPHA8_EXT"                               value="0x803C"/>
-    <enum name="ALPHA12_EXT"                              value="0x803D"/>
-    <enum name="ALPHA16_EXT"                              value="0x803E"/>
-    <enum name="LUMINANCE4_EXT"                           value="0x803F"/>
-    <enum name="LUMINANCE8_EXT"                           value="0x8040"/>
-    <enum name="LUMINANCE12_EXT"                          value="0x8041"/>
-    <enum name="LUMINANCE16_EXT"                          value="0x8042"/>
-    <enum name="LUMINANCE4_ALPHA4_EXT"                    value="0x8043"/>
-    <enum name="LUMINANCE6_ALPHA2_EXT"                    value="0x8044"/>
-    <enum name="LUMINANCE8_ALPHA8_EXT"                    value="0x8045"/>
-    <enum name="LUMINANCE12_ALPHA4_EXT"                   value="0x8046"/>
-    <enum name="LUMINANCE12_ALPHA12_EXT"                  value="0x8047"/>
-    <enum name="LUMINANCE16_ALPHA16_EXT"                  value="0x8048"/>
-    <enum name="INTENSITY_EXT"                            value="0x8049"/>
-    <enum name="INTENSITY4_EXT"                           value="0x804A"/>
-    <enum name="INTENSITY8_EXT"                           value="0x804B"/>
-    <enum name="INTENSITY12_EXT"                          value="0x804C"/>
-    <enum name="INTENSITY16_EXT"                          value="0x804D"/>
-    <enum name="RGB2_EXT"                                 value="0x804E"/>
-    <enum name="RGB4_EXT"                                 value="0x804F"/>
-    <enum name="RGB5_EXT"                                 value="0x8050"/>
-    <enum name="RGB8_EXT"                                 value="0x8051"/>
-    <enum name="RGB10_EXT"                                value="0x8052"/>
-    <enum name="RGB12_EXT"                                value="0x8053"/>
-    <enum name="RGB16_EXT"                                value="0x8054"/>
-    <enum name="RGBA2_EXT"                                value="0x8055"/>
-    <enum name="RGBA4_EXT"                                value="0x8056"/>
-    <enum name="RGB5_A1_EXT"                              value="0x8057"/>
-    <enum name="RGBA8_EXT"                                value="0x8058"/>
-    <enum name="RGB10_A2_EXT"                             value="0x8059"/>
-    <enum name="RGBA12_EXT"                               value="0x805A"/>
-    <enum name="RGBA16_EXT"                               value="0x805B"/>
-    <enum name="TEXTURE_RED_SIZE_EXT"          count="1"  value="0x805C">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_GREEN_SIZE_EXT"        count="1"  value="0x805D">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BLUE_SIZE_EXT"         count="1"  value="0x805E">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_ALPHA_SIZE_EXT"        count="1"  value="0x805F">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_LUMINANCE_SIZE_EXT"    count="1"  value="0x8060">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_INTENSITY_SIZE_EXT"    count="1"  value="0x8061">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-    <enum name="REPLACE_EXT"                              value="0x8062"/>
-    <enum name="PROXY_TEXTURE_1D_EXT"                     value="0x8063"/>
-    <enum name="PROXY_TEXTURE_2D_EXT"                     value="0x8064"/>
-    <enum name="TEXTURE_TOO_LARGE_EXT"                    value="0x8065"/>
-</category>
-
-<!-- Extension number 5 is not listed in the extension registry. -->
-
-<category name="GL_EXT_texture3D" number="6">
-    <function name="TexImage3DEXT" alias="TexImage3D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *"/>
-    </function>
-
-    <function name="TexSubImage3DEXT" alias="TexSubImage3D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_texture_filter4" number="7">
-    <function name="GetTexFilterFuncSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="filter" type="GLenum"/>
-        <param name="weights" type="GLfloat *" output="true"/>
-        <glx vendorpriv="4101" ignore="true"/>
-    </function>
-
-    <function name="TexFilterFuncSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="filter" type="GLenum"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="weights" type="const GLfloat *" count="n"/>
-        <glx rop="2064" ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 8 is not listed in the extension registry. -->
-
-<category name="GL_EXT_subtexture" number="9">
-    <function name="TexSubImage1DEXT" alias="TexSubImage1D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *"/>
-    </function>
-
-    <function name="TexSubImage2DEXT" alias="TexSubImage2D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *"/>
-    </function>
-</category>
-
-<category name="GL_EXT_copy_texture" number="10">
-    <function name="CopyTexImage1DEXT" alias="CopyTexImage1D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-    </function>
-
-    <function name="CopyTexImage2DEXT" alias="CopyTexImage2D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-    </function>
-
-    <function name="CopyTexSubImage1DEXT" alias="CopyTexSubImage1D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-    </function>
-
-    <function name="CopyTexSubImage2DEXT" alias="CopyTexSubImage2D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-    </function>
-
-    <function name="CopyTexSubImage3DEXT" alias="CopyTexSubImage3D">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-    </function>
-</category>
-
-<category name="GL_EXT_histogram" number="11">
-    <enum name="HISTOGRAM_EXT"                            value="0x8024"/>
-    <enum name="PROXY_HISTOGRAM_EXT"                      value="0x8025"/>
-    <enum name="HISTOGRAM_WIDTH_EXT"           count="1"  value="0x8026">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_FORMAT_EXT"          count="1"  value="0x8027">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_RED_SIZE_EXT"        count="1"  value="0x8028">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_GREEN_SIZE_EXT"      count="1"  value="0x8029">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_BLUE_SIZE_EXT"       count="1"  value="0x802A">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_ALPHA_SIZE_EXT"      count="1"  value="0x802B">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_LUMINANCE_SIZE_EXT"  count="1"  value="0x802C">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="HISTOGRAM_SINK_EXT"            count="1"  value="0x802D">
-        <size name="GetHistogramParameterfvEXT" mode="get"/>
-        <size name="GetHistogramParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="MINMAX_EXT"                               value="0x802E"/>
-    <enum name="MINMAX_FORMAT_EXT"             count="1"  value="0x802F">
-        <size name="GetMinmaxParameterfvEXT" mode="get"/>
-        <size name="GetMinmaxParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="MINMAX_SINK_EXT"               count="1"  value="0x8030">
-        <size name="GetMinmaxParameterfvEXT" mode="get"/>
-        <size name="GetMinmaxParameterivEXT" mode="get"/>
-    </enum>
-    <enum name="TABLE_TOO_LARGE_EXT"                      value="0x8031"/>
-
-    <function name="GetHistogramEXT" alias="GetHistogram" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="reset" type="GLboolean"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="values" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
-        <glx vendorpriv="5" dimensions_in_reply="true" img_reset="reset"/>
-    </function>
-
-    <function name="GetHistogramParameterfvEXT" alias="GetHistogramParameterfv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx vendorpriv="6"/>
-    </function>
-
-    <function name="GetHistogramParameterivEXT" alias="GetHistogramParameteriv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="7"/>
-    </function>
-
-    <function name="GetMinmaxEXT" alias="GetMinmax" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="reset" type="GLboolean"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="values" type="GLvoid *" output="true" img_width="2" img_format="format" img_type="type"/>
-        <glx vendorpriv="8" img_reset="reset"/>
-    </function>
-
-    <function name="GetMinmaxParameterfvEXT" alias="GetMinmaxParameterfv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx vendorpriv="9"/>
-    </function>
-
-    <function name="GetMinmaxParameterivEXT" alias="GetMinmaxParameteriv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="10"/>
-    </function>
-
-    <function name="HistogramEXT" alias="Histogram" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="sink" type="GLboolean"/>
-    </function>
-
-    <function name="MinmaxEXT" alias="Minmax" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="sink" type="GLboolean"/>
-    </function>
-
-    <function name="ResetHistogramEXT" alias="ResetHistogram" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-    </function>
-
-    <function name="ResetMinmaxEXT" alias="ResetMinmax" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-    </function>
-</category>
-
-<category name="GL_EXT_convolution" number="12">
-    <enum name="CONVOLUTION_BORDER_MODE_EXT"   count="1"  value="0x8013">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_FILTER_SCALE_EXT"  count="4"  value="0x8014">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_FILTER_BIAS_EXT"   count="4"  value="0x8015">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="REDUCE_EXT"                               value="0x8016"/>
-    <enum name="CONVOLUTION_FORMAT_EXT"        count="1"  value="0x8017">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_WIDTH_EXT"         count="1"  value="0x8018">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="CONVOLUTION_HEIGHT_EXT"        count="1"  value="0x8019">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-    <enum name="MAX_CONVOLUTION_WIDTH_EXT"     count="1"  value="0x801A">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_CONVOLUTION_HEIGHT_EXT"    count="1"  value="0x801B">
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_RED_SCALE_EXT" count="1" value="0x801C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_GREEN_SCALE_EXT" count="1" value="0x801D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_BLUE_SCALE_EXT" count="1" value="0x801E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_ALPHA_SCALE_EXT" count="1" value="0x801F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_RED_BIAS_EXT" count="1"  value="0x8020">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_GREEN_BIAS_EXT" count="1" value="0x8021">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_BLUE_BIAS_EXT" count="1" value="0x8022">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="POST_CONVOLUTION_ALPHA_BIAS_EXT" count="1" value="0x8023">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="ConvolutionFilter1DEXT" alias="ConvolutionFilter1D" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="const GLvoid *"/>
-    </function>
-
-    <function name="ConvolutionFilter2DEXT" alias="ConvolutionFilter2D" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="const GLvoid *"/>
-    </function>
-
-    <function name="ConvolutionParameterfEXT" alias="ConvolutionParameterf" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat"/>
-    </function>
-
-    <function name="ConvolutionParameterfvEXT" alias="ConvolutionParameterfv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="ConvolutionParameteriEXT" alias="ConvolutionParameteri" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint"/>
-    </function>
-
-    <function name="ConvolutionParameterivEXT" alias="ConvolutionParameteriv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-    </function>
-
-    <function name="CopyConvolutionFilter1DEXT" alias="CopyConvolutionFilter1D" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-    </function>
-
-    <function name="CopyConvolutionFilter2DEXT" alias="CopyConvolutionFilter2D" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-    </function>
-
-    <function name="GetConvolutionFilterEXT" alias="GetConvolutionFilter" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="image" type="GLvoid *" output="true" img_width="width" img_height="height" img_format="format" img_type="type"/>
-        <glx vendorpriv="1" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetConvolutionParameterfvEXT" alias="GetConvolutionParameterfv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx vendorpriv="2"/>
-    </function>
-
-    <function name="GetConvolutionParameterivEXT" alias="GetConvolutionParameteriv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="3"/>
-    </function>
-
-    <function name="GetSeparableFilterEXT" alias="GetSeparableFilter" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="row" type="GLvoid *" output="true"/>
-        <param name="column" type="GLvoid *" output="true"/>
-        <param name="span" type="GLvoid *" output="true"/>
-        <glx vendorpriv="4" handcode="true"/>
-    </function>
-
-    <function name="SeparableFilter2DEXT" alias="SeparableFilter2D" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="row" type="const GLvoid *"/>
-        <param name="column" type="const GLvoid *"/>
-    </function>
-</category>
-
-<category name="GL_SGI_color_matrix" number="13">
-    <enum name="COLOR_MATRIX_SGI"                         value="0x80B1"/>
-    <enum name="COLOR_MATRIX_STACK_DEPTH_SGI"             value="0x80B2"/>
-    <enum name="MAX_COLOR_MATRIX_STACK_DEPTH_SGI"         value="0x80B3"/>
-    <enum name="POST_COLOR_MATRIX_RED_SCALE_SGI"          value="0x80B4"/>
-    <enum name="POST_COLOR_MATRIX_GREEN_SCALE_SGI"        value="0x80B5"/>
-    <enum name="POST_COLOR_MATRIX_BLUE_SCALE_SGI"         value="0x80B6"/>
-    <enum name="POST_COLOR_MATRIX_ALPHA_SCALE_SGI"        value="0x80B7"/>
-    <enum name="POST_COLOR_MATRIX_RED_BIAS_SGI"           value="0x80B8"/>
-    <enum name="POST_COLOR_MATRIX_GREEN_BIAS_SGI"         value="0x80B9"/>
-    <enum name="POST_COLOR_MATRIX_BLUE_BIAS_SGI"          value="0x80BA"/>
-    <enum name="POST_COLOR_MATRIX_ALPHA_BIAS_SGI"         value="0x80BB"/>
-</category>
-
-<category name="GL_SGI_color_table" number="14">
-    <enum name="COLOR_TABLE_SCALE_SGI"         count="4"  value="0x80D6">
-        <size name="ColorTableParameterfvSGI"/>
-        <size name="ColorTableParameterivSGI"/>
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_BIAS_SGI"          count="4"  value="0x80D7">
-        <size name="ColorTableParameterfvSGI"/>
-        <size name="ColorTableParameterivSGI"/>
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_FORMAT_SGI"        count="1"  value="0x80D8">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_WIDTH_SGI"         count="1"  value="0x80D9">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_RED_SIZE_SGI"      count="1"  value="0x80DA">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_GREEN_SIZE_SGI"    count="1"  value="0x80DB">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_BLUE_SIZE_SGI"     count="1"  value="0x80DC">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_ALPHA_SIZE_SGI"    count="1"  value="0x80DD">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_LUMINANCE_SIZE_SGI" count="1" value="0x80DE">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_INTENSITY_SIZE_SGI" count="1" value="0x80DF">
-        <size name="GetColorTableParameterfvSGI" mode="get"/>
-        <size name="GetColorTableParameterivSGI" mode="get"/>
-    </enum>
-
-    <function name="ColorTableSGI" alias="ColorTable" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="const GLvoid *"/>
-    </function>
-
-    <function name="ColorTableParameterfvSGI" alias="ColorTableParameterfv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="ColorTableParameterivSGI" alias="ColorTableParameteriv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-    </function>
-
-    <function name="CopyColorTableSGI" alias="CopyColorTable" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-    </function>
-
-    <function name="GetColorTableSGI" alias="GetColorTable" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
-        <glx vendorpriv="4098" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetColorTableParameterfvSGI" alias="GetColorTableParameterfv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx vendorpriv="4099"/>
-    </function>
-
-    <function name="GetColorTableParameterivSGI" alias="GetColorTableParameteriv" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="4100"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_pixel_texture" number="15">
-    <function name="PixelTexGenParameteriSGIS" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="PixelTexGenParameterivSGIS" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="PixelTexGenParameterfSGIS" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="PixelTexGenParameterfvSGIS" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetPixelTexGenParameterivSGIS" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetPixelTexGenParameterfvSGIS" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_texture4D" number="16">
-    <function name="TexImage4DSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="size4d" type="GLsizei"/>
-        <param name="border" type="GLint"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_extent="size4d" img_format="format" img_type="type" img_target="target" img_null_flag="true" img_pad_dimensions="true"/>
-        <glx rop="2057" ignore="true"/>
-    </function>
-
-    <function name="TexSubImage4DSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="level" type="GLint"/>
-        <param name="xoffset" type="GLint"/>
-        <param name="yoffset" type="GLint"/>
-        <param name="zoffset" type="GLint"/>
-        <param name="woffset" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-        <param name="height" type="GLsizei"/>
-        <param name="depth" type="GLsizei"/>
-        <param name="size4d" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="UNUSED" type="GLuint" padding="true"/>
-        <param name="pixels" type="const GLvoid *" img_width="width" img_height="height" img_depth="depth" img_extent="size4d" img_xoff="xoffset" img_yoff="yoffset" img_zoff="zoffset" img_woff="woffset" img_format="format" img_type="type" img_target="target" img_pad_dimensions="true"/>
-        <glx rop="2058" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGI_texture_color_table" number="17">
-    <enum name="TEXTURE_COLOR_TABLE_SGI"                  value="0x80BC"/>
-    <enum name="PROXY_TEXTURE_COLOR_TABLE_SGI"            value="0x80BD"/>
-</category>
-
-<!-- Extension number 19 is not listed in the extension registry. -->
-
-<category name="GL_EXT_texture_object" number="20">
-    <function name="AreTexturesResidentEXT" alias="AreTexturesResident">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <param name="residences" type="GLboolean *" output="true" count="n"/>
-        <return type="GLboolean"/>
-        <glx vendorpriv="11" handcode="client" always_array="true"/>
-    </function>
-
-    <function name="BindTextureEXT" alias="BindTexture">
-        <param name="target" type="GLenum"/>
-        <param name="texture" type="GLuint"/>
-    </function>
-
-    <function name="DeleteTexturesEXT" alias="DeleteTextures">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="const GLuint *" count="n"/>
-        <glx vendorpriv="12"/>
-    </function>
-
-    <function name="GenTexturesEXT" alias="GenTextures">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="textures" type="GLuint *" output="true" count="n"/>
-        <glx vendorpriv="13" always_array="true"/>
-    </function>
-
-    <function name="IsTextureEXT" alias="IsTexture">
-        <param name="texture" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx vendorpriv="14"/>
-    </function>
-
-    <function name="PrioritizeTexturesEXT" alias="PrioritizeTextures">
-        <param name="n" type="GLsizei"/>
-        <param name="textures" type="const GLuint *"/>
-        <param name="priorities" type="const GLclampf *"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_detail_texture" number="21">
-    <function name="DetailTexFuncSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="points" type="const GLfloat *" count="n"/>
-        <glx rop="2051" ignore="true"/>
-    </function>
-
-    <function name="GetDetailTexFuncSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="points" type="GLfloat *" output="true"/>
-        <glx vendorpriv="4096" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_sharpen_texture" number="22">
-    <function name="SharpenTexFuncSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="points" type="const GLfloat *" count="n" count_scale="2"/>
-        <glx rop="2052" ignore="true"/>
-    </function>
-
-    <function name="GetSharpenTexFuncSGIS">
-        <param name="target" type="GLenum"/>
-        <param name="points" type="GLfloat *" output="true"/>
-        <glx vendorpriv="4097" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_multisample" number="25">
-    <function name="SampleMaskSGIS" offset="assign" static_dispatch="false">
-        <param name="value" type="GLclampf"/>
-        <param name="invert" type="GLboolean"/>
-        <glx rop="2048"/>
-    </function>
-
-    <function name="SamplePatternSGIS" offset="assign" static_dispatch="false">
-        <param name="pattern" type="GLenum"/>
-        <glx rop="2049"/>
-    </function>
-</category>
-
-<!-- Extension number 26 is not listed in the extension registry. -->
-
-<category name="GL_EXT_rescale_normal" number="27">
-    <enum name="RESCALE_NORMAL_EXT"            count="1"  value="0x803A">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<!-- Extension number 28 is a GLX extension. -->
-<!-- Extension number 29 is not listed in the extension registry. -->
-
-<category name="GL_EXT_vertex_array" number="30">
-    <function name="ArrayElementEXT" alias="ArrayElement">
-        <param name="i" type="GLint"/>
-    </function>
-
-    <function name="ColorPointerEXT" offset="assign">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="DrawArraysEXT" alias="DrawArrays">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-    </function>
-
-    <function name="EdgeFlagPointerEXT" offset="assign">
-        <param name="stride" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="pointer" type="const GLboolean *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="GetPointervEXT" alias="GetPointerv">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **" output="true"/>
-    </function>
-
-    <function name="IndexPointerEXT" offset="assign">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="NormalPointerEXT" offset="assign">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="TexCoordPointerEXT" offset="assign">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="VertexPointerEXT" offset="assign">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_generate_mipmap" number="32">
-    <enum name="GENERATE_MIPMAP_SGIS"          count="1"  value="0x8191">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="GENERATE_MIPMAP_HINT_SGIS"                value="0x8192"/>
-</category>
-
-<category name="GL_SGIX_clipmap" number="33">
-    <enum name="LINEAR_CLIPMAP_LINEAR_SGIX"               value="0x8170"/>
-    <enum name="TEXTURE_CLIPMAP_CENTER_SGIX"   count="2"  value="0x8171">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_CLIPMAP_FRAME_SGIX"    count="1"  value="0x8172">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_CLIPMAP_OFFSET_SGIX"   count="2"  value="0x8173">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_CLIPMAP_VIRTUAL_DEPTH_SGIX" count="3" value="0x8174">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_CLIPMAP_LOD_OFFSET_SGIX"          value="0x8175"/>
-    <enum name="TEXTURE_CLIPMAP_DEPTH_SGIX"               value="0x8176"/>
-    <enum name="MAX_CLIPMAP_DEPTH_SGIX"                   value="0x8177"/>
-    <enum name="MAX_CLIPMAP_VIRTUAL_DEPTH_SGIX"           value="0x8178"/>
-    <enum name="NEAREST_CLIPMAP_NEAREST_SGIX"             value="0x844D"/>
-    <enum name="NEAREST_CLIPMAP_LINEAR_SGIX"              value="0x844E"/>
-    <enum name="LINEAR_CLIPMAP_NEAREST_SGIX"              value="0x844F"/>
-</category>
-
-<category name="GL_SGIX_shadow" number="34">
-    <enum name="TEXTURE_COMPARE_SGIX"          count="1"  value="0x819A">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_COMPARE_OPERATOR_SGIX" count="1"  value="0x819B">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_LEQUAL_R_SGIX"                    value="0x819C"/>
-    <enum name="TEXTURE_GEQUAL_R_SGIX"                    value="0x819D"/>
-</category>
-
-<category name="GL_SGIS_texture_edge_clamp" number="35">
-    <enum name="CLAMP_TO_EDGE_SGIS"                       value="0x812F"/>
-</category>
-
-<category name="GL_SGIS_texture_border_clamp" number="36">
-    <enum name="CLAMP_TO_BORDER_SGIS"                     value="0x812D"/>
-</category>
-
-<category name="GL_EXT_blend_minmax" number="37">
-    <enum name="FUNC_ADD_EXT"                             value="0x8006"/>
-    <enum name="MIN_EXT"                                  value="0x8007"/>
-    <enum name="MAX_EXT"                                  value="0x8008"/>
-    <enum name="BLEND_EQUATION_EXT"            count="1"  value="0x8009">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="BlendEquationEXT" alias="BlendEquation">
-        <param name="mode" type="GLenum"/>
-    </function>
-</category>
-
-<category name="GL_EXT_blend_subtract" number="38">
-    <enum name="FUNC_SUBTRACT_EXT"                        value="0x800A"/>
-    <enum name="FUNC_REVERSE_SUBTRACT_EXT"                value="0x800B"/>
-
-    <!-- <function name="BlendEquationEXT" alias="BlendEquation">
-        <param name="mode" type="GLenum"/>
-    </function> -->
-</category>
-
-<!-- Extension number 40 is a GLX extension. -->
-<!-- Extension number 41 is a GLX extension. -->
-<!-- Extension number 42 is a GLX extension. -->
-<!-- Extension number 43 is a GLX extension. -->
-<!-- Extension number 44 is a GLX extension. -->
-<!-- Extension number 46 is not listed in the extension registry. -->
-<!-- Extension number 47 is a GLX extension. -->
-<!-- Extension number 48 is not listed in the extension registry. -->
-<!-- Extension number 49 is a GLX extension. -->
-<!-- Extension number 50 is a GLX extension. -->
-
-<category name="GL_SGIX_sprite" number="52">
-    <function name="SpriteParameterfSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="SpriteParameterfvSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="SpriteParameteriSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="SpriteParameterivSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_point_parameters" number="54">
-    <enum name="POINT_SIZE_MIN_EXT"            count="1"  value="0x8126">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_SIZE_MAX_EXT"            count="1"  value="0x8127">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_FADE_THRESHOLD_SIZE_EXT" count="1"  value="0x8128">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_DISTANCE_ATTENUATION_EXT" count="3" value="0x8129">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-
-    <function name="PointParameterfEXT" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="2065"/>
-    </function>
-
-    <function name="PointParameterfvEXT" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="2066"/>
-    </function>
-</category>
-
-<category name="GL_SGIX_instruments" number="55">
-    <function name="GetInstrumentsSGIX">
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="InstrumentsBufferSGIX">
-        <param name="size" type="GLsizei"/>
-        <param name="buffer" type="GLint *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="PollInstrumentsSGIX">
-        <param name="marker_p" type="GLint *" output="true"/>
-        <return type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ReadInstrumentsSGIX">
-        <param name="marker" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="StartInstrumentsSGIX">
-        <glx ignore="true"/>
-    </function>
-
-    <function name="StopInstrumentsSGIX">
-        <param name="marker" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIX_texture_scale_bias" number="56">
-    <enum name="POST_TEXTURE_FILTER_BIAS_SGIX"  count="4" value="0x8179">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="POST_TEXTURE_FILTER_SCALE_SGIX" count="4" value="0x817A">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="POST_TEXTURE_FILTER_BIAS_RANGE_SGIX"      value="0x817B"/>
-    <enum name="POST_TEXTURE_FILTER_SCALE_RANGE_SGIX"     value="0x817C"/>
-</category>
-
-<category name="GL_SGIX_framezoom" number="57">
-    <function name="FrameZoomSGIX">
-        <param name="factor" type="GLint"/>
-        <glx rop="2072" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIX_tag_sample_buffer" number="58">
-    <function name="TagSampleBufferSGIX">
-        <glx rop="2050" ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 59 is not listed in the extension registry. -->
-
-<category name="GL_SGIX_reference_plane" number="60">
-    <function name="ReferencePlaneSGIX">
-        <param name="equation" type="const GLdouble *" count="4"/>
-        <glx rop="2071" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIX_flush_raster" number="61">
-    <function name="FlushRasterSGIX">
-        <glx vendorpriv="4105" ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 62 is a GLX extension. -->
-
-<category name="GL_SGIX_depth_texture" number="63">
-    <enum name="DEPTH_COMPONENT16_SGIX"                   value="0x81A5"/>
-    <enum name="DEPTH_COMPONENT24_SGIX"                   value="0x81A6"/>
-    <enum name="DEPTH_COMPONENT32_SGIX"                   value="0x81A7"/>
-</category>
-
-<category name="GL_SGIS_fog_function" number="64">
-    <function name="FogFuncSGIS">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="points" type="const GLfloat *" count="n" count_scale="2"/>
-        <glx rop="2067" ignore="true"/>
-    </function>
-
-    <function name="GetFogFuncSGIS">
-        <param name="points" type="GLfloat *" output="true"/>
-        <!-- GLX protocol for this function is unknown. -->
-    </function>
-</category>
-
-<category name="GL_SGIX_fog_offset" number="65">
-    <enum name="FOG_OFFSET_SGIX"                          value="0x8198"/>
-    <enum name="FOG_OFFSET_VALUE_SGIX"         count="1"  value="0x8199">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-    </enum>
-</category>
-
-<category name="GL_HP_image_transform" number="66">
-    <function name="ImageTransformParameteriHP">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-    </function>
-
-    <function name="ImageTransformParameterfHP">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-    </function>
-
-    <function name="ImageTransformParameterivHP">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-    </function>
-
-    <function name="ImageTransformParameterfvHP">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="GetImageTransformParameterivHP">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-    </function>
-
-    <function name="GetImageTransformParameterfvHP">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-    </function>
-</category>
-
-<category name="GL_HP_convolution_border_modes" number="67">
-    <enum name="IGNORE_BORDER_HP"                         value="0x8150"/>
-    <enum name="CONSTANT_BORDER_HP"                       value="0x8151"/>
-    <enum name="REPLICATE_BORDER_HP"                      value="0x8153"/>
-    <enum name="CONVOLUTION_BORDER_COLOR_HP"   count="4"  value="0x8154">
-        <size name="ConvolutionParameterfv"/>
-        <size name="ConvolutionParameteriv"/>
-        <size name="GetConvolutionParameterfv" mode="get"/>
-        <size name="GetConvolutionParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<!-- Extension number 68 is not listed in the extension registry. -->
-<!-- Extension number 70 is not listed in the extension registry. -->
-<!-- Extension number 71 is not listed in the extension registry. -->
-<!-- Extension number 72 is not listed in the extension registry. -->
-<!-- Extension number 73 is not listed in the extension registry. -->
-
-<category name="GL_EXT_color_subtable" number="74">
-    <function name="ColorSubTableEXT" alias="ColorSubTable" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="start" type="GLsizei"/>
-        <param name="count" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="data" type="const GLvoid *"/>
-    </function>
-
-    <function name="CopyColorSubTableEXT" alias="CopyColorSubTable" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="start" type="GLsizei"/>
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="width" type="GLsizei"/>
-    </function>
-</category>
-
-<!-- Extension number 75 is a GLU extension. -->
-
-<category name="GL_PGI_misc_hints" number="77">
-    <function name="HintPGI">
-        <param name="target" type="GLenum"/>
-        <param name="mode" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_paletted_texture" number="78">
-    <enum name="COLOR_TABLE_FORMAT_EXT"        count="1"  value="0x80D8">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_WIDTH_EXT"         count="1"  value="0x80D9">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_RED_SIZE_EXT"      count="1"  value="0x80DA">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_GREEN_SIZE_EXT"    count="1"  value="0x80DB">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_BLUE_SIZE_EXT"     count="1"  value="0x80DC">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_ALPHA_SIZE_EXT"    count="1"  value="0x80DD">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_LUMINANCE_SIZE_EXT" count="1" value="0x80DE">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="COLOR_TABLE_INTENSITY_SIZE_EXT" count="1" value="0x80DF">
-        <size name="GetColorTableParameterfv" mode="get"/>
-        <size name="GetColorTableParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_INDEX_SIZE_EXT"        count="1"  value="0x80ED">
-        <size name="GetTexLevelParameterfv" mode="get"/>
-        <size name="GetTexLevelParameteriv" mode="get"/>
-    </enum>
-
-    <function name="ColorTableEXT" alias="ColorTable">
-        <param name="target" type="GLenum"/>
-        <param name="internalformat" type="GLenum"/>
-        <param name="width" type="GLsizei"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="const GLvoid *"/>
-    </function>
-
-    <function name="GetColorTableEXT" alias="GetColorTable">
-        <param name="target" type="GLenum"/>
-        <param name="format" type="GLenum"/>
-        <param name="type" type="GLenum"/>
-        <param name="table" type="GLvoid *" output="true" img_width="width" img_format="format" img_type="type"/>
-        <glx vendorpriv="4098" dimensions_in_reply="true"/>
-    </function>
-
-    <function name="GetColorTableParameterivEXT" alias="GetColorTableParameteriv">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="4100"/>
-    </function>
-
-    <function name="GetColorTableParameterfvEXT" alias="GetColorTableParameterfv">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx vendorpriv="4099"/>
-    </function>
-</category>
-
-<category name="GL_EXT_clip_volume_hint" number="79">
-    <enum name="CLIP_VOLUME_CLIPPING_HINT_EXT" count="1"  value="0x80F0">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_SGIX_list_priority" number="80">
-    <function name="GetListParameterfvSGIX">
-        <param name="list" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetListParameterivSGIX">
-        <param name="list" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ListParameterfSGIX">
-        <param name="list" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ListParameterfvSGIX">
-        <param name="list" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ListParameteriSGIX">
-        <param name="list" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="ListParameterivSGIX">
-        <param name="list" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 82 is not listed in the extension registry. -->
-<!-- Extension number 83 is a GLX extension. -->
-
-<category name="GL_SGIX_texture_lod_bias" number="84">
-    <enum name="TEXTURE_LOD_BIAS_S_SGIX"       count="1"  value="0x818E">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_LOD_BIAS_T_SGIX"       count="1"  value="0x818F">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_LOD_BIAS_R_SGIX"       count="1"  value="0x8190">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<!-- Extension number 85 is a GLU extension. -->
-<!-- Extension number 86 is a GLX extension. -->
-<!-- Extension number 87 is not listed in the extension registry. -->
-<!-- Extension number 88 is not listed in the extension registry. -->
-<!-- Extension number 89 is not listed in the extension registry. -->
-
-
-<category name="GL_SGIX_shadow_ambient" number="90">
-    <enum name="SHADOW_AMBIENT_SGIX"           count="1"  value="0x80BF">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<!-- Extension number 91 is a GLX extension. -->
-<!-- Extension number 92 is a GLX extension. -->
-
-<category name="GL_EXT_index_material" number="94">
-    <function name="IndexMaterialEXT">
-        <param name="face" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_index_func" number="95">
-    <function name="IndexFuncEXT">
-        <param name="func" type="GLenum"/>
-        <param name="ref" type="GLclampf"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_compiled_vertex_array" number="97">
-    <function name="LockArraysEXT" offset="assign">
-        <param name="first" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <glx handcode="true" ignore="true"/>
-    </function>
-
-    <function name="UnlockArraysEXT" offset="assign">
-        <glx handcode="true" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_cull_vertex" number="98">
-    <enum name="CULL_VERTEX_EXT"                          value="0x81AA"/>
-    <enum name="CULL_VERTEX_OBJECT_POSITION_EXT" count="4" value="0x81AB">
-        <size name="CullParameterfv"/>
-        <size name="CullParameterdv"/>
-    </enum>
-    <enum name="CULL_VERTEX_EYE_POSITION_EXT"  count="4"  value="0x81AC">
-        <size name="CullParameterfv"/>
-        <size name="CullParameterdv"/>
-    </enum>
-
-    <function name="CullParameterdvEXT" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *"/> <!-- Spec bug. Should be const. -->
-        <glx ignore="true"/>
-    </function>
-
-    <function name="CullParameterfvEXT" offset="assign" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *"/> <!-- Spec bug. Should be const. -->
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 99 is not listed in the extension registry. -->
-<!-- Extension number 100 is a GLU extension. -->
-
-<!-- Shouldn't this be EXT_fragment_lighting? -->
-<category name="GL_SGIX_fragment_lighting" number="102">
-    <function name="FragmentColorMaterialSGIX">
-        <param name="face" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightfSGIX">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightfvSGIX">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightiSGIX">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightivSGIX">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightModelfSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightModelfvSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightModeliSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentLightModelivSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentMaterialfSGIX">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentMaterialfvSGIX">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentMaterialiSGIX">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FragmentMaterialivSGIX">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetFragmentLightfvSGIX">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetFragmentLightivSGIX">
-        <param name="light" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetFragmentMaterialfvSGIX">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetFragmentMaterialivSGIX">
-        <param name="face" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="LightEnviSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 103 is not listed in the extension registry. -->
-<!-- Extension number 104 is not listed in the extension registry. -->
-<!-- Extension number 105 is not listed in the extension registry. -->
-<!-- Extension number 106 is not listed in the extension registry. -->
-<!-- Extension number 107 is not listed in the extension registry. -->
-<!-- Extension number 108 is not listed in the extension registry. -->
-<!-- Extension number 109 is not listed in the extension registry. -->
-
-<category name="GL_IBM_rasterpos_clip" number="110">
-    <enum name="RASTER_POSITION_UNCLIPPED_IBM"  count="1" value="0x19262">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_EXT_draw_range_elements" number="112">
-    <function name="DrawRangeElementsEXT" alias="DrawRangeElements">
-        <param name="mode" type="GLenum"/>
-        <param name="start" type="GLuint"/>
-        <param name="end" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<!-- Extension number 115 is a GLX extension. -->
-<!-- Extension number 116 is not listed in the extension registry. -->
-
-<category name="GL_EXT_light_texture" number="117">
-    <function name="ApplyTextureEXT">
-        <param name="mode" type="GLenum"/>
-    </function>
-
-    <function name="TextureLightEXT">
-        <param name="pname" type="GLenum"/>
-    </function>
-
-    <function name="TextureMaterialEXT">
-        <param name="face" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-    </function>
-</category>
-
-<!-- Extension number 118 is not listed in the extension registry. -->
-<!-- Extension number 121 is not listed in the extension registry. -->
-<!-- Extension number 122 is not listed in the extension registry. -->
-<!-- Extension number 123 is not listed in the extension registry. -->
-<!-- Extension number 124 is not listed in the extension registry. -->
-<!-- Extension number 125 is not listed in the extension registry. -->
-<!-- Extension number 126 is not listed in the extension registry. -->
-<!-- Extension number 128 is not listed in the extension registry. -->
-<!-- Extension number 130 is not listed in the extension registry. -->
-<!-- Extension number 131 is not listed in the extension registry. -->
-
-<category name="GL_SGIX_async" number="132">
-    <function name="AsyncMarkerSGIX">
-        <param name="marker" type="GLuint"/>
-    </function>
-
-    <function name="FinishAsyncSGIX">
-        <param name="markerp" type="GLuint *"/> <!-- Spec bug. Should be const. -->
-        <return type="GLint"/>
-    </function>
-
-    <function name="PollAsyncSGIX">
-        <param name="markerp" type="GLuint *"/> <!-- Spec bug. Should be const. -->
-        <return type="GLint"/>
-    </function>
-
-    <function name="GenAsyncMarkersSGIX">
-        <param name="range" type="GLsizei"/>
-        <return type="GLuint"/>
-    </function>
-
-    <function name="DeleteAsyncMarkersSGIX">
-        <param name="marker" type="GLuint"/>
-        <param name="range" type="GLsizei"/>
-    </function>
-
-    <function name="IsAsyncMarkerSGIX">
-        <param name="marker" type="GLuint"/>
-        <return type="GLboolean"/>
-    </function>
-</category>
-
-<category name="GL_INTEL_parallel_arrays" number="136">
-    <function name="VertexPointervINTEL">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="pointer" type="const GLvoid **"/>
-    </function>
-
-    <function name="NormalPointervINTEL">
-        <param name="type" type="GLenum"/>
-        <param name="pointer" type="const GLvoid **"/>
-    </function>
-
-    <function name="ColorPointervINTEL">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="pointer" type="const GLvoid **"/>
-    </function>
-
-    <function name="TexCoordPointervINTEL">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="pointer" type="const GLvoid **"/>
-    </function>
-</category>
-
-<category name="GL_HP_occlusion_test" number="137">
-    <enum name="OCCLUSION_TEST_HP"             count="1"  value="0x8165">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="OCCLUSION_TEST_RESULT_HP"      count="1"  value="0x8166">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_EXT_pixel_transform" number="138">
-    <function name="PixelTransformParameteriEXT">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-    </function>
-
-    <function name="PixelTransformParameterfEXT">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-    </function>
-
-    <function name="PixelTransformParameterivEXT">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-    </function>
-
-    <function name="PixelTransformParameterfvEXT">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-</category>
-
-<!-- Extension number 140 is not listed in the extension registry. -->
-
-<category name="GL_EXT_shared_texture_palette" number="141">
-    <enum name="SHARED_TEXTURE_PALETTE_EXT"    count="1"  value="0x81FB"/>
-</category>
-
-<!-- Extension number 142 is a GLX extension. -->
-<!-- Extension number 143 is not listed in the extension registry. -->
-
-<category name="GL_EXT_separate_specular_color" number="144">
-    <enum name="LIGHT_MODEL_COLOR_CONTROL_EXT" count="1"  value="0x81F8">
-        <size name="LightModelfv"/>
-        <size name="LightModeliv"/>
-    </enum>
-    <enum name="SINGLE_COLOR_EXT"                         value="0x81F9"/>
-    <enum name="SEPARATE_SPECULAR_COLOR_EXT"              value="0x81FA"/>
-</category>
-
-<category name="GL_EXT_secondary_color" number="145">
-    <function name="SecondaryColor3bEXT" offset="assign" vectorequiv="SecondaryColor3bvEXT">
-        <param name="red" type="GLbyte"/>
-        <param name="green" type="GLbyte"/>
-        <param name="blue" type="GLbyte"/>
-    </function>
-
-    <function name="SecondaryColor3bvEXT" offset="assign">
-        <param name="v" type="const GLbyte *" count="3"/>
-        <glx rop="4126"/>
-    </function>
-
-    <function name="SecondaryColor3dEXT" offset="assign" vectorequiv="SecondaryColor3dvEXT">
-        <param name="red" type="GLdouble"/>
-        <param name="green" type="GLdouble"/>
-        <param name="blue" type="GLdouble"/>
-    </function>
-
-    <function name="SecondaryColor3dvEXT" offset="assign">
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="4130"/>
-    </function>
-
-    <function name="SecondaryColor3fEXT" offset="assign" vectorequiv="SecondaryColor3fvEXT">
-        <param name="red" type="GLfloat"/>
-        <param name="green" type="GLfloat"/>
-        <param name="blue" type="GLfloat"/>
-    </function>
-
-    <function name="SecondaryColor3fvEXT" offset="assign">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="4129"/>
-    </function>
-
-    <function name="SecondaryColor3iEXT" offset="assign" vectorequiv="SecondaryColor3ivEXT">
-        <param name="red" type="GLint"/>
-        <param name="green" type="GLint"/>
-        <param name="blue" type="GLint"/>
-    </function>
-
-    <function name="SecondaryColor3ivEXT" offset="assign">
-        <param name="v" type="const GLint *" count="3"/>
-        <glx rop="4128"/>
-    </function>
-
-    <function name="SecondaryColor3sEXT" offset="assign" vectorequiv="SecondaryColor3svEXT">
-        <param name="red" type="GLshort"/>
-        <param name="green" type="GLshort"/>
-        <param name="blue" type="GLshort"/>
-    </function>
-
-    <function name="SecondaryColor3svEXT" offset="assign">
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="4127"/>
-    </function>
-
-    <function name="SecondaryColor3ubEXT" offset="assign" vectorequiv="SecondaryColor3ubvEXT">
-        <param name="red" type="GLubyte"/>
-        <param name="green" type="GLubyte"/>
-        <param name="blue" type="GLubyte"/>
-    </function>
-
-    <function name="SecondaryColor3ubvEXT" offset="assign">
-        <param name="v" type="const GLubyte *" count="3"/>
-        <glx rop="4131"/>
-    </function>
-
-    <function name="SecondaryColor3uiEXT" offset="assign" vectorequiv="SecondaryColor3uivEXT">
-        <param name="red" type="GLuint"/>
-        <param name="green" type="GLuint"/>
-        <param name="blue" type="GLuint"/>
-    </function>
-
-    <function name="SecondaryColor3uivEXT" offset="assign">
-        <param name="v" type="const GLuint *" count="3"/>
-        <glx rop="4133"/>
-    </function>
-
-    <function name="SecondaryColor3usEXT" offset="assign" vectorequiv="SecondaryColor3usvEXT">
-        <param name="red" type="GLushort"/>
-        <param name="green" type="GLushort"/>
-        <param name="blue" type="GLushort"/>
-    </function>
-
-    <function name="SecondaryColor3usvEXT" offset="assign">
-        <param name="v" type="const GLushort *" count="3"/>
-        <glx rop="4132"/>
-    </function>
-
-    <function name="SecondaryColorPointerEXT" offset="assign">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_texture_perturb_normal" number="147">
-    <function name="TextureNormalEXT">
-        <param name="mode" type="GLenum"/>
-    </function>
-</category>
-
-<category name="GL_EXT_multi_draw_arrays" number="148">
-    <function name="MultiDrawArraysEXT" offset="assign">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint *"/> <!-- Spec bug. Should be const. -->
-        <param name="count" type="GLsizei *"/> <!-- Spec bug. Should be const. -->
-        <param name="primcount" type="GLsizei"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="MultiDrawElementsEXT" offset="assign">
-        <param name="mode" type="GLenum"/>
-        <param name="count" type="const GLsizei *"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid **"/>
-        <param name="primcount" type="GLsizei"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_fog_coord" number="149">
-    <function name="FogCoordfEXT" offset="assign" vectorequiv="FogCoordfvEXT">
-        <param name="coord" type="GLfloat"/>
-    </function>
-
-    <function name="FogCoordfvEXT" offset="assign">
-        <param name="coord" type="const GLfloat *" count="1"/>
-        <glx rop="4124"/>
-    </function>
-
-    <function name="FogCoorddEXT" offset="assign" vectorequiv="FogCoorddvEXT">
-        <param name="coord" type="GLdouble"/>
-    </function>
-
-    <function name="FogCoorddvEXT" offset="assign">
-        <param name="coord" type="const GLdouble *" count="1"/>
-        <glx rop="4125"/>
-    </function>
-
-    <function name="FogCoordPointerEXT" offset="assign">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-</category>
-
-<!-- Extension number 150 is not listed in the extension registry. -->
-<!-- Extension number 151 is not listed in the extension registry. -->
-<!-- Extension number 152 is not listed in the extension registry. -->
-<!-- Extension number 153 is not listed in the extension registry. -->
-<!-- Extension number 154 is not listed in the extension registry. -->
-
-<category name="GL_EXT_coordinate_frame" number="156">
-    <function name="Tangent3bEXT">
-        <param name="tx" type="GLbyte"/>
-        <param name="ty" type="GLbyte"/>
-        <param name="tz" type="GLbyte"/>
-    </function>
-
-    <function name="Tangent3bvEXT">
-        <param name="v" type="const GLbyte *"/>
-    </function>
-
-    <function name="Tangent3dEXT">
-        <param name="tx" type="GLdouble"/>
-        <param name="ty" type="GLdouble"/>
-        <param name="tz" type="GLdouble"/>
-    </function>
-
-    <function name="Tangent3dvEXT">
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="Tangent3fEXT">
-        <param name="tx" type="GLfloat"/>
-        <param name="ty" type="GLfloat"/>
-        <param name="tz" type="GLfloat"/>
-    </function>
-
-    <function name="Tangent3fvEXT">
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="Tangent3iEXT">
-        <param name="tx" type="GLint"/>
-        <param name="ty" type="GLint"/>
-        <param name="tz" type="GLint"/>
-    </function>
-
-    <function name="Tangent3ivEXT">
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="Tangent3sEXT">
-        <param name="tx" type="GLshort"/>
-        <param name="ty" type="GLshort"/>
-        <param name="tz" type="GLshort"/>
-    </function>
-
-    <function name="Tangent3svEXT">
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="Binormal3bEXT">
-        <param name="bx" type="GLbyte"/>
-        <param name="by" type="GLbyte"/>
-        <param name="bz" type="GLbyte"/>
-    </function>
-
-    <function name="Binormal3bvEXT">
-        <param name="v" type="const GLbyte *"/>
-    </function>
-
-    <function name="Binormal3dEXT">
-        <param name="bx" type="GLdouble"/>
-        <param name="by" type="GLdouble"/>
-        <param name="bz" type="GLdouble"/>
-    </function>
-
-    <function name="Binormal3dvEXT">
-        <param name="v" type="const GLdouble *"/>
-    </function>
-
-    <function name="Binormal3fEXT">
-        <param name="bx" type="GLfloat"/>
-        <param name="by" type="GLfloat"/>
-        <param name="bz" type="GLfloat"/>
-    </function>
-
-    <function name="Binormal3fvEXT">
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="Binormal3iEXT">
-        <param name="bx" type="GLint"/>
-        <param name="by" type="GLint"/>
-        <param name="bz" type="GLint"/>
-    </function>
-
-    <function name="Binormal3ivEXT">
-        <param name="v" type="const GLint *"/>
-    </function>
-
-    <function name="Binormal3sEXT">
-        <param name="bx" type="GLshort"/>
-        <param name="by" type="GLshort"/>
-        <param name="bz" type="GLshort"/>
-    </function>
-
-    <function name="Binormal3svEXT">
-        <param name="v" type="const GLshort *"/>
-    </function>
-
-    <function name="TangentPointerEXT">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-
-    <function name="BinormalPointerEXT">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-</category>
-
-<!-- Extension number 157 is not listed in the extension registry. -->
-
-<category name="GL_EXT_texture_env_combine" number="158">
-    <enum name="COMBINE_EXT"                              value="0x8570"/>
-    <enum name="COMBINE_RGB_EXT"               count="1"  value="0x8571"/>
-    <enum name="COMBINE_ALPHA_EXT"             count="1"  value="0x8572"/>
-    <enum name="RGB_SCALE_EXT"                 count="1"  value="0x8573"/>
-    <enum name="ADD_SIGNED_EXT"                           value="0x8574"/>
-    <enum name="INTERPOLATE_EXT"                          value="0x8575"/>
-    <enum name="CONSTANT_EXT"                             value="0x8576"/>
-    <enum name="PRIMARY_COLOR_EXT"                        value="0x8577"/>
-    <enum name="PREVIOUS_EXT"                             value="0x8578"/>
-    <enum name="SOURCE0_RGB_EXT"               count="1"  value="0x8580"/>
-    <enum name="SOURCE1_RGB_EXT"               count="1"  value="0x8581"/>
-    <enum name="SOURCE2_RGB_EXT"               count="1"  value="0x8582"/>
-    <enum name="SOURCE0_ALPHA_EXT"             count="1"  value="0x8588"/>
-    <enum name="SOURCE1_ALPHA_EXT"             count="1"  value="0x8589"/>
-    <enum name="SOURCE2_ALPHA_EXT"             count="1"  value="0x858A"/>
-    <enum name="OPERAND0_RGB_EXT"              count="1"  value="0x8590"/>
-    <enum name="OPERAND1_RGB_EXT"              count="1"  value="0x8591"/>
-    <enum name="OPERAND2_RGB_EXT"              count="1"  value="0x8592"/>
-    <enum name="OPERAND0_ALPHA_EXT"            count="1"  value="0x8598"/>
-    <enum name="OPERAND1_ALPHA_EXT"            count="1"  value="0x8599"/>
-    <enum name="OPERAND2_ALPHA_EXT"            count="1"  value="0x859A"/>
-</category>
-
-<category name="GL_SGIX_pixel_texture" number="160">
-    <function name="PixelTexGenSGIX" offset="assign" static_dispatch="false">
-        <param name="mode" type="GLenum"/>
-        <glx rop="2059" ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 161 is not listed in the extension registry. -->
-<!-- Extension number 162 is not listed in the extension registry. -->
-
-<category name="GL_SUNX_constant_data" number="163">
-    <function name="FinishTextureSUNX">
-    </function>
-</category>
-
-<category name="GL_SUN_global_alpha" number="164">
-    <function name="GlobalAlphaFactorbSUN">
-        <param name="factor" type="GLbyte"/>
-    </function>
-
-    <function name="GlobalAlphaFactorsSUN">
-        <param name="factor" type="GLshort"/>
-    </function>
-
-    <function name="GlobalAlphaFactoriSUN">
-        <param name="factor" type="GLint"/>
-    </function>
-
-    <function name="GlobalAlphaFactorfSUN">
-        <param name="factor" type="GLfloat"/>
-    </function>
-
-    <function name="GlobalAlphaFactordSUN">
-        <param name="factor" type="GLdouble"/>
-    </function>
-
-    <function name="GlobalAlphaFactorubSUN">
-        <param name="factor" type="GLubyte"/>
-    </function>
-
-    <function name="GlobalAlphaFactorusSUN">
-        <param name="factor" type="GLushort"/>
-    </function>
-
-    <function name="GlobalAlphaFactoruiSUN">
-        <param name="factor" type="GLuint"/>
-    </function>
-</category>
-
-<category name="GL_SUN_triangle_list" number="165">
-    <function name="ReplacementCodeuiSUN">
-        <param name="code" type="GLuint"/>
-    </function>
-
-    <function name="ReplacementCodeusSUN">
-        <param name="code" type="GLushort"/>
-    </function>
-
-    <function name="ReplacementCodeubSUN">
-        <param name="code" type="GLubyte"/>
-    </function>
-
-    <function name="ReplacementCodeuivSUN">
-        <param name="code" type="const GLuint *"/>
-    </function>
-
-    <function name="ReplacementCodeusvSUN">
-        <param name="code" type="const GLushort *"/>
-    </function>
-
-    <function name="ReplacementCodeubvSUN">
-        <param name="code" type="const GLubyte *"/>
-    </function>
-
-    <function name="ReplacementCodePointerSUN">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-    </function>
-</category>
-
-<category name="GL_SUN_vertex" number="166">
-    <function name="Color4ubVertex2fSUN">
-        <param name="r" type="GLubyte"/>
-        <param name="g" type="GLubyte"/>
-        <param name="b" type="GLubyte"/>
-        <param name="a" type="GLubyte"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="Color4ubVertex2fvSUN">
-        <param name="c" type="const GLubyte *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="Color4ubVertex3fSUN">
-        <param name="r" type="GLubyte"/>
-        <param name="g" type="GLubyte"/>
-        <param name="b" type="GLubyte"/>
-        <param name="a" type="GLubyte"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="Color4ubVertex3fvSUN">
-        <param name="c" type="const GLubyte *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="Color3fVertex3fSUN">
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="Color3fVertex3fvSUN">
-        <param name="c" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="Normal3fVertex3fSUN">
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="Normal3fVertex3fvSUN">
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="Color4fNormal3fVertex3fSUN">
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="a" type="GLfloat"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="Color4fNormal3fVertex3fvSUN">
-        <param name="c" type="const GLfloat *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="TexCoord2fVertex3fSUN">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord2fVertex3fvSUN">
-        <param name="tc" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="TexCoord4fVertex4fSUN">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="p" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord4fVertex4fvSUN">
-        <param name="tc" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="TexCoord2fColor4ubVertex3fSUN">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLubyte"/>
-        <param name="g" type="GLubyte"/>
-        <param name="b" type="GLubyte"/>
-        <param name="a" type="GLubyte"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord2fColor4ubVertex3fvSUN">
-        <param name="tc" type="const GLfloat *"/>
-        <param name="c" type="const GLubyte *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="TexCoord2fColor3fVertex3fSUN">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord2fColor3fVertex3fvSUN">
-        <param name="tc" type="const GLfloat *"/>
-        <param name="c" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="TexCoord2fNormal3fVertex3fSUN">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord2fNormal3fVertex3fvSUN">
-        <param name="tc" type="const GLfloat *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="TexCoord2fColor4fNormal3fVertex3fSUN">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="a" type="GLfloat"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord2fColor4fNormal3fVertex3fvSUN">
-        <param name="tc" type="const GLfloat *"/>
-        <param name="c" type="const GLfloat *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="TexCoord4fColor4fNormal3fVertex4fSUN">
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="p" type="GLfloat"/>
-        <param name="q" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="a" type="GLfloat"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="TexCoord4fColor4fNormal3fVertex4fvSUN">
-        <param name="tc" type="const GLfloat *"/>
-        <param name="c" type="const GLfloat *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiColor4ubVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="r" type="GLubyte"/>
-        <param name="g" type="GLubyte"/>
-        <param name="b" type="GLubyte"/>
-        <param name="a" type="GLubyte"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiColor4ubVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="c" type="const GLubyte *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiColor3fVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiColor3fVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="c" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiNormal3fVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiNormal3fVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiColor4fNormal3fVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="a" type="GLfloat"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiColor4fNormal3fVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="c" type="const GLfloat *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiTexCoord2fVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiTexCoord2fVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="tc" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiTexCoord2fNormal3fVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiTexCoord2fNormal3fVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="tc" type="const GLfloat *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-
-    <function name="ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fSUN">
-        <param name="rc" type="GLuint"/>
-        <param name="s" type="GLfloat"/>
-        <param name="t" type="GLfloat"/>
-        <param name="r" type="GLfloat"/>
-        <param name="g" type="GLfloat"/>
-        <param name="b" type="GLfloat"/>
-        <param name="a" type="GLfloat"/>
-        <param name="nx" type="GLfloat"/>
-        <param name="ny" type="GLfloat"/>
-        <param name="nz" type="GLfloat"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="ReplacementCodeuiTexCoord2fColor4fNormal3fVertex3fvSUN">
-        <param name="rc" type="const GLuint *"/>
-        <param name="tc" type="const GLfloat *"/>
-        <param name="c" type="const GLfloat *"/>
-        <param name="n" type="const GLfloat *"/>
-        <param name="v" type="const GLfloat *"/>
-    </function>
-</category>
-
-<!-- Extension number 167 is a WGL extension. -->
-<!-- Extension number 168 is a WGL extension. -->
-<!-- Extension number 169 is a WGL extension. -->
-<!-- Extension number 170 is a WGL extension. -->
-<!-- Extension number 171 is a WGL extension. -->
-<!-- Extension number 172 is a WGL extension. -->
-
-<category name="GL_EXT_blend_func_separate" number="173">
-    <function name="BlendFuncSeparateEXT" offset="assign">
-        <param name="sfactorRGB" type="GLenum"/>
-        <param name="dfactorRGB" type="GLenum"/>
-        <param name="sfactorAlpha" type="GLenum"/>
-        <param name="dfactorAlpha" type="GLenum"/>
-        <glx rop="4134"/>
-    </function>
-</category>
-
-<category name="GL_EXT_stencil_wrap" number="176">
-    <enum name="INCR_WRAP_EXT"                            value="0x8507"/>
-    <enum name="DECR_WRAP_EXT"                            value="0x8508"/>
-</category>
-
-<!-- Extension number 177 is a WGL extension. -->
-
-<category name="GL_NV_texgen_reflection" number="179">
-    <enum name="NORMAL_MAP_NV"                            value="0x8511"/>
-    <enum name="REFLECTION_MAP_NV"                        value="0x8512"/>
-</category>
-
-<!-- Extension number 180 is not listed in the extension registry. -->
-
-<category name="GL_SUN_convolution_border_modes" number="182">
-    <enum name="WRAP_BORDER_SUN"                          value="0x81D4"/>
-</category>
-
-<!-- Extension number 183 is a GLX extension. -->
-<!-- Extension number 184 is not listed in the extension registry. -->
-
-<category name="GL_EXT_texture_env_add" number="185">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_EXT_texture_lod_bias" number="186">
-    <enum name="TEXTURE_LOD_BIAS_EXT"          count="1"  value="0x8501">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_EXT_texture_filter_anisotropic" number="187">
-    <enum name="TEXTURE_MAX_ANISOTROPY_EXT"    count="1"  value="0x84FE">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="MAX_TEXTURE_MAX_ANISOTROPY_EXT" count="1" value="0x84FF">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_EXT_vertex_weighting" number="188">
-    <function name="VertexWeightfEXT" vectorequiv="VertexWeightfvEXT">
-        <param name="weight" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="VertexWeightfvEXT">
-        <param name="weight" type="const GLfloat *" count="1"/>
-        <glx rop="4135" ignore="true"/>
-    </function>
-
-    <function name="VertexWeightPointerEXT">
-        <param name="size" type="GLsizei"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_NV_light_max_exponent" number="189">
-    <enum name="MAX_SHININESS_NV"              count="1"  value="0x8504">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="MAX_SPOT_EXPONENT_NV"          count="1"  value="0x8505">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_NV_vertex_array_range" number="190">
-    <function name="FlushVertexArrayRangeNV" offset="assign">
-        <glx ignore="true"/>
-    </function>
-
-    <function name="VertexArrayRangeNV" offset="assign">
-        <param name="length" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_NV_register_combiners" number="191">
-    <function name="CombinerParameterfvNV" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *" variable_param="pname"/>
-        <glx rop="4137" ignore="true"/>
-    </function>
-
-    <function name="CombinerParameterfNV" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-        <glx rop="4136" ignore="true"/>
-    </function>
-
-    <function name="CombinerParameterivNV" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="4139" ignore="true"/>
-    </function>
-
-    <function name="CombinerParameteriNV" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="4138" ignore="true"/>
-    </function>
-
-    <function name="CombinerInputNV" offset="assign">
-        <param name="stage" type="GLenum"/>
-        <param name="portion" type="GLenum"/>
-        <param name="variable" type="GLenum"/>
-        <param name="input" type="GLenum"/>
-        <param name="mapping" type="GLenum"/>
-        <param name="componentUsage" type="GLenum"/>
-        <glx rop="4140" ignore="true"/>
-    </function>
-
-    <function name="CombinerOutputNV" offset="assign">
-        <param name="stage" type="GLenum"/>
-        <param name="portion" type="GLenum"/>
-        <param name="abOutput" type="GLenum"/>
-        <param name="cdOutput" type="GLenum"/>
-        <param name="sumOutput" type="GLenum"/>
-        <param name="scale" type="GLenum"/>
-        <param name="bias" type="GLenum"/>
-        <param name="abDotProduct" type="GLboolean"/>
-        <param name="cdDotProduct" type="GLboolean"/>
-        <param name="muxSum" type="GLboolean"/>
-        <glx rop="4141" ignore="true"/>
-    </function>
-
-    <function name="FinalCombinerInputNV" offset="assign">
-        <param name="variable" type="GLenum"/>
-        <param name="input" type="GLenum"/>
-        <param name="mapping" type="GLenum"/>
-        <param name="componentUsage" type="GLenum"/>
-        <glx rop="4142" ignore="true"/>
-    </function>
-
-    <function name="GetCombinerInputParameterfvNV" offset="assign">
-        <param name="stage" type="GLenum"/>
-        <param name="portion" type="GLenum"/>
-        <param name="variable" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true"/>
-        <glx vendorpriv="1270" ignore="true"/>
-    </function>
-
-    <function name="GetCombinerInputParameterivNV" offset="assign">
-        <param name="stage" type="GLenum"/>
-        <param name="portion" type="GLenum"/>
-        <param name="variable" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-        <glx vendorpriv="1271" ignore="true"/>
-    </function>
-
-    <function name="GetCombinerOutputParameterfvNV" offset="assign">
-        <param name="stage" type="GLenum"/>
-        <param name="portion" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true"/>
-        <glx vendorpriv="1272" ignore="true"/>
-    </function>
-
-    <function name="GetCombinerOutputParameterivNV" offset="assign">
-        <param name="stage" type="GLenum"/>
-        <param name="portion" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-        <glx vendorpriv="1273" ignore="true"/>
-    </function>
-
-    <function name="GetFinalCombinerInputParameterfvNV" offset="assign">
-        <param name="variable" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true"/>
-        <glx vendorpriv="1274" ignore="true"/>
-    </function>
-
-    <function name="GetFinalCombinerInputParameterivNV" offset="assign">
-        <param name="variable" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-        <glx vendorpriv="1275" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_NV_fog_distance" number="192">
-    <enum name="FOG_DISTANCE_MODE_NV"          count="1"  value="0x855A">
-        <size name="Fogfv"/>
-        <size name="Fogiv"/>
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="EYE_RADIAL_NV"                            value="0x855B"/>
-    <enum name="EYE_PLANE_ABSOLUTE_NV"                    value="0x855C"/>
-</category>
-
-<category name="GL_NV_blend_square" number="194">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_NV_texture_env_combine4" number="195">
-    <enum name="COMBINE4"                                 value="0x8503"/>
-    <enum name="SOURCE3_RGB_NV"                count="1"  value="0x8583">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="SOURCE3_ALPHA_NV"              count="1"  value="0x858B">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND3_RGB_NV"               count="1"  value="0x8593">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="OPERAND3_ALPHA_NV"             count="1"  value="0x859B">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_MESA_resize_buffers" number="196">
-    <function name="ResizeBuffersMESA" offset="assign">
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_MESA_window_pos" number="197">
-    <function name="WindowPos2dMESA" offset="assign">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos2dvMESA" offset="assign">
-        <param name="v" type="const GLdouble *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos2fMESA" offset="assign">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos2fvMESA" offset="assign">
-        <param name="v" type="const GLfloat *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos2iMESA" offset="assign">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos2ivMESA" offset="assign">
-        <param name="v" type="const GLint *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos2sMESA" offset="assign">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos2svMESA" offset="assign">
-        <param name="v" type="const GLshort *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos3dMESA" offset="assign">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos3dvMESA" offset="assign">
-        <param name="v" type="const GLdouble *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos3fMESA" offset="assign" vectorequiv="WindowPos3fvMESA">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="WindowPos3fvMESA" offset="assign">
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="230"/>
-    </function>
-
-    <function name="WindowPos3iMESA" offset="assign">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos3ivMESA" offset="assign">
-        <param name="v" type="const GLint *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos3sMESA" offset="assign">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos3svMESA" offset="assign">
-        <param name="v" type="const GLshort *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="WindowPos4dMESA" offset="assign">
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="WindowPos4dvMESA" offset="assign">
-        <param name="v" type="const GLdouble *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="WindowPos4fMESA" offset="assign">
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="WindowPos4fvMESA" offset="assign">
-        <param name="v" type="const GLfloat *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="WindowPos4iMESA" offset="assign">
-        <param name="x" type="GLint"/>
-        <param name="y" type="GLint"/>
-        <param name="z" type="GLint"/>
-        <param name="w" type="GLint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="WindowPos4ivMESA" offset="assign">
-        <param name="v" type="const GLint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="WindowPos4sMESA" offset="assign">
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="WindowPos4svMESA" offset="assign">
-        <param name="v" type="const GLshort *"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_texture_compression_s3tc" number="198">
-    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT3_EXT"            value="0x83F2"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT5_EXT"            value="0x83F3"/>
-</category>
-
-<category name="GL_IBM_multimode_draw_arrays" number="200">
-    <function name="MultiModeDrawArraysIBM" offset="assign" static_dispatch="false">
-        <param name="mode" type="const GLenum *"/>
-        <param name="first" type="const GLint *"/>
-        <param name="count" type="const GLsizei *"/>
-        <param name="primcount" type="GLsizei"/>
-        <param name="modestride" type="GLint"/>
-        <glx handcode="true" ignore="true"/>
-    </function>
-
-    <function name="MultiModeDrawElementsIBM" offset="assign" static_dispatch="false">
-        <param name="mode" type="const GLenum *"/>
-        <param name="count" type="const GLsizei *"/>
-        <param name="type" type="GLenum"/>
-        <param name="indices" type="const GLvoid * const *"/>
-        <param name="primcount" type="GLsizei"/>
-        <param name="modestride" type="GLint"/>
-        <glx handcode="true" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_IBM_vertex_array_lists" number="201">
-    <function name="ColorPointerListIBM">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLvoid **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-
-    <function name="SecondaryColorPointerListIBM">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLvoid **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-
-    <function name="EdgeFlagPointerListIBM">
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLboolean **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-
-    <function name="FogCoordPointerListIBM">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLvoid **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-
-    <function name="IndexPointerListIBM">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLvoid **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-
-    <function name="NormalPointerListIBM">
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLvoid **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-
-    <function name="TexCoordPointerListIBM">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLvoid **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-
-    <function name="VertexPointerListIBM">
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLint"/>
-        <param name="pointer" type="const GLvoid **"/>
-        <param name="ptrstride" type="GLint"/>
-    </function>
-</category>
-
-<!-- Extension number 202 is not listed in the extension registry. -->
-<!-- Extension number 203 is not listed in the extension registry. -->
-<!-- Extension number 204 is not listed in the extension registry. -->
-<!-- Extension number 205 is not listed in the extension registry. -->
-
-<category name="GL_3DFX_texture_compression_FXT1" number="206">
-    <enum name="COMPRESSED_RGB_FXT1_3DFX"                 value="0x86B0"/>
-    <enum name="COMPRESSED_RGBA_FXT1_3DFX"                value="0x86B1"/>
-</category>
-
-<category name="GL_3DFX_multisample" number="207">
-    <enum name="MULTISAMPLE_3DFX"                         value="0x86B2"/>
-    <enum name="SAMPLE_BUFFERS_3DFX"                      value="0x86B3"/>
-    <enum name="SAMPLES_3DFX"                             value="0x86B4"/>
-    <enum name="MULTISAMPLE_BIT_3DFX"                     value="0x20000000"/>
-</category>
-
-<category name="GL_3DFX_tbuffer" number="208">
-    <function name="TbufferMask3DFX">
-        <param name="mask" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_multisample" number="209">
-    <function name="SampleMaskEXT" alias="SampleMaskSGIS" static_dispatch="false">
-        <param name="value" type="GLclampf"/>
-        <param name="invert" type="GLboolean"/>
-    </function>
-
-    <function name="SamplePatternEXT" alias="SamplePatternSGIS" static_dispatch="false">
-        <param name="pattern" type="GLenum"/>
-    </function>
-</category>
-
-<!-- Extension number 211 is not listed in the extension registry. -->
-<!-- Extension number 213 is not listed in the extension registry. -->
-
-<category name="GL_SGIS_texture_color_mask" number="214">
-    <enum name="TEXTURE_COLOR_WRITEMASK_SGIS"             value="0x81EF"/>
-
-    <function name="TextureColorMaskSGIS">
-        <param name="red" type="GLboolean"/>
-        <param name="green" type="GLboolean"/>
-        <param name="blue" type="GLboolean"/>
-        <param name="alpha" type="GLboolean"/>
-        <glx rop="2082" ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 215 is a GLX extension. -->
-<!-- Extension number 216 is a GLX extension. -->
-<!-- Extension number 217 is a GLX extension. -->
-<!-- Extension number 218 is a GLX extension. -->
-<!-- Extension number 219 is not listed in the extension registry. -->
-
-<category name="GL_EXT_texture_env_dot3" number="220">
-    <enum name="DOT3_RGB_EXT"                             value="0x8740"/>
-    <enum name="DOT3_RGBA_EXT"                            value="0x8741"/>
-</category>
-
-<category name="GL_ATI_texture_mirror_once" number="221">
-    <enum name="MIRROR_CLAMP_ATI"                         value="0x8742"/>
-    <enum name="MIRROR_CLAMP_TO_EDGE_ATI"                 value="0x8743"/>
-</category>
-
-<category name="GL_NV_fence" number="222">
-    <function name="DeleteFencesNV" offset="assign" static_dispatch="false">
-        <param name="n" type="GLsizei"/>
-        <param name="fences" type="const GLuint *"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GenFencesNV" offset="assign" static_dispatch="false">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="fences" type="GLuint *" output="true" count="n"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="IsFenceNV" offset="assign" static_dispatch="false">
-        <param name="fence" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="TestFenceNV" offset="assign" static_dispatch="false">
-        <param name="fence" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="GetFenceivNV" offset="assign" static_dispatch="false">
-        <param name="fence" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="FinishFenceNV" offset="assign" static_dispatch="false">
-        <param name="fence" type="GLuint"/>
-        <glx ignore="true"/>
-    </function>
-
-    <function name="SetFenceNV" offset="assign" static_dispatch="false">
-        <param name="fence" type="GLuint"/>
-        <param name="condition" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_IBM_texture_mirrored_repeat" number="224">
-    <enum name="MIRRORED_REPEAT_IBM"                      value="0x8370"/>
-</category>
-
-<category name="GL_NV_evaluators" number="225">
-    <function name="MapControlPointsNV">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="type" type="GLenum"/>
-        <param name="ustride" type="GLsizei"/>
-        <param name="vstride" type="GLsizei"/>
-        <param name="uorder" type="GLint"/>
-        <param name="vorder" type="GLint"/>
-        <param name="packed" type="GLboolean"/>
-        <param name="points" type="const GLvoid *"/>
-    </function>
-
-    <function name="MapParameterivNV">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *"/>
-    </function>
-
-    <function name="MapParameterfvNV">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="GetMapControlPointsNV">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="type" type="GLenum"/>
-        <param name="ustride" type="GLsizei"/>
-        <param name="vstride" type="GLsizei"/>
-        <param name="packed" type="GLboolean"/>
-        <param name="points" type="GLvoid *" output="true"/>
-    </function>
-
-    <function name="GetMapParameterivNV">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="GetMapParameterfvNV">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true"/>
-    </function>
-
-    <function name="GetMapAttribParameterivNV">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true"/>
-    </function>
-
-    <function name="GetMapAttribParameterfvNV">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true"/>
-    </function>
-
-    <function name="EvalMapsNV">
-        <param name="target" type="GLenum"/>
-        <param name="mode" type="GLenum"/>
-    </function>
-</category>
-
-<category name="GL_NV_packed_depth_stencil" number="226">
-    <enum name="DEPTH_STENCIL_NV"                         value="0x84F9"/>
-    <enum name="UNSIGNED_INT_24_8_NV"                     value="0x84FA"/>
-</category>
-
-<category name="GL_NV_register_combiners2" number="227">
-    <function name="CombinerStageParameterfvNV">
-        <param name="stage" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="GetCombinerStageParameterfvNV">
-        <param name="stage" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true"/>
-    </function>
-</category>
-
-<category name="GL_NV_texture_compression_vtc" number="228">
-    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT3_EXT"            value="0x83F2"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT5_EXT"            value="0x83F3"/>
-</category>
-
-<category name="GL_NV_texture_rectangle" number="229">
-    <enum name="TEXTURE_RECTANGLE_NV"          count="1"  value="0x84F5">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_BINDING_RECTANGLE_NV"  count="1"  value="0x84F6">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="PROXY_TEXTURE_RECTANGLE_NV"               value="0x84F7"/>
-    <enum name="MAX_RECTANGLE_TEXTURE_SIZE_NV" count="1"  value="0x84F8">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_NV_vertex_program" number="233">
-    <enum name="VERTEX_PROGRAM_NV"                        value="0x8620"/>
-    <enum name="VERTEX_STATE_PROGRAM_NV"                  value="0x8621"/>
-    <enum name="ATTRIB_ARRAY_SIZE_NV"          count="1"  value="0x8623">
-        <size name="GetVertexAttribdvNV" mode="get"/>
-        <size name="GetVertexAttribfvNV" mode="get"/>
-        <size name="GetVertexAttribivNV" mode="get"/>
-    </enum>
-    <enum name="ATTRIB_ARRAY_STRIDE_NV"        count="1"  value="0x8624">
-        <size name="GetVertexAttribdvNV" mode="get"/>
-        <size name="GetVertexAttribfvNV" mode="get"/>
-        <size name="GetVertexAttribivNV" mode="get"/>
-    </enum>
-    <enum name="ATTRIB_ARRAY_TYPE_NV"          count="1"  value="0x8625">
-        <size name="GetVertexAttribdvNV" mode="get"/>
-        <size name="GetVertexAttribfvNV" mode="get"/>
-        <size name="GetVertexAttribivNV" mode="get"/>
-    </enum>
-    <enum name="CURRENT_ATTRIB_NV"             count="1"  value="0x8626">
-        <size name="GetVertexAttribdvNV" mode="get"/>
-        <size name="GetVertexAttribfvNV" mode="get"/>
-        <size name="GetVertexAttribivNV" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_LENGTH_NV"             count="1"  value="0x8627">
-        <size name="GetProgramivNV" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_STRING_NV"                        value="0x8628"/>
-    <enum name="MODELVIEW_PROJECTION_NV"                  value="0x8629"/>
-    <enum name="IDENTITY_NV"                              value="0x862A"/>
-    <enum name="INVERSE_NV"                               value="0x862B"/>
-    <enum name="TRANSPOSE_NV"                             value="0x862C"/>
-    <enum name="INVERSE_TRANSPOSE_NV"                     value="0x862D"/>
-    <enum name="MAX_TRACK_MATRIX_STACK_DEPTH_NV"          value="0x862E"/>
-    <enum name="MAX_TRACK_MATRICES_NV"                    value="0x862F"/>
-    <enum name="MATRIX0_NV"                               value="0x8630"/>
-    <enum name="MATRIX1_NV"                               value="0x8631"/>
-    <enum name="MATRIX2_NV"                               value="0x8632"/>
-    <enum name="MATRIX3_NV"                               value="0x8633"/>
-    <enum name="MATRIX4_NV"                               value="0x8634"/>
-    <enum name="MATRIX5_NV"                               value="0x8635"/>
-    <enum name="MATRIX6_NV"                               value="0x8636"/>
-    <enum name="MATRIX7_NV"                               value="0x8637"/>
-    <enum name="CURRENT_MATRIX_STACK_DEPTH_NV"            value="0x8640"/>
-    <enum name="CURRENT_MATRIX_NV"                        value="0x8641"/>
-    <enum name="VERTEX_PROGRAM_POINT_SIZE_NV"             value="0x8642"/>
-    <enum name="VERTEX_PROGRAM_TWO_SIDE_NV"               value="0x8643"/>
-    <enum name="PROGRAM_PARAMETER_NV"                     value="0x8644"/>
-    <enum name="ATTRIB_ARRAY_POINTER_NV"                  value="0x8645"/>
-    <enum name="PROGRAM_TARGET_NV"             count="1"  value="0x8646">
-        <size name="GetProgramivNV" mode="get"/>
-    </enum>
-    <enum name="PROGRAM_RESIDENT_NV"           count="1"  value="0x8647">
-        <size name="GetProgramivNV" mode="get"/>
-    </enum>
-    <enum name="TRACK_MATRIX_NV"                          value="0x8648"/>
-    <enum name="TRACK_MATRIX_TRANSFORM_NV"                value="0x8649"/>
-    <enum name="VERTEX_PROGRAM_BINDING_NV"                value="0x864A"/>
-    <enum name="PROGRAM_ERROR_POSITION_NV"                value="0x864B"/>
-    <enum name="VERTEX_ATTRIB_ARRAY0_NV"                  value="0x8650"/>
-    <enum name="VERTEX_ATTRIB_ARRAY1_NV"                  value="0x8651"/>
-    <enum name="VERTEX_ATTRIB_ARRAY2_NV"                  value="0x8652"/>
-    <enum name="VERTEX_ATTRIB_ARRAY3_NV"                  value="0x8653"/>
-    <enum name="VERTEX_ATTRIB_ARRAY4_NV"                  value="0x8654"/>
-    <enum name="VERTEX_ATTRIB_ARRAY5_NV"                  value="0x8655"/>
-    <enum name="VERTEX_ATTRIB_ARRAY6_NV"                  value="0x8656"/>
-    <enum name="VERTEX_ATTRIB_ARRAY7_NV"                  value="0x8657"/>
-    <enum name="VERTEX_ATTRIB_ARRAY8_NV"                  value="0x8658"/>
-    <enum name="VERTEX_ATTRIB_ARRAY9_NV"                  value="0x8659"/>
-    <enum name="VERTEX_ATTRIB_ARRAY10_NV"                 value="0x865A"/>
-    <enum name="VERTEX_ATTRIB_ARRAY11_NV"                 value="0x865B"/>
-    <enum name="VERTEX_ATTRIB_ARRAY12_NV"                 value="0x865C"/>
-    <enum name="VERTEX_ATTRIB_ARRAY13_NV"                 value="0x865D"/>
-    <enum name="VERTEX_ATTRIB_ARRAY14_NV"                 value="0x865E"/>
-    <enum name="VERTEX_ATTRIB_ARRAY15_NV"                 value="0x865F"/>
-    <enum name="MAP1_VERTEX_ATTRIB0_4_NV"                 value="0x8660"/>
-    <enum name="MAP1_VERTEX_ATTRIB1_4_NV"                 value="0x8661"/>
-    <enum name="MAP1_VERTEX_ATTRIB2_4_NV"                 value="0x8662"/>
-    <enum name="MAP1_VERTEX_ATTRIB3_4_NV"                 value="0x8663"/>
-    <enum name="MAP1_VERTEX_ATTRIB4_4_NV"                 value="0x8664"/>
-    <enum name="MAP1_VERTEX_ATTRIB5_4_NV"                 value="0x8665"/>
-    <enum name="MAP1_VERTEX_ATTRIB6_4_NV"                 value="0x8666"/>
-    <enum name="MAP1_VERTEX_ATTRIB7_4_NV"                 value="0x8667"/>
-    <enum name="MAP1_VERTEX_ATTRIB8_4_NV"                 value="0x8668"/>
-    <enum name="MAP1_VERTEX_ATTRIB9_4_NV"                 value="0x8669"/>
-    <enum name="MAP1_VERTEX_ATTRIB10_4_NV"                value="0x866A"/>
-    <enum name="MAP1_VERTEX_ATTRIB11_4_NV"                value="0x866B"/>
-    <enum name="MAP1_VERTEX_ATTRIB12_4_NV"                value="0x866C"/>
-    <enum name="MAP1_VERTEX_ATTRIB13_4_NV"                value="0x866D"/>
-    <enum name="MAP1_VERTEX_ATTRIB14_4_NV"                value="0x866E"/>
-    <enum name="MAP1_VERTEX_ATTRIB15_4_NV"                value="0x866F"/>
-    <enum name="MAP2_VERTEX_ATTRIB0_4_NV"                 value="0x8670"/>
-    <enum name="MAP2_VERTEX_ATTRIB1_4_NV"                 value="0x8671"/>
-    <enum name="MAP2_VERTEX_ATTRIB2_4_NV"                 value="0x8672"/>
-    <enum name="MAP2_VERTEX_ATTRIB3_4_NV"                 value="0x8673"/>
-    <enum name="MAP2_VERTEX_ATTRIB4_4_NV"                 value="0x8674"/>
-    <enum name="MAP2_VERTEX_ATTRIB5_4_NV"                 value="0x8675"/>
-    <enum name="MAP2_VERTEX_ATTRIB6_4_NV"                 value="0x8676"/>
-    <enum name="MAP2_VERTEX_ATTRIB7_4_NV"                 value="0x8677"/>
-    <enum name="MAP2_VERTEX_ATTRIB8_4_NV"                 value="0x8678"/>
-    <enum name="MAP2_VERTEX_ATTRIB9_4_NV"                 value="0x8679"/>
-    <enum name="MAP2_VERTEX_ATTRIB10_4_NV"                value="0x867A"/>
-    <enum name="MAP2_VERTEX_ATTRIB11_4_NV"                value="0x867B"/>
-    <enum name="MAP2_VERTEX_ATTRIB12_4_NV"                value="0x867C"/>
-    <enum name="MAP2_VERTEX_ATTRIB13_4_NV"                value="0x867D"/>
-    <enum name="MAP2_VERTEX_ATTRIB14_4_NV"                value="0x867E"/>
-    <enum name="MAP2_VERTEX_ATTRIB15_4_NV"                value="0x867F"/>
-
-    <function name="AreProgramsResidentNV" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="ids" type="const GLuint *" count="n"/>
-        <param name="residences" type="GLboolean *" output="true" count="n"/>
-        <return type="GLboolean"/>
-        <glx vendorpriv="1293"/>
-    </function>
-
-    <function name="BindProgramNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="program" type="GLuint"/>
-        <glx rop="4180"/>
-    </function>
-
-    <function name="DeleteProgramsNV" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="programs" type="const GLuint *" count="n"/>
-        <glx vendorpriv="1294"/>
-    </function>
-
-    <function name="ExecuteProgramNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="id" type="GLuint"/>
-        <param name="params" type="const GLfloat *" count="4"/>
-        <glx rop="4181"/>
-    </function>
-
-    <function name="GenProgramsNV" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="programs" type="GLuint *" output="true" count="n"/>
-        <glx vendorpriv="1295" always_array="true"/>
-     </function>
-
-    <!-- This isn't 100% correct.  Currently, the only valid value of pname
-         is GL_PROGRAM_PARAMETER_NV, and the count for that pname is always
-         4.  This is why the pname parameter was removed in the ARB version
-         of these functions.
-      -->
-
-    <function name="GetProgramParameterdvNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" count="4"/>
-        <glx vendorpriv="1297"/>
-    </function>
-
-    <function name="GetProgramParameterfvNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" count="4"/>
-        <glx vendorpriv="1296"/>
-    </function>
-
-    <function name="GetProgramivNV" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="1298"/>
-    </function>
-
-    <function name="GetProgramStringNV" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="program" type="GLubyte *" output="true"/>
-        <glx vendorpriv="1299" handcode="server" always_array="true"/>
-    </function>
-
-    <function name="GetTrackMatrixivNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="address" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" count="1"/>
-        <glx vendorpriv="1300"/>
-    </function>
-
-    <function name="GetVertexAttribdvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLdouble *" output="true" variable_param="pname"/>
-        <glx vendorpriv="1301"/>
-    </function>
-
-    <function name="GetVertexAttribfvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLfloat *" output="true" variable_param="pname"/>
-        <glx vendorpriv="1302"/>
-    </function>
-
-    <function name="GetVertexAttribivNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint *" output="true" variable_param="pname"/>
-        <glx vendorpriv="1303"/>
-    </function>
-
-    <function name="GetVertexAttribPointervNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="pointer" type="GLvoid **" output="true"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="IsProgramNV" offset="assign">
-        <param name="program" type="GLuint"/>
-        <return type="GLboolean"/>
-        <glx vendorpriv="1304"/>
-    </function>
-
-    <function name="LoadProgramNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="id" type="GLuint"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="program" type="const GLubyte *" count="len"/>
-        <glx rop="4183"/>
-    </function>
-
-    <function name="ProgramParameter4dNV" alias="ProgramEnvParameter4dARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="ProgramParameter4dvNV" alias="ProgramEnvParameter4dvARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="const GLdouble *"/>
-    </function>
-
-    <function name="ProgramParameter4fNV" alias="ProgramEnvParameter4fARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="ProgramParameter4fvNV" alias="ProgramEnvParameter4fvARB">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="ProgramParameters4dvNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="num" type="GLuint" counter="true"/>
-        <param name="params" type="const GLdouble *" count="num" count_scale="4"/>
-        <glx rop="4187"/>
-    </function>
-
-    <function name="ProgramParameters4fvNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="num" type="GLuint" counter="true"/>
-        <param name="params" type="const GLfloat *" count="num" count_scale="4"/>
-        <glx rop="4186"/>
-    </function>
-
-    <function name="RequestResidentProgramsNV" offset="assign">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="ids" type="const GLuint *" count="n"/>
-        <glx rop="4182"/>
-    </function>
-
-    <function name="TrackMatrixNV" offset="assign">
-        <param name="target" type="GLenum"/>
-        <param name="address" type="GLuint"/>
-        <param name="matrix" type="GLenum"/>
-        <param name="transform" type="GLenum"/>
-        <glx rop="4188"/>
-    </function>
-
-    <function name="VertexAttribPointerNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="size" type="GLint"/>
-        <param name="type" type="GLenum"/>
-        <param name="stride" type="GLsizei"/>
-        <param name="pointer" type="const GLvoid *"/>
-        <glx handcode="true"/>
-    </function>
-
-    <function name="VertexAttrib1sNV" offset="assign" vectorequiv="VertexAttrib1svNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib1svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="1"/>
-        <glx rop="4265"/>
-    </function>
-
-    <function name="VertexAttrib2sNV" offset="assign" vectorequiv="VertexAttrib2svNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib2svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="2"/>
-        <glx rop="4266"/>
-    </function>
-
-    <function name="VertexAttrib3sNV" offset="assign" vectorequiv="VertexAttrib3svNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib3svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="3"/>
-        <glx rop="4267"/>
-    </function>
-
-    <function name="VertexAttrib4sNV" offset="assign" vectorequiv="VertexAttrib4svNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLshort"/>
-        <param name="y" type="GLshort"/>
-        <param name="z" type="GLshort"/>
-        <param name="w" type="GLshort"/>
-    </function>
-
-    <function name="VertexAttrib4svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLshort *" count="4"/>
-        <glx rop="4268"/>
-    </function>
-
-    <function name="VertexAttrib1fNV" offset="assign" vectorequiv="VertexAttrib1fvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib1fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="1"/>
-        <glx rop="4269"/>
-    </function>
-
-    <function name="VertexAttrib2fNV" offset="assign" vectorequiv="VertexAttrib2fvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib2fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="2"/>
-        <glx rop="4270"/>
-    </function>
-
-    <function name="VertexAttrib3fNV" offset="assign" vectorequiv="VertexAttrib3fvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib3fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="3"/>
-        <glx rop="4271"/>
-    </function>
-
-    <function name="VertexAttrib4fNV" offset="assign" vectorequiv="VertexAttrib4fvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="VertexAttrib4fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="4272"/>
-    </function>
-
-    <function name="VertexAttrib1dNV" offset="assign" vectorequiv="VertexAttrib1dvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib1dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="1"/>
-        <glx rop="4273" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib2dNV" offset="assign" vectorequiv="VertexAttrib2dvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib2dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="2"/>
-        <glx rop="4274" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib3dNV" offset="assign" vectorequiv="VertexAttrib3dvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib3dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="3"/>
-        <glx rop="4275" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib4dNV" offset="assign" vectorequiv="VertexAttrib4dvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="VertexAttrib4dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="4276" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttrib4ubNV" offset="assign" vectorequiv="VertexAttrib4ubvNV">
-        <param name="index" type="GLuint"/>
-        <param name="x" type="GLubyte"/>
-        <param name="y" type="GLubyte"/>
-        <param name="z" type="GLubyte"/>
-        <param name="w" type="GLubyte"/>
-    </function>
-
-    <function name="VertexAttrib4ubvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="v" type="const GLubyte *" count="4"/>
-        <glx rop="4277"/>
-    </function>
-
-    <function name="VertexAttribs1svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLshort *" count="n"/>
-        <glx rop="4202"/>
-    </function>
-
-    <function name="VertexAttribs2svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLshort *" count="n" count_scale="2"/>
-        <glx rop="4203"/>
-    </function>
-
-    <function name="VertexAttribs3svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLshort *" count="n" count_scale="3"/>
-        <glx rop="4204"/>
-    </function>
-
-    <function name="VertexAttribs4svNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLshort *" count="n" count_scale="4"/>
-        <glx rop="4205"/>
-    </function>
-
-    <function name="VertexAttribs1fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLfloat *" count="n"/>
-        <glx rop="4206"/>
-    </function>
-
-    <function name="VertexAttribs2fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLfloat *" count="n" count_scale="2"/>
-        <glx rop="4207"/>
-    </function>
-
-    <function name="VertexAttribs3fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLfloat *" count="n" count_scale="3"/>
-        <glx rop="4208"/>
-    </function>
-
-    <function name="VertexAttribs4fvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLfloat *" count="n" count_scale="4"/>
-        <glx rop="4209"/>
-    </function>
-
-    <function name="VertexAttribs1dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLdouble *" count="n"/>
-        <glx rop="4210" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttribs2dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLdouble *" count="n" count_scale="2"/>
-        <glx rop="4211" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttribs3dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLdouble *" count="n" count_scale="3"/>
-        <glx rop="4212" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttribs4dvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLdouble *" count="n" count_scale="4"/>
-        <glx rop="4213" doubles_in_order="true"/>
-    </function>
-
-    <function name="VertexAttribs4ubvNV" offset="assign">
-        <param name="index" type="GLuint"/>
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="v" type="const GLubyte *" count="n" count_scale="4"/>
-        <glx rop="4214"/>
-    </function>
-</category>
-
-<!-- Extension number 234 is a GLX extension. -->
-
-<category name="GL_SGIX_texture_coordinate_clamp" number="235">
-    <enum name="TEXTURE_MAX_CLAMP_S_SGIX"      count="1"  value="0x8369">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MAX_CLAMP_T_SGIX"      count="1"  value="0x836A">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_MAX_CLAMP_R_SGIX"      count="1"  value="0x836B">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<!-- Extension number 236 is not listed in the extension registry. -->
-<!-- Extension number 237 is a GLX extension. -->
-<!-- Extension number 238 is a GLX extension. -->
-<!-- Extension number 242 is a WGL extension. -->
-
-<category name="GL_NV_copy_depth_to_color" number="243">
-    <enum name="DEPTH_STENCIL_TO_RGBA_NV"                 value="0x886E"/>
-    <enum name="DEPTH_STENCIL_TO_BGRA_NV"                 value="0x886F"/>
-</category>
-
-<category name="GL_ATI_envmap_bumpmap" number="244">
-    <enum name="BUMP_ROT_MATRIX_ATI"          count="4"   value="0x8775">
-        <size name="TexBumpParameterfv"/>
-        <size name="TexBumpParameteriv"/>
-        <size name="GetTexBumpParameterfv" mode="get"/>
-        <size name="GetTexBumpParameteriv" mode="get"/>
-    </enum>
-    <enum name="BUMP_ROT_MATRIX_SIZE_ATI"     count="1"   value="0x8776">
-        <size name="GetTexBumpParameterfv" mode="get"/>
-        <size name="GetTexBumpParameteriv" mode="get"/>
-    </enum>
-    <enum name="BUMP_NUM_TEX_UNITS_ATI"       count="1"   value="0x8777">
-        <size name="GetTexBumpParameterfv" mode="get"/>
-        <size name="GetTexBumpParameteriv" mode="get"/>
-    </enum>
-    <enum name="BUMP_TEX_UNITS_ATI"           count="-1"  value="0x8778">
-        <size name="GetTexBumpParameterfv" mode="get"/>
-        <size name="GetTexBumpParameteriv" mode="get"/>
-    </enum>
-    <enum name="DUDV_ATI"                                 value="0x8779"/>
-    <enum name="DU8DV8_ATI"                               value="0x877A"/>
-    <enum name="BUMP_ENVMAP_ATI"                          value="0x877B"/>
-    <enum name="BUMP_TARGET_ATI"              count="1"   value="0x877C">
-        <size name="TexEnviv"/>
-        <size name="TexEnvfv"/>
-        <size name="GetTexEnviv" mode="get"/>
-        <size name="GetTexEnvfv" mode="get"/>
-    </enum>
-    <function name="TexBumpParameterfvATI" offset="assign">
-      <param name="pname" type="GLenum"/>
-      <param name="param" type="const GLfloat *" variable_param="pname"/>
-      <glx ignore="true"/>
-    </function>
-    <function name="TexBumpParameterivATI" offset="assign">
-      <param name="pname" type="GLenum"/>
-      <param name="param" type="const GLint *" variable_param="pname"/>
-      <glx ignore="true"/>
-    </function>
-    <function name="GetTexBumpParameterfvATI" offset="assign">
-      <param name="pname" type="GLenum"/>
-      <param name="param" type="GLfloat *" variable_param="pname"/>
-      <glx ignore="true"/>
-    </function>
-    <function name="GetTexBumpParameterivATI" offset="assign">
-      <param name="pname" type="GLenum"/>
-      <param name="param" type="GLint *" variable_param="pname"/>
-      <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_ATI_fragment_shader" number="245">
-    <function name="GenFragmentShadersATI" offset="assign">
-      <return type="GLuint"/>
-      <param name="range" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-    
-    <function name="BindFragmentShaderATI" offset="assign">
-      <param name="id" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="DeleteFragmentShaderATI" offset="assign">
-      <param name="id" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="BeginFragmentShaderATI" offset="assign">
-      <glx ignore="true"/>
-    </function>
-
-    <function name="EndFragmentShaderATI" offset="assign">
-      <glx ignore="true"/>
-    </function>
-    
-    <function name="PassTexCoordATI" offset="assign">
-      <param name="dst" type="GLuint"/>
-      <param name="coord" type="GLuint"/>
-      <param name="swizzle" type="GLenum"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="SampleMapATI" offset="assign">
-      <param name="dst" type="GLuint"/>
-      <param name="interp" type="GLuint"/>
-      <param name="swizzle" type="GLenum"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="ColorFragmentOp1ATI" offset="assign">
-      <param name="op" type="GLenum"/>
-      <param name="dst" type="GLuint"/>
-      <param name="dstMask" type="GLuint"/>
-      <param name="dstMod" type="GLuint"/>
-      <param name="arg1" type="GLuint"/>
-      <param name="arg1Rep" type="GLuint"/>
-      <param name="arg1Mod" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="ColorFragmentOp2ATI" offset="assign">
-      <param name="op" type="GLenum"/>
-      <param name="dst" type="GLuint"/>
-      <param name="dstMask" type="GLuint"/>
-      <param name="dstMod" type="GLuint"/>
-      <param name="arg1" type="GLuint"/>
-      <param name="arg1Rep" type="GLuint"/>
-      <param name="arg1Mod" type="GLuint"/>
-      <param name="arg2" type="GLuint"/>
-      <param name="arg2Rep" type="GLuint"/>
-      <param name="arg2Mod" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="ColorFragmentOp3ATI" offset="assign">
-      <param name="op" type="GLenum"/>
-      <param name="dst" type="GLuint"/>
-      <param name="dstMask" type="GLuint"/>
-      <param name="dstMod" type="GLuint"/>
-      <param name="arg1" type="GLuint"/>
-      <param name="arg1Rep" type="GLuint"/>
-      <param name="arg1Mod" type="GLuint"/>
-      <param name="arg2" type="GLuint"/>
-      <param name="arg2Rep" type="GLuint"/>
-      <param name="arg2Mod" type="GLuint"/>
-      <param name="arg3" type="GLuint"/>
-      <param name="arg3Rep" type="GLuint"/>
-      <param name="arg3Mod" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="AlphaFragmentOp1ATI" offset="assign">
-      <param name="op" type="GLenum"/>
-      <param name="dst" type="GLuint"/>
-      <param name="dstMod" type="GLuint"/>
-      <param name="arg1" type="GLuint"/>
-      <param name="arg1Rep" type="GLuint"/>
-      <param name="arg1Mod" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="AlphaFragmentOp2ATI" offset="assign">
-      <param name="op" type="GLenum"/>
-      <param name="dst" type="GLuint"/>
-      <param name="dstMod" type="GLuint"/>
-      <param name="arg1" type="GLuint"/>
-      <param name="arg1Rep" type="GLuint"/>
-      <param name="arg1Mod" type="GLuint"/>
-      <param name="arg2" type="GLuint"/>
-      <param name="arg2Rep" type="GLuint"/>
-      <param name="arg2Mod" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="AlphaFragmentOp3ATI" offset="assign">
-      <param name="op" type="GLenum"/>
-      <param name="dst" type="GLuint"/>
-      <param name="dstMod" type="GLuint"/>
-      <param name="arg1" type="GLuint"/>
-      <param name="arg1Rep" type="GLuint"/>
-      <param name="arg1Mod" type="GLuint"/>
-      <param name="arg2" type="GLuint"/>
-      <param name="arg2Rep" type="GLuint"/>
-      <param name="arg2Mod" type="GLuint"/>
-      <param name="arg3" type="GLuint"/>
-      <param name="arg3Rep" type="GLuint"/>
-      <param name="arg3Mod" type="GLuint"/>
-      <glx ignore="true"/>
-    </function>
-
-    <function name="SetFragmentShaderConstantATI" offset="assign">
-      <param name="dst" type="GLuint"/>
-      <param name="value" type="const GLfloat *"/>
-      <glx ignore="true"/>
-    </function>
-</category>
-
-<!-- Extension number 250 is a WGL extension. -->
-<!-- Extension number 251 is a WGL extension. -->
-<!-- Extension number 252 is a WGL extension. -->
-<!-- Extension number 253 is a WGL extension. -->
-<!-- Extension number 254 is a WGL extension. -->
-<!-- Extension number 255 is a WGL extension. -->
-
-<category name="GL_SUN_mesh_array" number="257">
-    <enum name="QUAD_MESH_SUN"                            value="0x8614"/>
-    <enum name="TRIANGLE_MESH_SUN"                        value="0x8615"/>
-
-    <function name="DrawMeshArraysSUN">
-        <param name="mode" type="GLenum"/>
-        <param name="first" type="GLint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="width" type="GLsizei"/>
-    </function>
-</category>
-
-<category name="GL_SUN_slice_accum" number="258">
-    <enum name="SLICE_ACCUM_SUN"                          value="0x85CC"/>
-</category>
-
-<category name="GL_NV_multisample_filter_hint" number="259">
-    <enum name="MULTISAMPLE_FILTER_HINT_NV"    count="1"  value="0x8534">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_NV_depth_clamp" number="260">
-    <enum name="DEPTH_CLAMP_NV"                count="1"  value="0x864F">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_NV_point_sprite" number="262">
-    <!-- These existing enums can be passed as a parameter to the function
-         added for this extension. -->
-
-    <enum name="POINT_SIZE_MIN_EXT"            count="1"  value="0x8126">
-        <size name="PointParameterivNV"/>
-    </enum>
-    <enum name="POINT_SIZE_MAX_EXT"            count="1"  value="0x8127">
-        <size name="PointParameterivNV"/>
-    </enum>
-    <enum name="POINT_FADE_THRESHOLD_SIZE_EXT" count="1"  value="0x8128">
-        <size name="PointParameterivNV"/>
-    </enum>
-    <enum name="POINT_DISTANCE_ATTENUATION_EXT" count="3" value="0x8129">
-        <size name="PointParameterivNV"/>
-    </enum>
-
-    <enum name="POINT_SPRITE_NV"               count="1"  value="0x8861">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="COORD_REPLACE_NV"              count="1"  value="0x8862">
-        <size name="TexEnvfv"/>
-        <size name="TexEnviv"/>
-        <size name="GetTexEnvfv" mode="get"/>
-        <size name="GetTexEnviv" mode="get"/>
-    </enum>
-    <enum name="POINT_SPRITE_R_MODE_NV"        count="1"  value="0x8863">
-        <size name="PointParameterfvEXT"/>
-        <size name="PointParameterivNV"/>
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="PointParameteriNV" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-        <glx rop="4221"/>
-    </function>
-
-    <function name="PointParameterivNV" offset="assign">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLint *" variable_param="pname"/>
-        <glx rop="4222"/>
-    </function>
-</category>
-
-<!-- Extension number 263 is a WGL extension. -->
-<!-- Extension number 264 is a WGL extension. -->
-
-<category name="GL_EXT_shadow_funcs" number="267">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_EXT_stencil_two_side" number="268">
-    <enum name="STENCIL_TEST_TWO_SIDE_EXT"     count="1"  value="0x8910">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="ACTIVE_STENCIL_FACE_EXT"       count="1"  value="0x8911">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="ActiveStencilFaceEXT" offset="assign" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <glx rop="4220"/>
-    </function>
-</category>
-
-<xi:include href="APPLE_object_purgeable.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="APPLE_vertex_array_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<category name="GL_APPLE_ycbcr_422" number="275">
-    <enum name="YCBCR_422_APPLE"                          value="0x85B9"/>
-    <enum name="UNSIGNED_SHORT_8_8_APPLE"                 value="0x85BA"/>
-    <enum name="UNSIGNED_SHORT_8_8_REV_APPLE"             value="0x85BB"/>
-</category>
-
-<category name="GL_S3_s3tc" number="276">
-    <enum name="RGB_S3TC"                                 value="0x83A0"/>
-    <enum name="RGB4_S3TC"                                value="0x83A1"/>
-    <enum name="RGBA_S3TC"                                value="0x83A2"/>
-    <enum name="RGBA4_S3TC"                               value="0x83A3"/>
-    <enum name="RGBA_DXT5_S3TC"                           value="0x83A4"/>
-    <enum name="RGBA4_DXT5_S3TC"                          value="0x83A5"/>
-</category>
-
-<category name="GL_ATI_draw_buffers" number="277">
-    <enum name="MAX_DRAW_BUFFERS_ATI"          count="1"  value="0x8824">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER0_ATI"              count="1"  value="0x8825">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER1_ATI"              count="1"  value="0x8826">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER2_ATI"              count="1"  value="0x8827">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER3_ATI"              count="1"  value="0x8828">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER4_ATI"              count="1"  value="0x8829">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER5_ATI"              count="1"  value="0x882A">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER6_ATI"              count="1"  value="0x882B">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER7_ATI"              count="1"  value="0x882C">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER8_ATI"              count="1"  value="0x882D">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER9_ATI"              count="1"  value="0x882E">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER10_ATI"             count="1"  value="0x882F">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER11_ATI"             count="1"  value="0x8830">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER12_ATI"             count="1"  value="0x8831">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER13_ATI"             count="1"  value="0x8832">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER14_ATI"             count="1"  value="0x8833">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DRAW_BUFFER15_ATI"             count="1"  value="0x8834">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="DrawBuffersATI" alias="DrawBuffersARB">
-        <param name="n" type="GLsizei" counter="true"/>
-        <param name="bufs" type="const GLenum *" count="n"/>
-    </function>
-</category>
-
-<!-- Extension number 278 is a WGL extension. -->
-
-<category name="GL_ATI_texture_env_combine3" number="279">
-    <enum name="MODULATE_ADD_ATI"                         value="0x8744"/>
-    <enum name="MODULATE_SIGNED_ADD_ATI"                  value="0x8745"/>
-    <enum name="MODULATE_SUBTRACT_ATI"                    value="0x8746"/>
-</category>
-
-<category name="GL_NV_fragment_program" number="282">
-    <function name="ProgramNamedParameter4fNV" offset="assign" vectorequiv="ProgramNamedParameter4fvNV">
-        <param name="id" type="GLuint"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="name" type="const GLubyte *" count="len"/>
-        <param name="x" type="GLfloat"/>
-        <param name="y" type="GLfloat"/>
-        <param name="z" type="GLfloat"/>
-        <param name="w" type="GLfloat"/>
-    </function>
-
-    <function name="ProgramNamedParameter4dNV" offset="assign" vectorequiv="ProgramNamedParameter4dvNV">
-        <param name="id" type="GLuint"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="name" type="const GLubyte *" count="len"/>
-        <param name="x" type="GLdouble"/>
-        <param name="y" type="GLdouble"/>
-        <param name="z" type="GLdouble"/>
-        <param name="w" type="GLdouble"/>
-    </function>
-
-    <function name="ProgramNamedParameter4fvNV" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="name" type="const GLubyte *" count="len"/>
-        <param name="v" type="const GLfloat *" count="4"/>
-        <glx rop="4218"/>
-    </function>
-
-    <function name="ProgramNamedParameter4dvNV" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="name" type="const GLubyte *" count="len"/>
-        <param name="v" type="const GLdouble *" count="4"/>
-        <glx rop="4219"/>
-    </function>
-
-    <function name="GetProgramNamedParameterfvNV" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="name" type="const GLubyte *" count="len"/>
-        <param name="params" type="GLfloat *" output="true" count="4"/>
-        <glx vendorpriv="1310" always_array="true"/>
-    </function>
-
-    <function name="GetProgramNamedParameterdvNV" offset="assign">
-        <param name="id" type="GLuint"/>
-        <param name="len" type="GLsizei" counter="true"/>
-        <param name="name" type="const GLubyte *" count="len"/>
-        <param name="params" type="GLdouble *" output="true" count="4"/>
-        <glx vendorpriv="1311" always_array="true"/>
-    </function>
-</category>
-
-<category name="GL_NV_texture_expand_normal" number="286">
-    <enum name="TEXTURE_UNSIGNED_REMAP_MODE_NV" count="1" value="0x888F">
-        <size name="TexParameterfv"/>
-        <size name="TexParameteriv"/>
-        <size name="GetTexParameterfv" mode="get"/>
-        <size name="GetTexParameteriv" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_OES_compressed_paletted_texture" number="294">
-    <enum name="PALETTE4_RGB8_OES"                        value="0x8B90"/>
-    <enum name="PALETTE4_RGBA8_OES"                       value="0x8B91"/>
-    <enum name="PALETTE4_R5_G6_B5_OES"                    value="0x8B92"/>
-    <enum name="PALETTE4_RGBA4_OES"                       value="0x8B93"/>
-    <enum name="PALETTE4_RGB5_A1_OES"                     value="0x8B94"/>
-    <enum name="PALETTE8_RGB8_OES"                        value="0x8B95"/>
-    <enum name="PALETTE8_RGBA8_OES"                       value="0x8B96"/>
-    <enum name="PALETTE8_R5_G6_B5_OES"                    value="0x8B97"/>
-    <enum name="PALETTE8_RGBA4_OES"                       value="0x8B98"/>
-    <enum name="PALETTE8_RGB5_A1_OES"                     value="0x8B99"/>
-</category>
-
-<category name="GL_OES_read_format" number="295">
-    <enum name="IMPLEMENTATION_COLOR_READ_TYPE_OES"       value="0x8B9A"/>
-    <enum name="IMPLEMENTATION_COLOR_READ_FORMAT_OES"     value="0x8B9B"/>
-</category>
-
-<category name="GL_EXT_depth_bounds_test" number="297">
-    <enum name="DEPTH_BOUNDS_TEST_EXT"         count="1"  value="0x8890">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="DEPTH_BOUNDS_EXT"              count="2"  value="0x8891">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="DepthBoundsEXT" offset="assign" static_dispatch="false">
-        <param name="zmin" type="GLclampd"/>
-        <param name="zmax" type="GLclampd"/>
-        <glx rop="4229" ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_EXT_texture_mirror_clamp" number="298">
-    <enum name="MIRROR_CLAMP_EXT"                         value="0x8742"/>
-    <enum name="MIRROR_CLAMP_TO_EDGE_EXT"                 value="0x8743"/>
-    <enum name="MIRROR_CLAMP_TO_BORDER_EXT"               value="0x8912"/>
-</category>
-
-<category name="GL_EXT_blend_equation_separate" number="299">
-    <enum name="BLEND_EQUATION_RGB_EXT"        count="1"  value="0x8009">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="BLEND_EQUATION_ALPHA_EXT"      count="1"  value="0x883D">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="BlendEquationSeparateEXT" offset="assign" static_dispatch="false">
-        <param name="modeRGB" type="GLenum"/>
-        <param name="modeA" type="GLenum"/>
-        <glx rop="4228"/>
-    </function>
-</category>
-
-<category name="GL_MESA_pack_invert" number="300">
-    <enum name="PACK_INVERT_MESA"              count="1"  value="0x8758">
-        <size name="Get" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_MESA_ycbcr_texture" number="301">
-    <enum name="YCBCR_MESA"                               value="0x8757"/>
-    <enum name="UNSIGNED_SHORT_8_8_MESA"                  value="0x85BA"/>
-    <enum name="UNSIGNED_SHORT_8_8_REV_MESA"              value="0x85BB"/>
-</category>
-
-<category name="GL_EXT_pixel_buffer_object" number="302">
-    <enum name="PIXEL_PACK_BUFFER_EXT"                    value="0x88EB"/>
-    <enum name="PIXEL_UNPACK_BUFFER_EXT"                  value="0x88EC"/>
-    <enum name="PIXEL_PACK_BUFFER_BINDING_EXT"            value="0x88ED"/>
-    <enum name="PIXEL_UNPACK_BUFFER_BINDING_EXT"          value="0x88EF"/>
-</category>
-
-<category name="GL_NV_fragment_program_option" number="303">
-    <!-- No new functions, types, enums. -->
-</category>
-
-<category name="GL_NV_fragment_program2" number="304">
-    <enum name="MAX_PROGRAM_EXEC_INSTRUCTIONS_NV" count="1" value="0x88F4">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_CALL_DEPTH_NV"      count="1"  value="0x88F5">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_IF_DEPTH_NV"        count="1"  value="0x88F6">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_LOOP_DEPTH_NV"      count="1"  value="0x88F7">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_LOOP_COUNT_NV"      count="1"  value="0x88F8">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_NV_vertex_program2_option" number="305">
-    <enum name="MAX_PROGRAM_EXEC_INSTRUCTIONS_NV" count="1" value="0x88F4">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-    <enum name="MAX_PROGRAM_CALL_DEPTH_NV"      count="1"  value="0x88F5">
-        <size name="GetProgramivARB" mode="get"/>
-    </enum>
-</category>
-
-<category name="GL_NV_vertex_program3" number="306">
-    <enum name="MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB" count="1" value="0x8B4C"/>
-</category>
-
-<!-- Extension number 307 is a GLX extension. -->
-<!-- Extension number 308 is a GLX extension. -->
-
-<category name="GL_EXT_texture_compression_dxt1" number="309">
-    <enum name="COMPRESSED_RGB_S3TC_DXT1_EXT"             value="0x83F0"/>
-    <enum name="COMPRESSED_RGBA_S3TC_DXT1_EXT"            value="0x83F1"/>
-</category>
-
-<xi:include href="EXT_framebuffer_object.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="EXT_packed_depth_stencil.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="EXT_provoking_vertex.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<xi:include href="EXT_draw_buffers2.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-
-<category name="GL_APPLE_flush_buffer_range" number="321">
-    <enum name="BUFFER_SERIALIZED_MODIFY_APPLE" count="1" value="0x8A12">
-        <size name="GetBufferParameteriv" mode="get"/>
-    </enum>
-    <enum name="BUFFER_FLUSHING_UNMAP_APPLE" count="1" value="0x8A13">
-        <size name="GetBufferParameteriv" mode="get"/>
-    </enum>
-    <function name="BufferParameteriAPPLE" offset="assign" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLint"/>
-    </function>
-    <function name="FlushMappedBufferRangeAPPLE" offset="assign" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="offset" type="GLintptr"/>
-        <param name="size" type="GLsizeiptr"/>
-    </function>
-</category>
-
-<xi:include href="EXT_texture_array.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-<category name="GL_APPLE_texture_range" number="367">
-    <enum name="TEXTURE_STORAGE_HINT_APPLE" count="1" value="0x85BC">
-        <size name="TexParameteriv"/>
-        <size name="TexParameterfv"/>
-        <size name="GetTexParameteriv" mode="get"/>
-        <size name="GetTexParameterfv" mode="get"/>
-    </enum>
-    <enum name="STORAGE_PRIVATE_APPLE" count="1" value="0x85BD">
-        <size name="TexParameteriv"/>
-        <size name="TexParameterfv"/>
-    </enum>
-    <enum name="STORAGE_CACHED_APPLE" count="1" value="0x85BE">
-        <size name="TexParameteriv"/>
-        <size name="TexParameterfv"/>
-    </enum>
-    <enum name="STORAGE_SHARED_APPLE" count="1" value="0x85BF">
-        <size name="TexParameteriv"/>
-        <size name="TexParameterfv"/>
-    </enum>
-    <enum name="TEXTURE_RANGE_LENGTH_APPLE" count="1" value="0x85B7">
-        <size name="GetTexParameteriv" mode="get"/>
-        <size name="GetTexParameterfv" mode="get"/>
-    </enum>
-    <enum name="TEXTURE_RANGE_POINTER_APPLE" count="1" value="0x85B8">
-        <size name="GetTexParameterPointervAPPLE" mode="get"/>
-    </enum>
-    <function name="TextureRangeAPPLE" offset="assign" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="length" type="GLsizei"/>
-        <param name="pointer" type="GLvoid *"/>
-    </function>
-    <function name="GetTexParameterPointervAPPLE" offset="assign" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLvoid **"/>
-    </function>
-</category>
-
-<!-- Unnumbered extensions sorted by name. -->
-
-<category name="GL_ATI_blend_equation_separate">
-    <function name="BlendEquationSeparateATI" alias="BlendEquationSeparateEXT" static_dispatch="false">
-        <param name="modeRGB" type="GLenum"/>
-        <param name="modeA" type="GLenum"/>
-    </function>
-</category>
-
-<category name="GL_ATI_separate_stencil">
-    <enum name="STENCIL_BACK_FUNC_ATI"     count="1"  value="0x8800">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BACK_FAIL_ATI"     count="1"  value="0x8801">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BACK_PASS_DEPTH_FAIL_ATI" count="1"  value="0x8802">
-        <size name="Get" mode="get"/>
-    </enum>
-    <enum name="STENCIL_BACK_PASS_DEPTH_PASS_ATI" count="1"  value="0x8803">
-        <size name="Get" mode="get"/>
-    </enum>
-
-    <function name="StencilOpSeparateATI" alias="StencilOpSeparate" static_dispatch="false">
-        <param name="face" type="GLenum"/>
-        <param name="sfail" type="GLenum"/>
-        <param name="zfail" type="GLenum"/>
-        <param name="zpass" type="GLenum"/>
-    </function>
-    <function name="StencilFuncSeparateATI" offset="assign" static_dispatch="false">
-        <param name="frontfunc" type="GLenum"/>
-        <param name="backfunc" type="GLenum"/>
-        <param name="ref" type="GLint"/>
-        <param name="mask" type="GLuint"/>
-    </function>
-
-</category>
-
-<category name="GL_EXT_gpu_program_parameters">
-    <function name="ProgramEnvParameters4fvEXT" offset="assign" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-
-    <function name="ProgramLocalParameters4fvEXT" offset="assign" static_dispatch="false">
-        <param name="target" type="GLenum"/>
-        <param name="index" type="GLuint"/>
-        <param name="count" type="GLsizei"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-</category>
-
-<category name="GL_EXT_timer_query">
-    <enum name="TIME_ELAPSED_EXT" value="0x88BF"/>
-    <type name="int64EXT"                  size="8"/>
-    <type name="uint64EXT" unsigned="true" size="8"/>
-    <function name="GetQueryObjecti64vEXT" offset="assign" static_dispatch="false">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLint64EXT *"/>
-    </function>
-    <function name="GetQueryObjectui64vEXT" offset="assign" static_dispatch="false">
-        <param name="id" type="GLuint"/>
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="GLuint64EXT *"/>
-    </function>
-</category>
-
-<category name="GL_INGR_blend_func_separate">
-    <function name="BlendFuncSeparateINGR" alias="BlendFuncSeparateEXT" static_dispatch="false">
-        <param name="sfactorRGB" type="GLenum"/>
-        <param name="dfactorRGB" type="GLenum"/>
-        <param name="sfactorAlpha" type="GLenum"/>
-        <param name="dfactorAlpha" type="GLenum"/>
-    </function>
-</category>
-
-<category name="GL_MESA_texture_signed_rgba">
-    <enum name="SIGNED_NORMALIZED"                        value="0x8F9C"/>
-    <enum name="RGBA_SNORM"                               value="0x8F93"/>
-    <enum name="RGBA8_SNORM"                              value="0x8F97"/>
-</category>
-
-<category name="GL_MESA_shader_debug">
-    <enum name="DEBUG_OBJECT_MESA"                        value="0x8759"/>
-    <enum name="DEBUG_PRINT_MESA"                         value="0x875A"/>
-    <enum name="DEBUG_ASSERT_MESA"                        value="0x875B"/>
-    <function name="CreateDebugObjectMESA">
-        <return type="GLhandleARB"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="ClearDebugLogMESA">
-        <param name="obj" type="GLhandleARB"/>
-        <param name="logType" type="GLenum"/>
-        <param name="shaderType" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="GetDebugLogMESA">
-        <param name="obj" type="GLhandleARB"/>
-        <param name="logType" type="GLenum"/>
-        <param name="shaderType" type="GLenum"/>
-        <param name="maxLength" type="GLsizei"/>
-        <param name="length" type="GLsizei *" output="true"/>
-        <param name="debugLog" type="GLcharARB *" output="true"/>
-        <glx ignore="true"/>
-    </function>
-    <function name="GetDebugLogLengthMESA">
-        <return type="GLsizei"/>
-        <param name="obj" type="GLhandleARB"/>
-        <param name="logType" type="GLenum"/>
-        <param name="shaderType" type="GLenum"/>
-        <glx ignore="true"/>
-    </function>
-</category>
-
-<category name="GL_SGIS_point_parameters">
-    <enum name="POINT_SIZE_MIN_SGIS"           count="1"  value="0x8126">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_SIZE_MAX_SGIS"           count="1"  value="0x8127">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_FADE_THRESHOLD_SIZE_SGIS" count="1" value="0x8128">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-    <enum name="POINT_DISTANCE_ATTENUATION_SGIS" count="3" value="0x8129">
-        <size name="PointParameterfvEXT"/>
-    </enum>
-
-    <function name="PointParameterfSGIS" alias="PointParameterfEXT" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="param" type="GLfloat"/>
-    </function>
-
-    <function name="PointParameterfvSGIS" alias="PointParameterfvEXT" static_dispatch="false">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLfloat *"/>
-    </function>
-</category>
-
-<category name="GL_SGIX_igloo_interface">
-    <function name="IglooInterfaceSGIX">
-        <param name="pname" type="GLenum"/>
-        <param name="params" type="const GLvoid *"/>
-    </function>
-</category>
-
-<category name="GL_SGIX_polynomial_ffd">
-    <function name="DeformationMap3dSGIX">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLdouble"/>
-        <param name="u2" type="GLdouble"/>
-        <param name="ustride" type="GLint"/>
-        <param name="uorder" type="GLint"/>
-        <param name="v1" type="GLdouble"/>
-        <param name="v2" type="GLdouble"/>
-        <param name="vstride" type="GLint"/>
-        <param name="vorder" type="GLint"/>
-        <param name="w1" type="GLdouble"/>
-        <param name="w2" type="GLdouble"/>
-        <param name="wstride" type="GLint"/>
-        <param name="worder" type="GLint"/>
-        <param name="points" type="const GLdouble *"/>
-    </function>
-
-    <function name="DeformationMap3fSGIX">
-        <param name="target" type="GLenum"/>
-        <param name="u1" type="GLfloat"/>
-        <param name="u2" type="GLfloat"/>
-        <param name="ustride" type="GLint"/>
-        <param name="uorder" type="GLint"/>
-        <param name="v1" type="GLfloat"/>
-        <param name="v2" type="GLfloat"/>
-        <param name="vstride" type="GLint"/>
-        <param name="vorder" type="GLint"/>
-        <param name="w1" type="GLfloat"/>
-        <param name="w2" type="GLfloat"/>
-        <param name="wstride" type="GLint"/>
-        <param name="worder" type="GLint"/>
-        <param name="points" type="const GLfloat *"/>
-    </function>
-
-    <function name="DeformSGIX">
-        <param name="mask" type="GLenum"/>
-    </function>
-
-    <function name="LoadIdentityDeformationMapSGIX">
-        <param name="mask" type="GLenum"/>
-    </function>
-</category>
-
-<xi:include href="OES_EGL_image.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-
-</OpenGLAPI>
diff --git a/src/mesa/glapi/gen/gl_SPARC_asm.py b/src/mesa/glapi/gen/gl_SPARC_asm.py
deleted file mode 100644 (file)
index 33e752d..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 2004
-# 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import license
-import gl_XML, glX_XML
-import sys, getopt
-
-class PrintGenericStubs(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-               self.name = "gl_SPARC_asm.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
-(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
-
-
-       def printRealHeader(self):
-               print '#include "glapi/glapioffsets.h"'
-               print ''
-               print '#ifdef __arch64__'
-               print '#define GL_OFF(N)\t((N) * 8)'
-               print '#define GL_LL\t\tldx'
-               print '#define GL_TIE_LD(SYM)\t%tie_ldx(SYM)'
-               print '#define GL_STACK_SIZE\t128'
-               print '#else'
-               print '#define GL_OFF(N)\t((N) * 4)'
-               print '#define GL_LL\t\tld'
-               print '#define GL_TIE_LD(SYM)\t%tie_ld(SYM)'
-               print '#define GL_STACK_SIZE\t64'
-               print '#endif'
-               print ''
-               print '#define GLOBL_FN(x) .globl x ; .type x, @function'
-               print '#define HIDDEN(x) .hidden x'
-               print ''
-               print '\t.register %g2, #scratch'
-               print '\t.register %g3, #scratch'
-               print ''
-               print '\t.text'
-               print ''
-               print '\tGLOBL_FN(__glapi_sparc_icache_flush)'
-               print '\tHIDDEN(__glapi_sparc_icache_flush)'
-               print '\t.type\t__glapi_sparc_icache_flush, @function'
-               print '__glapi_sparc_icache_flush: /* %o0 = insn_addr */'
-               print '\tflush\t%o0'
-               print '\tretl'
-               print '\t nop'
-               print ''
-               print '\t.align\t32'
-               print ''
-               print '\t.type\t__glapi_sparc_get_pc, @function'
-               print '__glapi_sparc_get_pc:'
-               print '\tretl'
-               print '\t add\t%o7, %g2, %g2'
-               print '\t.size\t__glapi_sparc_get_pc, .-__glapi_sparc_get_pc'
-               print ''
-               print '#ifdef GLX_USE_TLS'
-               print ''
-               print '\tGLOBL_FN(__glapi_sparc_get_dispatch)'
-               print '\tHIDDEN(__glapi_sparc_get_dispatch)'
-               print '__glapi_sparc_get_dispatch:'
-               print '\tmov\t%o7, %g1'
-               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
-               print '\tcall\t__glapi_sparc_get_pc'
-               print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
-               print '\tmov\t%g1, %o7'
-               print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
-               print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
-               print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
-               print '\tretl'
-               print '\t mov\t%g2, %o0'
-               print ''
-               print '\t.data'
-               print '\t.align\t32'
-               print ''
-               print '\t/* --> sethi %hi(_glapi_tls_Dispatch), %g1 */'
-               print '\t/* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */'
-               print '\tGLOBL_FN(__glapi_sparc_tls_stub)'
-               print '\tHIDDEN(__glapi_sparc_tls_stub)'
-               print '__glapi_sparc_tls_stub: /* Call offset in %g3 */'
-               print '\tmov\t%o7, %g1'
-               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
-               print '\tcall\t__glapi_sparc_get_pc'
-               print '\tadd\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
-               print '\tmov\t%g1, %o7'
-               print '\tsrl\t%g3, 10, %g3'
-               print '\tsethi\t%tie_hi22(_glapi_tls_Dispatch), %g1'
-               print '\tadd\t%g1, %tie_lo10(_glapi_tls_Dispatch), %g1'
-               print '\tGL_LL\t[%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)'
-               print '\tGL_LL\t[%g7+%g2], %g1'
-               print '\tGL_LL\t[%g1 + %g3], %g1'
-               print '\tjmp\t%g1'
-               print '\t nop'
-               print '\t.size\t__glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub'
-               print ''
-               print '#define GL_STUB(fn, off)\t\t\t\t\\'
-               print '\tGLOBL_FN(fn);\t\t\t\t\t\\'
-               print 'fn:\tba\t__glapi_sparc_tls_stub;\t\t\t\\'
-               print '\t sethi\tGL_OFF(off), %g3;\t\t\t\\'
-               print '\t.size\tfn,.-fn;'
-               print ''
-               print '#elif defined(PTHREADS)'
-               print ''
-               print '\t/* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */'
-               print '\t/* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */'
-               print '\t/* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */'
-               print '\t/* 64-bit 0x0c --> sllx %g1, 32, %g1 */'
-               print '\t/* 64-bit 0x10 --> add %g1, %g2, %g1 */'
-               print '\t/* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */'
-               print ''
-               print '\t/* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */'
-               print '\t/* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */'
-               print ''
-               print '\t.data'
-               print '\t.align\t32'
-               print ''
-               print '\tGLOBL_FN(__glapi_sparc_pthread_stub)'
-               print '\tHIDDEN(__glapi_sparc_pthread_stub)'
-               print '__glapi_sparc_pthread_stub: /* Call offset in %g3 */'
-               print '\tmov\t%o7, %g1'
-               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
-               print '\tcall\t__glapi_sparc_get_pc'
-               print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
-               print '\tmov\t%g1, %o7'
-               print '\tsethi\t%hi(_glapi_Dispatch), %g1'
-               print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
-               print '\tsrl\t%g3, 10, %g3'
-               print '\tGL_LL\t[%g2+%g1], %g2'
-               print '\tGL_LL\t[%g2], %g1'
-               print '\tcmp\t%g1, 0'
-               print '\tbe\t2f'
-               print '\t nop'
-               print '1:\tGL_LL\t[%g1 + %g3], %g1'
-               print '\tjmp\t%g1'
-               print '\t nop'
-               print '2:\tsave\t%sp, GL_STACK_SIZE, %sp'
-               print '\tmov\t%g3, %l0'
-               print '\tcall\t_glapi_get_dispatch'
-               print '\t nop'
-               print '\tmov\t%o0, %g1'
-               print '\tmov\t%l0, %g3'
-               print '\tba\t1b'
-               print '\t restore %g0, %g0, %g0'
-               print '\t.size\t__glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub'
-               print ''
-               print '#define GL_STUB(fn, off)\t\t\t\\'
-               print '\tGLOBL_FN(fn);\t\t\t\t\\'
-               print 'fn:\tba\t__glapi_sparc_pthread_stub;\t\\'
-               print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
-               print '\t.size\tfn,.-fn;'
-               print ''
-               print '#else /* Non-threaded version. */'
-               print ''
-               print '\t.type  __glapi_sparc_nothread_stub, @function'
-               print '__glapi_sparc_nothread_stub: /* Call offset in %g3 */'
-               print '\tmov\t%o7, %g1'
-               print '\tsethi\t%hi(_GLOBAL_OFFSET_TABLE_-4), %g2'
-               print '\tcall\t__glapi_sparc_get_pc'
-               print '\t add\t%g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2'
-               print '\tmov\t%g1, %o7'
-               print '\tsrl\t%g3, 10, %g3'
-               print '\tsethi\t%hi(_glapi_Dispatch), %g1'
-               print '\tor\t%g1, %lo(_glapi_Dispatch), %g1'
-               print '\tGL_LL\t[%g2+%g1], %g2'
-               print '\tGL_LL\t[%g2], %g1'
-               print '\tGL_LL\t[%g1 + %g3], %g1'
-               print '\tjmp\t%g1'
-               print '\t nop'
-               print '\t.size\t__glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub'
-               print ''
-               print '#define GL_STUB(fn, off)\t\t\t\\'
-               print '\tGLOBL_FN(fn);\t\t\t\t\\'
-               print 'fn:\tba\t__glapi_sparc_nothread_stub;\t\\'
-               print '\t sethi\tGL_OFF(off), %g3;\t\t\\'
-               print '\t.size\tfn,.-fn;'
-               print ''
-               print '#endif'
-               print ''
-               print '#define GL_STUB_ALIAS(fn, alias)         \\'
-               print ' .globl  fn;                             \\'
-               print ' .set    fn, alias'
-               print ''
-               print '\t.text'
-               print '\t.align\t32'
-               print ''
-               print '\t.globl\tgl_dispatch_functions_start'
-               print '\tHIDDEN(gl_dispatch_functions_start)'
-               print 'gl_dispatch_functions_start:'
-               print ''
-               return
-
-       def printRealFooter(self):
-               print ''
-               print '\t.globl\tgl_dispatch_functions_end'
-               print '\tHIDDEN(gl_dispatch_functions_end)'
-               print 'gl_dispatch_functions_end:'
-               return
-
-       def printBody(self, api):
-               for f in api.functionIterateByOffset():
-                       name = f.dispatch_name()
-
-                       print '\tGL_STUB(gl%s, _gloffset_%s)' % (name, f.name)
-
-                       if not f.is_static_entry_point(f.name):
-                               print '\tHIDDEN(gl%s)' % (name)
-
-               for f in api.functionIterateByOffset():
-                       name = f.dispatch_name()
-
-                       if f.is_static_entry_point(f.name):
-                               for n in f.entry_points:
-                                       if n != f.name:
-                                               text = '\tGL_STUB_ALIAS(gl%s, gl%s)' % (n, f.name)
-
-                                               if f.has_different_protocol(n):
-                                                       print '#ifndef GLX_INDIRECT_RENDERING'
-                                                       print text
-                                                       print '#endif'
-                                               else:
-                                                       print text
-
-               return
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-       mode = "generic"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
-       except Exception,e:
-               show_usage()
-
-       for (arg,val) in args:
-               if arg == '-m':
-                       mode = val
-               elif arg == "-f":
-                       file_name = val
-
-       if mode == "generic":
-               printer = PrintGenericStubs()
-       else:
-               print "ERROR: Invalid mode \"%s\" specified." % mode
-               show_usage()
-
-       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
-       printer.Print(api)
diff --git a/src/mesa/glapi/gen/gl_XML.py b/src/mesa/glapi/gen/gl_XML.py
deleted file mode 100644 (file)
index 660c8cf..0000000
+++ /dev/null
@@ -1,967 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import libxml2
-import re, sys, string
-import typeexpr
-
-
-def parse_GL_API( file_name, factory = None ):
-       doc = libxml2.readFile( file_name, None, libxml2.XML_PARSE_XINCLUDE + libxml2.XML_PARSE_NOBLANKS + libxml2.XML_PARSE_DTDVALID + libxml2.XML_PARSE_DTDATTR + libxml2.XML_PARSE_DTDLOAD + libxml2.XML_PARSE_NOENT )
-       ret = doc.xincludeProcess()
-
-       if not factory:
-               factory = gl_item_factory()
-
-       api = factory.create_item( "api", None, None )
-       api.process_element( doc )
-
-       # After the XML has been processed, we need to go back and assign
-       # dispatch offsets to the functions that request that their offsets
-       # be assigned by the scripts.  Typically this means all functions
-       # that are not part of the ABI.
-
-       for func in api.functionIterateByCategory():
-               if func.assign_offset:
-                       func.offset = api.next_offset;
-                       api.next_offset += 1
-
-       doc.freeDoc()
-
-       return api
-
-
-def is_attr_true( element, name ):
-       """Read a name value from an element's attributes.
-       
-       The value read from the attribute list must be either 'true' or
-       'false'.  If the value is 'false', zero will be returned.  If the
-       value is 'true', non-zero will be returned.  An exception will be
-       raised for any other value."""
-
-       value = element.nsProp( name, None )
-       if value == "true":
-               return 1
-       elif value == "false":
-               return 0
-       else:
-               raise RuntimeError('Invalid value "%s" for boolean "%s".' % (value, name))
-
-
-class gl_print_base:
-       """Base class of all API pretty-printers.
-
-       In the model-view-controller pattern, this is the view.  Any derived
-       class will want to over-ride the printBody, printRealHader, and
-       printRealFooter methods.  Some derived classes may want to over-ride
-       printHeader and printFooter, or even Print (though this is unlikely).
-       """
-
-       def __init__(self):
-               # Name of the script that is generating the output file.
-               # Every derived class should set this to the name of its
-               # source file.
-
-               self.name = "a"
-
-
-               # License on the *generated* source file.  This may differ
-               # from the license on the script that is generating the file.
-               # Every derived class should set this to some reasonable
-               # value.
-               #
-               # See license.py for an example of a reasonable value.
-
-               self.license = "The license for this file is unspecified."
-
-               
-               # The header_tag is the name of the C preprocessor define
-               # used to prevent multiple inclusion.  Typically only
-               # generated C header files need this to be set.  Setting it
-               # causes code to be generated automatically in printHeader
-               # and printFooter.
-
-               self.header_tag = None
-
-               
-               # List of file-private defines that must be undefined at the
-               # end of the file.  This can be used in header files to define
-               # names for use in the file, then undefine them at the end of
-               # the header file.
-
-               self.undef_list = []
-               return
-
-
-       def Print(self, api):
-               self.printHeader()
-               self.printBody(api)
-               self.printFooter()
-               return
-
-
-       def printHeader(self):
-               """Print the header associated with all files and call the printRealHeader method."""
-
-               print '/* DO NOT EDIT - This file generated automatically by %s script */' \
-                       % (self.name)
-               print ''
-               print '/*'
-               print ' * ' + self.license.replace('\n', '\n * ')
-               print ' */'
-               print ''
-               if self.header_tag:
-                   print '#if !defined( %s )' % (self.header_tag)
-                   print '#  define %s' % (self.header_tag)
-                   print ''
-               self.printRealHeader();
-               return
-
-
-       def printFooter(self):
-               """Print the header associated with all files and call the printRealFooter method."""
-
-               self.printRealFooter()
-
-               if self.undef_list:
-                       print ''
-                       for u in self.undef_list:
-                               print "#  undef %s" % (u)
-
-               if self.header_tag:
-                       print ''
-                       print '#endif /* !defined( %s ) */' % (self.header_tag)
-
-
-       def printRealHeader(self):
-               """Print the "real" header for the created file.
-
-               In the base class, this function is empty.  All derived
-               classes should over-ride this function."""
-               return
-
-
-       def printRealFooter(self):
-               """Print the "real" footer for the created file.
-
-               In the base class, this function is empty.  All derived
-               classes should over-ride this function."""
-               return
-
-
-       def printPure(self):
-               """Conditionally define `PURE' function attribute.
-
-               Conditionally defines a preprocessor macro `PURE' that wraps
-               GCC's `pure' function attribute.  The conditional code can be
-               easilly adapted to other compilers that support a similar
-               feature.
-
-               The name is also added to the file's undef_list.
-               """
-               self.undef_list.append("PURE")
-               print """#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-#    define PURE __attribute__((pure))
-#  else
-#    define PURE
-#  endif"""
-               return
-
-
-       def printFastcall(self):
-               """Conditionally define `FASTCALL' function attribute.
-
-               Conditionally defines a preprocessor macro `FASTCALL' that
-               wraps GCC's `fastcall' function attribute.  The conditional
-               code can be easilly adapted to other compilers that support a
-               similar feature.
-
-               The name is also added to the file's undef_list.
-               """
-
-               self.undef_list.append("FASTCALL")
-               print """#  if defined(__i386__) && defined(__GNUC__) && !defined(__CYGWIN__) && !defined(__MINGW32__)
-#    define FASTCALL __attribute__((fastcall))
-#  else
-#    define FASTCALL
-#  endif"""
-               return
-
-
-       def printVisibility(self, S, s):
-               """Conditionally define visibility function attribute.
-
-               Conditionally defines a preprocessor macro name S that wraps
-               GCC's visibility function attribute.  The visibility used is
-               the parameter s.  The conditional code can be easilly adapted
-               to other compilers that support a similar feature.
-
-               The name is also added to the file's undef_list.
-               """
-
-               self.undef_list.append(S)
-               print """#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) && defined(__ELF__)
-#    define %s  __attribute__((visibility("%s")))
-#  else
-#    define %s
-#  endif""" % (S, s, S)
-               return
-
-
-       def printNoinline(self):
-               """Conditionally define `NOINLINE' function attribute.
-
-               Conditionally defines a preprocessor macro `NOINLINE' that
-               wraps GCC's `noinline' function attribute.  The conditional
-               code can be easilly adapted to other compilers that support a
-               similar feature.
-
-               The name is also added to the file's undef_list.
-               """
-
-               self.undef_list.append("NOINLINE")
-               print """#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590))
-#    define NOINLINE __attribute__((noinline))
-#  else
-#    define NOINLINE
-#  endif"""
-               return
-
-
-def real_function_name(element):
-       name = element.nsProp( "name", None )
-       alias = element.nsProp( "alias", None )
-       
-       if alias:
-               return alias
-       else:
-               return name
-
-
-def real_category_name(c):
-       if re.compile("[1-9][0-9]*[.][0-9]+").match(c):
-               return "GL_VERSION_" + c.replace(".", "_")
-       else:
-               return c
-
-
-def classify_category(name, number):
-       """Based on the category name and number, select a numerical class for it.
-       
-       Categories are divided into four classes numbered 0 through 3.  The
-       classes are:
-
-               0. Core GL versions, sorted by version number.
-               1. ARB extensions, sorted by extension number.
-               2. Non-ARB extensions, sorted by extension number.
-               3. Un-numbered extensions, sorted by extension name.
-       """
-
-       try:
-               core_version = float(name)
-       except Exception,e:
-               core_version = 0.0
-
-       if core_version > 0.0:
-               cat_type = 0
-               key = name
-       elif name.startswith("GL_ARB_") or name.startswith("GLX_ARB_") or name.startswith("WGL_ARB_"):
-               cat_type = 1
-               key = int(number)
-       else:
-               if number != None:
-                       cat_type = 2
-                       key = int(number)
-               else:
-                       cat_type = 3
-                       key = name
-
-
-       return [cat_type, key]
-
-
-def create_parameter_string(parameters, include_names):
-       """Create a parameter string from a list of gl_parameters."""
-
-       list = []
-       for p in parameters:
-               if p.is_padding:
-                       continue
-
-               if include_names:
-                       list.append( p.string() )
-               else:
-                       list.append( p.type_string() )
-
-       if len(list) == 0: list = ["void"]
-
-       return string.join(list, ", ")
-
-
-class gl_item:
-       def __init__(self, element, context):
-               self.context = context
-               self.name = element.nsProp( "name", None )
-               self.category = real_category_name( element.parent.nsProp( "name", None ) )
-               return
-
-
-class gl_type( gl_item ):
-       def __init__(self, element, context):
-               gl_item.__init__(self, element, context)
-               self.size = int( element.nsProp( "size", None ), 0 )
-
-               te = typeexpr.type_expression( None )
-               tn = typeexpr.type_node()
-               tn.size = int( element.nsProp( "size", None ), 0 )
-               tn.integer = not is_attr_true( element, "float" )
-               tn.unsigned = is_attr_true( element, "unsigned" )
-               tn.name = "GL" + self.name
-               te.set_base_type_node( tn )
-
-               self.type_expr = te
-               return
-       
-
-       def get_type_expression(self):
-               return self.type_expr
-
-
-class gl_enum( gl_item ):
-       def __init__(self, element, context):
-               gl_item.__init__(self, element, context)
-               self.value = int( element.nsProp( "value", None ), 0 )
-
-               temp = element.nsProp( "count", None )
-               if not temp or temp == "?":
-                       self.default_count = -1
-               else:
-                       try:
-                               c = int(temp)
-                       except Exception,e:
-                               raise RuntimeError('Invalid count value "%s" for enum "%s" in function "%s" when an integer was expected.' % (temp, self.name, n))
-
-                       self.default_count = c
-
-               return
-
-
-       def priority(self):
-               """Calculate a 'priority' for this enum name.
-               
-               When an enum is looked up by number, there may be many
-               possible names, but only one is the 'prefered' name.  The
-               priority is used to select which name is the 'best'.
-
-               Highest precedence is given to core GL name.  ARB extension
-               names have the next highest, followed by EXT extension names.
-               Vendor extension names are the lowest.
-               """
-
-               if self.name.endswith( "_BIT" ):
-                       bias = 1
-               else:
-                       bias = 0
-
-               if self.category.startswith( "GL_VERSION_" ):
-                       priority = 0
-               elif self.category.startswith( "GL_ARB_" ):
-                       priority = 2
-               elif self.category.startswith( "GL_EXT_" ):
-                       priority = 4
-               else:
-                       priority = 6
-
-               return priority + bias
-
-
-
-class gl_parameter:
-       def __init__(self, element, context):
-               self.name = element.nsProp( "name", None )
-
-               ts = element.nsProp( "type", None )
-               self.type_expr = typeexpr.type_expression( ts, context )
-
-               temp = element.nsProp( "variable_param", None )
-               if temp:
-                       self.count_parameter_list = temp.split( ' ' )
-               else:
-                       self.count_parameter_list = []
-
-               # The count tag can be either a numeric string or the name of
-               # a variable.  If it is the name of a variable, the int(c)
-               # statement will throw an exception, and the except block will
-               # take over.
-
-               c = element.nsProp( "count", None )
-               try: 
-                       count = int(c)
-                       self.count = count
-                       self.counter = None
-               except Exception,e:
-                       count = 1
-                       self.count = 0
-                       self.counter = c
-               
-               self.count_scale = int(element.nsProp( "count_scale", None ))
-
-               elements = (count * self.count_scale)
-               if elements == 1:
-                       elements = 0
-
-               #if ts == "GLdouble":
-               #       print '/* stack size -> %s = %u (before)*/' % (self.name, self.type_expr.get_stack_size())
-               #       print '/* # elements = %u */' % (elements)
-               self.type_expr.set_elements( elements )
-               #if ts == "GLdouble":
-               #       print '/* stack size -> %s = %u (after) */' % (self.name, self.type_expr.get_stack_size())
-
-               self.is_client_only = is_attr_true( element, 'client_only' )
-               self.is_counter     = is_attr_true( element, 'counter' )
-               self.is_output      = is_attr_true( element, 'output' )
-
-
-               # Pixel data has special parameters.
-
-               self.width      = element.nsProp('img_width',  None)
-               self.height     = element.nsProp('img_height', None)
-               self.depth      = element.nsProp('img_depth',  None)
-               self.extent     = element.nsProp('img_extent', None)
-
-               self.img_xoff   = element.nsProp('img_xoff',   None)
-               self.img_yoff   = element.nsProp('img_yoff',   None)
-               self.img_zoff   = element.nsProp('img_zoff',   None)
-               self.img_woff   = element.nsProp('img_woff',   None)
-
-               self.img_format = element.nsProp('img_format', None)
-               self.img_type   = element.nsProp('img_type',   None)
-               self.img_target = element.nsProp('img_target', None)
-
-               self.img_pad_dimensions = is_attr_true( element, 'img_pad_dimensions' )
-               self.img_null_flag      = is_attr_true( element, 'img_null_flag' )
-               self.img_send_null      = is_attr_true( element, 'img_send_null' )
-
-               self.is_padding = is_attr_true( element, 'padding' )
-               return
-
-
-       def compatible(self, other):
-               return 1
-
-
-       def is_array(self):
-               return self.is_pointer()
-
-
-       def is_pointer(self):
-               return self.type_expr.is_pointer()
-
-
-       def is_image(self):
-               if self.width:
-                       return 1
-               else:
-                       return 0
-
-
-       def is_variable_length(self):
-               return len(self.count_parameter_list) or self.counter
-
-
-       def is_64_bit(self):
-               count = self.type_expr.get_element_count()
-               if count:
-                       if (self.size() / count) == 8:
-                               return 1
-               else:
-                       if self.size() == 8:
-                               return 1
-
-               return 0
-
-
-       def string(self):
-               return self.type_expr.original_string + " " + self.name
-
-
-       def type_string(self):
-               return self.type_expr.original_string
-
-
-       def get_base_type_string(self):
-               return self.type_expr.get_base_name()
-
-
-       def get_dimensions(self):
-               if not self.width:
-                       return [ 0, "0", "0", "0", "0" ]
-
-               dim = 1
-               w = self.width
-               h = "1"
-               d = "1"
-               e = "1"
-
-               if self.height:
-                       dim = 2
-                       h = self.height
-
-               if self.depth:
-                       dim = 3
-                       d = self.depth
-
-               if self.extent:
-                       dim = 4
-                       e = self.extent
-
-               return [ dim, w, h, d, e ]
-
-
-       def get_stack_size(self):
-               return self.type_expr.get_stack_size()
-
-
-       def size(self):
-               if self.is_image():
-                       return 0
-               else:
-                       return self.type_expr.get_element_size()
-
-
-       def get_element_count(self):
-               c = self.type_expr.get_element_count()
-               if c == 0:
-                       return 1
-
-               return c
-
-
-       def size_string(self, use_parens = 1):
-               s = self.size()
-               if self.counter or self.count_parameter_list:
-                       list = [ "compsize" ]
-
-                       if self.counter and self.count_parameter_list:
-                               list.append( self.counter )
-                       elif self.counter:
-                               list = [ self.counter ]
-
-                       if s > 1:
-                               list.append( str(s) )
-
-                       if len(list) > 1 and use_parens :
-                               return "(%s)" % (string.join(list, " * "))
-                       else:
-                               return string.join(list, " * ")
-
-               elif self.is_image():
-                       return "compsize"
-               else:
-                       return str(s)
-
-
-       def format_string(self):
-               if self.type_expr.original_string == "GLenum":
-                       return "0x%x"
-               else:
-                       return self.type_expr.format_string()
-
-
-
-class gl_function( gl_item ):
-       def __init__(self, element, context):
-               self.context = context
-               self.name = None
-
-               self.entry_points = []
-               self.return_type = "void"
-               self.parameters = []
-               self.offset = -1
-               self.initialized = 0
-               self.images = []
-
-               self.assign_offset = 0
-
-               self.static_entry_points = []
-
-               # Track the parameter string (for the function prototype)
-               # for each entry-point.  This is done because some functions
-               # change their prototype slightly when promoted from extension
-               # to ARB extension to core.  glTexImage3DEXT and glTexImage3D
-               # are good examples of this.  Scripts that need to generate
-               # code for these differing aliases need to real prototype
-               # for each entry-point.  Otherwise, they may generate code
-               # that won't compile.
-
-               self.parameter_strings = {}
-
-               self.process_element( element )
-
-               return
-
-       
-       def process_element(self, element):
-               name = element.nsProp( "name", None )
-               alias = element.nsProp( "alias", None )
-
-               if is_attr_true(element, "static_dispatch"):
-                       self.static_entry_points.append(name)
-
-               self.entry_points.append( name )
-               if alias:
-                       true_name = alias
-               else:
-                       true_name = name
-
-                       # Only try to set the offset when a non-alias
-                       # entry-point is being processes.
-
-                       offset = element.nsProp( "offset", None )
-                       if offset:
-                               try:
-                                       o = int( offset )
-                                       self.offset = o
-                               except Exception, e:
-                                       self.offset = -1
-                                       if offset == "assign":
-                                               self.assign_offset = 1
-
-
-               if not self.name:
-                       self.name = true_name
-               elif self.name != true_name:
-                       raise RuntimeError("Function true name redefined.  Was %s, now %s." % (self.name, true_name))
-
-
-               # There are two possible cases.  The first time an entry-point
-               # with data is seen, self.initialized will be 0.  On that
-               # pass, we just fill in the data.  The next time an
-               # entry-point with data is seen, self.initialized will be 1.
-               # On that pass we have to make that the new values match the
-               # valuse from the previous entry-point.
-
-               parameters = []
-               return_type = "void"
-               child = element.children
-               while child:
-                       if child.type == "element":
-                               if child.name == "return":
-                                       return_type = child.nsProp( "type", None )
-                               elif child.name == "param":
-                                       param = self.context.factory.create_item( "parameter", child, self.context)
-                                       parameters.append( param )
-
-                       child = child.next
-
-
-               if self.initialized:
-                       if self.return_type != return_type:
-                               raise RuntimeError( "Return type changed in %s.  Was %s, now %s." % (name, self.return_type, return_type))
-
-                       if len(parameters) != len(self.parameters):
-                               raise RuntimeError( "Parameter count mismatch in %s.  Was %d, now %d." % (name, len(self.parameters), len(parameters)))
-
-                       for j in range(0, len(parameters)):
-                               p1 = parameters[j]
-                               p2 = self.parameters[j]
-                               if not p1.compatible( p2 ):
-                                       raise RuntimeError( 'Parameter type mismatch in %s.  "%s" was "%s", now "%s".' % (name, p2.name, p2.type_expr.original_string, p1.type_expr.original_string))
-
-
-               if true_name == name or not self.initialized:
-                       self.return_type = return_type
-                       self.parameters = parameters
-
-                       for param in self.parameters:
-                               if param.is_image():
-                                       self.images.append( param )
-
-               if element.children:
-                       self.initialized = 1
-                       self.parameter_strings[name] = create_parameter_string(parameters, 1)
-               else:
-                       self.parameter_strings[name] = None
-
-               return
-
-
-       def get_images(self):
-               """Return potentially empty list of input images."""
-               return self.images
-
-
-       def parameterIterator(self):
-               return self.parameters.__iter__();
-
-
-       def get_parameter_string(self, entrypoint = None):
-               if entrypoint:
-                       s = self.parameter_strings[ entrypoint ]
-                       if s:
-                               return s
-               
-               return create_parameter_string( self.parameters, 1 )
-
-       def get_called_parameter_string(self):
-               p_string = ""
-               comma = ""
-
-               for p in self.parameterIterator():
-                       p_string = p_string + comma + p.name
-                       comma = ", "
-
-               return p_string
-
-
-       def is_abi(self):
-               return (self.offset >= 0 and not self.assign_offset)
-
-       def is_static_entry_point(self, name):
-               return name in self.static_entry_points
-
-       def dispatch_name(self):
-               if self.name in self.static_entry_points:
-                       return self.name
-               else:
-                       return "_dispatch_stub_%u" % (self.offset)
-
-       def static_name(self, name):
-               if name in self.static_entry_points:
-                       return name
-               else:
-                       return "_dispatch_stub_%u" % (self.offset)
-
-
-class gl_item_factory:
-       """Factory to create objects derived from gl_item."""
-
-       def create_item(self, item_name, element, context):
-               if item_name == "function":
-                       return gl_function(element, context)
-               if item_name == "type":
-                       return gl_type(element, context)
-               elif item_name == "enum":
-                       return gl_enum(element, context)
-               elif item_name == "parameter":
-                       return gl_parameter(element, context)
-               elif item_name == "api":
-                       return gl_api(self)
-               else:
-                       return None
-
-
-class gl_api:
-       def __init__(self, factory):
-               self.functions_by_name = {}
-               self.enums_by_name = {}
-               self.types_by_name = {}
-
-               self.category_dict = {}
-               self.categories = [{}, {}, {}, {}]
-
-               self.factory = factory
-
-               self.next_offset = 0
-
-               typeexpr.create_initial_types()
-               return
-
-
-       def process_element(self, doc):
-               element = doc.children
-               while element.type != "element" or element.name != "OpenGLAPI":
-                       element = element.next
-
-               if element:
-                       self.process_OpenGLAPI(element)
-               return
-
-
-       def process_OpenGLAPI(self, element):
-               child = element.children
-               while child:
-                       if child.type == "element":
-                               if child.name == "category":
-                                       self.process_category( child )
-                               elif child.name == "OpenGLAPI":
-                                       self.process_OpenGLAPI( child )
-
-                       child = child.next
-
-               return
-
-
-       def process_category(self, cat):
-               cat_name = cat.nsProp( "name", None )
-               cat_number = cat.nsProp( "number", None )
-
-               [cat_type, key] = classify_category(cat_name, cat_number)
-               self.categories[cat_type][key] = [cat_name, cat_number]
-
-               child = cat.children
-               while child:
-                       if child.type == "element":
-                               if child.name == "function":
-                                       func_name = real_function_name( child )
-
-                                       temp_name = child.nsProp( "name", None )
-                                       self.category_dict[ temp_name ] = [cat_name, cat_number]
-
-                                       if self.functions_by_name.has_key( func_name ):
-                                               func = self.functions_by_name[ func_name ]
-                                               func.process_element( child )
-                                       else:
-                                               func = self.factory.create_item( "function", child, self )
-                                               self.functions_by_name[ func_name ] = func
-
-                                       if func.offset >= self.next_offset:
-                                               self.next_offset = func.offset + 1
-
-
-                               elif child.name == "enum":
-                                       enum = self.factory.create_item( "enum", child, self )
-                                       self.enums_by_name[ enum.name ] = enum
-                               elif child.name == "type":
-                                       t = self.factory.create_item( "type", child, self )
-                                       self.types_by_name[ "GL" + t.name ] = t
-
-
-                       child = child.next
-
-               return
-
-
-       def functionIterateByCategory(self, cat = None):
-               """Iterate over functions by category.
-               
-               If cat is None, all known functions are iterated in category
-               order.  See classify_category for details of the ordering.
-               Within a category, functions are sorted by name.  If cat is
-               not None, then only functions in that category are iterated.
-               """
-               lists = [{}, {}, {}, {}]
-
-               for func in self.functionIterateAll():
-                       [cat_name, cat_number] = self.category_dict[func.name]
-
-                       if (cat == None) or (cat == cat_name):
-                               [func_cat_type, key] = classify_category(cat_name, cat_number)
-
-                               if not lists[func_cat_type].has_key(key):
-                                       lists[func_cat_type][key] = {}
-
-                               lists[func_cat_type][key][func.name] = func
-
-
-               functions = []
-               for func_cat_type in range(0,4):
-                       keys = lists[func_cat_type].keys()
-                       keys.sort()
-
-                       for key in keys:
-                               names = lists[func_cat_type][key].keys()
-                               names.sort()
-
-                               for name in names:
-                                       functions.append(lists[func_cat_type][key][name])
-
-               return functions.__iter__()
-
-
-       def functionIterateByOffset(self):
-               max_offset = -1
-               for func in self.functions_by_name.itervalues():
-                       if func.offset > max_offset:
-                               max_offset = func.offset
-
-
-               temp = [None for i in range(0, max_offset + 1)]
-               for func in self.functions_by_name.itervalues():
-                       if func.offset != -1:
-                               temp[ func.offset ] = func
-
-
-               list = []
-               for i in range(0, max_offset + 1):
-                       if temp[i]:
-                               list.append(temp[i])
-
-               return list.__iter__();
-
-
-       def functionIterateAll(self):
-               return self.functions_by_name.itervalues()
-
-
-       def enumIterateByName(self):
-               keys = self.enums_by_name.keys()
-               keys.sort()
-               
-               list = []
-               for enum in keys:
-                       list.append( self.enums_by_name[ enum ] )
-
-               return list.__iter__()
-
-
-       def categoryIterate(self):
-               """Iterate over categories.
-               
-               Iterate over all known categories in the order specified by
-               classify_category.  Each iterated value is a tuple of the
-               name and number (which may be None) of the category.
-               """
-
-               list = []
-               for cat_type in range(0,4):
-                       keys = self.categories[cat_type].keys()
-                       keys.sort()
-                       
-                       for key in keys:
-                               list.append(self.categories[cat_type][key])
-                               
-               return list.__iter__()
-
-
-       def get_category_for_name( self, name ):
-               if self.category_dict.has_key(name):
-                       return self.category_dict[name]
-               else:
-                       return ["<unknown category>", None]
-
-
-       def typeIterate(self):
-               return self.types_by_name.itervalues()
-
-
-       def find_type( self, type_name ):
-               if type_name in self.types_by_name:
-                       return self.types_by_name[ type_name ].type_expr
-               else:
-                       print "Unable to find base type matching \"%s\"." % (type_name)
-                       return None
diff --git a/src/mesa/glapi/gen/gl_and_glX_API.xml b/src/mesa/glapi/gen/gl_and_glX_API.xml
deleted file mode 100644 (file)
index 34c977e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE OpenGLAPI SYSTEM "gl_API.dtd">
-
-<OpenGLAPI>
-<xi:include href="glX_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-<xi:include href="gl_API.xml" xmlns:xi="http://www.w3.org/2001/XInclude"/>
-</OpenGLAPI>
\ No newline at end of file
diff --git a/src/mesa/glapi/gen/gl_apitemp.py b/src/mesa/glapi/gen/gl_apitemp.py
deleted file mode 100644 (file)
index 41a40fb..0000000
+++ /dev/null
@@ -1,320 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML, glX_XML
-import license
-import sys, getopt
-
-class PrintGlOffsets(gl_XML.gl_print_base):
-       def __init__(self, es=False):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "gl_apitemp.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
-(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
-
-               self.es = es
-
-               self.undef_list.append( "KEYWORD1" )
-               self.undef_list.append( "KEYWORD1_ALT" )
-               self.undef_list.append( "KEYWORD2" )
-               self.undef_list.append( "NAME" )
-               self.undef_list.append( "DISPATCH" )
-               self.undef_list.append( "RETURN_DISPATCH" )
-               self.undef_list.append( "DISPATCH_TABLE_NAME" )
-               self.undef_list.append( "UNUSED_TABLE_NAME" )
-               self.undef_list.append( "TABLE_ENTRY" )
-
-
-       def printFunction(self, f, name):
-               p_string = ""
-               o_string = ""
-               t_string = ""
-               comma = ""
-
-               if f.is_static_entry_point(name):
-                       keyword = "KEYWORD1"
-               else:
-                       keyword = "KEYWORD1_ALT"
-
-               n = f.static_name(name)
-
-               for p in f.parameterIterator():
-                       if p.is_padding:
-                               continue
-
-                       if p.is_pointer():
-                               cast = "(const void *) "
-                       else:
-                               cast = ""
-
-                       t_string = t_string + comma + p.format_string()
-                       p_string = p_string + comma + p.name
-                       o_string = o_string + comma + cast + p.name
-                       comma = ", "
-
-
-               if f.return_type != 'void':
-                       dispatch = "RETURN_DISPATCH"
-               else:
-                       dispatch = "DISPATCH"
-
-               need_proto = False
-               if not f.is_static_entry_point(name):
-                       need_proto = True
-               elif self.es:
-                       cat, num = api.get_category_for_name(name)
-                       if (cat.startswith("es") or cat.startswith("GL_OES")):
-                               need_proto = True
-               if need_proto:
-                       print '%s %s KEYWORD2 NAME(%s)(%s);' % (keyword, f.return_type, n, f.get_parameter_string(name))
-                       print ''
-
-               print '%s %s KEYWORD2 NAME(%s)(%s)' % (keyword, f.return_type, n, f.get_parameter_string(name))
-               print '{'
-               if p_string == "":
-                       print '   %s(%s, (), (F, "gl%s();\\n"));' \
-                               % (dispatch, f.name, name)
-               else:
-                       print '   %s(%s, (%s), (F, "gl%s(%s);\\n", %s));' \
-                               % (dispatch, f.name, p_string, name, t_string, o_string)
-               print '}'
-               print ''
-               return
-
-       def printRealHeader(self):
-               print ''
-               self.printVisibility( "HIDDEN", "hidden" )
-               print """
-/*
- * This file is a template which generates the OpenGL API entry point
- * functions.  It should be included by a .c file which first defines
- * the following macros:
- *   KEYWORD1 - usually nothing, but might be __declspec(dllexport) on Win32
- *   KEYWORD2 - usually nothing, but might be __stdcall on Win32
- *   NAME(n)  - builds the final function name (usually add "gl" prefix)
- *   DISPATCH(func, args, msg) - code to do dispatch of named function.
- *                               msg is a printf-style debug message.
- *   RETURN_DISPATCH(func, args, msg) - code to do dispatch with a return value
- *
- * Here is an example which generates the usual OpenGL functions:
- *   #define KEYWORD1
- *   #define KEYWORD2
- *   #define NAME(func)  gl##func
- *   #define DISPATCH(func, args, msg)                           \\
- *          struct _glapi_table *dispatch = CurrentDispatch;     \\
- *          (*dispatch->func) args
- *   #define RETURN DISPATCH(func, args, msg)                    \\
- *          struct _glapi_table *dispatch = CurrentDispatch;     \\
- *          return (*dispatch->func) args
- *
- */
-
-
-#if defined( NAME )
-#ifndef KEYWORD1
-#define KEYWORD1
-#endif
-
-#ifndef KEYWORD1_ALT
-#define KEYWORD1_ALT HIDDEN
-#endif
-
-#ifndef KEYWORD2
-#define KEYWORD2
-#endif
-
-#ifndef DISPATCH
-#error DISPATCH must be defined
-#endif
-
-#ifndef RETURN_DISPATCH
-#error RETURN_DISPATCH must be defined
-#endif
-
-"""
-               return
-
-    
-
-       def printInitDispatch(self, api):
-               print """
-#endif /* defined( NAME ) */
-
-/*
- * This is how a dispatch table can be initialized with all the functions
- * we generated above.
- */
-#ifdef DISPATCH_TABLE_NAME
-
-#ifndef TABLE_ENTRY
-#error TABLE_ENTRY must be defined
-#endif
-
-#ifdef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
-#error _GLAPI_SKIP_NORMAL_ENTRY_POINTS must not be defined
-#endif
-
-_glapi_proc DISPATCH_TABLE_NAME[] = {"""
-               for f in api.functionIterateByOffset():
-                       print '   TABLE_ENTRY(%s),' % (f.dispatch_name())
-
-               print '   /* A whole bunch of no-op functions.  These might be called'
-               print '    * when someone tries to call a dynamically-registered'
-               print '    * extension function without a current rendering context.'
-               print '    */'
-               for i in range(1, 100):
-                       print '   TABLE_ENTRY(Unused),'
-
-               print '};'
-               print '#endif /* DISPATCH_TABLE_NAME */'
-               print ''
-               return
-
-
-       def printAliasedTable(self, api):
-               print """
-/*
- * This is just used to silence compiler warnings.
- * We list the functions which are not otherwise used.
- */
-#ifdef UNUSED_TABLE_NAME
-_glapi_proc UNUSED_TABLE_NAME[] = {"""
-
-               normal_entries = []
-               proto_entries = []
-               for f in api.functionIterateByOffset():
-                       normal_ents, proto_ents = self.classifyEntryPoints(f)
-
-                       # exclude f.name
-                       if f.name in normal_ents:
-                               normal_ents.remove(f.name)
-                       elif f.name in proto_ents:
-                               proto_ents.remove(f.name)
-
-                       normal_ents = [f.static_name(ent) for ent in normal_ents]
-                       proto_ents = [f.static_name(ent) for ent in proto_ents]
-
-                       normal_entries.extend(normal_ents)
-                       proto_entries.extend(proto_ents)
-
-               print '#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS'
-               for ent in normal_entries:
-                       print '   TABLE_ENTRY(%s),' % (ent)
-               print '#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */'
-               print '#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS'
-               for ent in proto_entries:
-                       print '   TABLE_ENTRY(%s),' % (ent)
-               print '#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */'
-
-               print '};'
-               print '#endif /*UNUSED_TABLE_NAME*/'
-               print ''
-               return
-
-
-       def classifyEntryPoints(self, func):
-               normal_names = []
-               normal_stubs = []
-               proto_names = []
-               proto_stubs = []
-               # classify the entry points
-               for name in func.entry_points:
-                       if func.has_different_protocol(name):
-                               if func.is_static_entry_point(name):
-                                       proto_names.append(name)
-                               else:
-                                       proto_stubs.append(name)
-                       else:
-                               if func.is_static_entry_point(name):
-                                       normal_names.append(name)
-                               else:
-                                       normal_stubs.append(name)
-               # there can be at most one stub for a function
-               if normal_stubs:
-                       normal_names.append(normal_stubs[0])
-               elif proto_stubs:
-                       proto_names.append(proto_stubs[0])
-
-               return (normal_names, proto_names)
-
-       def printBody(self, api):
-               normal_entry_points = []
-               proto_entry_points = []
-               for func in api.functionIterateByOffset():
-                       normal_ents, proto_ents = self.classifyEntryPoints(func)
-                       normal_entry_points.append((func, normal_ents))
-                       proto_entry_points.append((func, proto_ents))
-
-               print '#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS'
-               print ''
-               for func, ents in normal_entry_points:
-                       for ent in ents:
-                               self.printFunction(func, ent)
-               print ''
-               print '#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */'
-               print ''
-               print '/* these entry points might require different protocols */'
-               print '#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS'
-               print ''
-               for func, ents in proto_entry_points:
-                       for ent in ents:
-                               self.printFunction(func, ent)
-               print ''
-               print '#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */'
-               print ''
-
-               self.printInitDispatch(api)
-               self.printAliasedTable(api)
-               return
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-c]" % sys.argv[0]
-       print "-c          Enable compatibility with OpenGL ES."
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-    
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:c")
-       except Exception,e:
-               show_usage()
-
-       es = False
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-c":
-                       es = True
-
-       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
-
-       printer = PrintGlOffsets(es)
-       printer.Print(api)
diff --git a/src/mesa/glapi/gen/gl_enums.py b/src/mesa/glapi/gen/gl_enums.py
deleted file mode 100644 (file)
index 644e085..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-#!/usr/bin/python2
-# -*- Mode: Python; py-indent-offset: 8 -*-
-
-# (C) Copyright Zack Rusin 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
-# 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
-# IBM 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:
-#    Zack Rusin <zack@kde.org>
-
-import license
-import gl_XML
-import sys, getopt
-
-class PrintGlEnums(gl_XML.gl_print_base):
-
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "gl_enums.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2005 Brian Paul All Rights Reserved.""", "BRIAN PAUL")
-               self.enum_table = {}
-
-
-       def printRealHeader(self):
-               print '#include "main/glheader.h"'
-               print '#include "main/mfeatures.h"'
-               print '#include "main/enums.h"'
-               print '#include "main/imports.h"'
-               print ''
-               print 'typedef struct {'
-               print '   size_t offset;'
-               print '   int n;'
-               print '} enum_elt;'
-               print ''
-               return
-
-       def print_code(self):
-               print """
-typedef int (*cfunc)(const void *, const void *);
-
-/**
- * Compare a key name to an element in the \c all_enums array.
- *
- * \c bsearch always passes the key as the first parameter and the pointer
- * to the array element as the second parameter.  We can elimiate some
- * extra work by taking advantage of that fact.
- *
- * \param a  Pointer to the desired enum name.
- * \param b  Pointer to an element of the \c all_enums array.
- */
-static int compar_name( const char *a, const enum_elt *b )
-{
-   return strcmp( a, & enum_string_table[ b->offset ] );
-}
-
-/**
- * Compare a key enum value to an element in the \c all_enums array.
- *
- * \c bsearch always passes the key as the first parameter and the pointer
- * to the array element as the second parameter.  We can elimiate some
- * extra work by taking advantage of that fact.
- *
- * \param a  Pointer to the desired enum name.
- * \param b  Pointer to an index into the \c all_enums array.
- */
-static int compar_nr( const int *a, const unsigned *b )
-{
-   return a[0] - all_enums[*b].n;
-}
-
-
-static char token_tmp[20];
-
-const char *_mesa_lookup_enum_by_nr( int nr )
-{
-   unsigned * i;
-
-   i = (unsigned *) _mesa_bsearch(& nr, reduced_enums,
-                                  Elements(reduced_enums),
-                                  sizeof(reduced_enums[0]),
-                                  (cfunc) compar_nr);
-
-   if ( i != NULL ) {
-      return & enum_string_table[ all_enums[ *i ].offset ];
-   }
-   else {
-      /* this is not re-entrant safe, no big deal here */
-      sprintf(token_tmp, "0x%x", nr);
-      return token_tmp;
-   }
-}
-
-/* Get the name of an enum given that it is a primitive type.  Avoids
- * GL_FALSE/GL_POINTS ambiguity and others.
- */
-const char *_mesa_lookup_prim_by_nr( int nr )
-{
-   switch (nr) {
-   case GL_POINTS: return "GL_POINTS";
-   case GL_LINES: return "GL_LINES";
-   case GL_LINE_STRIP: return "GL_LINE_STRIP";
-   case GL_LINE_LOOP: return "GL_LINE_LOOP";
-   case GL_TRIANGLES: return "GL_TRIANGLES";
-   case GL_TRIANGLE_STRIP: return "GL_TRIANGLE_STRIP";
-   case GL_TRIANGLE_FAN: return "GL_TRIANGLE_FAN";
-   case GL_QUADS: return "GL_QUADS";
-   case GL_QUAD_STRIP: return "GL_QUAD_STRIP";
-   case GL_POLYGON: return "GL_POLYGON";
-   case GL_POLYGON+1: return "OUTSIDE_BEGIN_END";
-   default: return "<invalid>";
-   }
-}
-
-
-
-int _mesa_lookup_enum_by_name( const char *symbol )
-{
-   enum_elt * f = NULL;
-
-   if ( symbol != NULL ) {
-      f = (enum_elt *) _mesa_bsearch(symbol, all_enums,
-                                     Elements(all_enums),
-                                     sizeof( enum_elt ),
-                                     (cfunc) compar_name);
-   }
-
-   return (f != NULL) ? f->n : -1;
-}
-
-"""
-               return
-
-
-       def printBody(self, api_list):
-               self.enum_table = {}
-               for api in api_list:
-                       self.process_enums( api )
-
-               keys = self.enum_table.keys()
-               keys.sort()
-
-               name_table = []
-               enum_table = {}
-
-               for enum in keys:
-                       low_pri = 9
-                       for [name, pri] in self.enum_table[ enum ]:
-                               name_table.append( [name, enum] )
-
-                               if pri < low_pri:
-                                       low_pri = pri
-                                       enum_table[enum] = name
-                                               
-
-               name_table.sort()
-
-               string_offsets = {}
-               i = 0;
-               print 'LONGSTRING static const char enum_string_table[] = '
-               for [name, enum] in name_table:
-                       print '   "%s\\0"' % (name)
-                       string_offsets[ name ] = i
-                       i += len(name) + 1
-
-               print '   ;'
-               print ''
-
-
-               print 'static const enum_elt all_enums[%u] =' % (len(name_table))
-               print '{'
-               for [name, enum] in name_table:
-                       print '   { %5u, 0x%08X }, /* %s */' % (string_offsets[name], enum, name)
-               print '};'
-               print ''
-
-               print 'static const unsigned reduced_enums[%u] =' % (len(keys))
-               print '{'
-               for enum in keys:
-                       name = enum_table[ enum ]
-                       if [name, enum] not in name_table:
-                               print '      /* Error! %s, 0x%04x */ 0,' % (name, enum)
-                       else:
-                               i = name_table.index( [name, enum] )
-
-                               print '      %4u, /* %s */' % (i, name)
-               print '};'
-
-
-               self.print_code()
-               return
-
-
-       def process_enums(self, api):
-               for obj in api.enumIterateByName():
-                       if obj.value not in self.enum_table:
-                               self.enum_table[ obj.value ] = []
-
-
-                       enum = self.enum_table[ obj.value ]
-                       name = "GL_" + obj.name
-                       priority = obj.priority()
-                       already_in = False;
-                       for n, p in enum:
-                               if n == name:
-                                       already_in = True
-                       if not already_in:
-                               enum.append( [name, priority] )
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name]" % sys.argv[0]
-       sys.exit(1)
-
-if __name__ == '__main__':
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:")
-       except Exception,e:
-               show_usage()
-
-       api_list = []
-       for (arg,val) in args:
-               if arg == "-f":
-                       api = gl_XML.parse_GL_API( val )
-                       api_list.append(api);
-
-       printer = PrintGlEnums()
-       printer.Print( api_list )
diff --git a/src/mesa/glapi/gen/gl_offsets.py b/src/mesa/glapi/gen/gl_offsets.py
deleted file mode 100644 (file)
index 54867b3..0000000
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML
-import license
-import sys, getopt
-
-class PrintGlOffsets(gl_XML.gl_print_base):
-       def __init__(self, es=False):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.es = es
-               self.name = "gl_offsets.py (from Mesa)"
-               self.header_tag = '_GLAPI_OFFSETS_H_'
-               self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
-(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
-               return
-
-       def printBody(self, api):
-               print '/* this file should not be included directly in mesa */'
-               print ''
-
-               functions = []
-               abi_functions = []
-               alias_functions = []
-               count = 0
-               for f in api.functionIterateByOffset():
-                       if not f.is_abi():
-                               functions.append( [f, count] )
-                               count += 1
-                       else:
-                               abi_functions.append( f )
-
-                       if self.es:
-                               # remember functions with aliases
-                               if len(f.entry_points) > 1:
-                                       alias_functions.append(f)
-
-               for f in abi_functions:
-                       print '#define _gloffset_%s %d' % (f.name, f.offset)
-                       last_static = f.offset
-
-               print ''
-               print '#if !defined(_GLAPI_USE_REMAP_TABLE)'
-               print ''
-
-               for [f, index] in functions:
-                       print '#define _gloffset_%s %d' % (f.name, f.offset)
-
-               print '#define _gloffset_FIRST_DYNAMIC %d' % (api.next_offset)
-
-               print ''
-               print '#else'
-               print ''
-
-               for [f, index] in functions:
-                       print '#define _gloffset_%s driDispatchRemapTable[%s_remap_index]' % (f.name, f.name)
-
-               print ''
-               print '#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */'
-
-               if alias_functions:
-                       print ''
-                       print '/* define aliases for compatibility */'
-                       for f in alias_functions:
-                               for name in f.entry_points:
-                                       if name != f.name:
-                                               print '#define _gloffset_%s _gloffset_%s' % (name, f.name)
-               return
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-c]" % sys.argv[0]
-       print "    -c        Enable compatibility with OpenGL ES."
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-    
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:c")
-       except Exception,e:
-               show_usage()
-
-       es = False
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-c":
-                       es = True
-
-       api = gl_XML.parse_GL_API( file_name )
-
-       printer = PrintGlOffsets(es)
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/gl_procs.py b/src/mesa/glapi/gen/gl_procs.py
deleted file mode 100644 (file)
index 5de61fb..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import license
-import gl_XML, glX_XML
-import sys, getopt
-
-class PrintGlProcs(gl_XML.gl_print_base):
-       def __init__(self, long_strings, es=False):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.es = es
-               self.long_strings = long_strings
-               self.name = "gl_procs.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
-(C) Copyright IBM Corporation 2004, 2006""", "BRIAN PAUL, IBM")
-
-
-       def printRealHeader(self):
-               print """
-/* This file is only included by glapi.c and is used for
- * the GetProcAddress() function
- */
-
-typedef struct {
-    GLint Name_offset;
-#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
-    _glapi_proc Address;
-#endif
-    GLuint Offset;
-} glprocs_table_t;
-
-#if   !defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , o }
-#elif  defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f1 , o }
-#elif  defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f2 , o }
-#elif !defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
-#endif
-
-"""
-               return
-
-       def printRealFooter(self):
-               print ''
-               print '#undef NAME_FUNC_OFFSET'
-               return
-
-       def printFunctionString(self, name):
-               if self.long_strings:
-                       print '    "gl%s\\0"' % (name)
-               else:
-                       print "    'g','l',",
-                       for c in name:
-                               print "'%s'," % (c),
-                       
-                       print "'\\0',"
-
-
-       def printBody(self, api):
-               print ''
-               if self.long_strings:
-                       print 'static const char gl_string_table[] ='
-               else:
-                       print 'static const char gl_string_table[] = {'
-
-               base_offset = 0
-               table = []
-               for func in api.functionIterateByOffset():
-                       name = func.dispatch_name()
-                       self.printFunctionString(func.name)
-                       table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name))
-
-                       # The length of the function's name, plus 2 for "gl",
-                       # plus 1 for the NUL.
-
-                       base_offset += len(func.name) + 3
-
-
-               for func in api.functionIterateByOffset():
-                       for n in func.entry_points:
-                               if n != func.name:
-                                       name = func.dispatch_name()
-                                       self.printFunctionString( n )
-                                       
-                                       if func.has_different_protocol(n):
-                                               alt_name = "gl" + func.static_glx_name(n)
-                                               table.append((base_offset, "gl" + name, alt_name, alt_name, func.name))
-                                       else:
-                                               table.append((base_offset, "gl" + name, "gl" + name, "NULL", func.name))
-
-                                       base_offset += len(n) + 3
-
-
-               if self.long_strings:
-                       print '    ;'
-               else:
-                       print '};'
-
-               print ''
-               print ''
-               print "#ifdef USE_MGL_NAMESPACE"
-               for func in api.functionIterateByOffset():
-                       for n in func.entry_points:
-                               if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
-                                       print '#define gl_dispatch_stub_%u mgl_dispatch_stub_%u' % (func.offset, func.offset)
-                                       break
-               print "#endif /* USE_MGL_NAMESPACE */"
-               print ''
-               print ''
-               print '#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)'
-               for func in api.functionIterateByOffset():
-                       for n in func.entry_points:
-                               if (not func.is_static_entry_point(func.name)) or (func.has_different_protocol(n) and not func.is_static_entry_point(n)):
-                                       print '%s GLAPIENTRY gl_dispatch_stub_%u(%s);' % (func.return_type, func.offset, func.get_parameter_string())
-                                       break
-
-               if self.es:
-                       categories = {}
-                       for func in api.functionIterateByOffset():
-                               for n in func.entry_points:
-                                       cat, num = api.get_category_for_name(n)
-                                       if (cat.startswith("es") or cat.startswith("GL_OES")):
-                                               if not categories.has_key(cat):
-                                                       categories[cat] = []
-                                               proto = 'GLAPI %s GLAPIENTRY %s(%s);' \
-                                                               % (func.return_type, "gl" + n, func.get_parameter_string(n))
-                                               categories[cat].append(proto)
-                       if categories:
-                               print ''
-                               print '/* OpenGL ES specific prototypes */'
-                               print ''
-                               keys = categories.keys()
-                               keys.sort()
-                               for key in keys:
-                                       print '/* category %s */' % key
-                                       print "\n".join(categories[key])
-                               print ''
-
-               print '#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */'
-
-               print ''
-               print 'static const glprocs_table_t static_functions[] = {'
-
-               for info in table:
-                       print '    NAME_FUNC_OFFSET(%5u, %s, %s, %s, _gloffset_%s),' % info
-
-               print '    NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)'
-               print '};'
-               return
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-m mode] [-c]" % sys.argv[0]
-       print "-c          Enable compatibility with OpenGL ES."
-       print "-m mode     mode can be one of:"
-       print "    long  - Create code for compilers that can handle very"
-       print "            long string constants. (default)"
-       print "    short - Create code for compilers that can only handle"
-       print "            ANSI C89 string constants."
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c")
-       except Exception,e:
-               show_usage()
-
-       long_string = 1
-       es = False
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-m":
-                       if val == "short":
-                               long_string = 0
-                       elif val == "long":
-                               long_string = 1
-                       else:
-                               show_usage()
-               elif arg == "-c":
-                   es = True
-
-       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
-       printer = PrintGlProcs(long_string, es)
-       printer.Print(api)
diff --git a/src/mesa/glapi/gen/gl_table.py b/src/mesa/glapi/gen/gl_table.py
deleted file mode 100644 (file)
index 3bd7569..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-#!/usr/bin/python2
-
-# (C) Copyright IBM Corporation 2004
-# 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import gl_XML
-import license
-import sys, getopt
-
-class PrintGlTable(gl_XML.gl_print_base):
-       def __init__(self, es=False):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.es = es
-               self.header_tag = '_GLAPI_TABLE_H_'
-               self.name = "gl_table.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
-(C) Copyright IBM Corporation 2004""", "BRIAN PAUL, IBM")
-               return
-
-
-       def printBody(self, api):
-               for f in api.functionIterateByOffset():
-                       arg_string = f.get_parameter_string()
-                       print '   %s (GLAPIENTRYP %s)(%s); /* %d */' % (f.return_type, f.name, arg_string, f.offset)
-
-
-       def printRealHeader(self):
-               print '#ifndef GLAPIENTRYP'
-               print '# ifndef GLAPIENTRY'
-               print '#  define GLAPIENTRY'
-               print '# endif'
-               print ''
-               print '# define GLAPIENTRYP GLAPIENTRY *'
-               print '#endif'
-               print ''
-               print ''
-               print 'struct _glapi_table'
-               print '{'
-               return
-
-
-       def printRealFooter(self):
-               print '};'
-               return
-
-
-class PrintRemapTable(gl_XML.gl_print_base):
-       def __init__(self, es=False):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.es = es
-               self.header_tag = '_GLAPI_DISPATCH_H_'
-               self.name = "gl_table.py (from Mesa)"
-               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
-               return
-
-
-       def printRealHeader(self):
-               print """
-/* this file should not be included directly in mesa */
-
-/**
- * \\file glapidispatch.h
- * Macros for handling GL dispatch tables.
- *
- * For each known GL function, there are 3 macros in this file.  The first
- * macro is named CALL_FuncName and is used to call that GL function using
- * the specified dispatch table.  The other 2 macros, called GET_FuncName
- * can SET_FuncName, are used to get and set the dispatch pointer for the
- * named function in the specified dispatch table.
- */
-"""
-               
-               return
-
-       def printBody(self, api):
-               print '#define CALL_by_offset(disp, cast, offset, parameters) \\'
-               print '    (*(cast (GET_by_offset(disp, offset)))) parameters'
-               print '#define GET_by_offset(disp, offset) \\'
-               print '    (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL'
-               print '#define SET_by_offset(disp, offset, fn) \\'
-               print '    do { \\'
-               print '        if ( (offset) < 0 ) { \\'
-               print '            /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\\n", */ \\'
-               print '            /*         __func__, __LINE__, disp, offset, # fn); */ \\'
-               print '            /* abort(); */ \\'
-               print '        } \\'
-               print '        else { \\'
-               print '            ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \\'
-               print '        } \\'
-               print '    } while(0)'
-               print ''
-
-               functions = []
-               abi_functions = []
-               alias_functions = []
-               count = 0
-               for f in api.functionIterateByOffset():
-                       if not f.is_abi():
-                               functions.append( [f, count] )
-                               count += 1
-                       else:
-                               abi_functions.append( f )
-
-                       if self.es:
-                               # remember functions with aliases
-                               if len(f.entry_points) > 1:
-                                       alias_functions.append(f)
-
-
-               for f in abi_functions:
-                       print '#define CALL_%s(disp, parameters) (*((disp)->%s)) parameters' % (f.name, f.name)
-                       print '#define GET_%s(disp) ((disp)->%s)' % (f.name, f.name)
-                       print '#define SET_%s(disp, fn) ((disp)->%s = fn)' % (f.name, f.name)
-
-
-               print ''
-               print '#if !defined(_GLAPI_USE_REMAP_TABLE)'
-               print ''
-
-               for [f, index] in functions:
-                       print '#define CALL_%s(disp, parameters) (*((disp)->%s)) parameters' % (f.name, f.name)
-                       print '#define GET_%s(disp) ((disp)->%s)' % (f.name, f.name)
-                       print '#define SET_%s(disp, fn) ((disp)->%s = fn)' % (f.name, f.name)
-
-               print ''
-               print '#else'
-               print ''
-               print '#define driDispatchRemapTable_size %u' % (count)
-               print 'extern int driDispatchRemapTable[ driDispatchRemapTable_size ];'
-               print ''
-
-               for [f, index] in functions:
-                       print '#define %s_remap_index %u' % (f.name, index)
-
-               print ''
-
-               for [f, index] in functions:
-                       arg_string = gl_XML.create_parameter_string( f.parameters, 0 )
-                       cast = '%s (GLAPIENTRYP)(%s)' % (f.return_type, arg_string)
-
-                       print '#define CALL_%s(disp, parameters) CALL_by_offset(disp, (%s), driDispatchRemapTable[%s_remap_index], parameters)' % (f.name, cast, f.name)
-                       print '#define GET_%s(disp) GET_by_offset(disp, driDispatchRemapTable[%s_remap_index])' % (f.name, f.name)
-                       print '#define SET_%s(disp, fn) SET_by_offset(disp, driDispatchRemapTable[%s_remap_index], fn)' % (f.name, f.name)
-
-
-               print ''
-               print '#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */'
-
-               if alias_functions:
-                       print ''
-                       print '/* define aliases for compatibility */'
-                       for f in alias_functions:
-                               for name in f.entry_points:
-                                       if name != f.name:
-                                               print '#define CALL_%s(disp, parameters) CALL_%s(disp, parameters)' % (name, f.name)
-                                               print '#define GET_%s(disp) GET_%s(disp)' % (name, f.name)
-                                               print '#define SET_%s(disp, fn) SET_%s(disp, fn)' % (name, f.name)
-                       print ''
-
-                       print '#if defined(_GLAPI_USE_REMAP_TABLE)'
-                       for f in alias_functions:
-                               for name in f.entry_points:
-                                       if name != f.name:
-                                               print '#define %s_remap_index %s_remap_index' % (name, f.name)
-                       print '#endif /* defined(_GLAPI_USE_REMAP_TABLE) */'
-                       print ''
-
-               return
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-m mode] [-c]" % sys.argv[0]
-       print "    -m mode   Mode can be 'table' or 'remap_table'."
-       print "    -c        Enable compatibility with OpenGL ES."
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-    
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:m:c")
-       except Exception,e:
-               show_usage()
-
-       mode = "table"
-       es = False
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-               elif arg == "-m":
-                       mode = val
-               elif arg == "-c":
-                       es = True
-
-       if mode == "table":
-               printer = PrintGlTable(es)
-       elif mode == "remap_table":
-               printer = PrintRemapTable(es)
-       else:
-               show_usage()
-
-       api = gl_XML.parse_GL_API( file_name )
-
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/gl_x86-64_asm.py b/src/mesa/glapi/gen/gl_x86-64_asm.py
deleted file mode 100644 (file)
index e6e78c4..0000000
+++ /dev/null
@@ -1,334 +0,0 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import license
-import gl_XML, glX_XML
-import sys, getopt, copy
-
-def should_use_push(registers):
-       for [reg, offset] in registers:
-               if reg[1:4] == "xmm":
-                       return 0
-
-       N = len(registers)
-       return (N & 1) != 0
-
-
-def local_size(registers):
-       # The x86-64 ABI says "the value (%rsp - 8) is always a multiple of
-       # 16 when control is transfered to the function entry point."  This
-       # means that the local stack usage must be (16*N)+8 for some value
-       # of N.  (16*N)+8 = (8*(2N))+8 = 8*(2N+1).  As long as N is odd, we
-       # meet this requirement.
-
-       N = (len(registers) | 1)
-       return 8*N
-
-
-def save_all_regs(registers):
-       adjust_stack = 0
-       if not should_use_push(registers):
-               adjust_stack = local_size(registers)
-               print '\tsubq\t$%u, %%rsp' % (adjust_stack)
-
-       for [reg, stack_offset] in registers:
-               save_reg( reg, stack_offset, adjust_stack )
-       return
-
-
-def restore_all_regs(registers):
-       adjust_stack = 0
-       if not should_use_push(registers):
-               adjust_stack = local_size(registers)
-
-       temp = copy.deepcopy(registers)
-       while len(temp):
-               [reg, stack_offset] = temp.pop()
-               restore_reg(reg, stack_offset, adjust_stack)
-
-       if adjust_stack:
-               print '\taddq\t$%u, %%rsp' % (adjust_stack)
-       return
-
-
-def save_reg(reg, offset, use_move):
-       if use_move:
-               if offset == 0:
-                       print '\tmovq\t%s, (%%rsp)' % (reg)
-               else:
-                       print '\tmovq\t%s, %u(%%rsp)' % (reg, offset)
-       else:
-               print '\tpushq\t%s' % (reg)
-
-       return
-
-
-def restore_reg(reg, offset, use_move):
-       if use_move:
-               if offset == 0:
-                       print '\tmovq\t(%%rsp), %s' % (reg)
-               else:
-                       print '\tmovq\t%u(%%rsp), %s' % (offset, reg)
-       else:
-               print '\tpopq\t%s' % (reg)
-
-       return
-
-
-class PrintGenericStubs(gl_XML.gl_print_base):
-
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "gl_x86-64_asm.py (from Mesa)"
-               self.license = license.bsd_license_template % ("(C) Copyright IBM Corporation 2005", "IBM")
-               return
-
-
-       def get_stack_size(self, f):
-               size = 0
-               for p in f.parameterIterator():
-                       size += p.get_stack_size()
-
-               return size
-
-
-       def printRealHeader(self):
-               print "/* If we build with gcc's -fvisibility=hidden flag, we'll need to change"
-               print " * the symbol visibility mode to 'default'."
-               print ' */'
-               print ''
-               print '#include "x86/assyntax.h"'
-               print ''
-               print '#ifdef __GNUC__'
-               print '#  pragma GCC visibility push(default)'
-               print '#  define HIDDEN(x) .hidden x'
-               print '#else'
-               print '#  define HIDDEN(x)'
-               print '#endif'
-               print ''
-               print '# if defined(USE_MGL_NAMESPACE)'
-               print '#  define GL_PREFIX(n) GLNAME(CONCAT(mgl,n))'
-               print '#  define _glapi_Dispatch _mglapi_Dispatch'
-               print '# else'
-               print '#  define GL_PREFIX(n) GLNAME(CONCAT(gl,n))'
-               print '# endif'
-               print ''
-               print '#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)'
-               print '#  define THREADS'
-               print '#endif'
-               print ''
-               print '\t.text'
-               print ''
-               print '#ifdef GLX_USE_TLS'
-               print ''
-               print '\t.globl _x86_64_get_get_dispatch; HIDDEN(_x86_64_get_get_dispatch)'
-               print '_x86_64_get_get_dispatch:'
-               print '\tlea\t_x86_64_get_dispatch(%rip), %rax'
-               print '\tret'
-               print ''
-               print '\t.p2align\t4,,15'
-               print '_x86_64_get_dispatch:'
-               print '\tmovq\t_glapi_tls_Dispatch@GOTTPOFF(%rip), %rax'
-               print '\tmovq\t%fs:(%rax), %rax'
-               print '\tret'
-               print '\t.size\t_x86_64_get_dispatch, .-_x86_64_get_dispatch'
-               print ''
-               print '#elif defined(PTHREADS)'
-               print ''
-               print '\t.extern\t_glapi_Dispatch'
-               print '\t.extern\t_gl_DispatchTSD'
-               print '\t.extern\tpthread_getspecific'
-               print ''
-               print '\t.p2align\t4,,15'
-               print '_x86_64_get_dispatch:'
-               print '\tmovq\t_gl_DispatchTSD(%rip), %rdi'
-               print '\tjmp\tpthread_getspecific@PLT'
-               print ''
-               print '#elif defined(THREADS)'
-               print ''
-               print '\t.extern\t_glapi_get_dispatch'
-               print ''
-               print '#endif'
-               print ''
-               return
-
-
-       def printRealFooter(self):
-               print ''
-               print '#if defined(GLX_USE_TLS) && defined(__linux__)'
-               print ' .section ".note.ABI-tag", "a"'
-               print ' .p2align 2'
-               print ' .long   1f - 0f   /* name length */'
-               print ' .long   3f - 2f   /* data length */'
-               print ' .long   1         /* note length */'
-               print '0:       .asciz "GNU"      /* vendor name */'
-               print '1:       .p2align 2'
-               print '2:       .long   0         /* note data: the ABI tag */'
-               print ' .long   2,4,20    /* Minimum kernel version w/TLS */'
-               print '3:       .p2align 2        /* pad out section */'
-               print '#endif /* GLX_USE_TLS */'
-               print ''
-               print '#if defined (__ELF__) && defined (__linux__)'
-               print ' .section .note.GNU-stack,"",%progbits'
-               print '#endif'
-               return
-
-
-       def printFunction(self, f):
-               
-               # The x86-64 ABI divides function parameters into a couple
-               # classes.  For the OpenGL interface, the only ones that are
-               # relevent are INTEGER and SSE.  Basically, the first 8
-               # GLfloat or GLdouble parameters are placed in %xmm0 - %xmm7,
-               # the first 6 non-GLfloat / non-GLdouble parameters are placed
-               # in registers listed in int_parameters.
-               #
-               # If more parameters than that are required, they are passed
-               # on the stack.  Therefore, we just have to make sure that
-               # %esp hasn't changed when we jump to the actual function.
-               # Since we're jumping to the function (and not calling it), we
-               # have to make sure of that anyway!
-
-               int_parameters = ["%rdi", "%rsi", "%rdx", "%rcx", "%r8", "%r9"]
-
-               int_class = 0
-               sse_class = 0
-               stack_offset = 0
-               registers = []
-               for p in f.parameterIterator():
-                       type_name = p.get_base_type_string()
-
-                       if p.is_pointer() or (type_name != "GLfloat" and type_name != "GLdouble"):
-                               if int_class < 6:
-                                       registers.append( [int_parameters[int_class], stack_offset] )
-                                       int_class += 1
-                                       stack_offset += 8
-                       else:
-                               if sse_class < 8:
-                                       registers.append( ["%%xmm%u" % (sse_class), stack_offset] )
-                                       sse_class += 1
-                                       stack_offset += 8
-
-               if ((int_class & 1) == 0) and (sse_class == 0):
-                       registers.append( ["%rbp", 0] )
-
-
-               name = f.dispatch_name()
-
-               print '\t.p2align\t4,,15'
-               print '\t.globl\tGL_PREFIX(%s)' % (name)
-               print '\t.type\tGL_PREFIX(%s), @function' % (name)
-               if not f.is_static_entry_point(f.name):
-                       print '\tHIDDEN(GL_PREFIX(%s))' % (name)
-               print 'GL_PREFIX(%s):' % (name)
-               print '#if defined(GLX_USE_TLS)'
-               print '\tcall\t_x86_64_get_dispatch@PLT'
-               print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
-               print '\tjmp\t*%r11'
-               print '#elif defined(PTHREADS)'
-               
-               save_all_regs(registers)
-               print '\tcall\t_x86_64_get_dispatch@PLT'
-               restore_all_regs(registers)
-
-               if f.offset == 0:
-                       print '\tmovq\t(%rax), %r11'
-               else:
-                       print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
-
-               print '\tjmp\t*%r11'
-
-               print '#else'
-               print '\tmovq\t_glapi_Dispatch(%rip), %rax'
-               print '\ttestq\t%rax, %rax'
-               print '\tje\t1f'
-               print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
-               print '\tjmp\t*%r11'
-               print '1:'
-
-               save_all_regs(registers)
-               print '\tcall\t_glapi_get_dispatch'
-               restore_all_regs(registers)
-
-               print '\tmovq\t%u(%%rax), %%r11' % (f.offset * 8)
-               print '\tjmp\t*%r11'
-               print '#endif /* defined(GLX_USE_TLS) */'
-
-               print '\t.size\tGL_PREFIX(%s), .-GL_PREFIX(%s)' % (name, name)
-               print ''
-               return
-
-
-       def printBody(self, api):
-               for f in api.functionIterateByOffset():
-                       self.printFunction(f)
-
-
-               for f in api.functionIterateByOffset():
-                       dispatch = f.dispatch_name()
-                       for n in f.entry_points:
-                               if n != f.name:
-                                       if f.is_static_entry_point(n):
-                                               text = '\t.globl GL_PREFIX(%s) ; .set GL_PREFIX(%s), GL_PREFIX(%s)' % (n, n, dispatch)
-
-                                               if f.has_different_protocol(n):
-                                                       print '#ifndef GLX_INDIRECT_RENDERING'
-                                                       print text
-                                                       print '#endif'
-                                               else:
-                                                       print text
-
-               return
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-       mode = "generic"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
-       except Exception,e:
-               show_usage()
-
-       for (arg,val) in args:
-               if arg == '-m':
-                       mode = val
-               elif arg == "-f":
-                       file_name = val
-
-       if mode == "generic":
-               printer = PrintGenericStubs()
-       else:
-               print "ERROR: Invalid mode \"%s\" specified." % mode
-               show_usage()
-
-       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
-       printer.Print(api)
diff --git a/src/mesa/glapi/gen/gl_x86_asm.py b/src/mesa/glapi/gen/gl_x86_asm.py
deleted file mode 100644 (file)
index 10dfa1d..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-#!/usr/bin/env python
-
-# (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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import license
-import gl_XML, glX_XML
-import sys, getopt
-
-class PrintGenericStubs(gl_XML.gl_print_base):
-
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "gl_x86_asm.py (from Mesa)"
-               self.license = license.bsd_license_template % ( \
-"""Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
-(C) Copyright IBM Corporation 2004, 2005""", "BRIAN PAUL, IBM")
-               return
-
-
-       def get_stack_size(self, f):
-               size = 0
-               for p in f.parameterIterator():
-                       if p.is_padding:
-                               continue
-
-                       size += p.get_stack_size()
-
-               return size
-
-
-       def printRealHeader(self):
-               print '#include "x86/assyntax.h"'
-               print '#include "glapi/glapioffsets.h"'
-               print ''
-               print '#if defined(STDCALL_API)'
-               print '# if defined(USE_MGL_NAMESPACE)'
-               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))'
-               print '# else'
-               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))'
-               print '# endif'
-               print '#else'
-               print '# if defined(USE_MGL_NAMESPACE)'
-               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))'
-               print '#  define _glapi_Dispatch _mglapi_Dispatch'
-               print '# else'
-               print '#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))'
-               print '# endif'
-               print '#endif'
-               print ''
-               print '#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))'
-               print ''
-               print '#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)'
-               print '#define GLOBL_FN(x) GLOBL x ; .type x, function'
-               print '#else'
-               print '#define GLOBL_FN(x) GLOBL x'
-               print '#endif'
-               print ''
-               print '#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)'
-               print '#  define THREADS'
-               print '#endif'
-               print ''
-               print '#ifdef GLX_USE_TLS'
-               print ''
-               print '#ifdef GLX_X86_READONLY_TEXT'
-               print '# define CTX_INSNS MOV_L(GS:(EAX), EAX)'
-               print '#else'
-               print '# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */'
-               print '#endif'
-               print ''
-               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
-               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
-               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
-               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
-               print '\tCALL(_x86_get_dispatch) ;\t\t\t\\'
-               print '\tCTX_INSNS ;                                    \\'
-               print '\tJMP(GL_OFFSET(off))'
-               print ''
-               print '#elif defined(PTHREADS)'
-               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
-               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
-               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
-               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
-               print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
-               print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
-               print '\tJE(1f) ;\t\t\t\t\t\\'
-               print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
-               print '1:\tCALL(_x86_get_dispatch) ;\t\t\t\\'
-               print '\tJMP(GL_OFFSET(off))'
-               print '#elif defined(THREADS)'
-               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
-               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
-               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
-               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
-               print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
-               print '\tTEST_L(EAX, EAX) ;\t\t\t\t\\'
-               print '\tJE(1f) ;\t\t\t\t\t\\'
-               print '\tJMP(GL_OFFSET(off)) ;\t\t\t\t\\'
-               print '1:\tCALL(_glapi_get_dispatch) ;\t\t\t\\'
-               print '\tJMP(GL_OFFSET(off))'
-               print '#else /* Non-threaded version. */'
-               print '#  define GL_STUB(fn,off,fn_alt)\t\t\t\\'
-               print 'ALIGNTEXT16;\t\t\t\t\t\t\\'
-               print 'GLOBL_FN(GL_PREFIX(fn, fn_alt));\t\t\t\\'
-               print 'GL_PREFIX(fn, fn_alt):\t\t\t\t\t\\'
-               print '\tMOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;\t\\'
-               print '\tJMP(GL_OFFSET(off))'
-               print '#endif'
-               print ''
-               print '#ifdef HAVE_ALIAS'
-               print '#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
-               print '\t.globl\tGL_PREFIX(fn, fn_alt) ;\t\t\t\\'
-               print '\t.set\tGL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)'
-               print '#else'
-               print '#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt)\t\\'
-               print '    GL_STUB(fn, off, fn_alt)'
-               print '#endif'
-               print ''
-               print 'SEG_TEXT'
-               print ''
-               print '#ifdef GLX_USE_TLS'
-               print ''
-               print '\tGLOBL\tGLNAME(_x86_get_dispatch)'
-               print '\tHIDDEN(GLNAME(_x86_get_dispatch))'
-               print 'ALIGNTEXT16'
-               print 'GLNAME(_x86_get_dispatch):'
-               print '\tcall   1f'
-               print '1:\tpopl %eax'
-               print '\taddl   $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax'
-               print '\tmovl   _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax'
-               print '\tret'
-               print ''
-               print '#elif defined(PTHREADS)'
-               print 'EXTERN GLNAME(_glapi_Dispatch)'
-               print 'EXTERN GLNAME(_gl_DispatchTSD)'
-               print 'EXTERN GLNAME(pthread_getspecific)'
-               print ''
-               print 'ALIGNTEXT16'
-               print 'GLNAME(_x86_get_dispatch):'
-               print '\tSUB_L(CONST(24), ESP)'
-               print '\tPUSH_L(GLNAME(_gl_DispatchTSD))'
-               print '\tCALL(GLNAME(pthread_getspecific))'
-               print '\tADD_L(CONST(28), ESP)'
-               print '\tRET'
-               print '#elif defined(THREADS)'
-               print 'EXTERN GLNAME(_glapi_get_dispatch)'
-               print '#endif'
-               print ''
-
-               print '#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )'
-               print '\t\t.section\twtext, "awx", @progbits'
-               print '#endif /* defined( GLX_USE_TLS ) */'
-
-               print ''
-               print '\t\tALIGNTEXT16'
-               print '\t\tGLOBL GLNAME(gl_dispatch_functions_start)'
-               print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_start))'
-               print 'GLNAME(gl_dispatch_functions_start):'
-               print ''
-               return
-
-
-       def printRealFooter(self):
-               print ''
-               print '\t\tGLOBL\tGLNAME(gl_dispatch_functions_end)'
-               print '\t\tHIDDEN(GLNAME(gl_dispatch_functions_end))'
-               print '\t\tALIGNTEXT16'
-               print 'GLNAME(gl_dispatch_functions_end):'
-               print ''
-               print '#if defined(GLX_USE_TLS) && defined(__linux__)'
-               print ' .section ".note.ABI-tag", "a"'
-               print ' .p2align 2'
-               print ' .long   1f - 0f   /* name length */'
-               print ' .long   3f - 2f   /* data length */'
-               print ' .long   1         /* note length */'
-               print '0:       .asciz "GNU"      /* vendor name */'
-               print '1:       .p2align 2'
-               print '2:       .long   0         /* note data: the ABI tag */'
-               print ' .long   2,4,20    /* Minimum kernel version w/TLS */'
-               print '3:       .p2align 2        /* pad out section */'
-               print '#endif /* GLX_USE_TLS */'
-               print ''
-               print '#if defined (__ELF__) && defined (__linux__)'
-               print ' .section .note.GNU-stack,"",%progbits'
-               print '#endif'
-               return
-
-
-       def printBody(self, api):
-               for f in api.functionIterateByOffset():
-                       name = f.dispatch_name()
-                       stack = self.get_stack_size(f)
-                       alt = "%s@%u" % (name, stack)
-
-                       print '\tGL_STUB(%s, _gloffset_%s, %s)' % (name, f.name, alt)
-
-                       if not f.is_static_entry_point(f.name):
-                               print '\tHIDDEN(GL_PREFIX(%s, %s))' % (name, alt)
-
-
-               for f in api.functionIterateByOffset():
-                       name = f.dispatch_name()
-                       stack = self.get_stack_size(f)
-                       alt = "%s@%u" % (name, stack)
-
-                       for n in f.entry_points:
-                               if f.is_static_entry_point(n):
-                                       if n != f.name:
-                                               alt2 = "%s@%u" % (n, stack)
-                                               text = '\tGL_STUB_ALIAS(%s, _gloffset_%s, %s, %s, %s)' % (n, f.name, alt2, name, alt)
-
-                                               if f.has_different_protocol(n):
-                                                       print '#ifndef GLX_INDIRECT_RENDERING'
-                                                       print text
-                                                       print '#endif'
-                                               else:
-                                                       print text
-
-               return
-
-def show_usage():
-       print "Usage: %s [-f input_file_name] [-m output_mode]" % sys.argv[0]
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-       mode = "generic"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "m:f:")
-       except Exception,e:
-               show_usage()
-
-       for (arg,val) in args:
-               if arg == '-m':
-                       mode = val
-               elif arg == "-f":
-                       file_name = val
-
-       if mode == "generic":
-               printer = PrintGenericStubs()
-       else:
-               print "ERROR: Invalid mode \"%s\" specified." % mode
-               show_usage()
-
-       api = gl_XML.parse_GL_API(file_name, glX_XML.glx_item_factory())
-       printer.Print(api)
diff --git a/src/mesa/glapi/gen/license.py b/src/mesa/glapi/gen/license.py
deleted file mode 100644 (file)
index 0218164..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# (C) Copyright IBM Corporation 2004
-# 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-bsd_license_template = """%s
-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
-%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.""" 
diff --git a/src/mesa/glapi/gen/mesadef.py b/src/mesa/glapi/gen/mesadef.py
deleted file mode 100644 (file)
index 38b0246..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-#!/usr/bin/env python
-
-
-# Mesa 3-D graphics library
-# Version:  4.1
-# 
-# Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
-# 
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-# 
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-# 
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-# Generate the mesa.def file for Windows.
-#
-# Usage:
-#    mesadef.py >mesa.def
-#    Then copy to src/mesa/drivers/windows/gdi
-#
-# Dependencies:
-#    The apispec file must be in the current directory.
-
-
-
-import apiparser
-import string
-
-
-def PrintHead():
-       print '; DO NOT EDIT - This file generated automatically by mesadef.py script'
-       print 'DESCRIPTION \'Mesa (OpenGL work-alike) for Win32\''
-       print 'VERSION 6.0'
-       print ';'
-       print '; Module definition file for Mesa (OPENGL32.DLL)'
-       print ';'
-       print '; Note: The OpenGL functions use the STDCALL'
-       print '; function calling convention.  Microsoft\'s'
-       print '; OPENGL32 uses this convention and so must the'
-       print '; Mesa OPENGL32 so that the Mesa DLL can be used'
-       print '; as a drop-in replacement.'
-       print ';'
-       print '; The linker exports STDCALL entry points with'
-       print '; \'decorated\' names; e.g., _glBegin@0, where the'
-       print '; trailing number is the number of bytes of '
-       print '; parameter data pushed onto the stack.  The'
-       print '; callee is responsible for popping this data'
-       print '; off the stack, usually via a RETF n instruction.'
-       print ';'
-       print '; However, the Microsoft OPENGL32.DLL does not export'
-       print '; the decorated names, even though the calling convention'
-       print '; is STDCALL.  So, this module definition file is'
-       print '; needed to force the Mesa OPENGL32.DLL to export the'
-       print '; symbols in the same manner as the Microsoft DLL.'
-       print '; Were it not for this problem, this file would not'
-       print '; be needed (for the gl* functions) since the entry'
-       print '; points are compiled with dllexport declspec.'
-       print ';'
-       print '; However, this file is still needed to export "internal"'
-       print '; Mesa symbols for the benefit of the OSMESA32.DLL.'
-       print ';'
-       print 'EXPORTS'
-       return
-#enddef
-
-
-def PrintTail():
-       print ';'
-       print '; WGL API'
-       print '\twglChoosePixelFormat'
-       print '\twglCopyContext'
-       print '\twglCreateContext'
-       print '\twglCreateLayerContext'
-       print '\twglDeleteContext'
-       print '\twglDescribeLayerPlane'
-       print '\twglDescribePixelFormat'
-       print '\twglGetCurrentContext'
-       print '\twglGetCurrentDC'
-       print '\twglGetExtensionsStringARB'
-       print '\twglGetLayerPaletteEntries'
-       print '\twglGetPixelFormat'
-       print '\twglGetProcAddress'
-       print '\twglMakeCurrent'
-       print '\twglRealizeLayerPalette'
-       print '\twglSetLayerPaletteEntries'
-       print '\twglSetPixelFormat'
-       print '\twglShareLists'
-       print '\twglSwapBuffers'
-       print '\twglSwapLayerBuffers'
-       print '\twglUseFontBitmapsA'
-       print '\twglUseFontBitmapsW'
-       print '\twglUseFontOutlinesA'
-       print '\twglUseFontOutlinesW'
-       print ';'
-       print '; Mesa internals - mostly for OSMESA'
-       print '\t_ac_CreateContext'
-       print '\t_ac_DestroyContext'
-       print '\t_ac_InvalidateState'
-       print '\t_glapi_get_context'
-       print '\t_glapi_get_proc_address'
-       print '\t_mesa_buffer_data'
-       print '\t_mesa_buffer_map'
-       print '\t_mesa_buffer_subdata'
-       print '\t_mesa_choose_tex_format'
-       print '\t_mesa_compressed_texture_size'
-       print '\t_mesa_create_framebuffer'
-       print '\t_mesa_create_visual'
-       print '\t_mesa_delete_buffer_object'
-       print '\t_mesa_delete_texture_object'
-       print '\t_mesa_destroy_framebuffer'
-       print '\t_mesa_destroy_visual'
-       print '\t_mesa_enable_1_3_extensions'
-       print '\t_mesa_enable_1_4_extensions'
-       print '\t_mesa_enable_1_5_extensions'
-       print '\t_mesa_enable_sw_extensions'
-       print '\t_mesa_error'
-       print '\t_mesa_free_context_data'
-       print '\t_mesa_get_current_context'
-       print '\t_mesa_init_default_imports'
-       print '\t_mesa_initialize_context'
-       print '\t_mesa_make_current'
-       print '\t_mesa_new_buffer_object'
-       print '\t_mesa_new_texture_object'
-       print '\t_mesa_problem'
-       print '\t_mesa_ResizeBuffersMESA'
-       print '\t_mesa_store_compressed_teximage1d'
-       print '\t_mesa_store_compressed_teximage2d'
-       print '\t_mesa_store_compressed_teximage3d'
-       print '\t_mesa_store_compressed_texsubimage1d'
-       print '\t_mesa_store_compressed_texsubimage2d'
-       print '\t_mesa_store_compressed_texsubimage3d'
-       print '\t_mesa_store_teximage1d'
-       print '\t_mesa_store_teximage2d'
-       print '\t_mesa_store_teximage3d'
-       print '\t_mesa_store_texsubimage1d'
-       print '\t_mesa_store_texsubimage2d'
-       print '\t_mesa_store_texsubimage3d'
-       print '\t_mesa_test_proxy_teximage'
-       print '\t_mesa_Viewport'
-       print '\t_mesa_meta_CopyColorSubTable'
-       print '\t_mesa_meta_CopyColorTable'
-       print '\t_mesa_meta_CopyConvolutionFilter1D'
-       print '\t_mesa_meta_CopyConvolutionFilter2D'
-       print '\t_mesa_meta_CopyTexImage1D'
-       print '\t_mesa_meta_CopyTexImage2D'
-       print '\t_mesa_meta_CopyTexSubImage1D'
-       print '\t_mesa_meta_CopyTexSubImage2D'
-       print '\t_mesa_meta_CopyTexSubImage3D'
-       print '\t_swrast_Accum'
-       print '\t_swrast_alloc_buffers'
-       print '\t_swrast_Bitmap'
-       print '\t_swrast_CopyPixels'
-       print '\t_swrast_DrawPixels'
-       print '\t_swrast_GetDeviceDriverReference'
-       print '\t_swrast_Clear'
-       print '\t_swrast_choose_line'
-       print '\t_swrast_choose_triangle'
-       print '\t_swrast_CreateContext'
-       print '\t_swrast_DestroyContext'
-       print '\t_swrast_InvalidateState'
-       print '\t_swrast_ReadPixels'
-       print '\t_swrast_zbuffer_address'
-       print '\t_swsetup_Wakeup'
-       print '\t_swsetup_CreateContext'
-       print '\t_swsetup_DestroyContext'
-       print '\t_swsetup_InvalidateState'
-       print '\t_tnl_CreateContext'
-       print '\t_tnl_DestroyContext'
-       print '\t_tnl_InvalidateState'
-       print '\t_tnl_MakeCurrent'
-       print '\t_tnl_run_pipeline'
-#enddef
-
-
-records = []
-
-def FindOffset(funcName):
-       for (name, alias, offset) in records:
-               if name == funcName:
-                       return offset
-               #endif
-       #endfor
-       return -1
-#enddef
-
-
-def EmitEntry(name, returnType, argTypeList, argNameList, alias, offset):
-       if alias == '':
-               dispatchName = name
-       else:
-               dispatchName = alias
-       if offset < 0:
-               offset = FindOffset(dispatchName)
-       if offset >= 0 and string.find(name, "unused") == -1:
-               print '\tgl%s' % (name)
-               # save this info in case we need to look up an alias later
-               records.append((name, dispatchName, offset))
-
-#enddef
-
-
-PrintHead()
-apiparser.ProcessSpecFile("APIspec", EmitEntry)
-PrintTail()
diff --git a/src/mesa/glapi/gen/next_available_offset.sh b/src/mesa/glapi/gen/next_available_offset.sh
deleted file mode 100755 (executable)
index e7d6c2f..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env bash
-#
-# (C) Copyright IBM Corporation 2004
-# 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-# Trivial shell script to search the API definition file and print out the
-# next numerically available API entry-point offset.  This could probably
-# be made smarter, but it would be better to use the existin Python
-# framework to do that.  This is just a quick-and-dirty hack.
-
-num=$(grep 'offset="' gl_API.xml |\
-    sed 's/.\+ offset="//g;s/".*$//g' |\
-    grep -v '?' |\
-    sort -rn |\
-    head -1)
-    
-echo $((num + 1))
diff --git a/src/mesa/glapi/gen/remap_helper.py b/src/mesa/glapi/gen/remap_helper.py
deleted file mode 100644 (file)
index 69b8e5e..0000000
+++ /dev/null
@@ -1,218 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>
-# All Rights Reserved.
-#
-# This is based on extension_helper.py by Ian Romanick.
-#
-# 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
-# IBM 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.
-
-import gl_XML
-import license
-import sys, getopt, string
-
-def get_function_spec(func):
-       sig = ""
-       # derive parameter signature
-       for p in func.parameterIterator():
-               if p.is_padding:
-                       continue
-               # FIXME: This is a *really* ugly hack. :(
-               tn = p.type_expr.get_base_type_node()
-               if p.is_pointer():
-                       sig += 'p'
-               elif tn.integer:
-                       sig += 'i'
-               elif tn.size == 4:
-                       sig += 'f'
-               else:
-                       sig += 'd'
-
-       spec = [sig]
-       for ent in func.entry_points:
-               spec.append("gl" + ent)
-
-       # spec is terminated by an empty string
-       spec.append('')
-
-       return spec
-
-class PrintGlRemap(gl_XML.gl_print_base):
-       def __init__(self):
-               gl_XML.gl_print_base.__init__(self)
-
-               self.name = "remap_helper.py (from Mesa)"
-               self.license = license.bsd_license_template % ("Copyright (C) 2009 Chia-I Wu <olv@0xlab.org>", "Chia-I Wu")
-               return
-
-
-       def printRealHeader(self):
-               print '#include "main/dispatch.h"'
-               print '#include "main/remap.h"'
-               print ''
-               return
-
-
-       def printBody(self, api):
-               pool_indices = {}
-
-               print '/* this is internal to remap.c */'
-               print '#ifdef need_MESA_remap_table'
-               print ''
-               print 'static const char _mesa_function_pool[] ='
-
-               # output string pool
-               index = 0;
-               for f in api.functionIterateAll():
-                       pool_indices[f] = index
-
-                       spec = get_function_spec(f)
-
-                       # a function has either assigned offset, fixed offset,
-                       # or no offset
-                       if f.assign_offset:
-                               comments = "will be remapped"
-                       elif f.offset > 0:
-                               comments = "offset %d" % f.offset
-                       else:
-                               comments = "dynamic"
-
-                       print '   /* _mesa_function_pool[%d]: %s (%s) */' \
-                                       % (index, f.name, comments)
-                       for line in spec:
-                               print '   "%s\\0"' % line
-                               index += len(line) + 1
-               print '   ;'
-               print ''
-
-               print '/* these functions need to be remapped */'
-               print 'static const struct gl_function_pool_remap MESA_remap_table_functions[] = {'
-               # output all functions that need to be remapped
-               # iterate by offsets so that they are sorted by remap indices
-               for f in api.functionIterateByOffset():
-                       if not f.assign_offset:
-                               continue
-                       print '   { %5d, %s_remap_index },' \
-                                       % (pool_indices[f], f.name)
-               print '   {    -1, -1 }'
-               print '};'
-               print ''
-
-               # collect functions by versions/extensions
-               extension_functions = {}
-               abi_extensions = []
-               for f in api.functionIterateAll():
-                       for n in f.entry_points:
-                               category, num = api.get_category_for_name(n)
-                               # consider only GL_VERSION_X_Y or extensions
-                               c = gl_XML.real_category_name(category)
-                               if c.startswith("GL_"):
-                                       if not extension_functions.has_key(c):
-                                               extension_functions[c] = []
-                                       extension_functions[c].append(f)
-                                       # remember the ext names of the ABI
-                                       if (f.is_abi() and n == f.name and
-                                               c not in abi_extensions):
-                                               abi_extensions.append(c)
-               # ignore the ABI itself
-               for ext in abi_extensions:
-                       extension_functions.pop(ext)
-
-               extensions = extension_functions.keys()
-               extensions.sort()
-
-               # output ABI functions that have alternative names (with ext suffix)
-               print '/* these functions are in the ABI, but have alternative names */'
-               print 'static const struct gl_function_remap MESA_alt_functions[] = {'
-               for ext in extensions:
-                       funcs = []
-                       for f in extension_functions[ext]:
-                               # test if the function is in the ABI and has alt names
-                               if f.is_abi() and len(f.entry_points) > 1:
-                                       funcs.append(f)
-                       if not funcs:
-                               continue
-                       print '   /* from %s */' % ext
-                       for f in funcs:
-                               print '   { %5d, _gloffset_%s },' \
-                                               % (pool_indices[f], f.name)
-               print '   {    -1, -1 }'
-               print '};'
-               print ''
-
-               print '#endif /* need_MESA_remap_table */'
-               print ''
-
-               # output remap helpers for DRI drivers
-
-               for ext in extensions:
-                       funcs = []
-                       remapped = []
-                       for f in extension_functions[ext]:
-                               if f.assign_offset:
-                                       # these are handled above
-                                       remapped.append(f)
-                               else:
-                                       # these functions are either in the
-                                       # abi, or have offset -1
-                                       funcs.append(f)
-
-                       print '#if defined(need_%s)' % (ext)
-                       if remapped:
-                               print '/* functions defined in MESA_remap_table_functions are excluded */'
-
-                       # output extension functions that need to be mapped
-                       print 'static const struct gl_function_remap %s_functions[] = {' % (ext)
-                       for f in funcs:
-                               if f.offset >= 0:
-                                       print '   { %5d, _gloffset_%s },' \
-                                                       % (pool_indices[f], f.name)
-                               else:
-                                       print '   { %5d, -1 }, /* %s */' % \
-                                                       (pool_indices[f], f.name)
-                       print '   {    -1, -1 }'
-                       print '};'
-
-                       print '#endif'
-                       print ''
-
-               return
-
-
-def show_usage():
-       print "Usage: %s [-f input_file_name]" % sys.argv[0]
-       sys.exit(1)
-
-if __name__ == '__main__':
-       file_name = "gl_API.xml"
-
-       try:
-               (args, trail) = getopt.getopt(sys.argv[1:], "f:")
-       except Exception,e:
-               show_usage()
-
-       for (arg,val) in args:
-               if arg == "-f":
-                       file_name = val
-
-       api = gl_XML.parse_GL_API( file_name )
-
-       printer = PrintGlRemap()
-       printer.Print( api )
diff --git a/src/mesa/glapi/gen/typeexpr.py b/src/mesa/glapi/gen/typeexpr.py
deleted file mode 100644 (file)
index 8ba7de4..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-#!/usr/bin/env python
-
-# (C) Copyright IBM Corporation 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
-# 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
-# IBM 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:
-#    Ian Romanick <idr@us.ibm.com>
-
-import string, copy
-
-class type_node:
-       def __init__(self):
-               self.pointer = 0  # bool
-               self.const = 0    # bool
-               self.signed = 1   # bool
-               self.integer = 1  # bool
-
-               # If elements is set to non-zero, then field is an array.
-               self.elements = 0
-
-               self.name = None
-               self.size = 0     # type's size in bytes
-               return
-
-
-       def string(self):
-               """Return string representation of this type_node."""
-               s = ""
-               
-               if self.pointer:
-                       s = "* "
-
-               if self.const:
-                       s += "const "
-
-               if not self.pointer:
-                       if self.integer:
-                               if self.signed:
-                                       s += "signed "
-                               else:
-                                       s += "unsigned "
-
-                       if self.name:
-                               s += "%s " % (self.name)
-
-               return s
-
-
-class type_table:
-       def __init__(self):
-               self.types_by_name = {}
-               return
-
-
-       def add_type(self, type_expr):
-               self.types_by_name[ type_expr.get_base_name() ] = type_expr
-               return
-
-
-       def find_type(self, name):
-               if name in self.types_by_name:
-                       return self.types_by_name[ name ]
-               else:
-                       return None
-
-
-def create_initial_types():
-       tt = type_table()
-
-       basic_types = [
-               ("char",   1, 1),
-               ("short",  2, 1),
-               ("int",    4, 1),
-               ("long",   4, 1),
-               ("float",  4, 0),
-               ("double", 8, 0),
-               ("enum",   4, 1)
-       ]
-
-       for (type_name, type_size, integer) in basic_types:
-               te = type_expression(None)
-               tn = type_node()
-               tn.name = type_name
-               tn.size = type_size
-               tn.integer = integer
-               te.expr.append(tn)
-               tt.add_type( te )
-
-       type_expression.built_in_types = tt
-       return
-
-
-class type_expression:
-       built_in_types = None
-
-       def __init__(self, type_string, extra_types = None):
-               self.expr = []
-
-               if not type_string:
-                       return
-
-               self.original_string = type_string
-
-               if not type_expression.built_in_types:
-                       raise RuntimeError("create_initial_types must be called before creating type_expression objects.")
-
-               # Replace '*' with ' * ' in type_string.  Then, split the string
-               # into tokens, separated by spaces.
-               tokens = string.split( string.replace( type_string, "*", " * " ) )
-
-               const = 0
-               t = None
-               signed = 0
-               unsigned = 0
-
-               for i in tokens:
-                       if i == "const":
-                               if t and t.pointer:
-                                       t.const = 1
-                               else:
-                                       const = 1
-                       elif i == "signed":
-                               signed = 1
-                       elif i == "unsigned":
-                               unsigned = 1
-                       elif i == "*":
-                               # This is a quirky special-case because of the
-                               # way the C works for types.  If 'unsigned' is
-                               # specified all by itself, it is treated the
-                               # same as "unsigned int".
-
-                               if unsigned:
-                                       self.set_base_type( "int", signed, unsigned, const, extra_types )
-                                       const = 0
-                                       signed = 0
-                                       unsigned = 0
-
-                               if not self.expr:
-                                       raise RuntimeError("Invalid type expression (dangling pointer)")
-
-                               if signed:
-                                       raise RuntimeError("Invalid type expression (signed / unsigned applied to pointer)")
-
-                               t = type_node()
-                               t.pointer = 1
-                               self.expr.append( t )
-                       else:
-                               if self.expr:
-                                       raise RuntimeError('Invalid type expression (garbage after pointer qualifier -> "%s")' % (self.original_string))
-
-                               self.set_base_type( i, signed, unsigned, const, extra_types )
-                               const = 0
-                               signed = 0
-                               unsigned = 0
-
-                       if signed and unsigned:
-                               raise RuntimeError("Invalid type expression (both signed and unsigned specified)")
-                               
-
-               if const:
-                       raise RuntimeError("Invalid type expression (dangling const)")
-
-               if unsigned:
-                       raise RuntimeError("Invalid type expression (dangling signed)")
-
-               if signed:
-                       raise RuntimeError("Invalid type expression (dangling unsigned)")
-
-               return
-
-
-       def set_base_type(self, type_name, signed, unsigned, const, extra_types):
-               te = type_expression.built_in_types.find_type( type_name )
-               if not te:
-                       te = extra_types.find_type( type_name )
-
-               if not te:
-                       raise RuntimeError('Unknown base type "%s".' % (type_name))
-
-               self.expr = copy.deepcopy(te.expr)
-
-               t = self.expr[ len(self.expr) - 1 ]
-               t.const = const
-               if signed:
-                       t.signed = 1
-               elif unsigned:
-                       t.signed = 0
-
-
-       def set_base_type_node(self, tn):
-               self.expr = [tn]
-               return
-
-
-       def set_elements(self, count):
-               tn = self.expr[0]
-
-               tn.elements = count
-               return
-
-
-       def string(self):
-               s = ""
-               for t in self.expr:
-                       s += t.string()
-
-               return s
-
-
-       def get_base_type_node(self):
-               return self.expr[0]
-
-
-       def get_base_name(self):
-               if len(self.expr):
-                       return self.expr[0].name
-               else:
-                       return None
-
-
-       def get_element_size(self):
-               tn = self.expr[0]
-
-               if tn.elements:
-                       return tn.elements * tn.size
-               else:
-                       return tn.size
-
-
-       def get_element_count(self):
-               tn = self.expr[0]
-               return tn.elements
-
-
-       def get_stack_size(self):
-               tn = self.expr[ len(self.expr) - 1 ]
-
-               if tn.elements or tn.pointer:
-                       return 4
-               elif not tn.integer:
-                       return tn.size
-               else:
-                       return 4
-
-
-       def is_pointer(self):
-               tn = self.expr[ len(self.expr) - 1 ]
-               return tn.pointer
-
-
-       def format_string(self):
-               tn = self.expr[ len(self.expr) - 1 ]
-               if tn.pointer:
-                       return "%p"
-               elif not tn.integer:
-                       return "%f"
-               else:
-                       return "%d"
-
-
-
-if __name__ == '__main__':
-       
-       types_to_try = [ "int", "int *", "const int *", "int * const", "const int * const", \
-                        "unsigned * const *", \
-                        "float", "const double", "double * const"]
-
-       create_initial_types()
-
-       for t in types_to_try:
-               print 'Trying "%s"...' % (t)
-               te = type_expression( t )
-               print 'Got "%s" (%u, %u).' % (te.string(), te.get_stack_size(), te.get_element_size())
diff --git a/src/mesa/glapi/glapi.c b/src/mesa/glapi/glapi.c
deleted file mode 100644 (file)
index ce85cf6..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.1
- *
- * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/*
- * This file manages the OpenGL API dispatch layer.
- * The dispatch table (struct _glapi_table) is basically just a list
- * of function pointers.
- * There are functions to set/get the current dispatch table for the
- * current thread and to manage registration/dispatch of dynamically
- * added extension functions.
- *
- * It's intended that this file and the other glapi*.[ch] files are
- * flexible enough to be reused in several places:  XFree86, DRI-
- * based libGL.so, and perhaps the SGI SI.
- *
- * NOTE: There are no dependencies on Mesa in this code.
- *
- * Versions (API changes):
- *   2000/02/23  - original version for Mesa 3.3 and XFree86 4.0
- *   2001/01/16  - added dispatch override feature for Mesa 3.5
- *   2002/06/28  - added _glapi_set_warning_func(), Mesa 4.1.
- *   2002/10/01  - _glapi_get_proc_address() will now generate new entrypoints
- *                 itself (using offset ~0).  _glapi_add_entrypoint() can be
- *                 called afterward and it'll fill in the correct dispatch
- *                 offset.  This allows DRI libGL to avoid probing for DRI
- *                 drivers!  No changes to the public glapi interface.
- */
-
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include "glapi/mesa.h"
-#else
-#include "main/glheader.h"
-#include "main/compiler.h"
-#endif
-
-#include "glapi/glapi.h"
-#include "glapi/glapi_priv.h"
-
-extern _glapi_proc __glapi_noop_table[];
-
-
-/**
- * \name Current dispatch and current context control variables
- *
- * Depending on whether or not multithreading is support, and the type of
- * support available, several variables are used to store the current context
- * pointer and the current dispatch table pointer.  In the non-threaded case,
- * the variables \c _glapi_Dispatch and \c _glapi_Context are used for this
- * purpose.
- *
- * In the "normal" threaded case, the variables \c _glapi_Dispatch and
- * \c _glapi_Context will be \c NULL if an application is detected as being
- * multithreaded.  Single-threaded applications will use \c _glapi_Dispatch
- * and \c _glapi_Context just like the case without any threading support.
- * When \c _glapi_Dispatch and \c _glapi_Context are \c NULL, the thread state
- * data \c _gl_DispatchTSD and \c ContextTSD are used.  Drivers and the
- * static dispatch functions access these variables via \c _glapi_get_dispatch
- * and \c _glapi_get_context.
- *
- * There is a race condition in setting \c _glapi_Dispatch to \c NULL.  It is
- * possible for the original thread to be setting it at the same instant a new
- * thread, perhaps running on a different processor, is clearing it.  Because
- * of that, \c ThreadSafe, which can only ever be changed to \c GL_TRUE, is
- * used to determine whether or not the application is multithreaded.
- * 
- * In the TLS case, the variables \c _glapi_Dispatch and \c _glapi_Context are
- * hardcoded to \c NULL.  Instead the TLS variables \c _glapi_tls_Dispatch and
- * \c _glapi_tls_Context are used.  Having \c _glapi_Dispatch and
- * \c _glapi_Context be hardcoded to \c NULL maintains binary compatability
- * between TLS enabled loaders and non-TLS DRI drivers.
- */
-/*@{*/
-#if defined(GLX_USE_TLS)
-
-PUBLIC __thread struct _glapi_table * _glapi_tls_Dispatch
-    __attribute__((tls_model("initial-exec")))
-    = (struct _glapi_table *) __glapi_noop_table;
-
-PUBLIC __thread void * _glapi_tls_Context
-    __attribute__((tls_model("initial-exec")));
-
-PUBLIC const struct _glapi_table *_glapi_Dispatch = NULL;
-
-PUBLIC const void *_glapi_Context = NULL;
-
-#else
-
-#if defined(THREADS)
-
-static GLboolean ThreadSafe = GL_FALSE;  /**< In thread-safe mode? */
-
-_glthread_TSD _gl_DispatchTSD;           /**< Per-thread dispatch pointer */
-
-static _glthread_TSD ContextTSD;         /**< Per-thread context pointer */
-
-#endif /* defined(THREADS) */
-
-PUBLIC struct _glapi_table *_glapi_Dispatch = (struct _glapi_table *) __glapi_noop_table;
-
-PUBLIC void *_glapi_Context = NULL;
-
-#endif /* defined(GLX_USE_TLS) */
-/*@}*/
-
-
-
-#if defined(THREADS) && !defined(GLX_USE_TLS)
-
-void
-_glapi_init_multithread(void)
-{
-   _glthread_InitTSD(&_gl_DispatchTSD);
-   _glthread_InitTSD(&ContextTSD);
-}
-
-void
-_glapi_destroy_multithread(void)
-{
-#ifdef WIN32_THREADS
-   _glthread_DestroyTSD(&_gl_DispatchTSD);
-   _glthread_DestroyTSD(&ContextTSD);
-#endif
-}
-
-/**
- * Mutex for multithread check.
- */
-#ifdef WIN32_THREADS
-/* _glthread_DECLARE_STATIC_MUTEX is broken on windows.  There will be race! */
-#define CHECK_MULTITHREAD_LOCK()
-#define CHECK_MULTITHREAD_UNLOCK()
-#else
-_glthread_DECLARE_STATIC_MUTEX(ThreadCheckMutex);
-#define CHECK_MULTITHREAD_LOCK() _glthread_LOCK_MUTEX(ThreadCheckMutex)
-#define CHECK_MULTITHREAD_UNLOCK() _glthread_UNLOCK_MUTEX(ThreadCheckMutex)
-#endif
-
-/**
- * We should call this periodically from a function such as glXMakeCurrent
- * in order to test if multiple threads are being used.
- */
-PUBLIC void
-_glapi_check_multithread(void)
-{
-   static unsigned long knownID;
-   static GLboolean firstCall = GL_TRUE;
-
-   if (ThreadSafe)
-      return;
-
-   CHECK_MULTITHREAD_LOCK();
-   if (firstCall) {
-      _glapi_init_multithread();
-
-      knownID = _glthread_GetID();
-      firstCall = GL_FALSE;
-   }
-   else if (knownID != _glthread_GetID()) {
-      ThreadSafe = GL_TRUE;
-      _glapi_set_dispatch(NULL);
-      _glapi_set_context(NULL);
-   }
-   CHECK_MULTITHREAD_UNLOCK();
-}
-
-#else
-
-void
-_glapi_init_multithread(void) { }
-
-void
-_glapi_destroy_multithread(void) { }
-
-PUBLIC void
-_glapi_check_multithread(void) { }
-
-#endif
-
-
-
-/**
- * Set the current context pointer for this thread.
- * The context pointer is an opaque type which should be cast to
- * void from the real context pointer type.
- */
-PUBLIC void
-_glapi_set_context(void *context)
-{
-#if defined(GLX_USE_TLS)
-   _glapi_tls_Context = context;
-#elif defined(THREADS)
-   _glthread_SetTSD(&ContextTSD, context);
-   _glapi_Context = (ThreadSafe) ? NULL : context;
-#else
-   _glapi_Context = context;
-#endif
-}
-
-
-
-/**
- * Get the current context pointer for this thread.
- * The context pointer is an opaque type which should be cast from
- * void to the real context pointer type.
- */
-PUBLIC void *
-_glapi_get_context(void)
-{
-#if defined(GLX_USE_TLS)
-   return _glapi_tls_Context;
-#elif defined(THREADS)
-   return (ThreadSafe) ? _glthread_GetTSD(&ContextTSD) : _glapi_Context;
-#else
-   return _glapi_Context;
-#endif
-}
-
-
-
-/**
- * Set the global or per-thread dispatch table pointer.
- * If the dispatch parameter is NULL we'll plug in the no-op dispatch
- * table (__glapi_noop_table).
- */
-PUBLIC void
-_glapi_set_dispatch(struct _glapi_table *dispatch)
-{
-   init_glapi_relocs_once();
-
-   if (dispatch == NULL) {
-      /* use the no-op functions */
-      dispatch = (struct _glapi_table *) __glapi_noop_table;
-   }
-#ifdef DEBUG
-   else {
-      _glapi_check_table_not_null(dispatch);
-      _glapi_check_table(dispatch);
-   }
-#endif
-
-#if defined(GLX_USE_TLS)
-   _glapi_tls_Dispatch = dispatch;
-#elif defined(THREADS)
-   _glthread_SetTSD(&_gl_DispatchTSD, (void *) dispatch);
-   _glapi_Dispatch = (ThreadSafe) ? NULL : dispatch;
-#else
-   _glapi_Dispatch = dispatch;
-#endif
-}
-
-
-
-/**
- * Return pointer to current dispatch table for calling thread.
- */
-PUBLIC struct _glapi_table *
-_glapi_get_dispatch(void)
-{
-#if defined(GLX_USE_TLS)
-   return _glapi_tls_Dispatch;
-#elif defined(THREADS)
-   return (ThreadSafe)
-     ? (struct _glapi_table *) _glthread_GetTSD(&_gl_DispatchTSD)
-     : _glapi_Dispatch;
-#else
-   return _glapi_Dispatch;
-#endif
-}
diff --git a/src/mesa/glapi/glapi.h b/src/mesa/glapi/glapi.h
deleted file mode 100644 (file)
index 7dcf2e8..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.1
- *
- * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/**
- * \mainpage Mesa GL API Module
- *
- * \section GLAPIIntroduction Introduction
- *
- * The Mesa GL API module is responsible for dispatching all the
- * gl*() functions.  All GL functions are dispatched by jumping through
- * the current dispatch table (basically a struct full of function
- * pointers.)
- *
- * A per-thread current dispatch table and per-thread current context
- * pointer are managed by this module too.
- *
- * This module is intended to be non-Mesa-specific so it can be used
- * with the X/DRI libGL also.
- */
-
-
-#ifndef _GLAPI_H
-#define _GLAPI_H
-
-#include "glthread.h"
-
-
-struct _glapi_table;
-
-typedef void (*_glapi_proc)(void); /* generic function pointer */
-
-
-#if defined(USE_MGL_NAMESPACE)
-#define _glapi_set_dispatch _mglapi_set_dispatch
-#define _glapi_get_dispatch _mglapi_get_dispatch
-#define _glapi_set_context _mglapi_set_context
-#define _glapi_get_context _mglapi_get_context
-#define _glapi_Dispatch _mglapi_Dispatch
-#define _glapi_Context _mglapi_Context
-#endif
-
-
-#if defined(__GNUC__)
-#  define likely(x)   __builtin_expect(!!(x), 1)
-#  define unlikely(x) __builtin_expect(!!(x), 0)
-#else
-#  define likely(x)   (x)
-#  define unlikely(x) (x)
-#endif
-
-
-/**
- ** Define the GET_DISPATCH() and GET_CURRENT_CONTEXT() macros.
- **
- ** \param C local variable which will hold the current context.
- **/
-#if defined (GLX_USE_TLS)
-
-extern const struct _glapi_table *_glapi_Dispatch;
-
-extern const void *_glapi_Context;
-
-extern __thread struct _glapi_table * _glapi_tls_Dispatch
-    __attribute__((tls_model("initial-exec")));
-
-extern __thread void * _glapi_tls_Context
-    __attribute__((tls_model("initial-exec")));
-
-# define GET_DISPATCH() _glapi_tls_Dispatch
-
-# define GET_CURRENT_CONTEXT(C)  GLcontext *C = (GLcontext *) _glapi_tls_Context
-
-#else
-
-extern struct _glapi_table *_glapi_Dispatch;
-
-extern void *_glapi_Context;
-
-# ifdef THREADS
-
-#  define GET_DISPATCH() \
-     (likely(_glapi_Dispatch) ? _glapi_Dispatch : _glapi_get_dispatch())
-
-#  define GET_CURRENT_CONTEXT(C)  GLcontext *C = (GLcontext *) \
-     (likely(_glapi_Context) ? _glapi_Context : _glapi_get_context())
-
-# else
-
-#  define GET_DISPATCH() _glapi_Dispatch
-
-#  define GET_CURRENT_CONTEXT(C)  GLcontext *C = (GLcontext *) _glapi_Context
-
-# endif
-
-#endif /* defined (GLX_USE_TLS) */
-
-
-/**
- ** GL API public functions
- **/
-
-extern void
-_glapi_init_multithread(void);
-
-
-extern void
-_glapi_destroy_multithread(void);
-
-
-extern void
-_glapi_check_multithread(void);
-
-
-extern void
-_glapi_set_context(void *context);
-
-
-extern void *
-_glapi_get_context(void);
-
-
-extern void
-_glapi_set_dispatch(struct _glapi_table *dispatch);
-
-
-extern struct _glapi_table *
-_glapi_get_dispatch(void);
-
-
-extern unsigned int
-_glapi_get_dispatch_table_size(void);
-
-
-extern int
-_glapi_add_dispatch( const char * const * function_names,
-                    const char * parameter_signature );
-
-extern int
-_glapi_get_proc_offset(const char *funcName);
-
-
-extern _glapi_proc
-_glapi_get_proc_address(const char *funcName);
-
-
-extern const char *
-_glapi_get_proc_name(unsigned int offset);
-
-
-#endif
diff --git a/src/mesa/glapi/glapi_dispatch.c b/src/mesa/glapi/glapi_dispatch.c
deleted file mode 100644 (file)
index 32b9535..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.3
- *
- * Copyright (C) 1999-2004  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/**
- * \file glapi_dispatch.c
- *
- * This file generates all the gl* function entrypoints.  This code is not
- * used if optimized assembly stubs are available (e.g., using x86/glapi_x86.S
- * on IA32 or sparc/glapi_sparc.S on SPARC).
- *
- * \note
- * This file is also used to build the client-side libGL that loads DRI-based
- * device drivers.  At build-time it is symlinked to src/glx.
- *
- * \author Brian Paul <brian@precisioninsight.com>
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include "glapi/mesa.h"
-#else
-#include "main/glheader.h"
-#include "main/compiler.h"
-#endif
-
-#include "glapi/glapi.h"
-#include "glapi/glapitable.h"
-#include "glapi/glapidispatch.h"
-#include "glapi/glthread.h"
-
-
-#if !(defined(USE_X86_ASM) || defined(USE_X86_64_ASM) || defined(USE_SPARC_ASM))
-
-#if defined(WIN32)
-#define KEYWORD1 GLAPI
-#else
-#define KEYWORD1 PUBLIC
-#endif
-
-#define KEYWORD2 GLAPIENTRY
-
-#if defined(USE_MGL_NAMESPACE)
-#define NAME(func)  mgl##func
-#else
-#define NAME(func)  gl##func
-#endif
-
-#if 0  /* Use this to log GL calls to stdout (for DEBUG only!) */
-
-#define F stdout
-#define DISPATCH(FUNC, ARGS, MESSAGE)          \
-   fprintf MESSAGE;                            \
-   CALL_ ## FUNC(GET_DISPATCH(), ARGS);
-
-#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE)   \
-   fprintf MESSAGE;                            \
-   return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
-
-#else
-
-#define DISPATCH(FUNC, ARGS, MESSAGE)          \
-   CALL_ ## FUNC(GET_DISPATCH(), ARGS);
-
-#define RETURN_DISPATCH(FUNC, ARGS, MESSAGE)   \
-   return CALL_ ## FUNC(GET_DISPATCH(), ARGS);
-
-#endif /* logging */
-
-
-#ifndef GLAPIENTRY
-#define GLAPIENTRY
-#endif
-
-#ifdef GLX_INDIRECT_RENDERING
-/* those link to libglapi.a should provide the entry points */
-#define _GLAPI_SKIP_PROTO_ENTRY_POINTS
-#endif
-#include "glapi/glapitemp.h"
-
-#endif /* USE_X86_ASM */
diff --git a/src/mesa/glapi/glapi_entrypoint.c b/src/mesa/glapi/glapi_entrypoint.c
deleted file mode 100644 (file)
index 239780e..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.1
- *
- * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glapi_entrypoint.c
- *
- * Arch-specific code for manipulating GL API entrypoints (dispatch stubs).
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include "glapi/mesa.h"
-#else
-#include "main/glheader.h"
-#include "main/compiler.h"
-#endif
-
-#include "glapi/glapi.h"
-#include "glapi/glapi_priv.h"
-
-
-#ifdef USE_X86_ASM
-
-#if defined( GLX_USE_TLS )
-extern       GLubyte gl_dispatch_functions_start[];
-extern       GLubyte gl_dispatch_functions_end[];
-#else
-extern const GLubyte gl_dispatch_functions_start[];
-#endif
-
-#endif /* USE_X86_ASM */
-
-
-#if defined(DISPATCH_FUNCTION_SIZE)
-
-_glapi_proc
-get_entrypoint_address(unsigned int functionOffset)
-{
-   return (_glapi_proc) (gl_dispatch_functions_start
-                         + (DISPATCH_FUNCTION_SIZE * functionOffset));
-}
-
-#endif
-
-
-#if defined(USE_X86_ASM)
-
-/**
- * Perform platform-specific GL API entry-point fixups.
- */
-static void
-init_glapi_relocs( void )
-{
-#if defined(GLX_USE_TLS) && !defined(GLX_X86_READONLY_TEXT)
-    extern unsigned long _x86_get_dispatch(void);
-    char run_time_patch[] = {
-       0x65, 0xa1, 0, 0, 0, 0 /* movl %gs:0,%eax */
-    };
-    GLuint *offset = (GLuint *) &run_time_patch[2]; /* 32-bits for x86/32 */
-    const GLubyte * const get_disp = (const GLubyte *) run_time_patch;
-    GLubyte * curr_func = (GLubyte *) gl_dispatch_functions_start;
-
-    *offset = _x86_get_dispatch();
-    while ( curr_func != (GLubyte *) gl_dispatch_functions_end ) {
-       (void) memcpy( curr_func, get_disp, sizeof(run_time_patch));
-       curr_func += DISPATCH_FUNCTION_SIZE;
-    }
-#endif
-}
-
-
-/**
- * Generate a dispatch function (entrypoint) which jumps through
- * the given slot number (offset) in the current dispatch table.
- * We need assembly language in order to accomplish this.
- */
-_glapi_proc
-generate_entrypoint(unsigned int functionOffset)
-{
-   /* 32 is chosen as something of a magic offset.  For x86, the dispatch
-    * at offset 32 is the first one where the offset in the
-    * "jmp OFFSET*4(%eax)" can't be encoded in a single byte.
-    */
-   const GLubyte * const template_func = gl_dispatch_functions_start 
-     + (DISPATCH_FUNCTION_SIZE * 32);
-   GLubyte * const code = (GLubyte *) _glapi_exec_malloc(DISPATCH_FUNCTION_SIZE);
-
-
-   if ( code != NULL ) {
-      (void) memcpy(code, template_func, DISPATCH_FUNCTION_SIZE);
-      fill_in_entrypoint_offset( (_glapi_proc) code, functionOffset );
-   }
-
-   return (_glapi_proc) code;
-}
-
-
-/**
- * This function inserts a new dispatch offset into the assembly language
- * stub that was generated with the preceeding function.
- */
-void
-fill_in_entrypoint_offset(_glapi_proc entrypoint, unsigned int offset)
-{
-   GLubyte * const code = (GLubyte *) entrypoint;
-
-#if defined(GLX_USE_TLS)
-   *((unsigned int *)(code +  8)) = 4 * offset;
-#elif defined(THREADS)
-   *((unsigned int *)(code + 11)) = 4 * offset;
-   *((unsigned int *)(code + 22)) = 4 * offset;
-#else
-   *((unsigned int *)(code +  7)) = 4 * offset;
-#endif
-}
-
-
-#elif defined(USE_SPARC_ASM)
-
-extern void __glapi_sparc_icache_flush(unsigned int *);
-
-static void
-init_glapi_relocs( void )
-{
-#if defined(PTHREADS) || defined(GLX_USE_TLS)
-    static const unsigned int template[] = {
-#ifdef GLX_USE_TLS
-       0x05000000, /* sethi %hi(_glapi_tls_Dispatch), %g2 */
-       0x8730e00a, /* srl %g3, 10, %g3 */
-       0x8410a000, /* or %g2, %lo(_glapi_tls_Dispatch), %g2 */
-#ifdef __arch64__
-       0xc259c002, /* ldx [%g7 + %g2], %g1 */
-       0xc2584003, /* ldx [%g1 + %g3], %g1 */
-#else
-       0xc201c002, /* ld [%g7 + %g2], %g1 */
-       0xc2004003, /* ld [%g1 + %g3], %g1 */
-#endif
-       0x81c04000, /* jmp %g1 */
-       0x01000000, /* nop  */
-#else
-#ifdef __arch64__
-       0x03000000, /* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */
-       0x05000000, /* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */
-       0x82106000, /* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */
-       0x8730e00a, /* 64-bit 0x0c --> srl %g3, 10, %g3 */
-       0x83287020, /* 64-bit 0x10 --> sllx %g1, 32, %g1 */
-       0x82004002, /* 64-bit 0x14 --> add %g1, %g2, %g1 */
-       0xc2586000, /* 64-bit 0x18 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */
-#else
-       0x03000000, /* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */
-       0x8730e00a, /* 32-bit 0x04 --> srl %g3, 10, %g3 */
-       0xc2006000, /* 32-bit 0x08 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */
-#endif
-       0x80a06000, /*             --> cmp %g1, 0 */
-       0x02800005, /*             --> be +4*5 */
-       0x01000000, /*             -->  nop  */
-#ifdef __arch64__
-       0xc2584003, /* 64-bit      --> ldx [%g1 + %g3], %g1 */
-#else
-       0xc2004003, /* 32-bit      --> ld [%g1 + %g3], %g1 */
-#endif
-       0x81c04000, /*             --> jmp %g1 */
-       0x01000000, /*             --> nop  */
-#ifdef __arch64__
-       0x9de3bf80, /* 64-bit      --> save  %sp, -128, %sp */
-#else
-       0x9de3bfc0, /* 32-bit      --> save  %sp, -64, %sp */
-#endif
-       0xa0100003, /*             --> mov  %g3, %l0 */
-       0x40000000, /*             --> call _glapi_get_dispatch */
-       0x01000000, /*             -->  nop */
-       0x82100008, /*             --> mov %o0, %g1 */
-       0x86100010, /*             --> mov %l0, %g3 */
-       0x10bffff7, /*             --> ba -4*9 */
-       0x81e80000, /*             -->  restore  */
-#endif
-    };
-#ifdef GLX_USE_TLS
-    extern unsigned int __glapi_sparc_tls_stub;
-    extern unsigned long __glapi_sparc_get_dispatch(void);
-    unsigned int *code = &__glapi_sparc_tls_stub;
-    unsigned long dispatch = __glapi_sparc_get_dispatch();
-#else
-    extern unsigned int __glapi_sparc_pthread_stub;
-    unsigned int *code = &__glapi_sparc_pthread_stub;
-    unsigned long dispatch = (unsigned long) &_glapi_Dispatch;
-    unsigned long call_dest = (unsigned long ) &_glapi_get_dispatch;
-    int idx;
-#endif
-
-#ifdef GLX_USE_TLS
-    code[0] = template[0] | (dispatch >> 10);
-    code[1] = template[1];
-    __glapi_sparc_icache_flush(&code[0]);
-    code[2] = template[2] | (dispatch & 0x3ff);
-    code[3] = template[3];
-    __glapi_sparc_icache_flush(&code[2]);
-    code[4] = template[4];
-    code[5] = template[5];
-    __glapi_sparc_icache_flush(&code[4]);
-    code[6] = template[6];
-    __glapi_sparc_icache_flush(&code[6]);
-#else
-#if defined(__arch64__)
-    code[0] = template[0] | (dispatch >> (32 + 10));
-    code[1] = template[1] | ((dispatch & 0xffffffff) >> 10);
-    __glapi_sparc_icache_flush(&code[0]);
-    code[2] = template[2] | ((dispatch >> 32) & 0x3ff);
-    code[3] = template[3];
-    __glapi_sparc_icache_flush(&code[2]);
-    code[4] = template[4];
-    code[5] = template[5];
-    __glapi_sparc_icache_flush(&code[4]);
-    code[6] = template[6] | (dispatch & 0x3ff);
-    idx = 7;
-#else
-    code[0] = template[0] | (dispatch >> 10);
-    code[1] = template[1];
-    __glapi_sparc_icache_flush(&code[0]);
-    code[2] = template[2] | (dispatch & 0x3ff);
-    idx = 3;
-#endif
-    code[idx + 0] = template[idx + 0];
-    __glapi_sparc_icache_flush(&code[idx - 1]);
-    code[idx + 1] = template[idx + 1];
-    code[idx + 2] = template[idx + 2];
-    __glapi_sparc_icache_flush(&code[idx + 1]);
-    code[idx + 3] = template[idx + 3];
-    code[idx + 4] = template[idx + 4];
-    __glapi_sparc_icache_flush(&code[idx + 3]);
-    code[idx + 5] = template[idx + 5];
-    code[idx + 6] = template[idx + 6];
-    __glapi_sparc_icache_flush(&code[idx + 5]);
-    code[idx + 7] = template[idx + 7];
-    code[idx + 8] = template[idx + 8] |
-           (((call_dest - ((unsigned long) &code[idx + 8]))
-             >> 2) & 0x3fffffff);
-    __glapi_sparc_icache_flush(&code[idx + 7]);
-    code[idx + 9] = template[idx + 9];
-    code[idx + 10] = template[idx + 10];
-    __glapi_sparc_icache_flush(&code[idx + 9]);
-    code[idx + 11] = template[idx + 11];
-    code[idx + 12] = template[idx + 12];
-    __glapi_sparc_icache_flush(&code[idx + 11]);
-    code[idx + 13] = template[idx + 13];
-    __glapi_sparc_icache_flush(&code[idx + 13]);
-#endif
-#endif
-}
-
-
-_glapi_proc
-generate_entrypoint(GLuint functionOffset)
-{
-#if defined(PTHREADS) || defined(GLX_USE_TLS)
-   static const unsigned int template[] = {
-      0x07000000, /* sethi %hi(0), %g3 */
-      0x8210000f, /* mov  %o7, %g1 */
-      0x40000000, /* call */
-      0x9e100001, /* mov  %g1, %o7 */
-   };
-#ifdef GLX_USE_TLS
-   extern unsigned int __glapi_sparc_tls_stub;
-   unsigned long call_dest = (unsigned long ) &__glapi_sparc_tls_stub;
-#else
-   extern unsigned int __glapi_sparc_pthread_stub;
-   unsigned long call_dest = (unsigned long ) &__glapi_sparc_pthread_stub;
-#endif
-   unsigned int *code = (unsigned int *) _glapi_exec_malloc(sizeof(template));
-   if (code) {
-      code[0] = template[0] | (functionOffset & 0x3fffff);
-      code[1] = template[1];
-      __glapi_sparc_icache_flush(&code[0]);
-      code[2] = template[2] |
-         (((call_dest - ((unsigned long) &code[2]))
-          >> 2) & 0x3fffffff);
-      code[3] = template[3];
-      __glapi_sparc_icache_flush(&code[2]);
-   }
-   return (_glapi_proc) code;
-#endif
-}
-
-
-void
-fill_in_entrypoint_offset(_glapi_proc entrypoint, GLuint offset)
-{
-   unsigned int *code = (unsigned int *) entrypoint;
-
-   code[0] &= ~0x3fffff;
-   code[0] |= (offset * sizeof(void *)) & 0x3fffff;
-   __glapi_sparc_icache_flush(&code[0]);
-}
-
-
-#else /* USE_*_ASM */
-
-static void
-init_glapi_relocs( void )
-{
-}
-
-
-_glapi_proc
-generate_entrypoint(GLuint functionOffset)
-{
-   (void) functionOffset;
-   return NULL;
-}
-
-
-void
-fill_in_entrypoint_offset(_glapi_proc entrypoint, GLuint offset)
-{
-   /* an unimplemented architecture */
-   (void) entrypoint;
-   (void) offset;
-}
-
-#endif /* USE_*_ASM */
-
-
-void
-init_glapi_relocs_once( void )
-{
-#if defined(PTHREADS) || defined(GLX_USE_TLS)
-   static pthread_once_t once_control = PTHREAD_ONCE_INIT;
-   pthread_once( & once_control, init_glapi_relocs );
-#endif
-}
diff --git a/src/mesa/glapi/glapi_execmem.c b/src/mesa/glapi/glapi_execmem.c
deleted file mode 100644 (file)
index 57f00be..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5
- *
- * Copyright (C) 1999-2005  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/**
- * \file glapi_execmem.c
- *
- * Function for allocating executable memory for dispatch stubs.
- *
- * Copied from main/execmem.c and simplified for dispatch stubs.
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include "glapi/mesa.h"
-#else
-#include "main/compiler.h"
-#endif
-
-#include "glapi/glthread.h"
-#include "glapi/glapi_priv.h"
-
-
-#if defined(__linux__) || defined(__OpenBSD__) || defined(_NetBSD__) || defined(__sun)
-
-#include <unistd.h>
-#include <sys/mman.h>
-
-#ifdef MESA_SELINUX
-#include <selinux/selinux.h>
-#endif
-
-
-#ifndef MAP_ANONYMOUS
-#define MAP_ANONYMOUS MAP_ANON
-#endif
-
-
-#define EXEC_MAP_SIZE (4*1024)
-
-_glthread_DECLARE_STATIC_MUTEX(exec_mutex);
-
-static unsigned int head = 0;
-
-static unsigned char *exec_mem = NULL;
-
-
-/*
- * Dispatch stubs are of fixed size and never freed. Thus, we do not need to
- * overlay a heap, we just mmap a page and manage through an index.
- */
-
-static int
-init_map(void)
-{
-#ifdef MESA_SELINUX
-   if (is_selinux_enabled()) {
-      if (!security_get_boolean_active("allow_execmem") ||
-         !security_get_boolean_pending("allow_execmem"))
-         return 0;
-   }
-#endif
-
-   if (!exec_mem)
-      exec_mem = mmap(NULL, EXEC_MAP_SIZE, PROT_EXEC | PROT_READ | PROT_WRITE,
-                     MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
-
-   return (exec_mem != MAP_FAILED);
-}
-
-
-void *
-_glapi_exec_malloc(unsigned int size)
-{
-   void *addr = NULL;
-
-   _glthread_LOCK_MUTEX(exec_mutex);
-
-   if (!init_map())
-      goto bail;
-
-   /* free space check, assumes no integer overflow */
-   if (head + size > EXEC_MAP_SIZE)
-      goto bail;
-
-   /* allocation, assumes proper addr and size alignement */
-   addr = exec_mem + head;
-   head += size;
-
-bail:
-   _glthread_UNLOCK_MUTEX(exec_mutex);
-
-   return addr;
-}
-
-
-#else
-
-void *
-_glapi_exec_malloc(unsigned int size)
-{
-   return malloc(size);
-}
-
-
-#endif
diff --git a/src/mesa/glapi/glapi_getproc.c b/src/mesa/glapi/glapi_getproc.c
deleted file mode 100644 (file)
index c73e8dd..0000000
+++ /dev/null
@@ -1,695 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.1
- *
- * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/**
- * \file glapi_getproc.c
- *
- * Code for implementing glXGetProcAddress(), etc.
- * This was originally in glapi.c but refactored out.
- */
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include "glapi/mesa.h"
-#else
-#include "main/glheader.h"
-#include "main/compiler.h"
-#endif
-
-#include "glapi/glapi.h"
-#include "glapi/glapi_priv.h"
-#include "glapi/glapitable.h"
-#include "glapi/glapioffsets.h"
-
-
-/**********************************************************************
- * Static function management.
- */
-
-
-#if !defined(DISPATCH_FUNCTION_SIZE) && !defined(XFree86Server)
-# define NEED_FUNCTION_POINTER
-#endif
-#include "glapi/glprocs.h"
-
-
-/**
- * Search the table of static entrypoint functions for the named function
- * and return the corresponding glprocs_table_t entry.
- */
-static const glprocs_table_t *
-get_static_proc( const char * n )
-{
-   GLuint i;
-   for (i = 0; static_functions[i].Name_offset >= 0; i++) {
-      const char *testName = gl_string_table + static_functions[i].Name_offset;
-#ifdef MANGLE
-      /* skip the prefix on the name */
-      if (strcmp(testName, n + 1) == 0)
-#else
-      if (strcmp(testName, n) == 0)
-#endif
-      {
-        return &static_functions[i];
-      }
-   }
-   return NULL;
-}
-
-
-/**
- * Return dispatch table offset of the named static (built-in) function.
- * Return -1 if function not found.
- */
-static GLint
-get_static_proc_offset(const char *funcName)
-{
-   const glprocs_table_t * const f = get_static_proc( funcName );
-   if (f == NULL) {
-      return -1;
-   }
-
-   return f->Offset;
-}
-
-
-#if !defined(XFree86Server)
-
-/**
- * Return dispatch function address for the named static (built-in) function.
- * Return NULL if function not found.
- */
-static _glapi_proc
-get_static_proc_address(const char *funcName)
-{
-   const glprocs_table_t * const f = get_static_proc( funcName );
-   if (f == NULL) {
-      return NULL;
-   }
-
-#if defined(DISPATCH_FUNCTION_SIZE) && defined(GLX_INDIRECT_RENDERING)
-   return (f->Address == NULL)
-      ? get_entrypoint_address(f->Offset)
-      : f->Address;
-#elif defined(DISPATCH_FUNCTION_SIZE)
-   return get_entrypoint_address(f->Offset);
-#else
-   return f->Address;
-#endif
-}
-
-#else
-
-static _glapi_proc
-get_static_proc_address(const char *funcName)
-{
-   (void) funcName;
-   return NULL;
-}
-
-#endif /* !defined(XFree86Server) */
-
-
-/**
- * Return the name of the function at the given offset in the dispatch
- * table.  For debugging only.
- */
-static const char *
-get_static_proc_name( GLuint offset )
-{
-   GLuint i;
-   for (i = 0; static_functions[i].Name_offset >= 0; i++) {
-      if (static_functions[i].Offset == offset) {
-        return gl_string_table + static_functions[i].Name_offset;
-      }
-   }
-   return NULL;
-}
-
-
-
-/**********************************************************************
- * Extension function management.
- */
-
-
-/**
- * Track information about a function added to the GL API.
- */
-struct _glapi_function {
-   /**
-    * Name of the function.
-    */
-   const char * name;
-
-
-   /**
-    * Text string that describes the types of the parameters passed to the
-    * named function.   Parameter types are converted to characters using the
-    * following rules:
-    *   - 'i' for \c GLint, \c GLuint, and \c GLenum
-    *   - 'p' for any pointer type
-    *   - 'f' for \c GLfloat and \c GLclampf
-    *   - 'd' for \c GLdouble and \c GLclampd
-    */
-   const char * parameter_signature;
-
-
-   /**
-    * Offset in the dispatch table where the pointer to the real function is
-    * located.  If the driver has not requested that the named function be
-    * added to the dispatch table, this will have the value ~0.
-    */
-   unsigned dispatch_offset;
-
-
-   /**
-    * Pointer to the dispatch stub for the named function.
-    * 
-    * \todo
-    * The semantic of this field should be changed slightly.  Currently, it
-    * is always expected to be non-\c NULL.  However, it would be better to
-    * only allocate the entry-point stub when the application requests the
-    * function via \c glXGetProcAddress.  This would save memory for all the
-    * functions that the driver exports but that the application never wants
-    * to call.
-    */
-   _glapi_proc dispatch_stub;
-};
-
-
-static struct _glapi_function ExtEntryTable[MAX_EXTENSION_FUNCS];
-static GLuint NumExtEntryPoints = 0;
-
-
-static struct _glapi_function *
-get_extension_proc(const char *funcName)
-{
-   GLuint i;
-   for (i = 0; i < NumExtEntryPoints; i++) {
-      if (strcmp(ExtEntryTable[i].name, funcName) == 0) {
-         return & ExtEntryTable[i];
-      }
-   }
-   return NULL;
-}
-
-
-static GLint
-get_extension_proc_offset(const char *funcName)
-{
-   const struct _glapi_function * const f = get_extension_proc( funcName );
-   if (f == NULL) {
-      return -1;
-   }
-
-   return f->dispatch_offset;
-}
-
-
-static _glapi_proc
-get_extension_proc_address(const char *funcName)
-{
-   const struct _glapi_function * const f = get_extension_proc( funcName );
-   if (f == NULL) {
-      return NULL;
-   }
-
-   return f->dispatch_stub;
-}
-
-
-static const char *
-get_extension_proc_name(GLuint offset)
-{
-   GLuint i;
-   for (i = 0; i < NumExtEntryPoints; i++) {
-      if (ExtEntryTable[i].dispatch_offset == offset) {
-         return ExtEntryTable[i].name;
-      }
-   }
-   return NULL;
-}
-
-
-/**
- * strdup() is actually not a standard ANSI C or POSIX routine.
- * Irix will not define it if ANSI mode is in effect.
- */
-static char *
-str_dup(const char *str)
-{
-   char *copy;
-   copy = (char*) malloc(strlen(str) + 1);
-   if (!copy)
-      return NULL;
-   strcpy(copy, str);
-   return copy;
-}
-
-
-/**
- * Generate new entrypoint
- *
- * Use a temporary dispatch offset of ~0 (i.e. -1).  Later, when the driver
- * calls \c _glapi_add_dispatch we'll put in the proper offset.  If that
- * never happens, and the user calls this function, he'll segfault.  That's
- * what you get when you try calling a GL function that doesn't really exist.
- * 
- * \param funcName  Name of the function to create an entry-point for.
- * 
- * \sa _glapi_add_entrypoint
- */
-
-static struct _glapi_function *
-add_function_name( const char * funcName )
-{
-   struct _glapi_function * entry = NULL;
-   _glapi_proc entrypoint = NULL;
-   char * name_dup = NULL;
-
-   if (NumExtEntryPoints >= MAX_EXTENSION_FUNCS)
-      return NULL;
-
-   if (funcName == NULL)
-      return NULL;
-
-   name_dup = str_dup(funcName);
-   if (name_dup == NULL)
-      return NULL;
-
-   entrypoint = generate_entrypoint(~0);
-
-   if (entrypoint == NULL) {
-      free(name_dup);
-      return NULL;
-   }
-
-   entry = & ExtEntryTable[NumExtEntryPoints];
-   NumExtEntryPoints++;
-
-   entry->name = name_dup;
-   entry->parameter_signature = NULL;
-   entry->dispatch_offset = ~0;
-   entry->dispatch_stub = entrypoint;
-
-   return entry;
-}
-
-
-static struct _glapi_function *
-set_entry_info( struct _glapi_function * entry, const char * signature, unsigned offset )
-{
-   char * sig_dup = NULL;
-
-   if (signature == NULL)
-      return NULL;
-
-   sig_dup = str_dup(signature);
-   if (sig_dup == NULL)
-      return NULL;
-
-   fill_in_entrypoint_offset(entry->dispatch_stub, offset);
-
-   entry->parameter_signature = sig_dup;
-   entry->dispatch_offset = offset;
-
-   return entry;
-}
-
-
-/**
- * Fill-in the dispatch stub for the named function.
- * 
- * This function is intended to be called by a hardware driver.  When called,
- * a dispatch stub may be created created for the function.  A pointer to this
- * dispatch function will be returned by glXGetProcAddress.
- *
- * \param function_names       Array of pointers to function names that should
- *                             share a common dispatch offset.
- * \param parameter_signature  String representing the types of the parameters
- *                             passed to the named function.  Parameter types
- *                             are converted to characters using the following
- *                             rules:
- *                               - 'i' for \c GLint, \c GLuint, and \c GLenum
- *                               - 'p' for any pointer type
- *                               - 'f' for \c GLfloat and \c GLclampf
- *                               - 'd' for \c GLdouble and \c GLclampd
- *
- * \returns
- * The offset in the dispatch table of the named function.  A pointer to the
- * driver's implementation of the named function should be stored at
- * \c dispatch_table[\c offset].  Return -1 if error/problem.
- *
- * \sa glXGetProcAddress
- *
- * \warning
- * This function can only handle up to 8 names at a time.  As far as I know,
- * the maximum number of names ever associated with an existing GL function is
- * 4 (\c glPointParameterfSGIS, \c glPointParameterfEXT,
- * \c glPointParameterfARB, and \c glPointParameterf), so this should not be
- * too painful of a limitation.
- *
- * \todo
- * Determine whether or not \c parameter_signature should be allowed to be
- * \c NULL.  It doesn't seem like much of a hardship for drivers to have to
- * pass in an empty string.
- *
- * \todo
- * Determine if code should be added to reject function names that start with
- * 'glX'.
- * 
- * \bug
- * Add code to compare \c parameter_signature with the parameter signature of
- * a static function.  In order to do that, we need to find a way to \b get
- * the parameter signature of a static function.
- */
-
-PUBLIC int
-_glapi_add_dispatch( const char * const * function_names,
-                    const char * parameter_signature )
-{
-   static int next_dynamic_offset = _gloffset_FIRST_DYNAMIC;
-   const char * const real_sig = (parameter_signature != NULL)
-     ? parameter_signature : "";
-   struct _glapi_function * entry[8];
-   GLboolean is_static[8];
-   unsigned i;
-   int offset = ~0;
-
-   init_glapi_relocs_once();
-
-   (void) memset( is_static, 0, sizeof( is_static ) );
-   (void) memset( entry, 0, sizeof( entry ) );
-
-   /* Find the _single_ dispatch offset for all function names that already
-    * exist (and have a dispatch offset).
-    */
-
-   for ( i = 0 ; function_names[i] != NULL ; i++ ) {
-      const char * funcName = function_names[i];
-      int static_offset;
-      int extension_offset;
-
-      if (funcName[0] != 'g' || funcName[1] != 'l')
-         return -1;
-
-      /* search built-in functions */
-      static_offset = get_static_proc_offset(funcName);
-
-      if (static_offset >= 0) {
-
-        is_static[i] = GL_TRUE;
-
-        /* FIXME: Make sure the parameter signatures match!  How do we get
-         * FIXME: the parameter signature for static functions?
-         */
-
-        if ( (offset != ~0) && (static_offset != offset) ) {
-           return -1;
-        }
-
-        offset = static_offset;
-
-        continue;
-      }
-
-      /* search added extension functions */
-      entry[i] = get_extension_proc(funcName);
-
-      if (entry[i] != NULL) {
-        extension_offset = entry[i]->dispatch_offset;
-
-        /* The offset may be ~0 if the function name was added by
-         * glXGetProcAddress but never filled in by the driver.
-         */
-
-        if (extension_offset == ~0) {
-           continue;
-        }
-
-        if (strcmp(real_sig, entry[i]->parameter_signature) != 0) {
-           return -1;
-        }
-
-        if ( (offset != ~0) && (extension_offset != offset) ) {
-           return -1;
-        }
-
-        offset = extension_offset;
-      }
-   }
-
-   /* If all function names are either new (or with no dispatch offset),
-    * allocate a new dispatch offset.
-    */
-
-   if (offset == ~0) {
-      offset = next_dynamic_offset;
-      next_dynamic_offset++;
-   }
-
-   /* Fill in the dispatch offset for the new function names (and those with
-    * no dispatch offset).
-    */
-
-   for ( i = 0 ; function_names[i] != NULL ; i++ ) {
-      if (is_static[i]) {
-        continue;
-      }
-
-      /* generate entrypoints for new function names */
-      if (entry[i] == NULL) {
-        entry[i] = add_function_name( function_names[i] );
-        if (entry[i] == NULL) {
-           /* FIXME: Possible memory leak here. */
-           return -1;
-        }
-      }
-
-      if (entry[i]->dispatch_offset == ~0) {
-        set_entry_info( entry[i], real_sig, offset );
-      }
-   }
-
-   return offset;
-}
-
-
-/**
- * Return offset of entrypoint for named function within dispatch table.
- */
-PUBLIC GLint
-_glapi_get_proc_offset(const char *funcName)
-{
-   GLint offset;
-
-   /* search extension functions first */
-   offset = get_extension_proc_offset(funcName);
-   if (offset >= 0)
-      return offset;
-
-   /* search static functions */
-   return get_static_proc_offset(funcName);
-}
-
-
-
-/**
- * Return pointer to the named function.  If the function name isn't found
- * in the name of static functions, try generating a new API entrypoint on
- * the fly with assembly language.
- */
-PUBLIC _glapi_proc
-_glapi_get_proc_address(const char *funcName)
-{
-   _glapi_proc func;
-   struct _glapi_function * entry;
-
-   init_glapi_relocs_once();
-
-#ifdef MANGLE
-   /* skip the prefix on the name */
-   if (funcName[1] != 'g' || funcName[2] != 'l')
-      return NULL;
-#else
-   if (funcName[0] != 'g' || funcName[1] != 'l')
-      return NULL;
-#endif
-
-   /* search extension functions first */
-   func = get_extension_proc_address(funcName);
-   if (func)
-      return func;
-
-   /* search static functions */
-   func = get_static_proc_address(funcName);
-   if (func)
-      return func;
-
-   /* generate entrypoint, dispatch offset must be filled in by the driver */
-   entry = add_function_name(funcName);
-   if (entry == NULL)
-      return NULL;
-
-   return entry->dispatch_stub;
-}
-
-
-
-/**
- * Return the name of the function at the given dispatch offset.
- * This is only intended for debugging.
- */
-const char *
-_glapi_get_proc_name(GLuint offset)
-{
-   const char * n;
-
-   /* search built-in functions */
-   n = get_static_proc_name(offset);
-   if ( n != NULL ) {
-      return n;
-   }
-
-   /* search added extension functions */
-   return get_extension_proc_name(offset);
-}
-
-
-
-/**********************************************************************
- * GL API table functions.
- */
-
-
-/*
- * The dispatch table size (number of entries) is the size of the
- * _glapi_table struct plus the number of dynamic entries we can add.
- * The extra slots can be filled in by DRI drivers that register new extension
- * functions.
- */
-#define DISPATCH_TABLE_SIZE (sizeof(struct _glapi_table) / sizeof(void *) + MAX_EXTENSION_FUNCS)
-
-
-/**
- * Return size of dispatch table struct as number of functions (or
- * slots).
- */
-PUBLIC GLuint
-_glapi_get_dispatch_table_size(void)
-{
-   return DISPATCH_TABLE_SIZE;
-}
-
-
-/**
- * Make sure there are no NULL pointers in the given dispatch table.
- * Intended for debugging purposes.
- */
-void
-_glapi_check_table_not_null(const struct _glapi_table *table)
-{
-#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
-   const GLuint entries = _glapi_get_dispatch_table_size();
-   const void **tab = (const void **) table;
-   GLuint i;
-   for (i = 1; i < entries; i++) {
-      assert(tab[i]);
-   }
-#else
-   (void) table;
-#endif
-}
-
-
-/**
- * Do some spot checks to be sure that the dispatch table
- * slots are assigned correctly. For debugging only.
- */
-void
-_glapi_check_table(const struct _glapi_table *table)
-{
-#ifdef EXTRA_DEBUG /* set to DEBUG for extra DEBUG */
-   {
-      GLuint BeginOffset = _glapi_get_proc_offset("glBegin");
-      char *BeginFunc = (char*) &table->Begin;
-      GLuint offset = (BeginFunc - (char *) table) / sizeof(void *);
-      assert(BeginOffset == _gloffset_Begin);
-      assert(BeginOffset == offset);
-   }
-   {
-      GLuint viewportOffset = _glapi_get_proc_offset("glViewport");
-      char *viewportFunc = (char*) &table->Viewport;
-      GLuint offset = (viewportFunc - (char *) table) / sizeof(void *);
-      assert(viewportOffset == _gloffset_Viewport);
-      assert(viewportOffset == offset);
-   }
-   {
-      GLuint VertexPointerOffset = _glapi_get_proc_offset("glVertexPointer");
-      char *VertexPointerFunc = (char*) &table->VertexPointer;
-      GLuint offset = (VertexPointerFunc - (char *) table) / sizeof(void *);
-      assert(VertexPointerOffset == _gloffset_VertexPointer);
-      assert(VertexPointerOffset == offset);
-   }
-   {
-      GLuint ResetMinMaxOffset = _glapi_get_proc_offset("glResetMinmax");
-      char *ResetMinMaxFunc = (char*) &table->ResetMinmax;
-      GLuint offset = (ResetMinMaxFunc - (char *) table) / sizeof(void *);
-      assert(ResetMinMaxOffset == _gloffset_ResetMinmax);
-      assert(ResetMinMaxOffset == offset);
-   }
-   {
-      GLuint blendColorOffset = _glapi_get_proc_offset("glBlendColor");
-      char *blendColorFunc = (char*) &table->BlendColor;
-      GLuint offset = (blendColorFunc - (char *) table) / sizeof(void *);
-      assert(blendColorOffset == _gloffset_BlendColor);
-      assert(blendColorOffset == offset);
-   }
-   {
-      GLuint secondaryColor3fOffset = _glapi_get_proc_offset("glSecondaryColor3fEXT");
-      char *secondaryColor3fFunc = (char*) &table->SecondaryColor3fEXT;
-      GLuint offset = (secondaryColor3fFunc - (char *) table) / sizeof(void *);
-      assert(secondaryColor3fOffset == _gloffset_SecondaryColor3fEXT);
-      assert(secondaryColor3fOffset == offset);
-   }
-   {
-      GLuint pointParameterivOffset = _glapi_get_proc_offset("glPointParameterivNV");
-      char *pointParameterivFunc = (char*) &table->PointParameterivNV;
-      GLuint offset = (pointParameterivFunc - (char *) table) / sizeof(void *);
-      assert(pointParameterivOffset == _gloffset_PointParameterivNV);
-      assert(pointParameterivOffset == offset);
-   }
-   {
-      GLuint setFenceOffset = _glapi_get_proc_offset("glSetFenceNV");
-      char *setFenceFunc = (char*) &table->SetFenceNV;
-      GLuint offset = (setFenceFunc - (char *) table) / sizeof(void *);
-      assert(setFenceOffset == _gloffset_SetFenceNV);
-      assert(setFenceOffset == offset);
-   }
-#else
-   (void) table;
-#endif
-}
diff --git a/src/mesa/glapi/glapi_nop.c b/src/mesa/glapi/glapi_nop.c
deleted file mode 100644 (file)
index 4257b1f..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.8
- *
- * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
- * Copyright (C) 2010  VMWare, Inc.  All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/**
- * No-op dispatch table.
- *
- * This file defines a special dispatch table which is loaded with no-op
- * functions.
- *
- * When there's no current rendering context, calling a GL function like
- * glBegin() is a no-op.  Apps should never normally do this.  So as a
- * debugging aid, each of the no-op functions will emit a warning to
- * stderr if the MESA_DEBUG or LIBGL_DEBUG env var is set.
- */
-
-
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include "glapi/mesa.h"
-#else
-#include "main/compiler.h"
-#include "main/glheader.h"
-#endif
-
-#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
-
-/**
- * Called by each of the no-op GL entrypoints.
- */
-static int
-Warn(const char *func)
-{
-#if !defined(_WIN32_WCE)
-   if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")) {
-      fprintf(stderr, "GL User Error: gl%s called without a rendering context\n",
-              func);
-   }
-#endif
-   return 0;
-}
-
-
-/**
- * This is called if the user somehow calls an unassigned GL dispatch function.
- */
-static GLint
-NoOpUnused(void)
-{
-   return Warn(" function");
-}
-
-/*
- * Defines for the glapitemp.h functions.
- */
-#define KEYWORD1 static
-#define KEYWORD1_ALT static
-#define KEYWORD2 GLAPIENTRY
-#define NAME(func)  NoOp##func
-#define DISPATCH(func, args, msg)  Warn(#func);
-#define RETURN_DISPATCH(func, args, msg)  Warn(#func); return 0
-
-
-/*
- * Defines for the table of no-op entry points.
- */
-#define TABLE_ENTRY(name) (_glapi_proc) NoOp##name
-
-#else
-
-static int
-NoOpGeneric(void)
-{
-#if !defined(_WIN32_WCE)
-   if (getenv("MESA_DEBUG") || getenv("LIBGL_DEBUG")) {
-      fprintf(stderr, "GL User Error: calling GL function without a rendering context\n");
-   }
-#endif
-   return 0;
-}
-
-#define TABLE_ENTRY(name) (_glapi_proc) NoOpGeneric
-
-#endif
-
-#define DISPATCH_TABLE_NAME __glapi_noop_table
-#define UNUSED_TABLE_NAME __unused_noop_functions
-
-#include "glapi/glapitemp.h"
diff --git a/src/mesa/glapi/glapi_priv.h b/src/mesa/glapi/glapi_priv.h
deleted file mode 100644 (file)
index da6fee6..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  7.1
- *
- * Copyright (C) 1999-2008  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#ifndef _GLAPI_PRIV_H
-#define _GLAPI_PRIV_H
-
-#include "glthread.h"
-#include "glapi.h"
-
-
-
-/* getproc */
-
-extern void
-_glapi_check_table_not_null(const struct _glapi_table *table);
-
-
-extern void
-_glapi_check_table(const struct _glapi_table *table);
-
-
-/* execmem */
-
-extern void *
-_glapi_exec_malloc(unsigned int size);
-
-
-/* entrypoint */
-
-extern void
-init_glapi_relocs_once(void);
-
-
-extern _glapi_proc
-generate_entrypoint(unsigned int functionOffset);
-
-
-extern void
-fill_in_entrypoint_offset(_glapi_proc entrypoint, unsigned int offset);
-
-
-extern _glapi_proc
-get_entrypoint_address(unsigned int functionOffset);
-
-
-/**
- * Size (in bytes) of dispatch function (entrypoint).
- */
-#if defined(USE_X86_ASM)
-# if defined(GLX_USE_TLS)
-#  define DISPATCH_FUNCTION_SIZE  16
-# elif defined(THREADS)
-#  define DISPATCH_FUNCTION_SIZE  32
-# else
-#  define DISPATCH_FUNCTION_SIZE  16
-# endif
-#endif
-
-#if defined(USE_X64_64_ASM)
-# if defined(GLX_USE_TLS)
-#  define DISPATCH_FUNCTION_SIZE  16
-# endif
-#endif
-
-
-/**
- * Number of extension functions which we can dynamically add at runtime.
- *
- * Number of extension functions is also subject to the size of backing exec
- * mem we allocate. For the common case of dispatch stubs with size 16 bytes,
- * the two limits will be hit simultaneously. For larger dispatch function
- * sizes, MAX_EXTENSION_FUNCS is effectively reduced.
- */
-#define MAX_EXTENSION_FUNCS 256
-
-
-#endif
diff --git a/src/mesa/glapi/glapidispatch.h b/src/mesa/glapi/glapidispatch.h
deleted file mode 100644 (file)
index f66876f..0000000
+++ /dev/null
@@ -1,4161 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */
-
-/*
- * (C) Copyright IBM Corporation 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.
- */
-
-#if !defined( _GLAPI_DISPATCH_H_ )
-#  define _GLAPI_DISPATCH_H_
-
-
-/* this file should not be included directly in mesa */
-
-/**
- * \file glapidispatch.h
- * Macros for handling GL dispatch tables.
- *
- * For each known GL function, there are 3 macros in this file.  The first
- * macro is named CALL_FuncName and is used to call that GL function using
- * the specified dispatch table.  The other 2 macros, called GET_FuncName
- * can SET_FuncName, are used to get and set the dispatch pointer for the
- * named function in the specified dispatch table.
- */
-
-#define CALL_by_offset(disp, cast, offset, parameters) \
-    (*(cast (GET_by_offset(disp, offset)))) parameters
-#define GET_by_offset(disp, offset) \
-    (offset >= 0) ? (((_glapi_proc *)(disp))[offset]) : NULL
-#define SET_by_offset(disp, offset, fn) \
-    do { \
-        if ( (offset) < 0 ) { \
-            /* fprintf( stderr, "[%s:%u] SET_by_offset(%p, %d, %s)!\n", */ \
-            /*         __func__, __LINE__, disp, offset, # fn); */ \
-            /* abort(); */ \
-        } \
-        else { \
-            ( (_glapi_proc *) (disp) )[offset] = (_glapi_proc) fn; \
-        } \
-    } while(0)
-
-#define CALL_NewList(disp, parameters) (*((disp)->NewList)) parameters
-#define GET_NewList(disp) ((disp)->NewList)
-#define SET_NewList(disp, fn) ((disp)->NewList = fn)
-#define CALL_EndList(disp, parameters) (*((disp)->EndList)) parameters
-#define GET_EndList(disp) ((disp)->EndList)
-#define SET_EndList(disp, fn) ((disp)->EndList = fn)
-#define CALL_CallList(disp, parameters) (*((disp)->CallList)) parameters
-#define GET_CallList(disp) ((disp)->CallList)
-#define SET_CallList(disp, fn) ((disp)->CallList = fn)
-#define CALL_CallLists(disp, parameters) (*((disp)->CallLists)) parameters
-#define GET_CallLists(disp) ((disp)->CallLists)
-#define SET_CallLists(disp, fn) ((disp)->CallLists = fn)
-#define CALL_DeleteLists(disp, parameters) (*((disp)->DeleteLists)) parameters
-#define GET_DeleteLists(disp) ((disp)->DeleteLists)
-#define SET_DeleteLists(disp, fn) ((disp)->DeleteLists = fn)
-#define CALL_GenLists(disp, parameters) (*((disp)->GenLists)) parameters
-#define GET_GenLists(disp) ((disp)->GenLists)
-#define SET_GenLists(disp, fn) ((disp)->GenLists = fn)
-#define CALL_ListBase(disp, parameters) (*((disp)->ListBase)) parameters
-#define GET_ListBase(disp) ((disp)->ListBase)
-#define SET_ListBase(disp, fn) ((disp)->ListBase = fn)
-#define CALL_Begin(disp, parameters) (*((disp)->Begin)) parameters
-#define GET_Begin(disp) ((disp)->Begin)
-#define SET_Begin(disp, fn) ((disp)->Begin = fn)
-#define CALL_Bitmap(disp, parameters) (*((disp)->Bitmap)) parameters
-#define GET_Bitmap(disp) ((disp)->Bitmap)
-#define SET_Bitmap(disp, fn) ((disp)->Bitmap = fn)
-#define CALL_Color3b(disp, parameters) (*((disp)->Color3b)) parameters
-#define GET_Color3b(disp) ((disp)->Color3b)
-#define SET_Color3b(disp, fn) ((disp)->Color3b = fn)
-#define CALL_Color3bv(disp, parameters) (*((disp)->Color3bv)) parameters
-#define GET_Color3bv(disp) ((disp)->Color3bv)
-#define SET_Color3bv(disp, fn) ((disp)->Color3bv = fn)
-#define CALL_Color3d(disp, parameters) (*((disp)->Color3d)) parameters
-#define GET_Color3d(disp) ((disp)->Color3d)
-#define SET_Color3d(disp, fn) ((disp)->Color3d = fn)
-#define CALL_Color3dv(disp, parameters) (*((disp)->Color3dv)) parameters
-#define GET_Color3dv(disp) ((disp)->Color3dv)
-#define SET_Color3dv(disp, fn) ((disp)->Color3dv = fn)
-#define CALL_Color3f(disp, parameters) (*((disp)->Color3f)) parameters
-#define GET_Color3f(disp) ((disp)->Color3f)
-#define SET_Color3f(disp, fn) ((disp)->Color3f = fn)
-#define CALL_Color3fv(disp, parameters) (*((disp)->Color3fv)) parameters
-#define GET_Color3fv(disp) ((disp)->Color3fv)
-#define SET_Color3fv(disp, fn) ((disp)->Color3fv = fn)
-#define CALL_Color3i(disp, parameters) (*((disp)->Color3i)) parameters
-#define GET_Color3i(disp) ((disp)->Color3i)
-#define SET_Color3i(disp, fn) ((disp)->Color3i = fn)
-#define CALL_Color3iv(disp, parameters) (*((disp)->Color3iv)) parameters
-#define GET_Color3iv(disp) ((disp)->Color3iv)
-#define SET_Color3iv(disp, fn) ((disp)->Color3iv = fn)
-#define CALL_Color3s(disp, parameters) (*((disp)->Color3s)) parameters
-#define GET_Color3s(disp) ((disp)->Color3s)
-#define SET_Color3s(disp, fn) ((disp)->Color3s = fn)
-#define CALL_Color3sv(disp, parameters) (*((disp)->Color3sv)) parameters
-#define GET_Color3sv(disp) ((disp)->Color3sv)
-#define SET_Color3sv(disp, fn) ((disp)->Color3sv = fn)
-#define CALL_Color3ub(disp, parameters) (*((disp)->Color3ub)) parameters
-#define GET_Color3ub(disp) ((disp)->Color3ub)
-#define SET_Color3ub(disp, fn) ((disp)->Color3ub = fn)
-#define CALL_Color3ubv(disp, parameters) (*((disp)->Color3ubv)) parameters
-#define GET_Color3ubv(disp) ((disp)->Color3ubv)
-#define SET_Color3ubv(disp, fn) ((disp)->Color3ubv = fn)
-#define CALL_Color3ui(disp, parameters) (*((disp)->Color3ui)) parameters
-#define GET_Color3ui(disp) ((disp)->Color3ui)
-#define SET_Color3ui(disp, fn) ((disp)->Color3ui = fn)
-#define CALL_Color3uiv(disp, parameters) (*((disp)->Color3uiv)) parameters
-#define GET_Color3uiv(disp) ((disp)->Color3uiv)
-#define SET_Color3uiv(disp, fn) ((disp)->Color3uiv = fn)
-#define CALL_Color3us(disp, parameters) (*((disp)->Color3us)) parameters
-#define GET_Color3us(disp) ((disp)->Color3us)
-#define SET_Color3us(disp, fn) ((disp)->Color3us = fn)
-#define CALL_Color3usv(disp, parameters) (*((disp)->Color3usv)) parameters
-#define GET_Color3usv(disp) ((disp)->Color3usv)
-#define SET_Color3usv(disp, fn) ((disp)->Color3usv = fn)
-#define CALL_Color4b(disp, parameters) (*((disp)->Color4b)) parameters
-#define GET_Color4b(disp) ((disp)->Color4b)
-#define SET_Color4b(disp, fn) ((disp)->Color4b = fn)
-#define CALL_Color4bv(disp, parameters) (*((disp)->Color4bv)) parameters
-#define GET_Color4bv(disp) ((disp)->Color4bv)
-#define SET_Color4bv(disp, fn) ((disp)->Color4bv = fn)
-#define CALL_Color4d(disp, parameters) (*((disp)->Color4d)) parameters
-#define GET_Color4d(disp) ((disp)->Color4d)
-#define SET_Color4d(disp, fn) ((disp)->Color4d = fn)
-#define CALL_Color4dv(disp, parameters) (*((disp)->Color4dv)) parameters
-#define GET_Color4dv(disp) ((disp)->Color4dv)
-#define SET_Color4dv(disp, fn) ((disp)->Color4dv = fn)
-#define CALL_Color4f(disp, parameters) (*((disp)->Color4f)) parameters
-#define GET_Color4f(disp) ((disp)->Color4f)
-#define SET_Color4f(disp, fn) ((disp)->Color4f = fn)
-#define CALL_Color4fv(disp, parameters) (*((disp)->Color4fv)) parameters
-#define GET_Color4fv(disp) ((disp)->Color4fv)
-#define SET_Color4fv(disp, fn) ((disp)->Color4fv = fn)
-#define CALL_Color4i(disp, parameters) (*((disp)->Color4i)) parameters
-#define GET_Color4i(disp) ((disp)->Color4i)
-#define SET_Color4i(disp, fn) ((disp)->Color4i = fn)
-#define CALL_Color4iv(disp, parameters) (*((disp)->Color4iv)) parameters
-#define GET_Color4iv(disp) ((disp)->Color4iv)
-#define SET_Color4iv(disp, fn) ((disp)->Color4iv = fn)
-#define CALL_Color4s(disp, parameters) (*((disp)->Color4s)) parameters
-#define GET_Color4s(disp) ((disp)->Color4s)
-#define SET_Color4s(disp, fn) ((disp)->Color4s = fn)
-#define CALL_Color4sv(disp, parameters) (*((disp)->Color4sv)) parameters
-#define GET_Color4sv(disp) ((disp)->Color4sv)
-#define SET_Color4sv(disp, fn) ((disp)->Color4sv = fn)
-#define CALL_Color4ub(disp, parameters) (*((disp)->Color4ub)) parameters
-#define GET_Color4ub(disp) ((disp)->Color4ub)
-#define SET_Color4ub(disp, fn) ((disp)->Color4ub = fn)
-#define CALL_Color4ubv(disp, parameters) (*((disp)->Color4ubv)) parameters
-#define GET_Color4ubv(disp) ((disp)->Color4ubv)
-#define SET_Color4ubv(disp, fn) ((disp)->Color4ubv = fn)
-#define CALL_Color4ui(disp, parameters) (*((disp)->Color4ui)) parameters
-#define GET_Color4ui(disp) ((disp)->Color4ui)
-#define SET_Color4ui(disp, fn) ((disp)->Color4ui = fn)
-#define CALL_Color4uiv(disp, parameters) (*((disp)->Color4uiv)) parameters
-#define GET_Color4uiv(disp) ((disp)->Color4uiv)
-#define SET_Color4uiv(disp, fn) ((disp)->Color4uiv = fn)
-#define CALL_Color4us(disp, parameters) (*((disp)->Color4us)) parameters
-#define GET_Color4us(disp) ((disp)->Color4us)
-#define SET_Color4us(disp, fn) ((disp)->Color4us = fn)
-#define CALL_Color4usv(disp, parameters) (*((disp)->Color4usv)) parameters
-#define GET_Color4usv(disp) ((disp)->Color4usv)
-#define SET_Color4usv(disp, fn) ((disp)->Color4usv = fn)
-#define CALL_EdgeFlag(disp, parameters) (*((disp)->EdgeFlag)) parameters
-#define GET_EdgeFlag(disp) ((disp)->EdgeFlag)
-#define SET_EdgeFlag(disp, fn) ((disp)->EdgeFlag = fn)
-#define CALL_EdgeFlagv(disp, parameters) (*((disp)->EdgeFlagv)) parameters
-#define GET_EdgeFlagv(disp) ((disp)->EdgeFlagv)
-#define SET_EdgeFlagv(disp, fn) ((disp)->EdgeFlagv = fn)
-#define CALL_End(disp, parameters) (*((disp)->End)) parameters
-#define GET_End(disp) ((disp)->End)
-#define SET_End(disp, fn) ((disp)->End = fn)
-#define CALL_Indexd(disp, parameters) (*((disp)->Indexd)) parameters
-#define GET_Indexd(disp) ((disp)->Indexd)
-#define SET_Indexd(disp, fn) ((disp)->Indexd = fn)
-#define CALL_Indexdv(disp, parameters) (*((disp)->Indexdv)) parameters
-#define GET_Indexdv(disp) ((disp)->Indexdv)
-#define SET_Indexdv(disp, fn) ((disp)->Indexdv = fn)
-#define CALL_Indexf(disp, parameters) (*((disp)->Indexf)) parameters
-#define GET_Indexf(disp) ((disp)->Indexf)
-#define SET_Indexf(disp, fn) ((disp)->Indexf = fn)
-#define CALL_Indexfv(disp, parameters) (*((disp)->Indexfv)) parameters
-#define GET_Indexfv(disp) ((disp)->Indexfv)
-#define SET_Indexfv(disp, fn) ((disp)->Indexfv = fn)
-#define CALL_Indexi(disp, parameters) (*((disp)->Indexi)) parameters
-#define GET_Indexi(disp) ((disp)->Indexi)
-#define SET_Indexi(disp, fn) ((disp)->Indexi = fn)
-#define CALL_Indexiv(disp, parameters) (*((disp)->Indexiv)) parameters
-#define GET_Indexiv(disp) ((disp)->Indexiv)
-#define SET_Indexiv(disp, fn) ((disp)->Indexiv = fn)
-#define CALL_Indexs(disp, parameters) (*((disp)->Indexs)) parameters
-#define GET_Indexs(disp) ((disp)->Indexs)
-#define SET_Indexs(disp, fn) ((disp)->Indexs = fn)
-#define CALL_Indexsv(disp, parameters) (*((disp)->Indexsv)) parameters
-#define GET_Indexsv(disp) ((disp)->Indexsv)
-#define SET_Indexsv(disp, fn) ((disp)->Indexsv = fn)
-#define CALL_Normal3b(disp, parameters) (*((disp)->Normal3b)) parameters
-#define GET_Normal3b(disp) ((disp)->Normal3b)
-#define SET_Normal3b(disp, fn) ((disp)->Normal3b = fn)
-#define CALL_Normal3bv(disp, parameters) (*((disp)->Normal3bv)) parameters
-#define GET_Normal3bv(disp) ((disp)->Normal3bv)
-#define SET_Normal3bv(disp, fn) ((disp)->Normal3bv = fn)
-#define CALL_Normal3d(disp, parameters) (*((disp)->Normal3d)) parameters
-#define GET_Normal3d(disp) ((disp)->Normal3d)
-#define SET_Normal3d(disp, fn) ((disp)->Normal3d = fn)
-#define CALL_Normal3dv(disp, parameters) (*((disp)->Normal3dv)) parameters
-#define GET_Normal3dv(disp) ((disp)->Normal3dv)
-#define SET_Normal3dv(disp, fn) ((disp)->Normal3dv = fn)
-#define CALL_Normal3f(disp, parameters) (*((disp)->Normal3f)) parameters
-#define GET_Normal3f(disp) ((disp)->Normal3f)
-#define SET_Normal3f(disp, fn) ((disp)->Normal3f = fn)
-#define CALL_Normal3fv(disp, parameters) (*((disp)->Normal3fv)) parameters
-#define GET_Normal3fv(disp) ((disp)->Normal3fv)
-#define SET_Normal3fv(disp, fn) ((disp)->Normal3fv = fn)
-#define CALL_Normal3i(disp, parameters) (*((disp)->Normal3i)) parameters
-#define GET_Normal3i(disp) ((disp)->Normal3i)
-#define SET_Normal3i(disp, fn) ((disp)->Normal3i = fn)
-#define CALL_Normal3iv(disp, parameters) (*((disp)->Normal3iv)) parameters
-#define GET_Normal3iv(disp) ((disp)->Normal3iv)
-#define SET_Normal3iv(disp, fn) ((disp)->Normal3iv = fn)
-#define CALL_Normal3s(disp, parameters) (*((disp)->Normal3s)) parameters
-#define GET_Normal3s(disp) ((disp)->Normal3s)
-#define SET_Normal3s(disp, fn) ((disp)->Normal3s = fn)
-#define CALL_Normal3sv(disp, parameters) (*((disp)->Normal3sv)) parameters
-#define GET_Normal3sv(disp) ((disp)->Normal3sv)
-#define SET_Normal3sv(disp, fn) ((disp)->Normal3sv = fn)
-#define CALL_RasterPos2d(disp, parameters) (*((disp)->RasterPos2d)) parameters
-#define GET_RasterPos2d(disp) ((disp)->RasterPos2d)
-#define SET_RasterPos2d(disp, fn) ((disp)->RasterPos2d = fn)
-#define CALL_RasterPos2dv(disp, parameters) (*((disp)->RasterPos2dv)) parameters
-#define GET_RasterPos2dv(disp) ((disp)->RasterPos2dv)
-#define SET_RasterPos2dv(disp, fn) ((disp)->RasterPos2dv = fn)
-#define CALL_RasterPos2f(disp, parameters) (*((disp)->RasterPos2f)) parameters
-#define GET_RasterPos2f(disp) ((disp)->RasterPos2f)
-#define SET_RasterPos2f(disp, fn) ((disp)->RasterPos2f = fn)
-#define CALL_RasterPos2fv(disp, parameters) (*((disp)->RasterPos2fv)) parameters
-#define GET_RasterPos2fv(disp) ((disp)->RasterPos2fv)
-#define SET_RasterPos2fv(disp, fn) ((disp)->RasterPos2fv = fn)
-#define CALL_RasterPos2i(disp, parameters) (*((disp)->RasterPos2i)) parameters
-#define GET_RasterPos2i(disp) ((disp)->RasterPos2i)
-#define SET_RasterPos2i(disp, fn) ((disp)->RasterPos2i = fn)
-#define CALL_RasterPos2iv(disp, parameters) (*((disp)->RasterPos2iv)) parameters
-#define GET_RasterPos2iv(disp) ((disp)->RasterPos2iv)
-#define SET_RasterPos2iv(disp, fn) ((disp)->RasterPos2iv = fn)
-#define CALL_RasterPos2s(disp, parameters) (*((disp)->RasterPos2s)) parameters
-#define GET_RasterPos2s(disp) ((disp)->RasterPos2s)
-#define SET_RasterPos2s(disp, fn) ((disp)->RasterPos2s = fn)
-#define CALL_RasterPos2sv(disp, parameters) (*((disp)->RasterPos2sv)) parameters
-#define GET_RasterPos2sv(disp) ((disp)->RasterPos2sv)
-#define SET_RasterPos2sv(disp, fn) ((disp)->RasterPos2sv = fn)
-#define CALL_RasterPos3d(disp, parameters) (*((disp)->RasterPos3d)) parameters
-#define GET_RasterPos3d(disp) ((disp)->RasterPos3d)
-#define SET_RasterPos3d(disp, fn) ((disp)->RasterPos3d = fn)
-#define CALL_RasterPos3dv(disp, parameters) (*((disp)->RasterPos3dv)) parameters
-#define GET_RasterPos3dv(disp) ((disp)->RasterPos3dv)
-#define SET_RasterPos3dv(disp, fn) ((disp)->RasterPos3dv = fn)
-#define CALL_RasterPos3f(disp, parameters) (*((disp)->RasterPos3f)) parameters
-#define GET_RasterPos3f(disp) ((disp)->RasterPos3f)
-#define SET_RasterPos3f(disp, fn) ((disp)->RasterPos3f = fn)
-#define CALL_RasterPos3fv(disp, parameters) (*((disp)->RasterPos3fv)) parameters
-#define GET_RasterPos3fv(disp) ((disp)->RasterPos3fv)
-#define SET_RasterPos3fv(disp, fn) ((disp)->RasterPos3fv = fn)
-#define CALL_RasterPos3i(disp, parameters) (*((disp)->RasterPos3i)) parameters
-#define GET_RasterPos3i(disp) ((disp)->RasterPos3i)
-#define SET_RasterPos3i(disp, fn) ((disp)->RasterPos3i = fn)
-#define CALL_RasterPos3iv(disp, parameters) (*((disp)->RasterPos3iv)) parameters
-#define GET_RasterPos3iv(disp) ((disp)->RasterPos3iv)
-#define SET_RasterPos3iv(disp, fn) ((disp)->RasterPos3iv = fn)
-#define CALL_RasterPos3s(disp, parameters) (*((disp)->RasterPos3s)) parameters
-#define GET_RasterPos3s(disp) ((disp)->RasterPos3s)
-#define SET_RasterPos3s(disp, fn) ((disp)->RasterPos3s = fn)
-#define CALL_RasterPos3sv(disp, parameters) (*((disp)->RasterPos3sv)) parameters
-#define GET_RasterPos3sv(disp) ((disp)->RasterPos3sv)
-#define SET_RasterPos3sv(disp, fn) ((disp)->RasterPos3sv = fn)
-#define CALL_RasterPos4d(disp, parameters) (*((disp)->RasterPos4d)) parameters
-#define GET_RasterPos4d(disp) ((disp)->RasterPos4d)
-#define SET_RasterPos4d(disp, fn) ((disp)->RasterPos4d = fn)
-#define CALL_RasterPos4dv(disp, parameters) (*((disp)->RasterPos4dv)) parameters
-#define GET_RasterPos4dv(disp) ((disp)->RasterPos4dv)
-#define SET_RasterPos4dv(disp, fn) ((disp)->RasterPos4dv = fn)
-#define CALL_RasterPos4f(disp, parameters) (*((disp)->RasterPos4f)) parameters
-#define GET_RasterPos4f(disp) ((disp)->RasterPos4f)
-#define SET_RasterPos4f(disp, fn) ((disp)->RasterPos4f = fn)
-#define CALL_RasterPos4fv(disp, parameters) (*((disp)->RasterPos4fv)) parameters
-#define GET_RasterPos4fv(disp) ((disp)->RasterPos4fv)
-#define SET_RasterPos4fv(disp, fn) ((disp)->RasterPos4fv = fn)
-#define CALL_RasterPos4i(disp, parameters) (*((disp)->RasterPos4i)) parameters
-#define GET_RasterPos4i(disp) ((disp)->RasterPos4i)
-#define SET_RasterPos4i(disp, fn) ((disp)->RasterPos4i = fn)
-#define CALL_RasterPos4iv(disp, parameters) (*((disp)->RasterPos4iv)) parameters
-#define GET_RasterPos4iv(disp) ((disp)->RasterPos4iv)
-#define SET_RasterPos4iv(disp, fn) ((disp)->RasterPos4iv = fn)
-#define CALL_RasterPos4s(disp, parameters) (*((disp)->RasterPos4s)) parameters
-#define GET_RasterPos4s(disp) ((disp)->RasterPos4s)
-#define SET_RasterPos4s(disp, fn) ((disp)->RasterPos4s = fn)
-#define CALL_RasterPos4sv(disp, parameters) (*((disp)->RasterPos4sv)) parameters
-#define GET_RasterPos4sv(disp) ((disp)->RasterPos4sv)
-#define SET_RasterPos4sv(disp, fn) ((disp)->RasterPos4sv = fn)
-#define CALL_Rectd(disp, parameters) (*((disp)->Rectd)) parameters
-#define GET_Rectd(disp) ((disp)->Rectd)
-#define SET_Rectd(disp, fn) ((disp)->Rectd = fn)
-#define CALL_Rectdv(disp, parameters) (*((disp)->Rectdv)) parameters
-#define GET_Rectdv(disp) ((disp)->Rectdv)
-#define SET_Rectdv(disp, fn) ((disp)->Rectdv = fn)
-#define CALL_Rectf(disp, parameters) (*((disp)->Rectf)) parameters
-#define GET_Rectf(disp) ((disp)->Rectf)
-#define SET_Rectf(disp, fn) ((disp)->Rectf = fn)
-#define CALL_Rectfv(disp, parameters) (*((disp)->Rectfv)) parameters
-#define GET_Rectfv(disp) ((disp)->Rectfv)
-#define SET_Rectfv(disp, fn) ((disp)->Rectfv = fn)
-#define CALL_Recti(disp, parameters) (*((disp)->Recti)) parameters
-#define GET_Recti(disp) ((disp)->Recti)
-#define SET_Recti(disp, fn) ((disp)->Recti = fn)
-#define CALL_Rectiv(disp, parameters) (*((disp)->Rectiv)) parameters
-#define GET_Rectiv(disp) ((disp)->Rectiv)
-#define SET_Rectiv(disp, fn) ((disp)->Rectiv = fn)
-#define CALL_Rects(disp, parameters) (*((disp)->Rects)) parameters
-#define GET_Rects(disp) ((disp)->Rects)
-#define SET_Rects(disp, fn) ((disp)->Rects = fn)
-#define CALL_Rectsv(disp, parameters) (*((disp)->Rectsv)) parameters
-#define GET_Rectsv(disp) ((disp)->Rectsv)
-#define SET_Rectsv(disp, fn) ((disp)->Rectsv = fn)
-#define CALL_TexCoord1d(disp, parameters) (*((disp)->TexCoord1d)) parameters
-#define GET_TexCoord1d(disp) ((disp)->TexCoord1d)
-#define SET_TexCoord1d(disp, fn) ((disp)->TexCoord1d = fn)
-#define CALL_TexCoord1dv(disp, parameters) (*((disp)->TexCoord1dv)) parameters
-#define GET_TexCoord1dv(disp) ((disp)->TexCoord1dv)
-#define SET_TexCoord1dv(disp, fn) ((disp)->TexCoord1dv = fn)
-#define CALL_TexCoord1f(disp, parameters) (*((disp)->TexCoord1f)) parameters
-#define GET_TexCoord1f(disp) ((disp)->TexCoord1f)
-#define SET_TexCoord1f(disp, fn) ((disp)->TexCoord1f = fn)
-#define CALL_TexCoord1fv(disp, parameters) (*((disp)->TexCoord1fv)) parameters
-#define GET_TexCoord1fv(disp) ((disp)->TexCoord1fv)
-#define SET_TexCoord1fv(disp, fn) ((disp)->TexCoord1fv = fn)
-#define CALL_TexCoord1i(disp, parameters) (*((disp)->TexCoord1i)) parameters
-#define GET_TexCoord1i(disp) ((disp)->TexCoord1i)
-#define SET_TexCoord1i(disp, fn) ((disp)->TexCoord1i = fn)
-#define CALL_TexCoord1iv(disp, parameters) (*((disp)->TexCoord1iv)) parameters
-#define GET_TexCoord1iv(disp) ((disp)->TexCoord1iv)
-#define SET_TexCoord1iv(disp, fn) ((disp)->TexCoord1iv = fn)
-#define CALL_TexCoord1s(disp, parameters) (*((disp)->TexCoord1s)) parameters
-#define GET_TexCoord1s(disp) ((disp)->TexCoord1s)
-#define SET_TexCoord1s(disp, fn) ((disp)->TexCoord1s = fn)
-#define CALL_TexCoord1sv(disp, parameters) (*((disp)->TexCoord1sv)) parameters
-#define GET_TexCoord1sv(disp) ((disp)->TexCoord1sv)
-#define SET_TexCoord1sv(disp, fn) ((disp)->TexCoord1sv = fn)
-#define CALL_TexCoord2d(disp, parameters) (*((disp)->TexCoord2d)) parameters
-#define GET_TexCoord2d(disp) ((disp)->TexCoord2d)
-#define SET_TexCoord2d(disp, fn) ((disp)->TexCoord2d = fn)
-#define CALL_TexCoord2dv(disp, parameters) (*((disp)->TexCoord2dv)) parameters
-#define GET_TexCoord2dv(disp) ((disp)->TexCoord2dv)
-#define SET_TexCoord2dv(disp, fn) ((disp)->TexCoord2dv = fn)
-#define CALL_TexCoord2f(disp, parameters) (*((disp)->TexCoord2f)) parameters
-#define GET_TexCoord2f(disp) ((disp)->TexCoord2f)
-#define SET_TexCoord2f(disp, fn) ((disp)->TexCoord2f = fn)
-#define CALL_TexCoord2fv(disp, parameters) (*((disp)->TexCoord2fv)) parameters
-#define GET_TexCoord2fv(disp) ((disp)->TexCoord2fv)
-#define SET_TexCoord2fv(disp, fn) ((disp)->TexCoord2fv = fn)
-#define CALL_TexCoord2i(disp, parameters) (*((disp)->TexCoord2i)) parameters
-#define GET_TexCoord2i(disp) ((disp)->TexCoord2i)
-#define SET_TexCoord2i(disp, fn) ((disp)->TexCoord2i = fn)
-#define CALL_TexCoord2iv(disp, parameters) (*((disp)->TexCoord2iv)) parameters
-#define GET_TexCoord2iv(disp) ((disp)->TexCoord2iv)
-#define SET_TexCoord2iv(disp, fn) ((disp)->TexCoord2iv = fn)
-#define CALL_TexCoord2s(disp, parameters) (*((disp)->TexCoord2s)) parameters
-#define GET_TexCoord2s(disp) ((disp)->TexCoord2s)
-#define SET_TexCoord2s(disp, fn) ((disp)->TexCoord2s = fn)
-#define CALL_TexCoord2sv(disp, parameters) (*((disp)->TexCoord2sv)) parameters
-#define GET_TexCoord2sv(disp) ((disp)->TexCoord2sv)
-#define SET_TexCoord2sv(disp, fn) ((disp)->TexCoord2sv = fn)
-#define CALL_TexCoord3d(disp, parameters) (*((disp)->TexCoord3d)) parameters
-#define GET_TexCoord3d(disp) ((disp)->TexCoord3d)
-#define SET_TexCoord3d(disp, fn) ((disp)->TexCoord3d = fn)
-#define CALL_TexCoord3dv(disp, parameters) (*((disp)->TexCoord3dv)) parameters
-#define GET_TexCoord3dv(disp) ((disp)->TexCoord3dv)
-#define SET_TexCoord3dv(disp, fn) ((disp)->TexCoord3dv = fn)
-#define CALL_TexCoord3f(disp, parameters) (*((disp)->TexCoord3f)) parameters
-#define GET_TexCoord3f(disp) ((disp)->TexCoord3f)
-#define SET_TexCoord3f(disp, fn) ((disp)->TexCoord3f = fn)
-#define CALL_TexCoord3fv(disp, parameters) (*((disp)->TexCoord3fv)) parameters
-#define GET_TexCoord3fv(disp) ((disp)->TexCoord3fv)
-#define SET_TexCoord3fv(disp, fn) ((disp)->TexCoord3fv = fn)
-#define CALL_TexCoord3i(disp, parameters) (*((disp)->TexCoord3i)) parameters
-#define GET_TexCoord3i(disp) ((disp)->TexCoord3i)
-#define SET_TexCoord3i(disp, fn) ((disp)->TexCoord3i = fn)
-#define CALL_TexCoord3iv(disp, parameters) (*((disp)->TexCoord3iv)) parameters
-#define GET_TexCoord3iv(disp) ((disp)->TexCoord3iv)
-#define SET_TexCoord3iv(disp, fn) ((disp)->TexCoord3iv = fn)
-#define CALL_TexCoord3s(disp, parameters) (*((disp)->TexCoord3s)) parameters
-#define GET_TexCoord3s(disp) ((disp)->TexCoord3s)
-#define SET_TexCoord3s(disp, fn) ((disp)->TexCoord3s = fn)
-#define CALL_TexCoord3sv(disp, parameters) (*((disp)->TexCoord3sv)) parameters
-#define GET_TexCoord3sv(disp) ((disp)->TexCoord3sv)
-#define SET_TexCoord3sv(disp, fn) ((disp)->TexCoord3sv = fn)
-#define CALL_TexCoord4d(disp, parameters) (*((disp)->TexCoord4d)) parameters
-#define GET_TexCoord4d(disp) ((disp)->TexCoord4d)
-#define SET_TexCoord4d(disp, fn) ((disp)->TexCoord4d = fn)
-#define CALL_TexCoord4dv(disp, parameters) (*((disp)->TexCoord4dv)) parameters
-#define GET_TexCoord4dv(disp) ((disp)->TexCoord4dv)
-#define SET_TexCoord4dv(disp, fn) ((disp)->TexCoord4dv = fn)
-#define CALL_TexCoord4f(disp, parameters) (*((disp)->TexCoord4f)) parameters
-#define GET_TexCoord4f(disp) ((disp)->TexCoord4f)
-#define SET_TexCoord4f(disp, fn) ((disp)->TexCoord4f = fn)
-#define CALL_TexCoord4fv(disp, parameters) (*((disp)->TexCoord4fv)) parameters
-#define GET_TexCoord4fv(disp) ((disp)->TexCoord4fv)
-#define SET_TexCoord4fv(disp, fn) ((disp)->TexCoord4fv = fn)
-#define CALL_TexCoord4i(disp, parameters) (*((disp)->TexCoord4i)) parameters
-#define GET_TexCoord4i(disp) ((disp)->TexCoord4i)
-#define SET_TexCoord4i(disp, fn) ((disp)->TexCoord4i = fn)
-#define CALL_TexCoord4iv(disp, parameters) (*((disp)->TexCoord4iv)) parameters
-#define GET_TexCoord4iv(disp) ((disp)->TexCoord4iv)
-#define SET_TexCoord4iv(disp, fn) ((disp)->TexCoord4iv = fn)
-#define CALL_TexCoord4s(disp, parameters) (*((disp)->TexCoord4s)) parameters
-#define GET_TexCoord4s(disp) ((disp)->TexCoord4s)
-#define SET_TexCoord4s(disp, fn) ((disp)->TexCoord4s = fn)
-#define CALL_TexCoord4sv(disp, parameters) (*((disp)->TexCoord4sv)) parameters
-#define GET_TexCoord4sv(disp) ((disp)->TexCoord4sv)
-#define SET_TexCoord4sv(disp, fn) ((disp)->TexCoord4sv = fn)
-#define CALL_Vertex2d(disp, parameters) (*((disp)->Vertex2d)) parameters
-#define GET_Vertex2d(disp) ((disp)->Vertex2d)
-#define SET_Vertex2d(disp, fn) ((disp)->Vertex2d = fn)
-#define CALL_Vertex2dv(disp, parameters) (*((disp)->Vertex2dv)) parameters
-#define GET_Vertex2dv(disp) ((disp)->Vertex2dv)
-#define SET_Vertex2dv(disp, fn) ((disp)->Vertex2dv = fn)
-#define CALL_Vertex2f(disp, parameters) (*((disp)->Vertex2f)) parameters
-#define GET_Vertex2f(disp) ((disp)->Vertex2f)
-#define SET_Vertex2f(disp, fn) ((disp)->Vertex2f = fn)
-#define CALL_Vertex2fv(disp, parameters) (*((disp)->Vertex2fv)) parameters
-#define GET_Vertex2fv(disp) ((disp)->Vertex2fv)
-#define SET_Vertex2fv(disp, fn) ((disp)->Vertex2fv = fn)
-#define CALL_Vertex2i(disp, parameters) (*((disp)->Vertex2i)) parameters
-#define GET_Vertex2i(disp) ((disp)->Vertex2i)
-#define SET_Vertex2i(disp, fn) ((disp)->Vertex2i = fn)
-#define CALL_Vertex2iv(disp, parameters) (*((disp)->Vertex2iv)) parameters
-#define GET_Vertex2iv(disp) ((disp)->Vertex2iv)
-#define SET_Vertex2iv(disp, fn) ((disp)->Vertex2iv = fn)
-#define CALL_Vertex2s(disp, parameters) (*((disp)->Vertex2s)) parameters
-#define GET_Vertex2s(disp) ((disp)->Vertex2s)
-#define SET_Vertex2s(disp, fn) ((disp)->Vertex2s = fn)
-#define CALL_Vertex2sv(disp, parameters) (*((disp)->Vertex2sv)) parameters
-#define GET_Vertex2sv(disp) ((disp)->Vertex2sv)
-#define SET_Vertex2sv(disp, fn) ((disp)->Vertex2sv = fn)
-#define CALL_Vertex3d(disp, parameters) (*((disp)->Vertex3d)) parameters
-#define GET_Vertex3d(disp) ((disp)->Vertex3d)
-#define SET_Vertex3d(disp, fn) ((disp)->Vertex3d = fn)
-#define CALL_Vertex3dv(disp, parameters) (*((disp)->Vertex3dv)) parameters
-#define GET_Vertex3dv(disp) ((disp)->Vertex3dv)
-#define SET_Vertex3dv(disp, fn) ((disp)->Vertex3dv = fn)
-#define CALL_Vertex3f(disp, parameters) (*((disp)->Vertex3f)) parameters
-#define GET_Vertex3f(disp) ((disp)->Vertex3f)
-#define SET_Vertex3f(disp, fn) ((disp)->Vertex3f = fn)
-#define CALL_Vertex3fv(disp, parameters) (*((disp)->Vertex3fv)) parameters
-#define GET_Vertex3fv(disp) ((disp)->Vertex3fv)
-#define SET_Vertex3fv(disp, fn) ((disp)->Vertex3fv = fn)
-#define CALL_Vertex3i(disp, parameters) (*((disp)->Vertex3i)) parameters
-#define GET_Vertex3i(disp) ((disp)->Vertex3i)
-#define SET_Vertex3i(disp, fn) ((disp)->Vertex3i = fn)
-#define CALL_Vertex3iv(disp, parameters) (*((disp)->Vertex3iv)) parameters
-#define GET_Vertex3iv(disp) ((disp)->Vertex3iv)
-#define SET_Vertex3iv(disp, fn) ((disp)->Vertex3iv = fn)
-#define CALL_Vertex3s(disp, parameters) (*((disp)->Vertex3s)) parameters
-#define GET_Vertex3s(disp) ((disp)->Vertex3s)
-#define SET_Vertex3s(disp, fn) ((disp)->Vertex3s = fn)
-#define CALL_Vertex3sv(disp, parameters) (*((disp)->Vertex3sv)) parameters
-#define GET_Vertex3sv(disp) ((disp)->Vertex3sv)
-#define SET_Vertex3sv(disp, fn) ((disp)->Vertex3sv = fn)
-#define CALL_Vertex4d(disp, parameters) (*((disp)->Vertex4d)) parameters
-#define GET_Vertex4d(disp) ((disp)->Vertex4d)
-#define SET_Vertex4d(disp, fn) ((disp)->Vertex4d = fn)
-#define CALL_Vertex4dv(disp, parameters) (*((disp)->Vertex4dv)) parameters
-#define GET_Vertex4dv(disp) ((disp)->Vertex4dv)
-#define SET_Vertex4dv(disp, fn) ((disp)->Vertex4dv = fn)
-#define CALL_Vertex4f(disp, parameters) (*((disp)->Vertex4f)) parameters
-#define GET_Vertex4f(disp) ((disp)->Vertex4f)
-#define SET_Vertex4f(disp, fn) ((disp)->Vertex4f = fn)
-#define CALL_Vertex4fv(disp, parameters) (*((disp)->Vertex4fv)) parameters
-#define GET_Vertex4fv(disp) ((disp)->Vertex4fv)
-#define SET_Vertex4fv(disp, fn) ((disp)->Vertex4fv = fn)
-#define CALL_Vertex4i(disp, parameters) (*((disp)->Vertex4i)) parameters
-#define GET_Vertex4i(disp) ((disp)->Vertex4i)
-#define SET_Vertex4i(disp, fn) ((disp)->Vertex4i = fn)
-#define CALL_Vertex4iv(disp, parameters) (*((disp)->Vertex4iv)) parameters
-#define GET_Vertex4iv(disp) ((disp)->Vertex4iv)
-#define SET_Vertex4iv(disp, fn) ((disp)->Vertex4iv = fn)
-#define CALL_Vertex4s(disp, parameters) (*((disp)->Vertex4s)) parameters
-#define GET_Vertex4s(disp) ((disp)->Vertex4s)
-#define SET_Vertex4s(disp, fn) ((disp)->Vertex4s = fn)
-#define CALL_Vertex4sv(disp, parameters) (*((disp)->Vertex4sv)) parameters
-#define GET_Vertex4sv(disp) ((disp)->Vertex4sv)
-#define SET_Vertex4sv(disp, fn) ((disp)->Vertex4sv = fn)
-#define CALL_ClipPlane(disp, parameters) (*((disp)->ClipPlane)) parameters
-#define GET_ClipPlane(disp) ((disp)->ClipPlane)
-#define SET_ClipPlane(disp, fn) ((disp)->ClipPlane = fn)
-#define CALL_ColorMaterial(disp, parameters) (*((disp)->ColorMaterial)) parameters
-#define GET_ColorMaterial(disp) ((disp)->ColorMaterial)
-#define SET_ColorMaterial(disp, fn) ((disp)->ColorMaterial = fn)
-#define CALL_CullFace(disp, parameters) (*((disp)->CullFace)) parameters
-#define GET_CullFace(disp) ((disp)->CullFace)
-#define SET_CullFace(disp, fn) ((disp)->CullFace = fn)
-#define CALL_Fogf(disp, parameters) (*((disp)->Fogf)) parameters
-#define GET_Fogf(disp) ((disp)->Fogf)
-#define SET_Fogf(disp, fn) ((disp)->Fogf = fn)
-#define CALL_Fogfv(disp, parameters) (*((disp)->Fogfv)) parameters
-#define GET_Fogfv(disp) ((disp)->Fogfv)
-#define SET_Fogfv(disp, fn) ((disp)->Fogfv = fn)
-#define CALL_Fogi(disp, parameters) (*((disp)->Fogi)) parameters
-#define GET_Fogi(disp) ((disp)->Fogi)
-#define SET_Fogi(disp, fn) ((disp)->Fogi = fn)
-#define CALL_Fogiv(disp, parameters) (*((disp)->Fogiv)) parameters
-#define GET_Fogiv(disp) ((disp)->Fogiv)
-#define SET_Fogiv(disp, fn) ((disp)->Fogiv = fn)
-#define CALL_FrontFace(disp, parameters) (*((disp)->FrontFace)) parameters
-#define GET_FrontFace(disp) ((disp)->FrontFace)
-#define SET_FrontFace(disp, fn) ((disp)->FrontFace = fn)
-#define CALL_Hint(disp, parameters) (*((disp)->Hint)) parameters
-#define GET_Hint(disp) ((disp)->Hint)
-#define SET_Hint(disp, fn) ((disp)->Hint = fn)
-#define CALL_Lightf(disp, parameters) (*((disp)->Lightf)) parameters
-#define GET_Lightf(disp) ((disp)->Lightf)
-#define SET_Lightf(disp, fn) ((disp)->Lightf = fn)
-#define CALL_Lightfv(disp, parameters) (*((disp)->Lightfv)) parameters
-#define GET_Lightfv(disp) ((disp)->Lightfv)
-#define SET_Lightfv(disp, fn) ((disp)->Lightfv = fn)
-#define CALL_Lighti(disp, parameters) (*((disp)->Lighti)) parameters
-#define GET_Lighti(disp) ((disp)->Lighti)
-#define SET_Lighti(disp, fn) ((disp)->Lighti = fn)
-#define CALL_Lightiv(disp, parameters) (*((disp)->Lightiv)) parameters
-#define GET_Lightiv(disp) ((disp)->Lightiv)
-#define SET_Lightiv(disp, fn) ((disp)->Lightiv = fn)
-#define CALL_LightModelf(disp, parameters) (*((disp)->LightModelf)) parameters
-#define GET_LightModelf(disp) ((disp)->LightModelf)
-#define SET_LightModelf(disp, fn) ((disp)->LightModelf = fn)
-#define CALL_LightModelfv(disp, parameters) (*((disp)->LightModelfv)) parameters
-#define GET_LightModelfv(disp) ((disp)->LightModelfv)
-#define SET_LightModelfv(disp, fn) ((disp)->LightModelfv = fn)
-#define CALL_LightModeli(disp, parameters) (*((disp)->LightModeli)) parameters
-#define GET_LightModeli(disp) ((disp)->LightModeli)
-#define SET_LightModeli(disp, fn) ((disp)->LightModeli = fn)
-#define CALL_LightModeliv(disp, parameters) (*((disp)->LightModeliv)) parameters
-#define GET_LightModeliv(disp) ((disp)->LightModeliv)
-#define SET_LightModeliv(disp, fn) ((disp)->LightModeliv = fn)
-#define CALL_LineStipple(disp, parameters) (*((disp)->LineStipple)) parameters
-#define GET_LineStipple(disp) ((disp)->LineStipple)
-#define SET_LineStipple(disp, fn) ((disp)->LineStipple = fn)
-#define CALL_LineWidth(disp, parameters) (*((disp)->LineWidth)) parameters
-#define GET_LineWidth(disp) ((disp)->LineWidth)
-#define SET_LineWidth(disp, fn) ((disp)->LineWidth = fn)
-#define CALL_Materialf(disp, parameters) (*((disp)->Materialf)) parameters
-#define GET_Materialf(disp) ((disp)->Materialf)
-#define SET_Materialf(disp, fn) ((disp)->Materialf = fn)
-#define CALL_Materialfv(disp, parameters) (*((disp)->Materialfv)) parameters
-#define GET_Materialfv(disp) ((disp)->Materialfv)
-#define SET_Materialfv(disp, fn) ((disp)->Materialfv = fn)
-#define CALL_Materiali(disp, parameters) (*((disp)->Materiali)) parameters
-#define GET_Materiali(disp) ((disp)->Materiali)
-#define SET_Materiali(disp, fn) ((disp)->Materiali = fn)
-#define CALL_Materialiv(disp, parameters) (*((disp)->Materialiv)) parameters
-#define GET_Materialiv(disp) ((disp)->Materialiv)
-#define SET_Materialiv(disp, fn) ((disp)->Materialiv = fn)
-#define CALL_PointSize(disp, parameters) (*((disp)->PointSize)) parameters
-#define GET_PointSize(disp) ((disp)->PointSize)
-#define SET_PointSize(disp, fn) ((disp)->PointSize = fn)
-#define CALL_PolygonMode(disp, parameters) (*((disp)->PolygonMode)) parameters
-#define GET_PolygonMode(disp) ((disp)->PolygonMode)
-#define SET_PolygonMode(disp, fn) ((disp)->PolygonMode = fn)
-#define CALL_PolygonStipple(disp, parameters) (*((disp)->PolygonStipple)) parameters
-#define GET_PolygonStipple(disp) ((disp)->PolygonStipple)
-#define SET_PolygonStipple(disp, fn) ((disp)->PolygonStipple = fn)
-#define CALL_Scissor(disp, parameters) (*((disp)->Scissor)) parameters
-#define GET_Scissor(disp) ((disp)->Scissor)
-#define SET_Scissor(disp, fn) ((disp)->Scissor = fn)
-#define CALL_ShadeModel(disp, parameters) (*((disp)->ShadeModel)) parameters
-#define GET_ShadeModel(disp) ((disp)->ShadeModel)
-#define SET_ShadeModel(disp, fn) ((disp)->ShadeModel = fn)
-#define CALL_TexParameterf(disp, parameters) (*((disp)->TexParameterf)) parameters
-#define GET_TexParameterf(disp) ((disp)->TexParameterf)
-#define SET_TexParameterf(disp, fn) ((disp)->TexParameterf = fn)
-#define CALL_TexParameterfv(disp, parameters) (*((disp)->TexParameterfv)) parameters
-#define GET_TexParameterfv(disp) ((disp)->TexParameterfv)
-#define SET_TexParameterfv(disp, fn) ((disp)->TexParameterfv = fn)
-#define CALL_TexParameteri(disp, parameters) (*((disp)->TexParameteri)) parameters
-#define GET_TexParameteri(disp) ((disp)->TexParameteri)
-#define SET_TexParameteri(disp, fn) ((disp)->TexParameteri = fn)
-#define CALL_TexParameteriv(disp, parameters) (*((disp)->TexParameteriv)) parameters
-#define GET_TexParameteriv(disp) ((disp)->TexParameteriv)
-#define SET_TexParameteriv(disp, fn) ((disp)->TexParameteriv = fn)
-#define CALL_TexImage1D(disp, parameters) (*((disp)->TexImage1D)) parameters
-#define GET_TexImage1D(disp) ((disp)->TexImage1D)
-#define SET_TexImage1D(disp, fn) ((disp)->TexImage1D = fn)
-#define CALL_TexImage2D(disp, parameters) (*((disp)->TexImage2D)) parameters
-#define GET_TexImage2D(disp) ((disp)->TexImage2D)
-#define SET_TexImage2D(disp, fn) ((disp)->TexImage2D = fn)
-#define CALL_TexEnvf(disp, parameters) (*((disp)->TexEnvf)) parameters
-#define GET_TexEnvf(disp) ((disp)->TexEnvf)
-#define SET_TexEnvf(disp, fn) ((disp)->TexEnvf = fn)
-#define CALL_TexEnvfv(disp, parameters) (*((disp)->TexEnvfv)) parameters
-#define GET_TexEnvfv(disp) ((disp)->TexEnvfv)
-#define SET_TexEnvfv(disp, fn) ((disp)->TexEnvfv = fn)
-#define CALL_TexEnvi(disp, parameters) (*((disp)->TexEnvi)) parameters
-#define GET_TexEnvi(disp) ((disp)->TexEnvi)
-#define SET_TexEnvi(disp, fn) ((disp)->TexEnvi = fn)
-#define CALL_TexEnviv(disp, parameters) (*((disp)->TexEnviv)) parameters
-#define GET_TexEnviv(disp) ((disp)->TexEnviv)
-#define SET_TexEnviv(disp, fn) ((disp)->TexEnviv = fn)
-#define CALL_TexGend(disp, parameters) (*((disp)->TexGend)) parameters
-#define GET_TexGend(disp) ((disp)->TexGend)
-#define SET_TexGend(disp, fn) ((disp)->TexGend = fn)
-#define CALL_TexGendv(disp, parameters) (*((disp)->TexGendv)) parameters
-#define GET_TexGendv(disp) ((disp)->TexGendv)
-#define SET_TexGendv(disp, fn) ((disp)->TexGendv = fn)
-#define CALL_TexGenf(disp, parameters) (*((disp)->TexGenf)) parameters
-#define GET_TexGenf(disp) ((disp)->TexGenf)
-#define SET_TexGenf(disp, fn) ((disp)->TexGenf = fn)
-#define CALL_TexGenfv(disp, parameters) (*((disp)->TexGenfv)) parameters
-#define GET_TexGenfv(disp) ((disp)->TexGenfv)
-#define SET_TexGenfv(disp, fn) ((disp)->TexGenfv = fn)
-#define CALL_TexGeni(disp, parameters) (*((disp)->TexGeni)) parameters
-#define GET_TexGeni(disp) ((disp)->TexGeni)
-#define SET_TexGeni(disp, fn) ((disp)->TexGeni = fn)
-#define CALL_TexGeniv(disp, parameters) (*((disp)->TexGeniv)) parameters
-#define GET_TexGeniv(disp) ((disp)->TexGeniv)
-#define SET_TexGeniv(disp, fn) ((disp)->TexGeniv = fn)
-#define CALL_FeedbackBuffer(disp, parameters) (*((disp)->FeedbackBuffer)) parameters
-#define GET_FeedbackBuffer(disp) ((disp)->FeedbackBuffer)
-#define SET_FeedbackBuffer(disp, fn) ((disp)->FeedbackBuffer = fn)
-#define CALL_SelectBuffer(disp, parameters) (*((disp)->SelectBuffer)) parameters
-#define GET_SelectBuffer(disp) ((disp)->SelectBuffer)
-#define SET_SelectBuffer(disp, fn) ((disp)->SelectBuffer = fn)
-#define CALL_RenderMode(disp, parameters) (*((disp)->RenderMode)) parameters
-#define GET_RenderMode(disp) ((disp)->RenderMode)
-#define SET_RenderMode(disp, fn) ((disp)->RenderMode = fn)
-#define CALL_InitNames(disp, parameters) (*((disp)->InitNames)) parameters
-#define GET_InitNames(disp) ((disp)->InitNames)
-#define SET_InitNames(disp, fn) ((disp)->InitNames = fn)
-#define CALL_LoadName(disp, parameters) (*((disp)->LoadName)) parameters
-#define GET_LoadName(disp) ((disp)->LoadName)
-#define SET_LoadName(disp, fn) ((disp)->LoadName = fn)
-#define CALL_PassThrough(disp, parameters) (*((disp)->PassThrough)) parameters
-#define GET_PassThrough(disp) ((disp)->PassThrough)
-#define SET_PassThrough(disp, fn) ((disp)->PassThrough = fn)
-#define CALL_PopName(disp, parameters) (*((disp)->PopName)) parameters
-#define GET_PopName(disp) ((disp)->PopName)
-#define SET_PopName(disp, fn) ((disp)->PopName = fn)
-#define CALL_PushName(disp, parameters) (*((disp)->PushName)) parameters
-#define GET_PushName(disp) ((disp)->PushName)
-#define SET_PushName(disp, fn) ((disp)->PushName = fn)
-#define CALL_DrawBuffer(disp, parameters) (*((disp)->DrawBuffer)) parameters
-#define GET_DrawBuffer(disp) ((disp)->DrawBuffer)
-#define SET_DrawBuffer(disp, fn) ((disp)->DrawBuffer = fn)
-#define CALL_Clear(disp, parameters) (*((disp)->Clear)) parameters
-#define GET_Clear(disp) ((disp)->Clear)
-#define SET_Clear(disp, fn) ((disp)->Clear = fn)
-#define CALL_ClearAccum(disp, parameters) (*((disp)->ClearAccum)) parameters
-#define GET_ClearAccum(disp) ((disp)->ClearAccum)
-#define SET_ClearAccum(disp, fn) ((disp)->ClearAccum = fn)
-#define CALL_ClearIndex(disp, parameters) (*((disp)->ClearIndex)) parameters
-#define GET_ClearIndex(disp) ((disp)->ClearIndex)
-#define SET_ClearIndex(disp, fn) ((disp)->ClearIndex = fn)
-#define CALL_ClearColor(disp, parameters) (*((disp)->ClearColor)) parameters
-#define GET_ClearColor(disp) ((disp)->ClearColor)
-#define SET_ClearColor(disp, fn) ((disp)->ClearColor = fn)
-#define CALL_ClearStencil(disp, parameters) (*((disp)->ClearStencil)) parameters
-#define GET_ClearStencil(disp) ((disp)->ClearStencil)
-#define SET_ClearStencil(disp, fn) ((disp)->ClearStencil = fn)
-#define CALL_ClearDepth(disp, parameters) (*((disp)->ClearDepth)) parameters
-#define GET_ClearDepth(disp) ((disp)->ClearDepth)
-#define SET_ClearDepth(disp, fn) ((disp)->ClearDepth = fn)
-#define CALL_StencilMask(disp, parameters) (*((disp)->StencilMask)) parameters
-#define GET_StencilMask(disp) ((disp)->StencilMask)
-#define SET_StencilMask(disp, fn) ((disp)->StencilMask = fn)
-#define CALL_ColorMask(disp, parameters) (*((disp)->ColorMask)) parameters
-#define GET_ColorMask(disp) ((disp)->ColorMask)
-#define SET_ColorMask(disp, fn) ((disp)->ColorMask = fn)
-#define CALL_DepthMask(disp, parameters) (*((disp)->DepthMask)) parameters
-#define GET_DepthMask(disp) ((disp)->DepthMask)
-#define SET_DepthMask(disp, fn) ((disp)->DepthMask = fn)
-#define CALL_IndexMask(disp, parameters) (*((disp)->IndexMask)) parameters
-#define GET_IndexMask(disp) ((disp)->IndexMask)
-#define SET_IndexMask(disp, fn) ((disp)->IndexMask = fn)
-#define CALL_Accum(disp, parameters) (*((disp)->Accum)) parameters
-#define GET_Accum(disp) ((disp)->Accum)
-#define SET_Accum(disp, fn) ((disp)->Accum = fn)
-#define CALL_Disable(disp, parameters) (*((disp)->Disable)) parameters
-#define GET_Disable(disp) ((disp)->Disable)
-#define SET_Disable(disp, fn) ((disp)->Disable = fn)
-#define CALL_Enable(disp, parameters) (*((disp)->Enable)) parameters
-#define GET_Enable(disp) ((disp)->Enable)
-#define SET_Enable(disp, fn) ((disp)->Enable = fn)
-#define CALL_Finish(disp, parameters) (*((disp)->Finish)) parameters
-#define GET_Finish(disp) ((disp)->Finish)
-#define SET_Finish(disp, fn) ((disp)->Finish = fn)
-#define CALL_Flush(disp, parameters) (*((disp)->Flush)) parameters
-#define GET_Flush(disp) ((disp)->Flush)
-#define SET_Flush(disp, fn) ((disp)->Flush = fn)
-#define CALL_PopAttrib(disp, parameters) (*((disp)->PopAttrib)) parameters
-#define GET_PopAttrib(disp) ((disp)->PopAttrib)
-#define SET_PopAttrib(disp, fn) ((disp)->PopAttrib = fn)
-#define CALL_PushAttrib(disp, parameters) (*((disp)->PushAttrib)) parameters
-#define GET_PushAttrib(disp) ((disp)->PushAttrib)
-#define SET_PushAttrib(disp, fn) ((disp)->PushAttrib = fn)
-#define CALL_Map1d(disp, parameters) (*((disp)->Map1d)) parameters
-#define GET_Map1d(disp) ((disp)->Map1d)
-#define SET_Map1d(disp, fn) ((disp)->Map1d = fn)
-#define CALL_Map1f(disp, parameters) (*((disp)->Map1f)) parameters
-#define GET_Map1f(disp) ((disp)->Map1f)
-#define SET_Map1f(disp, fn) ((disp)->Map1f = fn)
-#define CALL_Map2d(disp, parameters) (*((disp)->Map2d)) parameters
-#define GET_Map2d(disp) ((disp)->Map2d)
-#define SET_Map2d(disp, fn) ((disp)->Map2d = fn)
-#define CALL_Map2f(disp, parameters) (*((disp)->Map2f)) parameters
-#define GET_Map2f(disp) ((disp)->Map2f)
-#define SET_Map2f(disp, fn) ((disp)->Map2f = fn)
-#define CALL_MapGrid1d(disp, parameters) (*((disp)->MapGrid1d)) parameters
-#define GET_MapGrid1d(disp) ((disp)->MapGrid1d)
-#define SET_MapGrid1d(disp, fn) ((disp)->MapGrid1d = fn)
-#define CALL_MapGrid1f(disp, parameters) (*((disp)->MapGrid1f)) parameters
-#define GET_MapGrid1f(disp) ((disp)->MapGrid1f)
-#define SET_MapGrid1f(disp, fn) ((disp)->MapGrid1f = fn)
-#define CALL_MapGrid2d(disp, parameters) (*((disp)->MapGrid2d)) parameters
-#define GET_MapGrid2d(disp) ((disp)->MapGrid2d)
-#define SET_MapGrid2d(disp, fn) ((disp)->MapGrid2d = fn)
-#define CALL_MapGrid2f(disp, parameters) (*((disp)->MapGrid2f)) parameters
-#define GET_MapGrid2f(disp) ((disp)->MapGrid2f)
-#define SET_MapGrid2f(disp, fn) ((disp)->MapGrid2f = fn)
-#define CALL_EvalCoord1d(disp, parameters) (*((disp)->EvalCoord1d)) parameters
-#define GET_EvalCoord1d(disp) ((disp)->EvalCoord1d)
-#define SET_EvalCoord1d(disp, fn) ((disp)->EvalCoord1d = fn)
-#define CALL_EvalCoord1dv(disp, parameters) (*((disp)->EvalCoord1dv)) parameters
-#define GET_EvalCoord1dv(disp) ((disp)->EvalCoord1dv)
-#define SET_EvalCoord1dv(disp, fn) ((disp)->EvalCoord1dv = fn)
-#define CALL_EvalCoord1f(disp, parameters) (*((disp)->EvalCoord1f)) parameters
-#define GET_EvalCoord1f(disp) ((disp)->EvalCoord1f)
-#define SET_EvalCoord1f(disp, fn) ((disp)->EvalCoord1f = fn)
-#define CALL_EvalCoord1fv(disp, parameters) (*((disp)->EvalCoord1fv)) parameters
-#define GET_EvalCoord1fv(disp) ((disp)->EvalCoord1fv)
-#define SET_EvalCoord1fv(disp, fn) ((disp)->EvalCoord1fv = fn)
-#define CALL_EvalCoord2d(disp, parameters) (*((disp)->EvalCoord2d)) parameters
-#define GET_EvalCoord2d(disp) ((disp)->EvalCoord2d)
-#define SET_EvalCoord2d(disp, fn) ((disp)->EvalCoord2d = fn)
-#define CALL_EvalCoord2dv(disp, parameters) (*((disp)->EvalCoord2dv)) parameters
-#define GET_EvalCoord2dv(disp) ((disp)->EvalCoord2dv)
-#define SET_EvalCoord2dv(disp, fn) ((disp)->EvalCoord2dv = fn)
-#define CALL_EvalCoord2f(disp, parameters) (*((disp)->EvalCoord2f)) parameters
-#define GET_EvalCoord2f(disp) ((disp)->EvalCoord2f)
-#define SET_EvalCoord2f(disp, fn) ((disp)->EvalCoord2f = fn)
-#define CALL_EvalCoord2fv(disp, parameters) (*((disp)->EvalCoord2fv)) parameters
-#define GET_EvalCoord2fv(disp) ((disp)->EvalCoord2fv)
-#define SET_EvalCoord2fv(disp, fn) ((disp)->EvalCoord2fv = fn)
-#define CALL_EvalMesh1(disp, parameters) (*((disp)->EvalMesh1)) parameters
-#define GET_EvalMesh1(disp) ((disp)->EvalMesh1)
-#define SET_EvalMesh1(disp, fn) ((disp)->EvalMesh1 = fn)
-#define CALL_EvalPoint1(disp, parameters) (*((disp)->EvalPoint1)) parameters
-#define GET_EvalPoint1(disp) ((disp)->EvalPoint1)
-#define SET_EvalPoint1(disp, fn) ((disp)->EvalPoint1 = fn)
-#define CALL_EvalMesh2(disp, parameters) (*((disp)->EvalMesh2)) parameters
-#define GET_EvalMesh2(disp) ((disp)->EvalMesh2)
-#define SET_EvalMesh2(disp, fn) ((disp)->EvalMesh2 = fn)
-#define CALL_EvalPoint2(disp, parameters) (*((disp)->EvalPoint2)) parameters
-#define GET_EvalPoint2(disp) ((disp)->EvalPoint2)
-#define SET_EvalPoint2(disp, fn) ((disp)->EvalPoint2 = fn)
-#define CALL_AlphaFunc(disp, parameters) (*((disp)->AlphaFunc)) parameters
-#define GET_AlphaFunc(disp) ((disp)->AlphaFunc)
-#define SET_AlphaFunc(disp, fn) ((disp)->AlphaFunc = fn)
-#define CALL_BlendFunc(disp, parameters) (*((disp)->BlendFunc)) parameters
-#define GET_BlendFunc(disp) ((disp)->BlendFunc)
-#define SET_BlendFunc(disp, fn) ((disp)->BlendFunc = fn)
-#define CALL_LogicOp(disp, parameters) (*((disp)->LogicOp)) parameters
-#define GET_LogicOp(disp) ((disp)->LogicOp)
-#define SET_LogicOp(disp, fn) ((disp)->LogicOp = fn)
-#define CALL_StencilFunc(disp, parameters) (*((disp)->StencilFunc)) parameters
-#define GET_StencilFunc(disp) ((disp)->StencilFunc)
-#define SET_StencilFunc(disp, fn) ((disp)->StencilFunc = fn)
-#define CALL_StencilOp(disp, parameters) (*((disp)->StencilOp)) parameters
-#define GET_StencilOp(disp) ((disp)->StencilOp)
-#define SET_StencilOp(disp, fn) ((disp)->StencilOp = fn)
-#define CALL_DepthFunc(disp, parameters) (*((disp)->DepthFunc)) parameters
-#define GET_DepthFunc(disp) ((disp)->DepthFunc)
-#define SET_DepthFunc(disp, fn) ((disp)->DepthFunc = fn)
-#define CALL_PixelZoom(disp, parameters) (*((disp)->PixelZoom)) parameters
-#define GET_PixelZoom(disp) ((disp)->PixelZoom)
-#define SET_PixelZoom(disp, fn) ((disp)->PixelZoom = fn)
-#define CALL_PixelTransferf(disp, parameters) (*((disp)->PixelTransferf)) parameters
-#define GET_PixelTransferf(disp) ((disp)->PixelTransferf)
-#define SET_PixelTransferf(disp, fn) ((disp)->PixelTransferf = fn)
-#define CALL_PixelTransferi(disp, parameters) (*((disp)->PixelTransferi)) parameters
-#define GET_PixelTransferi(disp) ((disp)->PixelTransferi)
-#define SET_PixelTransferi(disp, fn) ((disp)->PixelTransferi = fn)
-#define CALL_PixelStoref(disp, parameters) (*((disp)->PixelStoref)) parameters
-#define GET_PixelStoref(disp) ((disp)->PixelStoref)
-#define SET_PixelStoref(disp, fn) ((disp)->PixelStoref = fn)
-#define CALL_PixelStorei(disp, parameters) (*((disp)->PixelStorei)) parameters
-#define GET_PixelStorei(disp) ((disp)->PixelStorei)
-#define SET_PixelStorei(disp, fn) ((disp)->PixelStorei = fn)
-#define CALL_PixelMapfv(disp, parameters) (*((disp)->PixelMapfv)) parameters
-#define GET_PixelMapfv(disp) ((disp)->PixelMapfv)
-#define SET_PixelMapfv(disp, fn) ((disp)->PixelMapfv = fn)
-#define CALL_PixelMapuiv(disp, parameters) (*((disp)->PixelMapuiv)) parameters
-#define GET_PixelMapuiv(disp) ((disp)->PixelMapuiv)
-#define SET_PixelMapuiv(disp, fn) ((disp)->PixelMapuiv = fn)
-#define CALL_PixelMapusv(disp, parameters) (*((disp)->PixelMapusv)) parameters
-#define GET_PixelMapusv(disp) ((disp)->PixelMapusv)
-#define SET_PixelMapusv(disp, fn) ((disp)->PixelMapusv = fn)
-#define CALL_ReadBuffer(disp, parameters) (*((disp)->ReadBuffer)) parameters
-#define GET_ReadBuffer(disp) ((disp)->ReadBuffer)
-#define SET_ReadBuffer(disp, fn) ((disp)->ReadBuffer = fn)
-#define CALL_CopyPixels(disp, parameters) (*((disp)->CopyPixels)) parameters
-#define GET_CopyPixels(disp) ((disp)->CopyPixels)
-#define SET_CopyPixels(disp, fn) ((disp)->CopyPixels = fn)
-#define CALL_ReadPixels(disp, parameters) (*((disp)->ReadPixels)) parameters
-#define GET_ReadPixels(disp) ((disp)->ReadPixels)
-#define SET_ReadPixels(disp, fn) ((disp)->ReadPixels = fn)
-#define CALL_DrawPixels(disp, parameters) (*((disp)->DrawPixels)) parameters
-#define GET_DrawPixels(disp) ((disp)->DrawPixels)
-#define SET_DrawPixels(disp, fn) ((disp)->DrawPixels = fn)
-#define CALL_GetBooleanv(disp, parameters) (*((disp)->GetBooleanv)) parameters
-#define GET_GetBooleanv(disp) ((disp)->GetBooleanv)
-#define SET_GetBooleanv(disp, fn) ((disp)->GetBooleanv = fn)
-#define CALL_GetClipPlane(disp, parameters) (*((disp)->GetClipPlane)) parameters
-#define GET_GetClipPlane(disp) ((disp)->GetClipPlane)
-#define SET_GetClipPlane(disp, fn) ((disp)->GetClipPlane = fn)
-#define CALL_GetDoublev(disp, parameters) (*((disp)->GetDoublev)) parameters
-#define GET_GetDoublev(disp) ((disp)->GetDoublev)
-#define SET_GetDoublev(disp, fn) ((disp)->GetDoublev = fn)
-#define CALL_GetError(disp, parameters) (*((disp)->GetError)) parameters
-#define GET_GetError(disp) ((disp)->GetError)
-#define SET_GetError(disp, fn) ((disp)->GetError = fn)
-#define CALL_GetFloatv(disp, parameters) (*((disp)->GetFloatv)) parameters
-#define GET_GetFloatv(disp) ((disp)->GetFloatv)
-#define SET_GetFloatv(disp, fn) ((disp)->GetFloatv = fn)
-#define CALL_GetIntegerv(disp, parameters) (*((disp)->GetIntegerv)) parameters
-#define GET_GetIntegerv(disp) ((disp)->GetIntegerv)
-#define SET_GetIntegerv(disp, fn) ((disp)->GetIntegerv = fn)
-#define CALL_GetLightfv(disp, parameters) (*((disp)->GetLightfv)) parameters
-#define GET_GetLightfv(disp) ((disp)->GetLightfv)
-#define SET_GetLightfv(disp, fn) ((disp)->GetLightfv = fn)
-#define CALL_GetLightiv(disp, parameters) (*((disp)->GetLightiv)) parameters
-#define GET_GetLightiv(disp) ((disp)->GetLightiv)
-#define SET_GetLightiv(disp, fn) ((disp)->GetLightiv = fn)
-#define CALL_GetMapdv(disp, parameters) (*((disp)->GetMapdv)) parameters
-#define GET_GetMapdv(disp) ((disp)->GetMapdv)
-#define SET_GetMapdv(disp, fn) ((disp)->GetMapdv = fn)
-#define CALL_GetMapfv(disp, parameters) (*((disp)->GetMapfv)) parameters
-#define GET_GetMapfv(disp) ((disp)->GetMapfv)
-#define SET_GetMapfv(disp, fn) ((disp)->GetMapfv = fn)
-#define CALL_GetMapiv(disp, parameters) (*((disp)->GetMapiv)) parameters
-#define GET_GetMapiv(disp) ((disp)->GetMapiv)
-#define SET_GetMapiv(disp, fn) ((disp)->GetMapiv = fn)
-#define CALL_GetMaterialfv(disp, parameters) (*((disp)->GetMaterialfv)) parameters
-#define GET_GetMaterialfv(disp) ((disp)->GetMaterialfv)
-#define SET_GetMaterialfv(disp, fn) ((disp)->GetMaterialfv = fn)
-#define CALL_GetMaterialiv(disp, parameters) (*((disp)->GetMaterialiv)) parameters
-#define GET_GetMaterialiv(disp) ((disp)->GetMaterialiv)
-#define SET_GetMaterialiv(disp, fn) ((disp)->GetMaterialiv = fn)
-#define CALL_GetPixelMapfv(disp, parameters) (*((disp)->GetPixelMapfv)) parameters
-#define GET_GetPixelMapfv(disp) ((disp)->GetPixelMapfv)
-#define SET_GetPixelMapfv(disp, fn) ((disp)->GetPixelMapfv = fn)
-#define CALL_GetPixelMapuiv(disp, parameters) (*((disp)->GetPixelMapuiv)) parameters
-#define GET_GetPixelMapuiv(disp) ((disp)->GetPixelMapuiv)
-#define SET_GetPixelMapuiv(disp, fn) ((disp)->GetPixelMapuiv = fn)
-#define CALL_GetPixelMapusv(disp, parameters) (*((disp)->GetPixelMapusv)) parameters
-#define GET_GetPixelMapusv(disp) ((disp)->GetPixelMapusv)
-#define SET_GetPixelMapusv(disp, fn) ((disp)->GetPixelMapusv = fn)
-#define CALL_GetPolygonStipple(disp, parameters) (*((disp)->GetPolygonStipple)) parameters
-#define GET_GetPolygonStipple(disp) ((disp)->GetPolygonStipple)
-#define SET_GetPolygonStipple(disp, fn) ((disp)->GetPolygonStipple = fn)
-#define CALL_GetString(disp, parameters) (*((disp)->GetString)) parameters
-#define GET_GetString(disp) ((disp)->GetString)
-#define SET_GetString(disp, fn) ((disp)->GetString = fn)
-#define CALL_GetTexEnvfv(disp, parameters) (*((disp)->GetTexEnvfv)) parameters
-#define GET_GetTexEnvfv(disp) ((disp)->GetTexEnvfv)
-#define SET_GetTexEnvfv(disp, fn) ((disp)->GetTexEnvfv = fn)
-#define CALL_GetTexEnviv(disp, parameters) (*((disp)->GetTexEnviv)) parameters
-#define GET_GetTexEnviv(disp) ((disp)->GetTexEnviv)
-#define SET_GetTexEnviv(disp, fn) ((disp)->GetTexEnviv = fn)
-#define CALL_GetTexGendv(disp, parameters) (*((disp)->GetTexGendv)) parameters
-#define GET_GetTexGendv(disp) ((disp)->GetTexGendv)
-#define SET_GetTexGendv(disp, fn) ((disp)->GetTexGendv = fn)
-#define CALL_GetTexGenfv(disp, parameters) (*((disp)->GetTexGenfv)) parameters
-#define GET_GetTexGenfv(disp) ((disp)->GetTexGenfv)
-#define SET_GetTexGenfv(disp, fn) ((disp)->GetTexGenfv = fn)
-#define CALL_GetTexGeniv(disp, parameters) (*((disp)->GetTexGeniv)) parameters
-#define GET_GetTexGeniv(disp) ((disp)->GetTexGeniv)
-#define SET_GetTexGeniv(disp, fn) ((disp)->GetTexGeniv = fn)
-#define CALL_GetTexImage(disp, parameters) (*((disp)->GetTexImage)) parameters
-#define GET_GetTexImage(disp) ((disp)->GetTexImage)
-#define SET_GetTexImage(disp, fn) ((disp)->GetTexImage = fn)
-#define CALL_GetTexParameterfv(disp, parameters) (*((disp)->GetTexParameterfv)) parameters
-#define GET_GetTexParameterfv(disp) ((disp)->GetTexParameterfv)
-#define SET_GetTexParameterfv(disp, fn) ((disp)->GetTexParameterfv = fn)
-#define CALL_GetTexParameteriv(disp, parameters) (*((disp)->GetTexParameteriv)) parameters
-#define GET_GetTexParameteriv(disp) ((disp)->GetTexParameteriv)
-#define SET_GetTexParameteriv(disp, fn) ((disp)->GetTexParameteriv = fn)
-#define CALL_GetTexLevelParameterfv(disp, parameters) (*((disp)->GetTexLevelParameterfv)) parameters
-#define GET_GetTexLevelParameterfv(disp) ((disp)->GetTexLevelParameterfv)
-#define SET_GetTexLevelParameterfv(disp, fn) ((disp)->GetTexLevelParameterfv = fn)
-#define CALL_GetTexLevelParameteriv(disp, parameters) (*((disp)->GetTexLevelParameteriv)) parameters
-#define GET_GetTexLevelParameteriv(disp) ((disp)->GetTexLevelParameteriv)
-#define SET_GetTexLevelParameteriv(disp, fn) ((disp)->GetTexLevelParameteriv = fn)
-#define CALL_IsEnabled(disp, parameters) (*((disp)->IsEnabled)) parameters
-#define GET_IsEnabled(disp) ((disp)->IsEnabled)
-#define SET_IsEnabled(disp, fn) ((disp)->IsEnabled = fn)
-#define CALL_IsList(disp, parameters) (*((disp)->IsList)) parameters
-#define GET_IsList(disp) ((disp)->IsList)
-#define SET_IsList(disp, fn) ((disp)->IsList = fn)
-#define CALL_DepthRange(disp, parameters) (*((disp)->DepthRange)) parameters
-#define GET_DepthRange(disp) ((disp)->DepthRange)
-#define SET_DepthRange(disp, fn) ((disp)->DepthRange = fn)
-#define CALL_Frustum(disp, parameters) (*((disp)->Frustum)) parameters
-#define GET_Frustum(disp) ((disp)->Frustum)
-#define SET_Frustum(disp, fn) ((disp)->Frustum = fn)
-#define CALL_LoadIdentity(disp, parameters) (*((disp)->LoadIdentity)) parameters
-#define GET_LoadIdentity(disp) ((disp)->LoadIdentity)
-#define SET_LoadIdentity(disp, fn) ((disp)->LoadIdentity = fn)
-#define CALL_LoadMatrixf(disp, parameters) (*((disp)->LoadMatrixf)) parameters
-#define GET_LoadMatrixf(disp) ((disp)->LoadMatrixf)
-#define SET_LoadMatrixf(disp, fn) ((disp)->LoadMatrixf = fn)
-#define CALL_LoadMatrixd(disp, parameters) (*((disp)->LoadMatrixd)) parameters
-#define GET_LoadMatrixd(disp) ((disp)->LoadMatrixd)
-#define SET_LoadMatrixd(disp, fn) ((disp)->LoadMatrixd = fn)
-#define CALL_MatrixMode(disp, parameters) (*((disp)->MatrixMode)) parameters
-#define GET_MatrixMode(disp) ((disp)->MatrixMode)
-#define SET_MatrixMode(disp, fn) ((disp)->MatrixMode = fn)
-#define CALL_MultMatrixf(disp, parameters) (*((disp)->MultMatrixf)) parameters
-#define GET_MultMatrixf(disp) ((disp)->MultMatrixf)
-#define SET_MultMatrixf(disp, fn) ((disp)->MultMatrixf = fn)
-#define CALL_MultMatrixd(disp, parameters) (*((disp)->MultMatrixd)) parameters
-#define GET_MultMatrixd(disp) ((disp)->MultMatrixd)
-#define SET_MultMatrixd(disp, fn) ((disp)->MultMatrixd = fn)
-#define CALL_Ortho(disp, parameters) (*((disp)->Ortho)) parameters
-#define GET_Ortho(disp) ((disp)->Ortho)
-#define SET_Ortho(disp, fn) ((disp)->Ortho = fn)
-#define CALL_PopMatrix(disp, parameters) (*((disp)->PopMatrix)) parameters
-#define GET_PopMatrix(disp) ((disp)->PopMatrix)
-#define SET_PopMatrix(disp, fn) ((disp)->PopMatrix = fn)
-#define CALL_PushMatrix(disp, parameters) (*((disp)->PushMatrix)) parameters
-#define GET_PushMatrix(disp) ((disp)->PushMatrix)
-#define SET_PushMatrix(disp, fn) ((disp)->PushMatrix = fn)
-#define CALL_Rotated(disp, parameters) (*((disp)->Rotated)) parameters
-#define GET_Rotated(disp) ((disp)->Rotated)
-#define SET_Rotated(disp, fn) ((disp)->Rotated = fn)
-#define CALL_Rotatef(disp, parameters) (*((disp)->Rotatef)) parameters
-#define GET_Rotatef(disp) ((disp)->Rotatef)
-#define SET_Rotatef(disp, fn) ((disp)->Rotatef = fn)
-#define CALL_Scaled(disp, parameters) (*((disp)->Scaled)) parameters
-#define GET_Scaled(disp) ((disp)->Scaled)
-#define SET_Scaled(disp, fn) ((disp)->Scaled = fn)
-#define CALL_Scalef(disp, parameters) (*((disp)->Scalef)) parameters
-#define GET_Scalef(disp) ((disp)->Scalef)
-#define SET_Scalef(disp, fn) ((disp)->Scalef = fn)
-#define CALL_Translated(disp, parameters) (*((disp)->Translated)) parameters
-#define GET_Translated(disp) ((disp)->Translated)
-#define SET_Translated(disp, fn) ((disp)->Translated = fn)
-#define CALL_Translatef(disp, parameters) (*((disp)->Translatef)) parameters
-#define GET_Translatef(disp) ((disp)->Translatef)
-#define SET_Translatef(disp, fn) ((disp)->Translatef = fn)
-#define CALL_Viewport(disp, parameters) (*((disp)->Viewport)) parameters
-#define GET_Viewport(disp) ((disp)->Viewport)
-#define SET_Viewport(disp, fn) ((disp)->Viewport = fn)
-#define CALL_ArrayElement(disp, parameters) (*((disp)->ArrayElement)) parameters
-#define GET_ArrayElement(disp) ((disp)->ArrayElement)
-#define SET_ArrayElement(disp, fn) ((disp)->ArrayElement = fn)
-#define CALL_BindTexture(disp, parameters) (*((disp)->BindTexture)) parameters
-#define GET_BindTexture(disp) ((disp)->BindTexture)
-#define SET_BindTexture(disp, fn) ((disp)->BindTexture = fn)
-#define CALL_ColorPointer(disp, parameters) (*((disp)->ColorPointer)) parameters
-#define GET_ColorPointer(disp) ((disp)->ColorPointer)
-#define SET_ColorPointer(disp, fn) ((disp)->ColorPointer = fn)
-#define CALL_DisableClientState(disp, parameters) (*((disp)->DisableClientState)) parameters
-#define GET_DisableClientState(disp) ((disp)->DisableClientState)
-#define SET_DisableClientState(disp, fn) ((disp)->DisableClientState = fn)
-#define CALL_DrawArrays(disp, parameters) (*((disp)->DrawArrays)) parameters
-#define GET_DrawArrays(disp) ((disp)->DrawArrays)
-#define SET_DrawArrays(disp, fn) ((disp)->DrawArrays = fn)
-#define CALL_DrawElements(disp, parameters) (*((disp)->DrawElements)) parameters
-#define GET_DrawElements(disp) ((disp)->DrawElements)
-#define SET_DrawElements(disp, fn) ((disp)->DrawElements = fn)
-#define CALL_EdgeFlagPointer(disp, parameters) (*((disp)->EdgeFlagPointer)) parameters
-#define GET_EdgeFlagPointer(disp) ((disp)->EdgeFlagPointer)
-#define SET_EdgeFlagPointer(disp, fn) ((disp)->EdgeFlagPointer = fn)
-#define CALL_EnableClientState(disp, parameters) (*((disp)->EnableClientState)) parameters
-#define GET_EnableClientState(disp) ((disp)->EnableClientState)
-#define SET_EnableClientState(disp, fn) ((disp)->EnableClientState = fn)
-#define CALL_IndexPointer(disp, parameters) (*((disp)->IndexPointer)) parameters
-#define GET_IndexPointer(disp) ((disp)->IndexPointer)
-#define SET_IndexPointer(disp, fn) ((disp)->IndexPointer = fn)
-#define CALL_Indexub(disp, parameters) (*((disp)->Indexub)) parameters
-#define GET_Indexub(disp) ((disp)->Indexub)
-#define SET_Indexub(disp, fn) ((disp)->Indexub = fn)
-#define CALL_Indexubv(disp, parameters) (*((disp)->Indexubv)) parameters
-#define GET_Indexubv(disp) ((disp)->Indexubv)
-#define SET_Indexubv(disp, fn) ((disp)->Indexubv = fn)
-#define CALL_InterleavedArrays(disp, parameters) (*((disp)->InterleavedArrays)) parameters
-#define GET_InterleavedArrays(disp) ((disp)->InterleavedArrays)
-#define SET_InterleavedArrays(disp, fn) ((disp)->InterleavedArrays = fn)
-#define CALL_NormalPointer(disp, parameters) (*((disp)->NormalPointer)) parameters
-#define GET_NormalPointer(disp) ((disp)->NormalPointer)
-#define SET_NormalPointer(disp, fn) ((disp)->NormalPointer = fn)
-#define CALL_PolygonOffset(disp, parameters) (*((disp)->PolygonOffset)) parameters
-#define GET_PolygonOffset(disp) ((disp)->PolygonOffset)
-#define SET_PolygonOffset(disp, fn) ((disp)->PolygonOffset = fn)
-#define CALL_TexCoordPointer(disp, parameters) (*((disp)->TexCoordPointer)) parameters
-#define GET_TexCoordPointer(disp) ((disp)->TexCoordPointer)
-#define SET_TexCoordPointer(disp, fn) ((disp)->TexCoordPointer = fn)
-#define CALL_VertexPointer(disp, parameters) (*((disp)->VertexPointer)) parameters
-#define GET_VertexPointer(disp) ((disp)->VertexPointer)
-#define SET_VertexPointer(disp, fn) ((disp)->VertexPointer = fn)
-#define CALL_AreTexturesResident(disp, parameters) (*((disp)->AreTexturesResident)) parameters
-#define GET_AreTexturesResident(disp) ((disp)->AreTexturesResident)
-#define SET_AreTexturesResident(disp, fn) ((disp)->AreTexturesResident = fn)
-#define CALL_CopyTexImage1D(disp, parameters) (*((disp)->CopyTexImage1D)) parameters
-#define GET_CopyTexImage1D(disp) ((disp)->CopyTexImage1D)
-#define SET_CopyTexImage1D(disp, fn) ((disp)->CopyTexImage1D = fn)
-#define CALL_CopyTexImage2D(disp, parameters) (*((disp)->CopyTexImage2D)) parameters
-#define GET_CopyTexImage2D(disp) ((disp)->CopyTexImage2D)
-#define SET_CopyTexImage2D(disp, fn) ((disp)->CopyTexImage2D = fn)
-#define CALL_CopyTexSubImage1D(disp, parameters) (*((disp)->CopyTexSubImage1D)) parameters
-#define GET_CopyTexSubImage1D(disp) ((disp)->CopyTexSubImage1D)
-#define SET_CopyTexSubImage1D(disp, fn) ((disp)->CopyTexSubImage1D = fn)
-#define CALL_CopyTexSubImage2D(disp, parameters) (*((disp)->CopyTexSubImage2D)) parameters
-#define GET_CopyTexSubImage2D(disp) ((disp)->CopyTexSubImage2D)
-#define SET_CopyTexSubImage2D(disp, fn) ((disp)->CopyTexSubImage2D = fn)
-#define CALL_DeleteTextures(disp, parameters) (*((disp)->DeleteTextures)) parameters
-#define GET_DeleteTextures(disp) ((disp)->DeleteTextures)
-#define SET_DeleteTextures(disp, fn) ((disp)->DeleteTextures = fn)
-#define CALL_GenTextures(disp, parameters) (*((disp)->GenTextures)) parameters
-#define GET_GenTextures(disp) ((disp)->GenTextures)
-#define SET_GenTextures(disp, fn) ((disp)->GenTextures = fn)
-#define CALL_GetPointerv(disp, parameters) (*((disp)->GetPointerv)) parameters
-#define GET_GetPointerv(disp) ((disp)->GetPointerv)
-#define SET_GetPointerv(disp, fn) ((disp)->GetPointerv = fn)
-#define CALL_IsTexture(disp, parameters) (*((disp)->IsTexture)) parameters
-#define GET_IsTexture(disp) ((disp)->IsTexture)
-#define SET_IsTexture(disp, fn) ((disp)->IsTexture = fn)
-#define CALL_PrioritizeTextures(disp, parameters) (*((disp)->PrioritizeTextures)) parameters
-#define GET_PrioritizeTextures(disp) ((disp)->PrioritizeTextures)
-#define SET_PrioritizeTextures(disp, fn) ((disp)->PrioritizeTextures = fn)
-#define CALL_TexSubImage1D(disp, parameters) (*((disp)->TexSubImage1D)) parameters
-#define GET_TexSubImage1D(disp) ((disp)->TexSubImage1D)
-#define SET_TexSubImage1D(disp, fn) ((disp)->TexSubImage1D = fn)
-#define CALL_TexSubImage2D(disp, parameters) (*((disp)->TexSubImage2D)) parameters
-#define GET_TexSubImage2D(disp) ((disp)->TexSubImage2D)
-#define SET_TexSubImage2D(disp, fn) ((disp)->TexSubImage2D = fn)
-#define CALL_PopClientAttrib(disp, parameters) (*((disp)->PopClientAttrib)) parameters
-#define GET_PopClientAttrib(disp) ((disp)->PopClientAttrib)
-#define SET_PopClientAttrib(disp, fn) ((disp)->PopClientAttrib = fn)
-#define CALL_PushClientAttrib(disp, parameters) (*((disp)->PushClientAttrib)) parameters
-#define GET_PushClientAttrib(disp) ((disp)->PushClientAttrib)
-#define SET_PushClientAttrib(disp, fn) ((disp)->PushClientAttrib = fn)
-#define CALL_BlendColor(disp, parameters) (*((disp)->BlendColor)) parameters
-#define GET_BlendColor(disp) ((disp)->BlendColor)
-#define SET_BlendColor(disp, fn) ((disp)->BlendColor = fn)
-#define CALL_BlendEquation(disp, parameters) (*((disp)->BlendEquation)) parameters
-#define GET_BlendEquation(disp) ((disp)->BlendEquation)
-#define SET_BlendEquation(disp, fn) ((disp)->BlendEquation = fn)
-#define CALL_DrawRangeElements(disp, parameters) (*((disp)->DrawRangeElements)) parameters
-#define GET_DrawRangeElements(disp) ((disp)->DrawRangeElements)
-#define SET_DrawRangeElements(disp, fn) ((disp)->DrawRangeElements = fn)
-#define CALL_ColorTable(disp, parameters) (*((disp)->ColorTable)) parameters
-#define GET_ColorTable(disp) ((disp)->ColorTable)
-#define SET_ColorTable(disp, fn) ((disp)->ColorTable = fn)
-#define CALL_ColorTableParameterfv(disp, parameters) (*((disp)->ColorTableParameterfv)) parameters
-#define GET_ColorTableParameterfv(disp) ((disp)->ColorTableParameterfv)
-#define SET_ColorTableParameterfv(disp, fn) ((disp)->ColorTableParameterfv = fn)
-#define CALL_ColorTableParameteriv(disp, parameters) (*((disp)->ColorTableParameteriv)) parameters
-#define GET_ColorTableParameteriv(disp) ((disp)->ColorTableParameteriv)
-#define SET_ColorTableParameteriv(disp, fn) ((disp)->ColorTableParameteriv = fn)
-#define CALL_CopyColorTable(disp, parameters) (*((disp)->CopyColorTable)) parameters
-#define GET_CopyColorTable(disp) ((disp)->CopyColorTable)
-#define SET_CopyColorTable(disp, fn) ((disp)->CopyColorTable = fn)
-#define CALL_GetColorTable(disp, parameters) (*((disp)->GetColorTable)) parameters
-#define GET_GetColorTable(disp) ((disp)->GetColorTable)
-#define SET_GetColorTable(disp, fn) ((disp)->GetColorTable = fn)
-#define CALL_GetColorTableParameterfv(disp, parameters) (*((disp)->GetColorTableParameterfv)) parameters
-#define GET_GetColorTableParameterfv(disp) ((disp)->GetColorTableParameterfv)
-#define SET_GetColorTableParameterfv(disp, fn) ((disp)->GetColorTableParameterfv = fn)
-#define CALL_GetColorTableParameteriv(disp, parameters) (*((disp)->GetColorTableParameteriv)) parameters
-#define GET_GetColorTableParameteriv(disp) ((disp)->GetColorTableParameteriv)
-#define SET_GetColorTableParameteriv(disp, fn) ((disp)->GetColorTableParameteriv = fn)
-#define CALL_ColorSubTable(disp, parameters) (*((disp)->ColorSubTable)) parameters
-#define GET_ColorSubTable(disp) ((disp)->ColorSubTable)
-#define SET_ColorSubTable(disp, fn) ((disp)->ColorSubTable = fn)
-#define CALL_CopyColorSubTable(disp, parameters) (*((disp)->CopyColorSubTable)) parameters
-#define GET_CopyColorSubTable(disp) ((disp)->CopyColorSubTable)
-#define SET_CopyColorSubTable(disp, fn) ((disp)->CopyColorSubTable = fn)
-#define CALL_ConvolutionFilter1D(disp, parameters) (*((disp)->ConvolutionFilter1D)) parameters
-#define GET_ConvolutionFilter1D(disp) ((disp)->ConvolutionFilter1D)
-#define SET_ConvolutionFilter1D(disp, fn) ((disp)->ConvolutionFilter1D = fn)
-#define CALL_ConvolutionFilter2D(disp, parameters) (*((disp)->ConvolutionFilter2D)) parameters
-#define GET_ConvolutionFilter2D(disp) ((disp)->ConvolutionFilter2D)
-#define SET_ConvolutionFilter2D(disp, fn) ((disp)->ConvolutionFilter2D = fn)
-#define CALL_ConvolutionParameterf(disp, parameters) (*((disp)->ConvolutionParameterf)) parameters
-#define GET_ConvolutionParameterf(disp) ((disp)->ConvolutionParameterf)
-#define SET_ConvolutionParameterf(disp, fn) ((disp)->ConvolutionParameterf = fn)
-#define CALL_ConvolutionParameterfv(disp, parameters) (*((disp)->ConvolutionParameterfv)) parameters
-#define GET_ConvolutionParameterfv(disp) ((disp)->ConvolutionParameterfv)
-#define SET_ConvolutionParameterfv(disp, fn) ((disp)->ConvolutionParameterfv = fn)
-#define CALL_ConvolutionParameteri(disp, parameters) (*((disp)->ConvolutionParameteri)) parameters
-#define GET_ConvolutionParameteri(disp) ((disp)->ConvolutionParameteri)
-#define SET_ConvolutionParameteri(disp, fn) ((disp)->ConvolutionParameteri = fn)
-#define CALL_ConvolutionParameteriv(disp, parameters) (*((disp)->ConvolutionParameteriv)) parameters
-#define GET_ConvolutionParameteriv(disp) ((disp)->ConvolutionParameteriv)
-#define SET_ConvolutionParameteriv(disp, fn) ((disp)->ConvolutionParameteriv = fn)
-#define CALL_CopyConvolutionFilter1D(disp, parameters) (*((disp)->CopyConvolutionFilter1D)) parameters
-#define GET_CopyConvolutionFilter1D(disp) ((disp)->CopyConvolutionFilter1D)
-#define SET_CopyConvolutionFilter1D(disp, fn) ((disp)->CopyConvolutionFilter1D = fn)
-#define CALL_CopyConvolutionFilter2D(disp, parameters) (*((disp)->CopyConvolutionFilter2D)) parameters
-#define GET_CopyConvolutionFilter2D(disp) ((disp)->CopyConvolutionFilter2D)
-#define SET_CopyConvolutionFilter2D(disp, fn) ((disp)->CopyConvolutionFilter2D = fn)
-#define CALL_GetConvolutionFilter(disp, parameters) (*((disp)->GetConvolutionFilter)) parameters
-#define GET_GetConvolutionFilter(disp) ((disp)->GetConvolutionFilter)
-#define SET_GetConvolutionFilter(disp, fn) ((disp)->GetConvolutionFilter = fn)
-#define CALL_GetConvolutionParameterfv(disp, parameters) (*((disp)->GetConvolutionParameterfv)) parameters
-#define GET_GetConvolutionParameterfv(disp) ((disp)->GetConvolutionParameterfv)
-#define SET_GetConvolutionParameterfv(disp, fn) ((disp)->GetConvolutionParameterfv = fn)
-#define CALL_GetConvolutionParameteriv(disp, parameters) (*((disp)->GetConvolutionParameteriv)) parameters
-#define GET_GetConvolutionParameteriv(disp) ((disp)->GetConvolutionParameteriv)
-#define SET_GetConvolutionParameteriv(disp, fn) ((disp)->GetConvolutionParameteriv = fn)
-#define CALL_GetSeparableFilter(disp, parameters) (*((disp)->GetSeparableFilter)) parameters
-#define GET_GetSeparableFilter(disp) ((disp)->GetSeparableFilter)
-#define SET_GetSeparableFilter(disp, fn) ((disp)->GetSeparableFilter = fn)
-#define CALL_SeparableFilter2D(disp, parameters) (*((disp)->SeparableFilter2D)) parameters
-#define GET_SeparableFilter2D(disp) ((disp)->SeparableFilter2D)
-#define SET_SeparableFilter2D(disp, fn) ((disp)->SeparableFilter2D = fn)
-#define CALL_GetHistogram(disp, parameters) (*((disp)->GetHistogram)) parameters
-#define GET_GetHistogram(disp) ((disp)->GetHistogram)
-#define SET_GetHistogram(disp, fn) ((disp)->GetHistogram = fn)
-#define CALL_GetHistogramParameterfv(disp, parameters) (*((disp)->GetHistogramParameterfv)) parameters
-#define GET_GetHistogramParameterfv(disp) ((disp)->GetHistogramParameterfv)
-#define SET_GetHistogramParameterfv(disp, fn) ((disp)->GetHistogramParameterfv = fn)
-#define CALL_GetHistogramParameteriv(disp, parameters) (*((disp)->GetHistogramParameteriv)) parameters
-#define GET_GetHistogramParameteriv(disp) ((disp)->GetHistogramParameteriv)
-#define SET_GetHistogramParameteriv(disp, fn) ((disp)->GetHistogramParameteriv = fn)
-#define CALL_GetMinmax(disp, parameters) (*((disp)->GetMinmax)) parameters
-#define GET_GetMinmax(disp) ((disp)->GetMinmax)
-#define SET_GetMinmax(disp, fn) ((disp)->GetMinmax = fn)
-#define CALL_GetMinmaxParameterfv(disp, parameters) (*((disp)->GetMinmaxParameterfv)) parameters
-#define GET_GetMinmaxParameterfv(disp) ((disp)->GetMinmaxParameterfv)
-#define SET_GetMinmaxParameterfv(disp, fn) ((disp)->GetMinmaxParameterfv = fn)
-#define CALL_GetMinmaxParameteriv(disp, parameters) (*((disp)->GetMinmaxParameteriv)) parameters
-#define GET_GetMinmaxParameteriv(disp) ((disp)->GetMinmaxParameteriv)
-#define SET_GetMinmaxParameteriv(disp, fn) ((disp)->GetMinmaxParameteriv = fn)
-#define CALL_Histogram(disp, parameters) (*((disp)->Histogram)) parameters
-#define GET_Histogram(disp) ((disp)->Histogram)
-#define SET_Histogram(disp, fn) ((disp)->Histogram = fn)
-#define CALL_Minmax(disp, parameters) (*((disp)->Minmax)) parameters
-#define GET_Minmax(disp) ((disp)->Minmax)
-#define SET_Minmax(disp, fn) ((disp)->Minmax = fn)
-#define CALL_ResetHistogram(disp, parameters) (*((disp)->ResetHistogram)) parameters
-#define GET_ResetHistogram(disp) ((disp)->ResetHistogram)
-#define SET_ResetHistogram(disp, fn) ((disp)->ResetHistogram = fn)
-#define CALL_ResetMinmax(disp, parameters) (*((disp)->ResetMinmax)) parameters
-#define GET_ResetMinmax(disp) ((disp)->ResetMinmax)
-#define SET_ResetMinmax(disp, fn) ((disp)->ResetMinmax = fn)
-#define CALL_TexImage3D(disp, parameters) (*((disp)->TexImage3D)) parameters
-#define GET_TexImage3D(disp) ((disp)->TexImage3D)
-#define SET_TexImage3D(disp, fn) ((disp)->TexImage3D = fn)
-#define CALL_TexSubImage3D(disp, parameters) (*((disp)->TexSubImage3D)) parameters
-#define GET_TexSubImage3D(disp) ((disp)->TexSubImage3D)
-#define SET_TexSubImage3D(disp, fn) ((disp)->TexSubImage3D = fn)
-#define CALL_CopyTexSubImage3D(disp, parameters) (*((disp)->CopyTexSubImage3D)) parameters
-#define GET_CopyTexSubImage3D(disp) ((disp)->CopyTexSubImage3D)
-#define SET_CopyTexSubImage3D(disp, fn) ((disp)->CopyTexSubImage3D = fn)
-#define CALL_ActiveTextureARB(disp, parameters) (*((disp)->ActiveTextureARB)) parameters
-#define GET_ActiveTextureARB(disp) ((disp)->ActiveTextureARB)
-#define SET_ActiveTextureARB(disp, fn) ((disp)->ActiveTextureARB = fn)
-#define CALL_ClientActiveTextureARB(disp, parameters) (*((disp)->ClientActiveTextureARB)) parameters
-#define GET_ClientActiveTextureARB(disp) ((disp)->ClientActiveTextureARB)
-#define SET_ClientActiveTextureARB(disp, fn) ((disp)->ClientActiveTextureARB = fn)
-#define CALL_MultiTexCoord1dARB(disp, parameters) (*((disp)->MultiTexCoord1dARB)) parameters
-#define GET_MultiTexCoord1dARB(disp) ((disp)->MultiTexCoord1dARB)
-#define SET_MultiTexCoord1dARB(disp, fn) ((disp)->MultiTexCoord1dARB = fn)
-#define CALL_MultiTexCoord1dvARB(disp, parameters) (*((disp)->MultiTexCoord1dvARB)) parameters
-#define GET_MultiTexCoord1dvARB(disp) ((disp)->MultiTexCoord1dvARB)
-#define SET_MultiTexCoord1dvARB(disp, fn) ((disp)->MultiTexCoord1dvARB = fn)
-#define CALL_MultiTexCoord1fARB(disp, parameters) (*((disp)->MultiTexCoord1fARB)) parameters
-#define GET_MultiTexCoord1fARB(disp) ((disp)->MultiTexCoord1fARB)
-#define SET_MultiTexCoord1fARB(disp, fn) ((disp)->MultiTexCoord1fARB = fn)
-#define CALL_MultiTexCoord1fvARB(disp, parameters) (*((disp)->MultiTexCoord1fvARB)) parameters
-#define GET_MultiTexCoord1fvARB(disp) ((disp)->MultiTexCoord1fvARB)
-#define SET_MultiTexCoord1fvARB(disp, fn) ((disp)->MultiTexCoord1fvARB = fn)
-#define CALL_MultiTexCoord1iARB(disp, parameters) (*((disp)->MultiTexCoord1iARB)) parameters
-#define GET_MultiTexCoord1iARB(disp) ((disp)->MultiTexCoord1iARB)
-#define SET_MultiTexCoord1iARB(disp, fn) ((disp)->MultiTexCoord1iARB = fn)
-#define CALL_MultiTexCoord1ivARB(disp, parameters) (*((disp)->MultiTexCoord1ivARB)) parameters
-#define GET_MultiTexCoord1ivARB(disp) ((disp)->MultiTexCoord1ivARB)
-#define SET_MultiTexCoord1ivARB(disp, fn) ((disp)->MultiTexCoord1ivARB = fn)
-#define CALL_MultiTexCoord1sARB(disp, parameters) (*((disp)->MultiTexCoord1sARB)) parameters
-#define GET_MultiTexCoord1sARB(disp) ((disp)->MultiTexCoord1sARB)
-#define SET_MultiTexCoord1sARB(disp, fn) ((disp)->MultiTexCoord1sARB = fn)
-#define CALL_MultiTexCoord1svARB(disp, parameters) (*((disp)->MultiTexCoord1svARB)) parameters
-#define GET_MultiTexCoord1svARB(disp) ((disp)->MultiTexCoord1svARB)
-#define SET_MultiTexCoord1svARB(disp, fn) ((disp)->MultiTexCoord1svARB = fn)
-#define CALL_MultiTexCoord2dARB(disp, parameters) (*((disp)->MultiTexCoord2dARB)) parameters
-#define GET_MultiTexCoord2dARB(disp) ((disp)->MultiTexCoord2dARB)
-#define SET_MultiTexCoord2dARB(disp, fn) ((disp)->MultiTexCoord2dARB = fn)
-#define CALL_MultiTexCoord2dvARB(disp, parameters) (*((disp)->MultiTexCoord2dvARB)) parameters
-#define GET_MultiTexCoord2dvARB(disp) ((disp)->MultiTexCoord2dvARB)
-#define SET_MultiTexCoord2dvARB(disp, fn) ((disp)->MultiTexCoord2dvARB = fn)
-#define CALL_MultiTexCoord2fARB(disp, parameters) (*((disp)->MultiTexCoord2fARB)) parameters
-#define GET_MultiTexCoord2fARB(disp) ((disp)->MultiTexCoord2fARB)
-#define SET_MultiTexCoord2fARB(disp, fn) ((disp)->MultiTexCoord2fARB = fn)
-#define CALL_MultiTexCoord2fvARB(disp, parameters) (*((disp)->MultiTexCoord2fvARB)) parameters
-#define GET_MultiTexCoord2fvARB(disp) ((disp)->MultiTexCoord2fvARB)
-#define SET_MultiTexCoord2fvARB(disp, fn) ((disp)->MultiTexCoord2fvARB = fn)
-#define CALL_MultiTexCoord2iARB(disp, parameters) (*((disp)->MultiTexCoord2iARB)) parameters
-#define GET_MultiTexCoord2iARB(disp) ((disp)->MultiTexCoord2iARB)
-#define SET_MultiTexCoord2iARB(disp, fn) ((disp)->MultiTexCoord2iARB = fn)
-#define CALL_MultiTexCoord2ivARB(disp, parameters) (*((disp)->MultiTexCoord2ivARB)) parameters
-#define GET_MultiTexCoord2ivARB(disp) ((disp)->MultiTexCoord2ivARB)
-#define SET_MultiTexCoord2ivARB(disp, fn) ((disp)->MultiTexCoord2ivARB = fn)
-#define CALL_MultiTexCoord2sARB(disp, parameters) (*((disp)->MultiTexCoord2sARB)) parameters
-#define GET_MultiTexCoord2sARB(disp) ((disp)->MultiTexCoord2sARB)
-#define SET_MultiTexCoord2sARB(disp, fn) ((disp)->MultiTexCoord2sARB = fn)
-#define CALL_MultiTexCoord2svARB(disp, parameters) (*((disp)->MultiTexCoord2svARB)) parameters
-#define GET_MultiTexCoord2svARB(disp) ((disp)->MultiTexCoord2svARB)
-#define SET_MultiTexCoord2svARB(disp, fn) ((disp)->MultiTexCoord2svARB = fn)
-#define CALL_MultiTexCoord3dARB(disp, parameters) (*((disp)->MultiTexCoord3dARB)) parameters
-#define GET_MultiTexCoord3dARB(disp) ((disp)->MultiTexCoord3dARB)
-#define SET_MultiTexCoord3dARB(disp, fn) ((disp)->MultiTexCoord3dARB = fn)
-#define CALL_MultiTexCoord3dvARB(disp, parameters) (*((disp)->MultiTexCoord3dvARB)) parameters
-#define GET_MultiTexCoord3dvARB(disp) ((disp)->MultiTexCoord3dvARB)
-#define SET_MultiTexCoord3dvARB(disp, fn) ((disp)->MultiTexCoord3dvARB = fn)
-#define CALL_MultiTexCoord3fARB(disp, parameters) (*((disp)->MultiTexCoord3fARB)) parameters
-#define GET_MultiTexCoord3fARB(disp) ((disp)->MultiTexCoord3fARB)
-#define SET_MultiTexCoord3fARB(disp, fn) ((disp)->MultiTexCoord3fARB = fn)
-#define CALL_MultiTexCoord3fvARB(disp, parameters) (*((disp)->MultiTexCoord3fvARB)) parameters
-#define GET_MultiTexCoord3fvARB(disp) ((disp)->MultiTexCoord3fvARB)
-#define SET_MultiTexCoord3fvARB(disp, fn) ((disp)->MultiTexCoord3fvARB = fn)
-#define CALL_MultiTexCoord3iARB(disp, parameters) (*((disp)->MultiTexCoord3iARB)) parameters
-#define GET_MultiTexCoord3iARB(disp) ((disp)->MultiTexCoord3iARB)
-#define SET_MultiTexCoord3iARB(disp, fn) ((disp)->MultiTexCoord3iARB = fn)
-#define CALL_MultiTexCoord3ivARB(disp, parameters) (*((disp)->MultiTexCoord3ivARB)) parameters
-#define GET_MultiTexCoord3ivARB(disp) ((disp)->MultiTexCoord3ivARB)
-#define SET_MultiTexCoord3ivARB(disp, fn) ((disp)->MultiTexCoord3ivARB = fn)
-#define CALL_MultiTexCoord3sARB(disp, parameters) (*((disp)->MultiTexCoord3sARB)) parameters
-#define GET_MultiTexCoord3sARB(disp) ((disp)->MultiTexCoord3sARB)
-#define SET_MultiTexCoord3sARB(disp, fn) ((disp)->MultiTexCoord3sARB = fn)
-#define CALL_MultiTexCoord3svARB(disp, parameters) (*((disp)->MultiTexCoord3svARB)) parameters
-#define GET_MultiTexCoord3svARB(disp) ((disp)->MultiTexCoord3svARB)
-#define SET_MultiTexCoord3svARB(disp, fn) ((disp)->MultiTexCoord3svARB = fn)
-#define CALL_MultiTexCoord4dARB(disp, parameters) (*((disp)->MultiTexCoord4dARB)) parameters
-#define GET_MultiTexCoord4dARB(disp) ((disp)->MultiTexCoord4dARB)
-#define SET_MultiTexCoord4dARB(disp, fn) ((disp)->MultiTexCoord4dARB = fn)
-#define CALL_MultiTexCoord4dvARB(disp, parameters) (*((disp)->MultiTexCoord4dvARB)) parameters
-#define GET_MultiTexCoord4dvARB(disp) ((disp)->MultiTexCoord4dvARB)
-#define SET_MultiTexCoord4dvARB(disp, fn) ((disp)->MultiTexCoord4dvARB = fn)
-#define CALL_MultiTexCoord4fARB(disp, parameters) (*((disp)->MultiTexCoord4fARB)) parameters
-#define GET_MultiTexCoord4fARB(disp) ((disp)->MultiTexCoord4fARB)
-#define SET_MultiTexCoord4fARB(disp, fn) ((disp)->MultiTexCoord4fARB = fn)
-#define CALL_MultiTexCoord4fvARB(disp, parameters) (*((disp)->MultiTexCoord4fvARB)) parameters
-#define GET_MultiTexCoord4fvARB(disp) ((disp)->MultiTexCoord4fvARB)
-#define SET_MultiTexCoord4fvARB(disp, fn) ((disp)->MultiTexCoord4fvARB = fn)
-#define CALL_MultiTexCoord4iARB(disp, parameters) (*((disp)->MultiTexCoord4iARB)) parameters
-#define GET_MultiTexCoord4iARB(disp) ((disp)->MultiTexCoord4iARB)
-#define SET_MultiTexCoord4iARB(disp, fn) ((disp)->MultiTexCoord4iARB = fn)
-#define CALL_MultiTexCoord4ivARB(disp, parameters) (*((disp)->MultiTexCoord4ivARB)) parameters
-#define GET_MultiTexCoord4ivARB(disp) ((disp)->MultiTexCoord4ivARB)
-#define SET_MultiTexCoord4ivARB(disp, fn) ((disp)->MultiTexCoord4ivARB = fn)
-#define CALL_MultiTexCoord4sARB(disp, parameters) (*((disp)->MultiTexCoord4sARB)) parameters
-#define GET_MultiTexCoord4sARB(disp) ((disp)->MultiTexCoord4sARB)
-#define SET_MultiTexCoord4sARB(disp, fn) ((disp)->MultiTexCoord4sARB = fn)
-#define CALL_MultiTexCoord4svARB(disp, parameters) (*((disp)->MultiTexCoord4svARB)) parameters
-#define GET_MultiTexCoord4svARB(disp) ((disp)->MultiTexCoord4svARB)
-#define SET_MultiTexCoord4svARB(disp, fn) ((disp)->MultiTexCoord4svARB = fn)
-
-#if !defined(_GLAPI_USE_REMAP_TABLE)
-
-#define CALL_AttachShader(disp, parameters) (*((disp)->AttachShader)) parameters
-#define GET_AttachShader(disp) ((disp)->AttachShader)
-#define SET_AttachShader(disp, fn) ((disp)->AttachShader = fn)
-#define CALL_CreateProgram(disp, parameters) (*((disp)->CreateProgram)) parameters
-#define GET_CreateProgram(disp) ((disp)->CreateProgram)
-#define SET_CreateProgram(disp, fn) ((disp)->CreateProgram = fn)
-#define CALL_CreateShader(disp, parameters) (*((disp)->CreateShader)) parameters
-#define GET_CreateShader(disp) ((disp)->CreateShader)
-#define SET_CreateShader(disp, fn) ((disp)->CreateShader = fn)
-#define CALL_DeleteProgram(disp, parameters) (*((disp)->DeleteProgram)) parameters
-#define GET_DeleteProgram(disp) ((disp)->DeleteProgram)
-#define SET_DeleteProgram(disp, fn) ((disp)->DeleteProgram = fn)
-#define CALL_DeleteShader(disp, parameters) (*((disp)->DeleteShader)) parameters
-#define GET_DeleteShader(disp) ((disp)->DeleteShader)
-#define SET_DeleteShader(disp, fn) ((disp)->DeleteShader = fn)
-#define CALL_DetachShader(disp, parameters) (*((disp)->DetachShader)) parameters
-#define GET_DetachShader(disp) ((disp)->DetachShader)
-#define SET_DetachShader(disp, fn) ((disp)->DetachShader = fn)
-#define CALL_GetAttachedShaders(disp, parameters) (*((disp)->GetAttachedShaders)) parameters
-#define GET_GetAttachedShaders(disp) ((disp)->GetAttachedShaders)
-#define SET_GetAttachedShaders(disp, fn) ((disp)->GetAttachedShaders = fn)
-#define CALL_GetProgramInfoLog(disp, parameters) (*((disp)->GetProgramInfoLog)) parameters
-#define GET_GetProgramInfoLog(disp) ((disp)->GetProgramInfoLog)
-#define SET_GetProgramInfoLog(disp, fn) ((disp)->GetProgramInfoLog = fn)
-#define CALL_GetProgramiv(disp, parameters) (*((disp)->GetProgramiv)) parameters
-#define GET_GetProgramiv(disp) ((disp)->GetProgramiv)
-#define SET_GetProgramiv(disp, fn) ((disp)->GetProgramiv = fn)
-#define CALL_GetShaderInfoLog(disp, parameters) (*((disp)->GetShaderInfoLog)) parameters
-#define GET_GetShaderInfoLog(disp) ((disp)->GetShaderInfoLog)
-#define SET_GetShaderInfoLog(disp, fn) ((disp)->GetShaderInfoLog = fn)
-#define CALL_GetShaderiv(disp, parameters) (*((disp)->GetShaderiv)) parameters
-#define GET_GetShaderiv(disp) ((disp)->GetShaderiv)
-#define SET_GetShaderiv(disp, fn) ((disp)->GetShaderiv = fn)
-#define CALL_IsProgram(disp, parameters) (*((disp)->IsProgram)) parameters
-#define GET_IsProgram(disp) ((disp)->IsProgram)
-#define SET_IsProgram(disp, fn) ((disp)->IsProgram = fn)
-#define CALL_IsShader(disp, parameters) (*((disp)->IsShader)) parameters
-#define GET_IsShader(disp) ((disp)->IsShader)
-#define SET_IsShader(disp, fn) ((disp)->IsShader = fn)
-#define CALL_StencilFuncSeparate(disp, parameters) (*((disp)->StencilFuncSeparate)) parameters
-#define GET_StencilFuncSeparate(disp) ((disp)->StencilFuncSeparate)
-#define SET_StencilFuncSeparate(disp, fn) ((disp)->StencilFuncSeparate = fn)
-#define CALL_StencilMaskSeparate(disp, parameters) (*((disp)->StencilMaskSeparate)) parameters
-#define GET_StencilMaskSeparate(disp) ((disp)->StencilMaskSeparate)
-#define SET_StencilMaskSeparate(disp, fn) ((disp)->StencilMaskSeparate = fn)
-#define CALL_StencilOpSeparate(disp, parameters) (*((disp)->StencilOpSeparate)) parameters
-#define GET_StencilOpSeparate(disp) ((disp)->StencilOpSeparate)
-#define SET_StencilOpSeparate(disp, fn) ((disp)->StencilOpSeparate = fn)
-#define CALL_UniformMatrix2x3fv(disp, parameters) (*((disp)->UniformMatrix2x3fv)) parameters
-#define GET_UniformMatrix2x3fv(disp) ((disp)->UniformMatrix2x3fv)
-#define SET_UniformMatrix2x3fv(disp, fn) ((disp)->UniformMatrix2x3fv = fn)
-#define CALL_UniformMatrix2x4fv(disp, parameters) (*((disp)->UniformMatrix2x4fv)) parameters
-#define GET_UniformMatrix2x4fv(disp) ((disp)->UniformMatrix2x4fv)
-#define SET_UniformMatrix2x4fv(disp, fn) ((disp)->UniformMatrix2x4fv = fn)
-#define CALL_UniformMatrix3x2fv(disp, parameters) (*((disp)->UniformMatrix3x2fv)) parameters
-#define GET_UniformMatrix3x2fv(disp) ((disp)->UniformMatrix3x2fv)
-#define SET_UniformMatrix3x2fv(disp, fn) ((disp)->UniformMatrix3x2fv = fn)
-#define CALL_UniformMatrix3x4fv(disp, parameters) (*((disp)->UniformMatrix3x4fv)) parameters
-#define GET_UniformMatrix3x4fv(disp) ((disp)->UniformMatrix3x4fv)
-#define SET_UniformMatrix3x4fv(disp, fn) ((disp)->UniformMatrix3x4fv = fn)
-#define CALL_UniformMatrix4x2fv(disp, parameters) (*((disp)->UniformMatrix4x2fv)) parameters
-#define GET_UniformMatrix4x2fv(disp) ((disp)->UniformMatrix4x2fv)
-#define SET_UniformMatrix4x2fv(disp, fn) ((disp)->UniformMatrix4x2fv = fn)
-#define CALL_UniformMatrix4x3fv(disp, parameters) (*((disp)->UniformMatrix4x3fv)) parameters
-#define GET_UniformMatrix4x3fv(disp) ((disp)->UniformMatrix4x3fv)
-#define SET_UniformMatrix4x3fv(disp, fn) ((disp)->UniformMatrix4x3fv = fn)
-#define CALL_DrawArraysInstanced(disp, parameters) (*((disp)->DrawArraysInstanced)) parameters
-#define GET_DrawArraysInstanced(disp) ((disp)->DrawArraysInstanced)
-#define SET_DrawArraysInstanced(disp, fn) ((disp)->DrawArraysInstanced = fn)
-#define CALL_DrawElementsInstanced(disp, parameters) (*((disp)->DrawElementsInstanced)) parameters
-#define GET_DrawElementsInstanced(disp) ((disp)->DrawElementsInstanced)
-#define SET_DrawElementsInstanced(disp, fn) ((disp)->DrawElementsInstanced = fn)
-#define CALL_LoadTransposeMatrixdARB(disp, parameters) (*((disp)->LoadTransposeMatrixdARB)) parameters
-#define GET_LoadTransposeMatrixdARB(disp) ((disp)->LoadTransposeMatrixdARB)
-#define SET_LoadTransposeMatrixdARB(disp, fn) ((disp)->LoadTransposeMatrixdARB = fn)
-#define CALL_LoadTransposeMatrixfARB(disp, parameters) (*((disp)->LoadTransposeMatrixfARB)) parameters
-#define GET_LoadTransposeMatrixfARB(disp) ((disp)->LoadTransposeMatrixfARB)
-#define SET_LoadTransposeMatrixfARB(disp, fn) ((disp)->LoadTransposeMatrixfARB = fn)
-#define CALL_MultTransposeMatrixdARB(disp, parameters) (*((disp)->MultTransposeMatrixdARB)) parameters
-#define GET_MultTransposeMatrixdARB(disp) ((disp)->MultTransposeMatrixdARB)
-#define SET_MultTransposeMatrixdARB(disp, fn) ((disp)->MultTransposeMatrixdARB = fn)
-#define CALL_MultTransposeMatrixfARB(disp, parameters) (*((disp)->MultTransposeMatrixfARB)) parameters
-#define GET_MultTransposeMatrixfARB(disp) ((disp)->MultTransposeMatrixfARB)
-#define SET_MultTransposeMatrixfARB(disp, fn) ((disp)->MultTransposeMatrixfARB = fn)
-#define CALL_SampleCoverageARB(disp, parameters) (*((disp)->SampleCoverageARB)) parameters
-#define GET_SampleCoverageARB(disp) ((disp)->SampleCoverageARB)
-#define SET_SampleCoverageARB(disp, fn) ((disp)->SampleCoverageARB = fn)
-#define CALL_CompressedTexImage1DARB(disp, parameters) (*((disp)->CompressedTexImage1DARB)) parameters
-#define GET_CompressedTexImage1DARB(disp) ((disp)->CompressedTexImage1DARB)
-#define SET_CompressedTexImage1DARB(disp, fn) ((disp)->CompressedTexImage1DARB = fn)
-#define CALL_CompressedTexImage2DARB(disp, parameters) (*((disp)->CompressedTexImage2DARB)) parameters
-#define GET_CompressedTexImage2DARB(disp) ((disp)->CompressedTexImage2DARB)
-#define SET_CompressedTexImage2DARB(disp, fn) ((disp)->CompressedTexImage2DARB = fn)
-#define CALL_CompressedTexImage3DARB(disp, parameters) (*((disp)->CompressedTexImage3DARB)) parameters
-#define GET_CompressedTexImage3DARB(disp) ((disp)->CompressedTexImage3DARB)
-#define SET_CompressedTexImage3DARB(disp, fn) ((disp)->CompressedTexImage3DARB = fn)
-#define CALL_CompressedTexSubImage1DARB(disp, parameters) (*((disp)->CompressedTexSubImage1DARB)) parameters
-#define GET_CompressedTexSubImage1DARB(disp) ((disp)->CompressedTexSubImage1DARB)
-#define SET_CompressedTexSubImage1DARB(disp, fn) ((disp)->CompressedTexSubImage1DARB = fn)
-#define CALL_CompressedTexSubImage2DARB(disp, parameters) (*((disp)->CompressedTexSubImage2DARB)) parameters
-#define GET_CompressedTexSubImage2DARB(disp) ((disp)->CompressedTexSubImage2DARB)
-#define SET_CompressedTexSubImage2DARB(disp, fn) ((disp)->CompressedTexSubImage2DARB = fn)
-#define CALL_CompressedTexSubImage3DARB(disp, parameters) (*((disp)->CompressedTexSubImage3DARB)) parameters
-#define GET_CompressedTexSubImage3DARB(disp) ((disp)->CompressedTexSubImage3DARB)
-#define SET_CompressedTexSubImage3DARB(disp, fn) ((disp)->CompressedTexSubImage3DARB = fn)
-#define CALL_GetCompressedTexImageARB(disp, parameters) (*((disp)->GetCompressedTexImageARB)) parameters
-#define GET_GetCompressedTexImageARB(disp) ((disp)->GetCompressedTexImageARB)
-#define SET_GetCompressedTexImageARB(disp, fn) ((disp)->GetCompressedTexImageARB = fn)
-#define CALL_DisableVertexAttribArrayARB(disp, parameters) (*((disp)->DisableVertexAttribArrayARB)) parameters
-#define GET_DisableVertexAttribArrayARB(disp) ((disp)->DisableVertexAttribArrayARB)
-#define SET_DisableVertexAttribArrayARB(disp, fn) ((disp)->DisableVertexAttribArrayARB = fn)
-#define CALL_EnableVertexAttribArrayARB(disp, parameters) (*((disp)->EnableVertexAttribArrayARB)) parameters
-#define GET_EnableVertexAttribArrayARB(disp) ((disp)->EnableVertexAttribArrayARB)
-#define SET_EnableVertexAttribArrayARB(disp, fn) ((disp)->EnableVertexAttribArrayARB = fn)
-#define CALL_GetProgramEnvParameterdvARB(disp, parameters) (*((disp)->GetProgramEnvParameterdvARB)) parameters
-#define GET_GetProgramEnvParameterdvARB(disp) ((disp)->GetProgramEnvParameterdvARB)
-#define SET_GetProgramEnvParameterdvARB(disp, fn) ((disp)->GetProgramEnvParameterdvARB = fn)
-#define CALL_GetProgramEnvParameterfvARB(disp, parameters) (*((disp)->GetProgramEnvParameterfvARB)) parameters
-#define GET_GetProgramEnvParameterfvARB(disp) ((disp)->GetProgramEnvParameterfvARB)
-#define SET_GetProgramEnvParameterfvARB(disp, fn) ((disp)->GetProgramEnvParameterfvARB = fn)
-#define CALL_GetProgramLocalParameterdvARB(disp, parameters) (*((disp)->GetProgramLocalParameterdvARB)) parameters
-#define GET_GetProgramLocalParameterdvARB(disp) ((disp)->GetProgramLocalParameterdvARB)
-#define SET_GetProgramLocalParameterdvARB(disp, fn) ((disp)->GetProgramLocalParameterdvARB = fn)
-#define CALL_GetProgramLocalParameterfvARB(disp, parameters) (*((disp)->GetProgramLocalParameterfvARB)) parameters
-#define GET_GetProgramLocalParameterfvARB(disp) ((disp)->GetProgramLocalParameterfvARB)
-#define SET_GetProgramLocalParameterfvARB(disp, fn) ((disp)->GetProgramLocalParameterfvARB = fn)
-#define CALL_GetProgramStringARB(disp, parameters) (*((disp)->GetProgramStringARB)) parameters
-#define GET_GetProgramStringARB(disp) ((disp)->GetProgramStringARB)
-#define SET_GetProgramStringARB(disp, fn) ((disp)->GetProgramStringARB = fn)
-#define CALL_GetProgramivARB(disp, parameters) (*((disp)->GetProgramivARB)) parameters
-#define GET_GetProgramivARB(disp) ((disp)->GetProgramivARB)
-#define SET_GetProgramivARB(disp, fn) ((disp)->GetProgramivARB = fn)
-#define CALL_GetVertexAttribdvARB(disp, parameters) (*((disp)->GetVertexAttribdvARB)) parameters
-#define GET_GetVertexAttribdvARB(disp) ((disp)->GetVertexAttribdvARB)
-#define SET_GetVertexAttribdvARB(disp, fn) ((disp)->GetVertexAttribdvARB = fn)
-#define CALL_GetVertexAttribfvARB(disp, parameters) (*((disp)->GetVertexAttribfvARB)) parameters
-#define GET_GetVertexAttribfvARB(disp) ((disp)->GetVertexAttribfvARB)
-#define SET_GetVertexAttribfvARB(disp, fn) ((disp)->GetVertexAttribfvARB = fn)
-#define CALL_GetVertexAttribivARB(disp, parameters) (*((disp)->GetVertexAttribivARB)) parameters
-#define GET_GetVertexAttribivARB(disp) ((disp)->GetVertexAttribivARB)
-#define SET_GetVertexAttribivARB(disp, fn) ((disp)->GetVertexAttribivARB = fn)
-#define CALL_ProgramEnvParameter4dARB(disp, parameters) (*((disp)->ProgramEnvParameter4dARB)) parameters
-#define GET_ProgramEnvParameter4dARB(disp) ((disp)->ProgramEnvParameter4dARB)
-#define SET_ProgramEnvParameter4dARB(disp, fn) ((disp)->ProgramEnvParameter4dARB = fn)
-#define CALL_ProgramEnvParameter4dvARB(disp, parameters) (*((disp)->ProgramEnvParameter4dvARB)) parameters
-#define GET_ProgramEnvParameter4dvARB(disp) ((disp)->ProgramEnvParameter4dvARB)
-#define SET_ProgramEnvParameter4dvARB(disp, fn) ((disp)->ProgramEnvParameter4dvARB = fn)
-#define CALL_ProgramEnvParameter4fARB(disp, parameters) (*((disp)->ProgramEnvParameter4fARB)) parameters
-#define GET_ProgramEnvParameter4fARB(disp) ((disp)->ProgramEnvParameter4fARB)
-#define SET_ProgramEnvParameter4fARB(disp, fn) ((disp)->ProgramEnvParameter4fARB = fn)
-#define CALL_ProgramEnvParameter4fvARB(disp, parameters) (*((disp)->ProgramEnvParameter4fvARB)) parameters
-#define GET_ProgramEnvParameter4fvARB(disp) ((disp)->ProgramEnvParameter4fvARB)
-#define SET_ProgramEnvParameter4fvARB(disp, fn) ((disp)->ProgramEnvParameter4fvARB = fn)
-#define CALL_ProgramLocalParameter4dARB(disp, parameters) (*((disp)->ProgramLocalParameter4dARB)) parameters
-#define GET_ProgramLocalParameter4dARB(disp) ((disp)->ProgramLocalParameter4dARB)
-#define SET_ProgramLocalParameter4dARB(disp, fn) ((disp)->ProgramLocalParameter4dARB = fn)
-#define CALL_ProgramLocalParameter4dvARB(disp, parameters) (*((disp)->ProgramLocalParameter4dvARB)) parameters
-#define GET_ProgramLocalParameter4dvARB(disp) ((disp)->ProgramLocalParameter4dvARB)
-#define SET_ProgramLocalParameter4dvARB(disp, fn) ((disp)->ProgramLocalParameter4dvARB = fn)
-#define CALL_ProgramLocalParameter4fARB(disp, parameters) (*((disp)->ProgramLocalParameter4fARB)) parameters
-#define GET_ProgramLocalParameter4fARB(disp) ((disp)->ProgramLocalParameter4fARB)
-#define SET_ProgramLocalParameter4fARB(disp, fn) ((disp)->ProgramLocalParameter4fARB = fn)
-#define CALL_ProgramLocalParameter4fvARB(disp, parameters) (*((disp)->ProgramLocalParameter4fvARB)) parameters
-#define GET_ProgramLocalParameter4fvARB(disp) ((disp)->ProgramLocalParameter4fvARB)
-#define SET_ProgramLocalParameter4fvARB(disp, fn) ((disp)->ProgramLocalParameter4fvARB = fn)
-#define CALL_ProgramStringARB(disp, parameters) (*((disp)->ProgramStringARB)) parameters
-#define GET_ProgramStringARB(disp) ((disp)->ProgramStringARB)
-#define SET_ProgramStringARB(disp, fn) ((disp)->ProgramStringARB = fn)
-#define CALL_VertexAttrib1dARB(disp, parameters) (*((disp)->VertexAttrib1dARB)) parameters
-#define GET_VertexAttrib1dARB(disp) ((disp)->VertexAttrib1dARB)
-#define SET_VertexAttrib1dARB(disp, fn) ((disp)->VertexAttrib1dARB = fn)
-#define CALL_VertexAttrib1dvARB(disp, parameters) (*((disp)->VertexAttrib1dvARB)) parameters
-#define GET_VertexAttrib1dvARB(disp) ((disp)->VertexAttrib1dvARB)
-#define SET_VertexAttrib1dvARB(disp, fn) ((disp)->VertexAttrib1dvARB = fn)
-#define CALL_VertexAttrib1fARB(disp, parameters) (*((disp)->VertexAttrib1fARB)) parameters
-#define GET_VertexAttrib1fARB(disp) ((disp)->VertexAttrib1fARB)
-#define SET_VertexAttrib1fARB(disp, fn) ((disp)->VertexAttrib1fARB = fn)
-#define CALL_VertexAttrib1fvARB(disp, parameters) (*((disp)->VertexAttrib1fvARB)) parameters
-#define GET_VertexAttrib1fvARB(disp) ((disp)->VertexAttrib1fvARB)
-#define SET_VertexAttrib1fvARB(disp, fn) ((disp)->VertexAttrib1fvARB = fn)
-#define CALL_VertexAttrib1sARB(disp, parameters) (*((disp)->VertexAttrib1sARB)) parameters
-#define GET_VertexAttrib1sARB(disp) ((disp)->VertexAttrib1sARB)
-#define SET_VertexAttrib1sARB(disp, fn) ((disp)->VertexAttrib1sARB = fn)
-#define CALL_VertexAttrib1svARB(disp, parameters) (*((disp)->VertexAttrib1svARB)) parameters
-#define GET_VertexAttrib1svARB(disp) ((disp)->VertexAttrib1svARB)
-#define SET_VertexAttrib1svARB(disp, fn) ((disp)->VertexAttrib1svARB = fn)
-#define CALL_VertexAttrib2dARB(disp, parameters) (*((disp)->VertexAttrib2dARB)) parameters
-#define GET_VertexAttrib2dARB(disp) ((disp)->VertexAttrib2dARB)
-#define SET_VertexAttrib2dARB(disp, fn) ((disp)->VertexAttrib2dARB = fn)
-#define CALL_VertexAttrib2dvARB(disp, parameters) (*((disp)->VertexAttrib2dvARB)) parameters
-#define GET_VertexAttrib2dvARB(disp) ((disp)->VertexAttrib2dvARB)
-#define SET_VertexAttrib2dvARB(disp, fn) ((disp)->VertexAttrib2dvARB = fn)
-#define CALL_VertexAttrib2fARB(disp, parameters) (*((disp)->VertexAttrib2fARB)) parameters
-#define GET_VertexAttrib2fARB(disp) ((disp)->VertexAttrib2fARB)
-#define SET_VertexAttrib2fARB(disp, fn) ((disp)->VertexAttrib2fARB = fn)
-#define CALL_VertexAttrib2fvARB(disp, parameters) (*((disp)->VertexAttrib2fvARB)) parameters
-#define GET_VertexAttrib2fvARB(disp) ((disp)->VertexAttrib2fvARB)
-#define SET_VertexAttrib2fvARB(disp, fn) ((disp)->VertexAttrib2fvARB = fn)
-#define CALL_VertexAttrib2sARB(disp, parameters) (*((disp)->VertexAttrib2sARB)) parameters
-#define GET_VertexAttrib2sARB(disp) ((disp)->VertexAttrib2sARB)
-#define SET_VertexAttrib2sARB(disp, fn) ((disp)->VertexAttrib2sARB = fn)
-#define CALL_VertexAttrib2svARB(disp, parameters) (*((disp)->VertexAttrib2svARB)) parameters
-#define GET_VertexAttrib2svARB(disp) ((disp)->VertexAttrib2svARB)
-#define SET_VertexAttrib2svARB(disp, fn) ((disp)->VertexAttrib2svARB = fn)
-#define CALL_VertexAttrib3dARB(disp, parameters) (*((disp)->VertexAttrib3dARB)) parameters
-#define GET_VertexAttrib3dARB(disp) ((disp)->VertexAttrib3dARB)
-#define SET_VertexAttrib3dARB(disp, fn) ((disp)->VertexAttrib3dARB = fn)
-#define CALL_VertexAttrib3dvARB(disp, parameters) (*((disp)->VertexAttrib3dvARB)) parameters
-#define GET_VertexAttrib3dvARB(disp) ((disp)->VertexAttrib3dvARB)
-#define SET_VertexAttrib3dvARB(disp, fn) ((disp)->VertexAttrib3dvARB = fn)
-#define CALL_VertexAttrib3fARB(disp, parameters) (*((disp)->VertexAttrib3fARB)) parameters
-#define GET_VertexAttrib3fARB(disp) ((disp)->VertexAttrib3fARB)
-#define SET_VertexAttrib3fARB(disp, fn) ((disp)->VertexAttrib3fARB = fn)
-#define CALL_VertexAttrib3fvARB(disp, parameters) (*((disp)->VertexAttrib3fvARB)) parameters
-#define GET_VertexAttrib3fvARB(disp) ((disp)->VertexAttrib3fvARB)
-#define SET_VertexAttrib3fvARB(disp, fn) ((disp)->VertexAttrib3fvARB = fn)
-#define CALL_VertexAttrib3sARB(disp, parameters) (*((disp)->VertexAttrib3sARB)) parameters
-#define GET_VertexAttrib3sARB(disp) ((disp)->VertexAttrib3sARB)
-#define SET_VertexAttrib3sARB(disp, fn) ((disp)->VertexAttrib3sARB = fn)
-#define CALL_VertexAttrib3svARB(disp, parameters) (*((disp)->VertexAttrib3svARB)) parameters
-#define GET_VertexAttrib3svARB(disp) ((disp)->VertexAttrib3svARB)
-#define SET_VertexAttrib3svARB(disp, fn) ((disp)->VertexAttrib3svARB = fn)
-#define CALL_VertexAttrib4NbvARB(disp, parameters) (*((disp)->VertexAttrib4NbvARB)) parameters
-#define GET_VertexAttrib4NbvARB(disp) ((disp)->VertexAttrib4NbvARB)
-#define SET_VertexAttrib4NbvARB(disp, fn) ((disp)->VertexAttrib4NbvARB = fn)
-#define CALL_VertexAttrib4NivARB(disp, parameters) (*((disp)->VertexAttrib4NivARB)) parameters
-#define GET_VertexAttrib4NivARB(disp) ((disp)->VertexAttrib4NivARB)
-#define SET_VertexAttrib4NivARB(disp, fn) ((disp)->VertexAttrib4NivARB = fn)
-#define CALL_VertexAttrib4NsvARB(disp, parameters) (*((disp)->VertexAttrib4NsvARB)) parameters
-#define GET_VertexAttrib4NsvARB(disp) ((disp)->VertexAttrib4NsvARB)
-#define SET_VertexAttrib4NsvARB(disp, fn) ((disp)->VertexAttrib4NsvARB = fn)
-#define CALL_VertexAttrib4NubARB(disp, parameters) (*((disp)->VertexAttrib4NubARB)) parameters
-#define GET_VertexAttrib4NubARB(disp) ((disp)->VertexAttrib4NubARB)
-#define SET_VertexAttrib4NubARB(disp, fn) ((disp)->VertexAttrib4NubARB = fn)
-#define CALL_VertexAttrib4NubvARB(disp, parameters) (*((disp)->VertexAttrib4NubvARB)) parameters
-#define GET_VertexAttrib4NubvARB(disp) ((disp)->VertexAttrib4NubvARB)
-#define SET_VertexAttrib4NubvARB(disp, fn) ((disp)->VertexAttrib4NubvARB = fn)
-#define CALL_VertexAttrib4NuivARB(disp, parameters) (*((disp)->VertexAttrib4NuivARB)) parameters
-#define GET_VertexAttrib4NuivARB(disp) ((disp)->VertexAttrib4NuivARB)
-#define SET_VertexAttrib4NuivARB(disp, fn) ((disp)->VertexAttrib4NuivARB = fn)
-#define CALL_VertexAttrib4NusvARB(disp, parameters) (*((disp)->VertexAttrib4NusvARB)) parameters
-#define GET_VertexAttrib4NusvARB(disp) ((disp)->VertexAttrib4NusvARB)
-#define SET_VertexAttrib4NusvARB(disp, fn) ((disp)->VertexAttrib4NusvARB = fn)
-#define CALL_VertexAttrib4bvARB(disp, parameters) (*((disp)->VertexAttrib4bvARB)) parameters
-#define GET_VertexAttrib4bvARB(disp) ((disp)->VertexAttrib4bvARB)
-#define SET_VertexAttrib4bvARB(disp, fn) ((disp)->VertexAttrib4bvARB = fn)
-#define CALL_VertexAttrib4dARB(disp, parameters) (*((disp)->VertexAttrib4dARB)) parameters
-#define GET_VertexAttrib4dARB(disp) ((disp)->VertexAttrib4dARB)
-#define SET_VertexAttrib4dARB(disp, fn) ((disp)->VertexAttrib4dARB = fn)
-#define CALL_VertexAttrib4dvARB(disp, parameters) (*((disp)->VertexAttrib4dvARB)) parameters
-#define GET_VertexAttrib4dvARB(disp) ((disp)->VertexAttrib4dvARB)
-#define SET_VertexAttrib4dvARB(disp, fn) ((disp)->VertexAttrib4dvARB = fn)
-#define CALL_VertexAttrib4fARB(disp, parameters) (*((disp)->VertexAttrib4fARB)) parameters
-#define GET_VertexAttrib4fARB(disp) ((disp)->VertexAttrib4fARB)
-#define SET_VertexAttrib4fARB(disp, fn) ((disp)->VertexAttrib4fARB = fn)
-#define CALL_VertexAttrib4fvARB(disp, parameters) (*((disp)->VertexAttrib4fvARB)) parameters
-#define GET_VertexAttrib4fvARB(disp) ((disp)->VertexAttrib4fvARB)
-#define SET_VertexAttrib4fvARB(disp, fn) ((disp)->VertexAttrib4fvARB = fn)
-#define CALL_VertexAttrib4ivARB(disp, parameters) (*((disp)->VertexAttrib4ivARB)) parameters
-#define GET_VertexAttrib4ivARB(disp) ((disp)->VertexAttrib4ivARB)
-#define SET_VertexAttrib4ivARB(disp, fn) ((disp)->VertexAttrib4ivARB = fn)
-#define CALL_VertexAttrib4sARB(disp, parameters) (*((disp)->VertexAttrib4sARB)) parameters
-#define GET_VertexAttrib4sARB(disp) ((disp)->VertexAttrib4sARB)
-#define SET_VertexAttrib4sARB(disp, fn) ((disp)->VertexAttrib4sARB = fn)
-#define CALL_VertexAttrib4svARB(disp, parameters) (*((disp)->VertexAttrib4svARB)) parameters
-#define GET_VertexAttrib4svARB(disp) ((disp)->VertexAttrib4svARB)
-#define SET_VertexAttrib4svARB(disp, fn) ((disp)->VertexAttrib4svARB = fn)
-#define CALL_VertexAttrib4ubvARB(disp, parameters) (*((disp)->VertexAttrib4ubvARB)) parameters
-#define GET_VertexAttrib4ubvARB(disp) ((disp)->VertexAttrib4ubvARB)
-#define SET_VertexAttrib4ubvARB(disp, fn) ((disp)->VertexAttrib4ubvARB = fn)
-#define CALL_VertexAttrib4uivARB(disp, parameters) (*((disp)->VertexAttrib4uivARB)) parameters
-#define GET_VertexAttrib4uivARB(disp) ((disp)->VertexAttrib4uivARB)
-#define SET_VertexAttrib4uivARB(disp, fn) ((disp)->VertexAttrib4uivARB = fn)
-#define CALL_VertexAttrib4usvARB(disp, parameters) (*((disp)->VertexAttrib4usvARB)) parameters
-#define GET_VertexAttrib4usvARB(disp) ((disp)->VertexAttrib4usvARB)
-#define SET_VertexAttrib4usvARB(disp, fn) ((disp)->VertexAttrib4usvARB = fn)
-#define CALL_VertexAttribPointerARB(disp, parameters) (*((disp)->VertexAttribPointerARB)) parameters
-#define GET_VertexAttribPointerARB(disp) ((disp)->VertexAttribPointerARB)
-#define SET_VertexAttribPointerARB(disp, fn) ((disp)->VertexAttribPointerARB = fn)
-#define CALL_BindBufferARB(disp, parameters) (*((disp)->BindBufferARB)) parameters
-#define GET_BindBufferARB(disp) ((disp)->BindBufferARB)
-#define SET_BindBufferARB(disp, fn) ((disp)->BindBufferARB = fn)
-#define CALL_BufferDataARB(disp, parameters) (*((disp)->BufferDataARB)) parameters
-#define GET_BufferDataARB(disp) ((disp)->BufferDataARB)
-#define SET_BufferDataARB(disp, fn) ((disp)->BufferDataARB = fn)
-#define CALL_BufferSubDataARB(disp, parameters) (*((disp)->BufferSubDataARB)) parameters
-#define GET_BufferSubDataARB(disp) ((disp)->BufferSubDataARB)
-#define SET_BufferSubDataARB(disp, fn) ((disp)->BufferSubDataARB = fn)
-#define CALL_DeleteBuffersARB(disp, parameters) (*((disp)->DeleteBuffersARB)) parameters
-#define GET_DeleteBuffersARB(disp) ((disp)->DeleteBuffersARB)
-#define SET_DeleteBuffersARB(disp, fn) ((disp)->DeleteBuffersARB = fn)
-#define CALL_GenBuffersARB(disp, parameters) (*((disp)->GenBuffersARB)) parameters
-#define GET_GenBuffersARB(disp) ((disp)->GenBuffersARB)
-#define SET_GenBuffersARB(disp, fn) ((disp)->GenBuffersARB = fn)
-#define CALL_GetBufferParameterivARB(disp, parameters) (*((disp)->GetBufferParameterivARB)) parameters
-#define GET_GetBufferParameterivARB(disp) ((disp)->GetBufferParameterivARB)
-#define SET_GetBufferParameterivARB(disp, fn) ((disp)->GetBufferParameterivARB = fn)
-#define CALL_GetBufferPointervARB(disp, parameters) (*((disp)->GetBufferPointervARB)) parameters
-#define GET_GetBufferPointervARB(disp) ((disp)->GetBufferPointervARB)
-#define SET_GetBufferPointervARB(disp, fn) ((disp)->GetBufferPointervARB = fn)
-#define CALL_GetBufferSubDataARB(disp, parameters) (*((disp)->GetBufferSubDataARB)) parameters
-#define GET_GetBufferSubDataARB(disp) ((disp)->GetBufferSubDataARB)
-#define SET_GetBufferSubDataARB(disp, fn) ((disp)->GetBufferSubDataARB = fn)
-#define CALL_IsBufferARB(disp, parameters) (*((disp)->IsBufferARB)) parameters
-#define GET_IsBufferARB(disp) ((disp)->IsBufferARB)
-#define SET_IsBufferARB(disp, fn) ((disp)->IsBufferARB = fn)
-#define CALL_MapBufferARB(disp, parameters) (*((disp)->MapBufferARB)) parameters
-#define GET_MapBufferARB(disp) ((disp)->MapBufferARB)
-#define SET_MapBufferARB(disp, fn) ((disp)->MapBufferARB = fn)
-#define CALL_UnmapBufferARB(disp, parameters) (*((disp)->UnmapBufferARB)) parameters
-#define GET_UnmapBufferARB(disp) ((disp)->UnmapBufferARB)
-#define SET_UnmapBufferARB(disp, fn) ((disp)->UnmapBufferARB = fn)
-#define CALL_BeginQueryARB(disp, parameters) (*((disp)->BeginQueryARB)) parameters
-#define GET_BeginQueryARB(disp) ((disp)->BeginQueryARB)
-#define SET_BeginQueryARB(disp, fn) ((disp)->BeginQueryARB = fn)
-#define CALL_DeleteQueriesARB(disp, parameters) (*((disp)->DeleteQueriesARB)) parameters
-#define GET_DeleteQueriesARB(disp) ((disp)->DeleteQueriesARB)
-#define SET_DeleteQueriesARB(disp, fn) ((disp)->DeleteQueriesARB = fn)
-#define CALL_EndQueryARB(disp, parameters) (*((disp)->EndQueryARB)) parameters
-#define GET_EndQueryARB(disp) ((disp)->EndQueryARB)
-#define SET_EndQueryARB(disp, fn) ((disp)->EndQueryARB = fn)
-#define CALL_GenQueriesARB(disp, parameters) (*((disp)->GenQueriesARB)) parameters
-#define GET_GenQueriesARB(disp) ((disp)->GenQueriesARB)
-#define SET_GenQueriesARB(disp, fn) ((disp)->GenQueriesARB = fn)
-#define CALL_GetQueryObjectivARB(disp, parameters) (*((disp)->GetQueryObjectivARB)) parameters
-#define GET_GetQueryObjectivARB(disp) ((disp)->GetQueryObjectivARB)
-#define SET_GetQueryObjectivARB(disp, fn) ((disp)->GetQueryObjectivARB = fn)
-#define CALL_GetQueryObjectuivARB(disp, parameters) (*((disp)->GetQueryObjectuivARB)) parameters
-#define GET_GetQueryObjectuivARB(disp) ((disp)->GetQueryObjectuivARB)
-#define SET_GetQueryObjectuivARB(disp, fn) ((disp)->GetQueryObjectuivARB = fn)
-#define CALL_GetQueryivARB(disp, parameters) (*((disp)->GetQueryivARB)) parameters
-#define GET_GetQueryivARB(disp) ((disp)->GetQueryivARB)
-#define SET_GetQueryivARB(disp, fn) ((disp)->GetQueryivARB = fn)
-#define CALL_IsQueryARB(disp, parameters) (*((disp)->IsQueryARB)) parameters
-#define GET_IsQueryARB(disp) ((disp)->IsQueryARB)
-#define SET_IsQueryARB(disp, fn) ((disp)->IsQueryARB = fn)
-#define CALL_AttachObjectARB(disp, parameters) (*((disp)->AttachObjectARB)) parameters
-#define GET_AttachObjectARB(disp) ((disp)->AttachObjectARB)
-#define SET_AttachObjectARB(disp, fn) ((disp)->AttachObjectARB = fn)
-#define CALL_CompileShaderARB(disp, parameters) (*((disp)->CompileShaderARB)) parameters
-#define GET_CompileShaderARB(disp) ((disp)->CompileShaderARB)
-#define SET_CompileShaderARB(disp, fn) ((disp)->CompileShaderARB = fn)
-#define CALL_CreateProgramObjectARB(disp, parameters) (*((disp)->CreateProgramObjectARB)) parameters
-#define GET_CreateProgramObjectARB(disp) ((disp)->CreateProgramObjectARB)
-#define SET_CreateProgramObjectARB(disp, fn) ((disp)->CreateProgramObjectARB = fn)
-#define CALL_CreateShaderObjectARB(disp, parameters) (*((disp)->CreateShaderObjectARB)) parameters
-#define GET_CreateShaderObjectARB(disp) ((disp)->CreateShaderObjectARB)
-#define SET_CreateShaderObjectARB(disp, fn) ((disp)->CreateShaderObjectARB = fn)
-#define CALL_DeleteObjectARB(disp, parameters) (*((disp)->DeleteObjectARB)) parameters
-#define GET_DeleteObjectARB(disp) ((disp)->DeleteObjectARB)
-#define SET_DeleteObjectARB(disp, fn) ((disp)->DeleteObjectARB = fn)
-#define CALL_DetachObjectARB(disp, parameters) (*((disp)->DetachObjectARB)) parameters
-#define GET_DetachObjectARB(disp) ((disp)->DetachObjectARB)
-#define SET_DetachObjectARB(disp, fn) ((disp)->DetachObjectARB = fn)
-#define CALL_GetActiveUniformARB(disp, parameters) (*((disp)->GetActiveUniformARB)) parameters
-#define GET_GetActiveUniformARB(disp) ((disp)->GetActiveUniformARB)
-#define SET_GetActiveUniformARB(disp, fn) ((disp)->GetActiveUniformARB = fn)
-#define CALL_GetAttachedObjectsARB(disp, parameters) (*((disp)->GetAttachedObjectsARB)) parameters
-#define GET_GetAttachedObjectsARB(disp) ((disp)->GetAttachedObjectsARB)
-#define SET_GetAttachedObjectsARB(disp, fn) ((disp)->GetAttachedObjectsARB = fn)
-#define CALL_GetHandleARB(disp, parameters) (*((disp)->GetHandleARB)) parameters
-#define GET_GetHandleARB(disp) ((disp)->GetHandleARB)
-#define SET_GetHandleARB(disp, fn) ((disp)->GetHandleARB = fn)
-#define CALL_GetInfoLogARB(disp, parameters) (*((disp)->GetInfoLogARB)) parameters
-#define GET_GetInfoLogARB(disp) ((disp)->GetInfoLogARB)
-#define SET_GetInfoLogARB(disp, fn) ((disp)->GetInfoLogARB = fn)
-#define CALL_GetObjectParameterfvARB(disp, parameters) (*((disp)->GetObjectParameterfvARB)) parameters
-#define GET_GetObjectParameterfvARB(disp) ((disp)->GetObjectParameterfvARB)
-#define SET_GetObjectParameterfvARB(disp, fn) ((disp)->GetObjectParameterfvARB = fn)
-#define CALL_GetObjectParameterivARB(disp, parameters) (*((disp)->GetObjectParameterivARB)) parameters
-#define GET_GetObjectParameterivARB(disp) ((disp)->GetObjectParameterivARB)
-#define SET_GetObjectParameterivARB(disp, fn) ((disp)->GetObjectParameterivARB = fn)
-#define CALL_GetShaderSourceARB(disp, parameters) (*((disp)->GetShaderSourceARB)) parameters
-#define GET_GetShaderSourceARB(disp) ((disp)->GetShaderSourceARB)
-#define SET_GetShaderSourceARB(disp, fn) ((disp)->GetShaderSourceARB = fn)
-#define CALL_GetUniformLocationARB(disp, parameters) (*((disp)->GetUniformLocationARB)) parameters
-#define GET_GetUniformLocationARB(disp) ((disp)->GetUniformLocationARB)
-#define SET_GetUniformLocationARB(disp, fn) ((disp)->GetUniformLocationARB = fn)
-#define CALL_GetUniformfvARB(disp, parameters) (*((disp)->GetUniformfvARB)) parameters
-#define GET_GetUniformfvARB(disp) ((disp)->GetUniformfvARB)
-#define SET_GetUniformfvARB(disp, fn) ((disp)->GetUniformfvARB = fn)
-#define CALL_GetUniformivARB(disp, parameters) (*((disp)->GetUniformivARB)) parameters
-#define GET_GetUniformivARB(disp) ((disp)->GetUniformivARB)
-#define SET_GetUniformivARB(disp, fn) ((disp)->GetUniformivARB = fn)
-#define CALL_LinkProgramARB(disp, parameters) (*((disp)->LinkProgramARB)) parameters
-#define GET_LinkProgramARB(disp) ((disp)->LinkProgramARB)
-#define SET_LinkProgramARB(disp, fn) ((disp)->LinkProgramARB = fn)
-#define CALL_ShaderSourceARB(disp, parameters) (*((disp)->ShaderSourceARB)) parameters
-#define GET_ShaderSourceARB(disp) ((disp)->ShaderSourceARB)
-#define SET_ShaderSourceARB(disp, fn) ((disp)->ShaderSourceARB = fn)
-#define CALL_Uniform1fARB(disp, parameters) (*((disp)->Uniform1fARB)) parameters
-#define GET_Uniform1fARB(disp) ((disp)->Uniform1fARB)
-#define SET_Uniform1fARB(disp, fn) ((disp)->Uniform1fARB = fn)
-#define CALL_Uniform1fvARB(disp, parameters) (*((disp)->Uniform1fvARB)) parameters
-#define GET_Uniform1fvARB(disp) ((disp)->Uniform1fvARB)
-#define SET_Uniform1fvARB(disp, fn) ((disp)->Uniform1fvARB = fn)
-#define CALL_Uniform1iARB(disp, parameters) (*((disp)->Uniform1iARB)) parameters
-#define GET_Uniform1iARB(disp) ((disp)->Uniform1iARB)
-#define SET_Uniform1iARB(disp, fn) ((disp)->Uniform1iARB = fn)
-#define CALL_Uniform1ivARB(disp, parameters) (*((disp)->Uniform1ivARB)) parameters
-#define GET_Uniform1ivARB(disp) ((disp)->Uniform1ivARB)
-#define SET_Uniform1ivARB(disp, fn) ((disp)->Uniform1ivARB = fn)
-#define CALL_Uniform2fARB(disp, parameters) (*((disp)->Uniform2fARB)) parameters
-#define GET_Uniform2fARB(disp) ((disp)->Uniform2fARB)
-#define SET_Uniform2fARB(disp, fn) ((disp)->Uniform2fARB = fn)
-#define CALL_Uniform2fvARB(disp, parameters) (*((disp)->Uniform2fvARB)) parameters
-#define GET_Uniform2fvARB(disp) ((disp)->Uniform2fvARB)
-#define SET_Uniform2fvARB(disp, fn) ((disp)->Uniform2fvARB = fn)
-#define CALL_Uniform2iARB(disp, parameters) (*((disp)->Uniform2iARB)) parameters
-#define GET_Uniform2iARB(disp) ((disp)->Uniform2iARB)
-#define SET_Uniform2iARB(disp, fn) ((disp)->Uniform2iARB = fn)
-#define CALL_Uniform2ivARB(disp, parameters) (*((disp)->Uniform2ivARB)) parameters
-#define GET_Uniform2ivARB(disp) ((disp)->Uniform2ivARB)
-#define SET_Uniform2ivARB(disp, fn) ((disp)->Uniform2ivARB = fn)
-#define CALL_Uniform3fARB(disp, parameters) (*((disp)->Uniform3fARB)) parameters
-#define GET_Uniform3fARB(disp) ((disp)->Uniform3fARB)
-#define SET_Uniform3fARB(disp, fn) ((disp)->Uniform3fARB = fn)
-#define CALL_Uniform3fvARB(disp, parameters) (*((disp)->Uniform3fvARB)) parameters
-#define GET_Uniform3fvARB(disp) ((disp)->Uniform3fvARB)
-#define SET_Uniform3fvARB(disp, fn) ((disp)->Uniform3fvARB = fn)
-#define CALL_Uniform3iARB(disp, parameters) (*((disp)->Uniform3iARB)) parameters
-#define GET_Uniform3iARB(disp) ((disp)->Uniform3iARB)
-#define SET_Uniform3iARB(disp, fn) ((disp)->Uniform3iARB = fn)
-#define CALL_Uniform3ivARB(disp, parameters) (*((disp)->Uniform3ivARB)) parameters
-#define GET_Uniform3ivARB(disp) ((disp)->Uniform3ivARB)
-#define SET_Uniform3ivARB(disp, fn) ((disp)->Uniform3ivARB = fn)
-#define CALL_Uniform4fARB(disp, parameters) (*((disp)->Uniform4fARB)) parameters
-#define GET_Uniform4fARB(disp) ((disp)->Uniform4fARB)
-#define SET_Uniform4fARB(disp, fn) ((disp)->Uniform4fARB = fn)
-#define CALL_Uniform4fvARB(disp, parameters) (*((disp)->Uniform4fvARB)) parameters
-#define GET_Uniform4fvARB(disp) ((disp)->Uniform4fvARB)
-#define SET_Uniform4fvARB(disp, fn) ((disp)->Uniform4fvARB = fn)
-#define CALL_Uniform4iARB(disp, parameters) (*((disp)->Uniform4iARB)) parameters
-#define GET_Uniform4iARB(disp) ((disp)->Uniform4iARB)
-#define SET_Uniform4iARB(disp, fn) ((disp)->Uniform4iARB = fn)
-#define CALL_Uniform4ivARB(disp, parameters) (*((disp)->Uniform4ivARB)) parameters
-#define GET_Uniform4ivARB(disp) ((disp)->Uniform4ivARB)
-#define SET_Uniform4ivARB(disp, fn) ((disp)->Uniform4ivARB = fn)
-#define CALL_UniformMatrix2fvARB(disp, parameters) (*((disp)->UniformMatrix2fvARB)) parameters
-#define GET_UniformMatrix2fvARB(disp) ((disp)->UniformMatrix2fvARB)
-#define SET_UniformMatrix2fvARB(disp, fn) ((disp)->UniformMatrix2fvARB = fn)
-#define CALL_UniformMatrix3fvARB(disp, parameters) (*((disp)->UniformMatrix3fvARB)) parameters
-#define GET_UniformMatrix3fvARB(disp) ((disp)->UniformMatrix3fvARB)
-#define SET_UniformMatrix3fvARB(disp, fn) ((disp)->UniformMatrix3fvARB = fn)
-#define CALL_UniformMatrix4fvARB(disp, parameters) (*((disp)->UniformMatrix4fvARB)) parameters
-#define GET_UniformMatrix4fvARB(disp) ((disp)->UniformMatrix4fvARB)
-#define SET_UniformMatrix4fvARB(disp, fn) ((disp)->UniformMatrix4fvARB = fn)
-#define CALL_UseProgramObjectARB(disp, parameters) (*((disp)->UseProgramObjectARB)) parameters
-#define GET_UseProgramObjectARB(disp) ((disp)->UseProgramObjectARB)
-#define SET_UseProgramObjectARB(disp, fn) ((disp)->UseProgramObjectARB = fn)
-#define CALL_ValidateProgramARB(disp, parameters) (*((disp)->ValidateProgramARB)) parameters
-#define GET_ValidateProgramARB(disp) ((disp)->ValidateProgramARB)
-#define SET_ValidateProgramARB(disp, fn) ((disp)->ValidateProgramARB = fn)
-#define CALL_BindAttribLocationARB(disp, parameters) (*((disp)->BindAttribLocationARB)) parameters
-#define GET_BindAttribLocationARB(disp) ((disp)->BindAttribLocationARB)
-#define SET_BindAttribLocationARB(disp, fn) ((disp)->BindAttribLocationARB = fn)
-#define CALL_GetActiveAttribARB(disp, parameters) (*((disp)->GetActiveAttribARB)) parameters
-#define GET_GetActiveAttribARB(disp) ((disp)->GetActiveAttribARB)
-#define SET_GetActiveAttribARB(disp, fn) ((disp)->GetActiveAttribARB = fn)
-#define CALL_GetAttribLocationARB(disp, parameters) (*((disp)->GetAttribLocationARB)) parameters
-#define GET_GetAttribLocationARB(disp) ((disp)->GetAttribLocationARB)
-#define SET_GetAttribLocationARB(disp, fn) ((disp)->GetAttribLocationARB = fn)
-#define CALL_DrawBuffersARB(disp, parameters) (*((disp)->DrawBuffersARB)) parameters
-#define GET_DrawBuffersARB(disp) ((disp)->DrawBuffersARB)
-#define SET_DrawBuffersARB(disp, fn) ((disp)->DrawBuffersARB = fn)
-#define CALL_RenderbufferStorageMultisample(disp, parameters) (*((disp)->RenderbufferStorageMultisample)) parameters
-#define GET_RenderbufferStorageMultisample(disp) ((disp)->RenderbufferStorageMultisample)
-#define SET_RenderbufferStorageMultisample(disp, fn) ((disp)->RenderbufferStorageMultisample = fn)
-#define CALL_FlushMappedBufferRange(disp, parameters) (*((disp)->FlushMappedBufferRange)) parameters
-#define GET_FlushMappedBufferRange(disp) ((disp)->FlushMappedBufferRange)
-#define SET_FlushMappedBufferRange(disp, fn) ((disp)->FlushMappedBufferRange = fn)
-#define CALL_MapBufferRange(disp, parameters) (*((disp)->MapBufferRange)) parameters
-#define GET_MapBufferRange(disp) ((disp)->MapBufferRange)
-#define SET_MapBufferRange(disp, fn) ((disp)->MapBufferRange = fn)
-#define CALL_BindVertexArray(disp, parameters) (*((disp)->BindVertexArray)) parameters
-#define GET_BindVertexArray(disp) ((disp)->BindVertexArray)
-#define SET_BindVertexArray(disp, fn) ((disp)->BindVertexArray = fn)
-#define CALL_GenVertexArrays(disp, parameters) (*((disp)->GenVertexArrays)) parameters
-#define GET_GenVertexArrays(disp) ((disp)->GenVertexArrays)
-#define SET_GenVertexArrays(disp, fn) ((disp)->GenVertexArrays = fn)
-#define CALL_CopyBufferSubData(disp, parameters) (*((disp)->CopyBufferSubData)) parameters
-#define GET_CopyBufferSubData(disp) ((disp)->CopyBufferSubData)
-#define SET_CopyBufferSubData(disp, fn) ((disp)->CopyBufferSubData = fn)
-#define CALL_ClientWaitSync(disp, parameters) (*((disp)->ClientWaitSync)) parameters
-#define GET_ClientWaitSync(disp) ((disp)->ClientWaitSync)
-#define SET_ClientWaitSync(disp, fn) ((disp)->ClientWaitSync = fn)
-#define CALL_DeleteSync(disp, parameters) (*((disp)->DeleteSync)) parameters
-#define GET_DeleteSync(disp) ((disp)->DeleteSync)
-#define SET_DeleteSync(disp, fn) ((disp)->DeleteSync = fn)
-#define CALL_FenceSync(disp, parameters) (*((disp)->FenceSync)) parameters
-#define GET_FenceSync(disp) ((disp)->FenceSync)
-#define SET_FenceSync(disp, fn) ((disp)->FenceSync = fn)
-#define CALL_GetInteger64v(disp, parameters) (*((disp)->GetInteger64v)) parameters
-#define GET_GetInteger64v(disp) ((disp)->GetInteger64v)
-#define SET_GetInteger64v(disp, fn) ((disp)->GetInteger64v = fn)
-#define CALL_GetSynciv(disp, parameters) (*((disp)->GetSynciv)) parameters
-#define GET_GetSynciv(disp) ((disp)->GetSynciv)
-#define SET_GetSynciv(disp, fn) ((disp)->GetSynciv = fn)
-#define CALL_IsSync(disp, parameters) (*((disp)->IsSync)) parameters
-#define GET_IsSync(disp) ((disp)->IsSync)
-#define SET_IsSync(disp, fn) ((disp)->IsSync = fn)
-#define CALL_WaitSync(disp, parameters) (*((disp)->WaitSync)) parameters
-#define GET_WaitSync(disp) ((disp)->WaitSync)
-#define SET_WaitSync(disp, fn) ((disp)->WaitSync = fn)
-#define CALL_DrawElementsBaseVertex(disp, parameters) (*((disp)->DrawElementsBaseVertex)) parameters
-#define GET_DrawElementsBaseVertex(disp) ((disp)->DrawElementsBaseVertex)
-#define SET_DrawElementsBaseVertex(disp, fn) ((disp)->DrawElementsBaseVertex = fn)
-#define CALL_DrawRangeElementsBaseVertex(disp, parameters) (*((disp)->DrawRangeElementsBaseVertex)) parameters
-#define GET_DrawRangeElementsBaseVertex(disp) ((disp)->DrawRangeElementsBaseVertex)
-#define SET_DrawRangeElementsBaseVertex(disp, fn) ((disp)->DrawRangeElementsBaseVertex = fn)
-#define CALL_MultiDrawElementsBaseVertex(disp, parameters) (*((disp)->MultiDrawElementsBaseVertex)) parameters
-#define GET_MultiDrawElementsBaseVertex(disp) ((disp)->MultiDrawElementsBaseVertex)
-#define SET_MultiDrawElementsBaseVertex(disp, fn) ((disp)->MultiDrawElementsBaseVertex = fn)
-#define CALL_PolygonOffsetEXT(disp, parameters) (*((disp)->PolygonOffsetEXT)) parameters
-#define GET_PolygonOffsetEXT(disp) ((disp)->PolygonOffsetEXT)
-#define SET_PolygonOffsetEXT(disp, fn) ((disp)->PolygonOffsetEXT = fn)
-#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) (*((disp)->GetPixelTexGenParameterfvSGIS)) parameters
-#define GET_GetPixelTexGenParameterfvSGIS(disp) ((disp)->GetPixelTexGenParameterfvSGIS)
-#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) ((disp)->GetPixelTexGenParameterfvSGIS = fn)
-#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) (*((disp)->GetPixelTexGenParameterivSGIS)) parameters
-#define GET_GetPixelTexGenParameterivSGIS(disp) ((disp)->GetPixelTexGenParameterivSGIS)
-#define SET_GetPixelTexGenParameterivSGIS(disp, fn) ((disp)->GetPixelTexGenParameterivSGIS = fn)
-#define CALL_PixelTexGenParameterfSGIS(disp, parameters) (*((disp)->PixelTexGenParameterfSGIS)) parameters
-#define GET_PixelTexGenParameterfSGIS(disp) ((disp)->PixelTexGenParameterfSGIS)
-#define SET_PixelTexGenParameterfSGIS(disp, fn) ((disp)->PixelTexGenParameterfSGIS = fn)
-#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) (*((disp)->PixelTexGenParameterfvSGIS)) parameters
-#define GET_PixelTexGenParameterfvSGIS(disp) ((disp)->PixelTexGenParameterfvSGIS)
-#define SET_PixelTexGenParameterfvSGIS(disp, fn) ((disp)->PixelTexGenParameterfvSGIS = fn)
-#define CALL_PixelTexGenParameteriSGIS(disp, parameters) (*((disp)->PixelTexGenParameteriSGIS)) parameters
-#define GET_PixelTexGenParameteriSGIS(disp) ((disp)->PixelTexGenParameteriSGIS)
-#define SET_PixelTexGenParameteriSGIS(disp, fn) ((disp)->PixelTexGenParameteriSGIS = fn)
-#define CALL_PixelTexGenParameterivSGIS(disp, parameters) (*((disp)->PixelTexGenParameterivSGIS)) parameters
-#define GET_PixelTexGenParameterivSGIS(disp) ((disp)->PixelTexGenParameterivSGIS)
-#define SET_PixelTexGenParameterivSGIS(disp, fn) ((disp)->PixelTexGenParameterivSGIS = fn)
-#define CALL_SampleMaskSGIS(disp, parameters) (*((disp)->SampleMaskSGIS)) parameters
-#define GET_SampleMaskSGIS(disp) ((disp)->SampleMaskSGIS)
-#define SET_SampleMaskSGIS(disp, fn) ((disp)->SampleMaskSGIS = fn)
-#define CALL_SamplePatternSGIS(disp, parameters) (*((disp)->SamplePatternSGIS)) parameters
-#define GET_SamplePatternSGIS(disp) ((disp)->SamplePatternSGIS)
-#define SET_SamplePatternSGIS(disp, fn) ((disp)->SamplePatternSGIS = fn)
-#define CALL_ColorPointerEXT(disp, parameters) (*((disp)->ColorPointerEXT)) parameters
-#define GET_ColorPointerEXT(disp) ((disp)->ColorPointerEXT)
-#define SET_ColorPointerEXT(disp, fn) ((disp)->ColorPointerEXT = fn)
-#define CALL_EdgeFlagPointerEXT(disp, parameters) (*((disp)->EdgeFlagPointerEXT)) parameters
-#define GET_EdgeFlagPointerEXT(disp) ((disp)->EdgeFlagPointerEXT)
-#define SET_EdgeFlagPointerEXT(disp, fn) ((disp)->EdgeFlagPointerEXT = fn)
-#define CALL_IndexPointerEXT(disp, parameters) (*((disp)->IndexPointerEXT)) parameters
-#define GET_IndexPointerEXT(disp) ((disp)->IndexPointerEXT)
-#define SET_IndexPointerEXT(disp, fn) ((disp)->IndexPointerEXT = fn)
-#define CALL_NormalPointerEXT(disp, parameters) (*((disp)->NormalPointerEXT)) parameters
-#define GET_NormalPointerEXT(disp) ((disp)->NormalPointerEXT)
-#define SET_NormalPointerEXT(disp, fn) ((disp)->NormalPointerEXT = fn)
-#define CALL_TexCoordPointerEXT(disp, parameters) (*((disp)->TexCoordPointerEXT)) parameters
-#define GET_TexCoordPointerEXT(disp) ((disp)->TexCoordPointerEXT)
-#define SET_TexCoordPointerEXT(disp, fn) ((disp)->TexCoordPointerEXT = fn)
-#define CALL_VertexPointerEXT(disp, parameters) (*((disp)->VertexPointerEXT)) parameters
-#define GET_VertexPointerEXT(disp) ((disp)->VertexPointerEXT)
-#define SET_VertexPointerEXT(disp, fn) ((disp)->VertexPointerEXT = fn)
-#define CALL_PointParameterfEXT(disp, parameters) (*((disp)->PointParameterfEXT)) parameters
-#define GET_PointParameterfEXT(disp) ((disp)->PointParameterfEXT)
-#define SET_PointParameterfEXT(disp, fn) ((disp)->PointParameterfEXT = fn)
-#define CALL_PointParameterfvEXT(disp, parameters) (*((disp)->PointParameterfvEXT)) parameters
-#define GET_PointParameterfvEXT(disp) ((disp)->PointParameterfvEXT)
-#define SET_PointParameterfvEXT(disp, fn) ((disp)->PointParameterfvEXT = fn)
-#define CALL_LockArraysEXT(disp, parameters) (*((disp)->LockArraysEXT)) parameters
-#define GET_LockArraysEXT(disp) ((disp)->LockArraysEXT)
-#define SET_LockArraysEXT(disp, fn) ((disp)->LockArraysEXT = fn)
-#define CALL_UnlockArraysEXT(disp, parameters) (*((disp)->UnlockArraysEXT)) parameters
-#define GET_UnlockArraysEXT(disp) ((disp)->UnlockArraysEXT)
-#define SET_UnlockArraysEXT(disp, fn) ((disp)->UnlockArraysEXT = fn)
-#define CALL_CullParameterdvEXT(disp, parameters) (*((disp)->CullParameterdvEXT)) parameters
-#define GET_CullParameterdvEXT(disp) ((disp)->CullParameterdvEXT)
-#define SET_CullParameterdvEXT(disp, fn) ((disp)->CullParameterdvEXT = fn)
-#define CALL_CullParameterfvEXT(disp, parameters) (*((disp)->CullParameterfvEXT)) parameters
-#define GET_CullParameterfvEXT(disp) ((disp)->CullParameterfvEXT)
-#define SET_CullParameterfvEXT(disp, fn) ((disp)->CullParameterfvEXT = fn)
-#define CALL_SecondaryColor3bEXT(disp, parameters) (*((disp)->SecondaryColor3bEXT)) parameters
-#define GET_SecondaryColor3bEXT(disp) ((disp)->SecondaryColor3bEXT)
-#define SET_SecondaryColor3bEXT(disp, fn) ((disp)->SecondaryColor3bEXT = fn)
-#define CALL_SecondaryColor3bvEXT(disp, parameters) (*((disp)->SecondaryColor3bvEXT)) parameters
-#define GET_SecondaryColor3bvEXT(disp) ((disp)->SecondaryColor3bvEXT)
-#define SET_SecondaryColor3bvEXT(disp, fn) ((disp)->SecondaryColor3bvEXT = fn)
-#define CALL_SecondaryColor3dEXT(disp, parameters) (*((disp)->SecondaryColor3dEXT)) parameters
-#define GET_SecondaryColor3dEXT(disp) ((disp)->SecondaryColor3dEXT)
-#define SET_SecondaryColor3dEXT(disp, fn) ((disp)->SecondaryColor3dEXT = fn)
-#define CALL_SecondaryColor3dvEXT(disp, parameters) (*((disp)->SecondaryColor3dvEXT)) parameters
-#define GET_SecondaryColor3dvEXT(disp) ((disp)->SecondaryColor3dvEXT)
-#define SET_SecondaryColor3dvEXT(disp, fn) ((disp)->SecondaryColor3dvEXT = fn)
-#define CALL_SecondaryColor3fEXT(disp, parameters) (*((disp)->SecondaryColor3fEXT)) parameters
-#define GET_SecondaryColor3fEXT(disp) ((disp)->SecondaryColor3fEXT)
-#define SET_SecondaryColor3fEXT(disp, fn) ((disp)->SecondaryColor3fEXT = fn)
-#define CALL_SecondaryColor3fvEXT(disp, parameters) (*((disp)->SecondaryColor3fvEXT)) parameters
-#define GET_SecondaryColor3fvEXT(disp) ((disp)->SecondaryColor3fvEXT)
-#define SET_SecondaryColor3fvEXT(disp, fn) ((disp)->SecondaryColor3fvEXT = fn)
-#define CALL_SecondaryColor3iEXT(disp, parameters) (*((disp)->SecondaryColor3iEXT)) parameters
-#define GET_SecondaryColor3iEXT(disp) ((disp)->SecondaryColor3iEXT)
-#define SET_SecondaryColor3iEXT(disp, fn) ((disp)->SecondaryColor3iEXT = fn)
-#define CALL_SecondaryColor3ivEXT(disp, parameters) (*((disp)->SecondaryColor3ivEXT)) parameters
-#define GET_SecondaryColor3ivEXT(disp) ((disp)->SecondaryColor3ivEXT)
-#define SET_SecondaryColor3ivEXT(disp, fn) ((disp)->SecondaryColor3ivEXT = fn)
-#define CALL_SecondaryColor3sEXT(disp, parameters) (*((disp)->SecondaryColor3sEXT)) parameters
-#define GET_SecondaryColor3sEXT(disp) ((disp)->SecondaryColor3sEXT)
-#define SET_SecondaryColor3sEXT(disp, fn) ((disp)->SecondaryColor3sEXT = fn)
-#define CALL_SecondaryColor3svEXT(disp, parameters) (*((disp)->SecondaryColor3svEXT)) parameters
-#define GET_SecondaryColor3svEXT(disp) ((disp)->SecondaryColor3svEXT)
-#define SET_SecondaryColor3svEXT(disp, fn) ((disp)->SecondaryColor3svEXT = fn)
-#define CALL_SecondaryColor3ubEXT(disp, parameters) (*((disp)->SecondaryColor3ubEXT)) parameters
-#define GET_SecondaryColor3ubEXT(disp) ((disp)->SecondaryColor3ubEXT)
-#define SET_SecondaryColor3ubEXT(disp, fn) ((disp)->SecondaryColor3ubEXT = fn)
-#define CALL_SecondaryColor3ubvEXT(disp, parameters) (*((disp)->SecondaryColor3ubvEXT)) parameters
-#define GET_SecondaryColor3ubvEXT(disp) ((disp)->SecondaryColor3ubvEXT)
-#define SET_SecondaryColor3ubvEXT(disp, fn) ((disp)->SecondaryColor3ubvEXT = fn)
-#define CALL_SecondaryColor3uiEXT(disp, parameters) (*((disp)->SecondaryColor3uiEXT)) parameters
-#define GET_SecondaryColor3uiEXT(disp) ((disp)->SecondaryColor3uiEXT)
-#define SET_SecondaryColor3uiEXT(disp, fn) ((disp)->SecondaryColor3uiEXT = fn)
-#define CALL_SecondaryColor3uivEXT(disp, parameters) (*((disp)->SecondaryColor3uivEXT)) parameters
-#define GET_SecondaryColor3uivEXT(disp) ((disp)->SecondaryColor3uivEXT)
-#define SET_SecondaryColor3uivEXT(disp, fn) ((disp)->SecondaryColor3uivEXT = fn)
-#define CALL_SecondaryColor3usEXT(disp, parameters) (*((disp)->SecondaryColor3usEXT)) parameters
-#define GET_SecondaryColor3usEXT(disp) ((disp)->SecondaryColor3usEXT)
-#define SET_SecondaryColor3usEXT(disp, fn) ((disp)->SecondaryColor3usEXT = fn)
-#define CALL_SecondaryColor3usvEXT(disp, parameters) (*((disp)->SecondaryColor3usvEXT)) parameters
-#define GET_SecondaryColor3usvEXT(disp) ((disp)->SecondaryColor3usvEXT)
-#define SET_SecondaryColor3usvEXT(disp, fn) ((disp)->SecondaryColor3usvEXT = fn)
-#define CALL_SecondaryColorPointerEXT(disp, parameters) (*((disp)->SecondaryColorPointerEXT)) parameters
-#define GET_SecondaryColorPointerEXT(disp) ((disp)->SecondaryColorPointerEXT)
-#define SET_SecondaryColorPointerEXT(disp, fn) ((disp)->SecondaryColorPointerEXT = fn)
-#define CALL_MultiDrawArraysEXT(disp, parameters) (*((disp)->MultiDrawArraysEXT)) parameters
-#define GET_MultiDrawArraysEXT(disp) ((disp)->MultiDrawArraysEXT)
-#define SET_MultiDrawArraysEXT(disp, fn) ((disp)->MultiDrawArraysEXT = fn)
-#define CALL_MultiDrawElementsEXT(disp, parameters) (*((disp)->MultiDrawElementsEXT)) parameters
-#define GET_MultiDrawElementsEXT(disp) ((disp)->MultiDrawElementsEXT)
-#define SET_MultiDrawElementsEXT(disp, fn) ((disp)->MultiDrawElementsEXT = fn)
-#define CALL_FogCoordPointerEXT(disp, parameters) (*((disp)->FogCoordPointerEXT)) parameters
-#define GET_FogCoordPointerEXT(disp) ((disp)->FogCoordPointerEXT)
-#define SET_FogCoordPointerEXT(disp, fn) ((disp)->FogCoordPointerEXT = fn)
-#define CALL_FogCoorddEXT(disp, parameters) (*((disp)->FogCoorddEXT)) parameters
-#define GET_FogCoorddEXT(disp) ((disp)->FogCoorddEXT)
-#define SET_FogCoorddEXT(disp, fn) ((disp)->FogCoorddEXT = fn)
-#define CALL_FogCoorddvEXT(disp, parameters) (*((disp)->FogCoorddvEXT)) parameters
-#define GET_FogCoorddvEXT(disp) ((disp)->FogCoorddvEXT)
-#define SET_FogCoorddvEXT(disp, fn) ((disp)->FogCoorddvEXT = fn)
-#define CALL_FogCoordfEXT(disp, parameters) (*((disp)->FogCoordfEXT)) parameters
-#define GET_FogCoordfEXT(disp) ((disp)->FogCoordfEXT)
-#define SET_FogCoordfEXT(disp, fn) ((disp)->FogCoordfEXT = fn)
-#define CALL_FogCoordfvEXT(disp, parameters) (*((disp)->FogCoordfvEXT)) parameters
-#define GET_FogCoordfvEXT(disp) ((disp)->FogCoordfvEXT)
-#define SET_FogCoordfvEXT(disp, fn) ((disp)->FogCoordfvEXT = fn)
-#define CALL_PixelTexGenSGIX(disp, parameters) (*((disp)->PixelTexGenSGIX)) parameters
-#define GET_PixelTexGenSGIX(disp) ((disp)->PixelTexGenSGIX)
-#define SET_PixelTexGenSGIX(disp, fn) ((disp)->PixelTexGenSGIX = fn)
-#define CALL_BlendFuncSeparateEXT(disp, parameters) (*((disp)->BlendFuncSeparateEXT)) parameters
-#define GET_BlendFuncSeparateEXT(disp) ((disp)->BlendFuncSeparateEXT)
-#define SET_BlendFuncSeparateEXT(disp, fn) ((disp)->BlendFuncSeparateEXT = fn)
-#define CALL_FlushVertexArrayRangeNV(disp, parameters) (*((disp)->FlushVertexArrayRangeNV)) parameters
-#define GET_FlushVertexArrayRangeNV(disp) ((disp)->FlushVertexArrayRangeNV)
-#define SET_FlushVertexArrayRangeNV(disp, fn) ((disp)->FlushVertexArrayRangeNV = fn)
-#define CALL_VertexArrayRangeNV(disp, parameters) (*((disp)->VertexArrayRangeNV)) parameters
-#define GET_VertexArrayRangeNV(disp) ((disp)->VertexArrayRangeNV)
-#define SET_VertexArrayRangeNV(disp, fn) ((disp)->VertexArrayRangeNV = fn)
-#define CALL_CombinerInputNV(disp, parameters) (*((disp)->CombinerInputNV)) parameters
-#define GET_CombinerInputNV(disp) ((disp)->CombinerInputNV)
-#define SET_CombinerInputNV(disp, fn) ((disp)->CombinerInputNV = fn)
-#define CALL_CombinerOutputNV(disp, parameters) (*((disp)->CombinerOutputNV)) parameters
-#define GET_CombinerOutputNV(disp) ((disp)->CombinerOutputNV)
-#define SET_CombinerOutputNV(disp, fn) ((disp)->CombinerOutputNV = fn)
-#define CALL_CombinerParameterfNV(disp, parameters) (*((disp)->CombinerParameterfNV)) parameters
-#define GET_CombinerParameterfNV(disp) ((disp)->CombinerParameterfNV)
-#define SET_CombinerParameterfNV(disp, fn) ((disp)->CombinerParameterfNV = fn)
-#define CALL_CombinerParameterfvNV(disp, parameters) (*((disp)->CombinerParameterfvNV)) parameters
-#define GET_CombinerParameterfvNV(disp) ((disp)->CombinerParameterfvNV)
-#define SET_CombinerParameterfvNV(disp, fn) ((disp)->CombinerParameterfvNV = fn)
-#define CALL_CombinerParameteriNV(disp, parameters) (*((disp)->CombinerParameteriNV)) parameters
-#define GET_CombinerParameteriNV(disp) ((disp)->CombinerParameteriNV)
-#define SET_CombinerParameteriNV(disp, fn) ((disp)->CombinerParameteriNV = fn)
-#define CALL_CombinerParameterivNV(disp, parameters) (*((disp)->CombinerParameterivNV)) parameters
-#define GET_CombinerParameterivNV(disp) ((disp)->CombinerParameterivNV)
-#define SET_CombinerParameterivNV(disp, fn) ((disp)->CombinerParameterivNV = fn)
-#define CALL_FinalCombinerInputNV(disp, parameters) (*((disp)->FinalCombinerInputNV)) parameters
-#define GET_FinalCombinerInputNV(disp) ((disp)->FinalCombinerInputNV)
-#define SET_FinalCombinerInputNV(disp, fn) ((disp)->FinalCombinerInputNV = fn)
-#define CALL_GetCombinerInputParameterfvNV(disp, parameters) (*((disp)->GetCombinerInputParameterfvNV)) parameters
-#define GET_GetCombinerInputParameterfvNV(disp) ((disp)->GetCombinerInputParameterfvNV)
-#define SET_GetCombinerInputParameterfvNV(disp, fn) ((disp)->GetCombinerInputParameterfvNV = fn)
-#define CALL_GetCombinerInputParameterivNV(disp, parameters) (*((disp)->GetCombinerInputParameterivNV)) parameters
-#define GET_GetCombinerInputParameterivNV(disp) ((disp)->GetCombinerInputParameterivNV)
-#define SET_GetCombinerInputParameterivNV(disp, fn) ((disp)->GetCombinerInputParameterivNV = fn)
-#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) (*((disp)->GetCombinerOutputParameterfvNV)) parameters
-#define GET_GetCombinerOutputParameterfvNV(disp) ((disp)->GetCombinerOutputParameterfvNV)
-#define SET_GetCombinerOutputParameterfvNV(disp, fn) ((disp)->GetCombinerOutputParameterfvNV = fn)
-#define CALL_GetCombinerOutputParameterivNV(disp, parameters) (*((disp)->GetCombinerOutputParameterivNV)) parameters
-#define GET_GetCombinerOutputParameterivNV(disp) ((disp)->GetCombinerOutputParameterivNV)
-#define SET_GetCombinerOutputParameterivNV(disp, fn) ((disp)->GetCombinerOutputParameterivNV = fn)
-#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) (*((disp)->GetFinalCombinerInputParameterfvNV)) parameters
-#define GET_GetFinalCombinerInputParameterfvNV(disp) ((disp)->GetFinalCombinerInputParameterfvNV)
-#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) ((disp)->GetFinalCombinerInputParameterfvNV = fn)
-#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) (*((disp)->GetFinalCombinerInputParameterivNV)) parameters
-#define GET_GetFinalCombinerInputParameterivNV(disp) ((disp)->GetFinalCombinerInputParameterivNV)
-#define SET_GetFinalCombinerInputParameterivNV(disp, fn) ((disp)->GetFinalCombinerInputParameterivNV = fn)
-#define CALL_ResizeBuffersMESA(disp, parameters) (*((disp)->ResizeBuffersMESA)) parameters
-#define GET_ResizeBuffersMESA(disp) ((disp)->ResizeBuffersMESA)
-#define SET_ResizeBuffersMESA(disp, fn) ((disp)->ResizeBuffersMESA = fn)
-#define CALL_WindowPos2dMESA(disp, parameters) (*((disp)->WindowPos2dMESA)) parameters
-#define GET_WindowPos2dMESA(disp) ((disp)->WindowPos2dMESA)
-#define SET_WindowPos2dMESA(disp, fn) ((disp)->WindowPos2dMESA = fn)
-#define CALL_WindowPos2dvMESA(disp, parameters) (*((disp)->WindowPos2dvMESA)) parameters
-#define GET_WindowPos2dvMESA(disp) ((disp)->WindowPos2dvMESA)
-#define SET_WindowPos2dvMESA(disp, fn) ((disp)->WindowPos2dvMESA = fn)
-#define CALL_WindowPos2fMESA(disp, parameters) (*((disp)->WindowPos2fMESA)) parameters
-#define GET_WindowPos2fMESA(disp) ((disp)->WindowPos2fMESA)
-#define SET_WindowPos2fMESA(disp, fn) ((disp)->WindowPos2fMESA = fn)
-#define CALL_WindowPos2fvMESA(disp, parameters) (*((disp)->WindowPos2fvMESA)) parameters
-#define GET_WindowPos2fvMESA(disp) ((disp)->WindowPos2fvMESA)
-#define SET_WindowPos2fvMESA(disp, fn) ((disp)->WindowPos2fvMESA = fn)
-#define CALL_WindowPos2iMESA(disp, parameters) (*((disp)->WindowPos2iMESA)) parameters
-#define GET_WindowPos2iMESA(disp) ((disp)->WindowPos2iMESA)
-#define SET_WindowPos2iMESA(disp, fn) ((disp)->WindowPos2iMESA = fn)
-#define CALL_WindowPos2ivMESA(disp, parameters) (*((disp)->WindowPos2ivMESA)) parameters
-#define GET_WindowPos2ivMESA(disp) ((disp)->WindowPos2ivMESA)
-#define SET_WindowPos2ivMESA(disp, fn) ((disp)->WindowPos2ivMESA = fn)
-#define CALL_WindowPos2sMESA(disp, parameters) (*((disp)->WindowPos2sMESA)) parameters
-#define GET_WindowPos2sMESA(disp) ((disp)->WindowPos2sMESA)
-#define SET_WindowPos2sMESA(disp, fn) ((disp)->WindowPos2sMESA = fn)
-#define CALL_WindowPos2svMESA(disp, parameters) (*((disp)->WindowPos2svMESA)) parameters
-#define GET_WindowPos2svMESA(disp) ((disp)->WindowPos2svMESA)
-#define SET_WindowPos2svMESA(disp, fn) ((disp)->WindowPos2svMESA = fn)
-#define CALL_WindowPos3dMESA(disp, parameters) (*((disp)->WindowPos3dMESA)) parameters
-#define GET_WindowPos3dMESA(disp) ((disp)->WindowPos3dMESA)
-#define SET_WindowPos3dMESA(disp, fn) ((disp)->WindowPos3dMESA = fn)
-#define CALL_WindowPos3dvMESA(disp, parameters) (*((disp)->WindowPos3dvMESA)) parameters
-#define GET_WindowPos3dvMESA(disp) ((disp)->WindowPos3dvMESA)
-#define SET_WindowPos3dvMESA(disp, fn) ((disp)->WindowPos3dvMESA = fn)
-#define CALL_WindowPos3fMESA(disp, parameters) (*((disp)->WindowPos3fMESA)) parameters
-#define GET_WindowPos3fMESA(disp) ((disp)->WindowPos3fMESA)
-#define SET_WindowPos3fMESA(disp, fn) ((disp)->WindowPos3fMESA = fn)
-#define CALL_WindowPos3fvMESA(disp, parameters) (*((disp)->WindowPos3fvMESA)) parameters
-#define GET_WindowPos3fvMESA(disp) ((disp)->WindowPos3fvMESA)
-#define SET_WindowPos3fvMESA(disp, fn) ((disp)->WindowPos3fvMESA = fn)
-#define CALL_WindowPos3iMESA(disp, parameters) (*((disp)->WindowPos3iMESA)) parameters
-#define GET_WindowPos3iMESA(disp) ((disp)->WindowPos3iMESA)
-#define SET_WindowPos3iMESA(disp, fn) ((disp)->WindowPos3iMESA = fn)
-#define CALL_WindowPos3ivMESA(disp, parameters) (*((disp)->WindowPos3ivMESA)) parameters
-#define GET_WindowPos3ivMESA(disp) ((disp)->WindowPos3ivMESA)
-#define SET_WindowPos3ivMESA(disp, fn) ((disp)->WindowPos3ivMESA = fn)
-#define CALL_WindowPos3sMESA(disp, parameters) (*((disp)->WindowPos3sMESA)) parameters
-#define GET_WindowPos3sMESA(disp) ((disp)->WindowPos3sMESA)
-#define SET_WindowPos3sMESA(disp, fn) ((disp)->WindowPos3sMESA = fn)
-#define CALL_WindowPos3svMESA(disp, parameters) (*((disp)->WindowPos3svMESA)) parameters
-#define GET_WindowPos3svMESA(disp) ((disp)->WindowPos3svMESA)
-#define SET_WindowPos3svMESA(disp, fn) ((disp)->WindowPos3svMESA = fn)
-#define CALL_WindowPos4dMESA(disp, parameters) (*((disp)->WindowPos4dMESA)) parameters
-#define GET_WindowPos4dMESA(disp) ((disp)->WindowPos4dMESA)
-#define SET_WindowPos4dMESA(disp, fn) ((disp)->WindowPos4dMESA = fn)
-#define CALL_WindowPos4dvMESA(disp, parameters) (*((disp)->WindowPos4dvMESA)) parameters
-#define GET_WindowPos4dvMESA(disp) ((disp)->WindowPos4dvMESA)
-#define SET_WindowPos4dvMESA(disp, fn) ((disp)->WindowPos4dvMESA = fn)
-#define CALL_WindowPos4fMESA(disp, parameters) (*((disp)->WindowPos4fMESA)) parameters
-#define GET_WindowPos4fMESA(disp) ((disp)->WindowPos4fMESA)
-#define SET_WindowPos4fMESA(disp, fn) ((disp)->WindowPos4fMESA = fn)
-#define CALL_WindowPos4fvMESA(disp, parameters) (*((disp)->WindowPos4fvMESA)) parameters
-#define GET_WindowPos4fvMESA(disp) ((disp)->WindowPos4fvMESA)
-#define SET_WindowPos4fvMESA(disp, fn) ((disp)->WindowPos4fvMESA = fn)
-#define CALL_WindowPos4iMESA(disp, parameters) (*((disp)->WindowPos4iMESA)) parameters
-#define GET_WindowPos4iMESA(disp) ((disp)->WindowPos4iMESA)
-#define SET_WindowPos4iMESA(disp, fn) ((disp)->WindowPos4iMESA = fn)
-#define CALL_WindowPos4ivMESA(disp, parameters) (*((disp)->WindowPos4ivMESA)) parameters
-#define GET_WindowPos4ivMESA(disp) ((disp)->WindowPos4ivMESA)
-#define SET_WindowPos4ivMESA(disp, fn) ((disp)->WindowPos4ivMESA = fn)
-#define CALL_WindowPos4sMESA(disp, parameters) (*((disp)->WindowPos4sMESA)) parameters
-#define GET_WindowPos4sMESA(disp) ((disp)->WindowPos4sMESA)
-#define SET_WindowPos4sMESA(disp, fn) ((disp)->WindowPos4sMESA = fn)
-#define CALL_WindowPos4svMESA(disp, parameters) (*((disp)->WindowPos4svMESA)) parameters
-#define GET_WindowPos4svMESA(disp) ((disp)->WindowPos4svMESA)
-#define SET_WindowPos4svMESA(disp, fn) ((disp)->WindowPos4svMESA = fn)
-#define CALL_MultiModeDrawArraysIBM(disp, parameters) (*((disp)->MultiModeDrawArraysIBM)) parameters
-#define GET_MultiModeDrawArraysIBM(disp) ((disp)->MultiModeDrawArraysIBM)
-#define SET_MultiModeDrawArraysIBM(disp, fn) ((disp)->MultiModeDrawArraysIBM = fn)
-#define CALL_MultiModeDrawElementsIBM(disp, parameters) (*((disp)->MultiModeDrawElementsIBM)) parameters
-#define GET_MultiModeDrawElementsIBM(disp) ((disp)->MultiModeDrawElementsIBM)
-#define SET_MultiModeDrawElementsIBM(disp, fn) ((disp)->MultiModeDrawElementsIBM = fn)
-#define CALL_DeleteFencesNV(disp, parameters) (*((disp)->DeleteFencesNV)) parameters
-#define GET_DeleteFencesNV(disp) ((disp)->DeleteFencesNV)
-#define SET_DeleteFencesNV(disp, fn) ((disp)->DeleteFencesNV = fn)
-#define CALL_FinishFenceNV(disp, parameters) (*((disp)->FinishFenceNV)) parameters
-#define GET_FinishFenceNV(disp) ((disp)->FinishFenceNV)
-#define SET_FinishFenceNV(disp, fn) ((disp)->FinishFenceNV = fn)
-#define CALL_GenFencesNV(disp, parameters) (*((disp)->GenFencesNV)) parameters
-#define GET_GenFencesNV(disp) ((disp)->GenFencesNV)
-#define SET_GenFencesNV(disp, fn) ((disp)->GenFencesNV = fn)
-#define CALL_GetFenceivNV(disp, parameters) (*((disp)->GetFenceivNV)) parameters
-#define GET_GetFenceivNV(disp) ((disp)->GetFenceivNV)
-#define SET_GetFenceivNV(disp, fn) ((disp)->GetFenceivNV = fn)
-#define CALL_IsFenceNV(disp, parameters) (*((disp)->IsFenceNV)) parameters
-#define GET_IsFenceNV(disp) ((disp)->IsFenceNV)
-#define SET_IsFenceNV(disp, fn) ((disp)->IsFenceNV = fn)
-#define CALL_SetFenceNV(disp, parameters) (*((disp)->SetFenceNV)) parameters
-#define GET_SetFenceNV(disp) ((disp)->SetFenceNV)
-#define SET_SetFenceNV(disp, fn) ((disp)->SetFenceNV = fn)
-#define CALL_TestFenceNV(disp, parameters) (*((disp)->TestFenceNV)) parameters
-#define GET_TestFenceNV(disp) ((disp)->TestFenceNV)
-#define SET_TestFenceNV(disp, fn) ((disp)->TestFenceNV = fn)
-#define CALL_AreProgramsResidentNV(disp, parameters) (*((disp)->AreProgramsResidentNV)) parameters
-#define GET_AreProgramsResidentNV(disp) ((disp)->AreProgramsResidentNV)
-#define SET_AreProgramsResidentNV(disp, fn) ((disp)->AreProgramsResidentNV = fn)
-#define CALL_BindProgramNV(disp, parameters) (*((disp)->BindProgramNV)) parameters
-#define GET_BindProgramNV(disp) ((disp)->BindProgramNV)
-#define SET_BindProgramNV(disp, fn) ((disp)->BindProgramNV = fn)
-#define CALL_DeleteProgramsNV(disp, parameters) (*((disp)->DeleteProgramsNV)) parameters
-#define GET_DeleteProgramsNV(disp) ((disp)->DeleteProgramsNV)
-#define SET_DeleteProgramsNV(disp, fn) ((disp)->DeleteProgramsNV = fn)
-#define CALL_ExecuteProgramNV(disp, parameters) (*((disp)->ExecuteProgramNV)) parameters
-#define GET_ExecuteProgramNV(disp) ((disp)->ExecuteProgramNV)
-#define SET_ExecuteProgramNV(disp, fn) ((disp)->ExecuteProgramNV = fn)
-#define CALL_GenProgramsNV(disp, parameters) (*((disp)->GenProgramsNV)) parameters
-#define GET_GenProgramsNV(disp) ((disp)->GenProgramsNV)
-#define SET_GenProgramsNV(disp, fn) ((disp)->GenProgramsNV = fn)
-#define CALL_GetProgramParameterdvNV(disp, parameters) (*((disp)->GetProgramParameterdvNV)) parameters
-#define GET_GetProgramParameterdvNV(disp) ((disp)->GetProgramParameterdvNV)
-#define SET_GetProgramParameterdvNV(disp, fn) ((disp)->GetProgramParameterdvNV = fn)
-#define CALL_GetProgramParameterfvNV(disp, parameters) (*((disp)->GetProgramParameterfvNV)) parameters
-#define GET_GetProgramParameterfvNV(disp) ((disp)->GetProgramParameterfvNV)
-#define SET_GetProgramParameterfvNV(disp, fn) ((disp)->GetProgramParameterfvNV = fn)
-#define CALL_GetProgramStringNV(disp, parameters) (*((disp)->GetProgramStringNV)) parameters
-#define GET_GetProgramStringNV(disp) ((disp)->GetProgramStringNV)
-#define SET_GetProgramStringNV(disp, fn) ((disp)->GetProgramStringNV = fn)
-#define CALL_GetProgramivNV(disp, parameters) (*((disp)->GetProgramivNV)) parameters
-#define GET_GetProgramivNV(disp) ((disp)->GetProgramivNV)
-#define SET_GetProgramivNV(disp, fn) ((disp)->GetProgramivNV = fn)
-#define CALL_GetTrackMatrixivNV(disp, parameters) (*((disp)->GetTrackMatrixivNV)) parameters
-#define GET_GetTrackMatrixivNV(disp) ((disp)->GetTrackMatrixivNV)
-#define SET_GetTrackMatrixivNV(disp, fn) ((disp)->GetTrackMatrixivNV = fn)
-#define CALL_GetVertexAttribPointervNV(disp, parameters) (*((disp)->GetVertexAttribPointervNV)) parameters
-#define GET_GetVertexAttribPointervNV(disp) ((disp)->GetVertexAttribPointervNV)
-#define SET_GetVertexAttribPointervNV(disp, fn) ((disp)->GetVertexAttribPointervNV = fn)
-#define CALL_GetVertexAttribdvNV(disp, parameters) (*((disp)->GetVertexAttribdvNV)) parameters
-#define GET_GetVertexAttribdvNV(disp) ((disp)->GetVertexAttribdvNV)
-#define SET_GetVertexAttribdvNV(disp, fn) ((disp)->GetVertexAttribdvNV = fn)
-#define CALL_GetVertexAttribfvNV(disp, parameters) (*((disp)->GetVertexAttribfvNV)) parameters
-#define GET_GetVertexAttribfvNV(disp) ((disp)->GetVertexAttribfvNV)
-#define SET_GetVertexAttribfvNV(disp, fn) ((disp)->GetVertexAttribfvNV = fn)
-#define CALL_GetVertexAttribivNV(disp, parameters) (*((disp)->GetVertexAttribivNV)) parameters
-#define GET_GetVertexAttribivNV(disp) ((disp)->GetVertexAttribivNV)
-#define SET_GetVertexAttribivNV(disp, fn) ((disp)->GetVertexAttribivNV = fn)
-#define CALL_IsProgramNV(disp, parameters) (*((disp)->IsProgramNV)) parameters
-#define GET_IsProgramNV(disp) ((disp)->IsProgramNV)
-#define SET_IsProgramNV(disp, fn) ((disp)->IsProgramNV = fn)
-#define CALL_LoadProgramNV(disp, parameters) (*((disp)->LoadProgramNV)) parameters
-#define GET_LoadProgramNV(disp) ((disp)->LoadProgramNV)
-#define SET_LoadProgramNV(disp, fn) ((disp)->LoadProgramNV = fn)
-#define CALL_ProgramParameters4dvNV(disp, parameters) (*((disp)->ProgramParameters4dvNV)) parameters
-#define GET_ProgramParameters4dvNV(disp) ((disp)->ProgramParameters4dvNV)
-#define SET_ProgramParameters4dvNV(disp, fn) ((disp)->ProgramParameters4dvNV = fn)
-#define CALL_ProgramParameters4fvNV(disp, parameters) (*((disp)->ProgramParameters4fvNV)) parameters
-#define GET_ProgramParameters4fvNV(disp) ((disp)->ProgramParameters4fvNV)
-#define SET_ProgramParameters4fvNV(disp, fn) ((disp)->ProgramParameters4fvNV = fn)
-#define CALL_RequestResidentProgramsNV(disp, parameters) (*((disp)->RequestResidentProgramsNV)) parameters
-#define GET_RequestResidentProgramsNV(disp) ((disp)->RequestResidentProgramsNV)
-#define SET_RequestResidentProgramsNV(disp, fn) ((disp)->RequestResidentProgramsNV = fn)
-#define CALL_TrackMatrixNV(disp, parameters) (*((disp)->TrackMatrixNV)) parameters
-#define GET_TrackMatrixNV(disp) ((disp)->TrackMatrixNV)
-#define SET_TrackMatrixNV(disp, fn) ((disp)->TrackMatrixNV = fn)
-#define CALL_VertexAttrib1dNV(disp, parameters) (*((disp)->VertexAttrib1dNV)) parameters
-#define GET_VertexAttrib1dNV(disp) ((disp)->VertexAttrib1dNV)
-#define SET_VertexAttrib1dNV(disp, fn) ((disp)->VertexAttrib1dNV = fn)
-#define CALL_VertexAttrib1dvNV(disp, parameters) (*((disp)->VertexAttrib1dvNV)) parameters
-#define GET_VertexAttrib1dvNV(disp) ((disp)->VertexAttrib1dvNV)
-#define SET_VertexAttrib1dvNV(disp, fn) ((disp)->VertexAttrib1dvNV = fn)
-#define CALL_VertexAttrib1fNV(disp, parameters) (*((disp)->VertexAttrib1fNV)) parameters
-#define GET_VertexAttrib1fNV(disp) ((disp)->VertexAttrib1fNV)
-#define SET_VertexAttrib1fNV(disp, fn) ((disp)->VertexAttrib1fNV = fn)
-#define CALL_VertexAttrib1fvNV(disp, parameters) (*((disp)->VertexAttrib1fvNV)) parameters
-#define GET_VertexAttrib1fvNV(disp) ((disp)->VertexAttrib1fvNV)
-#define SET_VertexAttrib1fvNV(disp, fn) ((disp)->VertexAttrib1fvNV = fn)
-#define CALL_VertexAttrib1sNV(disp, parameters) (*((disp)->VertexAttrib1sNV)) parameters
-#define GET_VertexAttrib1sNV(disp) ((disp)->VertexAttrib1sNV)
-#define SET_VertexAttrib1sNV(disp, fn) ((disp)->VertexAttrib1sNV = fn)
-#define CALL_VertexAttrib1svNV(disp, parameters) (*((disp)->VertexAttrib1svNV)) parameters
-#define GET_VertexAttrib1svNV(disp) ((disp)->VertexAttrib1svNV)
-#define SET_VertexAttrib1svNV(disp, fn) ((disp)->VertexAttrib1svNV = fn)
-#define CALL_VertexAttrib2dNV(disp, parameters) (*((disp)->VertexAttrib2dNV)) parameters
-#define GET_VertexAttrib2dNV(disp) ((disp)->VertexAttrib2dNV)
-#define SET_VertexAttrib2dNV(disp, fn) ((disp)->VertexAttrib2dNV = fn)
-#define CALL_VertexAttrib2dvNV(disp, parameters) (*((disp)->VertexAttrib2dvNV)) parameters
-#define GET_VertexAttrib2dvNV(disp) ((disp)->VertexAttrib2dvNV)
-#define SET_VertexAttrib2dvNV(disp, fn) ((disp)->VertexAttrib2dvNV = fn)
-#define CALL_VertexAttrib2fNV(disp, parameters) (*((disp)->VertexAttrib2fNV)) parameters
-#define GET_VertexAttrib2fNV(disp) ((disp)->VertexAttrib2fNV)
-#define SET_VertexAttrib2fNV(disp, fn) ((disp)->VertexAttrib2fNV = fn)
-#define CALL_VertexAttrib2fvNV(disp, parameters) (*((disp)->VertexAttrib2fvNV)) parameters
-#define GET_VertexAttrib2fvNV(disp) ((disp)->VertexAttrib2fvNV)
-#define SET_VertexAttrib2fvNV(disp, fn) ((disp)->VertexAttrib2fvNV = fn)
-#define CALL_VertexAttrib2sNV(disp, parameters) (*((disp)->VertexAttrib2sNV)) parameters
-#define GET_VertexAttrib2sNV(disp) ((disp)->VertexAttrib2sNV)
-#define SET_VertexAttrib2sNV(disp, fn) ((disp)->VertexAttrib2sNV = fn)
-#define CALL_VertexAttrib2svNV(disp, parameters) (*((disp)->VertexAttrib2svNV)) parameters
-#define GET_VertexAttrib2svNV(disp) ((disp)->VertexAttrib2svNV)
-#define SET_VertexAttrib2svNV(disp, fn) ((disp)->VertexAttrib2svNV = fn)
-#define CALL_VertexAttrib3dNV(disp, parameters) (*((disp)->VertexAttrib3dNV)) parameters
-#define GET_VertexAttrib3dNV(disp) ((disp)->VertexAttrib3dNV)
-#define SET_VertexAttrib3dNV(disp, fn) ((disp)->VertexAttrib3dNV = fn)
-#define CALL_VertexAttrib3dvNV(disp, parameters) (*((disp)->VertexAttrib3dvNV)) parameters
-#define GET_VertexAttrib3dvNV(disp) ((disp)->VertexAttrib3dvNV)
-#define SET_VertexAttrib3dvNV(disp, fn) ((disp)->VertexAttrib3dvNV = fn)
-#define CALL_VertexAttrib3fNV(disp, parameters) (*((disp)->VertexAttrib3fNV)) parameters
-#define GET_VertexAttrib3fNV(disp) ((disp)->VertexAttrib3fNV)
-#define SET_VertexAttrib3fNV(disp, fn) ((disp)->VertexAttrib3fNV = fn)
-#define CALL_VertexAttrib3fvNV(disp, parameters) (*((disp)->VertexAttrib3fvNV)) parameters
-#define GET_VertexAttrib3fvNV(disp) ((disp)->VertexAttrib3fvNV)
-#define SET_VertexAttrib3fvNV(disp, fn) ((disp)->VertexAttrib3fvNV = fn)
-#define CALL_VertexAttrib3sNV(disp, parameters) (*((disp)->VertexAttrib3sNV)) parameters
-#define GET_VertexAttrib3sNV(disp) ((disp)->VertexAttrib3sNV)
-#define SET_VertexAttrib3sNV(disp, fn) ((disp)->VertexAttrib3sNV = fn)
-#define CALL_VertexAttrib3svNV(disp, parameters) (*((disp)->VertexAttrib3svNV)) parameters
-#define GET_VertexAttrib3svNV(disp) ((disp)->VertexAttrib3svNV)
-#define SET_VertexAttrib3svNV(disp, fn) ((disp)->VertexAttrib3svNV = fn)
-#define CALL_VertexAttrib4dNV(disp, parameters) (*((disp)->VertexAttrib4dNV)) parameters
-#define GET_VertexAttrib4dNV(disp) ((disp)->VertexAttrib4dNV)
-#define SET_VertexAttrib4dNV(disp, fn) ((disp)->VertexAttrib4dNV = fn)
-#define CALL_VertexAttrib4dvNV(disp, parameters) (*((disp)->VertexAttrib4dvNV)) parameters
-#define GET_VertexAttrib4dvNV(disp) ((disp)->VertexAttrib4dvNV)
-#define SET_VertexAttrib4dvNV(disp, fn) ((disp)->VertexAttrib4dvNV = fn)
-#define CALL_VertexAttrib4fNV(disp, parameters) (*((disp)->VertexAttrib4fNV)) parameters
-#define GET_VertexAttrib4fNV(disp) ((disp)->VertexAttrib4fNV)
-#define SET_VertexAttrib4fNV(disp, fn) ((disp)->VertexAttrib4fNV = fn)
-#define CALL_VertexAttrib4fvNV(disp, parameters) (*((disp)->VertexAttrib4fvNV)) parameters
-#define GET_VertexAttrib4fvNV(disp) ((disp)->VertexAttrib4fvNV)
-#define SET_VertexAttrib4fvNV(disp, fn) ((disp)->VertexAttrib4fvNV = fn)
-#define CALL_VertexAttrib4sNV(disp, parameters) (*((disp)->VertexAttrib4sNV)) parameters
-#define GET_VertexAttrib4sNV(disp) ((disp)->VertexAttrib4sNV)
-#define SET_VertexAttrib4sNV(disp, fn) ((disp)->VertexAttrib4sNV = fn)
-#define CALL_VertexAttrib4svNV(disp, parameters) (*((disp)->VertexAttrib4svNV)) parameters
-#define GET_VertexAttrib4svNV(disp) ((disp)->VertexAttrib4svNV)
-#define SET_VertexAttrib4svNV(disp, fn) ((disp)->VertexAttrib4svNV = fn)
-#define CALL_VertexAttrib4ubNV(disp, parameters) (*((disp)->VertexAttrib4ubNV)) parameters
-#define GET_VertexAttrib4ubNV(disp) ((disp)->VertexAttrib4ubNV)
-#define SET_VertexAttrib4ubNV(disp, fn) ((disp)->VertexAttrib4ubNV = fn)
-#define CALL_VertexAttrib4ubvNV(disp, parameters) (*((disp)->VertexAttrib4ubvNV)) parameters
-#define GET_VertexAttrib4ubvNV(disp) ((disp)->VertexAttrib4ubvNV)
-#define SET_VertexAttrib4ubvNV(disp, fn) ((disp)->VertexAttrib4ubvNV = fn)
-#define CALL_VertexAttribPointerNV(disp, parameters) (*((disp)->VertexAttribPointerNV)) parameters
-#define GET_VertexAttribPointerNV(disp) ((disp)->VertexAttribPointerNV)
-#define SET_VertexAttribPointerNV(disp, fn) ((disp)->VertexAttribPointerNV = fn)
-#define CALL_VertexAttribs1dvNV(disp, parameters) (*((disp)->VertexAttribs1dvNV)) parameters
-#define GET_VertexAttribs1dvNV(disp) ((disp)->VertexAttribs1dvNV)
-#define SET_VertexAttribs1dvNV(disp, fn) ((disp)->VertexAttribs1dvNV = fn)
-#define CALL_VertexAttribs1fvNV(disp, parameters) (*((disp)->VertexAttribs1fvNV)) parameters
-#define GET_VertexAttribs1fvNV(disp) ((disp)->VertexAttribs1fvNV)
-#define SET_VertexAttribs1fvNV(disp, fn) ((disp)->VertexAttribs1fvNV = fn)
-#define CALL_VertexAttribs1svNV(disp, parameters) (*((disp)->VertexAttribs1svNV)) parameters
-#define GET_VertexAttribs1svNV(disp) ((disp)->VertexAttribs1svNV)
-#define SET_VertexAttribs1svNV(disp, fn) ((disp)->VertexAttribs1svNV = fn)
-#define CALL_VertexAttribs2dvNV(disp, parameters) (*((disp)->VertexAttribs2dvNV)) parameters
-#define GET_VertexAttribs2dvNV(disp) ((disp)->VertexAttribs2dvNV)
-#define SET_VertexAttribs2dvNV(disp, fn) ((disp)->VertexAttribs2dvNV = fn)
-#define CALL_VertexAttribs2fvNV(disp, parameters) (*((disp)->VertexAttribs2fvNV)) parameters
-#define GET_VertexAttribs2fvNV(disp) ((disp)->VertexAttribs2fvNV)
-#define SET_VertexAttribs2fvNV(disp, fn) ((disp)->VertexAttribs2fvNV = fn)
-#define CALL_VertexAttribs2svNV(disp, parameters) (*((disp)->VertexAttribs2svNV)) parameters
-#define GET_VertexAttribs2svNV(disp) ((disp)->VertexAttribs2svNV)
-#define SET_VertexAttribs2svNV(disp, fn) ((disp)->VertexAttribs2svNV = fn)
-#define CALL_VertexAttribs3dvNV(disp, parameters) (*((disp)->VertexAttribs3dvNV)) parameters
-#define GET_VertexAttribs3dvNV(disp) ((disp)->VertexAttribs3dvNV)
-#define SET_VertexAttribs3dvNV(disp, fn) ((disp)->VertexAttribs3dvNV = fn)
-#define CALL_VertexAttribs3fvNV(disp, parameters) (*((disp)->VertexAttribs3fvNV)) parameters
-#define GET_VertexAttribs3fvNV(disp) ((disp)->VertexAttribs3fvNV)
-#define SET_VertexAttribs3fvNV(disp, fn) ((disp)->VertexAttribs3fvNV = fn)
-#define CALL_VertexAttribs3svNV(disp, parameters) (*((disp)->VertexAttribs3svNV)) parameters
-#define GET_VertexAttribs3svNV(disp) ((disp)->VertexAttribs3svNV)
-#define SET_VertexAttribs3svNV(disp, fn) ((disp)->VertexAttribs3svNV = fn)
-#define CALL_VertexAttribs4dvNV(disp, parameters) (*((disp)->VertexAttribs4dvNV)) parameters
-#define GET_VertexAttribs4dvNV(disp) ((disp)->VertexAttribs4dvNV)
-#define SET_VertexAttribs4dvNV(disp, fn) ((disp)->VertexAttribs4dvNV = fn)
-#define CALL_VertexAttribs4fvNV(disp, parameters) (*((disp)->VertexAttribs4fvNV)) parameters
-#define GET_VertexAttribs4fvNV(disp) ((disp)->VertexAttribs4fvNV)
-#define SET_VertexAttribs4fvNV(disp, fn) ((disp)->VertexAttribs4fvNV = fn)
-#define CALL_VertexAttribs4svNV(disp, parameters) (*((disp)->VertexAttribs4svNV)) parameters
-#define GET_VertexAttribs4svNV(disp) ((disp)->VertexAttribs4svNV)
-#define SET_VertexAttribs4svNV(disp, fn) ((disp)->VertexAttribs4svNV = fn)
-#define CALL_VertexAttribs4ubvNV(disp, parameters) (*((disp)->VertexAttribs4ubvNV)) parameters
-#define GET_VertexAttribs4ubvNV(disp) ((disp)->VertexAttribs4ubvNV)
-#define SET_VertexAttribs4ubvNV(disp, fn) ((disp)->VertexAttribs4ubvNV = fn)
-#define CALL_GetTexBumpParameterfvATI(disp, parameters) (*((disp)->GetTexBumpParameterfvATI)) parameters
-#define GET_GetTexBumpParameterfvATI(disp) ((disp)->GetTexBumpParameterfvATI)
-#define SET_GetTexBumpParameterfvATI(disp, fn) ((disp)->GetTexBumpParameterfvATI = fn)
-#define CALL_GetTexBumpParameterivATI(disp, parameters) (*((disp)->GetTexBumpParameterivATI)) parameters
-#define GET_GetTexBumpParameterivATI(disp) ((disp)->GetTexBumpParameterivATI)
-#define SET_GetTexBumpParameterivATI(disp, fn) ((disp)->GetTexBumpParameterivATI = fn)
-#define CALL_TexBumpParameterfvATI(disp, parameters) (*((disp)->TexBumpParameterfvATI)) parameters
-#define GET_TexBumpParameterfvATI(disp) ((disp)->TexBumpParameterfvATI)
-#define SET_TexBumpParameterfvATI(disp, fn) ((disp)->TexBumpParameterfvATI = fn)
-#define CALL_TexBumpParameterivATI(disp, parameters) (*((disp)->TexBumpParameterivATI)) parameters
-#define GET_TexBumpParameterivATI(disp) ((disp)->TexBumpParameterivATI)
-#define SET_TexBumpParameterivATI(disp, fn) ((disp)->TexBumpParameterivATI = fn)
-#define CALL_AlphaFragmentOp1ATI(disp, parameters) (*((disp)->AlphaFragmentOp1ATI)) parameters
-#define GET_AlphaFragmentOp1ATI(disp) ((disp)->AlphaFragmentOp1ATI)
-#define SET_AlphaFragmentOp1ATI(disp, fn) ((disp)->AlphaFragmentOp1ATI = fn)
-#define CALL_AlphaFragmentOp2ATI(disp, parameters) (*((disp)->AlphaFragmentOp2ATI)) parameters
-#define GET_AlphaFragmentOp2ATI(disp) ((disp)->AlphaFragmentOp2ATI)
-#define SET_AlphaFragmentOp2ATI(disp, fn) ((disp)->AlphaFragmentOp2ATI = fn)
-#define CALL_AlphaFragmentOp3ATI(disp, parameters) (*((disp)->AlphaFragmentOp3ATI)) parameters
-#define GET_AlphaFragmentOp3ATI(disp) ((disp)->AlphaFragmentOp3ATI)
-#define SET_AlphaFragmentOp3ATI(disp, fn) ((disp)->AlphaFragmentOp3ATI = fn)
-#define CALL_BeginFragmentShaderATI(disp, parameters) (*((disp)->BeginFragmentShaderATI)) parameters
-#define GET_BeginFragmentShaderATI(disp) ((disp)->BeginFragmentShaderATI)
-#define SET_BeginFragmentShaderATI(disp, fn) ((disp)->BeginFragmentShaderATI = fn)
-#define CALL_BindFragmentShaderATI(disp, parameters) (*((disp)->BindFragmentShaderATI)) parameters
-#define GET_BindFragmentShaderATI(disp) ((disp)->BindFragmentShaderATI)
-#define SET_BindFragmentShaderATI(disp, fn) ((disp)->BindFragmentShaderATI = fn)
-#define CALL_ColorFragmentOp1ATI(disp, parameters) (*((disp)->ColorFragmentOp1ATI)) parameters
-#define GET_ColorFragmentOp1ATI(disp) ((disp)->ColorFragmentOp1ATI)
-#define SET_ColorFragmentOp1ATI(disp, fn) ((disp)->ColorFragmentOp1ATI = fn)
-#define CALL_ColorFragmentOp2ATI(disp, parameters) (*((disp)->ColorFragmentOp2ATI)) parameters
-#define GET_ColorFragmentOp2ATI(disp) ((disp)->ColorFragmentOp2ATI)
-#define SET_ColorFragmentOp2ATI(disp, fn) ((disp)->ColorFragmentOp2ATI = fn)
-#define CALL_ColorFragmentOp3ATI(disp, parameters) (*((disp)->ColorFragmentOp3ATI)) parameters
-#define GET_ColorFragmentOp3ATI(disp) ((disp)->ColorFragmentOp3ATI)
-#define SET_ColorFragmentOp3ATI(disp, fn) ((disp)->ColorFragmentOp3ATI = fn)
-#define CALL_DeleteFragmentShaderATI(disp, parameters) (*((disp)->DeleteFragmentShaderATI)) parameters
-#define GET_DeleteFragmentShaderATI(disp) ((disp)->DeleteFragmentShaderATI)
-#define SET_DeleteFragmentShaderATI(disp, fn) ((disp)->DeleteFragmentShaderATI = fn)
-#define CALL_EndFragmentShaderATI(disp, parameters) (*((disp)->EndFragmentShaderATI)) parameters
-#define GET_EndFragmentShaderATI(disp) ((disp)->EndFragmentShaderATI)
-#define SET_EndFragmentShaderATI(disp, fn) ((disp)->EndFragmentShaderATI = fn)
-#define CALL_GenFragmentShadersATI(disp, parameters) (*((disp)->GenFragmentShadersATI)) parameters
-#define GET_GenFragmentShadersATI(disp) ((disp)->GenFragmentShadersATI)
-#define SET_GenFragmentShadersATI(disp, fn) ((disp)->GenFragmentShadersATI = fn)
-#define CALL_PassTexCoordATI(disp, parameters) (*((disp)->PassTexCoordATI)) parameters
-#define GET_PassTexCoordATI(disp) ((disp)->PassTexCoordATI)
-#define SET_PassTexCoordATI(disp, fn) ((disp)->PassTexCoordATI = fn)
-#define CALL_SampleMapATI(disp, parameters) (*((disp)->SampleMapATI)) parameters
-#define GET_SampleMapATI(disp) ((disp)->SampleMapATI)
-#define SET_SampleMapATI(disp, fn) ((disp)->SampleMapATI = fn)
-#define CALL_SetFragmentShaderConstantATI(disp, parameters) (*((disp)->SetFragmentShaderConstantATI)) parameters
-#define GET_SetFragmentShaderConstantATI(disp) ((disp)->SetFragmentShaderConstantATI)
-#define SET_SetFragmentShaderConstantATI(disp, fn) ((disp)->SetFragmentShaderConstantATI = fn)
-#define CALL_PointParameteriNV(disp, parameters) (*((disp)->PointParameteriNV)) parameters
-#define GET_PointParameteriNV(disp) ((disp)->PointParameteriNV)
-#define SET_PointParameteriNV(disp, fn) ((disp)->PointParameteriNV = fn)
-#define CALL_PointParameterivNV(disp, parameters) (*((disp)->PointParameterivNV)) parameters
-#define GET_PointParameterivNV(disp) ((disp)->PointParameterivNV)
-#define SET_PointParameterivNV(disp, fn) ((disp)->PointParameterivNV = fn)
-#define CALL_ActiveStencilFaceEXT(disp, parameters) (*((disp)->ActiveStencilFaceEXT)) parameters
-#define GET_ActiveStencilFaceEXT(disp) ((disp)->ActiveStencilFaceEXT)
-#define SET_ActiveStencilFaceEXT(disp, fn) ((disp)->ActiveStencilFaceEXT = fn)
-#define CALL_BindVertexArrayAPPLE(disp, parameters) (*((disp)->BindVertexArrayAPPLE)) parameters
-#define GET_BindVertexArrayAPPLE(disp) ((disp)->BindVertexArrayAPPLE)
-#define SET_BindVertexArrayAPPLE(disp, fn) ((disp)->BindVertexArrayAPPLE = fn)
-#define CALL_DeleteVertexArraysAPPLE(disp, parameters) (*((disp)->DeleteVertexArraysAPPLE)) parameters
-#define GET_DeleteVertexArraysAPPLE(disp) ((disp)->DeleteVertexArraysAPPLE)
-#define SET_DeleteVertexArraysAPPLE(disp, fn) ((disp)->DeleteVertexArraysAPPLE = fn)
-#define CALL_GenVertexArraysAPPLE(disp, parameters) (*((disp)->GenVertexArraysAPPLE)) parameters
-#define GET_GenVertexArraysAPPLE(disp) ((disp)->GenVertexArraysAPPLE)
-#define SET_GenVertexArraysAPPLE(disp, fn) ((disp)->GenVertexArraysAPPLE = fn)
-#define CALL_IsVertexArrayAPPLE(disp, parameters) (*((disp)->IsVertexArrayAPPLE)) parameters
-#define GET_IsVertexArrayAPPLE(disp) ((disp)->IsVertexArrayAPPLE)
-#define SET_IsVertexArrayAPPLE(disp, fn) ((disp)->IsVertexArrayAPPLE = fn)
-#define CALL_GetProgramNamedParameterdvNV(disp, parameters) (*((disp)->GetProgramNamedParameterdvNV)) parameters
-#define GET_GetProgramNamedParameterdvNV(disp) ((disp)->GetProgramNamedParameterdvNV)
-#define SET_GetProgramNamedParameterdvNV(disp, fn) ((disp)->GetProgramNamedParameterdvNV = fn)
-#define CALL_GetProgramNamedParameterfvNV(disp, parameters) (*((disp)->GetProgramNamedParameterfvNV)) parameters
-#define GET_GetProgramNamedParameterfvNV(disp) ((disp)->GetProgramNamedParameterfvNV)
-#define SET_GetProgramNamedParameterfvNV(disp, fn) ((disp)->GetProgramNamedParameterfvNV = fn)
-#define CALL_ProgramNamedParameter4dNV(disp, parameters) (*((disp)->ProgramNamedParameter4dNV)) parameters
-#define GET_ProgramNamedParameter4dNV(disp) ((disp)->ProgramNamedParameter4dNV)
-#define SET_ProgramNamedParameter4dNV(disp, fn) ((disp)->ProgramNamedParameter4dNV = fn)
-#define CALL_ProgramNamedParameter4dvNV(disp, parameters) (*((disp)->ProgramNamedParameter4dvNV)) parameters
-#define GET_ProgramNamedParameter4dvNV(disp) ((disp)->ProgramNamedParameter4dvNV)
-#define SET_ProgramNamedParameter4dvNV(disp, fn) ((disp)->ProgramNamedParameter4dvNV = fn)
-#define CALL_ProgramNamedParameter4fNV(disp, parameters) (*((disp)->ProgramNamedParameter4fNV)) parameters
-#define GET_ProgramNamedParameter4fNV(disp) ((disp)->ProgramNamedParameter4fNV)
-#define SET_ProgramNamedParameter4fNV(disp, fn) ((disp)->ProgramNamedParameter4fNV = fn)
-#define CALL_ProgramNamedParameter4fvNV(disp, parameters) (*((disp)->ProgramNamedParameter4fvNV)) parameters
-#define GET_ProgramNamedParameter4fvNV(disp) ((disp)->ProgramNamedParameter4fvNV)
-#define SET_ProgramNamedParameter4fvNV(disp, fn) ((disp)->ProgramNamedParameter4fvNV = fn)
-#define CALL_DepthBoundsEXT(disp, parameters) (*((disp)->DepthBoundsEXT)) parameters
-#define GET_DepthBoundsEXT(disp) ((disp)->DepthBoundsEXT)
-#define SET_DepthBoundsEXT(disp, fn) ((disp)->DepthBoundsEXT = fn)
-#define CALL_BlendEquationSeparateEXT(disp, parameters) (*((disp)->BlendEquationSeparateEXT)) parameters
-#define GET_BlendEquationSeparateEXT(disp) ((disp)->BlendEquationSeparateEXT)
-#define SET_BlendEquationSeparateEXT(disp, fn) ((disp)->BlendEquationSeparateEXT = fn)
-#define CALL_BindFramebufferEXT(disp, parameters) (*((disp)->BindFramebufferEXT)) parameters
-#define GET_BindFramebufferEXT(disp) ((disp)->BindFramebufferEXT)
-#define SET_BindFramebufferEXT(disp, fn) ((disp)->BindFramebufferEXT = fn)
-#define CALL_BindRenderbufferEXT(disp, parameters) (*((disp)->BindRenderbufferEXT)) parameters
-#define GET_BindRenderbufferEXT(disp) ((disp)->BindRenderbufferEXT)
-#define SET_BindRenderbufferEXT(disp, fn) ((disp)->BindRenderbufferEXT = fn)
-#define CALL_CheckFramebufferStatusEXT(disp, parameters) (*((disp)->CheckFramebufferStatusEXT)) parameters
-#define GET_CheckFramebufferStatusEXT(disp) ((disp)->CheckFramebufferStatusEXT)
-#define SET_CheckFramebufferStatusEXT(disp, fn) ((disp)->CheckFramebufferStatusEXT = fn)
-#define CALL_DeleteFramebuffersEXT(disp, parameters) (*((disp)->DeleteFramebuffersEXT)) parameters
-#define GET_DeleteFramebuffersEXT(disp) ((disp)->DeleteFramebuffersEXT)
-#define SET_DeleteFramebuffersEXT(disp, fn) ((disp)->DeleteFramebuffersEXT = fn)
-#define CALL_DeleteRenderbuffersEXT(disp, parameters) (*((disp)->DeleteRenderbuffersEXT)) parameters
-#define GET_DeleteRenderbuffersEXT(disp) ((disp)->DeleteRenderbuffersEXT)
-#define SET_DeleteRenderbuffersEXT(disp, fn) ((disp)->DeleteRenderbuffersEXT = fn)
-#define CALL_FramebufferRenderbufferEXT(disp, parameters) (*((disp)->FramebufferRenderbufferEXT)) parameters
-#define GET_FramebufferRenderbufferEXT(disp) ((disp)->FramebufferRenderbufferEXT)
-#define SET_FramebufferRenderbufferEXT(disp, fn) ((disp)->FramebufferRenderbufferEXT = fn)
-#define CALL_FramebufferTexture1DEXT(disp, parameters) (*((disp)->FramebufferTexture1DEXT)) parameters
-#define GET_FramebufferTexture1DEXT(disp) ((disp)->FramebufferTexture1DEXT)
-#define SET_FramebufferTexture1DEXT(disp, fn) ((disp)->FramebufferTexture1DEXT = fn)
-#define CALL_FramebufferTexture2DEXT(disp, parameters) (*((disp)->FramebufferTexture2DEXT)) parameters
-#define GET_FramebufferTexture2DEXT(disp) ((disp)->FramebufferTexture2DEXT)
-#define SET_FramebufferTexture2DEXT(disp, fn) ((disp)->FramebufferTexture2DEXT = fn)
-#define CALL_FramebufferTexture3DEXT(disp, parameters) (*((disp)->FramebufferTexture3DEXT)) parameters
-#define GET_FramebufferTexture3DEXT(disp) ((disp)->FramebufferTexture3DEXT)
-#define SET_FramebufferTexture3DEXT(disp, fn) ((disp)->FramebufferTexture3DEXT = fn)
-#define CALL_GenFramebuffersEXT(disp, parameters) (*((disp)->GenFramebuffersEXT)) parameters
-#define GET_GenFramebuffersEXT(disp) ((disp)->GenFramebuffersEXT)
-#define SET_GenFramebuffersEXT(disp, fn) ((disp)->GenFramebuffersEXT = fn)
-#define CALL_GenRenderbuffersEXT(disp, parameters) (*((disp)->GenRenderbuffersEXT)) parameters
-#define GET_GenRenderbuffersEXT(disp) ((disp)->GenRenderbuffersEXT)
-#define SET_GenRenderbuffersEXT(disp, fn) ((disp)->GenRenderbuffersEXT = fn)
-#define CALL_GenerateMipmapEXT(disp, parameters) (*((disp)->GenerateMipmapEXT)) parameters
-#define GET_GenerateMipmapEXT(disp) ((disp)->GenerateMipmapEXT)
-#define SET_GenerateMipmapEXT(disp, fn) ((disp)->GenerateMipmapEXT = fn)
-#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) (*((disp)->GetFramebufferAttachmentParameterivEXT)) parameters
-#define GET_GetFramebufferAttachmentParameterivEXT(disp) ((disp)->GetFramebufferAttachmentParameterivEXT)
-#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) ((disp)->GetFramebufferAttachmentParameterivEXT = fn)
-#define CALL_GetRenderbufferParameterivEXT(disp, parameters) (*((disp)->GetRenderbufferParameterivEXT)) parameters
-#define GET_GetRenderbufferParameterivEXT(disp) ((disp)->GetRenderbufferParameterivEXT)
-#define SET_GetRenderbufferParameterivEXT(disp, fn) ((disp)->GetRenderbufferParameterivEXT = fn)
-#define CALL_IsFramebufferEXT(disp, parameters) (*((disp)->IsFramebufferEXT)) parameters
-#define GET_IsFramebufferEXT(disp) ((disp)->IsFramebufferEXT)
-#define SET_IsFramebufferEXT(disp, fn) ((disp)->IsFramebufferEXT = fn)
-#define CALL_IsRenderbufferEXT(disp, parameters) (*((disp)->IsRenderbufferEXT)) parameters
-#define GET_IsRenderbufferEXT(disp) ((disp)->IsRenderbufferEXT)
-#define SET_IsRenderbufferEXT(disp, fn) ((disp)->IsRenderbufferEXT = fn)
-#define CALL_RenderbufferStorageEXT(disp, parameters) (*((disp)->RenderbufferStorageEXT)) parameters
-#define GET_RenderbufferStorageEXT(disp) ((disp)->RenderbufferStorageEXT)
-#define SET_RenderbufferStorageEXT(disp, fn) ((disp)->RenderbufferStorageEXT = fn)
-#define CALL_BlitFramebufferEXT(disp, parameters) (*((disp)->BlitFramebufferEXT)) parameters
-#define GET_BlitFramebufferEXT(disp) ((disp)->BlitFramebufferEXT)
-#define SET_BlitFramebufferEXT(disp, fn) ((disp)->BlitFramebufferEXT = fn)
-#define CALL_BufferParameteriAPPLE(disp, parameters) (*((disp)->BufferParameteriAPPLE)) parameters
-#define GET_BufferParameteriAPPLE(disp) ((disp)->BufferParameteriAPPLE)
-#define SET_BufferParameteriAPPLE(disp, fn) ((disp)->BufferParameteriAPPLE = fn)
-#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) (*((disp)->FlushMappedBufferRangeAPPLE)) parameters
-#define GET_FlushMappedBufferRangeAPPLE(disp) ((disp)->FlushMappedBufferRangeAPPLE)
-#define SET_FlushMappedBufferRangeAPPLE(disp, fn) ((disp)->FlushMappedBufferRangeAPPLE = fn)
-#define CALL_FramebufferTextureLayerEXT(disp, parameters) (*((disp)->FramebufferTextureLayerEXT)) parameters
-#define GET_FramebufferTextureLayerEXT(disp) ((disp)->FramebufferTextureLayerEXT)
-#define SET_FramebufferTextureLayerEXT(disp, fn) ((disp)->FramebufferTextureLayerEXT = fn)
-#define CALL_ColorMaskIndexedEXT(disp, parameters) (*((disp)->ColorMaskIndexedEXT)) parameters
-#define GET_ColorMaskIndexedEXT(disp) ((disp)->ColorMaskIndexedEXT)
-#define SET_ColorMaskIndexedEXT(disp, fn) ((disp)->ColorMaskIndexedEXT = fn)
-#define CALL_DisableIndexedEXT(disp, parameters) (*((disp)->DisableIndexedEXT)) parameters
-#define GET_DisableIndexedEXT(disp) ((disp)->DisableIndexedEXT)
-#define SET_DisableIndexedEXT(disp, fn) ((disp)->DisableIndexedEXT = fn)
-#define CALL_EnableIndexedEXT(disp, parameters) (*((disp)->EnableIndexedEXT)) parameters
-#define GET_EnableIndexedEXT(disp) ((disp)->EnableIndexedEXT)
-#define SET_EnableIndexedEXT(disp, fn) ((disp)->EnableIndexedEXT = fn)
-#define CALL_GetBooleanIndexedvEXT(disp, parameters) (*((disp)->GetBooleanIndexedvEXT)) parameters
-#define GET_GetBooleanIndexedvEXT(disp) ((disp)->GetBooleanIndexedvEXT)
-#define SET_GetBooleanIndexedvEXT(disp, fn) ((disp)->GetBooleanIndexedvEXT = fn)
-#define CALL_GetIntegerIndexedvEXT(disp, parameters) (*((disp)->GetIntegerIndexedvEXT)) parameters
-#define GET_GetIntegerIndexedvEXT(disp) ((disp)->GetIntegerIndexedvEXT)
-#define SET_GetIntegerIndexedvEXT(disp, fn) ((disp)->GetIntegerIndexedvEXT = fn)
-#define CALL_IsEnabledIndexedEXT(disp, parameters) (*((disp)->IsEnabledIndexedEXT)) parameters
-#define GET_IsEnabledIndexedEXT(disp) ((disp)->IsEnabledIndexedEXT)
-#define SET_IsEnabledIndexedEXT(disp, fn) ((disp)->IsEnabledIndexedEXT = fn)
-#define CALL_BeginConditionalRenderNV(disp, parameters) (*((disp)->BeginConditionalRenderNV)) parameters
-#define GET_BeginConditionalRenderNV(disp) ((disp)->BeginConditionalRenderNV)
-#define SET_BeginConditionalRenderNV(disp, fn) ((disp)->BeginConditionalRenderNV = fn)
-#define CALL_EndConditionalRenderNV(disp, parameters) (*((disp)->EndConditionalRenderNV)) parameters
-#define GET_EndConditionalRenderNV(disp) ((disp)->EndConditionalRenderNV)
-#define SET_EndConditionalRenderNV(disp, fn) ((disp)->EndConditionalRenderNV = fn)
-#define CALL_BeginTransformFeedbackEXT(disp, parameters) (*((disp)->BeginTransformFeedbackEXT)) parameters
-#define GET_BeginTransformFeedbackEXT(disp) ((disp)->BeginTransformFeedbackEXT)
-#define SET_BeginTransformFeedbackEXT(disp, fn) ((disp)->BeginTransformFeedbackEXT = fn)
-#define CALL_BindBufferBaseEXT(disp, parameters) (*((disp)->BindBufferBaseEXT)) parameters
-#define GET_BindBufferBaseEXT(disp) ((disp)->BindBufferBaseEXT)
-#define SET_BindBufferBaseEXT(disp, fn) ((disp)->BindBufferBaseEXT = fn)
-#define CALL_BindBufferOffsetEXT(disp, parameters) (*((disp)->BindBufferOffsetEXT)) parameters
-#define GET_BindBufferOffsetEXT(disp) ((disp)->BindBufferOffsetEXT)
-#define SET_BindBufferOffsetEXT(disp, fn) ((disp)->BindBufferOffsetEXT = fn)
-#define CALL_BindBufferRangeEXT(disp, parameters) (*((disp)->BindBufferRangeEXT)) parameters
-#define GET_BindBufferRangeEXT(disp) ((disp)->BindBufferRangeEXT)
-#define SET_BindBufferRangeEXT(disp, fn) ((disp)->BindBufferRangeEXT = fn)
-#define CALL_EndTransformFeedbackEXT(disp, parameters) (*((disp)->EndTransformFeedbackEXT)) parameters
-#define GET_EndTransformFeedbackEXT(disp) ((disp)->EndTransformFeedbackEXT)
-#define SET_EndTransformFeedbackEXT(disp, fn) ((disp)->EndTransformFeedbackEXT = fn)
-#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) (*((disp)->GetTransformFeedbackVaryingEXT)) parameters
-#define GET_GetTransformFeedbackVaryingEXT(disp) ((disp)->GetTransformFeedbackVaryingEXT)
-#define SET_GetTransformFeedbackVaryingEXT(disp, fn) ((disp)->GetTransformFeedbackVaryingEXT = fn)
-#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) (*((disp)->TransformFeedbackVaryingsEXT)) parameters
-#define GET_TransformFeedbackVaryingsEXT(disp) ((disp)->TransformFeedbackVaryingsEXT)
-#define SET_TransformFeedbackVaryingsEXT(disp, fn) ((disp)->TransformFeedbackVaryingsEXT = fn)
-#define CALL_ProvokingVertexEXT(disp, parameters) (*((disp)->ProvokingVertexEXT)) parameters
-#define GET_ProvokingVertexEXT(disp) ((disp)->ProvokingVertexEXT)
-#define SET_ProvokingVertexEXT(disp, fn) ((disp)->ProvokingVertexEXT = fn)
-#define CALL_GetTexParameterPointervAPPLE(disp, parameters) (*((disp)->GetTexParameterPointervAPPLE)) parameters
-#define GET_GetTexParameterPointervAPPLE(disp) ((disp)->GetTexParameterPointervAPPLE)
-#define SET_GetTexParameterPointervAPPLE(disp, fn) ((disp)->GetTexParameterPointervAPPLE = fn)
-#define CALL_TextureRangeAPPLE(disp, parameters) (*((disp)->TextureRangeAPPLE)) parameters
-#define GET_TextureRangeAPPLE(disp) ((disp)->TextureRangeAPPLE)
-#define SET_TextureRangeAPPLE(disp, fn) ((disp)->TextureRangeAPPLE = fn)
-#define CALL_GetObjectParameterivAPPLE(disp, parameters) (*((disp)->GetObjectParameterivAPPLE)) parameters
-#define GET_GetObjectParameterivAPPLE(disp) ((disp)->GetObjectParameterivAPPLE)
-#define SET_GetObjectParameterivAPPLE(disp, fn) ((disp)->GetObjectParameterivAPPLE = fn)
-#define CALL_ObjectPurgeableAPPLE(disp, parameters) (*((disp)->ObjectPurgeableAPPLE)) parameters
-#define GET_ObjectPurgeableAPPLE(disp) ((disp)->ObjectPurgeableAPPLE)
-#define SET_ObjectPurgeableAPPLE(disp, fn) ((disp)->ObjectPurgeableAPPLE = fn)
-#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) (*((disp)->ObjectUnpurgeableAPPLE)) parameters
-#define GET_ObjectUnpurgeableAPPLE(disp) ((disp)->ObjectUnpurgeableAPPLE)
-#define SET_ObjectUnpurgeableAPPLE(disp, fn) ((disp)->ObjectUnpurgeableAPPLE = fn)
-#define CALL_StencilFuncSeparateATI(disp, parameters) (*((disp)->StencilFuncSeparateATI)) parameters
-#define GET_StencilFuncSeparateATI(disp) ((disp)->StencilFuncSeparateATI)
-#define SET_StencilFuncSeparateATI(disp, fn) ((disp)->StencilFuncSeparateATI = fn)
-#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) (*((disp)->ProgramEnvParameters4fvEXT)) parameters
-#define GET_ProgramEnvParameters4fvEXT(disp) ((disp)->ProgramEnvParameters4fvEXT)
-#define SET_ProgramEnvParameters4fvEXT(disp, fn) ((disp)->ProgramEnvParameters4fvEXT = fn)
-#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) (*((disp)->ProgramLocalParameters4fvEXT)) parameters
-#define GET_ProgramLocalParameters4fvEXT(disp) ((disp)->ProgramLocalParameters4fvEXT)
-#define SET_ProgramLocalParameters4fvEXT(disp, fn) ((disp)->ProgramLocalParameters4fvEXT = fn)
-#define CALL_GetQueryObjecti64vEXT(disp, parameters) (*((disp)->GetQueryObjecti64vEXT)) parameters
-#define GET_GetQueryObjecti64vEXT(disp) ((disp)->GetQueryObjecti64vEXT)
-#define SET_GetQueryObjecti64vEXT(disp, fn) ((disp)->GetQueryObjecti64vEXT = fn)
-#define CALL_GetQueryObjectui64vEXT(disp, parameters) (*((disp)->GetQueryObjectui64vEXT)) parameters
-#define GET_GetQueryObjectui64vEXT(disp) ((disp)->GetQueryObjectui64vEXT)
-#define SET_GetQueryObjectui64vEXT(disp, fn) ((disp)->GetQueryObjectui64vEXT = fn)
-#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) (*((disp)->EGLImageTargetRenderbufferStorageOES)) parameters
-#define GET_EGLImageTargetRenderbufferStorageOES(disp) ((disp)->EGLImageTargetRenderbufferStorageOES)
-#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) ((disp)->EGLImageTargetRenderbufferStorageOES = fn)
-#define CALL_EGLImageTargetTexture2DOES(disp, parameters) (*((disp)->EGLImageTargetTexture2DOES)) parameters
-#define GET_EGLImageTargetTexture2DOES(disp) ((disp)->EGLImageTargetTexture2DOES)
-#define SET_EGLImageTargetTexture2DOES(disp, fn) ((disp)->EGLImageTargetTexture2DOES = fn)
-
-#else
-
-#define driDispatchRemapTable_size 409
-extern int driDispatchRemapTable[ driDispatchRemapTable_size ];
-
-#define AttachShader_remap_index 0
-#define CreateProgram_remap_index 1
-#define CreateShader_remap_index 2
-#define DeleteProgram_remap_index 3
-#define DeleteShader_remap_index 4
-#define DetachShader_remap_index 5
-#define GetAttachedShaders_remap_index 6
-#define GetProgramInfoLog_remap_index 7
-#define GetProgramiv_remap_index 8
-#define GetShaderInfoLog_remap_index 9
-#define GetShaderiv_remap_index 10
-#define IsProgram_remap_index 11
-#define IsShader_remap_index 12
-#define StencilFuncSeparate_remap_index 13
-#define StencilMaskSeparate_remap_index 14
-#define StencilOpSeparate_remap_index 15
-#define UniformMatrix2x3fv_remap_index 16
-#define UniformMatrix2x4fv_remap_index 17
-#define UniformMatrix3x2fv_remap_index 18
-#define UniformMatrix3x4fv_remap_index 19
-#define UniformMatrix4x2fv_remap_index 20
-#define UniformMatrix4x3fv_remap_index 21
-#define DrawArraysInstanced_remap_index 22
-#define DrawElementsInstanced_remap_index 23
-#define LoadTransposeMatrixdARB_remap_index 24
-#define LoadTransposeMatrixfARB_remap_index 25
-#define MultTransposeMatrixdARB_remap_index 26
-#define MultTransposeMatrixfARB_remap_index 27
-#define SampleCoverageARB_remap_index 28
-#define CompressedTexImage1DARB_remap_index 29
-#define CompressedTexImage2DARB_remap_index 30
-#define CompressedTexImage3DARB_remap_index 31
-#define CompressedTexSubImage1DARB_remap_index 32
-#define CompressedTexSubImage2DARB_remap_index 33
-#define CompressedTexSubImage3DARB_remap_index 34
-#define GetCompressedTexImageARB_remap_index 35
-#define DisableVertexAttribArrayARB_remap_index 36
-#define EnableVertexAttribArrayARB_remap_index 37
-#define GetProgramEnvParameterdvARB_remap_index 38
-#define GetProgramEnvParameterfvARB_remap_index 39
-#define GetProgramLocalParameterdvARB_remap_index 40
-#define GetProgramLocalParameterfvARB_remap_index 41
-#define GetProgramStringARB_remap_index 42
-#define GetProgramivARB_remap_index 43
-#define GetVertexAttribdvARB_remap_index 44
-#define GetVertexAttribfvARB_remap_index 45
-#define GetVertexAttribivARB_remap_index 46
-#define ProgramEnvParameter4dARB_remap_index 47
-#define ProgramEnvParameter4dvARB_remap_index 48
-#define ProgramEnvParameter4fARB_remap_index 49
-#define ProgramEnvParameter4fvARB_remap_index 50
-#define ProgramLocalParameter4dARB_remap_index 51
-#define ProgramLocalParameter4dvARB_remap_index 52
-#define ProgramLocalParameter4fARB_remap_index 53
-#define ProgramLocalParameter4fvARB_remap_index 54
-#define ProgramStringARB_remap_index 55
-#define VertexAttrib1dARB_remap_index 56
-#define VertexAttrib1dvARB_remap_index 57
-#define VertexAttrib1fARB_remap_index 58
-#define VertexAttrib1fvARB_remap_index 59
-#define VertexAttrib1sARB_remap_index 60
-#define VertexAttrib1svARB_remap_index 61
-#define VertexAttrib2dARB_remap_index 62
-#define VertexAttrib2dvARB_remap_index 63
-#define VertexAttrib2fARB_remap_index 64
-#define VertexAttrib2fvARB_remap_index 65
-#define VertexAttrib2sARB_remap_index 66
-#define VertexAttrib2svARB_remap_index 67
-#define VertexAttrib3dARB_remap_index 68
-#define VertexAttrib3dvARB_remap_index 69
-#define VertexAttrib3fARB_remap_index 70
-#define VertexAttrib3fvARB_remap_index 71
-#define VertexAttrib3sARB_remap_index 72
-#define VertexAttrib3svARB_remap_index 73
-#define VertexAttrib4NbvARB_remap_index 74
-#define VertexAttrib4NivARB_remap_index 75
-#define VertexAttrib4NsvARB_remap_index 76
-#define VertexAttrib4NubARB_remap_index 77
-#define VertexAttrib4NubvARB_remap_index 78
-#define VertexAttrib4NuivARB_remap_index 79
-#define VertexAttrib4NusvARB_remap_index 80
-#define VertexAttrib4bvARB_remap_index 81
-#define VertexAttrib4dARB_remap_index 82
-#define VertexAttrib4dvARB_remap_index 83
-#define VertexAttrib4fARB_remap_index 84
-#define VertexAttrib4fvARB_remap_index 85
-#define VertexAttrib4ivARB_remap_index 86
-#define VertexAttrib4sARB_remap_index 87
-#define VertexAttrib4svARB_remap_index 88
-#define VertexAttrib4ubvARB_remap_index 89
-#define VertexAttrib4uivARB_remap_index 90
-#define VertexAttrib4usvARB_remap_index 91
-#define VertexAttribPointerARB_remap_index 92
-#define BindBufferARB_remap_index 93
-#define BufferDataARB_remap_index 94
-#define BufferSubDataARB_remap_index 95
-#define DeleteBuffersARB_remap_index 96
-#define GenBuffersARB_remap_index 97
-#define GetBufferParameterivARB_remap_index 98
-#define GetBufferPointervARB_remap_index 99
-#define GetBufferSubDataARB_remap_index 100
-#define IsBufferARB_remap_index 101
-#define MapBufferARB_remap_index 102
-#define UnmapBufferARB_remap_index 103
-#define BeginQueryARB_remap_index 104
-#define DeleteQueriesARB_remap_index 105
-#define EndQueryARB_remap_index 106
-#define GenQueriesARB_remap_index 107
-#define GetQueryObjectivARB_remap_index 108
-#define GetQueryObjectuivARB_remap_index 109
-#define GetQueryivARB_remap_index 110
-#define IsQueryARB_remap_index 111
-#define AttachObjectARB_remap_index 112
-#define CompileShaderARB_remap_index 113
-#define CreateProgramObjectARB_remap_index 114
-#define CreateShaderObjectARB_remap_index 115
-#define DeleteObjectARB_remap_index 116
-#define DetachObjectARB_remap_index 117
-#define GetActiveUniformARB_remap_index 118
-#define GetAttachedObjectsARB_remap_index 119
-#define GetHandleARB_remap_index 120
-#define GetInfoLogARB_remap_index 121
-#define GetObjectParameterfvARB_remap_index 122
-#define GetObjectParameterivARB_remap_index 123
-#define GetShaderSourceARB_remap_index 124
-#define GetUniformLocationARB_remap_index 125
-#define GetUniformfvARB_remap_index 126
-#define GetUniformivARB_remap_index 127
-#define LinkProgramARB_remap_index 128
-#define ShaderSourceARB_remap_index 129
-#define Uniform1fARB_remap_index 130
-#define Uniform1fvARB_remap_index 131
-#define Uniform1iARB_remap_index 132
-#define Uniform1ivARB_remap_index 133
-#define Uniform2fARB_remap_index 134
-#define Uniform2fvARB_remap_index 135
-#define Uniform2iARB_remap_index 136
-#define Uniform2ivARB_remap_index 137
-#define Uniform3fARB_remap_index 138
-#define Uniform3fvARB_remap_index 139
-#define Uniform3iARB_remap_index 140
-#define Uniform3ivARB_remap_index 141
-#define Uniform4fARB_remap_index 142
-#define Uniform4fvARB_remap_index 143
-#define Uniform4iARB_remap_index 144
-#define Uniform4ivARB_remap_index 145
-#define UniformMatrix2fvARB_remap_index 146
-#define UniformMatrix3fvARB_remap_index 147
-#define UniformMatrix4fvARB_remap_index 148
-#define UseProgramObjectARB_remap_index 149
-#define ValidateProgramARB_remap_index 150
-#define BindAttribLocationARB_remap_index 151
-#define GetActiveAttribARB_remap_index 152
-#define GetAttribLocationARB_remap_index 153
-#define DrawBuffersARB_remap_index 154
-#define RenderbufferStorageMultisample_remap_index 155
-#define FlushMappedBufferRange_remap_index 156
-#define MapBufferRange_remap_index 157
-#define BindVertexArray_remap_index 158
-#define GenVertexArrays_remap_index 159
-#define CopyBufferSubData_remap_index 160
-#define ClientWaitSync_remap_index 161
-#define DeleteSync_remap_index 162
-#define FenceSync_remap_index 163
-#define GetInteger64v_remap_index 164
-#define GetSynciv_remap_index 165
-#define IsSync_remap_index 166
-#define WaitSync_remap_index 167
-#define DrawElementsBaseVertex_remap_index 168
-#define DrawRangeElementsBaseVertex_remap_index 169
-#define MultiDrawElementsBaseVertex_remap_index 170
-#define PolygonOffsetEXT_remap_index 171
-#define GetPixelTexGenParameterfvSGIS_remap_index 172
-#define GetPixelTexGenParameterivSGIS_remap_index 173
-#define PixelTexGenParameterfSGIS_remap_index 174
-#define PixelTexGenParameterfvSGIS_remap_index 175
-#define PixelTexGenParameteriSGIS_remap_index 176
-#define PixelTexGenParameterivSGIS_remap_index 177
-#define SampleMaskSGIS_remap_index 178
-#define SamplePatternSGIS_remap_index 179
-#define ColorPointerEXT_remap_index 180
-#define EdgeFlagPointerEXT_remap_index 181
-#define IndexPointerEXT_remap_index 182
-#define NormalPointerEXT_remap_index 183
-#define TexCoordPointerEXT_remap_index 184
-#define VertexPointerEXT_remap_index 185
-#define PointParameterfEXT_remap_index 186
-#define PointParameterfvEXT_remap_index 187
-#define LockArraysEXT_remap_index 188
-#define UnlockArraysEXT_remap_index 189
-#define CullParameterdvEXT_remap_index 190
-#define CullParameterfvEXT_remap_index 191
-#define SecondaryColor3bEXT_remap_index 192
-#define SecondaryColor3bvEXT_remap_index 193
-#define SecondaryColor3dEXT_remap_index 194
-#define SecondaryColor3dvEXT_remap_index 195
-#define SecondaryColor3fEXT_remap_index 196
-#define SecondaryColor3fvEXT_remap_index 197
-#define SecondaryColor3iEXT_remap_index 198
-#define SecondaryColor3ivEXT_remap_index 199
-#define SecondaryColor3sEXT_remap_index 200
-#define SecondaryColor3svEXT_remap_index 201
-#define SecondaryColor3ubEXT_remap_index 202
-#define SecondaryColor3ubvEXT_remap_index 203
-#define SecondaryColor3uiEXT_remap_index 204
-#define SecondaryColor3uivEXT_remap_index 205
-#define SecondaryColor3usEXT_remap_index 206
-#define SecondaryColor3usvEXT_remap_index 207
-#define SecondaryColorPointerEXT_remap_index 208
-#define MultiDrawArraysEXT_remap_index 209
-#define MultiDrawElementsEXT_remap_index 210
-#define FogCoordPointerEXT_remap_index 211
-#define FogCoorddEXT_remap_index 212
-#define FogCoorddvEXT_remap_index 213
-#define FogCoordfEXT_remap_index 214
-#define FogCoordfvEXT_remap_index 215
-#define PixelTexGenSGIX_remap_index 216
-#define BlendFuncSeparateEXT_remap_index 217
-#define FlushVertexArrayRangeNV_remap_index 218
-#define VertexArrayRangeNV_remap_index 219
-#define CombinerInputNV_remap_index 220
-#define CombinerOutputNV_remap_index 221
-#define CombinerParameterfNV_remap_index 222
-#define CombinerParameterfvNV_remap_index 223
-#define CombinerParameteriNV_remap_index 224
-#define CombinerParameterivNV_remap_index 225
-#define FinalCombinerInputNV_remap_index 226
-#define GetCombinerInputParameterfvNV_remap_index 227
-#define GetCombinerInputParameterivNV_remap_index 228
-#define GetCombinerOutputParameterfvNV_remap_index 229
-#define GetCombinerOutputParameterivNV_remap_index 230
-#define GetFinalCombinerInputParameterfvNV_remap_index 231
-#define GetFinalCombinerInputParameterivNV_remap_index 232
-#define ResizeBuffersMESA_remap_index 233
-#define WindowPos2dMESA_remap_index 234
-#define WindowPos2dvMESA_remap_index 235
-#define WindowPos2fMESA_remap_index 236
-#define WindowPos2fvMESA_remap_index 237
-#define WindowPos2iMESA_remap_index 238
-#define WindowPos2ivMESA_remap_index 239
-#define WindowPos2sMESA_remap_index 240
-#define WindowPos2svMESA_remap_index 241
-#define WindowPos3dMESA_remap_index 242
-#define WindowPos3dvMESA_remap_index 243
-#define WindowPos3fMESA_remap_index 244
-#define WindowPos3fvMESA_remap_index 245
-#define WindowPos3iMESA_remap_index 246
-#define WindowPos3ivMESA_remap_index 247
-#define WindowPos3sMESA_remap_index 248
-#define WindowPos3svMESA_remap_index 249
-#define WindowPos4dMESA_remap_index 250
-#define WindowPos4dvMESA_remap_index 251
-#define WindowPos4fMESA_remap_index 252
-#define WindowPos4fvMESA_remap_index 253
-#define WindowPos4iMESA_remap_index 254
-#define WindowPos4ivMESA_remap_index 255
-#define WindowPos4sMESA_remap_index 256
-#define WindowPos4svMESA_remap_index 257
-#define MultiModeDrawArraysIBM_remap_index 258
-#define MultiModeDrawElementsIBM_remap_index 259
-#define DeleteFencesNV_remap_index 260
-#define FinishFenceNV_remap_index 261
-#define GenFencesNV_remap_index 262
-#define GetFenceivNV_remap_index 263
-#define IsFenceNV_remap_index 264
-#define SetFenceNV_remap_index 265
-#define TestFenceNV_remap_index 266
-#define AreProgramsResidentNV_remap_index 267
-#define BindProgramNV_remap_index 268
-#define DeleteProgramsNV_remap_index 269
-#define ExecuteProgramNV_remap_index 270
-#define GenProgramsNV_remap_index 271
-#define GetProgramParameterdvNV_remap_index 272
-#define GetProgramParameterfvNV_remap_index 273
-#define GetProgramStringNV_remap_index 274
-#define GetProgramivNV_remap_index 275
-#define GetTrackMatrixivNV_remap_index 276
-#define GetVertexAttribPointervNV_remap_index 277
-#define GetVertexAttribdvNV_remap_index 278
-#define GetVertexAttribfvNV_remap_index 279
-#define GetVertexAttribivNV_remap_index 280
-#define IsProgramNV_remap_index 281
-#define LoadProgramNV_remap_index 282
-#define ProgramParameters4dvNV_remap_index 283
-#define ProgramParameters4fvNV_remap_index 284
-#define RequestResidentProgramsNV_remap_index 285
-#define TrackMatrixNV_remap_index 286
-#define VertexAttrib1dNV_remap_index 287
-#define VertexAttrib1dvNV_remap_index 288
-#define VertexAttrib1fNV_remap_index 289
-#define VertexAttrib1fvNV_remap_index 290
-#define VertexAttrib1sNV_remap_index 291
-#define VertexAttrib1svNV_remap_index 292
-#define VertexAttrib2dNV_remap_index 293
-#define VertexAttrib2dvNV_remap_index 294
-#define VertexAttrib2fNV_remap_index 295
-#define VertexAttrib2fvNV_remap_index 296
-#define VertexAttrib2sNV_remap_index 297
-#define VertexAttrib2svNV_remap_index 298
-#define VertexAttrib3dNV_remap_index 299
-#define VertexAttrib3dvNV_remap_index 300
-#define VertexAttrib3fNV_remap_index 301
-#define VertexAttrib3fvNV_remap_index 302
-#define VertexAttrib3sNV_remap_index 303
-#define VertexAttrib3svNV_remap_index 304
-#define VertexAttrib4dNV_remap_index 305
-#define VertexAttrib4dvNV_remap_index 306
-#define VertexAttrib4fNV_remap_index 307
-#define VertexAttrib4fvNV_remap_index 308
-#define VertexAttrib4sNV_remap_index 309
-#define VertexAttrib4svNV_remap_index 310
-#define VertexAttrib4ubNV_remap_index 311
-#define VertexAttrib4ubvNV_remap_index 312
-#define VertexAttribPointerNV_remap_index 313
-#define VertexAttribs1dvNV_remap_index 314
-#define VertexAttribs1fvNV_remap_index 315
-#define VertexAttribs1svNV_remap_index 316
-#define VertexAttribs2dvNV_remap_index 317
-#define VertexAttribs2fvNV_remap_index 318
-#define VertexAttribs2svNV_remap_index 319
-#define VertexAttribs3dvNV_remap_index 320
-#define VertexAttribs3fvNV_remap_index 321
-#define VertexAttribs3svNV_remap_index 322
-#define VertexAttribs4dvNV_remap_index 323
-#define VertexAttribs4fvNV_remap_index 324
-#define VertexAttribs4svNV_remap_index 325
-#define VertexAttribs4ubvNV_remap_index 326
-#define GetTexBumpParameterfvATI_remap_index 327
-#define GetTexBumpParameterivATI_remap_index 328
-#define TexBumpParameterfvATI_remap_index 329
-#define TexBumpParameterivATI_remap_index 330
-#define AlphaFragmentOp1ATI_remap_index 331
-#define AlphaFragmentOp2ATI_remap_index 332
-#define AlphaFragmentOp3ATI_remap_index 333
-#define BeginFragmentShaderATI_remap_index 334
-#define BindFragmentShaderATI_remap_index 335
-#define ColorFragmentOp1ATI_remap_index 336
-#define ColorFragmentOp2ATI_remap_index 337
-#define ColorFragmentOp3ATI_remap_index 338
-#define DeleteFragmentShaderATI_remap_index 339
-#define EndFragmentShaderATI_remap_index 340
-#define GenFragmentShadersATI_remap_index 341
-#define PassTexCoordATI_remap_index 342
-#define SampleMapATI_remap_index 343
-#define SetFragmentShaderConstantATI_remap_index 344
-#define PointParameteriNV_remap_index 345
-#define PointParameterivNV_remap_index 346
-#define ActiveStencilFaceEXT_remap_index 347
-#define BindVertexArrayAPPLE_remap_index 348
-#define DeleteVertexArraysAPPLE_remap_index 349
-#define GenVertexArraysAPPLE_remap_index 350
-#define IsVertexArrayAPPLE_remap_index 351
-#define GetProgramNamedParameterdvNV_remap_index 352
-#define GetProgramNamedParameterfvNV_remap_index 353
-#define ProgramNamedParameter4dNV_remap_index 354
-#define ProgramNamedParameter4dvNV_remap_index 355
-#define ProgramNamedParameter4fNV_remap_index 356
-#define ProgramNamedParameter4fvNV_remap_index 357
-#define DepthBoundsEXT_remap_index 358
-#define BlendEquationSeparateEXT_remap_index 359
-#define BindFramebufferEXT_remap_index 360
-#define BindRenderbufferEXT_remap_index 361
-#define CheckFramebufferStatusEXT_remap_index 362
-#define DeleteFramebuffersEXT_remap_index 363
-#define DeleteRenderbuffersEXT_remap_index 364
-#define FramebufferRenderbufferEXT_remap_index 365
-#define FramebufferTexture1DEXT_remap_index 366
-#define FramebufferTexture2DEXT_remap_index 367
-#define FramebufferTexture3DEXT_remap_index 368
-#define GenFramebuffersEXT_remap_index 369
-#define GenRenderbuffersEXT_remap_index 370
-#define GenerateMipmapEXT_remap_index 371
-#define GetFramebufferAttachmentParameterivEXT_remap_index 372
-#define GetRenderbufferParameterivEXT_remap_index 373
-#define IsFramebufferEXT_remap_index 374
-#define IsRenderbufferEXT_remap_index 375
-#define RenderbufferStorageEXT_remap_index 376
-#define BlitFramebufferEXT_remap_index 377
-#define BufferParameteriAPPLE_remap_index 378
-#define FlushMappedBufferRangeAPPLE_remap_index 379
-#define FramebufferTextureLayerEXT_remap_index 380
-#define ColorMaskIndexedEXT_remap_index 381
-#define DisableIndexedEXT_remap_index 382
-#define EnableIndexedEXT_remap_index 383
-#define GetBooleanIndexedvEXT_remap_index 384
-#define GetIntegerIndexedvEXT_remap_index 385
-#define IsEnabledIndexedEXT_remap_index 386
-#define BeginConditionalRenderNV_remap_index 387
-#define EndConditionalRenderNV_remap_index 388
-#define BeginTransformFeedbackEXT_remap_index 389
-#define BindBufferBaseEXT_remap_index 390
-#define BindBufferOffsetEXT_remap_index 391
-#define BindBufferRangeEXT_remap_index 392
-#define EndTransformFeedbackEXT_remap_index 393
-#define GetTransformFeedbackVaryingEXT_remap_index 394
-#define TransformFeedbackVaryingsEXT_remap_index 395
-#define ProvokingVertexEXT_remap_index 396
-#define GetTexParameterPointervAPPLE_remap_index 397
-#define TextureRangeAPPLE_remap_index 398
-#define GetObjectParameterivAPPLE_remap_index 399
-#define ObjectPurgeableAPPLE_remap_index 400
-#define ObjectUnpurgeableAPPLE_remap_index 401
-#define StencilFuncSeparateATI_remap_index 402
-#define ProgramEnvParameters4fvEXT_remap_index 403
-#define ProgramLocalParameters4fvEXT_remap_index 404
-#define GetQueryObjecti64vEXT_remap_index 405
-#define GetQueryObjectui64vEXT_remap_index 406
-#define EGLImageTargetRenderbufferStorageOES_remap_index 407
-#define EGLImageTargetTexture2DOES_remap_index 408
-
-#define CALL_AttachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[AttachShader_remap_index], parameters)
-#define GET_AttachShader(disp) GET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index])
-#define SET_AttachShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AttachShader_remap_index], fn)
-#define CALL_CreateProgram(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(void)), driDispatchRemapTable[CreateProgram_remap_index], parameters)
-#define GET_CreateProgram(disp) GET_by_offset(disp, driDispatchRemapTable[CreateProgram_remap_index])
-#define SET_CreateProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateProgram_remap_index], fn)
-#define CALL_CreateShader(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CreateShader_remap_index], parameters)
-#define GET_CreateShader(disp) GET_by_offset(disp, driDispatchRemapTable[CreateShader_remap_index])
-#define SET_CreateShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateShader_remap_index], fn)
-#define CALL_DeleteProgram(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteProgram_remap_index], parameters)
-#define GET_DeleteProgram(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteProgram_remap_index])
-#define SET_DeleteProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteProgram_remap_index], fn)
-#define CALL_DeleteShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteShader_remap_index], parameters)
-#define GET_DeleteShader(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteShader_remap_index])
-#define SET_DeleteShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteShader_remap_index], fn)
-#define CALL_DetachShader(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint)), driDispatchRemapTable[DetachShader_remap_index], parameters)
-#define GET_DetachShader(disp) GET_by_offset(disp, driDispatchRemapTable[DetachShader_remap_index])
-#define SET_DetachShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DetachShader_remap_index], fn)
-#define CALL_GetAttachedShaders(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLuint *)), driDispatchRemapTable[GetAttachedShaders_remap_index], parameters)
-#define GET_GetAttachedShaders(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttachedShaders_remap_index])
-#define SET_GetAttachedShaders(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttachedShaders_remap_index], fn)
-#define CALL_GetProgramInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), driDispatchRemapTable[GetProgramInfoLog_remap_index], parameters)
-#define GET_GetProgramInfoLog(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramInfoLog_remap_index])
-#define SET_GetProgramInfoLog(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramInfoLog_remap_index], fn)
-#define CALL_GetProgramiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetProgramiv_remap_index], parameters)
-#define GET_GetProgramiv(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramiv_remap_index])
-#define SET_GetProgramiv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramiv_remap_index], fn)
-#define CALL_GetShaderInfoLog(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, GLsizei *, GLchar *)), driDispatchRemapTable[GetShaderInfoLog_remap_index], parameters)
-#define GET_GetShaderInfoLog(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderInfoLog_remap_index])
-#define SET_GetShaderInfoLog(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderInfoLog_remap_index], fn)
-#define CALL_GetShaderiv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetShaderiv_remap_index], parameters)
-#define GET_GetShaderiv(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderiv_remap_index])
-#define SET_GetShaderiv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderiv_remap_index], fn)
-#define CALL_IsProgram(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsProgram_remap_index], parameters)
-#define GET_IsProgram(disp) GET_by_offset(disp, driDispatchRemapTable[IsProgram_remap_index])
-#define SET_IsProgram(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsProgram_remap_index], fn)
-#define CALL_IsShader(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsShader_remap_index], parameters)
-#define GET_IsShader(disp) GET_by_offset(disp, driDispatchRemapTable[IsShader_remap_index])
-#define SET_IsShader(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsShader_remap_index], fn)
-#define CALL_StencilFuncSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), driDispatchRemapTable[StencilFuncSeparate_remap_index], parameters)
-#define GET_StencilFuncSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparate_remap_index])
-#define SET_StencilFuncSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparate_remap_index], fn)
-#define CALL_StencilMaskSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[StencilMaskSeparate_remap_index], parameters)
-#define GET_StencilMaskSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilMaskSeparate_remap_index])
-#define SET_StencilMaskSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilMaskSeparate_remap_index], fn)
-#define CALL_StencilOpSeparate(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[StencilOpSeparate_remap_index], parameters)
-#define GET_StencilOpSeparate(disp) GET_by_offset(disp, driDispatchRemapTable[StencilOpSeparate_remap_index])
-#define SET_StencilOpSeparate(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilOpSeparate_remap_index], fn)
-#define CALL_UniformMatrix2x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2x3fv_remap_index], parameters)
-#define GET_UniformMatrix2x3fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x3fv_remap_index])
-#define SET_UniformMatrix2x3fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x3fv_remap_index], fn)
-#define CALL_UniformMatrix2x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2x4fv_remap_index], parameters)
-#define GET_UniformMatrix2x4fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x4fv_remap_index])
-#define SET_UniformMatrix2x4fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2x4fv_remap_index], fn)
-#define CALL_UniformMatrix3x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3x2fv_remap_index], parameters)
-#define GET_UniformMatrix3x2fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x2fv_remap_index])
-#define SET_UniformMatrix3x2fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x2fv_remap_index], fn)
-#define CALL_UniformMatrix3x4fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3x4fv_remap_index], parameters)
-#define GET_UniformMatrix3x4fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x4fv_remap_index])
-#define SET_UniformMatrix3x4fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3x4fv_remap_index], fn)
-#define CALL_UniformMatrix4x2fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4x2fv_remap_index], parameters)
-#define GET_UniformMatrix4x2fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x2fv_remap_index])
-#define SET_UniformMatrix4x2fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x2fv_remap_index], fn)
-#define CALL_UniformMatrix4x3fv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4x3fv_remap_index], parameters)
-#define GET_UniformMatrix4x3fv(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x3fv_remap_index])
-#define SET_UniformMatrix4x3fv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4x3fv_remap_index], fn)
-#define CALL_DrawArraysInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLsizei, GLsizei)), driDispatchRemapTable[DrawArraysInstanced_remap_index], parameters)
-#define GET_DrawArraysInstanced(disp) GET_by_offset(disp, driDispatchRemapTable[DrawArraysInstanced_remap_index])
-#define SET_DrawArraysInstanced(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawArraysInstanced_remap_index], fn)
-#define CALL_DrawElementsInstanced(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLsizei)), driDispatchRemapTable[DrawElementsInstanced_remap_index], parameters)
-#define GET_DrawElementsInstanced(disp) GET_by_offset(disp, driDispatchRemapTable[DrawElementsInstanced_remap_index])
-#define SET_DrawElementsInstanced(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawElementsInstanced_remap_index], fn)
-#define CALL_LoadTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index], parameters)
-#define GET_LoadTransposeMatrixdARB(disp) GET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index])
-#define SET_LoadTransposeMatrixdARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index], fn)
-#define CALL_LoadTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index], parameters)
-#define GET_LoadTransposeMatrixfARB(disp) GET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index])
-#define SET_LoadTransposeMatrixfARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index], fn)
-#define CALL_MultTransposeMatrixdARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[MultTransposeMatrixdARB_remap_index], parameters)
-#define GET_MultTransposeMatrixdARB(disp) GET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixdARB_remap_index])
-#define SET_MultTransposeMatrixdARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixdARB_remap_index], fn)
-#define CALL_MultTransposeMatrixfARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[MultTransposeMatrixfARB_remap_index], parameters)
-#define GET_MultTransposeMatrixfARB(disp) GET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixfARB_remap_index])
-#define SET_MultTransposeMatrixfARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultTransposeMatrixfARB_remap_index], fn)
-#define CALL_SampleCoverageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), driDispatchRemapTable[SampleCoverageARB_remap_index], parameters)
-#define GET_SampleCoverageARB(disp) GET_by_offset(disp, driDispatchRemapTable[SampleCoverageARB_remap_index])
-#define SET_SampleCoverageARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleCoverageARB_remap_index], fn)
-#define CALL_CompressedTexImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage1DARB_remap_index], parameters)
-#define GET_CompressedTexImage1DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage1DARB_remap_index])
-#define SET_CompressedTexImage1DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage1DARB_remap_index], fn)
-#define CALL_CompressedTexImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage2DARB_remap_index], parameters)
-#define GET_CompressedTexImage2DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage2DARB_remap_index])
-#define SET_CompressedTexImage2DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage2DARB_remap_index], fn)
-#define CALL_CompressedTexImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLenum, GLsizei, GLsizei, GLsizei, GLint, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexImage3DARB_remap_index], parameters)
-#define GET_CompressedTexImage3DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexImage3DARB_remap_index])
-#define SET_CompressedTexImage3DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexImage3DARB_remap_index], fn)
-#define CALL_CompressedTexSubImage1DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index], parameters)
-#define GET_CompressedTexSubImage1DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index])
-#define SET_CompressedTexSubImage1DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index], fn)
-#define CALL_CompressedTexSubImage2DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index], parameters)
-#define GET_CompressedTexSubImage2DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index])
-#define SET_CompressedTexSubImage2DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index], fn)
-#define CALL_CompressedTexSubImage3DARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLint, GLint, GLint, GLsizei, GLsizei, GLsizei, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index], parameters)
-#define GET_CompressedTexSubImage3DARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index])
-#define SET_CompressedTexSubImage3DARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index], fn)
-#define CALL_GetCompressedTexImageARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint, GLvoid *)), driDispatchRemapTable[GetCompressedTexImageARB_remap_index], parameters)
-#define GET_GetCompressedTexImageARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetCompressedTexImageARB_remap_index])
-#define SET_GetCompressedTexImageARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCompressedTexImageARB_remap_index], fn)
-#define CALL_DisableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index], parameters)
-#define GET_DisableVertexAttribArrayARB(disp) GET_by_offset(disp, driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index])
-#define SET_DisableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index], fn)
-#define CALL_EnableVertexAttribArrayARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index], parameters)
-#define GET_EnableVertexAttribArrayARB(disp) GET_by_offset(disp, driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index])
-#define SET_EnableVertexAttribArrayARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index], fn)
-#define CALL_GetProgramEnvParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index], parameters)
-#define GET_GetProgramEnvParameterdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index])
-#define SET_GetProgramEnvParameterdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index], fn)
-#define CALL_GetProgramEnvParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index], parameters)
-#define GET_GetProgramEnvParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index])
-#define SET_GetProgramEnvParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index], fn)
-#define CALL_GetProgramLocalParameterdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble *)), driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index], parameters)
-#define GET_GetProgramLocalParameterdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index])
-#define SET_GetProgramLocalParameterdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index], fn)
-#define CALL_GetProgramLocalParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat *)), driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index], parameters)
-#define GET_GetProgramLocalParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index])
-#define SET_GetProgramLocalParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index], fn)
-#define CALL_GetProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid *)), driDispatchRemapTable[GetProgramStringARB_remap_index], parameters)
-#define GET_GetProgramStringARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramStringARB_remap_index])
-#define SET_GetProgramStringARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramStringARB_remap_index], fn)
-#define CALL_GetProgramivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetProgramivARB_remap_index], parameters)
-#define GET_GetProgramivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramivARB_remap_index])
-#define SET_GetProgramivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramivARB_remap_index], fn)
-#define CALL_GetVertexAttribdvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetVertexAttribdvARB_remap_index], parameters)
-#define GET_GetVertexAttribdvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvARB_remap_index])
-#define SET_GetVertexAttribdvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvARB_remap_index], fn)
-#define CALL_GetVertexAttribfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetVertexAttribfvARB_remap_index], parameters)
-#define GET_GetVertexAttribfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvARB_remap_index])
-#define SET_GetVertexAttribfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvARB_remap_index], fn)
-#define CALL_GetVertexAttribivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetVertexAttribivARB_remap_index], parameters)
-#define GET_GetVertexAttribivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivARB_remap_index])
-#define SET_GetVertexAttribivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivARB_remap_index], fn)
-#define CALL_ProgramEnvParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index], parameters)
-#define GET_ProgramEnvParameter4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index])
-#define SET_ProgramEnvParameter4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index], fn)
-#define CALL_ProgramEnvParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index], parameters)
-#define GET_ProgramEnvParameter4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index])
-#define SET_ProgramEnvParameter4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index], fn)
-#define CALL_ProgramEnvParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index], parameters)
-#define GET_ProgramEnvParameter4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index])
-#define SET_ProgramEnvParameter4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index], fn)
-#define CALL_ProgramEnvParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index], parameters)
-#define GET_ProgramEnvParameter4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index])
-#define SET_ProgramEnvParameter4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index], fn)
-#define CALL_ProgramLocalParameter4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index], parameters)
-#define GET_ProgramLocalParameter4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index])
-#define SET_ProgramLocalParameter4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index], fn)
-#define CALL_ProgramLocalParameter4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index], parameters)
-#define GET_ProgramLocalParameter4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index])
-#define SET_ProgramLocalParameter4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index], fn)
-#define CALL_ProgramLocalParameter4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index], parameters)
-#define GET_ProgramLocalParameter4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index])
-#define SET_ProgramLocalParameter4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index], fn)
-#define CALL_ProgramLocalParameter4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index], parameters)
-#define GET_ProgramLocalParameter4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index])
-#define SET_ProgramLocalParameter4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index], fn)
-#define CALL_ProgramStringARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[ProgramStringARB_remap_index], parameters)
-#define GET_ProgramStringARB(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramStringARB_remap_index])
-#define SET_ProgramStringARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramStringARB_remap_index], fn)
-#define CALL_VertexAttrib1dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), driDispatchRemapTable[VertexAttrib1dARB_remap_index], parameters)
-#define GET_VertexAttrib1dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dARB_remap_index])
-#define SET_VertexAttrib1dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dARB_remap_index], fn)
-#define CALL_VertexAttrib1dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib1dvARB_remap_index], parameters)
-#define GET_VertexAttrib1dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvARB_remap_index])
-#define SET_VertexAttrib1dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvARB_remap_index], fn)
-#define CALL_VertexAttrib1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), driDispatchRemapTable[VertexAttrib1fARB_remap_index], parameters)
-#define GET_VertexAttrib1fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fARB_remap_index])
-#define SET_VertexAttrib1fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fARB_remap_index], fn)
-#define CALL_VertexAttrib1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib1fvARB_remap_index], parameters)
-#define GET_VertexAttrib1fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvARB_remap_index])
-#define SET_VertexAttrib1fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvARB_remap_index], fn)
-#define CALL_VertexAttrib1sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), driDispatchRemapTable[VertexAttrib1sARB_remap_index], parameters)
-#define GET_VertexAttrib1sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sARB_remap_index])
-#define SET_VertexAttrib1sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sARB_remap_index], fn)
-#define CALL_VertexAttrib1svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib1svARB_remap_index], parameters)
-#define GET_VertexAttrib1svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svARB_remap_index])
-#define SET_VertexAttrib1svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svARB_remap_index], fn)
-#define CALL_VertexAttrib2dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib2dARB_remap_index], parameters)
-#define GET_VertexAttrib2dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dARB_remap_index])
-#define SET_VertexAttrib2dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dARB_remap_index], fn)
-#define CALL_VertexAttrib2dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib2dvARB_remap_index], parameters)
-#define GET_VertexAttrib2dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvARB_remap_index])
-#define SET_VertexAttrib2dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvARB_remap_index], fn)
-#define CALL_VertexAttrib2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib2fARB_remap_index], parameters)
-#define GET_VertexAttrib2fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fARB_remap_index])
-#define SET_VertexAttrib2fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fARB_remap_index], fn)
-#define CALL_VertexAttrib2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib2fvARB_remap_index], parameters)
-#define GET_VertexAttrib2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvARB_remap_index])
-#define SET_VertexAttrib2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvARB_remap_index], fn)
-#define CALL_VertexAttrib2sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib2sARB_remap_index], parameters)
-#define GET_VertexAttrib2sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sARB_remap_index])
-#define SET_VertexAttrib2sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sARB_remap_index], fn)
-#define CALL_VertexAttrib2svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib2svARB_remap_index], parameters)
-#define GET_VertexAttrib2svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svARB_remap_index])
-#define SET_VertexAttrib2svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svARB_remap_index], fn)
-#define CALL_VertexAttrib3dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib3dARB_remap_index], parameters)
-#define GET_VertexAttrib3dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dARB_remap_index])
-#define SET_VertexAttrib3dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dARB_remap_index], fn)
-#define CALL_VertexAttrib3dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib3dvARB_remap_index], parameters)
-#define GET_VertexAttrib3dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvARB_remap_index])
-#define SET_VertexAttrib3dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvARB_remap_index], fn)
-#define CALL_VertexAttrib3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib3fARB_remap_index], parameters)
-#define GET_VertexAttrib3fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fARB_remap_index])
-#define SET_VertexAttrib3fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fARB_remap_index], fn)
-#define CALL_VertexAttrib3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib3fvARB_remap_index], parameters)
-#define GET_VertexAttrib3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvARB_remap_index])
-#define SET_VertexAttrib3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvARB_remap_index], fn)
-#define CALL_VertexAttrib3sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib3sARB_remap_index], parameters)
-#define GET_VertexAttrib3sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sARB_remap_index])
-#define SET_VertexAttrib3sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sARB_remap_index], fn)
-#define CALL_VertexAttrib3svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib3svARB_remap_index], parameters)
-#define GET_VertexAttrib3svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svARB_remap_index])
-#define SET_VertexAttrib3svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svARB_remap_index], fn)
-#define CALL_VertexAttrib4NbvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), driDispatchRemapTable[VertexAttrib4NbvARB_remap_index], parameters)
-#define GET_VertexAttrib4NbvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NbvARB_remap_index])
-#define SET_VertexAttrib4NbvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NbvARB_remap_index], fn)
-#define CALL_VertexAttrib4NivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), driDispatchRemapTable[VertexAttrib4NivARB_remap_index], parameters)
-#define GET_VertexAttrib4NivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NivARB_remap_index])
-#define SET_VertexAttrib4NivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NivARB_remap_index], fn)
-#define CALL_VertexAttrib4NsvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4NsvARB_remap_index], parameters)
-#define GET_VertexAttrib4NsvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NsvARB_remap_index])
-#define SET_VertexAttrib4NsvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NsvARB_remap_index], fn)
-#define CALL_VertexAttrib4NubARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[VertexAttrib4NubARB_remap_index], parameters)
-#define GET_VertexAttrib4NubARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubARB_remap_index])
-#define SET_VertexAttrib4NubARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubARB_remap_index], fn)
-#define CALL_VertexAttrib4NubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4NubvARB_remap_index], parameters)
-#define GET_VertexAttrib4NubvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubvARB_remap_index])
-#define SET_VertexAttrib4NubvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NubvARB_remap_index], fn)
-#define CALL_VertexAttrib4NuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), driDispatchRemapTable[VertexAttrib4NuivARB_remap_index], parameters)
-#define GET_VertexAttrib4NuivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NuivARB_remap_index])
-#define SET_VertexAttrib4NuivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NuivARB_remap_index], fn)
-#define CALL_VertexAttrib4NusvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), driDispatchRemapTable[VertexAttrib4NusvARB_remap_index], parameters)
-#define GET_VertexAttrib4NusvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NusvARB_remap_index])
-#define SET_VertexAttrib4NusvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4NusvARB_remap_index], fn)
-#define CALL_VertexAttrib4bvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLbyte *)), driDispatchRemapTable[VertexAttrib4bvARB_remap_index], parameters)
-#define GET_VertexAttrib4bvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4bvARB_remap_index])
-#define SET_VertexAttrib4bvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4bvARB_remap_index], fn)
-#define CALL_VertexAttrib4dARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib4dARB_remap_index], parameters)
-#define GET_VertexAttrib4dARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dARB_remap_index])
-#define SET_VertexAttrib4dARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dARB_remap_index], fn)
-#define CALL_VertexAttrib4dvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib4dvARB_remap_index], parameters)
-#define GET_VertexAttrib4dvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvARB_remap_index])
-#define SET_VertexAttrib4dvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvARB_remap_index], fn)
-#define CALL_VertexAttrib4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib4fARB_remap_index], parameters)
-#define GET_VertexAttrib4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fARB_remap_index])
-#define SET_VertexAttrib4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fARB_remap_index], fn)
-#define CALL_VertexAttrib4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib4fvARB_remap_index], parameters)
-#define GET_VertexAttrib4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvARB_remap_index])
-#define SET_VertexAttrib4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvARB_remap_index], fn)
-#define CALL_VertexAttrib4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLint *)), driDispatchRemapTable[VertexAttrib4ivARB_remap_index], parameters)
-#define GET_VertexAttrib4ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ivARB_remap_index])
-#define SET_VertexAttrib4ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ivARB_remap_index], fn)
-#define CALL_VertexAttrib4sARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib4sARB_remap_index], parameters)
-#define GET_VertexAttrib4sARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sARB_remap_index])
-#define SET_VertexAttrib4sARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sARB_remap_index], fn)
-#define CALL_VertexAttrib4svARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4svARB_remap_index], parameters)
-#define GET_VertexAttrib4svARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svARB_remap_index])
-#define SET_VertexAttrib4svARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svARB_remap_index], fn)
-#define CALL_VertexAttrib4ubvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4ubvARB_remap_index], parameters)
-#define GET_VertexAttrib4ubvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvARB_remap_index])
-#define SET_VertexAttrib4ubvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvARB_remap_index], fn)
-#define CALL_VertexAttrib4uivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLuint *)), driDispatchRemapTable[VertexAttrib4uivARB_remap_index], parameters)
-#define GET_VertexAttrib4uivARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4uivARB_remap_index])
-#define SET_VertexAttrib4uivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4uivARB_remap_index], fn)
-#define CALL_VertexAttrib4usvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLushort *)), driDispatchRemapTable[VertexAttrib4usvARB_remap_index], parameters)
-#define GET_VertexAttrib4usvARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4usvARB_remap_index])
-#define SET_VertexAttrib4usvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4usvARB_remap_index], fn)
-#define CALL_VertexAttribPointerARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexAttribPointerARB_remap_index], parameters)
-#define GET_VertexAttribPointerARB(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerARB_remap_index])
-#define SET_VertexAttribPointerARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerARB_remap_index], fn)
-#define CALL_BindBufferARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindBufferARB_remap_index], parameters)
-#define GET_BindBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferARB_remap_index])
-#define SET_BindBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferARB_remap_index], fn)
-#define CALL_BufferDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizeiptrARB, const GLvoid *, GLenum)), driDispatchRemapTable[BufferDataARB_remap_index], parameters)
-#define GET_BufferDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[BufferDataARB_remap_index])
-#define SET_BufferDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferDataARB_remap_index], fn)
-#define CALL_BufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, const GLvoid *)), driDispatchRemapTable[BufferSubDataARB_remap_index], parameters)
-#define GET_BufferSubDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[BufferSubDataARB_remap_index])
-#define SET_BufferSubDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferSubDataARB_remap_index], fn)
-#define CALL_DeleteBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteBuffersARB_remap_index], parameters)
-#define GET_DeleteBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteBuffersARB_remap_index])
-#define SET_DeleteBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteBuffersARB_remap_index], fn)
-#define CALL_GenBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenBuffersARB_remap_index], parameters)
-#define GET_GenBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[GenBuffersARB_remap_index])
-#define SET_GenBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenBuffersARB_remap_index], fn)
-#define CALL_GetBufferParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetBufferParameterivARB_remap_index], parameters)
-#define GET_GetBufferParameterivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferParameterivARB_remap_index])
-#define SET_GetBufferParameterivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferParameterivARB_remap_index], fn)
-#define CALL_GetBufferPointervARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), driDispatchRemapTable[GetBufferPointervARB_remap_index], parameters)
-#define GET_GetBufferPointervARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferPointervARB_remap_index])
-#define SET_GetBufferPointervARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferPointervARB_remap_index], fn)
-#define CALL_GetBufferSubDataARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptrARB, GLsizeiptrARB, GLvoid *)), driDispatchRemapTable[GetBufferSubDataARB_remap_index], parameters)
-#define GET_GetBufferSubDataARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetBufferSubDataARB_remap_index])
-#define SET_GetBufferSubDataARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBufferSubDataARB_remap_index], fn)
-#define CALL_IsBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsBufferARB_remap_index], parameters)
-#define GET_IsBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[IsBufferARB_remap_index])
-#define SET_IsBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsBufferARB_remap_index], fn)
-#define CALL_MapBufferARB(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLenum)), driDispatchRemapTable[MapBufferARB_remap_index], parameters)
-#define GET_MapBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[MapBufferARB_remap_index])
-#define SET_MapBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MapBufferARB_remap_index], fn)
-#define CALL_UnmapBufferARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[UnmapBufferARB_remap_index], parameters)
-#define GET_UnmapBufferARB(disp) GET_by_offset(disp, driDispatchRemapTable[UnmapBufferARB_remap_index])
-#define SET_UnmapBufferARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UnmapBufferARB_remap_index], fn)
-#define CALL_BeginQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BeginQueryARB_remap_index], parameters)
-#define GET_BeginQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[BeginQueryARB_remap_index])
-#define SET_BeginQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginQueryARB_remap_index], fn)
-#define CALL_DeleteQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteQueriesARB_remap_index], parameters)
-#define GET_DeleteQueriesARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteQueriesARB_remap_index])
-#define SET_DeleteQueriesARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteQueriesARB_remap_index], fn)
-#define CALL_EndQueryARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[EndQueryARB_remap_index], parameters)
-#define GET_EndQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[EndQueryARB_remap_index])
-#define SET_EndQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndQueryARB_remap_index], fn)
-#define CALL_GenQueriesARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenQueriesARB_remap_index], parameters)
-#define GET_GenQueriesARB(disp) GET_by_offset(disp, driDispatchRemapTable[GenQueriesARB_remap_index])
-#define SET_GenQueriesARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenQueriesARB_remap_index], fn)
-#define CALL_GetQueryObjectivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetQueryObjectivARB_remap_index], parameters)
-#define GET_GetQueryObjectivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectivARB_remap_index])
-#define SET_GetQueryObjectivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectivARB_remap_index], fn)
-#define CALL_GetQueryObjectuivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint *)), driDispatchRemapTable[GetQueryObjectuivARB_remap_index], parameters)
-#define GET_GetQueryObjectuivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectuivARB_remap_index])
-#define SET_GetQueryObjectuivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectuivARB_remap_index], fn)
-#define CALL_GetQueryivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetQueryivARB_remap_index], parameters)
-#define GET_GetQueryivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryivARB_remap_index])
-#define SET_GetQueryivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryivARB_remap_index], fn)
-#define CALL_IsQueryARB(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsQueryARB_remap_index], parameters)
-#define GET_IsQueryARB(disp) GET_by_offset(disp, driDispatchRemapTable[IsQueryARB_remap_index])
-#define SET_IsQueryARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsQueryARB_remap_index], fn)
-#define CALL_AttachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), driDispatchRemapTable[AttachObjectARB_remap_index], parameters)
-#define GET_AttachObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[AttachObjectARB_remap_index])
-#define SET_AttachObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AttachObjectARB_remap_index], fn)
-#define CALL_CompileShaderARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[CompileShaderARB_remap_index], parameters)
-#define GET_CompileShaderARB(disp) GET_by_offset(disp, driDispatchRemapTable[CompileShaderARB_remap_index])
-#define SET_CompileShaderARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CompileShaderARB_remap_index], fn)
-#define CALL_CreateProgramObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(void)), driDispatchRemapTable[CreateProgramObjectARB_remap_index], parameters)
-#define GET_CreateProgramObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[CreateProgramObjectARB_remap_index])
-#define SET_CreateProgramObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateProgramObjectARB_remap_index], fn)
-#define CALL_CreateShaderObjectARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CreateShaderObjectARB_remap_index], parameters)
-#define GET_CreateShaderObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[CreateShaderObjectARB_remap_index])
-#define SET_CreateShaderObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CreateShaderObjectARB_remap_index], fn)
-#define CALL_DeleteObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[DeleteObjectARB_remap_index], parameters)
-#define GET_DeleteObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteObjectARB_remap_index])
-#define SET_DeleteObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteObjectARB_remap_index], fn)
-#define CALL_DetachObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLhandleARB)), driDispatchRemapTable[DetachObjectARB_remap_index], parameters)
-#define GET_DetachObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[DetachObjectARB_remap_index])
-#define SET_DetachObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DetachObjectARB_remap_index], fn)
-#define CALL_GetActiveUniformARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), driDispatchRemapTable[GetActiveUniformARB_remap_index], parameters)
-#define GET_GetActiveUniformARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetActiveUniformARB_remap_index])
-#define SET_GetActiveUniformARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetActiveUniformARB_remap_index], fn)
-#define CALL_GetAttachedObjectsARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLhandleARB *)), driDispatchRemapTable[GetAttachedObjectsARB_remap_index], parameters)
-#define GET_GetAttachedObjectsARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttachedObjectsARB_remap_index])
-#define SET_GetAttachedObjectsARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttachedObjectsARB_remap_index], fn)
-#define CALL_GetHandleARB(disp, parameters) CALL_by_offset(disp, (GLhandleARB (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[GetHandleARB_remap_index], parameters)
-#define GET_GetHandleARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetHandleARB_remap_index])
-#define SET_GetHandleARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetHandleARB_remap_index], fn)
-#define CALL_GetInfoLogARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), driDispatchRemapTable[GetInfoLogARB_remap_index], parameters)
-#define GET_GetInfoLogARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetInfoLogARB_remap_index])
-#define SET_GetInfoLogARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetInfoLogARB_remap_index], fn)
-#define CALL_GetObjectParameterfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLfloat *)), driDispatchRemapTable[GetObjectParameterfvARB_remap_index], parameters)
-#define GET_GetObjectParameterfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterfvARB_remap_index])
-#define SET_GetObjectParameterfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterfvARB_remap_index], fn)
-#define CALL_GetObjectParameterivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLenum, GLint *)), driDispatchRemapTable[GetObjectParameterivARB_remap_index], parameters)
-#define GET_GetObjectParameterivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivARB_remap_index])
-#define SET_GetObjectParameterivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivARB_remap_index], fn)
-#define CALL_GetShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, GLsizei *, GLcharARB *)), driDispatchRemapTable[GetShaderSourceARB_remap_index], parameters)
-#define GET_GetShaderSourceARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetShaderSourceARB_remap_index])
-#define SET_GetShaderSourceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetShaderSourceARB_remap_index], fn)
-#define CALL_GetUniformLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), driDispatchRemapTable[GetUniformLocationARB_remap_index], parameters)
-#define GET_GetUniformLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformLocationARB_remap_index])
-#define SET_GetUniformLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformLocationARB_remap_index], fn)
-#define CALL_GetUniformfvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLfloat *)), driDispatchRemapTable[GetUniformfvARB_remap_index], parameters)
-#define GET_GetUniformfvARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformfvARB_remap_index])
-#define SET_GetUniformfvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformfvARB_remap_index], fn)
-#define CALL_GetUniformivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLint, GLint *)), driDispatchRemapTable[GetUniformivARB_remap_index], parameters)
-#define GET_GetUniformivARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetUniformivARB_remap_index])
-#define SET_GetUniformivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetUniformivARB_remap_index], fn)
-#define CALL_LinkProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[LinkProgramARB_remap_index], parameters)
-#define GET_LinkProgramARB(disp) GET_by_offset(disp, driDispatchRemapTable[LinkProgramARB_remap_index])
-#define SET_LinkProgramARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LinkProgramARB_remap_index], fn)
-#define CALL_ShaderSourceARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLsizei, const GLcharARB **, const GLint *)), driDispatchRemapTable[ShaderSourceARB_remap_index], parameters)
-#define GET_ShaderSourceARB(disp) GET_by_offset(disp, driDispatchRemapTable[ShaderSourceARB_remap_index])
-#define SET_ShaderSourceARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ShaderSourceARB_remap_index], fn)
-#define CALL_Uniform1fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat)), driDispatchRemapTable[Uniform1fARB_remap_index], parameters)
-#define GET_Uniform1fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1fARB_remap_index])
-#define SET_Uniform1fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1fARB_remap_index], fn)
-#define CALL_Uniform1fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform1fvARB_remap_index], parameters)
-#define GET_Uniform1fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1fvARB_remap_index])
-#define SET_Uniform1fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1fvARB_remap_index], fn)
-#define CALL_Uniform1iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), driDispatchRemapTable[Uniform1iARB_remap_index], parameters)
-#define GET_Uniform1iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1iARB_remap_index])
-#define SET_Uniform1iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1iARB_remap_index], fn)
-#define CALL_Uniform1ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform1ivARB_remap_index], parameters)
-#define GET_Uniform1ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform1ivARB_remap_index])
-#define SET_Uniform1ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform1ivARB_remap_index], fn)
-#define CALL_Uniform2fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat)), driDispatchRemapTable[Uniform2fARB_remap_index], parameters)
-#define GET_Uniform2fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2fARB_remap_index])
-#define SET_Uniform2fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2fARB_remap_index], fn)
-#define CALL_Uniform2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform2fvARB_remap_index], parameters)
-#define GET_Uniform2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2fvARB_remap_index])
-#define SET_Uniform2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2fvARB_remap_index], fn)
-#define CALL_Uniform2iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[Uniform2iARB_remap_index], parameters)
-#define GET_Uniform2iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2iARB_remap_index])
-#define SET_Uniform2iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2iARB_remap_index], fn)
-#define CALL_Uniform2ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform2ivARB_remap_index], parameters)
-#define GET_Uniform2ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform2ivARB_remap_index])
-#define SET_Uniform2ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform2ivARB_remap_index], fn)
-#define CALL_Uniform3fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[Uniform3fARB_remap_index], parameters)
-#define GET_Uniform3fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3fARB_remap_index])
-#define SET_Uniform3fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3fARB_remap_index], fn)
-#define CALL_Uniform3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform3fvARB_remap_index], parameters)
-#define GET_Uniform3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3fvARB_remap_index])
-#define SET_Uniform3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3fvARB_remap_index], fn)
-#define CALL_Uniform3iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), driDispatchRemapTable[Uniform3iARB_remap_index], parameters)
-#define GET_Uniform3iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3iARB_remap_index])
-#define SET_Uniform3iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3iARB_remap_index], fn)
-#define CALL_Uniform3ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform3ivARB_remap_index], parameters)
-#define GET_Uniform3ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform3ivARB_remap_index])
-#define SET_Uniform3ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform3ivARB_remap_index], fn)
-#define CALL_Uniform4fARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[Uniform4fARB_remap_index], parameters)
-#define GET_Uniform4fARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4fARB_remap_index])
-#define SET_Uniform4fARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4fARB_remap_index], fn)
-#define CALL_Uniform4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLfloat *)), driDispatchRemapTable[Uniform4fvARB_remap_index], parameters)
-#define GET_Uniform4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4fvARB_remap_index])
-#define SET_Uniform4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4fvARB_remap_index], fn)
-#define CALL_Uniform4iARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint)), driDispatchRemapTable[Uniform4iARB_remap_index], parameters)
-#define GET_Uniform4iARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4iARB_remap_index])
-#define SET_Uniform4iARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4iARB_remap_index], fn)
-#define CALL_Uniform4ivARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, const GLint *)), driDispatchRemapTable[Uniform4ivARB_remap_index], parameters)
-#define GET_Uniform4ivARB(disp) GET_by_offset(disp, driDispatchRemapTable[Uniform4ivARB_remap_index])
-#define SET_Uniform4ivARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[Uniform4ivARB_remap_index], fn)
-#define CALL_UniformMatrix2fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix2fvARB_remap_index], parameters)
-#define GET_UniformMatrix2fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix2fvARB_remap_index])
-#define SET_UniformMatrix2fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix2fvARB_remap_index], fn)
-#define CALL_UniformMatrix3fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix3fvARB_remap_index], parameters)
-#define GET_UniformMatrix3fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix3fvARB_remap_index])
-#define SET_UniformMatrix3fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix3fvARB_remap_index], fn)
-#define CALL_UniformMatrix4fvARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei, GLboolean, const GLfloat *)), driDispatchRemapTable[UniformMatrix4fvARB_remap_index], parameters)
-#define GET_UniformMatrix4fvARB(disp) GET_by_offset(disp, driDispatchRemapTable[UniformMatrix4fvARB_remap_index])
-#define SET_UniformMatrix4fvARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UniformMatrix4fvARB_remap_index], fn)
-#define CALL_UseProgramObjectARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[UseProgramObjectARB_remap_index], parameters)
-#define GET_UseProgramObjectARB(disp) GET_by_offset(disp, driDispatchRemapTable[UseProgramObjectARB_remap_index])
-#define SET_UseProgramObjectARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UseProgramObjectARB_remap_index], fn)
-#define CALL_ValidateProgramARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB)), driDispatchRemapTable[ValidateProgramARB_remap_index], parameters)
-#define GET_ValidateProgramARB(disp) GET_by_offset(disp, driDispatchRemapTable[ValidateProgramARB_remap_index])
-#define SET_ValidateProgramARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ValidateProgramARB_remap_index], fn)
-#define CALL_BindAttribLocationARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, const GLcharARB *)), driDispatchRemapTable[BindAttribLocationARB_remap_index], parameters)
-#define GET_BindAttribLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[BindAttribLocationARB_remap_index])
-#define SET_BindAttribLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindAttribLocationARB_remap_index], fn)
-#define CALL_GetActiveAttribARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLhandleARB, GLuint, GLsizei, GLsizei *, GLint *, GLenum *, GLcharARB *)), driDispatchRemapTable[GetActiveAttribARB_remap_index], parameters)
-#define GET_GetActiveAttribARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetActiveAttribARB_remap_index])
-#define SET_GetActiveAttribARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetActiveAttribARB_remap_index], fn)
-#define CALL_GetAttribLocationARB(disp, parameters) CALL_by_offset(disp, (GLint (GLAPIENTRYP)(GLhandleARB, const GLcharARB *)), driDispatchRemapTable[GetAttribLocationARB_remap_index], parameters)
-#define GET_GetAttribLocationARB(disp) GET_by_offset(disp, driDispatchRemapTable[GetAttribLocationARB_remap_index])
-#define SET_GetAttribLocationARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetAttribLocationARB_remap_index], fn)
-#define CALL_DrawBuffersARB(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLenum *)), driDispatchRemapTable[DrawBuffersARB_remap_index], parameters)
-#define GET_DrawBuffersARB(disp) GET_by_offset(disp, driDispatchRemapTable[DrawBuffersARB_remap_index])
-#define SET_DrawBuffersARB(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawBuffersARB_remap_index], fn)
-#define CALL_RenderbufferStorageMultisample(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, GLsizei, GLsizei)), driDispatchRemapTable[RenderbufferStorageMultisample_remap_index], parameters)
-#define GET_RenderbufferStorageMultisample(disp) GET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageMultisample_remap_index])
-#define SET_RenderbufferStorageMultisample(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageMultisample_remap_index], fn)
-#define CALL_FlushMappedBufferRange(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), driDispatchRemapTable[FlushMappedBufferRange_remap_index], parameters)
-#define GET_FlushMappedBufferRange(disp) GET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRange_remap_index])
-#define SET_FlushMappedBufferRange(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRange_remap_index], fn)
-#define CALL_MapBufferRange(disp, parameters) CALL_by_offset(disp, (GLvoid * (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr, GLbitfield)), driDispatchRemapTable[MapBufferRange_remap_index], parameters)
-#define GET_MapBufferRange(disp) GET_by_offset(disp, driDispatchRemapTable[MapBufferRange_remap_index])
-#define SET_MapBufferRange(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MapBufferRange_remap_index], fn)
-#define CALL_BindVertexArray(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindVertexArray_remap_index], parameters)
-#define GET_BindVertexArray(disp) GET_by_offset(disp, driDispatchRemapTable[BindVertexArray_remap_index])
-#define SET_BindVertexArray(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindVertexArray_remap_index], fn)
-#define CALL_GenVertexArrays(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenVertexArrays_remap_index], parameters)
-#define GET_GenVertexArrays(disp) GET_by_offset(disp, driDispatchRemapTable[GenVertexArrays_remap_index])
-#define SET_GenVertexArrays(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenVertexArrays_remap_index], fn)
-#define CALL_CopyBufferSubData(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLintptr, GLintptr, GLsizeiptr)), driDispatchRemapTable[CopyBufferSubData_remap_index], parameters)
-#define GET_CopyBufferSubData(disp) GET_by_offset(disp, driDispatchRemapTable[CopyBufferSubData_remap_index])
-#define SET_CopyBufferSubData(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CopyBufferSubData_remap_index], fn)
-#define CALL_ClientWaitSync(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), driDispatchRemapTable[ClientWaitSync_remap_index], parameters)
-#define GET_ClientWaitSync(disp) GET_by_offset(disp, driDispatchRemapTable[ClientWaitSync_remap_index])
-#define SET_ClientWaitSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ClientWaitSync_remap_index], fn)
-#define CALL_DeleteSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync)), driDispatchRemapTable[DeleteSync_remap_index], parameters)
-#define GET_DeleteSync(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteSync_remap_index])
-#define SET_DeleteSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteSync_remap_index], fn)
-#define CALL_FenceSync(disp, parameters) CALL_by_offset(disp, (GLsync (GLAPIENTRYP)(GLenum, GLbitfield)), driDispatchRemapTable[FenceSync_remap_index], parameters)
-#define GET_FenceSync(disp) GET_by_offset(disp, driDispatchRemapTable[FenceSync_remap_index])
-#define SET_FenceSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FenceSync_remap_index], fn)
-#define CALL_GetInteger64v(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint64 *)), driDispatchRemapTable[GetInteger64v_remap_index], parameters)
-#define GET_GetInteger64v(disp) GET_by_offset(disp, driDispatchRemapTable[GetInteger64v_remap_index])
-#define SET_GetInteger64v(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetInteger64v_remap_index], fn)
-#define CALL_GetSynciv(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLenum, GLsizei, GLsizei *, GLint *)), driDispatchRemapTable[GetSynciv_remap_index], parameters)
-#define GET_GetSynciv(disp) GET_by_offset(disp, driDispatchRemapTable[GetSynciv_remap_index])
-#define SET_GetSynciv(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetSynciv_remap_index], fn)
-#define CALL_IsSync(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsync)), driDispatchRemapTable[IsSync_remap_index], parameters)
-#define GET_IsSync(disp) GET_by_offset(disp, driDispatchRemapTable[IsSync_remap_index])
-#define SET_IsSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsSync_remap_index], fn)
-#define CALL_WaitSync(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsync, GLbitfield, GLuint64)), driDispatchRemapTable[WaitSync_remap_index], parameters)
-#define GET_WaitSync(disp) GET_by_offset(disp, driDispatchRemapTable[WaitSync_remap_index])
-#define SET_WaitSync(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WaitSync_remap_index], fn)
-#define CALL_DrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLenum, const GLvoid *, GLint)), driDispatchRemapTable[DrawElementsBaseVertex_remap_index], parameters)
-#define GET_DrawElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[DrawElementsBaseVertex_remap_index])
-#define SET_DrawElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawElementsBaseVertex_remap_index], fn)
-#define CALL_DrawRangeElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLsizei, GLenum, const GLvoid *, GLint)), driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index], parameters)
-#define GET_DrawRangeElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index])
-#define SET_DrawRangeElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index], fn)
-#define CALL_MultiDrawElementsBaseVertex(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei, const GLint *)), driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index], parameters)
-#define GET_MultiDrawElementsBaseVertex(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index])
-#define SET_MultiDrawElementsBaseVertex(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index], fn)
-#define CALL_PolygonOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), driDispatchRemapTable[PolygonOffsetEXT_remap_index], parameters)
-#define GET_PolygonOffsetEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PolygonOffsetEXT_remap_index])
-#define SET_PolygonOffsetEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PolygonOffsetEXT_remap_index], fn)
-#define CALL_GetPixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index], parameters)
-#define GET_GetPixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index])
-#define SET_GetPixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index], fn)
-#define CALL_GetPixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index], parameters)
-#define GET_GetPixelTexGenParameterivSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index])
-#define SET_GetPixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index], fn)
-#define CALL_PixelTexGenParameterfSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index], parameters)
-#define GET_PixelTexGenParameterfSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index])
-#define SET_PixelTexGenParameterfSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index], fn)
-#define CALL_PixelTexGenParameterfvSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index], parameters)
-#define GET_PixelTexGenParameterfvSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index])
-#define SET_PixelTexGenParameterfvSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index], fn)
-#define CALL_PixelTexGenParameteriSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index], parameters)
-#define GET_PixelTexGenParameteriSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index])
-#define SET_PixelTexGenParameteriSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index], fn)
-#define CALL_PixelTexGenParameterivSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index], parameters)
-#define GET_PixelTexGenParameterivSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index])
-#define SET_PixelTexGenParameterivSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index], fn)
-#define CALL_SampleMaskSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampf, GLboolean)), driDispatchRemapTable[SampleMaskSGIS_remap_index], parameters)
-#define GET_SampleMaskSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[SampleMaskSGIS_remap_index])
-#define SET_SampleMaskSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleMaskSGIS_remap_index], fn)
-#define CALL_SamplePatternSGIS(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[SamplePatternSGIS_remap_index], parameters)
-#define GET_SamplePatternSGIS(disp) GET_by_offset(disp, driDispatchRemapTable[SamplePatternSGIS_remap_index])
-#define SET_SamplePatternSGIS(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SamplePatternSGIS_remap_index], fn)
-#define CALL_ColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[ColorPointerEXT_remap_index], parameters)
-#define GET_ColorPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ColorPointerEXT_remap_index])
-#define SET_ColorPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorPointerEXT_remap_index], fn)
-#define CALL_EdgeFlagPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLsizei, const GLboolean *)), driDispatchRemapTable[EdgeFlagPointerEXT_remap_index], parameters)
-#define GET_EdgeFlagPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EdgeFlagPointerEXT_remap_index])
-#define SET_EdgeFlagPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EdgeFlagPointerEXT_remap_index], fn)
-#define CALL_IndexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[IndexPointerEXT_remap_index], parameters)
-#define GET_IndexPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IndexPointerEXT_remap_index])
-#define SET_IndexPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IndexPointerEXT_remap_index], fn)
-#define CALL_NormalPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[NormalPointerEXT_remap_index], parameters)
-#define GET_NormalPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[NormalPointerEXT_remap_index])
-#define SET_NormalPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[NormalPointerEXT_remap_index], fn)
-#define CALL_TexCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[TexCoordPointerEXT_remap_index], parameters)
-#define GET_TexCoordPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[TexCoordPointerEXT_remap_index])
-#define SET_TexCoordPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexCoordPointerEXT_remap_index], fn)
-#define CALL_VertexPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexPointerEXT_remap_index], parameters)
-#define GET_VertexPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[VertexPointerEXT_remap_index])
-#define SET_VertexPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexPointerEXT_remap_index], fn)
-#define CALL_PointParameterfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[PointParameterfEXT_remap_index], parameters)
-#define GET_PointParameterfEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterfEXT_remap_index])
-#define SET_PointParameterfEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterfEXT_remap_index], fn)
-#define CALL_PointParameterfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[PointParameterfvEXT_remap_index], parameters)
-#define GET_PointParameterfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterfvEXT_remap_index])
-#define SET_PointParameterfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterfvEXT_remap_index], fn)
-#define CALL_LockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLsizei)), driDispatchRemapTable[LockArraysEXT_remap_index], parameters)
-#define GET_LockArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[LockArraysEXT_remap_index])
-#define SET_LockArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LockArraysEXT_remap_index], fn)
-#define CALL_UnlockArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[UnlockArraysEXT_remap_index], parameters)
-#define GET_UnlockArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[UnlockArraysEXT_remap_index])
-#define SET_UnlockArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[UnlockArraysEXT_remap_index], fn)
-#define CALL_CullParameterdvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLdouble *)), driDispatchRemapTable[CullParameterdvEXT_remap_index], parameters)
-#define GET_CullParameterdvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[CullParameterdvEXT_remap_index])
-#define SET_CullParameterdvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CullParameterdvEXT_remap_index], fn)
-#define CALL_CullParameterfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[CullParameterfvEXT_remap_index], parameters)
-#define GET_CullParameterfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[CullParameterfvEXT_remap_index])
-#define SET_CullParameterfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CullParameterfvEXT_remap_index], fn)
-#define CALL_SecondaryColor3bEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLbyte, GLbyte, GLbyte)), driDispatchRemapTable[SecondaryColor3bEXT_remap_index], parameters)
-#define GET_SecondaryColor3bEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bEXT_remap_index])
-#define SET_SecondaryColor3bEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bEXT_remap_index], fn)
-#define CALL_SecondaryColor3bvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLbyte *)), driDispatchRemapTable[SecondaryColor3bvEXT_remap_index], parameters)
-#define GET_SecondaryColor3bvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bvEXT_remap_index])
-#define SET_SecondaryColor3bvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3bvEXT_remap_index], fn)
-#define CALL_SecondaryColor3dEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[SecondaryColor3dEXT_remap_index], parameters)
-#define GET_SecondaryColor3dEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dEXT_remap_index])
-#define SET_SecondaryColor3dEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dEXT_remap_index], fn)
-#define CALL_SecondaryColor3dvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[SecondaryColor3dvEXT_remap_index], parameters)
-#define GET_SecondaryColor3dvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dvEXT_remap_index])
-#define SET_SecondaryColor3dvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3dvEXT_remap_index], fn)
-#define CALL_SecondaryColor3fEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[SecondaryColor3fEXT_remap_index], parameters)
-#define GET_SecondaryColor3fEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fEXT_remap_index])
-#define SET_SecondaryColor3fEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fEXT_remap_index], fn)
-#define CALL_SecondaryColor3fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[SecondaryColor3fvEXT_remap_index], parameters)
-#define GET_SecondaryColor3fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fvEXT_remap_index])
-#define SET_SecondaryColor3fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3fvEXT_remap_index], fn)
-#define CALL_SecondaryColor3iEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[SecondaryColor3iEXT_remap_index], parameters)
-#define GET_SecondaryColor3iEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3iEXT_remap_index])
-#define SET_SecondaryColor3iEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3iEXT_remap_index], fn)
-#define CALL_SecondaryColor3ivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[SecondaryColor3ivEXT_remap_index], parameters)
-#define GET_SecondaryColor3ivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ivEXT_remap_index])
-#define SET_SecondaryColor3ivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ivEXT_remap_index], fn)
-#define CALL_SecondaryColor3sEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), driDispatchRemapTable[SecondaryColor3sEXT_remap_index], parameters)
-#define GET_SecondaryColor3sEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3sEXT_remap_index])
-#define SET_SecondaryColor3sEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3sEXT_remap_index], fn)
-#define CALL_SecondaryColor3svEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[SecondaryColor3svEXT_remap_index], parameters)
-#define GET_SecondaryColor3svEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3svEXT_remap_index])
-#define SET_SecondaryColor3svEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3svEXT_remap_index], fn)
-#define CALL_SecondaryColor3ubEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[SecondaryColor3ubEXT_remap_index], parameters)
-#define GET_SecondaryColor3ubEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubEXT_remap_index])
-#define SET_SecondaryColor3ubEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubEXT_remap_index], fn)
-#define CALL_SecondaryColor3ubvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLubyte *)), driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index], parameters)
-#define GET_SecondaryColor3ubvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index])
-#define SET_SecondaryColor3ubvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index], fn)
-#define CALL_SecondaryColor3uiEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLuint)), driDispatchRemapTable[SecondaryColor3uiEXT_remap_index], parameters)
-#define GET_SecondaryColor3uiEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uiEXT_remap_index])
-#define SET_SecondaryColor3uiEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uiEXT_remap_index], fn)
-#define CALL_SecondaryColor3uivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLuint *)), driDispatchRemapTable[SecondaryColor3uivEXT_remap_index], parameters)
-#define GET_SecondaryColor3uivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uivEXT_remap_index])
-#define SET_SecondaryColor3uivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3uivEXT_remap_index], fn)
-#define CALL_SecondaryColor3usEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLushort, GLushort, GLushort)), driDispatchRemapTable[SecondaryColor3usEXT_remap_index], parameters)
-#define GET_SecondaryColor3usEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usEXT_remap_index])
-#define SET_SecondaryColor3usEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usEXT_remap_index], fn)
-#define CALL_SecondaryColor3usvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLushort *)), driDispatchRemapTable[SecondaryColor3usvEXT_remap_index], parameters)
-#define GET_SecondaryColor3usvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usvEXT_remap_index])
-#define SET_SecondaryColor3usvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColor3usvEXT_remap_index], fn)
-#define CALL_SecondaryColorPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[SecondaryColorPointerEXT_remap_index], parameters)
-#define GET_SecondaryColorPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[SecondaryColorPointerEXT_remap_index])
-#define SET_SecondaryColorPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SecondaryColorPointerEXT_remap_index], fn)
-#define CALL_MultiDrawArraysEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *, GLsizei *, GLsizei)), driDispatchRemapTable[MultiDrawArraysEXT_remap_index], parameters)
-#define GET_MultiDrawArraysEXT(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawArraysEXT_remap_index])
-#define SET_MultiDrawArraysEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawArraysEXT_remap_index], fn)
-#define CALL_MultiDrawElementsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLsizei *, GLenum, const GLvoid **, GLsizei)), driDispatchRemapTable[MultiDrawElementsEXT_remap_index], parameters)
-#define GET_MultiDrawElementsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsEXT_remap_index])
-#define SET_MultiDrawElementsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiDrawElementsEXT_remap_index], fn)
-#define CALL_FogCoordPointerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[FogCoordPointerEXT_remap_index], parameters)
-#define GET_FogCoordPointerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordPointerEXT_remap_index])
-#define SET_FogCoordPointerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordPointerEXT_remap_index], fn)
-#define CALL_FogCoorddEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble)), driDispatchRemapTable[FogCoorddEXT_remap_index], parameters)
-#define GET_FogCoorddEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoorddEXT_remap_index])
-#define SET_FogCoorddEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoorddEXT_remap_index], fn)
-#define CALL_FogCoorddvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[FogCoorddvEXT_remap_index], parameters)
-#define GET_FogCoorddvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoorddvEXT_remap_index])
-#define SET_FogCoorddvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoorddvEXT_remap_index], fn)
-#define CALL_FogCoordfEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat)), driDispatchRemapTable[FogCoordfEXT_remap_index], parameters)
-#define GET_FogCoordfEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordfEXT_remap_index])
-#define SET_FogCoordfEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordfEXT_remap_index], fn)
-#define CALL_FogCoordfvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[FogCoordfvEXT_remap_index], parameters)
-#define GET_FogCoordfvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FogCoordfvEXT_remap_index])
-#define SET_FogCoordfvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FogCoordfvEXT_remap_index], fn)
-#define CALL_PixelTexGenSGIX(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[PixelTexGenSGIX_remap_index], parameters)
-#define GET_PixelTexGenSGIX(disp) GET_by_offset(disp, driDispatchRemapTable[PixelTexGenSGIX_remap_index])
-#define SET_PixelTexGenSGIX(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PixelTexGenSGIX_remap_index], fn)
-#define CALL_BlendFuncSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[BlendFuncSeparateEXT_remap_index], parameters)
-#define GET_BlendFuncSeparateEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlendFuncSeparateEXT_remap_index])
-#define SET_BlendFuncSeparateEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlendFuncSeparateEXT_remap_index], fn)
-#define CALL_FlushVertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index], parameters)
-#define GET_FlushVertexArrayRangeNV(disp) GET_by_offset(disp, driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index])
-#define SET_FlushVertexArrayRangeNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index], fn)
-#define CALL_VertexArrayRangeNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLvoid *)), driDispatchRemapTable[VertexArrayRangeNV_remap_index], parameters)
-#define GET_VertexArrayRangeNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexArrayRangeNV_remap_index])
-#define SET_VertexArrayRangeNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexArrayRangeNV_remap_index], fn)
-#define CALL_CombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[CombinerInputNV_remap_index], parameters)
-#define GET_CombinerInputNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerInputNV_remap_index])
-#define SET_CombinerInputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerInputNV_remap_index], fn)
-#define CALL_CombinerOutputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLenum, GLboolean, GLboolean, GLboolean)), driDispatchRemapTable[CombinerOutputNV_remap_index], parameters)
-#define GET_CombinerOutputNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerOutputNV_remap_index])
-#define SET_CombinerOutputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerOutputNV_remap_index], fn)
-#define CALL_CombinerParameterfNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat)), driDispatchRemapTable[CombinerParameterfNV_remap_index], parameters)
-#define GET_CombinerParameterfNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterfNV_remap_index])
-#define SET_CombinerParameterfNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterfNV_remap_index], fn)
-#define CALL_CombinerParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[CombinerParameterfvNV_remap_index], parameters)
-#define GET_CombinerParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterfvNV_remap_index])
-#define SET_CombinerParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterfvNV_remap_index], fn)
-#define CALL_CombinerParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[CombinerParameteriNV_remap_index], parameters)
-#define GET_CombinerParameteriNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameteriNV_remap_index])
-#define SET_CombinerParameteriNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameteriNV_remap_index], fn)
-#define CALL_CombinerParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[CombinerParameterivNV_remap_index], parameters)
-#define GET_CombinerParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[CombinerParameterivNV_remap_index])
-#define SET_CombinerParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CombinerParameterivNV_remap_index], fn)
-#define CALL_FinalCombinerInputNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum)), driDispatchRemapTable[FinalCombinerInputNV_remap_index], parameters)
-#define GET_FinalCombinerInputNV(disp) GET_by_offset(disp, driDispatchRemapTable[FinalCombinerInputNV_remap_index])
-#define SET_FinalCombinerInputNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FinalCombinerInputNV_remap_index], fn)
-#define CALL_GetCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index], parameters)
-#define GET_GetCombinerInputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index])
-#define SET_GetCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index], fn)
-#define CALL_GetCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index], parameters)
-#define GET_GetCombinerInputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index])
-#define SET_GetCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index], fn)
-#define CALL_GetCombinerOutputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index], parameters)
-#define GET_GetCombinerOutputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index])
-#define SET_GetCombinerOutputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index], fn)
-#define CALL_GetCombinerOutputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index], parameters)
-#define GET_GetCombinerOutputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index])
-#define SET_GetCombinerOutputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index], fn)
-#define CALL_GetFinalCombinerInputParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLfloat *)), driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index], parameters)
-#define GET_GetFinalCombinerInputParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index])
-#define SET_GetFinalCombinerInputParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index], fn)
-#define CALL_GetFinalCombinerInputParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index], parameters)
-#define GET_GetFinalCombinerInputParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index])
-#define SET_GetFinalCombinerInputParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index], fn)
-#define CALL_ResizeBuffersMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[ResizeBuffersMESA_remap_index], parameters)
-#define GET_ResizeBuffersMESA(disp) GET_by_offset(disp, driDispatchRemapTable[ResizeBuffersMESA_remap_index])
-#define SET_ResizeBuffersMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ResizeBuffersMESA_remap_index], fn)
-#define CALL_WindowPos2dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble)), driDispatchRemapTable[WindowPos2dMESA_remap_index], parameters)
-#define GET_WindowPos2dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2dMESA_remap_index])
-#define SET_WindowPos2dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2dMESA_remap_index], fn)
-#define CALL_WindowPos2dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos2dvMESA_remap_index], parameters)
-#define GET_WindowPos2dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2dvMESA_remap_index])
-#define SET_WindowPos2dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2dvMESA_remap_index], fn)
-#define CALL_WindowPos2fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat)), driDispatchRemapTable[WindowPos2fMESA_remap_index], parameters)
-#define GET_WindowPos2fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2fMESA_remap_index])
-#define SET_WindowPos2fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2fMESA_remap_index], fn)
-#define CALL_WindowPos2fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos2fvMESA_remap_index], parameters)
-#define GET_WindowPos2fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2fvMESA_remap_index])
-#define SET_WindowPos2fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2fvMESA_remap_index], fn)
-#define CALL_WindowPos2iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint)), driDispatchRemapTable[WindowPos2iMESA_remap_index], parameters)
-#define GET_WindowPos2iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2iMESA_remap_index])
-#define SET_WindowPos2iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2iMESA_remap_index], fn)
-#define CALL_WindowPos2ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos2ivMESA_remap_index], parameters)
-#define GET_WindowPos2ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2ivMESA_remap_index])
-#define SET_WindowPos2ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2ivMESA_remap_index], fn)
-#define CALL_WindowPos2sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort)), driDispatchRemapTable[WindowPos2sMESA_remap_index], parameters)
-#define GET_WindowPos2sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2sMESA_remap_index])
-#define SET_WindowPos2sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2sMESA_remap_index], fn)
-#define CALL_WindowPos2svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos2svMESA_remap_index], parameters)
-#define GET_WindowPos2svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos2svMESA_remap_index])
-#define SET_WindowPos2svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos2svMESA_remap_index], fn)
-#define CALL_WindowPos3dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[WindowPos3dMESA_remap_index], parameters)
-#define GET_WindowPos3dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3dMESA_remap_index])
-#define SET_WindowPos3dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3dMESA_remap_index], fn)
-#define CALL_WindowPos3dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos3dvMESA_remap_index], parameters)
-#define GET_WindowPos3dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3dvMESA_remap_index])
-#define SET_WindowPos3dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3dvMESA_remap_index], fn)
-#define CALL_WindowPos3fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[WindowPos3fMESA_remap_index], parameters)
-#define GET_WindowPos3fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3fMESA_remap_index])
-#define SET_WindowPos3fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3fMESA_remap_index], fn)
-#define CALL_WindowPos3fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos3fvMESA_remap_index], parameters)
-#define GET_WindowPos3fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3fvMESA_remap_index])
-#define SET_WindowPos3fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3fvMESA_remap_index], fn)
-#define CALL_WindowPos3iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint)), driDispatchRemapTable[WindowPos3iMESA_remap_index], parameters)
-#define GET_WindowPos3iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3iMESA_remap_index])
-#define SET_WindowPos3iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3iMESA_remap_index], fn)
-#define CALL_WindowPos3ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos3ivMESA_remap_index], parameters)
-#define GET_WindowPos3ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3ivMESA_remap_index])
-#define SET_WindowPos3ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3ivMESA_remap_index], fn)
-#define CALL_WindowPos3sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort)), driDispatchRemapTable[WindowPos3sMESA_remap_index], parameters)
-#define GET_WindowPos3sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3sMESA_remap_index])
-#define SET_WindowPos3sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3sMESA_remap_index], fn)
-#define CALL_WindowPos3svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos3svMESA_remap_index], parameters)
-#define GET_WindowPos3svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos3svMESA_remap_index])
-#define SET_WindowPos3svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos3svMESA_remap_index], fn)
-#define CALL_WindowPos4dMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[WindowPos4dMESA_remap_index], parameters)
-#define GET_WindowPos4dMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4dMESA_remap_index])
-#define SET_WindowPos4dMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4dMESA_remap_index], fn)
-#define CALL_WindowPos4dvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLdouble *)), driDispatchRemapTable[WindowPos4dvMESA_remap_index], parameters)
-#define GET_WindowPos4dvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4dvMESA_remap_index])
-#define SET_WindowPos4dvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4dvMESA_remap_index], fn)
-#define CALL_WindowPos4fMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[WindowPos4fMESA_remap_index], parameters)
-#define GET_WindowPos4fMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4fMESA_remap_index])
-#define SET_WindowPos4fMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4fMESA_remap_index], fn)
-#define CALL_WindowPos4fvMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLfloat *)), driDispatchRemapTable[WindowPos4fvMESA_remap_index], parameters)
-#define GET_WindowPos4fvMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4fvMESA_remap_index])
-#define SET_WindowPos4fvMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4fvMESA_remap_index], fn)
-#define CALL_WindowPos4iMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint)), driDispatchRemapTable[WindowPos4iMESA_remap_index], parameters)
-#define GET_WindowPos4iMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4iMESA_remap_index])
-#define SET_WindowPos4iMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4iMESA_remap_index], fn)
-#define CALL_WindowPos4ivMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLint *)), driDispatchRemapTable[WindowPos4ivMESA_remap_index], parameters)
-#define GET_WindowPos4ivMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4ivMESA_remap_index])
-#define SET_WindowPos4ivMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4ivMESA_remap_index], fn)
-#define CALL_WindowPos4sMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[WindowPos4sMESA_remap_index], parameters)
-#define GET_WindowPos4sMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4sMESA_remap_index])
-#define SET_WindowPos4sMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4sMESA_remap_index], fn)
-#define CALL_WindowPos4svMESA(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLshort *)), driDispatchRemapTable[WindowPos4svMESA_remap_index], parameters)
-#define GET_WindowPos4svMESA(disp) GET_by_offset(disp, driDispatchRemapTable[WindowPos4svMESA_remap_index])
-#define SET_WindowPos4svMESA(disp, fn) SET_by_offset(disp, driDispatchRemapTable[WindowPos4svMESA_remap_index], fn)
-#define CALL_MultiModeDrawArraysIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLint *, const GLsizei *, GLsizei, GLint)), driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index], parameters)
-#define GET_MultiModeDrawArraysIBM(disp) GET_by_offset(disp, driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index])
-#define SET_MultiModeDrawArraysIBM(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index], fn)
-#define CALL_MultiModeDrawElementsIBM(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(const GLenum *, const GLsizei *, GLenum, const GLvoid * const *, GLsizei, GLint)), driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index], parameters)
-#define GET_MultiModeDrawElementsIBM(disp) GET_by_offset(disp, driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index])
-#define SET_MultiModeDrawElementsIBM(disp, fn) SET_by_offset(disp, driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index], fn)
-#define CALL_DeleteFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteFencesNV_remap_index], parameters)
-#define GET_DeleteFencesNV(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFencesNV_remap_index])
-#define SET_DeleteFencesNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFencesNV_remap_index], fn)
-#define CALL_FinishFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[FinishFenceNV_remap_index], parameters)
-#define GET_FinishFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[FinishFenceNV_remap_index])
-#define SET_FinishFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FinishFenceNV_remap_index], fn)
-#define CALL_GenFencesNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenFencesNV_remap_index], parameters)
-#define GET_GenFencesNV(disp) GET_by_offset(disp, driDispatchRemapTable[GenFencesNV_remap_index])
-#define SET_GenFencesNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFencesNV_remap_index], fn)
-#define CALL_GetFenceivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetFenceivNV_remap_index], parameters)
-#define GET_GetFenceivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetFenceivNV_remap_index])
-#define SET_GetFenceivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFenceivNV_remap_index], fn)
-#define CALL_IsFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsFenceNV_remap_index], parameters)
-#define GET_IsFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[IsFenceNV_remap_index])
-#define SET_IsFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsFenceNV_remap_index], fn)
-#define CALL_SetFenceNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), driDispatchRemapTable[SetFenceNV_remap_index], parameters)
-#define GET_SetFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[SetFenceNV_remap_index])
-#define SET_SetFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SetFenceNV_remap_index], fn)
-#define CALL_TestFenceNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[TestFenceNV_remap_index], parameters)
-#define GET_TestFenceNV(disp) GET_by_offset(disp, driDispatchRemapTable[TestFenceNV_remap_index])
-#define SET_TestFenceNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TestFenceNV_remap_index], fn)
-#define CALL_AreProgramsResidentNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLsizei, const GLuint *, GLboolean *)), driDispatchRemapTable[AreProgramsResidentNV_remap_index], parameters)
-#define GET_AreProgramsResidentNV(disp) GET_by_offset(disp, driDispatchRemapTable[AreProgramsResidentNV_remap_index])
-#define SET_AreProgramsResidentNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AreProgramsResidentNV_remap_index], fn)
-#define CALL_BindProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindProgramNV_remap_index], parameters)
-#define GET_BindProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[BindProgramNV_remap_index])
-#define SET_BindProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindProgramNV_remap_index], fn)
-#define CALL_DeleteProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteProgramsNV_remap_index], parameters)
-#define GET_DeleteProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteProgramsNV_remap_index])
-#define SET_DeleteProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteProgramsNV_remap_index], fn)
-#define CALL_ExecuteProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, const GLfloat *)), driDispatchRemapTable[ExecuteProgramNV_remap_index], parameters)
-#define GET_ExecuteProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[ExecuteProgramNV_remap_index])
-#define SET_ExecuteProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ExecuteProgramNV_remap_index], fn)
-#define CALL_GenProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenProgramsNV_remap_index], parameters)
-#define GET_GenProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[GenProgramsNV_remap_index])
-#define SET_GenProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenProgramsNV_remap_index], fn)
-#define CALL_GetProgramParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetProgramParameterdvNV_remap_index], parameters)
-#define GET_GetProgramParameterdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramParameterdvNV_remap_index])
-#define SET_GetProgramParameterdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramParameterdvNV_remap_index], fn)
-#define CALL_GetProgramParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetProgramParameterfvNV_remap_index], parameters)
-#define GET_GetProgramParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramParameterfvNV_remap_index])
-#define SET_GetProgramParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramParameterfvNV_remap_index], fn)
-#define CALL_GetProgramStringNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLubyte *)), driDispatchRemapTable[GetProgramStringNV_remap_index], parameters)
-#define GET_GetProgramStringNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramStringNV_remap_index])
-#define SET_GetProgramStringNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramStringNV_remap_index], fn)
-#define CALL_GetProgramivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetProgramivNV_remap_index], parameters)
-#define GET_GetProgramivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramivNV_remap_index])
-#define SET_GetProgramivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramivNV_remap_index], fn)
-#define CALL_GetTrackMatrixivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), driDispatchRemapTable[GetTrackMatrixivNV_remap_index], parameters)
-#define GET_GetTrackMatrixivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetTrackMatrixivNV_remap_index])
-#define SET_GetTrackMatrixivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTrackMatrixivNV_remap_index], fn)
-#define CALL_GetVertexAttribPointervNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLvoid **)), driDispatchRemapTable[GetVertexAttribPointervNV_remap_index], parameters)
-#define GET_GetVertexAttribPointervNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribPointervNV_remap_index])
-#define SET_GetVertexAttribPointervNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribPointervNV_remap_index], fn)
-#define CALL_GetVertexAttribdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLdouble *)), driDispatchRemapTable[GetVertexAttribdvNV_remap_index], parameters)
-#define GET_GetVertexAttribdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvNV_remap_index])
-#define SET_GetVertexAttribdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribdvNV_remap_index], fn)
-#define CALL_GetVertexAttribfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLfloat *)), driDispatchRemapTable[GetVertexAttribfvNV_remap_index], parameters)
-#define GET_GetVertexAttribfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvNV_remap_index])
-#define SET_GetVertexAttribfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribfvNV_remap_index], fn)
-#define CALL_GetVertexAttribivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint *)), driDispatchRemapTable[GetVertexAttribivNV_remap_index], parameters)
-#define GET_GetVertexAttribivNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivNV_remap_index])
-#define SET_GetVertexAttribivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetVertexAttribivNV_remap_index], fn)
-#define CALL_IsProgramNV(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsProgramNV_remap_index], parameters)
-#define GET_IsProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[IsProgramNV_remap_index])
-#define SET_IsProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsProgramNV_remap_index], fn)
-#define CALL_LoadProgramNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLubyte *)), driDispatchRemapTable[LoadProgramNV_remap_index], parameters)
-#define GET_LoadProgramNV(disp) GET_by_offset(disp, driDispatchRemapTable[LoadProgramNV_remap_index])
-#define SET_LoadProgramNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[LoadProgramNV_remap_index], fn)
-#define CALL_ProgramParameters4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLdouble *)), driDispatchRemapTable[ProgramParameters4dvNV_remap_index], parameters)
-#define GET_ProgramParameters4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameters4dvNV_remap_index])
-#define SET_ProgramParameters4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameters4dvNV_remap_index], fn)
-#define CALL_ProgramParameters4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, const GLfloat *)), driDispatchRemapTable[ProgramParameters4fvNV_remap_index], parameters)
-#define GET_ProgramParameters4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramParameters4fvNV_remap_index])
-#define SET_ProgramParameters4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramParameters4fvNV_remap_index], fn)
-#define CALL_RequestResidentProgramsNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[RequestResidentProgramsNV_remap_index], parameters)
-#define GET_RequestResidentProgramsNV(disp) GET_by_offset(disp, driDispatchRemapTable[RequestResidentProgramsNV_remap_index])
-#define SET_RequestResidentProgramsNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RequestResidentProgramsNV_remap_index], fn)
-#define CALL_TrackMatrixNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLenum)), driDispatchRemapTable[TrackMatrixNV_remap_index], parameters)
-#define GET_TrackMatrixNV(disp) GET_by_offset(disp, driDispatchRemapTable[TrackMatrixNV_remap_index])
-#define SET_TrackMatrixNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TrackMatrixNV_remap_index], fn)
-#define CALL_VertexAttrib1dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble)), driDispatchRemapTable[VertexAttrib1dNV_remap_index], parameters)
-#define GET_VertexAttrib1dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dNV_remap_index])
-#define SET_VertexAttrib1dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dNV_remap_index], fn)
-#define CALL_VertexAttrib1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib1dvNV_remap_index], parameters)
-#define GET_VertexAttrib1dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvNV_remap_index])
-#define SET_VertexAttrib1dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1dvNV_remap_index], fn)
-#define CALL_VertexAttrib1fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat)), driDispatchRemapTable[VertexAttrib1fNV_remap_index], parameters)
-#define GET_VertexAttrib1fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fNV_remap_index])
-#define SET_VertexAttrib1fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fNV_remap_index], fn)
-#define CALL_VertexAttrib1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib1fvNV_remap_index], parameters)
-#define GET_VertexAttrib1fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvNV_remap_index])
-#define SET_VertexAttrib1fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1fvNV_remap_index], fn)
-#define CALL_VertexAttrib1sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort)), driDispatchRemapTable[VertexAttrib1sNV_remap_index], parameters)
-#define GET_VertexAttrib1sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sNV_remap_index])
-#define SET_VertexAttrib1sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1sNV_remap_index], fn)
-#define CALL_VertexAttrib1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib1svNV_remap_index], parameters)
-#define GET_VertexAttrib1svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svNV_remap_index])
-#define SET_VertexAttrib1svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib1svNV_remap_index], fn)
-#define CALL_VertexAttrib2dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib2dNV_remap_index], parameters)
-#define GET_VertexAttrib2dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dNV_remap_index])
-#define SET_VertexAttrib2dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dNV_remap_index], fn)
-#define CALL_VertexAttrib2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib2dvNV_remap_index], parameters)
-#define GET_VertexAttrib2dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvNV_remap_index])
-#define SET_VertexAttrib2dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2dvNV_remap_index], fn)
-#define CALL_VertexAttrib2fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib2fNV_remap_index], parameters)
-#define GET_VertexAttrib2fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fNV_remap_index])
-#define SET_VertexAttrib2fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fNV_remap_index], fn)
-#define CALL_VertexAttrib2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib2fvNV_remap_index], parameters)
-#define GET_VertexAttrib2fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvNV_remap_index])
-#define SET_VertexAttrib2fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2fvNV_remap_index], fn)
-#define CALL_VertexAttrib2sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib2sNV_remap_index], parameters)
-#define GET_VertexAttrib2sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sNV_remap_index])
-#define SET_VertexAttrib2sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2sNV_remap_index], fn)
-#define CALL_VertexAttrib2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib2svNV_remap_index], parameters)
-#define GET_VertexAttrib2svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svNV_remap_index])
-#define SET_VertexAttrib2svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib2svNV_remap_index], fn)
-#define CALL_VertexAttrib3dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib3dNV_remap_index], parameters)
-#define GET_VertexAttrib3dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dNV_remap_index])
-#define SET_VertexAttrib3dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dNV_remap_index], fn)
-#define CALL_VertexAttrib3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib3dvNV_remap_index], parameters)
-#define GET_VertexAttrib3dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvNV_remap_index])
-#define SET_VertexAttrib3dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3dvNV_remap_index], fn)
-#define CALL_VertexAttrib3fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib3fNV_remap_index], parameters)
-#define GET_VertexAttrib3fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fNV_remap_index])
-#define SET_VertexAttrib3fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fNV_remap_index], fn)
-#define CALL_VertexAttrib3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib3fvNV_remap_index], parameters)
-#define GET_VertexAttrib3fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvNV_remap_index])
-#define SET_VertexAttrib3fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3fvNV_remap_index], fn)
-#define CALL_VertexAttrib3sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib3sNV_remap_index], parameters)
-#define GET_VertexAttrib3sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sNV_remap_index])
-#define SET_VertexAttrib3sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3sNV_remap_index], fn)
-#define CALL_VertexAttrib3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib3svNV_remap_index], parameters)
-#define GET_VertexAttrib3svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svNV_remap_index])
-#define SET_VertexAttrib3svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib3svNV_remap_index], fn)
-#define CALL_VertexAttrib4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[VertexAttrib4dNV_remap_index], parameters)
-#define GET_VertexAttrib4dNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dNV_remap_index])
-#define SET_VertexAttrib4dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dNV_remap_index], fn)
-#define CALL_VertexAttrib4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLdouble *)), driDispatchRemapTable[VertexAttrib4dvNV_remap_index], parameters)
-#define GET_VertexAttrib4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvNV_remap_index])
-#define SET_VertexAttrib4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4dvNV_remap_index], fn)
-#define CALL_VertexAttrib4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[VertexAttrib4fNV_remap_index], parameters)
-#define GET_VertexAttrib4fNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fNV_remap_index])
-#define SET_VertexAttrib4fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fNV_remap_index], fn)
-#define CALL_VertexAttrib4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[VertexAttrib4fvNV_remap_index], parameters)
-#define GET_VertexAttrib4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvNV_remap_index])
-#define SET_VertexAttrib4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4fvNV_remap_index], fn)
-#define CALL_VertexAttrib4sNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLshort, GLshort, GLshort, GLshort)), driDispatchRemapTable[VertexAttrib4sNV_remap_index], parameters)
-#define GET_VertexAttrib4sNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sNV_remap_index])
-#define SET_VertexAttrib4sNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4sNV_remap_index], fn)
-#define CALL_VertexAttrib4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLshort *)), driDispatchRemapTable[VertexAttrib4svNV_remap_index], parameters)
-#define GET_VertexAttrib4svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svNV_remap_index])
-#define SET_VertexAttrib4svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4svNV_remap_index], fn)
-#define CALL_VertexAttrib4ubNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLubyte, GLubyte, GLubyte, GLubyte)), driDispatchRemapTable[VertexAttrib4ubNV_remap_index], parameters)
-#define GET_VertexAttrib4ubNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubNV_remap_index])
-#define SET_VertexAttrib4ubNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubNV_remap_index], fn)
-#define CALL_VertexAttrib4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLubyte *)), driDispatchRemapTable[VertexAttrib4ubvNV_remap_index], parameters)
-#define GET_VertexAttrib4ubvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvNV_remap_index])
-#define SET_VertexAttrib4ubvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttrib4ubvNV_remap_index], fn)
-#define CALL_VertexAttribPointerNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLint, GLenum, GLsizei, const GLvoid *)), driDispatchRemapTable[VertexAttribPointerNV_remap_index], parameters)
-#define GET_VertexAttribPointerNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerNV_remap_index])
-#define SET_VertexAttribPointerNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribPointerNV_remap_index], fn)
-#define CALL_VertexAttribs1dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs1dvNV_remap_index], parameters)
-#define GET_VertexAttribs1dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1dvNV_remap_index])
-#define SET_VertexAttribs1dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1dvNV_remap_index], fn)
-#define CALL_VertexAttribs1fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs1fvNV_remap_index], parameters)
-#define GET_VertexAttribs1fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1fvNV_remap_index])
-#define SET_VertexAttribs1fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1fvNV_remap_index], fn)
-#define CALL_VertexAttribs1svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs1svNV_remap_index], parameters)
-#define GET_VertexAttribs1svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs1svNV_remap_index])
-#define SET_VertexAttribs1svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs1svNV_remap_index], fn)
-#define CALL_VertexAttribs2dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs2dvNV_remap_index], parameters)
-#define GET_VertexAttribs2dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2dvNV_remap_index])
-#define SET_VertexAttribs2dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2dvNV_remap_index], fn)
-#define CALL_VertexAttribs2fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs2fvNV_remap_index], parameters)
-#define GET_VertexAttribs2fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2fvNV_remap_index])
-#define SET_VertexAttribs2fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2fvNV_remap_index], fn)
-#define CALL_VertexAttribs2svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs2svNV_remap_index], parameters)
-#define GET_VertexAttribs2svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs2svNV_remap_index])
-#define SET_VertexAttribs2svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs2svNV_remap_index], fn)
-#define CALL_VertexAttribs3dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs3dvNV_remap_index], parameters)
-#define GET_VertexAttribs3dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3dvNV_remap_index])
-#define SET_VertexAttribs3dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3dvNV_remap_index], fn)
-#define CALL_VertexAttribs3fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs3fvNV_remap_index], parameters)
-#define GET_VertexAttribs3fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3fvNV_remap_index])
-#define SET_VertexAttribs3fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3fvNV_remap_index], fn)
-#define CALL_VertexAttribs3svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs3svNV_remap_index], parameters)
-#define GET_VertexAttribs3svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs3svNV_remap_index])
-#define SET_VertexAttribs3svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs3svNV_remap_index], fn)
-#define CALL_VertexAttribs4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLdouble *)), driDispatchRemapTable[VertexAttribs4dvNV_remap_index], parameters)
-#define GET_VertexAttribs4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4dvNV_remap_index])
-#define SET_VertexAttribs4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4dvNV_remap_index], fn)
-#define CALL_VertexAttribs4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[VertexAttribs4fvNV_remap_index], parameters)
-#define GET_VertexAttribs4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4fvNV_remap_index])
-#define SET_VertexAttribs4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4fvNV_remap_index], fn)
-#define CALL_VertexAttribs4svNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLshort *)), driDispatchRemapTable[VertexAttribs4svNV_remap_index], parameters)
-#define GET_VertexAttribs4svNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4svNV_remap_index])
-#define SET_VertexAttribs4svNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4svNV_remap_index], fn)
-#define CALL_VertexAttribs4ubvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *)), driDispatchRemapTable[VertexAttribs4ubvNV_remap_index], parameters)
-#define GET_VertexAttribs4ubvNV(disp) GET_by_offset(disp, driDispatchRemapTable[VertexAttribs4ubvNV_remap_index])
-#define SET_VertexAttribs4ubvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[VertexAttribs4ubvNV_remap_index], fn)
-#define CALL_GetTexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLfloat *)), driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index], parameters)
-#define GET_GetTexBumpParameterfvATI(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index])
-#define SET_GetTexBumpParameterfvATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index], fn)
-#define CALL_GetTexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint *)), driDispatchRemapTable[GetTexBumpParameterivATI_remap_index], parameters)
-#define GET_GetTexBumpParameterivATI(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterivATI_remap_index])
-#define SET_GetTexBumpParameterivATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexBumpParameterivATI_remap_index], fn)
-#define CALL_TexBumpParameterfvATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLfloat *)), driDispatchRemapTable[TexBumpParameterfvATI_remap_index], parameters)
-#define GET_TexBumpParameterfvATI(disp) GET_by_offset(disp, driDispatchRemapTable[TexBumpParameterfvATI_remap_index])
-#define SET_TexBumpParameterfvATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexBumpParameterfvATI_remap_index], fn)
-#define CALL_TexBumpParameterivATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[TexBumpParameterivATI_remap_index], parameters)
-#define GET_TexBumpParameterivATI(disp) GET_by_offset(disp, driDispatchRemapTable[TexBumpParameterivATI_remap_index])
-#define SET_TexBumpParameterivATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TexBumpParameterivATI_remap_index], fn)
-#define CALL_AlphaFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index], parameters)
-#define GET_AlphaFragmentOp1ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index])
-#define SET_AlphaFragmentOp1ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index], fn)
-#define CALL_AlphaFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index], parameters)
-#define GET_AlphaFragmentOp2ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index])
-#define SET_AlphaFragmentOp2ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index], fn)
-#define CALL_AlphaFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index], parameters)
-#define GET_AlphaFragmentOp3ATI(disp) GET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index])
-#define SET_AlphaFragmentOp3ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index], fn)
-#define CALL_BeginFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[BeginFragmentShaderATI_remap_index], parameters)
-#define GET_BeginFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[BeginFragmentShaderATI_remap_index])
-#define SET_BeginFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginFragmentShaderATI_remap_index], fn)
-#define CALL_BindFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindFragmentShaderATI_remap_index], parameters)
-#define GET_BindFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[BindFragmentShaderATI_remap_index])
-#define SET_BindFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindFragmentShaderATI_remap_index], fn)
-#define CALL_ColorFragmentOp1ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp1ATI_remap_index], parameters)
-#define GET_ColorFragmentOp1ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp1ATI_remap_index])
-#define SET_ColorFragmentOp1ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp1ATI_remap_index], fn)
-#define CALL_ColorFragmentOp2ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp2ATI_remap_index], parameters)
-#define GET_ColorFragmentOp2ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp2ATI_remap_index])
-#define SET_ColorFragmentOp2ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp2ATI_remap_index], fn)
-#define CALL_ColorFragmentOp3ATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint, GLuint)), driDispatchRemapTable[ColorFragmentOp3ATI_remap_index], parameters)
-#define GET_ColorFragmentOp3ATI(disp) GET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp3ATI_remap_index])
-#define SET_ColorFragmentOp3ATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorFragmentOp3ATI_remap_index], fn)
-#define CALL_DeleteFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[DeleteFragmentShaderATI_remap_index], parameters)
-#define GET_DeleteFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFragmentShaderATI_remap_index])
-#define SET_DeleteFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFragmentShaderATI_remap_index], fn)
-#define CALL_EndFragmentShaderATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndFragmentShaderATI_remap_index], parameters)
-#define GET_EndFragmentShaderATI(disp) GET_by_offset(disp, driDispatchRemapTable[EndFragmentShaderATI_remap_index])
-#define SET_EndFragmentShaderATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndFragmentShaderATI_remap_index], fn)
-#define CALL_GenFragmentShadersATI(disp, parameters) CALL_by_offset(disp, (GLuint (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[GenFragmentShadersATI_remap_index], parameters)
-#define GET_GenFragmentShadersATI(disp) GET_by_offset(disp, driDispatchRemapTable[GenFragmentShadersATI_remap_index])
-#define SET_GenFragmentShadersATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFragmentShadersATI_remap_index], fn)
-#define CALL_PassTexCoordATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), driDispatchRemapTable[PassTexCoordATI_remap_index], parameters)
-#define GET_PassTexCoordATI(disp) GET_by_offset(disp, driDispatchRemapTable[PassTexCoordATI_remap_index])
-#define SET_PassTexCoordATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PassTexCoordATI_remap_index], fn)
-#define CALL_SampleMapATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLenum)), driDispatchRemapTable[SampleMapATI_remap_index], parameters)
-#define GET_SampleMapATI(disp) GET_by_offset(disp, driDispatchRemapTable[SampleMapATI_remap_index])
-#define SET_SampleMapATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SampleMapATI_remap_index], fn)
-#define CALL_SetFragmentShaderConstantATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, const GLfloat *)), driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index], parameters)
-#define GET_SetFragmentShaderConstantATI(disp) GET_by_offset(disp, driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index])
-#define SET_SetFragmentShaderConstantATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index], fn)
-#define CALL_PointParameteriNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLint)), driDispatchRemapTable[PointParameteriNV_remap_index], parameters)
-#define GET_PointParameteriNV(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameteriNV_remap_index])
-#define SET_PointParameteriNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameteriNV_remap_index], fn)
-#define CALL_PointParameterivNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, const GLint *)), driDispatchRemapTable[PointParameterivNV_remap_index], parameters)
-#define GET_PointParameterivNV(disp) GET_by_offset(disp, driDispatchRemapTable[PointParameterivNV_remap_index])
-#define SET_PointParameterivNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[PointParameterivNV_remap_index], fn)
-#define CALL_ActiveStencilFaceEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[ActiveStencilFaceEXT_remap_index], parameters)
-#define GET_ActiveStencilFaceEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ActiveStencilFaceEXT_remap_index])
-#define SET_ActiveStencilFaceEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ActiveStencilFaceEXT_remap_index], fn)
-#define CALL_BindVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[BindVertexArrayAPPLE_remap_index], parameters)
-#define GET_BindVertexArrayAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[BindVertexArrayAPPLE_remap_index])
-#define SET_BindVertexArrayAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindVertexArrayAPPLE_remap_index], fn)
-#define CALL_DeleteVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index], parameters)
-#define GET_DeleteVertexArraysAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index])
-#define SET_DeleteVertexArraysAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index], fn)
-#define CALL_GenVertexArraysAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenVertexArraysAPPLE_remap_index], parameters)
-#define GET_GenVertexArraysAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GenVertexArraysAPPLE_remap_index])
-#define SET_GenVertexArraysAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenVertexArraysAPPLE_remap_index], fn)
-#define CALL_IsVertexArrayAPPLE(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsVertexArrayAPPLE_remap_index], parameters)
-#define GET_IsVertexArrayAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[IsVertexArrayAPPLE_remap_index])
-#define SET_IsVertexArrayAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsVertexArrayAPPLE_remap_index], fn)
-#define CALL_GetProgramNamedParameterdvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble *)), driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index], parameters)
-#define GET_GetProgramNamedParameterdvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index])
-#define SET_GetProgramNamedParameterdvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index], fn)
-#define CALL_GetProgramNamedParameterfvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat *)), driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index], parameters)
-#define GET_GetProgramNamedParameterfvNV(disp) GET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index])
-#define SET_GetProgramNamedParameterfvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index], fn)
-#define CALL_ProgramNamedParameter4dNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLdouble, GLdouble, GLdouble, GLdouble)), driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index], parameters)
-#define GET_ProgramNamedParameter4dNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index])
-#define SET_ProgramNamedParameter4dNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index], fn)
-#define CALL_ProgramNamedParameter4dvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLdouble *)), driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index], parameters)
-#define GET_ProgramNamedParameter4dvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index])
-#define SET_ProgramNamedParameter4dvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index], fn)
-#define CALL_ProgramNamedParameter4fNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, GLfloat, GLfloat, GLfloat, GLfloat)), driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index], parameters)
-#define GET_ProgramNamedParameter4fNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index])
-#define SET_ProgramNamedParameter4fNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index], fn)
-#define CALL_ProgramNamedParameter4fvNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const GLubyte *, const GLfloat *)), driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index], parameters)
-#define GET_ProgramNamedParameter4fvNV(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index])
-#define SET_ProgramNamedParameter4fvNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index], fn)
-#define CALL_DepthBoundsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLclampd, GLclampd)), driDispatchRemapTable[DepthBoundsEXT_remap_index], parameters)
-#define GET_DepthBoundsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DepthBoundsEXT_remap_index])
-#define SET_DepthBoundsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DepthBoundsEXT_remap_index], fn)
-#define CALL_BlendEquationSeparateEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum)), driDispatchRemapTable[BlendEquationSeparateEXT_remap_index], parameters)
-#define GET_BlendEquationSeparateEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlendEquationSeparateEXT_remap_index])
-#define SET_BlendEquationSeparateEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlendEquationSeparateEXT_remap_index], fn)
-#define CALL_BindFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindFramebufferEXT_remap_index], parameters)
-#define GET_BindFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindFramebufferEXT_remap_index])
-#define SET_BindFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindFramebufferEXT_remap_index], fn)
-#define CALL_BindRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[BindRenderbufferEXT_remap_index], parameters)
-#define GET_BindRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindRenderbufferEXT_remap_index])
-#define SET_BindRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindRenderbufferEXT_remap_index], fn)
-#define CALL_CheckFramebufferStatusEXT(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index], parameters)
-#define GET_CheckFramebufferStatusEXT(disp) GET_by_offset(disp, driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index])
-#define SET_CheckFramebufferStatusEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index], fn)
-#define CALL_DeleteFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteFramebuffersEXT_remap_index], parameters)
-#define GET_DeleteFramebuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteFramebuffersEXT_remap_index])
-#define SET_DeleteFramebuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteFramebuffersEXT_remap_index], fn)
-#define CALL_DeleteRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, const GLuint *)), driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index], parameters)
-#define GET_DeleteRenderbuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index])
-#define SET_DeleteRenderbuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index], fn)
-#define CALL_FramebufferRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint)), driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index], parameters)
-#define GET_FramebufferRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index])
-#define SET_FramebufferRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index], fn)
-#define CALL_FramebufferTexture1DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTexture1DEXT_remap_index], parameters)
-#define GET_FramebufferTexture1DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture1DEXT_remap_index])
-#define SET_FramebufferTexture1DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture1DEXT_remap_index], fn)
-#define CALL_FramebufferTexture2DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint)), driDispatchRemapTable[FramebufferTexture2DEXT_remap_index], parameters)
-#define GET_FramebufferTexture2DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture2DEXT_remap_index])
-#define SET_FramebufferTexture2DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture2DEXT_remap_index], fn)
-#define CALL_FramebufferTexture3DEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTexture3DEXT_remap_index], parameters)
-#define GET_FramebufferTexture3DEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTexture3DEXT_remap_index])
-#define SET_FramebufferTexture3DEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTexture3DEXT_remap_index], fn)
-#define CALL_GenFramebuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenFramebuffersEXT_remap_index], parameters)
-#define GET_GenFramebuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenFramebuffersEXT_remap_index])
-#define SET_GenFramebuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenFramebuffersEXT_remap_index], fn)
-#define CALL_GenRenderbuffersEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLsizei, GLuint *)), driDispatchRemapTable[GenRenderbuffersEXT_remap_index], parameters)
-#define GET_GenRenderbuffersEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenRenderbuffersEXT_remap_index])
-#define SET_GenRenderbuffersEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenRenderbuffersEXT_remap_index], fn)
-#define CALL_GenerateMipmapEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[GenerateMipmapEXT_remap_index], parameters)
-#define GET_GenerateMipmapEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GenerateMipmapEXT_remap_index])
-#define SET_GenerateMipmapEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GenerateMipmapEXT_remap_index], fn)
-#define CALL_GetFramebufferAttachmentParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLenum, GLint *)), driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index], parameters)
-#define GET_GetFramebufferAttachmentParameterivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index])
-#define SET_GetFramebufferAttachmentParameterivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index], fn)
-#define CALL_GetRenderbufferParameterivEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint *)), driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index], parameters)
-#define GET_GetRenderbufferParameterivEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index])
-#define SET_GetRenderbufferParameterivEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index], fn)
-#define CALL_IsFramebufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsFramebufferEXT_remap_index], parameters)
-#define GET_IsFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsFramebufferEXT_remap_index])
-#define SET_IsFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsFramebufferEXT_remap_index], fn)
-#define CALL_IsRenderbufferEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLuint)), driDispatchRemapTable[IsRenderbufferEXT_remap_index], parameters)
-#define GET_IsRenderbufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsRenderbufferEXT_remap_index])
-#define SET_IsRenderbufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsRenderbufferEXT_remap_index], fn)
-#define CALL_RenderbufferStorageEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLsizei, GLsizei)), driDispatchRemapTable[RenderbufferStorageEXT_remap_index], parameters)
-#define GET_RenderbufferStorageEXT(disp) GET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageEXT_remap_index])
-#define SET_RenderbufferStorageEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[RenderbufferStorageEXT_remap_index], fn)
-#define CALL_BlitFramebufferEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLint, GLbitfield, GLenum)), driDispatchRemapTable[BlitFramebufferEXT_remap_index], parameters)
-#define GET_BlitFramebufferEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index])
-#define SET_BlitFramebufferEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BlitFramebufferEXT_remap_index], fn)
-#define CALL_BufferParameteriAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint)), driDispatchRemapTable[BufferParameteriAPPLE_remap_index], parameters)
-#define GET_BufferParameteriAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[BufferParameteriAPPLE_remap_index])
-#define SET_BufferParameteriAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BufferParameteriAPPLE_remap_index], fn)
-#define CALL_FlushMappedBufferRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLintptr, GLsizeiptr)), driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index], parameters)
-#define GET_FlushMappedBufferRangeAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index])
-#define SET_FlushMappedBufferRangeAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index], fn)
-#define CALL_FramebufferTextureLayerEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLuint, GLint, GLint)), driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], parameters)
-#define GET_FramebufferTextureLayerEXT(disp) GET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index])
-#define SET_FramebufferTextureLayerEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index], fn)
-#define CALL_ColorMaskIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLboolean, GLboolean, GLboolean, GLboolean)), driDispatchRemapTable[ColorMaskIndexedEXT_remap_index], parameters)
-#define GET_ColorMaskIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ColorMaskIndexedEXT_remap_index])
-#define SET_ColorMaskIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ColorMaskIndexedEXT_remap_index], fn)
-#define CALL_DisableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[DisableIndexedEXT_remap_index], parameters)
-#define GET_DisableIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[DisableIndexedEXT_remap_index])
-#define SET_DisableIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[DisableIndexedEXT_remap_index], fn)
-#define CALL_EnableIndexedEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[EnableIndexedEXT_remap_index], parameters)
-#define GET_EnableIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EnableIndexedEXT_remap_index])
-#define SET_EnableIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EnableIndexedEXT_remap_index], fn)
-#define CALL_GetBooleanIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLboolean *)), driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index], parameters)
-#define GET_GetBooleanIndexedvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index])
-#define SET_GetBooleanIndexedvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index], fn)
-#define CALL_GetIntegerIndexedvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLint *)), driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index], parameters)
-#define GET_GetIntegerIndexedvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index])
-#define SET_GetIntegerIndexedvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index], fn)
-#define CALL_IsEnabledIndexedEXT(disp, parameters) CALL_by_offset(disp, (GLboolean (GLAPIENTRYP)(GLenum, GLuint)), driDispatchRemapTable[IsEnabledIndexedEXT_remap_index], parameters)
-#define GET_IsEnabledIndexedEXT(disp) GET_by_offset(disp, driDispatchRemapTable[IsEnabledIndexedEXT_remap_index])
-#define SET_IsEnabledIndexedEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[IsEnabledIndexedEXT_remap_index], fn)
-#define CALL_BeginConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum)), driDispatchRemapTable[BeginConditionalRenderNV_remap_index], parameters)
-#define GET_BeginConditionalRenderNV(disp) GET_by_offset(disp, driDispatchRemapTable[BeginConditionalRenderNV_remap_index])
-#define SET_BeginConditionalRenderNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginConditionalRenderNV_remap_index], fn)
-#define CALL_EndConditionalRenderNV(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndConditionalRenderNV_remap_index], parameters)
-#define GET_EndConditionalRenderNV(disp) GET_by_offset(disp, driDispatchRemapTable[EndConditionalRenderNV_remap_index])
-#define SET_EndConditionalRenderNV(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndConditionalRenderNV_remap_index], fn)
-#define CALL_BeginTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index], parameters)
-#define GET_BeginTransformFeedbackEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index])
-#define SET_BeginTransformFeedbackEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index], fn)
-#define CALL_BindBufferBaseEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint)), driDispatchRemapTable[BindBufferBaseEXT_remap_index], parameters)
-#define GET_BindBufferBaseEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferBaseEXT_remap_index])
-#define SET_BindBufferBaseEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferBaseEXT_remap_index], fn)
-#define CALL_BindBufferOffsetEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr)), driDispatchRemapTable[BindBufferOffsetEXT_remap_index], parameters)
-#define GET_BindBufferOffsetEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferOffsetEXT_remap_index])
-#define SET_BindBufferOffsetEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferOffsetEXT_remap_index], fn)
-#define CALL_BindBufferRangeEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLuint, GLintptr, GLsizeiptr)), driDispatchRemapTable[BindBufferRangeEXT_remap_index], parameters)
-#define GET_BindBufferRangeEXT(disp) GET_by_offset(disp, driDispatchRemapTable[BindBufferRangeEXT_remap_index])
-#define SET_BindBufferRangeEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[BindBufferRangeEXT_remap_index], fn)
-#define CALL_EndTransformFeedbackEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(void)), driDispatchRemapTable[EndTransformFeedbackEXT_remap_index], parameters)
-#define GET_EndTransformFeedbackEXT(disp) GET_by_offset(disp, driDispatchRemapTable[EndTransformFeedbackEXT_remap_index])
-#define SET_EndTransformFeedbackEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EndTransformFeedbackEXT_remap_index], fn)
-#define CALL_GetTransformFeedbackVaryingEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLuint, GLsizei, GLsizei *, GLsizei *, GLenum *, GLchar *)), driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index], parameters)
-#define GET_GetTransformFeedbackVaryingEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index])
-#define SET_GetTransformFeedbackVaryingEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index], fn)
-#define CALL_TransformFeedbackVaryingsEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLsizei, const char **, GLenum)), driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index], parameters)
-#define GET_TransformFeedbackVaryingsEXT(disp) GET_by_offset(disp, driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index])
-#define SET_TransformFeedbackVaryingsEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index], fn)
-#define CALL_ProvokingVertexEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum)), driDispatchRemapTable[ProvokingVertexEXT_remap_index], parameters)
-#define GET_ProvokingVertexEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProvokingVertexEXT_remap_index])
-#define SET_ProvokingVertexEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProvokingVertexEXT_remap_index], fn)
-#define CALL_GetTexParameterPointervAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLvoid **)), driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index], parameters)
-#define GET_GetTexParameterPointervAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index])
-#define SET_GetTexParameterPointervAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index], fn)
-#define CALL_TextureRangeAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLsizei, GLvoid *)), driDispatchRemapTable[TextureRangeAPPLE_remap_index], parameters)
-#define GET_TextureRangeAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[TextureRangeAPPLE_remap_index])
-#define SET_TextureRangeAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[TextureRangeAPPLE_remap_index], fn)
-#define CALL_GetObjectParameterivAPPLE(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLenum, GLint *)), driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index], parameters)
-#define GET_GetObjectParameterivAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index])
-#define SET_GetObjectParameterivAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index], fn)
-#define CALL_ObjectPurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index], parameters)
-#define GET_ObjectPurgeableAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index])
-#define SET_ObjectPurgeableAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index], fn)
-#define CALL_ObjectUnpurgeableAPPLE(disp, parameters) CALL_by_offset(disp, (GLenum (GLAPIENTRYP)(GLenum, GLuint, GLenum)), driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index], parameters)
-#define GET_ObjectUnpurgeableAPPLE(disp) GET_by_offset(disp, driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index])
-#define SET_ObjectUnpurgeableAPPLE(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index], fn)
-#define CALL_StencilFuncSeparateATI(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLenum, GLint, GLuint)), driDispatchRemapTable[StencilFuncSeparateATI_remap_index], parameters)
-#define GET_StencilFuncSeparateATI(disp) GET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparateATI_remap_index])
-#define SET_StencilFuncSeparateATI(disp, fn) SET_by_offset(disp, driDispatchRemapTable[StencilFuncSeparateATI_remap_index], fn)
-#define CALL_ProgramEnvParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], parameters)
-#define GET_ProgramEnvParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index])
-#define SET_ProgramEnvParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index], fn)
-#define CALL_ProgramLocalParameters4fvEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLuint, GLsizei, const GLfloat *)), driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index], parameters)
-#define GET_ProgramLocalParameters4fvEXT(disp) GET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index])
-#define SET_ProgramLocalParameters4fvEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index], fn)
-#define CALL_GetQueryObjecti64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLint64EXT *)), driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index], parameters)
-#define GET_GetQueryObjecti64vEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index])
-#define SET_GetQueryObjecti64vEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index], fn)
-#define CALL_GetQueryObjectui64vEXT(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLuint, GLenum, GLuint64EXT *)), driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index], parameters)
-#define GET_GetQueryObjectui64vEXT(disp) GET_by_offset(disp, driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index])
-#define SET_GetQueryObjectui64vEXT(disp, fn) SET_by_offset(disp, driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index], fn)
-#define CALL_EGLImageTargetRenderbufferStorageOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index], parameters)
-#define GET_EGLImageTargetRenderbufferStorageOES(disp) GET_by_offset(disp, driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index])
-#define SET_EGLImageTargetRenderbufferStorageOES(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index], fn)
-#define CALL_EGLImageTargetTexture2DOES(disp, parameters) CALL_by_offset(disp, (void (GLAPIENTRYP)(GLenum, GLvoid *)), driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index], parameters)
-#define GET_EGLImageTargetTexture2DOES(disp) GET_by_offset(disp, driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index])
-#define SET_EGLImageTargetTexture2DOES(disp, fn) SET_by_offset(disp, driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index], fn)
-
-#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */
-
-#endif /* !defined( _GLAPI_DISPATCH_H_ ) */
diff --git a/src/mesa/glapi/glapioffsets.h b/src/mesa/glapi/glapioffsets.h
deleted file mode 100644 (file)
index a8133b4..0000000
+++ /dev/null
@@ -1,1270 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_offsets.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
- * (C) Copyright IBM Corporation 2004
- * 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
- * BRIAN PAUL, 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.
- */
-
-#if !defined( _GLAPI_OFFSETS_H_ )
-#  define _GLAPI_OFFSETS_H_
-
-/* this file should not be included directly in mesa */
-
-#define _gloffset_NewList 0
-#define _gloffset_EndList 1
-#define _gloffset_CallList 2
-#define _gloffset_CallLists 3
-#define _gloffset_DeleteLists 4
-#define _gloffset_GenLists 5
-#define _gloffset_ListBase 6
-#define _gloffset_Begin 7
-#define _gloffset_Bitmap 8
-#define _gloffset_Color3b 9
-#define _gloffset_Color3bv 10
-#define _gloffset_Color3d 11
-#define _gloffset_Color3dv 12
-#define _gloffset_Color3f 13
-#define _gloffset_Color3fv 14
-#define _gloffset_Color3i 15
-#define _gloffset_Color3iv 16
-#define _gloffset_Color3s 17
-#define _gloffset_Color3sv 18
-#define _gloffset_Color3ub 19
-#define _gloffset_Color3ubv 20
-#define _gloffset_Color3ui 21
-#define _gloffset_Color3uiv 22
-#define _gloffset_Color3us 23
-#define _gloffset_Color3usv 24
-#define _gloffset_Color4b 25
-#define _gloffset_Color4bv 26
-#define _gloffset_Color4d 27
-#define _gloffset_Color4dv 28
-#define _gloffset_Color4f 29
-#define _gloffset_Color4fv 30
-#define _gloffset_Color4i 31
-#define _gloffset_Color4iv 32
-#define _gloffset_Color4s 33
-#define _gloffset_Color4sv 34
-#define _gloffset_Color4ub 35
-#define _gloffset_Color4ubv 36
-#define _gloffset_Color4ui 37
-#define _gloffset_Color4uiv 38
-#define _gloffset_Color4us 39
-#define _gloffset_Color4usv 40
-#define _gloffset_EdgeFlag 41
-#define _gloffset_EdgeFlagv 42
-#define _gloffset_End 43
-#define _gloffset_Indexd 44
-#define _gloffset_Indexdv 45
-#define _gloffset_Indexf 46
-#define _gloffset_Indexfv 47
-#define _gloffset_Indexi 48
-#define _gloffset_Indexiv 49
-#define _gloffset_Indexs 50
-#define _gloffset_Indexsv 51
-#define _gloffset_Normal3b 52
-#define _gloffset_Normal3bv 53
-#define _gloffset_Normal3d 54
-#define _gloffset_Normal3dv 55
-#define _gloffset_Normal3f 56
-#define _gloffset_Normal3fv 57
-#define _gloffset_Normal3i 58
-#define _gloffset_Normal3iv 59
-#define _gloffset_Normal3s 60
-#define _gloffset_Normal3sv 61
-#define _gloffset_RasterPos2d 62
-#define _gloffset_RasterPos2dv 63
-#define _gloffset_RasterPos2f 64
-#define _gloffset_RasterPos2fv 65
-#define _gloffset_RasterPos2i 66
-#define _gloffset_RasterPos2iv 67
-#define _gloffset_RasterPos2s 68
-#define _gloffset_RasterPos2sv 69
-#define _gloffset_RasterPos3d 70
-#define _gloffset_RasterPos3dv 71
-#define _gloffset_RasterPos3f 72
-#define _gloffset_RasterPos3fv 73
-#define _gloffset_RasterPos3i 74
-#define _gloffset_RasterPos3iv 75
-#define _gloffset_RasterPos3s 76
-#define _gloffset_RasterPos3sv 77
-#define _gloffset_RasterPos4d 78
-#define _gloffset_RasterPos4dv 79
-#define _gloffset_RasterPos4f 80
-#define _gloffset_RasterPos4fv 81
-#define _gloffset_RasterPos4i 82
-#define _gloffset_RasterPos4iv 83
-#define _gloffset_RasterPos4s 84
-#define _gloffset_RasterPos4sv 85
-#define _gloffset_Rectd 86
-#define _gloffset_Rectdv 87
-#define _gloffset_Rectf 88
-#define _gloffset_Rectfv 89
-#define _gloffset_Recti 90
-#define _gloffset_Rectiv 91
-#define _gloffset_Rects 92
-#define _gloffset_Rectsv 93
-#define _gloffset_TexCoord1d 94
-#define _gloffset_TexCoord1dv 95
-#define _gloffset_TexCoord1f 96
-#define _gloffset_TexCoord1fv 97
-#define _gloffset_TexCoord1i 98
-#define _gloffset_TexCoord1iv 99
-#define _gloffset_TexCoord1s 100
-#define _gloffset_TexCoord1sv 101
-#define _gloffset_TexCoord2d 102
-#define _gloffset_TexCoord2dv 103
-#define _gloffset_TexCoord2f 104
-#define _gloffset_TexCoord2fv 105
-#define _gloffset_TexCoord2i 106
-#define _gloffset_TexCoord2iv 107
-#define _gloffset_TexCoord2s 108
-#define _gloffset_TexCoord2sv 109
-#define _gloffset_TexCoord3d 110
-#define _gloffset_TexCoord3dv 111
-#define _gloffset_TexCoord3f 112
-#define _gloffset_TexCoord3fv 113
-#define _gloffset_TexCoord3i 114
-#define _gloffset_TexCoord3iv 115
-#define _gloffset_TexCoord3s 116
-#define _gloffset_TexCoord3sv 117
-#define _gloffset_TexCoord4d 118
-#define _gloffset_TexCoord4dv 119
-#define _gloffset_TexCoord4f 120
-#define _gloffset_TexCoord4fv 121
-#define _gloffset_TexCoord4i 122
-#define _gloffset_TexCoord4iv 123
-#define _gloffset_TexCoord4s 124
-#define _gloffset_TexCoord4sv 125
-#define _gloffset_Vertex2d 126
-#define _gloffset_Vertex2dv 127
-#define _gloffset_Vertex2f 128
-#define _gloffset_Vertex2fv 129
-#define _gloffset_Vertex2i 130
-#define _gloffset_Vertex2iv 131
-#define _gloffset_Vertex2s 132
-#define _gloffset_Vertex2sv 133
-#define _gloffset_Vertex3d 134
-#define _gloffset_Vertex3dv 135
-#define _gloffset_Vertex3f 136
-#define _gloffset_Vertex3fv 137
-#define _gloffset_Vertex3i 138
-#define _gloffset_Vertex3iv 139
-#define _gloffset_Vertex3s 140
-#define _gloffset_Vertex3sv 141
-#define _gloffset_Vertex4d 142
-#define _gloffset_Vertex4dv 143
-#define _gloffset_Vertex4f 144
-#define _gloffset_Vertex4fv 145
-#define _gloffset_Vertex4i 146
-#define _gloffset_Vertex4iv 147
-#define _gloffset_Vertex4s 148
-#define _gloffset_Vertex4sv 149
-#define _gloffset_ClipPlane 150
-#define _gloffset_ColorMaterial 151
-#define _gloffset_CullFace 152
-#define _gloffset_Fogf 153
-#define _gloffset_Fogfv 154
-#define _gloffset_Fogi 155
-#define _gloffset_Fogiv 156
-#define _gloffset_FrontFace 157
-#define _gloffset_Hint 158
-#define _gloffset_Lightf 159
-#define _gloffset_Lightfv 160
-#define _gloffset_Lighti 161
-#define _gloffset_Lightiv 162
-#define _gloffset_LightModelf 163
-#define _gloffset_LightModelfv 164
-#define _gloffset_LightModeli 165
-#define _gloffset_LightModeliv 166
-#define _gloffset_LineStipple 167
-#define _gloffset_LineWidth 168
-#define _gloffset_Materialf 169
-#define _gloffset_Materialfv 170
-#define _gloffset_Materiali 171
-#define _gloffset_Materialiv 172
-#define _gloffset_PointSize 173
-#define _gloffset_PolygonMode 174
-#define _gloffset_PolygonStipple 175
-#define _gloffset_Scissor 176
-#define _gloffset_ShadeModel 177
-#define _gloffset_TexParameterf 178
-#define _gloffset_TexParameterfv 179
-#define _gloffset_TexParameteri 180
-#define _gloffset_TexParameteriv 181
-#define _gloffset_TexImage1D 182
-#define _gloffset_TexImage2D 183
-#define _gloffset_TexEnvf 184
-#define _gloffset_TexEnvfv 185
-#define _gloffset_TexEnvi 186
-#define _gloffset_TexEnviv 187
-#define _gloffset_TexGend 188
-#define _gloffset_TexGendv 189
-#define _gloffset_TexGenf 190
-#define _gloffset_TexGenfv 191
-#define _gloffset_TexGeni 192
-#define _gloffset_TexGeniv 193
-#define _gloffset_FeedbackBuffer 194
-#define _gloffset_SelectBuffer 195
-#define _gloffset_RenderMode 196
-#define _gloffset_InitNames 197
-#define _gloffset_LoadName 198
-#define _gloffset_PassThrough 199
-#define _gloffset_PopName 200
-#define _gloffset_PushName 201
-#define _gloffset_DrawBuffer 202
-#define _gloffset_Clear 203
-#define _gloffset_ClearAccum 204
-#define _gloffset_ClearIndex 205
-#define _gloffset_ClearColor 206
-#define _gloffset_ClearStencil 207
-#define _gloffset_ClearDepth 208
-#define _gloffset_StencilMask 209
-#define _gloffset_ColorMask 210
-#define _gloffset_DepthMask 211
-#define _gloffset_IndexMask 212
-#define _gloffset_Accum 213
-#define _gloffset_Disable 214
-#define _gloffset_Enable 215
-#define _gloffset_Finish 216
-#define _gloffset_Flush 217
-#define _gloffset_PopAttrib 218
-#define _gloffset_PushAttrib 219
-#define _gloffset_Map1d 220
-#define _gloffset_Map1f 221
-#define _gloffset_Map2d 222
-#define _gloffset_Map2f 223
-#define _gloffset_MapGrid1d 224
-#define _gloffset_MapGrid1f 225
-#define _gloffset_MapGrid2d 226
-#define _gloffset_MapGrid2f 227
-#define _gloffset_EvalCoord1d 228
-#define _gloffset_EvalCoord1dv 229
-#define _gloffset_EvalCoord1f 230
-#define _gloffset_EvalCoord1fv 231
-#define _gloffset_EvalCoord2d 232
-#define _gloffset_EvalCoord2dv 233
-#define _gloffset_EvalCoord2f 234
-#define _gloffset_EvalCoord2fv 235
-#define _gloffset_EvalMesh1 236
-#define _gloffset_EvalPoint1 237
-#define _gloffset_EvalMesh2 238
-#define _gloffset_EvalPoint2 239
-#define _gloffset_AlphaFunc 240
-#define _gloffset_BlendFunc 241
-#define _gloffset_LogicOp 242
-#define _gloffset_StencilFunc 243
-#define _gloffset_StencilOp 244
-#define _gloffset_DepthFunc 245
-#define _gloffset_PixelZoom 246
-#define _gloffset_PixelTransferf 247
-#define _gloffset_PixelTransferi 248
-#define _gloffset_PixelStoref 249
-#define _gloffset_PixelStorei 250
-#define _gloffset_PixelMapfv 251
-#define _gloffset_PixelMapuiv 252
-#define _gloffset_PixelMapusv 253
-#define _gloffset_ReadBuffer 254
-#define _gloffset_CopyPixels 255
-#define _gloffset_ReadPixels 256
-#define _gloffset_DrawPixels 257
-#define _gloffset_GetBooleanv 258
-#define _gloffset_GetClipPlane 259
-#define _gloffset_GetDoublev 260
-#define _gloffset_GetError 261
-#define _gloffset_GetFloatv 262
-#define _gloffset_GetIntegerv 263
-#define _gloffset_GetLightfv 264
-#define _gloffset_GetLightiv 265
-#define _gloffset_GetMapdv 266
-#define _gloffset_GetMapfv 267
-#define _gloffset_GetMapiv 268
-#define _gloffset_GetMaterialfv 269
-#define _gloffset_GetMaterialiv 270
-#define _gloffset_GetPixelMapfv 271
-#define _gloffset_GetPixelMapuiv 272
-#define _gloffset_GetPixelMapusv 273
-#define _gloffset_GetPolygonStipple 274
-#define _gloffset_GetString 275
-#define _gloffset_GetTexEnvfv 276
-#define _gloffset_GetTexEnviv 277
-#define _gloffset_GetTexGendv 278
-#define _gloffset_GetTexGenfv 279
-#define _gloffset_GetTexGeniv 280
-#define _gloffset_GetTexImage 281
-#define _gloffset_GetTexParameterfv 282
-#define _gloffset_GetTexParameteriv 283
-#define _gloffset_GetTexLevelParameterfv 284
-#define _gloffset_GetTexLevelParameteriv 285
-#define _gloffset_IsEnabled 286
-#define _gloffset_IsList 287
-#define _gloffset_DepthRange 288
-#define _gloffset_Frustum 289
-#define _gloffset_LoadIdentity 290
-#define _gloffset_LoadMatrixf 291
-#define _gloffset_LoadMatrixd 292
-#define _gloffset_MatrixMode 293
-#define _gloffset_MultMatrixf 294
-#define _gloffset_MultMatrixd 295
-#define _gloffset_Ortho 296
-#define _gloffset_PopMatrix 297
-#define _gloffset_PushMatrix 298
-#define _gloffset_Rotated 299
-#define _gloffset_Rotatef 300
-#define _gloffset_Scaled 301
-#define _gloffset_Scalef 302
-#define _gloffset_Translated 303
-#define _gloffset_Translatef 304
-#define _gloffset_Viewport 305
-#define _gloffset_ArrayElement 306
-#define _gloffset_BindTexture 307
-#define _gloffset_ColorPointer 308
-#define _gloffset_DisableClientState 309
-#define _gloffset_DrawArrays 310
-#define _gloffset_DrawElements 311
-#define _gloffset_EdgeFlagPointer 312
-#define _gloffset_EnableClientState 313
-#define _gloffset_IndexPointer 314
-#define _gloffset_Indexub 315
-#define _gloffset_Indexubv 316
-#define _gloffset_InterleavedArrays 317
-#define _gloffset_NormalPointer 318
-#define _gloffset_PolygonOffset 319
-#define _gloffset_TexCoordPointer 320
-#define _gloffset_VertexPointer 321
-#define _gloffset_AreTexturesResident 322
-#define _gloffset_CopyTexImage1D 323
-#define _gloffset_CopyTexImage2D 324
-#define _gloffset_CopyTexSubImage1D 325
-#define _gloffset_CopyTexSubImage2D 326
-#define _gloffset_DeleteTextures 327
-#define _gloffset_GenTextures 328
-#define _gloffset_GetPointerv 329
-#define _gloffset_IsTexture 330
-#define _gloffset_PrioritizeTextures 331
-#define _gloffset_TexSubImage1D 332
-#define _gloffset_TexSubImage2D 333
-#define _gloffset_PopClientAttrib 334
-#define _gloffset_PushClientAttrib 335
-#define _gloffset_BlendColor 336
-#define _gloffset_BlendEquation 337
-#define _gloffset_DrawRangeElements 338
-#define _gloffset_ColorTable 339
-#define _gloffset_ColorTableParameterfv 340
-#define _gloffset_ColorTableParameteriv 341
-#define _gloffset_CopyColorTable 342
-#define _gloffset_GetColorTable 343
-#define _gloffset_GetColorTableParameterfv 344
-#define _gloffset_GetColorTableParameteriv 345
-#define _gloffset_ColorSubTable 346
-#define _gloffset_CopyColorSubTable 347
-#define _gloffset_ConvolutionFilter1D 348
-#define _gloffset_ConvolutionFilter2D 349
-#define _gloffset_ConvolutionParameterf 350
-#define _gloffset_ConvolutionParameterfv 351
-#define _gloffset_ConvolutionParameteri 352
-#define _gloffset_ConvolutionParameteriv 353
-#define _gloffset_CopyConvolutionFilter1D 354
-#define _gloffset_CopyConvolutionFilter2D 355
-#define _gloffset_GetConvolutionFilter 356
-#define _gloffset_GetConvolutionParameterfv 357
-#define _gloffset_GetConvolutionParameteriv 358
-#define _gloffset_GetSeparableFilter 359
-#define _gloffset_SeparableFilter2D 360
-#define _gloffset_GetHistogram 361
-#define _gloffset_GetHistogramParameterfv 362
-#define _gloffset_GetHistogramParameteriv 363
-#define _gloffset_GetMinmax 364
-#define _gloffset_GetMinmaxParameterfv 365
-#define _gloffset_GetMinmaxParameteriv 366
-#define _gloffset_Histogram 367
-#define _gloffset_Minmax 368
-#define _gloffset_ResetHistogram 369
-#define _gloffset_ResetMinmax 370
-#define _gloffset_TexImage3D 371
-#define _gloffset_TexSubImage3D 372
-#define _gloffset_CopyTexSubImage3D 373
-#define _gloffset_ActiveTextureARB 374
-#define _gloffset_ClientActiveTextureARB 375
-#define _gloffset_MultiTexCoord1dARB 376
-#define _gloffset_MultiTexCoord1dvARB 377
-#define _gloffset_MultiTexCoord1fARB 378
-#define _gloffset_MultiTexCoord1fvARB 379
-#define _gloffset_MultiTexCoord1iARB 380
-#define _gloffset_MultiTexCoord1ivARB 381
-#define _gloffset_MultiTexCoord1sARB 382
-#define _gloffset_MultiTexCoord1svARB 383
-#define _gloffset_MultiTexCoord2dARB 384
-#define _gloffset_MultiTexCoord2dvARB 385
-#define _gloffset_MultiTexCoord2fARB 386
-#define _gloffset_MultiTexCoord2fvARB 387
-#define _gloffset_MultiTexCoord2iARB 388
-#define _gloffset_MultiTexCoord2ivARB 389
-#define _gloffset_MultiTexCoord2sARB 390
-#define _gloffset_MultiTexCoord2svARB 391
-#define _gloffset_MultiTexCoord3dARB 392
-#define _gloffset_MultiTexCoord3dvARB 393
-#define _gloffset_MultiTexCoord3fARB 394
-#define _gloffset_MultiTexCoord3fvARB 395
-#define _gloffset_MultiTexCoord3iARB 396
-#define _gloffset_MultiTexCoord3ivARB 397
-#define _gloffset_MultiTexCoord3sARB 398
-#define _gloffset_MultiTexCoord3svARB 399
-#define _gloffset_MultiTexCoord4dARB 400
-#define _gloffset_MultiTexCoord4dvARB 401
-#define _gloffset_MultiTexCoord4fARB 402
-#define _gloffset_MultiTexCoord4fvARB 403
-#define _gloffset_MultiTexCoord4iARB 404
-#define _gloffset_MultiTexCoord4ivARB 405
-#define _gloffset_MultiTexCoord4sARB 406
-#define _gloffset_MultiTexCoord4svARB 407
-
-#if !defined(_GLAPI_USE_REMAP_TABLE)
-
-#define _gloffset_AttachShader 408
-#define _gloffset_CreateProgram 409
-#define _gloffset_CreateShader 410
-#define _gloffset_DeleteProgram 411
-#define _gloffset_DeleteShader 412
-#define _gloffset_DetachShader 413
-#define _gloffset_GetAttachedShaders 414
-#define _gloffset_GetProgramInfoLog 415
-#define _gloffset_GetProgramiv 416
-#define _gloffset_GetShaderInfoLog 417
-#define _gloffset_GetShaderiv 418
-#define _gloffset_IsProgram 419
-#define _gloffset_IsShader 420
-#define _gloffset_StencilFuncSeparate 421
-#define _gloffset_StencilMaskSeparate 422
-#define _gloffset_StencilOpSeparate 423
-#define _gloffset_UniformMatrix2x3fv 424
-#define _gloffset_UniformMatrix2x4fv 425
-#define _gloffset_UniformMatrix3x2fv 426
-#define _gloffset_UniformMatrix3x4fv 427
-#define _gloffset_UniformMatrix4x2fv 428
-#define _gloffset_UniformMatrix4x3fv 429
-#define _gloffset_DrawArraysInstanced 430
-#define _gloffset_DrawElementsInstanced 431
-#define _gloffset_LoadTransposeMatrixdARB 432
-#define _gloffset_LoadTransposeMatrixfARB 433
-#define _gloffset_MultTransposeMatrixdARB 434
-#define _gloffset_MultTransposeMatrixfARB 435
-#define _gloffset_SampleCoverageARB 436
-#define _gloffset_CompressedTexImage1DARB 437
-#define _gloffset_CompressedTexImage2DARB 438
-#define _gloffset_CompressedTexImage3DARB 439
-#define _gloffset_CompressedTexSubImage1DARB 440
-#define _gloffset_CompressedTexSubImage2DARB 441
-#define _gloffset_CompressedTexSubImage3DARB 442
-#define _gloffset_GetCompressedTexImageARB 443
-#define _gloffset_DisableVertexAttribArrayARB 444
-#define _gloffset_EnableVertexAttribArrayARB 445
-#define _gloffset_GetProgramEnvParameterdvARB 446
-#define _gloffset_GetProgramEnvParameterfvARB 447
-#define _gloffset_GetProgramLocalParameterdvARB 448
-#define _gloffset_GetProgramLocalParameterfvARB 449
-#define _gloffset_GetProgramStringARB 450
-#define _gloffset_GetProgramivARB 451
-#define _gloffset_GetVertexAttribdvARB 452
-#define _gloffset_GetVertexAttribfvARB 453
-#define _gloffset_GetVertexAttribivARB 454
-#define _gloffset_ProgramEnvParameter4dARB 455
-#define _gloffset_ProgramEnvParameter4dvARB 456
-#define _gloffset_ProgramEnvParameter4fARB 457
-#define _gloffset_ProgramEnvParameter4fvARB 458
-#define _gloffset_ProgramLocalParameter4dARB 459
-#define _gloffset_ProgramLocalParameter4dvARB 460
-#define _gloffset_ProgramLocalParameter4fARB 461
-#define _gloffset_ProgramLocalParameter4fvARB 462
-#define _gloffset_ProgramStringARB 463
-#define _gloffset_VertexAttrib1dARB 464
-#define _gloffset_VertexAttrib1dvARB 465
-#define _gloffset_VertexAttrib1fARB 466
-#define _gloffset_VertexAttrib1fvARB 467
-#define _gloffset_VertexAttrib1sARB 468
-#define _gloffset_VertexAttrib1svARB 469
-#define _gloffset_VertexAttrib2dARB 470
-#define _gloffset_VertexAttrib2dvARB 471
-#define _gloffset_VertexAttrib2fARB 472
-#define _gloffset_VertexAttrib2fvARB 473
-#define _gloffset_VertexAttrib2sARB 474
-#define _gloffset_VertexAttrib2svARB 475
-#define _gloffset_VertexAttrib3dARB 476
-#define _gloffset_VertexAttrib3dvARB 477
-#define _gloffset_VertexAttrib3fARB 478
-#define _gloffset_VertexAttrib3fvARB 479
-#define _gloffset_VertexAttrib3sARB 480
-#define _gloffset_VertexAttrib3svARB 481
-#define _gloffset_VertexAttrib4NbvARB 482
-#define _gloffset_VertexAttrib4NivARB 483
-#define _gloffset_VertexAttrib4NsvARB 484
-#define _gloffset_VertexAttrib4NubARB 485
-#define _gloffset_VertexAttrib4NubvARB 486
-#define _gloffset_VertexAttrib4NuivARB 487
-#define _gloffset_VertexAttrib4NusvARB 488
-#define _gloffset_VertexAttrib4bvARB 489
-#define _gloffset_VertexAttrib4dARB 490
-#define _gloffset_VertexAttrib4dvARB 491
-#define _gloffset_VertexAttrib4fARB 492
-#define _gloffset_VertexAttrib4fvARB 493
-#define _gloffset_VertexAttrib4ivARB 494
-#define _gloffset_VertexAttrib4sARB 495
-#define _gloffset_VertexAttrib4svARB 496
-#define _gloffset_VertexAttrib4ubvARB 497
-#define _gloffset_VertexAttrib4uivARB 498
-#define _gloffset_VertexAttrib4usvARB 499
-#define _gloffset_VertexAttribPointerARB 500
-#define _gloffset_BindBufferARB 501
-#define _gloffset_BufferDataARB 502
-#define _gloffset_BufferSubDataARB 503
-#define _gloffset_DeleteBuffersARB 504
-#define _gloffset_GenBuffersARB 505
-#define _gloffset_GetBufferParameterivARB 506
-#define _gloffset_GetBufferPointervARB 507
-#define _gloffset_GetBufferSubDataARB 508
-#define _gloffset_IsBufferARB 509
-#define _gloffset_MapBufferARB 510
-#define _gloffset_UnmapBufferARB 511
-#define _gloffset_BeginQueryARB 512
-#define _gloffset_DeleteQueriesARB 513
-#define _gloffset_EndQueryARB 514
-#define _gloffset_GenQueriesARB 515
-#define _gloffset_GetQueryObjectivARB 516
-#define _gloffset_GetQueryObjectuivARB 517
-#define _gloffset_GetQueryivARB 518
-#define _gloffset_IsQueryARB 519
-#define _gloffset_AttachObjectARB 520
-#define _gloffset_CompileShaderARB 521
-#define _gloffset_CreateProgramObjectARB 522
-#define _gloffset_CreateShaderObjectARB 523
-#define _gloffset_DeleteObjectARB 524
-#define _gloffset_DetachObjectARB 525
-#define _gloffset_GetActiveUniformARB 526
-#define _gloffset_GetAttachedObjectsARB 527
-#define _gloffset_GetHandleARB 528
-#define _gloffset_GetInfoLogARB 529
-#define _gloffset_GetObjectParameterfvARB 530
-#define _gloffset_GetObjectParameterivARB 531
-#define _gloffset_GetShaderSourceARB 532
-#define _gloffset_GetUniformLocationARB 533
-#define _gloffset_GetUniformfvARB 534
-#define _gloffset_GetUniformivARB 535
-#define _gloffset_LinkProgramARB 536
-#define _gloffset_ShaderSourceARB 537
-#define _gloffset_Uniform1fARB 538
-#define _gloffset_Uniform1fvARB 539
-#define _gloffset_Uniform1iARB 540
-#define _gloffset_Uniform1ivARB 541
-#define _gloffset_Uniform2fARB 542
-#define _gloffset_Uniform2fvARB 543
-#define _gloffset_Uniform2iARB 544
-#define _gloffset_Uniform2ivARB 545
-#define _gloffset_Uniform3fARB 546
-#define _gloffset_Uniform3fvARB 547
-#define _gloffset_Uniform3iARB 548
-#define _gloffset_Uniform3ivARB 549
-#define _gloffset_Uniform4fARB 550
-#define _gloffset_Uniform4fvARB 551
-#define _gloffset_Uniform4iARB 552
-#define _gloffset_Uniform4ivARB 553
-#define _gloffset_UniformMatrix2fvARB 554
-#define _gloffset_UniformMatrix3fvARB 555
-#define _gloffset_UniformMatrix4fvARB 556
-#define _gloffset_UseProgramObjectARB 557
-#define _gloffset_ValidateProgramARB 558
-#define _gloffset_BindAttribLocationARB 559
-#define _gloffset_GetActiveAttribARB 560
-#define _gloffset_GetAttribLocationARB 561
-#define _gloffset_DrawBuffersARB 562
-#define _gloffset_RenderbufferStorageMultisample 563
-#define _gloffset_FlushMappedBufferRange 564
-#define _gloffset_MapBufferRange 565
-#define _gloffset_BindVertexArray 566
-#define _gloffset_GenVertexArrays 567
-#define _gloffset_CopyBufferSubData 568
-#define _gloffset_ClientWaitSync 569
-#define _gloffset_DeleteSync 570
-#define _gloffset_FenceSync 571
-#define _gloffset_GetInteger64v 572
-#define _gloffset_GetSynciv 573
-#define _gloffset_IsSync 574
-#define _gloffset_WaitSync 575
-#define _gloffset_DrawElementsBaseVertex 576
-#define _gloffset_DrawRangeElementsBaseVertex 577
-#define _gloffset_MultiDrawElementsBaseVertex 578
-#define _gloffset_PolygonOffsetEXT 579
-#define _gloffset_GetPixelTexGenParameterfvSGIS 580
-#define _gloffset_GetPixelTexGenParameterivSGIS 581
-#define _gloffset_PixelTexGenParameterfSGIS 582
-#define _gloffset_PixelTexGenParameterfvSGIS 583
-#define _gloffset_PixelTexGenParameteriSGIS 584
-#define _gloffset_PixelTexGenParameterivSGIS 585
-#define _gloffset_SampleMaskSGIS 586
-#define _gloffset_SamplePatternSGIS 587
-#define _gloffset_ColorPointerEXT 588
-#define _gloffset_EdgeFlagPointerEXT 589
-#define _gloffset_IndexPointerEXT 590
-#define _gloffset_NormalPointerEXT 591
-#define _gloffset_TexCoordPointerEXT 592
-#define _gloffset_VertexPointerEXT 593
-#define _gloffset_PointParameterfEXT 594
-#define _gloffset_PointParameterfvEXT 595
-#define _gloffset_LockArraysEXT 596
-#define _gloffset_UnlockArraysEXT 597
-#define _gloffset_CullParameterdvEXT 598
-#define _gloffset_CullParameterfvEXT 599
-#define _gloffset_SecondaryColor3bEXT 600
-#define _gloffset_SecondaryColor3bvEXT 601
-#define _gloffset_SecondaryColor3dEXT 602
-#define _gloffset_SecondaryColor3dvEXT 603
-#define _gloffset_SecondaryColor3fEXT 604
-#define _gloffset_SecondaryColor3fvEXT 605
-#define _gloffset_SecondaryColor3iEXT 606
-#define _gloffset_SecondaryColor3ivEXT 607
-#define _gloffset_SecondaryColor3sEXT 608
-#define _gloffset_SecondaryColor3svEXT 609
-#define _gloffset_SecondaryColor3ubEXT 610
-#define _gloffset_SecondaryColor3ubvEXT 611
-#define _gloffset_SecondaryColor3uiEXT 612
-#define _gloffset_SecondaryColor3uivEXT 613
-#define _gloffset_SecondaryColor3usEXT 614
-#define _gloffset_SecondaryColor3usvEXT 615
-#define _gloffset_SecondaryColorPointerEXT 616
-#define _gloffset_MultiDrawArraysEXT 617
-#define _gloffset_MultiDrawElementsEXT 618
-#define _gloffset_FogCoordPointerEXT 619
-#define _gloffset_FogCoorddEXT 620
-#define _gloffset_FogCoorddvEXT 621
-#define _gloffset_FogCoordfEXT 622
-#define _gloffset_FogCoordfvEXT 623
-#define _gloffset_PixelTexGenSGIX 624
-#define _gloffset_BlendFuncSeparateEXT 625
-#define _gloffset_FlushVertexArrayRangeNV 626
-#define _gloffset_VertexArrayRangeNV 627
-#define _gloffset_CombinerInputNV 628
-#define _gloffset_CombinerOutputNV 629
-#define _gloffset_CombinerParameterfNV 630
-#define _gloffset_CombinerParameterfvNV 631
-#define _gloffset_CombinerParameteriNV 632
-#define _gloffset_CombinerParameterivNV 633
-#define _gloffset_FinalCombinerInputNV 634
-#define _gloffset_GetCombinerInputParameterfvNV 635
-#define _gloffset_GetCombinerInputParameterivNV 636
-#define _gloffset_GetCombinerOutputParameterfvNV 637
-#define _gloffset_GetCombinerOutputParameterivNV 638
-#define _gloffset_GetFinalCombinerInputParameterfvNV 639
-#define _gloffset_GetFinalCombinerInputParameterivNV 640
-#define _gloffset_ResizeBuffersMESA 641
-#define _gloffset_WindowPos2dMESA 642
-#define _gloffset_WindowPos2dvMESA 643
-#define _gloffset_WindowPos2fMESA 644
-#define _gloffset_WindowPos2fvMESA 645
-#define _gloffset_WindowPos2iMESA 646
-#define _gloffset_WindowPos2ivMESA 647
-#define _gloffset_WindowPos2sMESA 648
-#define _gloffset_WindowPos2svMESA 649
-#define _gloffset_WindowPos3dMESA 650
-#define _gloffset_WindowPos3dvMESA 651
-#define _gloffset_WindowPos3fMESA 652
-#define _gloffset_WindowPos3fvMESA 653
-#define _gloffset_WindowPos3iMESA 654
-#define _gloffset_WindowPos3ivMESA 655
-#define _gloffset_WindowPos3sMESA 656
-#define _gloffset_WindowPos3svMESA 657
-#define _gloffset_WindowPos4dMESA 658
-#define _gloffset_WindowPos4dvMESA 659
-#define _gloffset_WindowPos4fMESA 660
-#define _gloffset_WindowPos4fvMESA 661
-#define _gloffset_WindowPos4iMESA 662
-#define _gloffset_WindowPos4ivMESA 663
-#define _gloffset_WindowPos4sMESA 664
-#define _gloffset_WindowPos4svMESA 665
-#define _gloffset_MultiModeDrawArraysIBM 666
-#define _gloffset_MultiModeDrawElementsIBM 667
-#define _gloffset_DeleteFencesNV 668
-#define _gloffset_FinishFenceNV 669
-#define _gloffset_GenFencesNV 670
-#define _gloffset_GetFenceivNV 671
-#define _gloffset_IsFenceNV 672
-#define _gloffset_SetFenceNV 673
-#define _gloffset_TestFenceNV 674
-#define _gloffset_AreProgramsResidentNV 675
-#define _gloffset_BindProgramNV 676
-#define _gloffset_DeleteProgramsNV 677
-#define _gloffset_ExecuteProgramNV 678
-#define _gloffset_GenProgramsNV 679
-#define _gloffset_GetProgramParameterdvNV 680
-#define _gloffset_GetProgramParameterfvNV 681
-#define _gloffset_GetProgramStringNV 682
-#define _gloffset_GetProgramivNV 683
-#define _gloffset_GetTrackMatrixivNV 684
-#define _gloffset_GetVertexAttribPointervNV 685
-#define _gloffset_GetVertexAttribdvNV 686
-#define _gloffset_GetVertexAttribfvNV 687
-#define _gloffset_GetVertexAttribivNV 688
-#define _gloffset_IsProgramNV 689
-#define _gloffset_LoadProgramNV 690
-#define _gloffset_ProgramParameters4dvNV 691
-#define _gloffset_ProgramParameters4fvNV 692
-#define _gloffset_RequestResidentProgramsNV 693
-#define _gloffset_TrackMatrixNV 694
-#define _gloffset_VertexAttrib1dNV 695
-#define _gloffset_VertexAttrib1dvNV 696
-#define _gloffset_VertexAttrib1fNV 697
-#define _gloffset_VertexAttrib1fvNV 698
-#define _gloffset_VertexAttrib1sNV 699
-#define _gloffset_VertexAttrib1svNV 700
-#define _gloffset_VertexAttrib2dNV 701
-#define _gloffset_VertexAttrib2dvNV 702
-#define _gloffset_VertexAttrib2fNV 703
-#define _gloffset_VertexAttrib2fvNV 704
-#define _gloffset_VertexAttrib2sNV 705
-#define _gloffset_VertexAttrib2svNV 706
-#define _gloffset_VertexAttrib3dNV 707
-#define _gloffset_VertexAttrib3dvNV 708
-#define _gloffset_VertexAttrib3fNV 709
-#define _gloffset_VertexAttrib3fvNV 710
-#define _gloffset_VertexAttrib3sNV 711
-#define _gloffset_VertexAttrib3svNV 712
-#define _gloffset_VertexAttrib4dNV 713
-#define _gloffset_VertexAttrib4dvNV 714
-#define _gloffset_VertexAttrib4fNV 715
-#define _gloffset_VertexAttrib4fvNV 716
-#define _gloffset_VertexAttrib4sNV 717
-#define _gloffset_VertexAttrib4svNV 718
-#define _gloffset_VertexAttrib4ubNV 719
-#define _gloffset_VertexAttrib4ubvNV 720
-#define _gloffset_VertexAttribPointerNV 721
-#define _gloffset_VertexAttribs1dvNV 722
-#define _gloffset_VertexAttribs1fvNV 723
-#define _gloffset_VertexAttribs1svNV 724
-#define _gloffset_VertexAttribs2dvNV 725
-#define _gloffset_VertexAttribs2fvNV 726
-#define _gloffset_VertexAttribs2svNV 727
-#define _gloffset_VertexAttribs3dvNV 728
-#define _gloffset_VertexAttribs3fvNV 729
-#define _gloffset_VertexAttribs3svNV 730
-#define _gloffset_VertexAttribs4dvNV 731
-#define _gloffset_VertexAttribs4fvNV 732
-#define _gloffset_VertexAttribs4svNV 733
-#define _gloffset_VertexAttribs4ubvNV 734
-#define _gloffset_GetTexBumpParameterfvATI 735
-#define _gloffset_GetTexBumpParameterivATI 736
-#define _gloffset_TexBumpParameterfvATI 737
-#define _gloffset_TexBumpParameterivATI 738
-#define _gloffset_AlphaFragmentOp1ATI 739
-#define _gloffset_AlphaFragmentOp2ATI 740
-#define _gloffset_AlphaFragmentOp3ATI 741
-#define _gloffset_BeginFragmentShaderATI 742
-#define _gloffset_BindFragmentShaderATI 743
-#define _gloffset_ColorFragmentOp1ATI 744
-#define _gloffset_ColorFragmentOp2ATI 745
-#define _gloffset_ColorFragmentOp3ATI 746
-#define _gloffset_DeleteFragmentShaderATI 747
-#define _gloffset_EndFragmentShaderATI 748
-#define _gloffset_GenFragmentShadersATI 749
-#define _gloffset_PassTexCoordATI 750
-#define _gloffset_SampleMapATI 751
-#define _gloffset_SetFragmentShaderConstantATI 752
-#define _gloffset_PointParameteriNV 753
-#define _gloffset_PointParameterivNV 754
-#define _gloffset_ActiveStencilFaceEXT 755
-#define _gloffset_BindVertexArrayAPPLE 756
-#define _gloffset_DeleteVertexArraysAPPLE 757
-#define _gloffset_GenVertexArraysAPPLE 758
-#define _gloffset_IsVertexArrayAPPLE 759
-#define _gloffset_GetProgramNamedParameterdvNV 760
-#define _gloffset_GetProgramNamedParameterfvNV 761
-#define _gloffset_ProgramNamedParameter4dNV 762
-#define _gloffset_ProgramNamedParameter4dvNV 763
-#define _gloffset_ProgramNamedParameter4fNV 764
-#define _gloffset_ProgramNamedParameter4fvNV 765
-#define _gloffset_DepthBoundsEXT 766
-#define _gloffset_BlendEquationSeparateEXT 767
-#define _gloffset_BindFramebufferEXT 768
-#define _gloffset_BindRenderbufferEXT 769
-#define _gloffset_CheckFramebufferStatusEXT 770
-#define _gloffset_DeleteFramebuffersEXT 771
-#define _gloffset_DeleteRenderbuffersEXT 772
-#define _gloffset_FramebufferRenderbufferEXT 773
-#define _gloffset_FramebufferTexture1DEXT 774
-#define _gloffset_FramebufferTexture2DEXT 775
-#define _gloffset_FramebufferTexture3DEXT 776
-#define _gloffset_GenFramebuffersEXT 777
-#define _gloffset_GenRenderbuffersEXT 778
-#define _gloffset_GenerateMipmapEXT 779
-#define _gloffset_GetFramebufferAttachmentParameterivEXT 780
-#define _gloffset_GetRenderbufferParameterivEXT 781
-#define _gloffset_IsFramebufferEXT 782
-#define _gloffset_IsRenderbufferEXT 783
-#define _gloffset_RenderbufferStorageEXT 784
-#define _gloffset_BlitFramebufferEXT 785
-#define _gloffset_BufferParameteriAPPLE 786
-#define _gloffset_FlushMappedBufferRangeAPPLE 787
-#define _gloffset_FramebufferTextureLayerEXT 788
-#define _gloffset_ColorMaskIndexedEXT 789
-#define _gloffset_DisableIndexedEXT 790
-#define _gloffset_EnableIndexedEXT 791
-#define _gloffset_GetBooleanIndexedvEXT 792
-#define _gloffset_GetIntegerIndexedvEXT 793
-#define _gloffset_IsEnabledIndexedEXT 794
-#define _gloffset_BeginConditionalRenderNV 795
-#define _gloffset_EndConditionalRenderNV 796
-#define _gloffset_BeginTransformFeedbackEXT 797
-#define _gloffset_BindBufferBaseEXT 798
-#define _gloffset_BindBufferOffsetEXT 799
-#define _gloffset_BindBufferRangeEXT 800
-#define _gloffset_EndTransformFeedbackEXT 801
-#define _gloffset_GetTransformFeedbackVaryingEXT 802
-#define _gloffset_TransformFeedbackVaryingsEXT 803
-#define _gloffset_ProvokingVertexEXT 804
-#define _gloffset_GetTexParameterPointervAPPLE 805
-#define _gloffset_TextureRangeAPPLE 806
-#define _gloffset_GetObjectParameterivAPPLE 807
-#define _gloffset_ObjectPurgeableAPPLE 808
-#define _gloffset_ObjectUnpurgeableAPPLE 809
-#define _gloffset_StencilFuncSeparateATI 810
-#define _gloffset_ProgramEnvParameters4fvEXT 811
-#define _gloffset_ProgramLocalParameters4fvEXT 812
-#define _gloffset_GetQueryObjecti64vEXT 813
-#define _gloffset_GetQueryObjectui64vEXT 814
-#define _gloffset_EGLImageTargetRenderbufferStorageOES 815
-#define _gloffset_EGLImageTargetTexture2DOES 816
-#define _gloffset_FIRST_DYNAMIC 817
-
-#else
-
-#define _gloffset_AttachShader driDispatchRemapTable[AttachShader_remap_index]
-#define _gloffset_CreateProgram driDispatchRemapTable[CreateProgram_remap_index]
-#define _gloffset_CreateShader driDispatchRemapTable[CreateShader_remap_index]
-#define _gloffset_DeleteProgram driDispatchRemapTable[DeleteProgram_remap_index]
-#define _gloffset_DeleteShader driDispatchRemapTable[DeleteShader_remap_index]
-#define _gloffset_DetachShader driDispatchRemapTable[DetachShader_remap_index]
-#define _gloffset_GetAttachedShaders driDispatchRemapTable[GetAttachedShaders_remap_index]
-#define _gloffset_GetProgramInfoLog driDispatchRemapTable[GetProgramInfoLog_remap_index]
-#define _gloffset_GetProgramiv driDispatchRemapTable[GetProgramiv_remap_index]
-#define _gloffset_GetShaderInfoLog driDispatchRemapTable[GetShaderInfoLog_remap_index]
-#define _gloffset_GetShaderiv driDispatchRemapTable[GetShaderiv_remap_index]
-#define _gloffset_IsProgram driDispatchRemapTable[IsProgram_remap_index]
-#define _gloffset_IsShader driDispatchRemapTable[IsShader_remap_index]
-#define _gloffset_StencilFuncSeparate driDispatchRemapTable[StencilFuncSeparate_remap_index]
-#define _gloffset_StencilMaskSeparate driDispatchRemapTable[StencilMaskSeparate_remap_index]
-#define _gloffset_StencilOpSeparate driDispatchRemapTable[StencilOpSeparate_remap_index]
-#define _gloffset_UniformMatrix2x3fv driDispatchRemapTable[UniformMatrix2x3fv_remap_index]
-#define _gloffset_UniformMatrix2x4fv driDispatchRemapTable[UniformMatrix2x4fv_remap_index]
-#define _gloffset_UniformMatrix3x2fv driDispatchRemapTable[UniformMatrix3x2fv_remap_index]
-#define _gloffset_UniformMatrix3x4fv driDispatchRemapTable[UniformMatrix3x4fv_remap_index]
-#define _gloffset_UniformMatrix4x2fv driDispatchRemapTable[UniformMatrix4x2fv_remap_index]
-#define _gloffset_UniformMatrix4x3fv driDispatchRemapTable[UniformMatrix4x3fv_remap_index]
-#define _gloffset_DrawArraysInstanced driDispatchRemapTable[DrawArraysInstanced_remap_index]
-#define _gloffset_DrawElementsInstanced driDispatchRemapTable[DrawElementsInstanced_remap_index]
-#define _gloffset_LoadTransposeMatrixdARB driDispatchRemapTable[LoadTransposeMatrixdARB_remap_index]
-#define _gloffset_LoadTransposeMatrixfARB driDispatchRemapTable[LoadTransposeMatrixfARB_remap_index]
-#define _gloffset_MultTransposeMatrixdARB driDispatchRemapTable[MultTransposeMatrixdARB_remap_index]
-#define _gloffset_MultTransposeMatrixfARB driDispatchRemapTable[MultTransposeMatrixfARB_remap_index]
-#define _gloffset_SampleCoverageARB driDispatchRemapTable[SampleCoverageARB_remap_index]
-#define _gloffset_CompressedTexImage1DARB driDispatchRemapTable[CompressedTexImage1DARB_remap_index]
-#define _gloffset_CompressedTexImage2DARB driDispatchRemapTable[CompressedTexImage2DARB_remap_index]
-#define _gloffset_CompressedTexImage3DARB driDispatchRemapTable[CompressedTexImage3DARB_remap_index]
-#define _gloffset_CompressedTexSubImage1DARB driDispatchRemapTable[CompressedTexSubImage1DARB_remap_index]
-#define _gloffset_CompressedTexSubImage2DARB driDispatchRemapTable[CompressedTexSubImage2DARB_remap_index]
-#define _gloffset_CompressedTexSubImage3DARB driDispatchRemapTable[CompressedTexSubImage3DARB_remap_index]
-#define _gloffset_GetCompressedTexImageARB driDispatchRemapTable[GetCompressedTexImageARB_remap_index]
-#define _gloffset_DisableVertexAttribArrayARB driDispatchRemapTable[DisableVertexAttribArrayARB_remap_index]
-#define _gloffset_EnableVertexAttribArrayARB driDispatchRemapTable[EnableVertexAttribArrayARB_remap_index]
-#define _gloffset_GetProgramEnvParameterdvARB driDispatchRemapTable[GetProgramEnvParameterdvARB_remap_index]
-#define _gloffset_GetProgramEnvParameterfvARB driDispatchRemapTable[GetProgramEnvParameterfvARB_remap_index]
-#define _gloffset_GetProgramLocalParameterdvARB driDispatchRemapTable[GetProgramLocalParameterdvARB_remap_index]
-#define _gloffset_GetProgramLocalParameterfvARB driDispatchRemapTable[GetProgramLocalParameterfvARB_remap_index]
-#define _gloffset_GetProgramStringARB driDispatchRemapTable[GetProgramStringARB_remap_index]
-#define _gloffset_GetProgramivARB driDispatchRemapTable[GetProgramivARB_remap_index]
-#define _gloffset_GetVertexAttribdvARB driDispatchRemapTable[GetVertexAttribdvARB_remap_index]
-#define _gloffset_GetVertexAttribfvARB driDispatchRemapTable[GetVertexAttribfvARB_remap_index]
-#define _gloffset_GetVertexAttribivARB driDispatchRemapTable[GetVertexAttribivARB_remap_index]
-#define _gloffset_ProgramEnvParameter4dARB driDispatchRemapTable[ProgramEnvParameter4dARB_remap_index]
-#define _gloffset_ProgramEnvParameter4dvARB driDispatchRemapTable[ProgramEnvParameter4dvARB_remap_index]
-#define _gloffset_ProgramEnvParameter4fARB driDispatchRemapTable[ProgramEnvParameter4fARB_remap_index]
-#define _gloffset_ProgramEnvParameter4fvARB driDispatchRemapTable[ProgramEnvParameter4fvARB_remap_index]
-#define _gloffset_ProgramLocalParameter4dARB driDispatchRemapTable[ProgramLocalParameter4dARB_remap_index]
-#define _gloffset_ProgramLocalParameter4dvARB driDispatchRemapTable[ProgramLocalParameter4dvARB_remap_index]
-#define _gloffset_ProgramLocalParameter4fARB driDispatchRemapTable[ProgramLocalParameter4fARB_remap_index]
-#define _gloffset_ProgramLocalParameter4fvARB driDispatchRemapTable[ProgramLocalParameter4fvARB_remap_index]
-#define _gloffset_ProgramStringARB driDispatchRemapTable[ProgramStringARB_remap_index]
-#define _gloffset_VertexAttrib1dARB driDispatchRemapTable[VertexAttrib1dARB_remap_index]
-#define _gloffset_VertexAttrib1dvARB driDispatchRemapTable[VertexAttrib1dvARB_remap_index]
-#define _gloffset_VertexAttrib1fARB driDispatchRemapTable[VertexAttrib1fARB_remap_index]
-#define _gloffset_VertexAttrib1fvARB driDispatchRemapTable[VertexAttrib1fvARB_remap_index]
-#define _gloffset_VertexAttrib1sARB driDispatchRemapTable[VertexAttrib1sARB_remap_index]
-#define _gloffset_VertexAttrib1svARB driDispatchRemapTable[VertexAttrib1svARB_remap_index]
-#define _gloffset_VertexAttrib2dARB driDispatchRemapTable[VertexAttrib2dARB_remap_index]
-#define _gloffset_VertexAttrib2dvARB driDispatchRemapTable[VertexAttrib2dvARB_remap_index]
-#define _gloffset_VertexAttrib2fARB driDispatchRemapTable[VertexAttrib2fARB_remap_index]
-#define _gloffset_VertexAttrib2fvARB driDispatchRemapTable[VertexAttrib2fvARB_remap_index]
-#define _gloffset_VertexAttrib2sARB driDispatchRemapTable[VertexAttrib2sARB_remap_index]
-#define _gloffset_VertexAttrib2svARB driDispatchRemapTable[VertexAttrib2svARB_remap_index]
-#define _gloffset_VertexAttrib3dARB driDispatchRemapTable[VertexAttrib3dARB_remap_index]
-#define _gloffset_VertexAttrib3dvARB driDispatchRemapTable[VertexAttrib3dvARB_remap_index]
-#define _gloffset_VertexAttrib3fARB driDispatchRemapTable[VertexAttrib3fARB_remap_index]
-#define _gloffset_VertexAttrib3fvARB driDispatchRemapTable[VertexAttrib3fvARB_remap_index]
-#define _gloffset_VertexAttrib3sARB driDispatchRemapTable[VertexAttrib3sARB_remap_index]
-#define _gloffset_VertexAttrib3svARB driDispatchRemapTable[VertexAttrib3svARB_remap_index]
-#define _gloffset_VertexAttrib4NbvARB driDispatchRemapTable[VertexAttrib4NbvARB_remap_index]
-#define _gloffset_VertexAttrib4NivARB driDispatchRemapTable[VertexAttrib4NivARB_remap_index]
-#define _gloffset_VertexAttrib4NsvARB driDispatchRemapTable[VertexAttrib4NsvARB_remap_index]
-#define _gloffset_VertexAttrib4NubARB driDispatchRemapTable[VertexAttrib4NubARB_remap_index]
-#define _gloffset_VertexAttrib4NubvARB driDispatchRemapTable[VertexAttrib4NubvARB_remap_index]
-#define _gloffset_VertexAttrib4NuivARB driDispatchRemapTable[VertexAttrib4NuivARB_remap_index]
-#define _gloffset_VertexAttrib4NusvARB driDispatchRemapTable[VertexAttrib4NusvARB_remap_index]
-#define _gloffset_VertexAttrib4bvARB driDispatchRemapTable[VertexAttrib4bvARB_remap_index]
-#define _gloffset_VertexAttrib4dARB driDispatchRemapTable[VertexAttrib4dARB_remap_index]
-#define _gloffset_VertexAttrib4dvARB driDispatchRemapTable[VertexAttrib4dvARB_remap_index]
-#define _gloffset_VertexAttrib4fARB driDispatchRemapTable[VertexAttrib4fARB_remap_index]
-#define _gloffset_VertexAttrib4fvARB driDispatchRemapTable[VertexAttrib4fvARB_remap_index]
-#define _gloffset_VertexAttrib4ivARB driDispatchRemapTable[VertexAttrib4ivARB_remap_index]
-#define _gloffset_VertexAttrib4sARB driDispatchRemapTable[VertexAttrib4sARB_remap_index]
-#define _gloffset_VertexAttrib4svARB driDispatchRemapTable[VertexAttrib4svARB_remap_index]
-#define _gloffset_VertexAttrib4ubvARB driDispatchRemapTable[VertexAttrib4ubvARB_remap_index]
-#define _gloffset_VertexAttrib4uivARB driDispatchRemapTable[VertexAttrib4uivARB_remap_index]
-#define _gloffset_VertexAttrib4usvARB driDispatchRemapTable[VertexAttrib4usvARB_remap_index]
-#define _gloffset_VertexAttribPointerARB driDispatchRemapTable[VertexAttribPointerARB_remap_index]
-#define _gloffset_BindBufferARB driDispatchRemapTable[BindBufferARB_remap_index]
-#define _gloffset_BufferDataARB driDispatchRemapTable[BufferDataARB_remap_index]
-#define _gloffset_BufferSubDataARB driDispatchRemapTable[BufferSubDataARB_remap_index]
-#define _gloffset_DeleteBuffersARB driDispatchRemapTable[DeleteBuffersARB_remap_index]
-#define _gloffset_GenBuffersARB driDispatchRemapTable[GenBuffersARB_remap_index]
-#define _gloffset_GetBufferParameterivARB driDispatchRemapTable[GetBufferParameterivARB_remap_index]
-#define _gloffset_GetBufferPointervARB driDispatchRemapTable[GetBufferPointervARB_remap_index]
-#define _gloffset_GetBufferSubDataARB driDispatchRemapTable[GetBufferSubDataARB_remap_index]
-#define _gloffset_IsBufferARB driDispatchRemapTable[IsBufferARB_remap_index]
-#define _gloffset_MapBufferARB driDispatchRemapTable[MapBufferARB_remap_index]
-#define _gloffset_UnmapBufferARB driDispatchRemapTable[UnmapBufferARB_remap_index]
-#define _gloffset_BeginQueryARB driDispatchRemapTable[BeginQueryARB_remap_index]
-#define _gloffset_DeleteQueriesARB driDispatchRemapTable[DeleteQueriesARB_remap_index]
-#define _gloffset_EndQueryARB driDispatchRemapTable[EndQueryARB_remap_index]
-#define _gloffset_GenQueriesARB driDispatchRemapTable[GenQueriesARB_remap_index]
-#define _gloffset_GetQueryObjectivARB driDispatchRemapTable[GetQueryObjectivARB_remap_index]
-#define _gloffset_GetQueryObjectuivARB driDispatchRemapTable[GetQueryObjectuivARB_remap_index]
-#define _gloffset_GetQueryivARB driDispatchRemapTable[GetQueryivARB_remap_index]
-#define _gloffset_IsQueryARB driDispatchRemapTable[IsQueryARB_remap_index]
-#define _gloffset_AttachObjectARB driDispatchRemapTable[AttachObjectARB_remap_index]
-#define _gloffset_CompileShaderARB driDispatchRemapTable[CompileShaderARB_remap_index]
-#define _gloffset_CreateProgramObjectARB driDispatchRemapTable[CreateProgramObjectARB_remap_index]
-#define _gloffset_CreateShaderObjectARB driDispatchRemapTable[CreateShaderObjectARB_remap_index]
-#define _gloffset_DeleteObjectARB driDispatchRemapTable[DeleteObjectARB_remap_index]
-#define _gloffset_DetachObjectARB driDispatchRemapTable[DetachObjectARB_remap_index]
-#define _gloffset_GetActiveUniformARB driDispatchRemapTable[GetActiveUniformARB_remap_index]
-#define _gloffset_GetAttachedObjectsARB driDispatchRemapTable[GetAttachedObjectsARB_remap_index]
-#define _gloffset_GetHandleARB driDispatchRemapTable[GetHandleARB_remap_index]
-#define _gloffset_GetInfoLogARB driDispatchRemapTable[GetInfoLogARB_remap_index]
-#define _gloffset_GetObjectParameterfvARB driDispatchRemapTable[GetObjectParameterfvARB_remap_index]
-#define _gloffset_GetObjectParameterivARB driDispatchRemapTable[GetObjectParameterivARB_remap_index]
-#define _gloffset_GetShaderSourceARB driDispatchRemapTable[GetShaderSourceARB_remap_index]
-#define _gloffset_GetUniformLocationARB driDispatchRemapTable[GetUniformLocationARB_remap_index]
-#define _gloffset_GetUniformfvARB driDispatchRemapTable[GetUniformfvARB_remap_index]
-#define _gloffset_GetUniformivARB driDispatchRemapTable[GetUniformivARB_remap_index]
-#define _gloffset_LinkProgramARB driDispatchRemapTable[LinkProgramARB_remap_index]
-#define _gloffset_ShaderSourceARB driDispatchRemapTable[ShaderSourceARB_remap_index]
-#define _gloffset_Uniform1fARB driDispatchRemapTable[Uniform1fARB_remap_index]
-#define _gloffset_Uniform1fvARB driDispatchRemapTable[Uniform1fvARB_remap_index]
-#define _gloffset_Uniform1iARB driDispatchRemapTable[Uniform1iARB_remap_index]
-#define _gloffset_Uniform1ivARB driDispatchRemapTable[Uniform1ivARB_remap_index]
-#define _gloffset_Uniform2fARB driDispatchRemapTable[Uniform2fARB_remap_index]
-#define _gloffset_Uniform2fvARB driDispatchRemapTable[Uniform2fvARB_remap_index]
-#define _gloffset_Uniform2iARB driDispatchRemapTable[Uniform2iARB_remap_index]
-#define _gloffset_Uniform2ivARB driDispatchRemapTable[Uniform2ivARB_remap_index]
-#define _gloffset_Uniform3fARB driDispatchRemapTable[Uniform3fARB_remap_index]
-#define _gloffset_Uniform3fvARB driDispatchRemapTable[Uniform3fvARB_remap_index]
-#define _gloffset_Uniform3iARB driDispatchRemapTable[Uniform3iARB_remap_index]
-#define _gloffset_Uniform3ivARB driDispatchRemapTable[Uniform3ivARB_remap_index]
-#define _gloffset_Uniform4fARB driDispatchRemapTable[Uniform4fARB_remap_index]
-#define _gloffset_Uniform4fvARB driDispatchRemapTable[Uniform4fvARB_remap_index]
-#define _gloffset_Uniform4iARB driDispatchRemapTable[Uniform4iARB_remap_index]
-#define _gloffset_Uniform4ivARB driDispatchRemapTable[Uniform4ivARB_remap_index]
-#define _gloffset_UniformMatrix2fvARB driDispatchRemapTable[UniformMatrix2fvARB_remap_index]
-#define _gloffset_UniformMatrix3fvARB driDispatchRemapTable[UniformMatrix3fvARB_remap_index]
-#define _gloffset_UniformMatrix4fvARB driDispatchRemapTable[UniformMatrix4fvARB_remap_index]
-#define _gloffset_UseProgramObjectARB driDispatchRemapTable[UseProgramObjectARB_remap_index]
-#define _gloffset_ValidateProgramARB driDispatchRemapTable[ValidateProgramARB_remap_index]
-#define _gloffset_BindAttribLocationARB driDispatchRemapTable[BindAttribLocationARB_remap_index]
-#define _gloffset_GetActiveAttribARB driDispatchRemapTable[GetActiveAttribARB_remap_index]
-#define _gloffset_GetAttribLocationARB driDispatchRemapTable[GetAttribLocationARB_remap_index]
-#define _gloffset_DrawBuffersARB driDispatchRemapTable[DrawBuffersARB_remap_index]
-#define _gloffset_RenderbufferStorageMultisample driDispatchRemapTable[RenderbufferStorageMultisample_remap_index]
-#define _gloffset_FlushMappedBufferRange driDispatchRemapTable[FlushMappedBufferRange_remap_index]
-#define _gloffset_MapBufferRange driDispatchRemapTable[MapBufferRange_remap_index]
-#define _gloffset_BindVertexArray driDispatchRemapTable[BindVertexArray_remap_index]
-#define _gloffset_GenVertexArrays driDispatchRemapTable[GenVertexArrays_remap_index]
-#define _gloffset_CopyBufferSubData driDispatchRemapTable[CopyBufferSubData_remap_index]
-#define _gloffset_ClientWaitSync driDispatchRemapTable[ClientWaitSync_remap_index]
-#define _gloffset_DeleteSync driDispatchRemapTable[DeleteSync_remap_index]
-#define _gloffset_FenceSync driDispatchRemapTable[FenceSync_remap_index]
-#define _gloffset_GetInteger64v driDispatchRemapTable[GetInteger64v_remap_index]
-#define _gloffset_GetSynciv driDispatchRemapTable[GetSynciv_remap_index]
-#define _gloffset_IsSync driDispatchRemapTable[IsSync_remap_index]
-#define _gloffset_WaitSync driDispatchRemapTable[WaitSync_remap_index]
-#define _gloffset_DrawElementsBaseVertex driDispatchRemapTable[DrawElementsBaseVertex_remap_index]
-#define _gloffset_DrawRangeElementsBaseVertex driDispatchRemapTable[DrawRangeElementsBaseVertex_remap_index]
-#define _gloffset_MultiDrawElementsBaseVertex driDispatchRemapTable[MultiDrawElementsBaseVertex_remap_index]
-#define _gloffset_PolygonOffsetEXT driDispatchRemapTable[PolygonOffsetEXT_remap_index]
-#define _gloffset_GetPixelTexGenParameterfvSGIS driDispatchRemapTable[GetPixelTexGenParameterfvSGIS_remap_index]
-#define _gloffset_GetPixelTexGenParameterivSGIS driDispatchRemapTable[GetPixelTexGenParameterivSGIS_remap_index]
-#define _gloffset_PixelTexGenParameterfSGIS driDispatchRemapTable[PixelTexGenParameterfSGIS_remap_index]
-#define _gloffset_PixelTexGenParameterfvSGIS driDispatchRemapTable[PixelTexGenParameterfvSGIS_remap_index]
-#define _gloffset_PixelTexGenParameteriSGIS driDispatchRemapTable[PixelTexGenParameteriSGIS_remap_index]
-#define _gloffset_PixelTexGenParameterivSGIS driDispatchRemapTable[PixelTexGenParameterivSGIS_remap_index]
-#define _gloffset_SampleMaskSGIS driDispatchRemapTable[SampleMaskSGIS_remap_index]
-#define _gloffset_SamplePatternSGIS driDispatchRemapTable[SamplePatternSGIS_remap_index]
-#define _gloffset_ColorPointerEXT driDispatchRemapTable[ColorPointerEXT_remap_index]
-#define _gloffset_EdgeFlagPointerEXT driDispatchRemapTable[EdgeFlagPointerEXT_remap_index]
-#define _gloffset_IndexPointerEXT driDispatchRemapTable[IndexPointerEXT_remap_index]
-#define _gloffset_NormalPointerEXT driDispatchRemapTable[NormalPointerEXT_remap_index]
-#define _gloffset_TexCoordPointerEXT driDispatchRemapTable[TexCoordPointerEXT_remap_index]
-#define _gloffset_VertexPointerEXT driDispatchRemapTable[VertexPointerEXT_remap_index]
-#define _gloffset_PointParameterfEXT driDispatchRemapTable[PointParameterfEXT_remap_index]
-#define _gloffset_PointParameterfvEXT driDispatchRemapTable[PointParameterfvEXT_remap_index]
-#define _gloffset_LockArraysEXT driDispatchRemapTable[LockArraysEXT_remap_index]
-#define _gloffset_UnlockArraysEXT driDispatchRemapTable[UnlockArraysEXT_remap_index]
-#define _gloffset_CullParameterdvEXT driDispatchRemapTable[CullParameterdvEXT_remap_index]
-#define _gloffset_CullParameterfvEXT driDispatchRemapTable[CullParameterfvEXT_remap_index]
-#define _gloffset_SecondaryColor3bEXT driDispatchRemapTable[SecondaryColor3bEXT_remap_index]
-#define _gloffset_SecondaryColor3bvEXT driDispatchRemapTable[SecondaryColor3bvEXT_remap_index]
-#define _gloffset_SecondaryColor3dEXT driDispatchRemapTable[SecondaryColor3dEXT_remap_index]
-#define _gloffset_SecondaryColor3dvEXT driDispatchRemapTable[SecondaryColor3dvEXT_remap_index]
-#define _gloffset_SecondaryColor3fEXT driDispatchRemapTable[SecondaryColor3fEXT_remap_index]
-#define _gloffset_SecondaryColor3fvEXT driDispatchRemapTable[SecondaryColor3fvEXT_remap_index]
-#define _gloffset_SecondaryColor3iEXT driDispatchRemapTable[SecondaryColor3iEXT_remap_index]
-#define _gloffset_SecondaryColor3ivEXT driDispatchRemapTable[SecondaryColor3ivEXT_remap_index]
-#define _gloffset_SecondaryColor3sEXT driDispatchRemapTable[SecondaryColor3sEXT_remap_index]
-#define _gloffset_SecondaryColor3svEXT driDispatchRemapTable[SecondaryColor3svEXT_remap_index]
-#define _gloffset_SecondaryColor3ubEXT driDispatchRemapTable[SecondaryColor3ubEXT_remap_index]
-#define _gloffset_SecondaryColor3ubvEXT driDispatchRemapTable[SecondaryColor3ubvEXT_remap_index]
-#define _gloffset_SecondaryColor3uiEXT driDispatchRemapTable[SecondaryColor3uiEXT_remap_index]
-#define _gloffset_SecondaryColor3uivEXT driDispatchRemapTable[SecondaryColor3uivEXT_remap_index]
-#define _gloffset_SecondaryColor3usEXT driDispatchRemapTable[SecondaryColor3usEXT_remap_index]
-#define _gloffset_SecondaryColor3usvEXT driDispatchRemapTable[SecondaryColor3usvEXT_remap_index]
-#define _gloffset_SecondaryColorPointerEXT driDispatchRemapTable[SecondaryColorPointerEXT_remap_index]
-#define _gloffset_MultiDrawArraysEXT driDispatchRemapTable[MultiDrawArraysEXT_remap_index]
-#define _gloffset_MultiDrawElementsEXT driDispatchRemapTable[MultiDrawElementsEXT_remap_index]
-#define _gloffset_FogCoordPointerEXT driDispatchRemapTable[FogCoordPointerEXT_remap_index]
-#define _gloffset_FogCoorddEXT driDispatchRemapTable[FogCoorddEXT_remap_index]
-#define _gloffset_FogCoorddvEXT driDispatchRemapTable[FogCoorddvEXT_remap_index]
-#define _gloffset_FogCoordfEXT driDispatchRemapTable[FogCoordfEXT_remap_index]
-#define _gloffset_FogCoordfvEXT driDispatchRemapTable[FogCoordfvEXT_remap_index]
-#define _gloffset_PixelTexGenSGIX driDispatchRemapTable[PixelTexGenSGIX_remap_index]
-#define _gloffset_BlendFuncSeparateEXT driDispatchRemapTable[BlendFuncSeparateEXT_remap_index]
-#define _gloffset_FlushVertexArrayRangeNV driDispatchRemapTable[FlushVertexArrayRangeNV_remap_index]
-#define _gloffset_VertexArrayRangeNV driDispatchRemapTable[VertexArrayRangeNV_remap_index]
-#define _gloffset_CombinerInputNV driDispatchRemapTable[CombinerInputNV_remap_index]
-#define _gloffset_CombinerOutputNV driDispatchRemapTable[CombinerOutputNV_remap_index]
-#define _gloffset_CombinerParameterfNV driDispatchRemapTable[CombinerParameterfNV_remap_index]
-#define _gloffset_CombinerParameterfvNV driDispatchRemapTable[CombinerParameterfvNV_remap_index]
-#define _gloffset_CombinerParameteriNV driDispatchRemapTable[CombinerParameteriNV_remap_index]
-#define _gloffset_CombinerParameterivNV driDispatchRemapTable[CombinerParameterivNV_remap_index]
-#define _gloffset_FinalCombinerInputNV driDispatchRemapTable[FinalCombinerInputNV_remap_index]
-#define _gloffset_GetCombinerInputParameterfvNV driDispatchRemapTable[GetCombinerInputParameterfvNV_remap_index]
-#define _gloffset_GetCombinerInputParameterivNV driDispatchRemapTable[GetCombinerInputParameterivNV_remap_index]
-#define _gloffset_GetCombinerOutputParameterfvNV driDispatchRemapTable[GetCombinerOutputParameterfvNV_remap_index]
-#define _gloffset_GetCombinerOutputParameterivNV driDispatchRemapTable[GetCombinerOutputParameterivNV_remap_index]
-#define _gloffset_GetFinalCombinerInputParameterfvNV driDispatchRemapTable[GetFinalCombinerInputParameterfvNV_remap_index]
-#define _gloffset_GetFinalCombinerInputParameterivNV driDispatchRemapTable[GetFinalCombinerInputParameterivNV_remap_index]
-#define _gloffset_ResizeBuffersMESA driDispatchRemapTable[ResizeBuffersMESA_remap_index]
-#define _gloffset_WindowPos2dMESA driDispatchRemapTable[WindowPos2dMESA_remap_index]
-#define _gloffset_WindowPos2dvMESA driDispatchRemapTable[WindowPos2dvMESA_remap_index]
-#define _gloffset_WindowPos2fMESA driDispatchRemapTable[WindowPos2fMESA_remap_index]
-#define _gloffset_WindowPos2fvMESA driDispatchRemapTable[WindowPos2fvMESA_remap_index]
-#define _gloffset_WindowPos2iMESA driDispatchRemapTable[WindowPos2iMESA_remap_index]
-#define _gloffset_WindowPos2ivMESA driDispatchRemapTable[WindowPos2ivMESA_remap_index]
-#define _gloffset_WindowPos2sMESA driDispatchRemapTable[WindowPos2sMESA_remap_index]
-#define _gloffset_WindowPos2svMESA driDispatchRemapTable[WindowPos2svMESA_remap_index]
-#define _gloffset_WindowPos3dMESA driDispatchRemapTable[WindowPos3dMESA_remap_index]
-#define _gloffset_WindowPos3dvMESA driDispatchRemapTable[WindowPos3dvMESA_remap_index]
-#define _gloffset_WindowPos3fMESA driDispatchRemapTable[WindowPos3fMESA_remap_index]
-#define _gloffset_WindowPos3fvMESA driDispatchRemapTable[WindowPos3fvMESA_remap_index]
-#define _gloffset_WindowPos3iMESA driDispatchRemapTable[WindowPos3iMESA_remap_index]
-#define _gloffset_WindowPos3ivMESA driDispatchRemapTable[WindowPos3ivMESA_remap_index]
-#define _gloffset_WindowPos3sMESA driDispatchRemapTable[WindowPos3sMESA_remap_index]
-#define _gloffset_WindowPos3svMESA driDispatchRemapTable[WindowPos3svMESA_remap_index]
-#define _gloffset_WindowPos4dMESA driDispatchRemapTable[WindowPos4dMESA_remap_index]
-#define _gloffset_WindowPos4dvMESA driDispatchRemapTable[WindowPos4dvMESA_remap_index]
-#define _gloffset_WindowPos4fMESA driDispatchRemapTable[WindowPos4fMESA_remap_index]
-#define _gloffset_WindowPos4fvMESA driDispatchRemapTable[WindowPos4fvMESA_remap_index]
-#define _gloffset_WindowPos4iMESA driDispatchRemapTable[WindowPos4iMESA_remap_index]
-#define _gloffset_WindowPos4ivMESA driDispatchRemapTable[WindowPos4ivMESA_remap_index]
-#define _gloffset_WindowPos4sMESA driDispatchRemapTable[WindowPos4sMESA_remap_index]
-#define _gloffset_WindowPos4svMESA driDispatchRemapTable[WindowPos4svMESA_remap_index]
-#define _gloffset_MultiModeDrawArraysIBM driDispatchRemapTable[MultiModeDrawArraysIBM_remap_index]
-#define _gloffset_MultiModeDrawElementsIBM driDispatchRemapTable[MultiModeDrawElementsIBM_remap_index]
-#define _gloffset_DeleteFencesNV driDispatchRemapTable[DeleteFencesNV_remap_index]
-#define _gloffset_FinishFenceNV driDispatchRemapTable[FinishFenceNV_remap_index]
-#define _gloffset_GenFencesNV driDispatchRemapTable[GenFencesNV_remap_index]
-#define _gloffset_GetFenceivNV driDispatchRemapTable[GetFenceivNV_remap_index]
-#define _gloffset_IsFenceNV driDispatchRemapTable[IsFenceNV_remap_index]
-#define _gloffset_SetFenceNV driDispatchRemapTable[SetFenceNV_remap_index]
-#define _gloffset_TestFenceNV driDispatchRemapTable[TestFenceNV_remap_index]
-#define _gloffset_AreProgramsResidentNV driDispatchRemapTable[AreProgramsResidentNV_remap_index]
-#define _gloffset_BindProgramNV driDispatchRemapTable[BindProgramNV_remap_index]
-#define _gloffset_DeleteProgramsNV driDispatchRemapTable[DeleteProgramsNV_remap_index]
-#define _gloffset_ExecuteProgramNV driDispatchRemapTable[ExecuteProgramNV_remap_index]
-#define _gloffset_GenProgramsNV driDispatchRemapTable[GenProgramsNV_remap_index]
-#define _gloffset_GetProgramParameterdvNV driDispatchRemapTable[GetProgramParameterdvNV_remap_index]
-#define _gloffset_GetProgramParameterfvNV driDispatchRemapTable[GetProgramParameterfvNV_remap_index]
-#define _gloffset_GetProgramStringNV driDispatchRemapTable[GetProgramStringNV_remap_index]
-#define _gloffset_GetProgramivNV driDispatchRemapTable[GetProgramivNV_remap_index]
-#define _gloffset_GetTrackMatrixivNV driDispatchRemapTable[GetTrackMatrixivNV_remap_index]
-#define _gloffset_GetVertexAttribPointervNV driDispatchRemapTable[GetVertexAttribPointervNV_remap_index]
-#define _gloffset_GetVertexAttribdvNV driDispatchRemapTable[GetVertexAttribdvNV_remap_index]
-#define _gloffset_GetVertexAttribfvNV driDispatchRemapTable[GetVertexAttribfvNV_remap_index]
-#define _gloffset_GetVertexAttribivNV driDispatchRemapTable[GetVertexAttribivNV_remap_index]
-#define _gloffset_IsProgramNV driDispatchRemapTable[IsProgramNV_remap_index]
-#define _gloffset_LoadProgramNV driDispatchRemapTable[LoadProgramNV_remap_index]
-#define _gloffset_ProgramParameters4dvNV driDispatchRemapTable[ProgramParameters4dvNV_remap_index]
-#define _gloffset_ProgramParameters4fvNV driDispatchRemapTable[ProgramParameters4fvNV_remap_index]
-#define _gloffset_RequestResidentProgramsNV driDispatchRemapTable[RequestResidentProgramsNV_remap_index]
-#define _gloffset_TrackMatrixNV driDispatchRemapTable[TrackMatrixNV_remap_index]
-#define _gloffset_VertexAttrib1dNV driDispatchRemapTable[VertexAttrib1dNV_remap_index]
-#define _gloffset_VertexAttrib1dvNV driDispatchRemapTable[VertexAttrib1dvNV_remap_index]
-#define _gloffset_VertexAttrib1fNV driDispatchRemapTable[VertexAttrib1fNV_remap_index]
-#define _gloffset_VertexAttrib1fvNV driDispatchRemapTable[VertexAttrib1fvNV_remap_index]
-#define _gloffset_VertexAttrib1sNV driDispatchRemapTable[VertexAttrib1sNV_remap_index]
-#define _gloffset_VertexAttrib1svNV driDispatchRemapTable[VertexAttrib1svNV_remap_index]
-#define _gloffset_VertexAttrib2dNV driDispatchRemapTable[VertexAttrib2dNV_remap_index]
-#define _gloffset_VertexAttrib2dvNV driDispatchRemapTable[VertexAttrib2dvNV_remap_index]
-#define _gloffset_VertexAttrib2fNV driDispatchRemapTable[VertexAttrib2fNV_remap_index]
-#define _gloffset_VertexAttrib2fvNV driDispatchRemapTable[VertexAttrib2fvNV_remap_index]
-#define _gloffset_VertexAttrib2sNV driDispatchRemapTable[VertexAttrib2sNV_remap_index]
-#define _gloffset_VertexAttrib2svNV driDispatchRemapTable[VertexAttrib2svNV_remap_index]
-#define _gloffset_VertexAttrib3dNV driDispatchRemapTable[VertexAttrib3dNV_remap_index]
-#define _gloffset_VertexAttrib3dvNV driDispatchRemapTable[VertexAttrib3dvNV_remap_index]
-#define _gloffset_VertexAttrib3fNV driDispatchRemapTable[VertexAttrib3fNV_remap_index]
-#define _gloffset_VertexAttrib3fvNV driDispatchRemapTable[VertexAttrib3fvNV_remap_index]
-#define _gloffset_VertexAttrib3sNV driDispatchRemapTable[VertexAttrib3sNV_remap_index]
-#define _gloffset_VertexAttrib3svNV driDispatchRemapTable[VertexAttrib3svNV_remap_index]
-#define _gloffset_VertexAttrib4dNV driDispatchRemapTable[VertexAttrib4dNV_remap_index]
-#define _gloffset_VertexAttrib4dvNV driDispatchRemapTable[VertexAttrib4dvNV_remap_index]
-#define _gloffset_VertexAttrib4fNV driDispatchRemapTable[VertexAttrib4fNV_remap_index]
-#define _gloffset_VertexAttrib4fvNV driDispatchRemapTable[VertexAttrib4fvNV_remap_index]
-#define _gloffset_VertexAttrib4sNV driDispatchRemapTable[VertexAttrib4sNV_remap_index]
-#define _gloffset_VertexAttrib4svNV driDispatchRemapTable[VertexAttrib4svNV_remap_index]
-#define _gloffset_VertexAttrib4ubNV driDispatchRemapTable[VertexAttrib4ubNV_remap_index]
-#define _gloffset_VertexAttrib4ubvNV driDispatchRemapTable[VertexAttrib4ubvNV_remap_index]
-#define _gloffset_VertexAttribPointerNV driDispatchRemapTable[VertexAttribPointerNV_remap_index]
-#define _gloffset_VertexAttribs1dvNV driDispatchRemapTable[VertexAttribs1dvNV_remap_index]
-#define _gloffset_VertexAttribs1fvNV driDispatchRemapTable[VertexAttribs1fvNV_remap_index]
-#define _gloffset_VertexAttribs1svNV driDispatchRemapTable[VertexAttribs1svNV_remap_index]
-#define _gloffset_VertexAttribs2dvNV driDispatchRemapTable[VertexAttribs2dvNV_remap_index]
-#define _gloffset_VertexAttribs2fvNV driDispatchRemapTable[VertexAttribs2fvNV_remap_index]
-#define _gloffset_VertexAttribs2svNV driDispatchRemapTable[VertexAttribs2svNV_remap_index]
-#define _gloffset_VertexAttribs3dvNV driDispatchRemapTable[VertexAttribs3dvNV_remap_index]
-#define _gloffset_VertexAttribs3fvNV driDispatchRemapTable[VertexAttribs3fvNV_remap_index]
-#define _gloffset_VertexAttribs3svNV driDispatchRemapTable[VertexAttribs3svNV_remap_index]
-#define _gloffset_VertexAttribs4dvNV driDispatchRemapTable[VertexAttribs4dvNV_remap_index]
-#define _gloffset_VertexAttribs4fvNV driDispatchRemapTable[VertexAttribs4fvNV_remap_index]
-#define _gloffset_VertexAttribs4svNV driDispatchRemapTable[VertexAttribs4svNV_remap_index]
-#define _gloffset_VertexAttribs4ubvNV driDispatchRemapTable[VertexAttribs4ubvNV_remap_index]
-#define _gloffset_GetTexBumpParameterfvATI driDispatchRemapTable[GetTexBumpParameterfvATI_remap_index]
-#define _gloffset_GetTexBumpParameterivATI driDispatchRemapTable[GetTexBumpParameterivATI_remap_index]
-#define _gloffset_TexBumpParameterfvATI driDispatchRemapTable[TexBumpParameterfvATI_remap_index]
-#define _gloffset_TexBumpParameterivATI driDispatchRemapTable[TexBumpParameterivATI_remap_index]
-#define _gloffset_AlphaFragmentOp1ATI driDispatchRemapTable[AlphaFragmentOp1ATI_remap_index]
-#define _gloffset_AlphaFragmentOp2ATI driDispatchRemapTable[AlphaFragmentOp2ATI_remap_index]
-#define _gloffset_AlphaFragmentOp3ATI driDispatchRemapTable[AlphaFragmentOp3ATI_remap_index]
-#define _gloffset_BeginFragmentShaderATI driDispatchRemapTable[BeginFragmentShaderATI_remap_index]
-#define _gloffset_BindFragmentShaderATI driDispatchRemapTable[BindFragmentShaderATI_remap_index]
-#define _gloffset_ColorFragmentOp1ATI driDispatchRemapTable[ColorFragmentOp1ATI_remap_index]
-#define _gloffset_ColorFragmentOp2ATI driDispatchRemapTable[ColorFragmentOp2ATI_remap_index]
-#define _gloffset_ColorFragmentOp3ATI driDispatchRemapTable[ColorFragmentOp3ATI_remap_index]
-#define _gloffset_DeleteFragmentShaderATI driDispatchRemapTable[DeleteFragmentShaderATI_remap_index]
-#define _gloffset_EndFragmentShaderATI driDispatchRemapTable[EndFragmentShaderATI_remap_index]
-#define _gloffset_GenFragmentShadersATI driDispatchRemapTable[GenFragmentShadersATI_remap_index]
-#define _gloffset_PassTexCoordATI driDispatchRemapTable[PassTexCoordATI_remap_index]
-#define _gloffset_SampleMapATI driDispatchRemapTable[SampleMapATI_remap_index]
-#define _gloffset_SetFragmentShaderConstantATI driDispatchRemapTable[SetFragmentShaderConstantATI_remap_index]
-#define _gloffset_PointParameteriNV driDispatchRemapTable[PointParameteriNV_remap_index]
-#define _gloffset_PointParameterivNV driDispatchRemapTable[PointParameterivNV_remap_index]
-#define _gloffset_ActiveStencilFaceEXT driDispatchRemapTable[ActiveStencilFaceEXT_remap_index]
-#define _gloffset_BindVertexArrayAPPLE driDispatchRemapTable[BindVertexArrayAPPLE_remap_index]
-#define _gloffset_DeleteVertexArraysAPPLE driDispatchRemapTable[DeleteVertexArraysAPPLE_remap_index]
-#define _gloffset_GenVertexArraysAPPLE driDispatchRemapTable[GenVertexArraysAPPLE_remap_index]
-#define _gloffset_IsVertexArrayAPPLE driDispatchRemapTable[IsVertexArrayAPPLE_remap_index]
-#define _gloffset_GetProgramNamedParameterdvNV driDispatchRemapTable[GetProgramNamedParameterdvNV_remap_index]
-#define _gloffset_GetProgramNamedParameterfvNV driDispatchRemapTable[GetProgramNamedParameterfvNV_remap_index]
-#define _gloffset_ProgramNamedParameter4dNV driDispatchRemapTable[ProgramNamedParameter4dNV_remap_index]
-#define _gloffset_ProgramNamedParameter4dvNV driDispatchRemapTable[ProgramNamedParameter4dvNV_remap_index]
-#define _gloffset_ProgramNamedParameter4fNV driDispatchRemapTable[ProgramNamedParameter4fNV_remap_index]
-#define _gloffset_ProgramNamedParameter4fvNV driDispatchRemapTable[ProgramNamedParameter4fvNV_remap_index]
-#define _gloffset_DepthBoundsEXT driDispatchRemapTable[DepthBoundsEXT_remap_index]
-#define _gloffset_BlendEquationSeparateEXT driDispatchRemapTable[BlendEquationSeparateEXT_remap_index]
-#define _gloffset_BindFramebufferEXT driDispatchRemapTable[BindFramebufferEXT_remap_index]
-#define _gloffset_BindRenderbufferEXT driDispatchRemapTable[BindRenderbufferEXT_remap_index]
-#define _gloffset_CheckFramebufferStatusEXT driDispatchRemapTable[CheckFramebufferStatusEXT_remap_index]
-#define _gloffset_DeleteFramebuffersEXT driDispatchRemapTable[DeleteFramebuffersEXT_remap_index]
-#define _gloffset_DeleteRenderbuffersEXT driDispatchRemapTable[DeleteRenderbuffersEXT_remap_index]
-#define _gloffset_FramebufferRenderbufferEXT driDispatchRemapTable[FramebufferRenderbufferEXT_remap_index]
-#define _gloffset_FramebufferTexture1DEXT driDispatchRemapTable[FramebufferTexture1DEXT_remap_index]
-#define _gloffset_FramebufferTexture2DEXT driDispatchRemapTable[FramebufferTexture2DEXT_remap_index]
-#define _gloffset_FramebufferTexture3DEXT driDispatchRemapTable[FramebufferTexture3DEXT_remap_index]
-#define _gloffset_GenFramebuffersEXT driDispatchRemapTable[GenFramebuffersEXT_remap_index]
-#define _gloffset_GenRenderbuffersEXT driDispatchRemapTable[GenRenderbuffersEXT_remap_index]
-#define _gloffset_GenerateMipmapEXT driDispatchRemapTable[GenerateMipmapEXT_remap_index]
-#define _gloffset_GetFramebufferAttachmentParameterivEXT driDispatchRemapTable[GetFramebufferAttachmentParameterivEXT_remap_index]
-#define _gloffset_GetRenderbufferParameterivEXT driDispatchRemapTable[GetRenderbufferParameterivEXT_remap_index]
-#define _gloffset_IsFramebufferEXT driDispatchRemapTable[IsFramebufferEXT_remap_index]
-#define _gloffset_IsRenderbufferEXT driDispatchRemapTable[IsRenderbufferEXT_remap_index]
-#define _gloffset_RenderbufferStorageEXT driDispatchRemapTable[RenderbufferStorageEXT_remap_index]
-#define _gloffset_BlitFramebufferEXT driDispatchRemapTable[BlitFramebufferEXT_remap_index]
-#define _gloffset_BufferParameteriAPPLE driDispatchRemapTable[BufferParameteriAPPLE_remap_index]
-#define _gloffset_FlushMappedBufferRangeAPPLE driDispatchRemapTable[FlushMappedBufferRangeAPPLE_remap_index]
-#define _gloffset_FramebufferTextureLayerEXT driDispatchRemapTable[FramebufferTextureLayerEXT_remap_index]
-#define _gloffset_ColorMaskIndexedEXT driDispatchRemapTable[ColorMaskIndexedEXT_remap_index]
-#define _gloffset_DisableIndexedEXT driDispatchRemapTable[DisableIndexedEXT_remap_index]
-#define _gloffset_EnableIndexedEXT driDispatchRemapTable[EnableIndexedEXT_remap_index]
-#define _gloffset_GetBooleanIndexedvEXT driDispatchRemapTable[GetBooleanIndexedvEXT_remap_index]
-#define _gloffset_GetIntegerIndexedvEXT driDispatchRemapTable[GetIntegerIndexedvEXT_remap_index]
-#define _gloffset_IsEnabledIndexedEXT driDispatchRemapTable[IsEnabledIndexedEXT_remap_index]
-#define _gloffset_BeginConditionalRenderNV driDispatchRemapTable[BeginConditionalRenderNV_remap_index]
-#define _gloffset_EndConditionalRenderNV driDispatchRemapTable[EndConditionalRenderNV_remap_index]
-#define _gloffset_BeginTransformFeedbackEXT driDispatchRemapTable[BeginTransformFeedbackEXT_remap_index]
-#define _gloffset_BindBufferBaseEXT driDispatchRemapTable[BindBufferBaseEXT_remap_index]
-#define _gloffset_BindBufferOffsetEXT driDispatchRemapTable[BindBufferOffsetEXT_remap_index]
-#define _gloffset_BindBufferRangeEXT driDispatchRemapTable[BindBufferRangeEXT_remap_index]
-#define _gloffset_EndTransformFeedbackEXT driDispatchRemapTable[EndTransformFeedbackEXT_remap_index]
-#define _gloffset_GetTransformFeedbackVaryingEXT driDispatchRemapTable[GetTransformFeedbackVaryingEXT_remap_index]
-#define _gloffset_TransformFeedbackVaryingsEXT driDispatchRemapTable[TransformFeedbackVaryingsEXT_remap_index]
-#define _gloffset_ProvokingVertexEXT driDispatchRemapTable[ProvokingVertexEXT_remap_index]
-#define _gloffset_GetTexParameterPointervAPPLE driDispatchRemapTable[GetTexParameterPointervAPPLE_remap_index]
-#define _gloffset_TextureRangeAPPLE driDispatchRemapTable[TextureRangeAPPLE_remap_index]
-#define _gloffset_GetObjectParameterivAPPLE driDispatchRemapTable[GetObjectParameterivAPPLE_remap_index]
-#define _gloffset_ObjectPurgeableAPPLE driDispatchRemapTable[ObjectPurgeableAPPLE_remap_index]
-#define _gloffset_ObjectUnpurgeableAPPLE driDispatchRemapTable[ObjectUnpurgeableAPPLE_remap_index]
-#define _gloffset_StencilFuncSeparateATI driDispatchRemapTable[StencilFuncSeparateATI_remap_index]
-#define _gloffset_ProgramEnvParameters4fvEXT driDispatchRemapTable[ProgramEnvParameters4fvEXT_remap_index]
-#define _gloffset_ProgramLocalParameters4fvEXT driDispatchRemapTable[ProgramLocalParameters4fvEXT_remap_index]
-#define _gloffset_GetQueryObjecti64vEXT driDispatchRemapTable[GetQueryObjecti64vEXT_remap_index]
-#define _gloffset_GetQueryObjectui64vEXT driDispatchRemapTable[GetQueryObjectui64vEXT_remap_index]
-#define _gloffset_EGLImageTargetRenderbufferStorageOES driDispatchRemapTable[EGLImageTargetRenderbufferStorageOES_remap_index]
-#define _gloffset_EGLImageTargetTexture2DOES driDispatchRemapTable[EGLImageTargetTexture2DOES_remap_index]
-
-#endif /* !defined(_GLAPI_USE_REMAP_TABLE) */
-
-#endif /* !defined( _GLAPI_OFFSETS_H_ ) */
diff --git a/src/mesa/glapi/glapitable.h b/src/mesa/glapi/glapitable.h
deleted file mode 100644 (file)
index faf274f..0000000
+++ /dev/null
@@ -1,862 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_table.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
- * (C) Copyright IBM Corporation 2004
- * 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
- * BRIAN PAUL, 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.
- */
-
-#if !defined( _GLAPI_TABLE_H_ )
-#  define _GLAPI_TABLE_H_
-
-#ifndef GLAPIENTRYP
-# ifndef GLAPIENTRY
-#  define GLAPIENTRY
-# endif
-
-# define GLAPIENTRYP GLAPIENTRY *
-#endif
-
-
-struct _glapi_table
-{
-   void (GLAPIENTRYP NewList)(GLuint list, GLenum mode); /* 0 */
-   void (GLAPIENTRYP EndList)(void); /* 1 */
-   void (GLAPIENTRYP CallList)(GLuint list); /* 2 */
-   void (GLAPIENTRYP CallLists)(GLsizei n, GLenum type, const GLvoid * lists); /* 3 */
-   void (GLAPIENTRYP DeleteLists)(GLuint list, GLsizei range); /* 4 */
-   GLuint (GLAPIENTRYP GenLists)(GLsizei range); /* 5 */
-   void (GLAPIENTRYP ListBase)(GLuint base); /* 6 */
-   void (GLAPIENTRYP Begin)(GLenum mode); /* 7 */
-   void (GLAPIENTRYP Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap); /* 8 */
-   void (GLAPIENTRYP Color3b)(GLbyte red, GLbyte green, GLbyte blue); /* 9 */
-   void (GLAPIENTRYP Color3bv)(const GLbyte * v); /* 10 */
-   void (GLAPIENTRYP Color3d)(GLdouble red, GLdouble green, GLdouble blue); /* 11 */
-   void (GLAPIENTRYP Color3dv)(const GLdouble * v); /* 12 */
-   void (GLAPIENTRYP Color3f)(GLfloat red, GLfloat green, GLfloat blue); /* 13 */
-   void (GLAPIENTRYP Color3fv)(const GLfloat * v); /* 14 */
-   void (GLAPIENTRYP Color3i)(GLint red, GLint green, GLint blue); /* 15 */
-   void (GLAPIENTRYP Color3iv)(const GLint * v); /* 16 */
-   void (GLAPIENTRYP Color3s)(GLshort red, GLshort green, GLshort blue); /* 17 */
-   void (GLAPIENTRYP Color3sv)(const GLshort * v); /* 18 */
-   void (GLAPIENTRYP Color3ub)(GLubyte red, GLubyte green, GLubyte blue); /* 19 */
-   void (GLAPIENTRYP Color3ubv)(const GLubyte * v); /* 20 */
-   void (GLAPIENTRYP Color3ui)(GLuint red, GLuint green, GLuint blue); /* 21 */
-   void (GLAPIENTRYP Color3uiv)(const GLuint * v); /* 22 */
-   void (GLAPIENTRYP Color3us)(GLushort red, GLushort green, GLushort blue); /* 23 */
-   void (GLAPIENTRYP Color3usv)(const GLushort * v); /* 24 */
-   void (GLAPIENTRYP Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha); /* 25 */
-   void (GLAPIENTRYP Color4bv)(const GLbyte * v); /* 26 */
-   void (GLAPIENTRYP Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha); /* 27 */
-   void (GLAPIENTRYP Color4dv)(const GLdouble * v); /* 28 */
-   void (GLAPIENTRYP Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 29 */
-   void (GLAPIENTRYP Color4fv)(const GLfloat * v); /* 30 */
-   void (GLAPIENTRYP Color4i)(GLint red, GLint green, GLint blue, GLint alpha); /* 31 */
-   void (GLAPIENTRYP Color4iv)(const GLint * v); /* 32 */
-   void (GLAPIENTRYP Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha); /* 33 */
-   void (GLAPIENTRYP Color4sv)(const GLshort * v); /* 34 */
-   void (GLAPIENTRYP Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha); /* 35 */
-   void (GLAPIENTRYP Color4ubv)(const GLubyte * v); /* 36 */
-   void (GLAPIENTRYP Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha); /* 37 */
-   void (GLAPIENTRYP Color4uiv)(const GLuint * v); /* 38 */
-   void (GLAPIENTRYP Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha); /* 39 */
-   void (GLAPIENTRYP Color4usv)(const GLushort * v); /* 40 */
-   void (GLAPIENTRYP EdgeFlag)(GLboolean flag); /* 41 */
-   void (GLAPIENTRYP EdgeFlagv)(const GLboolean * flag); /* 42 */
-   void (GLAPIENTRYP End)(void); /* 43 */
-   void (GLAPIENTRYP Indexd)(GLdouble c); /* 44 */
-   void (GLAPIENTRYP Indexdv)(const GLdouble * c); /* 45 */
-   void (GLAPIENTRYP Indexf)(GLfloat c); /* 46 */
-   void (GLAPIENTRYP Indexfv)(const GLfloat * c); /* 47 */
-   void (GLAPIENTRYP Indexi)(GLint c); /* 48 */
-   void (GLAPIENTRYP Indexiv)(const GLint * c); /* 49 */
-   void (GLAPIENTRYP Indexs)(GLshort c); /* 50 */
-   void (GLAPIENTRYP Indexsv)(const GLshort * c); /* 51 */
-   void (GLAPIENTRYP Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz); /* 52 */
-   void (GLAPIENTRYP Normal3bv)(const GLbyte * v); /* 53 */
-   void (GLAPIENTRYP Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz); /* 54 */
-   void (GLAPIENTRYP Normal3dv)(const GLdouble * v); /* 55 */
-   void (GLAPIENTRYP Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz); /* 56 */
-   void (GLAPIENTRYP Normal3fv)(const GLfloat * v); /* 57 */
-   void (GLAPIENTRYP Normal3i)(GLint nx, GLint ny, GLint nz); /* 58 */
-   void (GLAPIENTRYP Normal3iv)(const GLint * v); /* 59 */
-   void (GLAPIENTRYP Normal3s)(GLshort nx, GLshort ny, GLshort nz); /* 60 */
-   void (GLAPIENTRYP Normal3sv)(const GLshort * v); /* 61 */
-   void (GLAPIENTRYP RasterPos2d)(GLdouble x, GLdouble y); /* 62 */
-   void (GLAPIENTRYP RasterPos2dv)(const GLdouble * v); /* 63 */
-   void (GLAPIENTRYP RasterPos2f)(GLfloat x, GLfloat y); /* 64 */
-   void (GLAPIENTRYP RasterPos2fv)(const GLfloat * v); /* 65 */
-   void (GLAPIENTRYP RasterPos2i)(GLint x, GLint y); /* 66 */
-   void (GLAPIENTRYP RasterPos2iv)(const GLint * v); /* 67 */
-   void (GLAPIENTRYP RasterPos2s)(GLshort x, GLshort y); /* 68 */
-   void (GLAPIENTRYP RasterPos2sv)(const GLshort * v); /* 69 */
-   void (GLAPIENTRYP RasterPos3d)(GLdouble x, GLdouble y, GLdouble z); /* 70 */
-   void (GLAPIENTRYP RasterPos3dv)(const GLdouble * v); /* 71 */
-   void (GLAPIENTRYP RasterPos3f)(GLfloat x, GLfloat y, GLfloat z); /* 72 */
-   void (GLAPIENTRYP RasterPos3fv)(const GLfloat * v); /* 73 */
-   void (GLAPIENTRYP RasterPos3i)(GLint x, GLint y, GLint z); /* 74 */
-   void (GLAPIENTRYP RasterPos3iv)(const GLint * v); /* 75 */
-   void (GLAPIENTRYP RasterPos3s)(GLshort x, GLshort y, GLshort z); /* 76 */
-   void (GLAPIENTRYP RasterPos3sv)(const GLshort * v); /* 77 */
-   void (GLAPIENTRYP RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 78 */
-   void (GLAPIENTRYP RasterPos4dv)(const GLdouble * v); /* 79 */
-   void (GLAPIENTRYP RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 80 */
-   void (GLAPIENTRYP RasterPos4fv)(const GLfloat * v); /* 81 */
-   void (GLAPIENTRYP RasterPos4i)(GLint x, GLint y, GLint z, GLint w); /* 82 */
-   void (GLAPIENTRYP RasterPos4iv)(const GLint * v); /* 83 */
-   void (GLAPIENTRYP RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w); /* 84 */
-   void (GLAPIENTRYP RasterPos4sv)(const GLshort * v); /* 85 */
-   void (GLAPIENTRYP Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2); /* 86 */
-   void (GLAPIENTRYP Rectdv)(const GLdouble * v1, const GLdouble * v2); /* 87 */
-   void (GLAPIENTRYP Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2); /* 88 */
-   void (GLAPIENTRYP Rectfv)(const GLfloat * v1, const GLfloat * v2); /* 89 */
-   void (GLAPIENTRYP Recti)(GLint x1, GLint y1, GLint x2, GLint y2); /* 90 */
-   void (GLAPIENTRYP Rectiv)(const GLint * v1, const GLint * v2); /* 91 */
-   void (GLAPIENTRYP Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2); /* 92 */
-   void (GLAPIENTRYP Rectsv)(const GLshort * v1, const GLshort * v2); /* 93 */
-   void (GLAPIENTRYP TexCoord1d)(GLdouble s); /* 94 */
-   void (GLAPIENTRYP TexCoord1dv)(const GLdouble * v); /* 95 */
-   void (GLAPIENTRYP TexCoord1f)(GLfloat s); /* 96 */
-   void (GLAPIENTRYP TexCoord1fv)(const GLfloat * v); /* 97 */
-   void (GLAPIENTRYP TexCoord1i)(GLint s); /* 98 */
-   void (GLAPIENTRYP TexCoord1iv)(const GLint * v); /* 99 */
-   void (GLAPIENTRYP TexCoord1s)(GLshort s); /* 100 */
-   void (GLAPIENTRYP TexCoord1sv)(const GLshort * v); /* 101 */
-   void (GLAPIENTRYP TexCoord2d)(GLdouble s, GLdouble t); /* 102 */
-   void (GLAPIENTRYP TexCoord2dv)(const GLdouble * v); /* 103 */
-   void (GLAPIENTRYP TexCoord2f)(GLfloat s, GLfloat t); /* 104 */
-   void (GLAPIENTRYP TexCoord2fv)(const GLfloat * v); /* 105 */
-   void (GLAPIENTRYP TexCoord2i)(GLint s, GLint t); /* 106 */
-   void (GLAPIENTRYP TexCoord2iv)(const GLint * v); /* 107 */
-   void (GLAPIENTRYP TexCoord2s)(GLshort s, GLshort t); /* 108 */
-   void (GLAPIENTRYP TexCoord2sv)(const GLshort * v); /* 109 */
-   void (GLAPIENTRYP TexCoord3d)(GLdouble s, GLdouble t, GLdouble r); /* 110 */
-   void (GLAPIENTRYP TexCoord3dv)(const GLdouble * v); /* 111 */
-   void (GLAPIENTRYP TexCoord3f)(GLfloat s, GLfloat t, GLfloat r); /* 112 */
-   void (GLAPIENTRYP TexCoord3fv)(const GLfloat * v); /* 113 */
-   void (GLAPIENTRYP TexCoord3i)(GLint s, GLint t, GLint r); /* 114 */
-   void (GLAPIENTRYP TexCoord3iv)(const GLint * v); /* 115 */
-   void (GLAPIENTRYP TexCoord3s)(GLshort s, GLshort t, GLshort r); /* 116 */
-   void (GLAPIENTRYP TexCoord3sv)(const GLshort * v); /* 117 */
-   void (GLAPIENTRYP TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 118 */
-   void (GLAPIENTRYP TexCoord4dv)(const GLdouble * v); /* 119 */
-   void (GLAPIENTRYP TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 120 */
-   void (GLAPIENTRYP TexCoord4fv)(const GLfloat * v); /* 121 */
-   void (GLAPIENTRYP TexCoord4i)(GLint s, GLint t, GLint r, GLint q); /* 122 */
-   void (GLAPIENTRYP TexCoord4iv)(const GLint * v); /* 123 */
-   void (GLAPIENTRYP TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q); /* 124 */
-   void (GLAPIENTRYP TexCoord4sv)(const GLshort * v); /* 125 */
-   void (GLAPIENTRYP Vertex2d)(GLdouble x, GLdouble y); /* 126 */
-   void (GLAPIENTRYP Vertex2dv)(const GLdouble * v); /* 127 */
-   void (GLAPIENTRYP Vertex2f)(GLfloat x, GLfloat y); /* 128 */
-   void (GLAPIENTRYP Vertex2fv)(const GLfloat * v); /* 129 */
-   void (GLAPIENTRYP Vertex2i)(GLint x, GLint y); /* 130 */
-   void (GLAPIENTRYP Vertex2iv)(const GLint * v); /* 131 */
-   void (GLAPIENTRYP Vertex2s)(GLshort x, GLshort y); /* 132 */
-   void (GLAPIENTRYP Vertex2sv)(const GLshort * v); /* 133 */
-   void (GLAPIENTRYP Vertex3d)(GLdouble x, GLdouble y, GLdouble z); /* 134 */
-   void (GLAPIENTRYP Vertex3dv)(const GLdouble * v); /* 135 */
-   void (GLAPIENTRYP Vertex3f)(GLfloat x, GLfloat y, GLfloat z); /* 136 */
-   void (GLAPIENTRYP Vertex3fv)(const GLfloat * v); /* 137 */
-   void (GLAPIENTRYP Vertex3i)(GLint x, GLint y, GLint z); /* 138 */
-   void (GLAPIENTRYP Vertex3iv)(const GLint * v); /* 139 */
-   void (GLAPIENTRYP Vertex3s)(GLshort x, GLshort y, GLshort z); /* 140 */
-   void (GLAPIENTRYP Vertex3sv)(const GLshort * v); /* 141 */
-   void (GLAPIENTRYP Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 142 */
-   void (GLAPIENTRYP Vertex4dv)(const GLdouble * v); /* 143 */
-   void (GLAPIENTRYP Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 144 */
-   void (GLAPIENTRYP Vertex4fv)(const GLfloat * v); /* 145 */
-   void (GLAPIENTRYP Vertex4i)(GLint x, GLint y, GLint z, GLint w); /* 146 */
-   void (GLAPIENTRYP Vertex4iv)(const GLint * v); /* 147 */
-   void (GLAPIENTRYP Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w); /* 148 */
-   void (GLAPIENTRYP Vertex4sv)(const GLshort * v); /* 149 */
-   void (GLAPIENTRYP ClipPlane)(GLenum plane, const GLdouble * equation); /* 150 */
-   void (GLAPIENTRYP ColorMaterial)(GLenum face, GLenum mode); /* 151 */
-   void (GLAPIENTRYP CullFace)(GLenum mode); /* 152 */
-   void (GLAPIENTRYP Fogf)(GLenum pname, GLfloat param); /* 153 */
-   void (GLAPIENTRYP Fogfv)(GLenum pname, const GLfloat * params); /* 154 */
-   void (GLAPIENTRYP Fogi)(GLenum pname, GLint param); /* 155 */
-   void (GLAPIENTRYP Fogiv)(GLenum pname, const GLint * params); /* 156 */
-   void (GLAPIENTRYP FrontFace)(GLenum mode); /* 157 */
-   void (GLAPIENTRYP Hint)(GLenum target, GLenum mode); /* 158 */
-   void (GLAPIENTRYP Lightf)(GLenum light, GLenum pname, GLfloat param); /* 159 */
-   void (GLAPIENTRYP Lightfv)(GLenum light, GLenum pname, const GLfloat * params); /* 160 */
-   void (GLAPIENTRYP Lighti)(GLenum light, GLenum pname, GLint param); /* 161 */
-   void (GLAPIENTRYP Lightiv)(GLenum light, GLenum pname, const GLint * params); /* 162 */
-   void (GLAPIENTRYP LightModelf)(GLenum pname, GLfloat param); /* 163 */
-   void (GLAPIENTRYP LightModelfv)(GLenum pname, const GLfloat * params); /* 164 */
-   void (GLAPIENTRYP LightModeli)(GLenum pname, GLint param); /* 165 */
-   void (GLAPIENTRYP LightModeliv)(GLenum pname, const GLint * params); /* 166 */
-   void (GLAPIENTRYP LineStipple)(GLint factor, GLushort pattern); /* 167 */
-   void (GLAPIENTRYP LineWidth)(GLfloat width); /* 168 */
-   void (GLAPIENTRYP Materialf)(GLenum face, GLenum pname, GLfloat param); /* 169 */
-   void (GLAPIENTRYP Materialfv)(GLenum face, GLenum pname, const GLfloat * params); /* 170 */
-   void (GLAPIENTRYP Materiali)(GLenum face, GLenum pname, GLint param); /* 171 */
-   void (GLAPIENTRYP Materialiv)(GLenum face, GLenum pname, const GLint * params); /* 172 */
-   void (GLAPIENTRYP PointSize)(GLfloat size); /* 173 */
-   void (GLAPIENTRYP PolygonMode)(GLenum face, GLenum mode); /* 174 */
-   void (GLAPIENTRYP PolygonStipple)(const GLubyte * mask); /* 175 */
-   void (GLAPIENTRYP Scissor)(GLint x, GLint y, GLsizei width, GLsizei height); /* 176 */
-   void (GLAPIENTRYP ShadeModel)(GLenum mode); /* 177 */
-   void (GLAPIENTRYP TexParameterf)(GLenum target, GLenum pname, GLfloat param); /* 178 */
-   void (GLAPIENTRYP TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 179 */
-   void (GLAPIENTRYP TexParameteri)(GLenum target, GLenum pname, GLint param); /* 180 */
-   void (GLAPIENTRYP TexParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 181 */
-   void (GLAPIENTRYP TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 182 */
-   void (GLAPIENTRYP TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 183 */
-   void (GLAPIENTRYP TexEnvf)(GLenum target, GLenum pname, GLfloat param); /* 184 */
-   void (GLAPIENTRYP TexEnvfv)(GLenum target, GLenum pname, const GLfloat * params); /* 185 */
-   void (GLAPIENTRYP TexEnvi)(GLenum target, GLenum pname, GLint param); /* 186 */
-   void (GLAPIENTRYP TexEnviv)(GLenum target, GLenum pname, const GLint * params); /* 187 */
-   void (GLAPIENTRYP TexGend)(GLenum coord, GLenum pname, GLdouble param); /* 188 */
-   void (GLAPIENTRYP TexGendv)(GLenum coord, GLenum pname, const GLdouble * params); /* 189 */
-   void (GLAPIENTRYP TexGenf)(GLenum coord, GLenum pname, GLfloat param); /* 190 */
-   void (GLAPIENTRYP TexGenfv)(GLenum coord, GLenum pname, const GLfloat * params); /* 191 */
-   void (GLAPIENTRYP TexGeni)(GLenum coord, GLenum pname, GLint param); /* 192 */
-   void (GLAPIENTRYP TexGeniv)(GLenum coord, GLenum pname, const GLint * params); /* 193 */
-   void (GLAPIENTRYP FeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer); /* 194 */
-   void (GLAPIENTRYP SelectBuffer)(GLsizei size, GLuint * buffer); /* 195 */
-   GLint (GLAPIENTRYP RenderMode)(GLenum mode); /* 196 */
-   void (GLAPIENTRYP InitNames)(void); /* 197 */
-   void (GLAPIENTRYP LoadName)(GLuint name); /* 198 */
-   void (GLAPIENTRYP PassThrough)(GLfloat token); /* 199 */
-   void (GLAPIENTRYP PopName)(void); /* 200 */
-   void (GLAPIENTRYP PushName)(GLuint name); /* 201 */
-   void (GLAPIENTRYP DrawBuffer)(GLenum mode); /* 202 */
-   void (GLAPIENTRYP Clear)(GLbitfield mask); /* 203 */
-   void (GLAPIENTRYP ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha); /* 204 */
-   void (GLAPIENTRYP ClearIndex)(GLfloat c); /* 205 */
-   void (GLAPIENTRYP ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 206 */
-   void (GLAPIENTRYP ClearStencil)(GLint s); /* 207 */
-   void (GLAPIENTRYP ClearDepth)(GLclampd depth); /* 208 */
-   void (GLAPIENTRYP StencilMask)(GLuint mask); /* 209 */
-   void (GLAPIENTRYP ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha); /* 210 */
-   void (GLAPIENTRYP DepthMask)(GLboolean flag); /* 211 */
-   void (GLAPIENTRYP IndexMask)(GLuint mask); /* 212 */
-   void (GLAPIENTRYP Accum)(GLenum op, GLfloat value); /* 213 */
-   void (GLAPIENTRYP Disable)(GLenum cap); /* 214 */
-   void (GLAPIENTRYP Enable)(GLenum cap); /* 215 */
-   void (GLAPIENTRYP Finish)(void); /* 216 */
-   void (GLAPIENTRYP Flush)(void); /* 217 */
-   void (GLAPIENTRYP PopAttrib)(void); /* 218 */
-   void (GLAPIENTRYP PushAttrib)(GLbitfield mask); /* 219 */
-   void (GLAPIENTRYP Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points); /* 220 */
-   void (GLAPIENTRYP Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points); /* 221 */
-   void (GLAPIENTRYP Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points); /* 222 */
-   void (GLAPIENTRYP Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points); /* 223 */
-   void (GLAPIENTRYP MapGrid1d)(GLint un, GLdouble u1, GLdouble u2); /* 224 */
-   void (GLAPIENTRYP MapGrid1f)(GLint un, GLfloat u1, GLfloat u2); /* 225 */
-   void (GLAPIENTRYP MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2); /* 226 */
-   void (GLAPIENTRYP MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2); /* 227 */
-   void (GLAPIENTRYP EvalCoord1d)(GLdouble u); /* 228 */
-   void (GLAPIENTRYP EvalCoord1dv)(const GLdouble * u); /* 229 */
-   void (GLAPIENTRYP EvalCoord1f)(GLfloat u); /* 230 */
-   void (GLAPIENTRYP EvalCoord1fv)(const GLfloat * u); /* 231 */
-   void (GLAPIENTRYP EvalCoord2d)(GLdouble u, GLdouble v); /* 232 */
-   void (GLAPIENTRYP EvalCoord2dv)(const GLdouble * u); /* 233 */
-   void (GLAPIENTRYP EvalCoord2f)(GLfloat u, GLfloat v); /* 234 */
-   void (GLAPIENTRYP EvalCoord2fv)(const GLfloat * u); /* 235 */
-   void (GLAPIENTRYP EvalMesh1)(GLenum mode, GLint i1, GLint i2); /* 236 */
-   void (GLAPIENTRYP EvalPoint1)(GLint i); /* 237 */
-   void (GLAPIENTRYP EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2); /* 238 */
-   void (GLAPIENTRYP EvalPoint2)(GLint i, GLint j); /* 239 */
-   void (GLAPIENTRYP AlphaFunc)(GLenum func, GLclampf ref); /* 240 */
-   void (GLAPIENTRYP BlendFunc)(GLenum sfactor, GLenum dfactor); /* 241 */
-   void (GLAPIENTRYP LogicOp)(GLenum opcode); /* 242 */
-   void (GLAPIENTRYP StencilFunc)(GLenum func, GLint ref, GLuint mask); /* 243 */
-   void (GLAPIENTRYP StencilOp)(GLenum fail, GLenum zfail, GLenum zpass); /* 244 */
-   void (GLAPIENTRYP DepthFunc)(GLenum func); /* 245 */
-   void (GLAPIENTRYP PixelZoom)(GLfloat xfactor, GLfloat yfactor); /* 246 */
-   void (GLAPIENTRYP PixelTransferf)(GLenum pname, GLfloat param); /* 247 */
-   void (GLAPIENTRYP PixelTransferi)(GLenum pname, GLint param); /* 248 */
-   void (GLAPIENTRYP PixelStoref)(GLenum pname, GLfloat param); /* 249 */
-   void (GLAPIENTRYP PixelStorei)(GLenum pname, GLint param); /* 250 */
-   void (GLAPIENTRYP PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values); /* 251 */
-   void (GLAPIENTRYP PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values); /* 252 */
-   void (GLAPIENTRYP PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values); /* 253 */
-   void (GLAPIENTRYP ReadBuffer)(GLenum mode); /* 254 */
-   void (GLAPIENTRYP CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type); /* 255 */
-   void (GLAPIENTRYP ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels); /* 256 */
-   void (GLAPIENTRYP DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); /* 257 */
-   void (GLAPIENTRYP GetBooleanv)(GLenum pname, GLboolean * params); /* 258 */
-   void (GLAPIENTRYP GetClipPlane)(GLenum plane, GLdouble * equation); /* 259 */
-   void (GLAPIENTRYP GetDoublev)(GLenum pname, GLdouble * params); /* 260 */
-   GLenum (GLAPIENTRYP GetError)(void); /* 261 */
-   void (GLAPIENTRYP GetFloatv)(GLenum pname, GLfloat * params); /* 262 */
-   void (GLAPIENTRYP GetIntegerv)(GLenum pname, GLint * params); /* 263 */
-   void (GLAPIENTRYP GetLightfv)(GLenum light, GLenum pname, GLfloat * params); /* 264 */
-   void (GLAPIENTRYP GetLightiv)(GLenum light, GLenum pname, GLint * params); /* 265 */
-   void (GLAPIENTRYP GetMapdv)(GLenum target, GLenum query, GLdouble * v); /* 266 */
-   void (GLAPIENTRYP GetMapfv)(GLenum target, GLenum query, GLfloat * v); /* 267 */
-   void (GLAPIENTRYP GetMapiv)(GLenum target, GLenum query, GLint * v); /* 268 */
-   void (GLAPIENTRYP GetMaterialfv)(GLenum face, GLenum pname, GLfloat * params); /* 269 */
-   void (GLAPIENTRYP GetMaterialiv)(GLenum face, GLenum pname, GLint * params); /* 270 */
-   void (GLAPIENTRYP GetPixelMapfv)(GLenum map, GLfloat * values); /* 271 */
-   void (GLAPIENTRYP GetPixelMapuiv)(GLenum map, GLuint * values); /* 272 */
-   void (GLAPIENTRYP GetPixelMapusv)(GLenum map, GLushort * values); /* 273 */
-   void (GLAPIENTRYP GetPolygonStipple)(GLubyte * mask); /* 274 */
-   const GLubyte * (GLAPIENTRYP GetString)(GLenum name); /* 275 */
-   void (GLAPIENTRYP GetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params); /* 276 */
-   void (GLAPIENTRYP GetTexEnviv)(GLenum target, GLenum pname, GLint * params); /* 277 */
-   void (GLAPIENTRYP GetTexGendv)(GLenum coord, GLenum pname, GLdouble * params); /* 278 */
-   void (GLAPIENTRYP GetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params); /* 279 */
-   void (GLAPIENTRYP GetTexGeniv)(GLenum coord, GLenum pname, GLint * params); /* 280 */
-   void (GLAPIENTRYP GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels); /* 281 */
-   void (GLAPIENTRYP GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 282 */
-   void (GLAPIENTRYP GetTexParameteriv)(GLenum target, GLenum pname, GLint * params); /* 283 */
-   void (GLAPIENTRYP GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params); /* 284 */
-   void (GLAPIENTRYP GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params); /* 285 */
-   GLboolean (GLAPIENTRYP IsEnabled)(GLenum cap); /* 286 */
-   GLboolean (GLAPIENTRYP IsList)(GLuint list); /* 287 */
-   void (GLAPIENTRYP DepthRange)(GLclampd zNear, GLclampd zFar); /* 288 */
-   void (GLAPIENTRYP Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 289 */
-   void (GLAPIENTRYP LoadIdentity)(void); /* 290 */
-   void (GLAPIENTRYP LoadMatrixf)(const GLfloat * m); /* 291 */
-   void (GLAPIENTRYP LoadMatrixd)(const GLdouble * m); /* 292 */
-   void (GLAPIENTRYP MatrixMode)(GLenum mode); /* 293 */
-   void (GLAPIENTRYP MultMatrixf)(const GLfloat * m); /* 294 */
-   void (GLAPIENTRYP MultMatrixd)(const GLdouble * m); /* 295 */
-   void (GLAPIENTRYP Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar); /* 296 */
-   void (GLAPIENTRYP PopMatrix)(void); /* 297 */
-   void (GLAPIENTRYP PushMatrix)(void); /* 298 */
-   void (GLAPIENTRYP Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z); /* 299 */
-   void (GLAPIENTRYP Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z); /* 300 */
-   void (GLAPIENTRYP Scaled)(GLdouble x, GLdouble y, GLdouble z); /* 301 */
-   void (GLAPIENTRYP Scalef)(GLfloat x, GLfloat y, GLfloat z); /* 302 */
-   void (GLAPIENTRYP Translated)(GLdouble x, GLdouble y, GLdouble z); /* 303 */
-   void (GLAPIENTRYP Translatef)(GLfloat x, GLfloat y, GLfloat z); /* 304 */
-   void (GLAPIENTRYP Viewport)(GLint x, GLint y, GLsizei width, GLsizei height); /* 305 */
-   void (GLAPIENTRYP ArrayElement)(GLint i); /* 306 */
-   void (GLAPIENTRYP BindTexture)(GLenum target, GLuint texture); /* 307 */
-   void (GLAPIENTRYP ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 308 */
-   void (GLAPIENTRYP DisableClientState)(GLenum array); /* 309 */
-   void (GLAPIENTRYP DrawArrays)(GLenum mode, GLint first, GLsizei count); /* 310 */
-   void (GLAPIENTRYP DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices); /* 311 */
-   void (GLAPIENTRYP EdgeFlagPointer)(GLsizei stride, const GLvoid * pointer); /* 312 */
-   void (GLAPIENTRYP EnableClientState)(GLenum array); /* 313 */
-   void (GLAPIENTRYP IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 314 */
-   void (GLAPIENTRYP Indexub)(GLubyte c); /* 315 */
-   void (GLAPIENTRYP Indexubv)(const GLubyte * c); /* 316 */
-   void (GLAPIENTRYP InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer); /* 317 */
-   void (GLAPIENTRYP NormalPointer)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 318 */
-   void (GLAPIENTRYP PolygonOffset)(GLfloat factor, GLfloat units); /* 319 */
-   void (GLAPIENTRYP TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 320 */
-   void (GLAPIENTRYP VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 321 */
-   GLboolean (GLAPIENTRYP AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences); /* 322 */
-   void (GLAPIENTRYP CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border); /* 323 */
-   void (GLAPIENTRYP CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border); /* 324 */
-   void (GLAPIENTRYP CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width); /* 325 */
-   void (GLAPIENTRYP CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 326 */
-   void (GLAPIENTRYP DeleteTextures)(GLsizei n, const GLuint * textures); /* 327 */
-   void (GLAPIENTRYP GenTextures)(GLsizei n, GLuint * textures); /* 328 */
-   void (GLAPIENTRYP GetPointerv)(GLenum pname, GLvoid ** params); /* 329 */
-   GLboolean (GLAPIENTRYP IsTexture)(GLuint texture); /* 330 */
-   void (GLAPIENTRYP PrioritizeTextures)(GLsizei n, const GLuint * textures, const GLclampf * priorities); /* 331 */
-   void (GLAPIENTRYP TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels); /* 332 */
-   void (GLAPIENTRYP TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels); /* 333 */
-   void (GLAPIENTRYP PopClientAttrib)(void); /* 334 */
-   void (GLAPIENTRYP PushClientAttrib)(GLbitfield mask); /* 335 */
-   void (GLAPIENTRYP BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha); /* 336 */
-   void (GLAPIENTRYP BlendEquation)(GLenum mode); /* 337 */
-   void (GLAPIENTRYP DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices); /* 338 */
-   void (GLAPIENTRYP ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table); /* 339 */
-   void (GLAPIENTRYP ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 340 */
-   void (GLAPIENTRYP ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 341 */
-   void (GLAPIENTRYP CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 342 */
-   void (GLAPIENTRYP GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table); /* 343 */
-   void (GLAPIENTRYP GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 344 */
-   void (GLAPIENTRYP GetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params); /* 345 */
-   void (GLAPIENTRYP ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data); /* 346 */
-   void (GLAPIENTRYP CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width); /* 347 */
-   void (GLAPIENTRYP ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image); /* 348 */
-   void (GLAPIENTRYP ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image); /* 349 */
-   void (GLAPIENTRYP ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params); /* 350 */
-   void (GLAPIENTRYP ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params); /* 351 */
-   void (GLAPIENTRYP ConvolutionParameteri)(GLenum target, GLenum pname, GLint params); /* 352 */
-   void (GLAPIENTRYP ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params); /* 353 */
-   void (GLAPIENTRYP CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width); /* 354 */
-   void (GLAPIENTRYP CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height); /* 355 */
-   void (GLAPIENTRYP GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image); /* 356 */
-   void (GLAPIENTRYP GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 357 */
-   void (GLAPIENTRYP GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params); /* 358 */
-   void (GLAPIENTRYP GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span); /* 359 */
-   void (GLAPIENTRYP SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column); /* 360 */
-   void (GLAPIENTRYP GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 361 */
-   void (GLAPIENTRYP GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 362 */
-   void (GLAPIENTRYP GetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params); /* 363 */
-   void (GLAPIENTRYP GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values); /* 364 */
-   void (GLAPIENTRYP GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params); /* 365 */
-   void (GLAPIENTRYP GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params); /* 366 */
-   void (GLAPIENTRYP Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink); /* 367 */
-   void (GLAPIENTRYP Minmax)(GLenum target, GLenum internalformat, GLboolean sink); /* 368 */
-   void (GLAPIENTRYP ResetHistogram)(GLenum target); /* 369 */
-   void (GLAPIENTRYP ResetMinmax)(GLenum target); /* 370 */
-   void (GLAPIENTRYP TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels); /* 371 */
-   void (GLAPIENTRYP TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels); /* 372 */
-   void (GLAPIENTRYP CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height); /* 373 */
-   void (GLAPIENTRYP ActiveTextureARB)(GLenum texture); /* 374 */
-   void (GLAPIENTRYP ClientActiveTextureARB)(GLenum texture); /* 375 */
-   void (GLAPIENTRYP MultiTexCoord1dARB)(GLenum target, GLdouble s); /* 376 */
-   void (GLAPIENTRYP MultiTexCoord1dvARB)(GLenum target, const GLdouble * v); /* 377 */
-   void (GLAPIENTRYP MultiTexCoord1fARB)(GLenum target, GLfloat s); /* 378 */
-   void (GLAPIENTRYP MultiTexCoord1fvARB)(GLenum target, const GLfloat * v); /* 379 */
-   void (GLAPIENTRYP MultiTexCoord1iARB)(GLenum target, GLint s); /* 380 */
-   void (GLAPIENTRYP MultiTexCoord1ivARB)(GLenum target, const GLint * v); /* 381 */
-   void (GLAPIENTRYP MultiTexCoord1sARB)(GLenum target, GLshort s); /* 382 */
-   void (GLAPIENTRYP MultiTexCoord1svARB)(GLenum target, const GLshort * v); /* 383 */
-   void (GLAPIENTRYP MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t); /* 384 */
-   void (GLAPIENTRYP MultiTexCoord2dvARB)(GLenum target, const GLdouble * v); /* 385 */
-   void (GLAPIENTRYP MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t); /* 386 */
-   void (GLAPIENTRYP MultiTexCoord2fvARB)(GLenum target, const GLfloat * v); /* 387 */
-   void (GLAPIENTRYP MultiTexCoord2iARB)(GLenum target, GLint s, GLint t); /* 388 */
-   void (GLAPIENTRYP MultiTexCoord2ivARB)(GLenum target, const GLint * v); /* 389 */
-   void (GLAPIENTRYP MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t); /* 390 */
-   void (GLAPIENTRYP MultiTexCoord2svARB)(GLenum target, const GLshort * v); /* 391 */
-   void (GLAPIENTRYP MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r); /* 392 */
-   void (GLAPIENTRYP MultiTexCoord3dvARB)(GLenum target, const GLdouble * v); /* 393 */
-   void (GLAPIENTRYP MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r); /* 394 */
-   void (GLAPIENTRYP MultiTexCoord3fvARB)(GLenum target, const GLfloat * v); /* 395 */
-   void (GLAPIENTRYP MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r); /* 396 */
-   void (GLAPIENTRYP MultiTexCoord3ivARB)(GLenum target, const GLint * v); /* 397 */
-   void (GLAPIENTRYP MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r); /* 398 */
-   void (GLAPIENTRYP MultiTexCoord3svARB)(GLenum target, const GLshort * v); /* 399 */
-   void (GLAPIENTRYP MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q); /* 400 */
-   void (GLAPIENTRYP MultiTexCoord4dvARB)(GLenum target, const GLdouble * v); /* 401 */
-   void (GLAPIENTRYP MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q); /* 402 */
-   void (GLAPIENTRYP MultiTexCoord4fvARB)(GLenum target, const GLfloat * v); /* 403 */
-   void (GLAPIENTRYP MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q); /* 404 */
-   void (GLAPIENTRYP MultiTexCoord4ivARB)(GLenum target, const GLint * v); /* 405 */
-   void (GLAPIENTRYP MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q); /* 406 */
-   void (GLAPIENTRYP MultiTexCoord4svARB)(GLenum target, const GLshort * v); /* 407 */
-   void (GLAPIENTRYP AttachShader)(GLuint program, GLuint shader); /* 408 */
-   GLuint (GLAPIENTRYP CreateProgram)(void); /* 409 */
-   GLuint (GLAPIENTRYP CreateShader)(GLenum type); /* 410 */
-   void (GLAPIENTRYP DeleteProgram)(GLuint program); /* 411 */
-   void (GLAPIENTRYP DeleteShader)(GLuint program); /* 412 */
-   void (GLAPIENTRYP DetachShader)(GLuint program, GLuint shader); /* 413 */
-   void (GLAPIENTRYP GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj); /* 414 */
-   void (GLAPIENTRYP GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog); /* 415 */
-   void (GLAPIENTRYP GetProgramiv)(GLuint program, GLenum pname, GLint * params); /* 416 */
-   void (GLAPIENTRYP GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog); /* 417 */
-   void (GLAPIENTRYP GetShaderiv)(GLuint shader, GLenum pname, GLint * params); /* 418 */
-   GLboolean (GLAPIENTRYP IsProgram)(GLuint program); /* 419 */
-   GLboolean (GLAPIENTRYP IsShader)(GLuint shader); /* 420 */
-   void (GLAPIENTRYP StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask); /* 421 */
-   void (GLAPIENTRYP StencilMaskSeparate)(GLenum face, GLuint mask); /* 422 */
-   void (GLAPIENTRYP StencilOpSeparate)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass); /* 423 */
-   void (GLAPIENTRYP UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 424 */
-   void (GLAPIENTRYP UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 425 */
-   void (GLAPIENTRYP UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 426 */
-   void (GLAPIENTRYP UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 427 */
-   void (GLAPIENTRYP UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 428 */
-   void (GLAPIENTRYP UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 429 */
-   void (GLAPIENTRYP DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount); /* 430 */
-   void (GLAPIENTRYP DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount); /* 431 */
-   void (GLAPIENTRYP LoadTransposeMatrixdARB)(const GLdouble * m); /* 432 */
-   void (GLAPIENTRYP LoadTransposeMatrixfARB)(const GLfloat * m); /* 433 */
-   void (GLAPIENTRYP MultTransposeMatrixdARB)(const GLdouble * m); /* 434 */
-   void (GLAPIENTRYP MultTransposeMatrixfARB)(const GLfloat * m); /* 435 */
-   void (GLAPIENTRYP SampleCoverageARB)(GLclampf value, GLboolean invert); /* 436 */
-   void (GLAPIENTRYP CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data); /* 437 */
-   void (GLAPIENTRYP CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data); /* 438 */
-   void (GLAPIENTRYP CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data); /* 439 */
-   void (GLAPIENTRYP CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data); /* 440 */
-   void (GLAPIENTRYP CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data); /* 441 */
-   void (GLAPIENTRYP CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data); /* 442 */
-   void (GLAPIENTRYP GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img); /* 443 */
-   void (GLAPIENTRYP DisableVertexAttribArrayARB)(GLuint index); /* 444 */
-   void (GLAPIENTRYP EnableVertexAttribArrayARB)(GLuint index); /* 445 */
-   void (GLAPIENTRYP GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 446 */
-   void (GLAPIENTRYP GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 447 */
-   void (GLAPIENTRYP GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params); /* 448 */
-   void (GLAPIENTRYP GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params); /* 449 */
-   void (GLAPIENTRYP GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string); /* 450 */
-   void (GLAPIENTRYP GetProgramivARB)(GLenum target, GLenum pname, GLint * params); /* 451 */
-   void (GLAPIENTRYP GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params); /* 452 */
-   void (GLAPIENTRYP GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params); /* 453 */
-   void (GLAPIENTRYP GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params); /* 454 */
-   void (GLAPIENTRYP ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 455 */
-   void (GLAPIENTRYP ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 456 */
-   void (GLAPIENTRYP ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 457 */
-   void (GLAPIENTRYP ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 458 */
-   void (GLAPIENTRYP ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 459 */
-   void (GLAPIENTRYP ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params); /* 460 */
-   void (GLAPIENTRYP ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 461 */
-   void (GLAPIENTRYP ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params); /* 462 */
-   void (GLAPIENTRYP ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string); /* 463 */
-   void (GLAPIENTRYP VertexAttrib1dARB)(GLuint index, GLdouble x); /* 464 */
-   void (GLAPIENTRYP VertexAttrib1dvARB)(GLuint index, const GLdouble * v); /* 465 */
-   void (GLAPIENTRYP VertexAttrib1fARB)(GLuint index, GLfloat x); /* 466 */
-   void (GLAPIENTRYP VertexAttrib1fvARB)(GLuint index, const GLfloat * v); /* 467 */
-   void (GLAPIENTRYP VertexAttrib1sARB)(GLuint index, GLshort x); /* 468 */
-   void (GLAPIENTRYP VertexAttrib1svARB)(GLuint index, const GLshort * v); /* 469 */
-   void (GLAPIENTRYP VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y); /* 470 */
-   void (GLAPIENTRYP VertexAttrib2dvARB)(GLuint index, const GLdouble * v); /* 471 */
-   void (GLAPIENTRYP VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y); /* 472 */
-   void (GLAPIENTRYP VertexAttrib2fvARB)(GLuint index, const GLfloat * v); /* 473 */
-   void (GLAPIENTRYP VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y); /* 474 */
-   void (GLAPIENTRYP VertexAttrib2svARB)(GLuint index, const GLshort * v); /* 475 */
-   void (GLAPIENTRYP VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 476 */
-   void (GLAPIENTRYP VertexAttrib3dvARB)(GLuint index, const GLdouble * v); /* 477 */
-   void (GLAPIENTRYP VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 478 */
-   void (GLAPIENTRYP VertexAttrib3fvARB)(GLuint index, const GLfloat * v); /* 479 */
-   void (GLAPIENTRYP VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z); /* 480 */
-   void (GLAPIENTRYP VertexAttrib3svARB)(GLuint index, const GLshort * v); /* 481 */
-   void (GLAPIENTRYP VertexAttrib4NbvARB)(GLuint index, const GLbyte * v); /* 482 */
-   void (GLAPIENTRYP VertexAttrib4NivARB)(GLuint index, const GLint * v); /* 483 */
-   void (GLAPIENTRYP VertexAttrib4NsvARB)(GLuint index, const GLshort * v); /* 484 */
-   void (GLAPIENTRYP VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 485 */
-   void (GLAPIENTRYP VertexAttrib4NubvARB)(GLuint index, const GLubyte * v); /* 486 */
-   void (GLAPIENTRYP VertexAttrib4NuivARB)(GLuint index, const GLuint * v); /* 487 */
-   void (GLAPIENTRYP VertexAttrib4NusvARB)(GLuint index, const GLushort * v); /* 488 */
-   void (GLAPIENTRYP VertexAttrib4bvARB)(GLuint index, const GLbyte * v); /* 489 */
-   void (GLAPIENTRYP VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 490 */
-   void (GLAPIENTRYP VertexAttrib4dvARB)(GLuint index, const GLdouble * v); /* 491 */
-   void (GLAPIENTRYP VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 492 */
-   void (GLAPIENTRYP VertexAttrib4fvARB)(GLuint index, const GLfloat * v); /* 493 */
-   void (GLAPIENTRYP VertexAttrib4ivARB)(GLuint index, const GLint * v); /* 494 */
-   void (GLAPIENTRYP VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 495 */
-   void (GLAPIENTRYP VertexAttrib4svARB)(GLuint index, const GLshort * v); /* 496 */
-   void (GLAPIENTRYP VertexAttrib4ubvARB)(GLuint index, const GLubyte * v); /* 497 */
-   void (GLAPIENTRYP VertexAttrib4uivARB)(GLuint index, const GLuint * v); /* 498 */
-   void (GLAPIENTRYP VertexAttrib4usvARB)(GLuint index, const GLushort * v); /* 499 */
-   void (GLAPIENTRYP VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer); /* 500 */
-   void (GLAPIENTRYP BindBufferARB)(GLenum target, GLuint buffer); /* 501 */
-   void (GLAPIENTRYP BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage); /* 502 */
-   void (GLAPIENTRYP BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data); /* 503 */
-   void (GLAPIENTRYP DeleteBuffersARB)(GLsizei n, const GLuint * buffer); /* 504 */
-   void (GLAPIENTRYP GenBuffersARB)(GLsizei n, GLuint * buffer); /* 505 */
-   void (GLAPIENTRYP GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params); /* 506 */
-   void (GLAPIENTRYP GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params); /* 507 */
-   void (GLAPIENTRYP GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data); /* 508 */
-   GLboolean (GLAPIENTRYP IsBufferARB)(GLuint buffer); /* 509 */
-   GLvoid * (GLAPIENTRYP MapBufferARB)(GLenum target, GLenum access); /* 510 */
-   GLboolean (GLAPIENTRYP UnmapBufferARB)(GLenum target); /* 511 */
-   void (GLAPIENTRYP BeginQueryARB)(GLenum target, GLuint id); /* 512 */
-   void (GLAPIENTRYP DeleteQueriesARB)(GLsizei n, const GLuint * ids); /* 513 */
-   void (GLAPIENTRYP EndQueryARB)(GLenum target); /* 514 */
-   void (GLAPIENTRYP GenQueriesARB)(GLsizei n, GLuint * ids); /* 515 */
-   void (GLAPIENTRYP GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params); /* 516 */
-   void (GLAPIENTRYP GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params); /* 517 */
-   void (GLAPIENTRYP GetQueryivARB)(GLenum target, GLenum pname, GLint * params); /* 518 */
-   GLboolean (GLAPIENTRYP IsQueryARB)(GLuint id); /* 519 */
-   void (GLAPIENTRYP AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj); /* 520 */
-   void (GLAPIENTRYP CompileShaderARB)(GLhandleARB shader); /* 521 */
-   GLhandleARB (GLAPIENTRYP CreateProgramObjectARB)(void); /* 522 */
-   GLhandleARB (GLAPIENTRYP CreateShaderObjectARB)(GLenum shaderType); /* 523 */
-   void (GLAPIENTRYP DeleteObjectARB)(GLhandleARB obj); /* 524 */
-   void (GLAPIENTRYP DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj); /* 525 */
-   void (GLAPIENTRYP GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 526 */
-   void (GLAPIENTRYP GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog); /* 527 */
-   GLhandleARB (GLAPIENTRYP GetHandleARB)(GLenum pname); /* 528 */
-   void (GLAPIENTRYP GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog); /* 529 */
-   void (GLAPIENTRYP GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params); /* 530 */
-   void (GLAPIENTRYP GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params); /* 531 */
-   void (GLAPIENTRYP GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source); /* 532 */
-   GLint (GLAPIENTRYP GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name); /* 533 */
-   void (GLAPIENTRYP GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params); /* 534 */
-   void (GLAPIENTRYP GetUniformivARB)(GLhandleARB program, GLint location, GLint * params); /* 535 */
-   void (GLAPIENTRYP LinkProgramARB)(GLhandleARB program); /* 536 */
-   void (GLAPIENTRYP ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length); /* 537 */
-   void (GLAPIENTRYP Uniform1fARB)(GLint location, GLfloat v0); /* 538 */
-   void (GLAPIENTRYP Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 539 */
-   void (GLAPIENTRYP Uniform1iARB)(GLint location, GLint v0); /* 540 */
-   void (GLAPIENTRYP Uniform1ivARB)(GLint location, GLsizei count, const GLint * value); /* 541 */
-   void (GLAPIENTRYP Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1); /* 542 */
-   void (GLAPIENTRYP Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 543 */
-   void (GLAPIENTRYP Uniform2iARB)(GLint location, GLint v0, GLint v1); /* 544 */
-   void (GLAPIENTRYP Uniform2ivARB)(GLint location, GLsizei count, const GLint * value); /* 545 */
-   void (GLAPIENTRYP Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2); /* 546 */
-   void (GLAPIENTRYP Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 547 */
-   void (GLAPIENTRYP Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2); /* 548 */
-   void (GLAPIENTRYP Uniform3ivARB)(GLint location, GLsizei count, const GLint * value); /* 549 */
-   void (GLAPIENTRYP Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3); /* 550 */
-   void (GLAPIENTRYP Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value); /* 551 */
-   void (GLAPIENTRYP Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3); /* 552 */
-   void (GLAPIENTRYP Uniform4ivARB)(GLint location, GLsizei count, const GLint * value); /* 553 */
-   void (GLAPIENTRYP UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 554 */
-   void (GLAPIENTRYP UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 555 */
-   void (GLAPIENTRYP UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value); /* 556 */
-   void (GLAPIENTRYP UseProgramObjectARB)(GLhandleARB program); /* 557 */
-   void (GLAPIENTRYP ValidateProgramARB)(GLhandleARB program); /* 558 */
-   void (GLAPIENTRYP BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name); /* 559 */
-   void (GLAPIENTRYP GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name); /* 560 */
-   GLint (GLAPIENTRYP GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name); /* 561 */
-   void (GLAPIENTRYP DrawBuffersARB)(GLsizei n, const GLenum * bufs); /* 562 */
-   void (GLAPIENTRYP RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height); /* 563 */
-   void (GLAPIENTRYP FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length); /* 564 */
-   GLvoid * (GLAPIENTRYP MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access); /* 565 */
-   void (GLAPIENTRYP BindVertexArray)(GLuint array); /* 566 */
-   void (GLAPIENTRYP GenVertexArrays)(GLsizei n, GLuint * arrays); /* 567 */
-   void (GLAPIENTRYP CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size); /* 568 */
-   GLenum (GLAPIENTRYP ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 569 */
-   void (GLAPIENTRYP DeleteSync)(GLsync sync); /* 570 */
-   GLsync (GLAPIENTRYP FenceSync)(GLenum condition, GLbitfield flags); /* 571 */
-   void (GLAPIENTRYP GetInteger64v)(GLenum pname, GLint64 * params); /* 572 */
-   void (GLAPIENTRYP GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values); /* 573 */
-   GLboolean (GLAPIENTRYP IsSync)(GLsync sync); /* 574 */
-   void (GLAPIENTRYP WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout); /* 575 */
-   void (GLAPIENTRYP DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 576 */
-   void (GLAPIENTRYP DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex); /* 577 */
-   void (GLAPIENTRYP MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex); /* 578 */
-   void (GLAPIENTRYP PolygonOffsetEXT)(GLfloat factor, GLfloat bias); /* 579 */
-   void (GLAPIENTRYP GetPixelTexGenParameterfvSGIS)(GLenum pname, GLfloat * params); /* 580 */
-   void (GLAPIENTRYP GetPixelTexGenParameterivSGIS)(GLenum pname, GLint * params); /* 581 */
-   void (GLAPIENTRYP PixelTexGenParameterfSGIS)(GLenum pname, GLfloat param); /* 582 */
-   void (GLAPIENTRYP PixelTexGenParameterfvSGIS)(GLenum pname, const GLfloat * params); /* 583 */
-   void (GLAPIENTRYP PixelTexGenParameteriSGIS)(GLenum pname, GLint param); /* 584 */
-   void (GLAPIENTRYP PixelTexGenParameterivSGIS)(GLenum pname, const GLint * params); /* 585 */
-   void (GLAPIENTRYP SampleMaskSGIS)(GLclampf value, GLboolean invert); /* 586 */
-   void (GLAPIENTRYP SamplePatternSGIS)(GLenum pattern); /* 587 */
-   void (GLAPIENTRYP ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 588 */
-   void (GLAPIENTRYP EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer); /* 589 */
-   void (GLAPIENTRYP IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 590 */
-   void (GLAPIENTRYP NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 591 */
-   void (GLAPIENTRYP TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 592 */
-   void (GLAPIENTRYP VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer); /* 593 */
-   void (GLAPIENTRYP PointParameterfEXT)(GLenum pname, GLfloat param); /* 594 */
-   void (GLAPIENTRYP PointParameterfvEXT)(GLenum pname, const GLfloat * params); /* 595 */
-   void (GLAPIENTRYP LockArraysEXT)(GLint first, GLsizei count); /* 596 */
-   void (GLAPIENTRYP UnlockArraysEXT)(void); /* 597 */
-   void (GLAPIENTRYP CullParameterdvEXT)(GLenum pname, GLdouble * params); /* 598 */
-   void (GLAPIENTRYP CullParameterfvEXT)(GLenum pname, GLfloat * params); /* 599 */
-   void (GLAPIENTRYP SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue); /* 600 */
-   void (GLAPIENTRYP SecondaryColor3bvEXT)(const GLbyte * v); /* 601 */
-   void (GLAPIENTRYP SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue); /* 602 */
-   void (GLAPIENTRYP SecondaryColor3dvEXT)(const GLdouble * v); /* 603 */
-   void (GLAPIENTRYP SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue); /* 604 */
-   void (GLAPIENTRYP SecondaryColor3fvEXT)(const GLfloat * v); /* 605 */
-   void (GLAPIENTRYP SecondaryColor3iEXT)(GLint red, GLint green, GLint blue); /* 606 */
-   void (GLAPIENTRYP SecondaryColor3ivEXT)(const GLint * v); /* 607 */
-   void (GLAPIENTRYP SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue); /* 608 */
-   void (GLAPIENTRYP SecondaryColor3svEXT)(const GLshort * v); /* 609 */
-   void (GLAPIENTRYP SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue); /* 610 */
-   void (GLAPIENTRYP SecondaryColor3ubvEXT)(const GLubyte * v); /* 611 */
-   void (GLAPIENTRYP SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue); /* 612 */
-   void (GLAPIENTRYP SecondaryColor3uivEXT)(const GLuint * v); /* 613 */
-   void (GLAPIENTRYP SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue); /* 614 */
-   void (GLAPIENTRYP SecondaryColor3usvEXT)(const GLushort * v); /* 615 */
-   void (GLAPIENTRYP SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 616 */
-   void (GLAPIENTRYP MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount); /* 617 */
-   void (GLAPIENTRYP MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount); /* 618 */
-   void (GLAPIENTRYP FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer); /* 619 */
-   void (GLAPIENTRYP FogCoorddEXT)(GLdouble coord); /* 620 */
-   void (GLAPIENTRYP FogCoorddvEXT)(const GLdouble * coord); /* 621 */
-   void (GLAPIENTRYP FogCoordfEXT)(GLfloat coord); /* 622 */
-   void (GLAPIENTRYP FogCoordfvEXT)(const GLfloat * coord); /* 623 */
-   void (GLAPIENTRYP PixelTexGenSGIX)(GLenum mode); /* 624 */
-   void (GLAPIENTRYP BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha); /* 625 */
-   void (GLAPIENTRYP FlushVertexArrayRangeNV)(void); /* 626 */
-   void (GLAPIENTRYP VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer); /* 627 */
-   void (GLAPIENTRYP CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 628 */
-   void (GLAPIENTRYP CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum); /* 629 */
-   void (GLAPIENTRYP CombinerParameterfNV)(GLenum pname, GLfloat param); /* 630 */
-   void (GLAPIENTRYP CombinerParameterfvNV)(GLenum pname, const GLfloat * params); /* 631 */
-   void (GLAPIENTRYP CombinerParameteriNV)(GLenum pname, GLint param); /* 632 */
-   void (GLAPIENTRYP CombinerParameterivNV)(GLenum pname, const GLint * params); /* 633 */
-   void (GLAPIENTRYP FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage); /* 634 */
-   void (GLAPIENTRYP GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params); /* 635 */
-   void (GLAPIENTRYP GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params); /* 636 */
-   void (GLAPIENTRYP GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params); /* 637 */
-   void (GLAPIENTRYP GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params); /* 638 */
-   void (GLAPIENTRYP GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params); /* 639 */
-   void (GLAPIENTRYP GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params); /* 640 */
-   void (GLAPIENTRYP ResizeBuffersMESA)(void); /* 641 */
-   void (GLAPIENTRYP WindowPos2dMESA)(GLdouble x, GLdouble y); /* 642 */
-   void (GLAPIENTRYP WindowPos2dvMESA)(const GLdouble * v); /* 643 */
-   void (GLAPIENTRYP WindowPos2fMESA)(GLfloat x, GLfloat y); /* 644 */
-   void (GLAPIENTRYP WindowPos2fvMESA)(const GLfloat * v); /* 645 */
-   void (GLAPIENTRYP WindowPos2iMESA)(GLint x, GLint y); /* 646 */
-   void (GLAPIENTRYP WindowPos2ivMESA)(const GLint * v); /* 647 */
-   void (GLAPIENTRYP WindowPos2sMESA)(GLshort x, GLshort y); /* 648 */
-   void (GLAPIENTRYP WindowPos2svMESA)(const GLshort * v); /* 649 */
-   void (GLAPIENTRYP WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z); /* 650 */
-   void (GLAPIENTRYP WindowPos3dvMESA)(const GLdouble * v); /* 651 */
-   void (GLAPIENTRYP WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z); /* 652 */
-   void (GLAPIENTRYP WindowPos3fvMESA)(const GLfloat * v); /* 653 */
-   void (GLAPIENTRYP WindowPos3iMESA)(GLint x, GLint y, GLint z); /* 654 */
-   void (GLAPIENTRYP WindowPos3ivMESA)(const GLint * v); /* 655 */
-   void (GLAPIENTRYP WindowPos3sMESA)(GLshort x, GLshort y, GLshort z); /* 656 */
-   void (GLAPIENTRYP WindowPos3svMESA)(const GLshort * v); /* 657 */
-   void (GLAPIENTRYP WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 658 */
-   void (GLAPIENTRYP WindowPos4dvMESA)(const GLdouble * v); /* 659 */
-   void (GLAPIENTRYP WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 660 */
-   void (GLAPIENTRYP WindowPos4fvMESA)(const GLfloat * v); /* 661 */
-   void (GLAPIENTRYP WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w); /* 662 */
-   void (GLAPIENTRYP WindowPos4ivMESA)(const GLint * v); /* 663 */
-   void (GLAPIENTRYP WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w); /* 664 */
-   void (GLAPIENTRYP WindowPos4svMESA)(const GLshort * v); /* 665 */
-   void (GLAPIENTRYP MultiModeDrawArraysIBM)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride); /* 666 */
-   void (GLAPIENTRYP MultiModeDrawElementsIBM)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride); /* 667 */
-   void (GLAPIENTRYP DeleteFencesNV)(GLsizei n, const GLuint * fences); /* 668 */
-   void (GLAPIENTRYP FinishFenceNV)(GLuint fence); /* 669 */
-   void (GLAPIENTRYP GenFencesNV)(GLsizei n, GLuint * fences); /* 670 */
-   void (GLAPIENTRYP GetFenceivNV)(GLuint fence, GLenum pname, GLint * params); /* 671 */
-   GLboolean (GLAPIENTRYP IsFenceNV)(GLuint fence); /* 672 */
-   void (GLAPIENTRYP SetFenceNV)(GLuint fence, GLenum condition); /* 673 */
-   GLboolean (GLAPIENTRYP TestFenceNV)(GLuint fence); /* 674 */
-   GLboolean (GLAPIENTRYP AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences); /* 675 */
-   void (GLAPIENTRYP BindProgramNV)(GLenum target, GLuint program); /* 676 */
-   void (GLAPIENTRYP DeleteProgramsNV)(GLsizei n, const GLuint * programs); /* 677 */
-   void (GLAPIENTRYP ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params); /* 678 */
-   void (GLAPIENTRYP GenProgramsNV)(GLsizei n, GLuint * programs); /* 679 */
-   void (GLAPIENTRYP GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params); /* 680 */
-   void (GLAPIENTRYP GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params); /* 681 */
-   void (GLAPIENTRYP GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program); /* 682 */
-   void (GLAPIENTRYP GetProgramivNV)(GLuint id, GLenum pname, GLint * params); /* 683 */
-   void (GLAPIENTRYP GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params); /* 684 */
-   void (GLAPIENTRYP GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer); /* 685 */
-   void (GLAPIENTRYP GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params); /* 686 */
-   void (GLAPIENTRYP GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params); /* 687 */
-   void (GLAPIENTRYP GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params); /* 688 */
-   GLboolean (GLAPIENTRYP IsProgramNV)(GLuint program); /* 689 */
-   void (GLAPIENTRYP LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program); /* 690 */
-   void (GLAPIENTRYP ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params); /* 691 */
-   void (GLAPIENTRYP ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params); /* 692 */
-   void (GLAPIENTRYP RequestResidentProgramsNV)(GLsizei n, const GLuint * ids); /* 693 */
-   void (GLAPIENTRYP TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform); /* 694 */
-   void (GLAPIENTRYP VertexAttrib1dNV)(GLuint index, GLdouble x); /* 695 */
-   void (GLAPIENTRYP VertexAttrib1dvNV)(GLuint index, const GLdouble * v); /* 696 */
-   void (GLAPIENTRYP VertexAttrib1fNV)(GLuint index, GLfloat x); /* 697 */
-   void (GLAPIENTRYP VertexAttrib1fvNV)(GLuint index, const GLfloat * v); /* 698 */
-   void (GLAPIENTRYP VertexAttrib1sNV)(GLuint index, GLshort x); /* 699 */
-   void (GLAPIENTRYP VertexAttrib1svNV)(GLuint index, const GLshort * v); /* 700 */
-   void (GLAPIENTRYP VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y); /* 701 */
-   void (GLAPIENTRYP VertexAttrib2dvNV)(GLuint index, const GLdouble * v); /* 702 */
-   void (GLAPIENTRYP VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y); /* 703 */
-   void (GLAPIENTRYP VertexAttrib2fvNV)(GLuint index, const GLfloat * v); /* 704 */
-   void (GLAPIENTRYP VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y); /* 705 */
-   void (GLAPIENTRYP VertexAttrib2svNV)(GLuint index, const GLshort * v); /* 706 */
-   void (GLAPIENTRYP VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z); /* 707 */
-   void (GLAPIENTRYP VertexAttrib3dvNV)(GLuint index, const GLdouble * v); /* 708 */
-   void (GLAPIENTRYP VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z); /* 709 */
-   void (GLAPIENTRYP VertexAttrib3fvNV)(GLuint index, const GLfloat * v); /* 710 */
-   void (GLAPIENTRYP VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z); /* 711 */
-   void (GLAPIENTRYP VertexAttrib3svNV)(GLuint index, const GLshort * v); /* 712 */
-   void (GLAPIENTRYP VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 713 */
-   void (GLAPIENTRYP VertexAttrib4dvNV)(GLuint index, const GLdouble * v); /* 714 */
-   void (GLAPIENTRYP VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 715 */
-   void (GLAPIENTRYP VertexAttrib4fvNV)(GLuint index, const GLfloat * v); /* 716 */
-   void (GLAPIENTRYP VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w); /* 717 */
-   void (GLAPIENTRYP VertexAttrib4svNV)(GLuint index, const GLshort * v); /* 718 */
-   void (GLAPIENTRYP VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w); /* 719 */
-   void (GLAPIENTRYP VertexAttrib4ubvNV)(GLuint index, const GLubyte * v); /* 720 */
-   void (GLAPIENTRYP VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer); /* 721 */
-   void (GLAPIENTRYP VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 722 */
-   void (GLAPIENTRYP VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 723 */
-   void (GLAPIENTRYP VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v); /* 724 */
-   void (GLAPIENTRYP VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 725 */
-   void (GLAPIENTRYP VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 726 */
-   void (GLAPIENTRYP VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v); /* 727 */
-   void (GLAPIENTRYP VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 728 */
-   void (GLAPIENTRYP VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 729 */
-   void (GLAPIENTRYP VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v); /* 730 */
-   void (GLAPIENTRYP VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v); /* 731 */
-   void (GLAPIENTRYP VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v); /* 732 */
-   void (GLAPIENTRYP VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v); /* 733 */
-   void (GLAPIENTRYP VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v); /* 734 */
-   void (GLAPIENTRYP GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param); /* 735 */
-   void (GLAPIENTRYP GetTexBumpParameterivATI)(GLenum pname, GLint * param); /* 736 */
-   void (GLAPIENTRYP TexBumpParameterfvATI)(GLenum pname, const GLfloat * param); /* 737 */
-   void (GLAPIENTRYP TexBumpParameterivATI)(GLenum pname, const GLint * param); /* 738 */
-   void (GLAPIENTRYP AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 739 */
-   void (GLAPIENTRYP AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 740 */
-   void (GLAPIENTRYP AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 741 */
-   void (GLAPIENTRYP BeginFragmentShaderATI)(void); /* 742 */
-   void (GLAPIENTRYP BindFragmentShaderATI)(GLuint id); /* 743 */
-   void (GLAPIENTRYP ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod); /* 744 */
-   void (GLAPIENTRYP ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod); /* 745 */
-   void (GLAPIENTRYP ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod); /* 746 */
-   void (GLAPIENTRYP DeleteFragmentShaderATI)(GLuint id); /* 747 */
-   void (GLAPIENTRYP EndFragmentShaderATI)(void); /* 748 */
-   GLuint (GLAPIENTRYP GenFragmentShadersATI)(GLuint range); /* 749 */
-   void (GLAPIENTRYP PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle); /* 750 */
-   void (GLAPIENTRYP SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle); /* 751 */
-   void (GLAPIENTRYP SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value); /* 752 */
-   void (GLAPIENTRYP PointParameteriNV)(GLenum pname, GLint param); /* 753 */
-   void (GLAPIENTRYP PointParameterivNV)(GLenum pname, const GLint * params); /* 754 */
-   void (GLAPIENTRYP ActiveStencilFaceEXT)(GLenum face); /* 755 */
-   void (GLAPIENTRYP BindVertexArrayAPPLE)(GLuint array); /* 756 */
-   void (GLAPIENTRYP DeleteVertexArraysAPPLE)(GLsizei n, const GLuint * arrays); /* 757 */
-   void (GLAPIENTRYP GenVertexArraysAPPLE)(GLsizei n, GLuint * arrays); /* 758 */
-   GLboolean (GLAPIENTRYP IsVertexArrayAPPLE)(GLuint array); /* 759 */
-   void (GLAPIENTRYP GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params); /* 760 */
-   void (GLAPIENTRYP GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params); /* 761 */
-   void (GLAPIENTRYP ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w); /* 762 */
-   void (GLAPIENTRYP ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v); /* 763 */
-   void (GLAPIENTRYP ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w); /* 764 */
-   void (GLAPIENTRYP ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v); /* 765 */
-   void (GLAPIENTRYP DepthBoundsEXT)(GLclampd zmin, GLclampd zmax); /* 766 */
-   void (GLAPIENTRYP BlendEquationSeparateEXT)(GLenum modeRGB, GLenum modeA); /* 767 */
-   void (GLAPIENTRYP BindFramebufferEXT)(GLenum target, GLuint framebuffer); /* 768 */
-   void (GLAPIENTRYP BindRenderbufferEXT)(GLenum target, GLuint renderbuffer); /* 769 */
-   GLenum (GLAPIENTRYP CheckFramebufferStatusEXT)(GLenum target); /* 770 */
-   void (GLAPIENTRYP DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers); /* 771 */
-   void (GLAPIENTRYP DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers); /* 772 */
-   void (GLAPIENTRYP FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); /* 773 */
-   void (GLAPIENTRYP FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 774 */
-   void (GLAPIENTRYP FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); /* 775 */
-   void (GLAPIENTRYP FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset); /* 776 */
-   void (GLAPIENTRYP GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers); /* 777 */
-   void (GLAPIENTRYP GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers); /* 778 */
-   void (GLAPIENTRYP GenerateMipmapEXT)(GLenum target); /* 779 */
-   void (GLAPIENTRYP GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params); /* 780 */
-   void (GLAPIENTRYP GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params); /* 781 */
-   GLboolean (GLAPIENTRYP IsFramebufferEXT)(GLuint framebuffer); /* 782 */
-   GLboolean (GLAPIENTRYP IsRenderbufferEXT)(GLuint renderbuffer); /* 783 */
-   void (GLAPIENTRYP RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height); /* 784 */
-   void (GLAPIENTRYP BlitFramebufferEXT)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); /* 785 */
-   void (GLAPIENTRYP BufferParameteriAPPLE)(GLenum target, GLenum pname, GLint param); /* 786 */
-   void (GLAPIENTRYP FlushMappedBufferRangeAPPLE)(GLenum target, GLintptr offset, GLsizeiptr size); /* 787 */
-   void (GLAPIENTRYP FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer); /* 788 */
-   void (GLAPIENTRYP ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a); /* 789 */
-   void (GLAPIENTRYP DisableIndexedEXT)(GLenum target, GLuint index); /* 790 */
-   void (GLAPIENTRYP EnableIndexedEXT)(GLenum target, GLuint index); /* 791 */
-   void (GLAPIENTRYP GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data); /* 792 */
-   void (GLAPIENTRYP GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data); /* 793 */
-   GLboolean (GLAPIENTRYP IsEnabledIndexedEXT)(GLenum target, GLuint index); /* 794 */
-   void (GLAPIENTRYP BeginConditionalRenderNV)(GLuint query, GLenum mode); /* 795 */
-   void (GLAPIENTRYP EndConditionalRenderNV)(void); /* 796 */
-   void (GLAPIENTRYP BeginTransformFeedbackEXT)(GLenum mode); /* 797 */
-   void (GLAPIENTRYP BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer); /* 798 */
-   void (GLAPIENTRYP BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset); /* 799 */
-   void (GLAPIENTRYP BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size); /* 800 */
-   void (GLAPIENTRYP EndTransformFeedbackEXT)(void); /* 801 */
-   void (GLAPIENTRYP GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name); /* 802 */
-   void (GLAPIENTRYP TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode); /* 803 */
-   void (GLAPIENTRYP ProvokingVertexEXT)(GLenum mode); /* 804 */
-   void (GLAPIENTRYP GetTexParameterPointervAPPLE)(GLenum target, GLenum pname, GLvoid ** params); /* 805 */
-   void (GLAPIENTRYP TextureRangeAPPLE)(GLenum target, GLsizei length, GLvoid * pointer); /* 806 */
-   void (GLAPIENTRYP GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value); /* 807 */
-   GLenum (GLAPIENTRYP ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 808 */
-   GLenum (GLAPIENTRYP ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option); /* 809 */
-   void (GLAPIENTRYP StencilFuncSeparateATI)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask); /* 810 */
-   void (GLAPIENTRYP ProgramEnvParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 811 */
-   void (GLAPIENTRYP ProgramLocalParameters4fvEXT)(GLenum target, GLuint index, GLsizei count, const GLfloat * params); /* 812 */
-   void (GLAPIENTRYP GetQueryObjecti64vEXT)(GLuint id, GLenum pname, GLint64EXT * params); /* 813 */
-   void (GLAPIENTRYP GetQueryObjectui64vEXT)(GLuint id, GLenum pname, GLuint64EXT * params); /* 814 */
-   void (GLAPIENTRYP EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset); /* 815 */
-   void (GLAPIENTRYP EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset); /* 816 */
-};
-
-#endif /* !defined( _GLAPI_TABLE_H_ ) */
diff --git a/src/mesa/glapi/glapitemp.h b/src/mesa/glapi/glapitemp.h
deleted file mode 100644 (file)
index 3ed337f..0000000
+++ /dev/null
@@ -1,7144 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_apitemp.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
- * (C) Copyright IBM Corporation 2004
- * 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
- * BRIAN PAUL, 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.
- */
-
-
-#  if defined(__GNUC__) || (defined(__SUNPRO_C) && (__SUNPRO_C >= 0x590)) && defined(__ELF__)
-#    define HIDDEN  __attribute__((visibility("hidden")))
-#  else
-#    define HIDDEN
-#  endif
-
-/*
- * This file is a template which generates the OpenGL API entry point
- * functions.  It should be included by a .c file which first defines
- * the following macros:
- *   KEYWORD1 - usually nothing, but might be __declspec(dllexport) on Win32
- *   KEYWORD2 - usually nothing, but might be __stdcall on Win32
- *   NAME(n)  - builds the final function name (usually add "gl" prefix)
- *   DISPATCH(func, args, msg) - code to do dispatch of named function.
- *                               msg is a printf-style debug message.
- *   RETURN_DISPATCH(func, args, msg) - code to do dispatch with a return value
- *
- * Here is an example which generates the usual OpenGL functions:
- *   #define KEYWORD1
- *   #define KEYWORD2
- *   #define NAME(func)  gl##func
- *   #define DISPATCH(func, args, msg)                           \
- *          struct _glapi_table *dispatch = CurrentDispatch;     \
- *          (*dispatch->func) args
- *   #define RETURN DISPATCH(func, args, msg)                    \
- *          struct _glapi_table *dispatch = CurrentDispatch;     \
- *          return (*dispatch->func) args
- *
- */
-
-
-#if defined( NAME )
-#ifndef KEYWORD1
-#define KEYWORD1
-#endif
-
-#ifndef KEYWORD1_ALT
-#define KEYWORD1_ALT HIDDEN
-#endif
-
-#ifndef KEYWORD2
-#define KEYWORD2
-#endif
-
-#ifndef DISPATCH
-#error DISPATCH must be defined
-#endif
-
-#ifndef RETURN_DISPATCH
-#error RETURN_DISPATCH must be defined
-#endif
-
-
-#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
-
-KEYWORD1 void KEYWORD2 NAME(NewList)(GLuint list, GLenum mode)
-{
-   DISPATCH(NewList, (list, mode), (F, "glNewList(%d, 0x%x);\n", list, mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndList)(void)
-{
-   DISPATCH(EndList, (), (F, "glEndList();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CallList)(GLuint list)
-{
-   DISPATCH(CallList, (list), (F, "glCallList(%d);\n", list));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CallLists)(GLsizei n, GLenum type, const GLvoid * lists)
-{
-   DISPATCH(CallLists, (n, type, lists), (F, "glCallLists(%d, 0x%x, %p);\n", n, type, (const void *) lists));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteLists)(GLuint list, GLsizei range)
-{
-   DISPATCH(DeleteLists, (list, range), (F, "glDeleteLists(%d, %d);\n", list, range));
-}
-
-KEYWORD1 GLuint KEYWORD2 NAME(GenLists)(GLsizei range)
-{
-   RETURN_DISPATCH(GenLists, (range), (F, "glGenLists(%d);\n", range));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ListBase)(GLuint base)
-{
-   DISPATCH(ListBase, (base), (F, "glListBase(%d);\n", base));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Begin)(GLenum mode)
-{
-   DISPATCH(Begin, (mode), (F, "glBegin(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Bitmap)(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte * bitmap)
-{
-   DISPATCH(Bitmap, (width, height, xorig, yorig, xmove, ymove, bitmap), (F, "glBitmap(%d, %d, %f, %f, %f, %f, %p);\n", width, height, xorig, yorig, xmove, ymove, (const void *) bitmap));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3b)(GLbyte red, GLbyte green, GLbyte blue)
-{
-   DISPATCH(Color3b, (red, green, blue), (F, "glColor3b(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3bv)(const GLbyte * v)
-{
-   DISPATCH(Color3bv, (v), (F, "glColor3bv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3d)(GLdouble red, GLdouble green, GLdouble blue)
-{
-   DISPATCH(Color3d, (red, green, blue), (F, "glColor3d(%f, %f, %f);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3dv)(const GLdouble * v)
-{
-   DISPATCH(Color3dv, (v), (F, "glColor3dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3f)(GLfloat red, GLfloat green, GLfloat blue)
-{
-   DISPATCH(Color3f, (red, green, blue), (F, "glColor3f(%f, %f, %f);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3fv)(const GLfloat * v)
-{
-   DISPATCH(Color3fv, (v), (F, "glColor3fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3i)(GLint red, GLint green, GLint blue)
-{
-   DISPATCH(Color3i, (red, green, blue), (F, "glColor3i(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3iv)(const GLint * v)
-{
-   DISPATCH(Color3iv, (v), (F, "glColor3iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3s)(GLshort red, GLshort green, GLshort blue)
-{
-   DISPATCH(Color3s, (red, green, blue), (F, "glColor3s(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3sv)(const GLshort * v)
-{
-   DISPATCH(Color3sv, (v), (F, "glColor3sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3ub)(GLubyte red, GLubyte green, GLubyte blue)
-{
-   DISPATCH(Color3ub, (red, green, blue), (F, "glColor3ub(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3ubv)(const GLubyte * v)
-{
-   DISPATCH(Color3ubv, (v), (F, "glColor3ubv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3ui)(GLuint red, GLuint green, GLuint blue)
-{
-   DISPATCH(Color3ui, (red, green, blue), (F, "glColor3ui(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3uiv)(const GLuint * v)
-{
-   DISPATCH(Color3uiv, (v), (F, "glColor3uiv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3us)(GLushort red, GLushort green, GLushort blue)
-{
-   DISPATCH(Color3us, (red, green, blue), (F, "glColor3us(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color3usv)(const GLushort * v)
-{
-   DISPATCH(Color3usv, (v), (F, "glColor3usv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4b)(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha)
-{
-   DISPATCH(Color4b, (red, green, blue, alpha), (F, "glColor4b(%d, %d, %d, %d);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4bv)(const GLbyte * v)
-{
-   DISPATCH(Color4bv, (v), (F, "glColor4bv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4d)(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha)
-{
-   DISPATCH(Color4d, (red, green, blue, alpha), (F, "glColor4d(%f, %f, %f, %f);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4dv)(const GLdouble * v)
-{
-   DISPATCH(Color4dv, (v), (F, "glColor4dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4f)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
-{
-   DISPATCH(Color4f, (red, green, blue, alpha), (F, "glColor4f(%f, %f, %f, %f);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4fv)(const GLfloat * v)
-{
-   DISPATCH(Color4fv, (v), (F, "glColor4fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4i)(GLint red, GLint green, GLint blue, GLint alpha)
-{
-   DISPATCH(Color4i, (red, green, blue, alpha), (F, "glColor4i(%d, %d, %d, %d);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4iv)(const GLint * v)
-{
-   DISPATCH(Color4iv, (v), (F, "glColor4iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4s)(GLshort red, GLshort green, GLshort blue, GLshort alpha)
-{
-   DISPATCH(Color4s, (red, green, blue, alpha), (F, "glColor4s(%d, %d, %d, %d);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4sv)(const GLshort * v)
-{
-   DISPATCH(Color4sv, (v), (F, "glColor4sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4ub)(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha)
-{
-   DISPATCH(Color4ub, (red, green, blue, alpha), (F, "glColor4ub(%d, %d, %d, %d);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4ubv)(const GLubyte * v)
-{
-   DISPATCH(Color4ubv, (v), (F, "glColor4ubv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4ui)(GLuint red, GLuint green, GLuint blue, GLuint alpha)
-{
-   DISPATCH(Color4ui, (red, green, blue, alpha), (F, "glColor4ui(%d, %d, %d, %d);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4uiv)(const GLuint * v)
-{
-   DISPATCH(Color4uiv, (v), (F, "glColor4uiv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4us)(GLushort red, GLushort green, GLushort blue, GLushort alpha)
-{
-   DISPATCH(Color4us, (red, green, blue, alpha), (F, "glColor4us(%d, %d, %d, %d);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Color4usv)(const GLushort * v)
-{
-   DISPATCH(Color4usv, (v), (F, "glColor4usv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EdgeFlag)(GLboolean flag)
-{
-   DISPATCH(EdgeFlag, (flag), (F, "glEdgeFlag(%d);\n", flag));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EdgeFlagv)(const GLboolean * flag)
-{
-   DISPATCH(EdgeFlagv, (flag), (F, "glEdgeFlagv(%p);\n", (const void *) flag));
-}
-
-KEYWORD1 void KEYWORD2 NAME(End)(void)
-{
-   DISPATCH(End, (), (F, "glEnd();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexd)(GLdouble c)
-{
-   DISPATCH(Indexd, (c), (F, "glIndexd(%f);\n", c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexdv)(const GLdouble * c)
-{
-   DISPATCH(Indexdv, (c), (F, "glIndexdv(%p);\n", (const void *) c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexf)(GLfloat c)
-{
-   DISPATCH(Indexf, (c), (F, "glIndexf(%f);\n", c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexfv)(const GLfloat * c)
-{
-   DISPATCH(Indexfv, (c), (F, "glIndexfv(%p);\n", (const void *) c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexi)(GLint c)
-{
-   DISPATCH(Indexi, (c), (F, "glIndexi(%d);\n", c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexiv)(const GLint * c)
-{
-   DISPATCH(Indexiv, (c), (F, "glIndexiv(%p);\n", (const void *) c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexs)(GLshort c)
-{
-   DISPATCH(Indexs, (c), (F, "glIndexs(%d);\n", c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexsv)(const GLshort * c)
-{
-   DISPATCH(Indexsv, (c), (F, "glIndexsv(%p);\n", (const void *) c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3b)(GLbyte nx, GLbyte ny, GLbyte nz)
-{
-   DISPATCH(Normal3b, (nx, ny, nz), (F, "glNormal3b(%d, %d, %d);\n", nx, ny, nz));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3bv)(const GLbyte * v)
-{
-   DISPATCH(Normal3bv, (v), (F, "glNormal3bv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3d)(GLdouble nx, GLdouble ny, GLdouble nz)
-{
-   DISPATCH(Normal3d, (nx, ny, nz), (F, "glNormal3d(%f, %f, %f);\n", nx, ny, nz));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3dv)(const GLdouble * v)
-{
-   DISPATCH(Normal3dv, (v), (F, "glNormal3dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3f)(GLfloat nx, GLfloat ny, GLfloat nz)
-{
-   DISPATCH(Normal3f, (nx, ny, nz), (F, "glNormal3f(%f, %f, %f);\n", nx, ny, nz));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3fv)(const GLfloat * v)
-{
-   DISPATCH(Normal3fv, (v), (F, "glNormal3fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3i)(GLint nx, GLint ny, GLint nz)
-{
-   DISPATCH(Normal3i, (nx, ny, nz), (F, "glNormal3i(%d, %d, %d);\n", nx, ny, nz));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3iv)(const GLint * v)
-{
-   DISPATCH(Normal3iv, (v), (F, "glNormal3iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3s)(GLshort nx, GLshort ny, GLshort nz)
-{
-   DISPATCH(Normal3s, (nx, ny, nz), (F, "glNormal3s(%d, %d, %d);\n", nx, ny, nz));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Normal3sv)(const GLshort * v)
-{
-   DISPATCH(Normal3sv, (v), (F, "glNormal3sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2d)(GLdouble x, GLdouble y)
-{
-   DISPATCH(RasterPos2d, (x, y), (F, "glRasterPos2d(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2dv)(const GLdouble * v)
-{
-   DISPATCH(RasterPos2dv, (v), (F, "glRasterPos2dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2f)(GLfloat x, GLfloat y)
-{
-   DISPATCH(RasterPos2f, (x, y), (F, "glRasterPos2f(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2fv)(const GLfloat * v)
-{
-   DISPATCH(RasterPos2fv, (v), (F, "glRasterPos2fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2i)(GLint x, GLint y)
-{
-   DISPATCH(RasterPos2i, (x, y), (F, "glRasterPos2i(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2iv)(const GLint * v)
-{
-   DISPATCH(RasterPos2iv, (v), (F, "glRasterPos2iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2s)(GLshort x, GLshort y)
-{
-   DISPATCH(RasterPos2s, (x, y), (F, "glRasterPos2s(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos2sv)(const GLshort * v)
-{
-   DISPATCH(RasterPos2sv, (v), (F, "glRasterPos2sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3d)(GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(RasterPos3d, (x, y, z), (F, "glRasterPos3d(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3dv)(const GLdouble * v)
-{
-   DISPATCH(RasterPos3dv, (v), (F, "glRasterPos3dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3f)(GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(RasterPos3f, (x, y, z), (F, "glRasterPos3f(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3fv)(const GLfloat * v)
-{
-   DISPATCH(RasterPos3fv, (v), (F, "glRasterPos3fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3i)(GLint x, GLint y, GLint z)
-{
-   DISPATCH(RasterPos3i, (x, y, z), (F, "glRasterPos3i(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3iv)(const GLint * v)
-{
-   DISPATCH(RasterPos3iv, (v), (F, "glRasterPos3iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3s)(GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(RasterPos3s, (x, y, z), (F, "glRasterPos3s(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos3sv)(const GLshort * v)
-{
-   DISPATCH(RasterPos3sv, (v), (F, "glRasterPos3sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(RasterPos4d, (x, y, z, w), (F, "glRasterPos4d(%f, %f, %f, %f);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4dv)(const GLdouble * v)
-{
-   DISPATCH(RasterPos4dv, (v), (F, "glRasterPos4dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(RasterPos4f, (x, y, z, w), (F, "glRasterPos4f(%f, %f, %f, %f);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4fv)(const GLfloat * v)
-{
-   DISPATCH(RasterPos4fv, (v), (F, "glRasterPos4fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4i)(GLint x, GLint y, GLint z, GLint w)
-{
-   DISPATCH(RasterPos4i, (x, y, z, w), (F, "glRasterPos4i(%d, %d, %d, %d);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4iv)(const GLint * v)
-{
-   DISPATCH(RasterPos4iv, (v), (F, "glRasterPos4iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4s)(GLshort x, GLshort y, GLshort z, GLshort w)
-{
-   DISPATCH(RasterPos4s, (x, y, z, w), (F, "glRasterPos4s(%d, %d, %d, %d);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RasterPos4sv)(const GLshort * v)
-{
-   DISPATCH(RasterPos4sv, (v), (F, "glRasterPos4sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rectd)(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2)
-{
-   DISPATCH(Rectd, (x1, y1, x2, y2), (F, "glRectd(%f, %f, %f, %f);\n", x1, y1, x2, y2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rectdv)(const GLdouble * v1, const GLdouble * v2)
-{
-   DISPATCH(Rectdv, (v1, v2), (F, "glRectdv(%p, %p);\n", (const void *) v1, (const void *) v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rectf)(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2)
-{
-   DISPATCH(Rectf, (x1, y1, x2, y2), (F, "glRectf(%f, %f, %f, %f);\n", x1, y1, x2, y2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rectfv)(const GLfloat * v1, const GLfloat * v2)
-{
-   DISPATCH(Rectfv, (v1, v2), (F, "glRectfv(%p, %p);\n", (const void *) v1, (const void *) v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Recti)(GLint x1, GLint y1, GLint x2, GLint y2)
-{
-   DISPATCH(Recti, (x1, y1, x2, y2), (F, "glRecti(%d, %d, %d, %d);\n", x1, y1, x2, y2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rectiv)(const GLint * v1, const GLint * v2)
-{
-   DISPATCH(Rectiv, (v1, v2), (F, "glRectiv(%p, %p);\n", (const void *) v1, (const void *) v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rects)(GLshort x1, GLshort y1, GLshort x2, GLshort y2)
-{
-   DISPATCH(Rects, (x1, y1, x2, y2), (F, "glRects(%d, %d, %d, %d);\n", x1, y1, x2, y2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rectsv)(const GLshort * v1, const GLshort * v2)
-{
-   DISPATCH(Rectsv, (v1, v2), (F, "glRectsv(%p, %p);\n", (const void *) v1, (const void *) v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1d)(GLdouble s)
-{
-   DISPATCH(TexCoord1d, (s), (F, "glTexCoord1d(%f);\n", s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1dv)(const GLdouble * v)
-{
-   DISPATCH(TexCoord1dv, (v), (F, "glTexCoord1dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1f)(GLfloat s)
-{
-   DISPATCH(TexCoord1f, (s), (F, "glTexCoord1f(%f);\n", s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1fv)(const GLfloat * v)
-{
-   DISPATCH(TexCoord1fv, (v), (F, "glTexCoord1fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1i)(GLint s)
-{
-   DISPATCH(TexCoord1i, (s), (F, "glTexCoord1i(%d);\n", s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1iv)(const GLint * v)
-{
-   DISPATCH(TexCoord1iv, (v), (F, "glTexCoord1iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1s)(GLshort s)
-{
-   DISPATCH(TexCoord1s, (s), (F, "glTexCoord1s(%d);\n", s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord1sv)(const GLshort * v)
-{
-   DISPATCH(TexCoord1sv, (v), (F, "glTexCoord1sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2d)(GLdouble s, GLdouble t)
-{
-   DISPATCH(TexCoord2d, (s, t), (F, "glTexCoord2d(%f, %f);\n", s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2dv)(const GLdouble * v)
-{
-   DISPATCH(TexCoord2dv, (v), (F, "glTexCoord2dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2f)(GLfloat s, GLfloat t)
-{
-   DISPATCH(TexCoord2f, (s, t), (F, "glTexCoord2f(%f, %f);\n", s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2fv)(const GLfloat * v)
-{
-   DISPATCH(TexCoord2fv, (v), (F, "glTexCoord2fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2i)(GLint s, GLint t)
-{
-   DISPATCH(TexCoord2i, (s, t), (F, "glTexCoord2i(%d, %d);\n", s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2iv)(const GLint * v)
-{
-   DISPATCH(TexCoord2iv, (v), (F, "glTexCoord2iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2s)(GLshort s, GLshort t)
-{
-   DISPATCH(TexCoord2s, (s, t), (F, "glTexCoord2s(%d, %d);\n", s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord2sv)(const GLshort * v)
-{
-   DISPATCH(TexCoord2sv, (v), (F, "glTexCoord2sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3d)(GLdouble s, GLdouble t, GLdouble r)
-{
-   DISPATCH(TexCoord3d, (s, t, r), (F, "glTexCoord3d(%f, %f, %f);\n", s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3dv)(const GLdouble * v)
-{
-   DISPATCH(TexCoord3dv, (v), (F, "glTexCoord3dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3f)(GLfloat s, GLfloat t, GLfloat r)
-{
-   DISPATCH(TexCoord3f, (s, t, r), (F, "glTexCoord3f(%f, %f, %f);\n", s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3fv)(const GLfloat * v)
-{
-   DISPATCH(TexCoord3fv, (v), (F, "glTexCoord3fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3i)(GLint s, GLint t, GLint r)
-{
-   DISPATCH(TexCoord3i, (s, t, r), (F, "glTexCoord3i(%d, %d, %d);\n", s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3iv)(const GLint * v)
-{
-   DISPATCH(TexCoord3iv, (v), (F, "glTexCoord3iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3s)(GLshort s, GLshort t, GLshort r)
-{
-   DISPATCH(TexCoord3s, (s, t, r), (F, "glTexCoord3s(%d, %d, %d);\n", s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord3sv)(const GLshort * v)
-{
-   DISPATCH(TexCoord3sv, (v), (F, "glTexCoord3sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4d)(GLdouble s, GLdouble t, GLdouble r, GLdouble q)
-{
-   DISPATCH(TexCoord4d, (s, t, r, q), (F, "glTexCoord4d(%f, %f, %f, %f);\n", s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4dv)(const GLdouble * v)
-{
-   DISPATCH(TexCoord4dv, (v), (F, "glTexCoord4dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4f)(GLfloat s, GLfloat t, GLfloat r, GLfloat q)
-{
-   DISPATCH(TexCoord4f, (s, t, r, q), (F, "glTexCoord4f(%f, %f, %f, %f);\n", s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4fv)(const GLfloat * v)
-{
-   DISPATCH(TexCoord4fv, (v), (F, "glTexCoord4fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4i)(GLint s, GLint t, GLint r, GLint q)
-{
-   DISPATCH(TexCoord4i, (s, t, r, q), (F, "glTexCoord4i(%d, %d, %d, %d);\n", s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4iv)(const GLint * v)
-{
-   DISPATCH(TexCoord4iv, (v), (F, "glTexCoord4iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4s)(GLshort s, GLshort t, GLshort r, GLshort q)
-{
-   DISPATCH(TexCoord4s, (s, t, r, q), (F, "glTexCoord4s(%d, %d, %d, %d);\n", s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoord4sv)(const GLshort * v)
-{
-   DISPATCH(TexCoord4sv, (v), (F, "glTexCoord4sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2d)(GLdouble x, GLdouble y)
-{
-   DISPATCH(Vertex2d, (x, y), (F, "glVertex2d(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2dv)(const GLdouble * v)
-{
-   DISPATCH(Vertex2dv, (v), (F, "glVertex2dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2f)(GLfloat x, GLfloat y)
-{
-   DISPATCH(Vertex2f, (x, y), (F, "glVertex2f(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2fv)(const GLfloat * v)
-{
-   DISPATCH(Vertex2fv, (v), (F, "glVertex2fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2i)(GLint x, GLint y)
-{
-   DISPATCH(Vertex2i, (x, y), (F, "glVertex2i(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2iv)(const GLint * v)
-{
-   DISPATCH(Vertex2iv, (v), (F, "glVertex2iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2s)(GLshort x, GLshort y)
-{
-   DISPATCH(Vertex2s, (x, y), (F, "glVertex2s(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex2sv)(const GLshort * v)
-{
-   DISPATCH(Vertex2sv, (v), (F, "glVertex2sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3d)(GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(Vertex3d, (x, y, z), (F, "glVertex3d(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3dv)(const GLdouble * v)
-{
-   DISPATCH(Vertex3dv, (v), (F, "glVertex3dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3f)(GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(Vertex3f, (x, y, z), (F, "glVertex3f(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3fv)(const GLfloat * v)
-{
-   DISPATCH(Vertex3fv, (v), (F, "glVertex3fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3i)(GLint x, GLint y, GLint z)
-{
-   DISPATCH(Vertex3i, (x, y, z), (F, "glVertex3i(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3iv)(const GLint * v)
-{
-   DISPATCH(Vertex3iv, (v), (F, "glVertex3iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3s)(GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(Vertex3s, (x, y, z), (F, "glVertex3s(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex3sv)(const GLshort * v)
-{
-   DISPATCH(Vertex3sv, (v), (F, "glVertex3sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4d)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(Vertex4d, (x, y, z, w), (F, "glVertex4d(%f, %f, %f, %f);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4dv)(const GLdouble * v)
-{
-   DISPATCH(Vertex4dv, (v), (F, "glVertex4dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4f)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(Vertex4f, (x, y, z, w), (F, "glVertex4f(%f, %f, %f, %f);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4fv)(const GLfloat * v)
-{
-   DISPATCH(Vertex4fv, (v), (F, "glVertex4fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4i)(GLint x, GLint y, GLint z, GLint w)
-{
-   DISPATCH(Vertex4i, (x, y, z, w), (F, "glVertex4i(%d, %d, %d, %d);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4iv)(const GLint * v)
-{
-   DISPATCH(Vertex4iv, (v), (F, "glVertex4iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4s)(GLshort x, GLshort y, GLshort z, GLshort w)
-{
-   DISPATCH(Vertex4s, (x, y, z, w), (F, "glVertex4s(%d, %d, %d, %d);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Vertex4sv)(const GLshort * v)
-{
-   DISPATCH(Vertex4sv, (v), (F, "glVertex4sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClipPlane)(GLenum plane, const GLdouble * equation)
-{
-   DISPATCH(ClipPlane, (plane, equation), (F, "glClipPlane(0x%x, %p);\n", plane, (const void *) equation));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorMaterial)(GLenum face, GLenum mode)
-{
-   DISPATCH(ColorMaterial, (face, mode), (F, "glColorMaterial(0x%x, 0x%x);\n", face, mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CullFace)(GLenum mode)
-{
-   DISPATCH(CullFace, (mode), (F, "glCullFace(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Fogf)(GLenum pname, GLfloat param)
-{
-   DISPATCH(Fogf, (pname, param), (F, "glFogf(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Fogfv)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(Fogfv, (pname, params), (F, "glFogfv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Fogi)(GLenum pname, GLint param)
-{
-   DISPATCH(Fogi, (pname, param), (F, "glFogi(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Fogiv)(GLenum pname, const GLint * params)
-{
-   DISPATCH(Fogiv, (pname, params), (F, "glFogiv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FrontFace)(GLenum mode)
-{
-   DISPATCH(FrontFace, (mode), (F, "glFrontFace(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Hint)(GLenum target, GLenum mode)
-{
-   DISPATCH(Hint, (target, mode), (F, "glHint(0x%x, 0x%x);\n", target, mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Lightf)(GLenum light, GLenum pname, GLfloat param)
-{
-   DISPATCH(Lightf, (light, pname, param), (F, "glLightf(0x%x, 0x%x, %f);\n", light, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Lightfv)(GLenum light, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(Lightfv, (light, pname, params), (F, "glLightfv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Lighti)(GLenum light, GLenum pname, GLint param)
-{
-   DISPATCH(Lighti, (light, pname, param), (F, "glLighti(0x%x, 0x%x, %d);\n", light, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Lightiv)(GLenum light, GLenum pname, const GLint * params)
-{
-   DISPATCH(Lightiv, (light, pname, params), (F, "glLightiv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LightModelf)(GLenum pname, GLfloat param)
-{
-   DISPATCH(LightModelf, (pname, param), (F, "glLightModelf(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LightModelfv)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(LightModelfv, (pname, params), (F, "glLightModelfv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LightModeli)(GLenum pname, GLint param)
-{
-   DISPATCH(LightModeli, (pname, param), (F, "glLightModeli(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LightModeliv)(GLenum pname, const GLint * params)
-{
-   DISPATCH(LightModeliv, (pname, params), (F, "glLightModeliv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LineStipple)(GLint factor, GLushort pattern)
-{
-   DISPATCH(LineStipple, (factor, pattern), (F, "glLineStipple(%d, %d);\n", factor, pattern));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LineWidth)(GLfloat width)
-{
-   DISPATCH(LineWidth, (width), (F, "glLineWidth(%f);\n", width));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Materialf)(GLenum face, GLenum pname, GLfloat param)
-{
-   DISPATCH(Materialf, (face, pname, param), (F, "glMaterialf(0x%x, 0x%x, %f);\n", face, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Materialfv)(GLenum face, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(Materialfv, (face, pname, params), (F, "glMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Materiali)(GLenum face, GLenum pname, GLint param)
-{
-   DISPATCH(Materiali, (face, pname, param), (F, "glMateriali(0x%x, 0x%x, %d);\n", face, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Materialiv)(GLenum face, GLenum pname, const GLint * params)
-{
-   DISPATCH(Materialiv, (face, pname, params), (F, "glMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointSize)(GLfloat size)
-{
-   DISPATCH(PointSize, (size), (F, "glPointSize(%f);\n", size));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PolygonMode)(GLenum face, GLenum mode)
-{
-   DISPATCH(PolygonMode, (face, mode), (F, "glPolygonMode(0x%x, 0x%x);\n", face, mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PolygonStipple)(const GLubyte * mask)
-{
-   DISPATCH(PolygonStipple, (mask), (F, "glPolygonStipple(%p);\n", (const void *) mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Scissor)(GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(Scissor, (x, y, width, height), (F, "glScissor(%d, %d, %d, %d);\n", x, y, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ShadeModel)(GLenum mode)
-{
-   DISPATCH(ShadeModel, (mode), (F, "glShadeModel(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexParameterf)(GLenum target, GLenum pname, GLfloat param)
-{
-   DISPATCH(TexParameterf, (target, pname, param), (F, "glTexParameterf(0x%x, 0x%x, %f);\n", target, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(TexParameterfv, (target, pname, params), (F, "glTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexParameteri)(GLenum target, GLenum pname, GLint param)
-{
-   DISPATCH(TexParameteri, (target, pname, param), (F, "glTexParameteri(0x%x, 0x%x, %d);\n", target, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexParameteriv)(GLenum target, GLenum pname, const GLint * params)
-{
-   DISPATCH(TexParameteriv, (target, pname, params), (F, "glTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexImage1D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexImage1D, (target, level, internalformat, width, border, format, type, pixels), (F, "glTexImage1D(0x%x, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, border, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexImage2D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexImage2D, (target, level, internalformat, width, height, border, format, type, pixels), (F, "glTexImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, border, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexEnvf)(GLenum target, GLenum pname, GLfloat param)
-{
-   DISPATCH(TexEnvf, (target, pname, param), (F, "glTexEnvf(0x%x, 0x%x, %f);\n", target, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexEnvfv)(GLenum target, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(TexEnvfv, (target, pname, params), (F, "glTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexEnvi)(GLenum target, GLenum pname, GLint param)
-{
-   DISPATCH(TexEnvi, (target, pname, param), (F, "glTexEnvi(0x%x, 0x%x, %d);\n", target, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexEnviv)(GLenum target, GLenum pname, const GLint * params)
-{
-   DISPATCH(TexEnviv, (target, pname, params), (F, "glTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexGend)(GLenum coord, GLenum pname, GLdouble param)
-{
-   DISPATCH(TexGend, (coord, pname, param), (F, "glTexGend(0x%x, 0x%x, %f);\n", coord, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexGendv)(GLenum coord, GLenum pname, const GLdouble * params)
-{
-   DISPATCH(TexGendv, (coord, pname, params), (F, "glTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexGenf)(GLenum coord, GLenum pname, GLfloat param)
-{
-   DISPATCH(TexGenf, (coord, pname, param), (F, "glTexGenf(0x%x, 0x%x, %f);\n", coord, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexGenfv)(GLenum coord, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(TexGenfv, (coord, pname, params), (F, "glTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexGeni)(GLenum coord, GLenum pname, GLint param)
-{
-   DISPATCH(TexGeni, (coord, pname, param), (F, "glTexGeni(0x%x, 0x%x, %d);\n", coord, pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexGeniv)(GLenum coord, GLenum pname, const GLint * params)
-{
-   DISPATCH(TexGeniv, (coord, pname, params), (F, "glTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FeedbackBuffer)(GLsizei size, GLenum type, GLfloat * buffer)
-{
-   DISPATCH(FeedbackBuffer, (size, type, buffer), (F, "glFeedbackBuffer(%d, 0x%x, %p);\n", size, type, (const void *) buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SelectBuffer)(GLsizei size, GLuint * buffer)
-{
-   DISPATCH(SelectBuffer, (size, buffer), (F, "glSelectBuffer(%d, %p);\n", size, (const void *) buffer));
-}
-
-KEYWORD1 GLint KEYWORD2 NAME(RenderMode)(GLenum mode)
-{
-   RETURN_DISPATCH(RenderMode, (mode), (F, "glRenderMode(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(InitNames)(void)
-{
-   DISPATCH(InitNames, (), (F, "glInitNames();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadName)(GLuint name)
-{
-   DISPATCH(LoadName, (name), (F, "glLoadName(%d);\n", name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PassThrough)(GLfloat token)
-{
-   DISPATCH(PassThrough, (token), (F, "glPassThrough(%f);\n", token));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PopName)(void)
-{
-   DISPATCH(PopName, (), (F, "glPopName();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PushName)(GLuint name)
-{
-   DISPATCH(PushName, (name), (F, "glPushName(%d);\n", name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawBuffer)(GLenum mode)
-{
-   DISPATCH(DrawBuffer, (mode), (F, "glDrawBuffer(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Clear)(GLbitfield mask)
-{
-   DISPATCH(Clear, (mask), (F, "glClear(%d);\n", mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClearAccum)(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha)
-{
-   DISPATCH(ClearAccum, (red, green, blue, alpha), (F, "glClearAccum(%f, %f, %f, %f);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClearIndex)(GLfloat c)
-{
-   DISPATCH(ClearIndex, (c), (F, "glClearIndex(%f);\n", c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClearColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-{
-   DISPATCH(ClearColor, (red, green, blue, alpha), (F, "glClearColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClearStencil)(GLint s)
-{
-   DISPATCH(ClearStencil, (s), (F, "glClearStencil(%d);\n", s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClearDepth)(GLclampd depth)
-{
-   DISPATCH(ClearDepth, (depth), (F, "glClearDepth(%f);\n", depth));
-}
-
-KEYWORD1 void KEYWORD2 NAME(StencilMask)(GLuint mask)
-{
-   DISPATCH(StencilMask, (mask), (F, "glStencilMask(%d);\n", mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorMask)(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha)
-{
-   DISPATCH(ColorMask, (red, green, blue, alpha), (F, "glColorMask(%d, %d, %d, %d);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DepthMask)(GLboolean flag)
-{
-   DISPATCH(DepthMask, (flag), (F, "glDepthMask(%d);\n", flag));
-}
-
-KEYWORD1 void KEYWORD2 NAME(IndexMask)(GLuint mask)
-{
-   DISPATCH(IndexMask, (mask), (F, "glIndexMask(%d);\n", mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Accum)(GLenum op, GLfloat value)
-{
-   DISPATCH(Accum, (op, value), (F, "glAccum(0x%x, %f);\n", op, value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Disable)(GLenum cap)
-{
-   DISPATCH(Disable, (cap), (F, "glDisable(0x%x);\n", cap));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Enable)(GLenum cap)
-{
-   DISPATCH(Enable, (cap), (F, "glEnable(0x%x);\n", cap));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Finish)(void)
-{
-   DISPATCH(Finish, (), (F, "glFinish();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Flush)(void)
-{
-   DISPATCH(Flush, (), (F, "glFlush();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PopAttrib)(void)
-{
-   DISPATCH(PopAttrib, (), (F, "glPopAttrib();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PushAttrib)(GLbitfield mask)
-{
-   DISPATCH(PushAttrib, (mask), (F, "glPushAttrib(%d);\n", mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Map1d)(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble * points)
-{
-   DISPATCH(Map1d, (target, u1, u2, stride, order, points), (F, "glMap1d(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (const void *) points));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Map1f)(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat * points)
-{
-   DISPATCH(Map1f, (target, u1, u2, stride, order, points), (F, "glMap1f(0x%x, %f, %f, %d, %d, %p);\n", target, u1, u2, stride, order, (const void *) points));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Map2d)(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble * points)
-{
-   DISPATCH(Map2d, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2d(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (const void *) points));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Map2f)(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat * points)
-{
-   DISPATCH(Map2f, (target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, points), (F, "glMap2f(0x%x, %f, %f, %d, %d, %f, %f, %d, %d, %p);\n", target, u1, u2, ustride, uorder, v1, v2, vstride, vorder, (const void *) points));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MapGrid1d)(GLint un, GLdouble u1, GLdouble u2)
-{
-   DISPATCH(MapGrid1d, (un, u1, u2), (F, "glMapGrid1d(%d, %f, %f);\n", un, u1, u2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MapGrid1f)(GLint un, GLfloat u1, GLfloat u2)
-{
-   DISPATCH(MapGrid1f, (un, u1, u2), (F, "glMapGrid1f(%d, %f, %f);\n", un, u1, u2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MapGrid2d)(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2)
-{
-   DISPATCH(MapGrid2d, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2d(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MapGrid2f)(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2)
-{
-   DISPATCH(MapGrid2f, (un, u1, u2, vn, v1, v2), (F, "glMapGrid2f(%d, %f, %f, %d, %f, %f);\n", un, u1, u2, vn, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord1d)(GLdouble u)
-{
-   DISPATCH(EvalCoord1d, (u), (F, "glEvalCoord1d(%f);\n", u));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord1dv)(const GLdouble * u)
-{
-   DISPATCH(EvalCoord1dv, (u), (F, "glEvalCoord1dv(%p);\n", (const void *) u));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord1f)(GLfloat u)
-{
-   DISPATCH(EvalCoord1f, (u), (F, "glEvalCoord1f(%f);\n", u));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord1fv)(const GLfloat * u)
-{
-   DISPATCH(EvalCoord1fv, (u), (F, "glEvalCoord1fv(%p);\n", (const void *) u));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord2d)(GLdouble u, GLdouble v)
-{
-   DISPATCH(EvalCoord2d, (u, v), (F, "glEvalCoord2d(%f, %f);\n", u, v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord2dv)(const GLdouble * u)
-{
-   DISPATCH(EvalCoord2dv, (u), (F, "glEvalCoord2dv(%p);\n", (const void *) u));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord2f)(GLfloat u, GLfloat v)
-{
-   DISPATCH(EvalCoord2f, (u, v), (F, "glEvalCoord2f(%f, %f);\n", u, v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalCoord2fv)(const GLfloat * u)
-{
-   DISPATCH(EvalCoord2fv, (u), (F, "glEvalCoord2fv(%p);\n", (const void *) u));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalMesh1)(GLenum mode, GLint i1, GLint i2)
-{
-   DISPATCH(EvalMesh1, (mode, i1, i2), (F, "glEvalMesh1(0x%x, %d, %d);\n", mode, i1, i2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalPoint1)(GLint i)
-{
-   DISPATCH(EvalPoint1, (i), (F, "glEvalPoint1(%d);\n", i));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalMesh2)(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2)
-{
-   DISPATCH(EvalMesh2, (mode, i1, i2, j1, j2), (F, "glEvalMesh2(0x%x, %d, %d, %d, %d);\n", mode, i1, i2, j1, j2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EvalPoint2)(GLint i, GLint j)
-{
-   DISPATCH(EvalPoint2, (i, j), (F, "glEvalPoint2(%d, %d);\n", i, j));
-}
-
-KEYWORD1 void KEYWORD2 NAME(AlphaFunc)(GLenum func, GLclampf ref)
-{
-   DISPATCH(AlphaFunc, (func, ref), (F, "glAlphaFunc(0x%x, %f);\n", func, ref));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendFunc)(GLenum sfactor, GLenum dfactor)
-{
-   DISPATCH(BlendFunc, (sfactor, dfactor), (F, "glBlendFunc(0x%x, 0x%x);\n", sfactor, dfactor));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LogicOp)(GLenum opcode)
-{
-   DISPATCH(LogicOp, (opcode), (F, "glLogicOp(0x%x);\n", opcode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(StencilFunc)(GLenum func, GLint ref, GLuint mask)
-{
-   DISPATCH(StencilFunc, (func, ref, mask), (F, "glStencilFunc(0x%x, %d, %d);\n", func, ref, mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(StencilOp)(GLenum fail, GLenum zfail, GLenum zpass)
-{
-   DISPATCH(StencilOp, (fail, zfail, zpass), (F, "glStencilOp(0x%x, 0x%x, 0x%x);\n", fail, zfail, zpass));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DepthFunc)(GLenum func)
-{
-   DISPATCH(DepthFunc, (func), (F, "glDepthFunc(0x%x);\n", func));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelZoom)(GLfloat xfactor, GLfloat yfactor)
-{
-   DISPATCH(PixelZoom, (xfactor, yfactor), (F, "glPixelZoom(%f, %f);\n", xfactor, yfactor));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelTransferf)(GLenum pname, GLfloat param)
-{
-   DISPATCH(PixelTransferf, (pname, param), (F, "glPixelTransferf(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelTransferi)(GLenum pname, GLint param)
-{
-   DISPATCH(PixelTransferi, (pname, param), (F, "glPixelTransferi(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelStoref)(GLenum pname, GLfloat param)
-{
-   DISPATCH(PixelStoref, (pname, param), (F, "glPixelStoref(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelStorei)(GLenum pname, GLint param)
-{
-   DISPATCH(PixelStorei, (pname, param), (F, "glPixelStorei(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelMapfv)(GLenum map, GLsizei mapsize, const GLfloat * values)
-{
-   DISPATCH(PixelMapfv, (map, mapsize, values), (F, "glPixelMapfv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelMapuiv)(GLenum map, GLsizei mapsize, const GLuint * values)
-{
-   DISPATCH(PixelMapuiv, (map, mapsize, values), (F, "glPixelMapuiv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PixelMapusv)(GLenum map, GLsizei mapsize, const GLushort * values)
-{
-   DISPATCH(PixelMapusv, (map, mapsize, values), (F, "glPixelMapusv(0x%x, %d, %p);\n", map, mapsize, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ReadBuffer)(GLenum mode)
-{
-   DISPATCH(ReadBuffer, (mode), (F, "glReadBuffer(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type)
-{
-   DISPATCH(CopyPixels, (x, y, width, height, type), (F, "glCopyPixels(%d, %d, %d, %d, 0x%x);\n", x, y, width, height, type));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ReadPixels)(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid * pixels)
-{
-   DISPATCH(ReadPixels, (x, y, width, height, format, type, pixels), (F, "glReadPixels(%d, %d, %d, %d, 0x%x, 0x%x, %p);\n", x, y, width, height, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawPixels)(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(DrawPixels, (width, height, format, type, pixels), (F, "glDrawPixels(%d, %d, 0x%x, 0x%x, %p);\n", width, height, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBooleanv)(GLenum pname, GLboolean * params)
-{
-   DISPATCH(GetBooleanv, (pname, params), (F, "glGetBooleanv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetClipPlane)(GLenum plane, GLdouble * equation)
-{
-   DISPATCH(GetClipPlane, (plane, equation), (F, "glGetClipPlane(0x%x, %p);\n", plane, (const void *) equation));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetDoublev)(GLenum pname, GLdouble * params)
-{
-   DISPATCH(GetDoublev, (pname, params), (F, "glGetDoublev(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 GLenum KEYWORD2 NAME(GetError)(void)
-{
-   RETURN_DISPATCH(GetError, (), (F, "glGetError();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetFloatv)(GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetFloatv, (pname, params), (F, "glGetFloatv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetIntegerv)(GLenum pname, GLint * params)
-{
-   DISPATCH(GetIntegerv, (pname, params), (F, "glGetIntegerv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetLightfv)(GLenum light, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetLightfv, (light, pname, params), (F, "glGetLightfv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetLightiv)(GLenum light, GLenum pname, GLint * params)
-{
-   DISPATCH(GetLightiv, (light, pname, params), (F, "glGetLightiv(0x%x, 0x%x, %p);\n", light, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMapdv)(GLenum target, GLenum query, GLdouble * v)
-{
-   DISPATCH(GetMapdv, (target, query, v), (F, "glGetMapdv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMapfv)(GLenum target, GLenum query, GLfloat * v)
-{
-   DISPATCH(GetMapfv, (target, query, v), (F, "glGetMapfv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMapiv)(GLenum target, GLenum query, GLint * v)
-{
-   DISPATCH(GetMapiv, (target, query, v), (F, "glGetMapiv(0x%x, 0x%x, %p);\n", target, query, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMaterialfv)(GLenum face, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetMaterialfv, (face, pname, params), (F, "glGetMaterialfv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMaterialiv)(GLenum face, GLenum pname, GLint * params)
-{
-   DISPATCH(GetMaterialiv, (face, pname, params), (F, "glGetMaterialiv(0x%x, 0x%x, %p);\n", face, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetPixelMapfv)(GLenum map, GLfloat * values)
-{
-   DISPATCH(GetPixelMapfv, (map, values), (F, "glGetPixelMapfv(0x%x, %p);\n", map, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetPixelMapuiv)(GLenum map, GLuint * values)
-{
-   DISPATCH(GetPixelMapuiv, (map, values), (F, "glGetPixelMapuiv(0x%x, %p);\n", map, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetPixelMapusv)(GLenum map, GLushort * values)
-{
-   DISPATCH(GetPixelMapusv, (map, values), (F, "glGetPixelMapusv(0x%x, %p);\n", map, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetPolygonStipple)(GLubyte * mask)
-{
-   DISPATCH(GetPolygonStipple, (mask), (F, "glGetPolygonStipple(%p);\n", (const void *) mask));
-}
-
-KEYWORD1 const GLubyte * KEYWORD2 NAME(GetString)(GLenum name)
-{
-   RETURN_DISPATCH(GetString, (name), (F, "glGetString(0x%x);\n", name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexEnvfv)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetTexEnvfv, (target, pname, params), (F, "glGetTexEnvfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexEnviv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetTexEnviv, (target, pname, params), (F, "glGetTexEnviv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexGendv)(GLenum coord, GLenum pname, GLdouble * params)
-{
-   DISPATCH(GetTexGendv, (coord, pname, params), (F, "glGetTexGendv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexGenfv)(GLenum coord, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetTexGenfv, (coord, pname, params), (F, "glGetTexGenfv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexGeniv)(GLenum coord, GLenum pname, GLint * params)
-{
-   DISPATCH(GetTexGeniv, (coord, pname, params), (F, "glGetTexGeniv(0x%x, 0x%x, %p);\n", coord, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexImage)(GLenum target, GLint level, GLenum format, GLenum type, GLvoid * pixels)
-{
-   DISPATCH(GetTexImage, (target, level, format, type, pixels), (F, "glGetTexImage(0x%x, %d, 0x%x, 0x%x, %p);\n", target, level, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexParameterfv)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetTexParameterfv, (target, pname, params), (F, "glGetTexParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexParameteriv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetTexParameteriv, (target, pname, params), (F, "glGetTexParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameterfv)(GLenum target, GLint level, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetTexLevelParameterfv, (target, level, pname, params), (F, "glGetTexLevelParameterfv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexLevelParameteriv)(GLenum target, GLint level, GLenum pname, GLint * params)
-{
-   DISPATCH(GetTexLevelParameteriv, (target, level, pname, params), (F, "glGetTexLevelParameteriv(0x%x, %d, 0x%x, %p);\n", target, level, pname, (const void *) params));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabled)(GLenum cap)
-{
-   RETURN_DISPATCH(IsEnabled, (cap), (F, "glIsEnabled(0x%x);\n", cap));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsList)(GLuint list)
-{
-   RETURN_DISPATCH(IsList, (list), (F, "glIsList(%d);\n", list));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DepthRange)(GLclampd zNear, GLclampd zFar)
-{
-   DISPATCH(DepthRange, (zNear, zFar), (F, "glDepthRange(%f, %f);\n", zNear, zFar));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Frustum)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
-{
-   DISPATCH(Frustum, (left, right, bottom, top, zNear, zFar), (F, "glFrustum(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadIdentity)(void)
-{
-   DISPATCH(LoadIdentity, (), (F, "glLoadIdentity();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadMatrixf)(const GLfloat * m)
-{
-   DISPATCH(LoadMatrixf, (m), (F, "glLoadMatrixf(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadMatrixd)(const GLdouble * m)
-{
-   DISPATCH(LoadMatrixd, (m), (F, "glLoadMatrixd(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MatrixMode)(GLenum mode)
-{
-   DISPATCH(MatrixMode, (mode), (F, "glMatrixMode(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultMatrixf)(const GLfloat * m)
-{
-   DISPATCH(MultMatrixf, (m), (F, "glMultMatrixf(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultMatrixd)(const GLdouble * m)
-{
-   DISPATCH(MultMatrixd, (m), (F, "glMultMatrixd(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Ortho)(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar)
-{
-   DISPATCH(Ortho, (left, right, bottom, top, zNear, zFar), (F, "glOrtho(%f, %f, %f, %f, %f, %f);\n", left, right, bottom, top, zNear, zFar));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PopMatrix)(void)
-{
-   DISPATCH(PopMatrix, (), (F, "glPopMatrix();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PushMatrix)(void)
-{
-   DISPATCH(PushMatrix, (), (F, "glPushMatrix();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rotated)(GLdouble angle, GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(Rotated, (angle, x, y, z), (F, "glRotated(%f, %f, %f, %f);\n", angle, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Rotatef)(GLfloat angle, GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(Rotatef, (angle, x, y, z), (F, "glRotatef(%f, %f, %f, %f);\n", angle, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Scaled)(GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(Scaled, (x, y, z), (F, "glScaled(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Scalef)(GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(Scalef, (x, y, z), (F, "glScalef(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Translated)(GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(Translated, (x, y, z), (F, "glTranslated(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Translatef)(GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(Translatef, (x, y, z), (F, "glTranslatef(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Viewport)(GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(Viewport, (x, y, width, height), (F, "glViewport(%d, %d, %d, %d);\n", x, y, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ArrayElement)(GLint i)
-{
-   DISPATCH(ArrayElement, (i), (F, "glArrayElement(%d);\n", i));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ArrayElementEXT)(GLint i)
-{
-   DISPATCH(ArrayElement, (i), (F, "glArrayElementEXT(%d);\n", i));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindTexture)(GLenum target, GLuint texture)
-{
-   DISPATCH(BindTexture, (target, texture), (F, "glBindTexture(0x%x, %d);\n", target, texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindTextureEXT)(GLenum target, GLuint texture)
-{
-   DISPATCH(BindTexture, (target, texture), (F, "glBindTextureEXT(0x%x, %d);\n", target, texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(ColorPointer, (size, type, stride, pointer), (F, "glColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DisableClientState)(GLenum array)
-{
-   DISPATCH(DisableClientState, (array), (F, "glDisableClientState(0x%x);\n", array));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawArrays)(GLenum mode, GLint first, GLsizei count)
-{
-   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArrays(0x%x, %d, %d);\n", mode, first, count));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawArraysEXT)(GLenum mode, GLint first, GLsizei count)
-{
-   DISPATCH(DrawArrays, (mode, first, count), (F, "glDrawArraysEXT(0x%x, %d, %d);\n", mode, first, count));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawElements)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices)
-{
-   DISPATCH(DrawElements, (mode, count, type, indices), (F, "glDrawElements(0x%x, %d, 0x%x, %p);\n", mode, count, type, (const void *) indices));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointer)(GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(EdgeFlagPointer, (stride, pointer), (F, "glEdgeFlagPointer(%d, %p);\n", stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EnableClientState)(GLenum array)
-{
-   DISPATCH(EnableClientState, (array), (F, "glEnableClientState(0x%x);\n", array));
-}
-
-KEYWORD1 void KEYWORD2 NAME(IndexPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(IndexPointer, (type, stride, pointer), (F, "glIndexPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexub)(GLubyte c)
-{
-   DISPATCH(Indexub, (c), (F, "glIndexub(%d);\n", c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Indexubv)(const GLubyte * c)
-{
-   DISPATCH(Indexubv, (c), (F, "glIndexubv(%p);\n", (const void *) c));
-}
-
-KEYWORD1 void KEYWORD2 NAME(InterleavedArrays)(GLenum format, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(InterleavedArrays, (format, stride, pointer), (F, "glInterleavedArrays(0x%x, %d, %p);\n", format, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(NormalPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(NormalPointer, (type, stride, pointer), (F, "glNormalPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PolygonOffset)(GLfloat factor, GLfloat units)
-{
-   DISPATCH(PolygonOffset, (factor, units), (F, "glPolygonOffset(%f, %f);\n", factor, units));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoordPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(TexCoordPointer, (size, type, stride, pointer), (F, "glTexCoordPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(VertexPointer, (size, type, stride, pointer), (F, "glVertexPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResident)(GLsizei n, const GLuint * textures, GLboolean * residences)
-{
-   RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResident(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
-{
-   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexImage1DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border)
-{
-   DISPATCH(CopyTexImage1D, (target, level, internalformat, x, y, width, border), (F, "glCopyTexImage1DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, border));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
-{
-   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexImage2DEXT)(GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border)
-{
-   DISPATCH(CopyTexImage2D, (target, level, internalformat, x, y, width, height, border), (F, "glCopyTexImage2DEXT(0x%x, %d, 0x%x, %d, %d, %d, %d, %d);\n", target, level, internalformat, x, y, width, height, border));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1D(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyTexSubImage1D, (target, level, xoffset, x, y, width), (F, "glCopyTexSubImage1DEXT(0x%x, %d, %d, %d, %d, %d);\n", target, level, xoffset, x, y, width));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2D(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(CopyTexSubImage2D, (target, level, xoffset, yoffset, x, y, width, height), (F, "glCopyTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, x, y, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteTextures)(GLsizei n, const GLuint * textures)
-{
-   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTextures(%d, %p);\n", n, (const void *) textures));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenTextures)(GLsizei n, GLuint * textures)
-{
-   DISPATCH(GenTextures, (n, textures), (F, "glGenTextures(%d, %p);\n", n, (const void *) textures));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetPointerv)(GLenum pname, GLvoid ** params)
-{
-   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointerv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetPointervEXT)(GLenum pname, GLvoid ** params)
-{
-   DISPATCH(GetPointerv, (pname, params), (F, "glGetPointervEXT(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsTexture)(GLuint texture)
-{
-   RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTexture(%d);\n", texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PrioritizeTextures)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
-{
-   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTextures(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PrioritizeTexturesEXT)(GLsizei n, const GLuint * textures, const GLclampf * priorities)
-{
-   DISPATCH(PrioritizeTextures, (n, textures, priorities), (F, "glPrioritizeTexturesEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) priorities));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1D(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexSubImage1DEXT)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexSubImage1D, (target, level, xoffset, width, format, type, pixels), (F, "glTexSubImage1DEXT(0x%x, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, width, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexSubImage2DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexSubImage2D, (target, level, xoffset, yoffset, width, height, format, type, pixels), (F, "glTexSubImage2DEXT(0x%x, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, width, height, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PopClientAttrib)(void)
-{
-   DISPATCH(PopClientAttrib, (), (F, "glPopClientAttrib();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PushClientAttrib)(GLbitfield mask)
-{
-   DISPATCH(PushClientAttrib, (mask), (F, "glPushClientAttrib(%d);\n", mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendColor)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-{
-   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColor(%f, %f, %f, %f);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendColorEXT)(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha)
-{
-   DISPATCH(BlendColor, (red, green, blue, alpha), (F, "glBlendColorEXT(%f, %f, %f, %f);\n", red, green, blue, alpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendEquation)(GLenum mode)
-{
-   DISPATCH(BlendEquation, (mode), (F, "glBlendEquation(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendEquationEXT)(GLenum mode)
-{
-   DISPATCH(BlendEquation, (mode), (F, "glBlendEquationEXT(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawRangeElements)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
-{
-   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElements(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsEXT)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices)
-{
-   DISPATCH(DrawRangeElements, (mode, start, end, count, type, indices), (F, "glDrawRangeElementsEXT(0x%x, %d, %d, %d, 0x%x, %p);\n", mode, start, end, count, type, (const void *) indices));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorTable)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
-{
-   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTable(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorTableEXT)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
-{
-   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_339)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_339)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * table)
-{
-   DISPATCH(ColorTable, (target, internalformat, width, format, type, table), (F, "glColorTableSGI(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) table));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorTableParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_340)(GLenum target, GLenum pname, const GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_340)(GLenum target, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(ColorTableParameterfv, (target, pname, params), (F, "glColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorTableParameteriv)(GLenum target, GLenum pname, const GLint * params)
-{
-   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_341)(GLenum target, GLenum pname, const GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_341)(GLenum target, GLenum pname, const GLint * params)
-{
-   DISPATCH(ColorTableParameteriv, (target, pname, params), (F, "glColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyColorTable)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTable(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_342)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_342)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyColorTable, (target, internalformat, x, y, width), (F, "glCopyColorTableSGI(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetColorTable)(GLenum target, GLenum format, GLenum type, GLvoid * table)
-{
-   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTable(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfv)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetColorTableParameteriv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorSubTable)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
-{
-   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTable(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_346)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_346)(GLenum target, GLsizei start, GLsizei count, GLenum format, GLenum type, const GLvoid * data)
-{
-   DISPATCH(ColorSubTable, (target, start, count, format, type, data), (F, "glColorSubTableEXT(0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, start, count, format, type, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyColorSubTable)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTable(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_347)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_347)(GLenum target, GLsizei start, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyColorSubTable, (target, start, x, y, width), (F, "glCopyColorSubTableEXT(0x%x, %d, %d, %d, %d);\n", target, start, x, y, width));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter1D)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
-{
-   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1D(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_348)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_348)(GLenum target, GLenum internalformat, GLsizei width, GLenum format, GLenum type, const GLvoid * image)
-{
-   DISPATCH(ConvolutionFilter1D, (target, internalformat, width, format, type, image), (F, "glConvolutionFilter1DEXT(0x%x, 0x%x, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, format, type, (const void *) image));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ConvolutionFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
-{
-   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_349)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_349)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * image)
-{
-   DISPATCH(ConvolutionFilter2D, (target, internalformat, width, height, format, type, image), (F, "glConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p);\n", target, internalformat, width, height, format, type, (const void *) image));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterf)(GLenum target, GLenum pname, GLfloat params)
-{
-   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterf(0x%x, 0x%x, %f);\n", target, pname, params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_350)(GLenum target, GLenum pname, GLfloat params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_350)(GLenum target, GLenum pname, GLfloat params)
-{
-   DISPATCH(ConvolutionParameterf, (target, pname, params), (F, "glConvolutionParameterfEXT(0x%x, 0x%x, %f);\n", target, pname, params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameterfv)(GLenum target, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_351)(GLenum target, GLenum pname, const GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_351)(GLenum target, GLenum pname, const GLfloat * params)
-{
-   DISPATCH(ConvolutionParameterfv, (target, pname, params), (F, "glConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteri)(GLenum target, GLenum pname, GLint params)
-{
-   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteri(0x%x, 0x%x, %d);\n", target, pname, params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_352)(GLenum target, GLenum pname, GLint params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_352)(GLenum target, GLenum pname, GLint params)
-{
-   DISPATCH(ConvolutionParameteri, (target, pname, params), (F, "glConvolutionParameteriEXT(0x%x, 0x%x, %d);\n", target, pname, params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ConvolutionParameteriv)(GLenum target, GLenum pname, const GLint * params)
-{
-   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_353)(GLenum target, GLenum pname, const GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_353)(GLenum target, GLenum pname, const GLint * params)
-{
-   DISPATCH(ConvolutionParameteriv, (target, pname, params), (F, "glConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter1D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1D(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_354)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_354)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width)
-{
-   DISPATCH(CopyConvolutionFilter1D, (target, internalformat, x, y, width), (F, "glCopyConvolutionFilter1DEXT(0x%x, 0x%x, %d, %d, %d);\n", target, internalformat, x, y, width));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyConvolutionFilter2D)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2D(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_355)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_355)(GLenum target, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(CopyConvolutionFilter2D, (target, internalformat, x, y, width, height), (F, "glCopyConvolutionFilter2DEXT(0x%x, 0x%x, %d, %d, %d, %d);\n", target, internalformat, x, y, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetConvolutionFilter)(GLenum target, GLenum format, GLenum type, GLvoid * image)
-{
-   DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilter(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameterfv)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetConvolutionParameteriv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetSeparableFilter)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
-{
-   DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilter(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (const void *) row, (const void *) column, (const void *) span));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SeparableFilter2D)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
-{
-   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2D(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_360)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_360)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid * row, const GLvoid * column)
-{
-   DISPATCH(SeparableFilter2D, (target, internalformat, width, height, format, type, row, column), (F, "glSeparableFilter2DEXT(0x%x, 0x%x, %d, %d, 0x%x, 0x%x, %p, %p);\n", target, internalformat, width, height, format, type, (const void *) row, (const void *) column));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetHistogram)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
-{
-   DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogram(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetHistogramParameterfv)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetHistogramParameteriv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMinmax)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
-{
-   DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmax(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameterfv)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetMinmaxParameteriv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Histogram)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
-{
-   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogram(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_367)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_367)(GLenum target, GLsizei width, GLenum internalformat, GLboolean sink)
-{
-   DISPATCH(Histogram, (target, width, internalformat, sink), (F, "glHistogramEXT(0x%x, %d, 0x%x, %d);\n", target, width, internalformat, sink));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Minmax)(GLenum target, GLenum internalformat, GLboolean sink)
-{
-   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmax(0x%x, 0x%x, %d);\n", target, internalformat, sink));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_368)(GLenum target, GLenum internalformat, GLboolean sink);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_368)(GLenum target, GLenum internalformat, GLboolean sink)
-{
-   DISPATCH(Minmax, (target, internalformat, sink), (F, "glMinmaxEXT(0x%x, 0x%x, %d);\n", target, internalformat, sink));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ResetHistogram)(GLenum target)
-{
-   DISPATCH(ResetHistogram, (target), (F, "glResetHistogram(0x%x);\n", target));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_369)(GLenum target);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_369)(GLenum target)
-{
-   DISPATCH(ResetHistogram, (target), (F, "glResetHistogramEXT(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ResetMinmax)(GLenum target)
-{
-   DISPATCH(ResetMinmax, (target), (F, "glResetMinmax(0x%x);\n", target));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_370)(GLenum target);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_370)(GLenum target)
-{
-   DISPATCH(ResetMinmax, (target), (F, "glResetMinmaxEXT(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexImage3D)(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3D(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexImage3DEXT)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexImage3D, (target, level, internalformat, width, height, depth, border, format, type, pixels), (F, "glTexImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, internalformat, width, height, depth, border, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const GLvoid * pixels)
-{
-   DISPATCH(TexSubImage3D, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, pixels), (F, "glTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, 0x%x, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, type, (const void *) pixels));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyTexSubImage3DEXT)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLint x, GLint y, GLsizei width, GLsizei height)
-{
-   DISPATCH(CopyTexSubImage3D, (target, level, xoffset, yoffset, zoffset, x, y, width, height), (F, "glCopyTexSubImage3DEXT(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", target, level, xoffset, yoffset, zoffset, x, y, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ActiveTexture)(GLenum texture)
-{
-   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTexture(0x%x);\n", texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ActiveTextureARB)(GLenum texture)
-{
-   DISPATCH(ActiveTextureARB, (texture), (F, "glActiveTextureARB(0x%x);\n", texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClientActiveTexture)(GLenum texture)
-{
-   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTexture(0x%x);\n", texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ClientActiveTextureARB)(GLenum texture)
-{
-   DISPATCH(ClientActiveTextureARB, (texture), (F, "glClientActiveTextureARB(0x%x);\n", texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1d)(GLenum target, GLdouble s)
-{
-   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1d(0x%x, %f);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dARB)(GLenum target, GLdouble s)
-{
-   DISPATCH(MultiTexCoord1dARB, (target, s), (F, "glMultiTexCoord1dARB(0x%x, %f);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dv)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1dvARB)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord1dvARB, (target, v), (F, "glMultiTexCoord1dvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1f)(GLenum target, GLfloat s)
-{
-   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1f(0x%x, %f);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fARB)(GLenum target, GLfloat s)
-{
-   DISPATCH(MultiTexCoord1fARB, (target, s), (F, "glMultiTexCoord1fARB(0x%x, %f);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fv)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1fvARB)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord1fvARB, (target, v), (F, "glMultiTexCoord1fvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1i)(GLenum target, GLint s)
-{
-   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1i(0x%x, %d);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iARB)(GLenum target, GLint s)
-{
-   DISPATCH(MultiTexCoord1iARB, (target, s), (F, "glMultiTexCoord1iARB(0x%x, %d);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1iv)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1iv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1ivARB)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord1ivARB, (target, v), (F, "glMultiTexCoord1ivARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1s)(GLenum target, GLshort s)
-{
-   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1s(0x%x, %d);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sARB)(GLenum target, GLshort s)
-{
-   DISPATCH(MultiTexCoord1sARB, (target, s), (F, "glMultiTexCoord1sARB(0x%x, %d);\n", target, s));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1sv)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1sv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord1svARB)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord1svARB, (target, v), (F, "glMultiTexCoord1svARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2d)(GLenum target, GLdouble s, GLdouble t)
-{
-   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2d(0x%x, %f, %f);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dARB)(GLenum target, GLdouble s, GLdouble t)
-{
-   DISPATCH(MultiTexCoord2dARB, (target, s, t), (F, "glMultiTexCoord2dARB(0x%x, %f, %f);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dv)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2dvARB)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord2dvARB, (target, v), (F, "glMultiTexCoord2dvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2f)(GLenum target, GLfloat s, GLfloat t)
-{
-   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2f(0x%x, %f, %f);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fARB)(GLenum target, GLfloat s, GLfloat t)
-{
-   DISPATCH(MultiTexCoord2fARB, (target, s, t), (F, "glMultiTexCoord2fARB(0x%x, %f, %f);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fv)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2fvARB)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord2fvARB, (target, v), (F, "glMultiTexCoord2fvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2i)(GLenum target, GLint s, GLint t)
-{
-   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2i(0x%x, %d, %d);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iARB)(GLenum target, GLint s, GLint t)
-{
-   DISPATCH(MultiTexCoord2iARB, (target, s, t), (F, "glMultiTexCoord2iARB(0x%x, %d, %d);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2iv)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2iv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2ivARB)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord2ivARB, (target, v), (F, "glMultiTexCoord2ivARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2s)(GLenum target, GLshort s, GLshort t)
-{
-   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2s(0x%x, %d, %d);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sARB)(GLenum target, GLshort s, GLshort t)
-{
-   DISPATCH(MultiTexCoord2sARB, (target, s, t), (F, "glMultiTexCoord2sARB(0x%x, %d, %d);\n", target, s, t));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2sv)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2sv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord2svARB)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord2svARB, (target, v), (F, "glMultiTexCoord2svARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3d)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
-{
-   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3d(0x%x, %f, %f, %f);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r)
-{
-   DISPATCH(MultiTexCoord3dARB, (target, s, t, r), (F, "glMultiTexCoord3dARB(0x%x, %f, %f, %f);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dv)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3dvARB)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord3dvARB, (target, v), (F, "glMultiTexCoord3dvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3f)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
-{
-   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3f(0x%x, %f, %f, %f);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r)
-{
-   DISPATCH(MultiTexCoord3fARB, (target, s, t, r), (F, "glMultiTexCoord3fARB(0x%x, %f, %f, %f);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fv)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3fvARB)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord3fvARB, (target, v), (F, "glMultiTexCoord3fvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3i)(GLenum target, GLint s, GLint t, GLint r)
-{
-   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3i(0x%x, %d, %d, %d);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iARB)(GLenum target, GLint s, GLint t, GLint r)
-{
-   DISPATCH(MultiTexCoord3iARB, (target, s, t, r), (F, "glMultiTexCoord3iARB(0x%x, %d, %d, %d);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3iv)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3iv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3ivARB)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord3ivARB, (target, v), (F, "glMultiTexCoord3ivARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3s)(GLenum target, GLshort s, GLshort t, GLshort r)
-{
-   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3s(0x%x, %d, %d, %d);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sARB)(GLenum target, GLshort s, GLshort t, GLshort r)
-{
-   DISPATCH(MultiTexCoord3sARB, (target, s, t, r), (F, "glMultiTexCoord3sARB(0x%x, %d, %d, %d);\n", target, s, t, r));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3sv)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3sv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord3svARB)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord3svARB, (target, v), (F, "glMultiTexCoord3svARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4d)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
-{
-   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4d(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dARB)(GLenum target, GLdouble s, GLdouble t, GLdouble r, GLdouble q)
-{
-   DISPATCH(MultiTexCoord4dARB, (target, s, t, r, q), (F, "glMultiTexCoord4dARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dv)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4dvARB)(GLenum target, const GLdouble * v)
-{
-   DISPATCH(MultiTexCoord4dvARB, (target, v), (F, "glMultiTexCoord4dvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4f)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
-{
-   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4f(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fARB)(GLenum target, GLfloat s, GLfloat t, GLfloat r, GLfloat q)
-{
-   DISPATCH(MultiTexCoord4fARB, (target, s, t, r, q), (F, "glMultiTexCoord4fARB(0x%x, %f, %f, %f, %f);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fv)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4fvARB)(GLenum target, const GLfloat * v)
-{
-   DISPATCH(MultiTexCoord4fvARB, (target, v), (F, "glMultiTexCoord4fvARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4i)(GLenum target, GLint s, GLint t, GLint r, GLint q)
-{
-   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4i(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iARB)(GLenum target, GLint s, GLint t, GLint r, GLint q)
-{
-   DISPATCH(MultiTexCoord4iARB, (target, s, t, r, q), (F, "glMultiTexCoord4iARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4iv)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4iv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4ivARB)(GLenum target, const GLint * v)
-{
-   DISPATCH(MultiTexCoord4ivARB, (target, v), (F, "glMultiTexCoord4ivARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4s)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
-{
-   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4s(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sARB)(GLenum target, GLshort s, GLshort t, GLshort r, GLshort q)
-{
-   DISPATCH(MultiTexCoord4sARB, (target, s, t, r, q), (F, "glMultiTexCoord4sARB(0x%x, %d, %d, %d, %d);\n", target, s, t, r, q));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4sv)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4sv(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiTexCoord4svARB)(GLenum target, const GLshort * v)
-{
-   DISPATCH(MultiTexCoord4svARB, (target, v), (F, "glMultiTexCoord4svARB(0x%x, %p);\n", target, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(AttachShader)(GLuint program, GLuint shader)
-{
-   DISPATCH(AttachShader, (program, shader), (F, "glAttachShader(%d, %d);\n", program, shader));
-}
-
-KEYWORD1 GLuint KEYWORD2 NAME(CreateProgram)(void)
-{
-   RETURN_DISPATCH(CreateProgram, (), (F, "glCreateProgram();\n"));
-}
-
-KEYWORD1 GLuint KEYWORD2 NAME(CreateShader)(GLenum type)
-{
-   RETURN_DISPATCH(CreateShader, (type), (F, "glCreateShader(0x%x);\n", type));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteProgram)(GLuint program)
-{
-   DISPATCH(DeleteProgram, (program), (F, "glDeleteProgram(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteShader)(GLuint program)
-{
-   DISPATCH(DeleteShader, (program), (F, "glDeleteShader(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DetachShader)(GLuint program, GLuint shader)
-{
-   DISPATCH(DetachShader, (program, shader), (F, "glDetachShader(%d, %d);\n", program, shader));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetAttachedShaders)(GLuint program, GLsizei maxCount, GLsizei * count, GLuint * obj)
-{
-   DISPATCH(GetAttachedShaders, (program, maxCount, count, obj), (F, "glGetAttachedShaders(%d, %d, %p, %p);\n", program, maxCount, (const void *) count, (const void *) obj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramInfoLog)(GLuint program, GLsizei bufSize, GLsizei * length, GLchar * infoLog)
-{
-   DISPATCH(GetProgramInfoLog, (program, bufSize, length, infoLog), (F, "glGetProgramInfoLog(%d, %d, %p, %p);\n", program, bufSize, (const void *) length, (const void *) infoLog));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramiv)(GLuint program, GLenum pname, GLint * params)
-{
-   DISPATCH(GetProgramiv, (program, pname, params), (F, "glGetProgramiv(%d, 0x%x, %p);\n", program, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetShaderInfoLog)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * infoLog)
-{
-   DISPATCH(GetShaderInfoLog, (shader, bufSize, length, infoLog), (F, "glGetShaderInfoLog(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) infoLog));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetShaderiv)(GLuint shader, GLenum pname, GLint * params)
-{
-   DISPATCH(GetShaderiv, (shader, pname, params), (F, "glGetShaderiv(%d, 0x%x, %p);\n", shader, pname, (const void *) params));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsProgram)(GLuint program)
-{
-   RETURN_DISPATCH(IsProgram, (program), (F, "glIsProgram(%d);\n", program));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsShader)(GLuint shader)
-{
-   RETURN_DISPATCH(IsShader, (shader), (F, "glIsShader(%d);\n", shader));
-}
-
-KEYWORD1 void KEYWORD2 NAME(StencilFuncSeparate)(GLenum face, GLenum func, GLint ref, GLuint mask)
-{
-   DISPATCH(StencilFuncSeparate, (face, func, ref, mask), (F, "glStencilFuncSeparate(0x%x, 0x%x, %d, %d);\n", face, func, ref, mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(StencilMaskSeparate)(GLenum face, GLuint mask)
-{
-   DISPATCH(StencilMaskSeparate, (face, mask), (F, "glStencilMaskSeparate(0x%x, %d);\n", face, mask));
-}
-
-KEYWORD1 void KEYWORD2 NAME(StencilOpSeparate)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
-{
-   DISPATCH(StencilOpSeparate, (face, sfail, zfail, zpass), (F, "glStencilOpSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", face, sfail, zfail, zpass));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_423)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_423)(GLenum face, GLenum sfail, GLenum zfail, GLenum zpass)
-{
-   DISPATCH(StencilOpSeparate, (face, sfail, zfail, zpass), (F, "glStencilOpSeparateATI(0x%x, 0x%x, 0x%x, 0x%x);\n", face, sfail, zfail, zpass));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix2x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix2x3fv, (location, count, transpose, value), (F, "glUniformMatrix2x3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix2x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix2x4fv, (location, count, transpose, value), (F, "glUniformMatrix2x4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix3x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix3x2fv, (location, count, transpose, value), (F, "glUniformMatrix3x2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix3x4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix3x4fv, (location, count, transpose, value), (F, "glUniformMatrix3x4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix4x2fv, (location, count, transpose, value), (F, "glUniformMatrix4x2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix4x3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix4x3fv, (location, count, transpose, value), (F, "glUniformMatrix4x3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawArraysInstanced)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
-{
-   DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstanced(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedARB)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
-{
-   DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedARB(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawArraysInstancedEXT)(GLenum mode, GLint first, GLsizei count, GLsizei primcount)
-{
-   DISPATCH(DrawArraysInstanced, (mode, first, count, primcount), (F, "glDrawArraysInstancedEXT(0x%x, %d, %d, %d);\n", mode, first, count, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawElementsInstanced)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
-{
-   DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstanced(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedARB)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
-{
-   DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedARB(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawElementsInstancedEXT)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLsizei primcount)
-{
-   DISPATCH(DrawElementsInstanced, (mode, count, type, indices, primcount), (F, "glDrawElementsInstancedEXT(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixd)(const GLdouble * m)
-{
-   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixd(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixdARB)(const GLdouble * m)
-{
-   DISPATCH(LoadTransposeMatrixdARB, (m), (F, "glLoadTransposeMatrixdARB(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixf)(const GLfloat * m)
-{
-   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixf(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadTransposeMatrixfARB)(const GLfloat * m)
-{
-   DISPATCH(LoadTransposeMatrixfARB, (m), (F, "glLoadTransposeMatrixfARB(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixd)(const GLdouble * m)
-{
-   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixd(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixdARB)(const GLdouble * m)
-{
-   DISPATCH(MultTransposeMatrixdARB, (m), (F, "glMultTransposeMatrixdARB(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixf)(const GLfloat * m)
-{
-   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixf(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultTransposeMatrixfARB)(const GLfloat * m)
-{
-   DISPATCH(MultTransposeMatrixfARB, (m), (F, "glMultTransposeMatrixfARB(%p);\n", (const void *) m));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SampleCoverage)(GLclampf value, GLboolean invert)
-{
-   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverage(%f, %d);\n", value, invert));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SampleCoverageARB)(GLclampf value, GLboolean invert)
-{
-   DISPATCH(SampleCoverageARB, (value, invert), (F, "glSampleCoverageARB(%f, %d);\n", value, invert));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1D(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage1DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLint border, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexImage1DARB, (target, level, internalformat, width, border, imageSize, data), (F, "glCompressedTexImage1DARB(0x%x, %d, 0x%x, %d, %d, %d, %p);\n", target, level, internalformat, width, border, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2D(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage2DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLint border, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexImage2DARB, (target, level, internalformat, width, height, border, imageSize, data), (F, "glCompressedTexImage2DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, border, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3D)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3D(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexImage3DARB)(GLenum target, GLint level, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLint border, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexImage3DARB, (target, level, internalformat, width, height, depth, border, imageSize, data), (F, "glCompressedTexImage3DARB(0x%x, %d, 0x%x, %d, %d, %d, %d, %d, %p);\n", target, level, internalformat, width, height, depth, border, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1D)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1D(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage1DARB)(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexSubImage1DARB, (target, level, xoffset, width, format, imageSize, data), (F, "glCompressedTexSubImage1DARB(0x%x, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, width, format, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2D(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage2DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexSubImage2DARB, (target, level, xoffset, yoffset, width, height, format, imageSize, data), (F, "glCompressedTexSubImage2DARB(0x%x, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, width, height, format, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3D)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3D(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompressedTexSubImage3DARB)(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint zoffset, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLsizei imageSize, const GLvoid * data)
-{
-   DISPATCH(CompressedTexSubImage3DARB, (target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, data), (F, "glCompressedTexSubImage3DARB(0x%x, %d, %d, %d, %d, %d, %d, %d, 0x%x, %d, %p);\n", target, level, xoffset, yoffset, zoffset, width, height, depth, format, imageSize, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImage)(GLenum target, GLint level, GLvoid * img)
-{
-   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImage(0x%x, %d, %p);\n", target, level, (const void *) img));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetCompressedTexImageARB)(GLenum target, GLint level, GLvoid * img)
-{
-   DISPATCH(GetCompressedTexImageARB, (target, level, img), (F, "glGetCompressedTexImageARB(0x%x, %d, %p);\n", target, level, (const void *) img));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArray)(GLuint index)
-{
-   DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArray(%d);\n", index));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DisableVertexAttribArrayARB)(GLuint index)
-{
-   DISPATCH(DisableVertexAttribArrayARB, (index), (F, "glDisableVertexAttribArrayARB(%d);\n", index));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArray)(GLuint index)
-{
-   DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArray(%d);\n", index));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EnableVertexAttribArrayARB)(GLuint index)
-{
-   DISPATCH(EnableVertexAttribArrayARB, (index), (F, "glEnableVertexAttribArrayARB(%d);\n", index));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
-{
-   DISPATCH(GetProgramEnvParameterdvARB, (target, index, params), (F, "glGetProgramEnvParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramEnvParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
-{
-   DISPATCH(GetProgramEnvParameterfvARB, (target, index, params), (F, "glGetProgramEnvParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterdvARB)(GLenum target, GLuint index, GLdouble * params)
-{
-   DISPATCH(GetProgramLocalParameterdvARB, (target, index, params), (F, "glGetProgramLocalParameterdvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramLocalParameterfvARB)(GLenum target, GLuint index, GLfloat * params)
-{
-   DISPATCH(GetProgramLocalParameterfvARB, (target, index, params), (F, "glGetProgramLocalParameterfvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramStringARB)(GLenum target, GLenum pname, GLvoid * string)
-{
-   DISPATCH(GetProgramStringARB, (target, pname, string), (F, "glGetProgramStringARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) string));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramivARB)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetProgramivARB, (target, pname, params), (F, "glGetProgramivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdv)(GLuint index, GLenum pname, GLdouble * params)
-{
-   DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvARB)(GLuint index, GLenum pname, GLdouble * params)
-{
-   DISPATCH(GetVertexAttribdvARB, (index, pname, params), (F, "glGetVertexAttribdvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfv)(GLuint index, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvARB)(GLuint index, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetVertexAttribfvARB, (index, pname, params), (F, "glGetVertexAttribfvARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribiv)(GLuint index, GLenum pname, GLint * params)
-{
-   DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribiv(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivARB)(GLuint index, GLenum pname, GLint * params)
-{
-   DISPATCH(GetVertexAttribivARB, (index, pname, params), (F, "glGetVertexAttribivARB(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dNV)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(ProgramEnvParameter4dARB, (target, index, x, y, z, w), (F, "glProgramParameter4dNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
-{
-   DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramEnvParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4dvNV)(GLenum target, GLuint index, const GLdouble * params)
-{
-   DISPATCH(ProgramEnvParameter4dvARB, (target, index, params), (F, "glProgramParameter4dvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramEnvParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fNV)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(ProgramEnvParameter4fARB, (target, index, x, y, z, w), (F, "glProgramParameter4fNV(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramEnvParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
-{
-   DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramEnvParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramParameter4fvNV)(GLenum target, GLuint index, const GLfloat * params)
-{
-   DISPATCH(ProgramEnvParameter4fvARB, (target, index, params), (F, "glProgramParameter4fvNV(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dARB)(GLenum target, GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(ProgramLocalParameter4dARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4dARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4dvARB)(GLenum target, GLuint index, const GLdouble * params)
-{
-   DISPATCH(ProgramLocalParameter4dvARB, (target, index, params), (F, "glProgramLocalParameter4dvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fARB)(GLenum target, GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(ProgramLocalParameter4fARB, (target, index, x, y, z, w), (F, "glProgramLocalParameter4fARB(0x%x, %d, %f, %f, %f, %f);\n", target, index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramLocalParameter4fvARB)(GLenum target, GLuint index, const GLfloat * params)
-{
-   DISPATCH(ProgramLocalParameter4fvARB, (target, index, params), (F, "glProgramLocalParameter4fvARB(0x%x, %d, %p);\n", target, index, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramStringARB)(GLenum target, GLenum format, GLsizei len, const GLvoid * string)
-{
-   DISPATCH(ProgramStringARB, (target, format, len, string), (F, "glProgramStringARB(0x%x, 0x%x, %d, %p);\n", target, format, len, (const void *) string));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1d)(GLuint index, GLdouble x)
-{
-   DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1d(%d, %f);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dARB)(GLuint index, GLdouble x)
-{
-   DISPATCH(VertexAttrib1dARB, (index, x), (F, "glVertexAttrib1dARB(%d, %f);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dv)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvARB)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib1dvARB, (index, v), (F, "glVertexAttrib1dvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1f)(GLuint index, GLfloat x)
-{
-   DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1f(%d, %f);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fARB)(GLuint index, GLfloat x)
-{
-   DISPATCH(VertexAttrib1fARB, (index, x), (F, "glVertexAttrib1fARB(%d, %f);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fv)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvARB)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib1fvARB, (index, v), (F, "glVertexAttrib1fvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1s)(GLuint index, GLshort x)
-{
-   DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1s(%d, %d);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sARB)(GLuint index, GLshort x)
-{
-   DISPATCH(VertexAttrib1sARB, (index, x), (F, "glVertexAttrib1sARB(%d, %d);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sv)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1sv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svARB)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib1svARB, (index, v), (F, "glVertexAttrib1svARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2d)(GLuint index, GLdouble x, GLdouble y)
-{
-   DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2d(%d, %f, %f);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dARB)(GLuint index, GLdouble x, GLdouble y)
-{
-   DISPATCH(VertexAttrib2dARB, (index, x, y), (F, "glVertexAttrib2dARB(%d, %f, %f);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dv)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvARB)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib2dvARB, (index, v), (F, "glVertexAttrib2dvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2f)(GLuint index, GLfloat x, GLfloat y)
-{
-   DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2f(%d, %f, %f);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fARB)(GLuint index, GLfloat x, GLfloat y)
-{
-   DISPATCH(VertexAttrib2fARB, (index, x, y), (F, "glVertexAttrib2fARB(%d, %f, %f);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fv)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvARB)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib2fvARB, (index, v), (F, "glVertexAttrib2fvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2s)(GLuint index, GLshort x, GLshort y)
-{
-   DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2s(%d, %d, %d);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sARB)(GLuint index, GLshort x, GLshort y)
-{
-   DISPATCH(VertexAttrib2sARB, (index, x, y), (F, "glVertexAttrib2sARB(%d, %d, %d);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sv)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2sv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svARB)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib2svARB, (index, v), (F, "glVertexAttrib2svARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3d)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3d(%d, %f, %f, %f);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(VertexAttrib3dARB, (index, x, y, z), (F, "glVertexAttrib3dARB(%d, %f, %f, %f);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dv)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvARB)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib3dvARB, (index, v), (F, "glVertexAttrib3dvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3f)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3f(%d, %f, %f, %f);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(VertexAttrib3fARB, (index, x, y, z), (F, "glVertexAttrib3fARB(%d, %f, %f, %f);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fv)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvARB)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib3fvARB, (index, v), (F, "glVertexAttrib3fvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3s)(GLuint index, GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3s(%d, %d, %d, %d);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sARB)(GLuint index, GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(VertexAttrib3sARB, (index, x, y, z), (F, "glVertexAttrib3sARB(%d, %d, %d, %d);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sv)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3sv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svARB)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib3svARB, (index, v), (F, "glVertexAttrib3svARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nbv)(GLuint index, const GLbyte * v)
-{
-   DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4Nbv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NbvARB)(GLuint index, const GLbyte * v)
-{
-   DISPATCH(VertexAttrib4NbvARB, (index, v), (F, "glVertexAttrib4NbvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Niv)(GLuint index, const GLint * v)
-{
-   DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4Niv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NivARB)(GLuint index, const GLint * v)
-{
-   DISPATCH(VertexAttrib4NivARB, (index, v), (F, "glVertexAttrib4NivARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nsv)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4Nsv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NsvARB)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib4NsvARB, (index, v), (F, "glVertexAttrib4NsvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nub)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
-{
-   DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4Nub(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubARB)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
-{
-   DISPATCH(VertexAttrib4NubARB, (index, x, y, z, w), (F, "glVertexAttrib4NubARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nubv)(GLuint index, const GLubyte * v)
-{
-   DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4Nubv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NubvARB)(GLuint index, const GLubyte * v)
-{
-   DISPATCH(VertexAttrib4NubvARB, (index, v), (F, "glVertexAttrib4NubvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nuiv)(GLuint index, const GLuint * v)
-{
-   DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4Nuiv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NuivARB)(GLuint index, const GLuint * v)
-{
-   DISPATCH(VertexAttrib4NuivARB, (index, v), (F, "glVertexAttrib4NuivARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4Nusv)(GLuint index, const GLushort * v)
-{
-   DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4Nusv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4NusvARB)(GLuint index, const GLushort * v)
-{
-   DISPATCH(VertexAttrib4NusvARB, (index, v), (F, "glVertexAttrib4NusvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bv)(GLuint index, const GLbyte * v)
-{
-   DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4bvARB)(GLuint index, const GLbyte * v)
-{
-   DISPATCH(VertexAttrib4bvARB, (index, v), (F, "glVertexAttrib4bvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4d)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4d(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dARB)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(VertexAttrib4dARB, (index, x, y, z, w), (F, "glVertexAttrib4dARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dv)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvARB)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib4dvARB, (index, v), (F, "glVertexAttrib4dvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4f)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4f(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fARB)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(VertexAttrib4fARB, (index, x, y, z, w), (F, "glVertexAttrib4fARB(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fv)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvARB)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib4fvARB, (index, v), (F, "glVertexAttrib4fvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4iv)(GLuint index, const GLint * v)
-{
-   DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4iv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ivARB)(GLuint index, const GLint * v)
-{
-   DISPATCH(VertexAttrib4ivARB, (index, v), (F, "glVertexAttrib4ivARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4s)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
-{
-   DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4s(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sARB)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
-{
-   DISPATCH(VertexAttrib4sARB, (index, x, y, z, w), (F, "glVertexAttrib4sARB(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sv)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4sv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svARB)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib4svARB, (index, v), (F, "glVertexAttrib4svARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubv)(GLuint index, const GLubyte * v)
-{
-   DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvARB)(GLuint index, const GLubyte * v)
-{
-   DISPATCH(VertexAttrib4ubvARB, (index, v), (F, "glVertexAttrib4ubvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uiv)(GLuint index, const GLuint * v)
-{
-   DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uiv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4uivARB)(GLuint index, const GLuint * v)
-{
-   DISPATCH(VertexAttrib4uivARB, (index, v), (F, "glVertexAttrib4uivARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usv)(GLuint index, const GLushort * v)
-{
-   DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usv(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4usvARB)(GLuint index, const GLushort * v)
-{
-   DISPATCH(VertexAttrib4usvARB, (index, v), (F, "glVertexAttrib4usvARB(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribPointer)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointer(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerARB)(GLuint index, GLint size, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(VertexAttribPointerARB, (index, size, type, normalized, stride, pointer), (F, "glVertexAttribPointerARB(%d, %d, 0x%x, %d, %d, %p);\n", index, size, type, normalized, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBuffer)(GLenum target, GLuint buffer)
-{
-   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBuffer(0x%x, %d);\n", target, buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBufferARB)(GLenum target, GLuint buffer)
-{
-   DISPATCH(BindBufferARB, (target, buffer), (F, "glBindBufferARB(0x%x, %d);\n", target, buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BufferData)(GLenum target, GLsizeiptr size, const GLvoid * data, GLenum usage)
-{
-   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferData(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BufferDataARB)(GLenum target, GLsizeiptrARB size, const GLvoid * data, GLenum usage)
-{
-   DISPATCH(BufferDataARB, (target, size, data, usage), (F, "glBufferDataARB(0x%x, %d, %p, 0x%x);\n", target, size, (const void *) data, usage));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid * data)
-{
-   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, const GLvoid * data)
-{
-   DISPATCH(BufferSubDataARB, (target, offset, size, data), (F, "glBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteBuffers)(GLsizei n, const GLuint * buffer)
-{
-   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffers(%d, %p);\n", n, (const void *) buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteBuffersARB)(GLsizei n, const GLuint * buffer)
-{
-   DISPATCH(DeleteBuffersARB, (n, buffer), (F, "glDeleteBuffersARB(%d, %p);\n", n, (const void *) buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenBuffers)(GLsizei n, GLuint * buffer)
-{
-   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffers(%d, %p);\n", n, (const void *) buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenBuffersARB)(GLsizei n, GLuint * buffer)
-{
-   DISPATCH(GenBuffersARB, (n, buffer), (F, "glGenBuffersARB(%d, %p);\n", n, (const void *) buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferParameteriv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferParameterivARB)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetBufferParameterivARB, (target, pname, params), (F, "glGetBufferParameterivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferPointerv)(GLenum target, GLenum pname, GLvoid ** params)
-{
-   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointerv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferPointervARB)(GLenum target, GLenum pname, GLvoid ** params)
-{
-   DISPATCH(GetBufferPointervARB, (target, pname, params), (F, "glGetBufferPointervARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferSubData)(GLenum target, GLintptr offset, GLsizeiptr size, GLvoid * data)
-{
-   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubData(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBufferSubDataARB)(GLenum target, GLintptrARB offset, GLsizeiptrARB size, GLvoid * data)
-{
-   DISPATCH(GetBufferSubDataARB, (target, offset, size, data), (F, "glGetBufferSubDataARB(0x%x, %d, %d, %p);\n", target, offset, size, (const void *) data));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsBuffer)(GLuint buffer)
-{
-   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBuffer(%d);\n", buffer));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsBufferARB)(GLuint buffer)
-{
-   RETURN_DISPATCH(IsBufferARB, (buffer), (F, "glIsBufferARB(%d);\n", buffer));
-}
-
-KEYWORD1 GLvoid * KEYWORD2 NAME(MapBuffer)(GLenum target, GLenum access)
-{
-   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBuffer(0x%x, 0x%x);\n", target, access));
-}
-
-KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferARB)(GLenum target, GLenum access)
-{
-   RETURN_DISPATCH(MapBufferARB, (target, access), (F, "glMapBufferARB(0x%x, 0x%x);\n", target, access));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBuffer)(GLenum target)
-{
-   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBuffer(0x%x);\n", target));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(UnmapBufferARB)(GLenum target)
-{
-   RETURN_DISPATCH(UnmapBufferARB, (target), (F, "glUnmapBufferARB(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BeginQuery)(GLenum target, GLuint id)
-{
-   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQuery(0x%x, %d);\n", target, id));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BeginQueryARB)(GLenum target, GLuint id)
-{
-   DISPATCH(BeginQueryARB, (target, id), (F, "glBeginQueryARB(0x%x, %d);\n", target, id));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteQueries)(GLsizei n, const GLuint * ids)
-{
-   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueries(%d, %p);\n", n, (const void *) ids));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteQueriesARB)(GLsizei n, const GLuint * ids)
-{
-   DISPATCH(DeleteQueriesARB, (n, ids), (F, "glDeleteQueriesARB(%d, %p);\n", n, (const void *) ids));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndQuery)(GLenum target)
-{
-   DISPATCH(EndQueryARB, (target), (F, "glEndQuery(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndQueryARB)(GLenum target)
-{
-   DISPATCH(EndQueryARB, (target), (F, "glEndQueryARB(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenQueries)(GLsizei n, GLuint * ids)
-{
-   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueries(%d, %p);\n", n, (const void *) ids));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenQueriesARB)(GLsizei n, GLuint * ids)
-{
-   DISPATCH(GenQueriesARB, (n, ids), (F, "glGenQueriesARB(%d, %p);\n", n, (const void *) ids));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectiv)(GLuint id, GLenum pname, GLint * params)
-{
-   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectivARB)(GLuint id, GLenum pname, GLint * params)
-{
-   DISPATCH(GetQueryObjectivARB, (id, pname, params), (F, "glGetQueryObjectivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuiv)(GLuint id, GLenum pname, GLuint * params)
-{
-   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuiv(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryObjectuivARB)(GLuint id, GLenum pname, GLuint * params)
-{
-   DISPATCH(GetQueryObjectuivARB, (id, pname, params), (F, "glGetQueryObjectuivARB(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryiv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryiv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetQueryivARB)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetQueryivARB, (target, pname, params), (F, "glGetQueryivARB(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsQuery)(GLuint id)
-{
-   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQuery(%d);\n", id));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsQueryARB)(GLuint id)
-{
-   RETURN_DISPATCH(IsQueryARB, (id), (F, "glIsQueryARB(%d);\n", id));
-}
-
-KEYWORD1 void KEYWORD2 NAME(AttachObjectARB)(GLhandleARB containerObj, GLhandleARB obj)
-{
-   DISPATCH(AttachObjectARB, (containerObj, obj), (F, "glAttachObjectARB(%d, %d);\n", containerObj, obj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompileShader)(GLuint shader)
-{
-   DISPATCH(CompileShaderARB, (shader), (F, "glCompileShader(%d);\n", shader));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CompileShaderARB)(GLhandleARB shader)
-{
-   DISPATCH(CompileShaderARB, (shader), (F, "glCompileShaderARB(%d);\n", shader));
-}
-
-KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateProgramObjectARB)(void)
-{
-   RETURN_DISPATCH(CreateProgramObjectARB, (), (F, "glCreateProgramObjectARB();\n"));
-}
-
-KEYWORD1 GLhandleARB KEYWORD2 NAME(CreateShaderObjectARB)(GLenum shaderType)
-{
-   RETURN_DISPATCH(CreateShaderObjectARB, (shaderType), (F, "glCreateShaderObjectARB(0x%x);\n", shaderType));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteObjectARB)(GLhandleARB obj)
-{
-   DISPATCH(DeleteObjectARB, (obj), (F, "glDeleteObjectARB(%d);\n", obj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DetachObjectARB)(GLhandleARB containerObj, GLhandleARB attachedObj)
-{
-   DISPATCH(DetachObjectARB, (containerObj, attachedObj), (F, "glDetachObjectARB(%d, %d);\n", containerObj, attachedObj));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetActiveUniform)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)
-{
-   DISPATCH(GetActiveUniformARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveUniform(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetActiveUniformARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
-{
-   DISPATCH(GetActiveUniformARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveUniformARB(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetAttachedObjectsARB)(GLhandleARB containerObj, GLsizei maxLength, GLsizei * length, GLhandleARB * infoLog)
-{
-   DISPATCH(GetAttachedObjectsARB, (containerObj, maxLength, length, infoLog), (F, "glGetAttachedObjectsARB(%d, %d, %p, %p);\n", containerObj, maxLength, (const void *) length, (const void *) infoLog));
-}
-
-KEYWORD1 GLhandleARB KEYWORD2 NAME(GetHandleARB)(GLenum pname)
-{
-   RETURN_DISPATCH(GetHandleARB, (pname), (F, "glGetHandleARB(0x%x);\n", pname));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetInfoLogARB)(GLhandleARB obj, GLsizei maxLength, GLsizei * length, GLcharARB * infoLog)
-{
-   DISPATCH(GetInfoLogARB, (obj, maxLength, length, infoLog), (F, "glGetInfoLogARB(%d, %d, %p, %p);\n", obj, maxLength, (const void *) length, (const void *) infoLog));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetObjectParameterfvARB)(GLhandleARB obj, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetObjectParameterfvARB, (obj, pname, params), (F, "glGetObjectParameterfvARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivARB)(GLhandleARB obj, GLenum pname, GLint * params)
-{
-   DISPATCH(GetObjectParameterivARB, (obj, pname, params), (F, "glGetObjectParameterivARB(%d, 0x%x, %p);\n", obj, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetShaderSource)(GLuint shader, GLsizei bufSize, GLsizei * length, GLchar * source)
-{
-   DISPATCH(GetShaderSourceARB, (shader, bufSize, length, source), (F, "glGetShaderSource(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) source));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetShaderSourceARB)(GLhandleARB shader, GLsizei bufSize, GLsizei * length, GLcharARB * source)
-{
-   DISPATCH(GetShaderSourceARB, (shader, bufSize, length, source), (F, "glGetShaderSourceARB(%d, %d, %p, %p);\n", shader, bufSize, (const void *) length, (const void *) source));
-}
-
-KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocation)(GLuint program, const GLchar * name)
-{
-   RETURN_DISPATCH(GetUniformLocationARB, (program, name), (F, "glGetUniformLocation(%d, %p);\n", program, (const void *) name));
-}
-
-KEYWORD1 GLint KEYWORD2 NAME(GetUniformLocationARB)(GLhandleARB program, const GLcharARB * name)
-{
-   RETURN_DISPATCH(GetUniformLocationARB, (program, name), (F, "glGetUniformLocationARB(%d, %p);\n", program, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetUniformfv)(GLuint program, GLint location, GLfloat * params)
-{
-   DISPATCH(GetUniformfvARB, (program, location, params), (F, "glGetUniformfv(%d, %d, %p);\n", program, location, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetUniformfvARB)(GLhandleARB program, GLint location, GLfloat * params)
-{
-   DISPATCH(GetUniformfvARB, (program, location, params), (F, "glGetUniformfvARB(%d, %d, %p);\n", program, location, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetUniformiv)(GLuint program, GLint location, GLint * params)
-{
-   DISPATCH(GetUniformivARB, (program, location, params), (F, "glGetUniformiv(%d, %d, %p);\n", program, location, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetUniformivARB)(GLhandleARB program, GLint location, GLint * params)
-{
-   DISPATCH(GetUniformivARB, (program, location, params), (F, "glGetUniformivARB(%d, %d, %p);\n", program, location, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LinkProgram)(GLuint program)
-{
-   DISPATCH(LinkProgramARB, (program), (F, "glLinkProgram(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LinkProgramARB)(GLhandleARB program)
-{
-   DISPATCH(LinkProgramARB, (program), (F, "glLinkProgramARB(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ShaderSource)(GLuint shader, GLsizei count, const GLchar ** string, const GLint * length)
-{
-   DISPATCH(ShaderSourceARB, (shader, count, string, length), (F, "glShaderSource(%d, %d, %p, %p);\n", shader, count, (const void *) string, (const void *) length));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ShaderSourceARB)(GLhandleARB shader, GLsizei count, const GLcharARB ** string, const GLint * length)
-{
-   DISPATCH(ShaderSourceARB, (shader, count, string, length), (F, "glShaderSourceARB(%d, %d, %p, %p);\n", shader, count, (const void *) string, (const void *) length));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1f)(GLint location, GLfloat v0)
-{
-   DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1f(%d, %f);\n", location, v0));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1fARB)(GLint location, GLfloat v0)
-{
-   DISPATCH(Uniform1fARB, (location, v0), (F, "glUniform1fARB(%d, %f);\n", location, v0));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1fv)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform1fvARB, (location, count, value), (F, "glUniform1fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1i)(GLint location, GLint v0)
-{
-   DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1i(%d, %d);\n", location, v0));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1iARB)(GLint location, GLint v0)
-{
-   DISPATCH(Uniform1iARB, (location, v0), (F, "glUniform1iARB(%d, %d);\n", location, v0));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1iv)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1iv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform1ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform1ivARB, (location, count, value), (F, "glUniform1ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2f)(GLint location, GLfloat v0, GLfloat v1)
-{
-   DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2f(%d, %f, %f);\n", location, v0, v1));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2fARB)(GLint location, GLfloat v0, GLfloat v1)
-{
-   DISPATCH(Uniform2fARB, (location, v0, v1), (F, "glUniform2fARB(%d, %f, %f);\n", location, v0, v1));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2fv)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform2fvARB, (location, count, value), (F, "glUniform2fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2i)(GLint location, GLint v0, GLint v1)
-{
-   DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2i(%d, %d, %d);\n", location, v0, v1));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2iARB)(GLint location, GLint v0, GLint v1)
-{
-   DISPATCH(Uniform2iARB, (location, v0, v1), (F, "glUniform2iARB(%d, %d, %d);\n", location, v0, v1));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2iv)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2iv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform2ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform2ivARB, (location, count, value), (F, "glUniform2ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
-{
-   DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3f(%d, %f, %f, %f);\n", location, v0, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2)
-{
-   DISPATCH(Uniform3fARB, (location, v0, v1, v2), (F, "glUniform3fARB(%d, %f, %f, %f);\n", location, v0, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3fv)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform3fvARB, (location, count, value), (F, "glUniform3fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3i)(GLint location, GLint v0, GLint v1, GLint v2)
-{
-   DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3i(%d, %d, %d, %d);\n", location, v0, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3iARB)(GLint location, GLint v0, GLint v1, GLint v2)
-{
-   DISPATCH(Uniform3iARB, (location, v0, v1, v2), (F, "glUniform3iARB(%d, %d, %d, %d);\n", location, v0, v1, v2));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3iv)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3iv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform3ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform3ivARB, (location, count, value), (F, "glUniform3ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4f)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
-{
-   DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4f(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4fARB)(GLint location, GLfloat v0, GLfloat v1, GLfloat v2, GLfloat v3)
-{
-   DISPATCH(Uniform4fARB, (location, v0, v1, v2, v3), (F, "glUniform4fARB(%d, %f, %f, %f, %f);\n", location, v0, v1, v2, v3));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4fv)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4fvARB)(GLint location, GLsizei count, const GLfloat * value)
-{
-   DISPATCH(Uniform4fvARB, (location, count, value), (F, "glUniform4fvARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4i)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
-{
-   DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4i(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4iARB)(GLint location, GLint v0, GLint v1, GLint v2, GLint v3)
-{
-   DISPATCH(Uniform4iARB, (location, v0, v1, v2, v3), (F, "glUniform4iARB(%d, %d, %d, %d, %d);\n", location, v0, v1, v2, v3));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4iv)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4iv(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(Uniform4ivARB)(GLint location, GLsizei count, const GLint * value)
-{
-   DISPATCH(Uniform4ivARB, (location, count, value), (F, "glUniform4ivARB(%d, %d, %p);\n", location, count, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix2fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix2fvARB, (location, count, transpose, value), (F, "glUniformMatrix2fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix3fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix3fvARB, (location, count, transpose, value), (F, "glUniformMatrix3fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fv)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fv(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UniformMatrix4fvARB)(GLint location, GLsizei count, GLboolean transpose, const GLfloat * value)
-{
-   DISPATCH(UniformMatrix4fvARB, (location, count, transpose, value), (F, "glUniformMatrix4fvARB(%d, %d, %d, %p);\n", location, count, transpose, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UseProgram)(GLuint program)
-{
-   DISPATCH(UseProgramObjectARB, (program), (F, "glUseProgram(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UseProgramObjectARB)(GLhandleARB program)
-{
-   DISPATCH(UseProgramObjectARB, (program), (F, "glUseProgramObjectARB(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ValidateProgram)(GLuint program)
-{
-   DISPATCH(ValidateProgramARB, (program), (F, "glValidateProgram(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ValidateProgramARB)(GLhandleARB program)
-{
-   DISPATCH(ValidateProgramARB, (program), (F, "glValidateProgramARB(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindAttribLocation)(GLuint program, GLuint index, const GLchar * name)
-{
-   DISPATCH(BindAttribLocationARB, (program, index, name), (F, "glBindAttribLocation(%d, %d, %p);\n", program, index, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindAttribLocationARB)(GLhandleARB program, GLuint index, const GLcharARB * name)
-{
-   DISPATCH(BindAttribLocationARB, (program, index, name), (F, "glBindAttribLocationARB(%d, %d, %p);\n", program, index, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetActiveAttrib)(GLuint program, GLuint index, GLsizei  bufSize, GLsizei * length, GLint * size, GLenum * type, GLchar * name)
-{
-   DISPATCH(GetActiveAttribARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveAttrib(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetActiveAttribARB)(GLhandleARB program, GLuint index, GLsizei bufSize, GLsizei * length, GLint * size, GLenum * type, GLcharARB * name)
-{
-   DISPATCH(GetActiveAttribARB, (program, index, bufSize, length, size, type, name), (F, "glGetActiveAttribARB(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocation)(GLuint program, const GLchar * name)
-{
-   RETURN_DISPATCH(GetAttribLocationARB, (program, name), (F, "glGetAttribLocation(%d, %p);\n", program, (const void *) name));
-}
-
-KEYWORD1 GLint KEYWORD2 NAME(GetAttribLocationARB)(GLhandleARB program, const GLcharARB * name)
-{
-   RETURN_DISPATCH(GetAttribLocationARB, (program, name), (F, "glGetAttribLocationARB(%d, %p);\n", program, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawBuffers)(GLsizei n, const GLenum * bufs)
-{
-   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffers(%d, %p);\n", n, (const void *) bufs));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawBuffersARB)(GLsizei n, const GLenum * bufs)
-{
-   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersARB(%d, %p);\n", n, (const void *) bufs));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawBuffersATI)(GLsizei n, const GLenum * bufs)
-{
-   DISPATCH(DrawBuffersARB, (n, bufs), (F, "glDrawBuffersATI(%d, %p);\n", n, (const void *) bufs));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageMultisample)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-{
-   DISPATCH(RenderbufferStorageMultisample, (target, samples, internalformat, width, height), (F, "glRenderbufferStorageMultisample(0x%x, %d, 0x%x, %d, %d);\n", target, samples, internalformat, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageMultisampleEXT)(GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height)
-{
-   DISPATCH(RenderbufferStorageMultisample, (target, samples, internalformat, width, height), (F, "glRenderbufferStorageMultisampleEXT(0x%x, %d, 0x%x, %d, %d);\n", target, samples, internalformat, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FlushMappedBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length)
-{
-   DISPATCH(FlushMappedBufferRange, (target, offset, length), (F, "glFlushMappedBufferRange(0x%x, %d, %d);\n", target, offset, length));
-}
-
-KEYWORD1 GLvoid * KEYWORD2 NAME(MapBufferRange)(GLenum target, GLintptr offset, GLsizeiptr length, GLbitfield access)
-{
-   RETURN_DISPATCH(MapBufferRange, (target, offset, length, access), (F, "glMapBufferRange(0x%x, %d, %d, %d);\n", target, offset, length, access));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindVertexArray)(GLuint array)
-{
-   DISPATCH(BindVertexArray, (array), (F, "glBindVertexArray(%d);\n", array));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenVertexArrays)(GLsizei n, GLuint * arrays)
-{
-   DISPATCH(GenVertexArrays, (n, arrays), (F, "glGenVertexArrays(%d, %p);\n", n, (const void *) arrays));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CopyBufferSubData)(GLenum readTarget, GLenum writeTarget, GLintptr readOffset, GLintptr writeOffset, GLsizeiptr size)
-{
-   DISPATCH(CopyBufferSubData, (readTarget, writeTarget, readOffset, writeOffset, size), (F, "glCopyBufferSubData(0x%x, 0x%x, %d, %d, %d);\n", readTarget, writeTarget, readOffset, writeOffset, size));
-}
-
-KEYWORD1 GLenum KEYWORD2 NAME(ClientWaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
-{
-   RETURN_DISPATCH(ClientWaitSync, (sync, flags, timeout), (F, "glClientWaitSync(%d, %d, %d);\n", sync, flags, timeout));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteSync)(GLsync sync)
-{
-   DISPATCH(DeleteSync, (sync), (F, "glDeleteSync(%d);\n", sync));
-}
-
-KEYWORD1 GLsync KEYWORD2 NAME(FenceSync)(GLenum condition, GLbitfield flags)
-{
-   RETURN_DISPATCH(FenceSync, (condition, flags), (F, "glFenceSync(0x%x, %d);\n", condition, flags));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetInteger64v)(GLenum pname, GLint64 * params)
-{
-   DISPATCH(GetInteger64v, (pname, params), (F, "glGetInteger64v(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetSynciv)(GLsync sync, GLenum pname, GLsizei bufSize, GLsizei * length, GLint * values)
-{
-   DISPATCH(GetSynciv, (sync, pname, bufSize, length, values), (F, "glGetSynciv(%d, 0x%x, %d, %p, %p);\n", sync, pname, bufSize, (const void *) length, (const void *) values));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsSync)(GLsync sync)
-{
-   RETURN_DISPATCH(IsSync, (sync), (F, "glIsSync(%d);\n", sync));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WaitSync)(GLsync sync, GLbitfield flags, GLuint64 timeout)
-{
-   DISPATCH(WaitSync, (sync, flags, timeout), (F, "glWaitSync(%d, %d, %d);\n", sync, flags, timeout));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawElementsBaseVertex)(GLenum mode, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex)
-{
-   DISPATCH(DrawElementsBaseVertex, (mode, count, type, indices, basevertex), (F, "glDrawElementsBaseVertex(0x%x, %d, 0x%x, %p, %d);\n", mode, count, type, (const void *) indices, basevertex));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DrawRangeElementsBaseVertex)(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid * indices, GLint basevertex)
-{
-   DISPATCH(DrawRangeElementsBaseVertex, (mode, start, end, count, type, indices, basevertex), (F, "glDrawRangeElementsBaseVertex(0x%x, %d, %d, %d, 0x%x, %p, %d);\n", mode, start, end, count, type, (const void *) indices, basevertex));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsBaseVertex)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount, const GLint * basevertex)
-{
-   DISPATCH(MultiDrawElementsBaseVertex, (mode, count, type, indices, primcount, basevertex), (F, "glMultiDrawElementsBaseVertex(0x%x, %p, 0x%x, %p, %d, %p);\n", mode, (const void *) count, type, (const void *) indices, primcount, (const void *) basevertex));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PolygonOffsetEXT)(GLfloat factor, GLfloat bias)
-{
-   DISPATCH(PolygonOffsetEXT, (factor, bias), (F, "glPolygonOffsetEXT(%f, %f);\n", factor, bias));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_580)(GLenum pname, GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_580)(GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetPixelTexGenParameterfvSGIS, (pname, params), (F, "glGetPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_581)(GLenum pname, GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_581)(GLenum pname, GLint * params)
-{
-   DISPATCH(GetPixelTexGenParameterivSGIS, (pname, params), (F, "glGetPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_582)(GLenum pname, GLfloat param);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_582)(GLenum pname, GLfloat param)
-{
-   DISPATCH(PixelTexGenParameterfSGIS, (pname, param), (F, "glPixelTexGenParameterfSGIS(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_583)(GLenum pname, const GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_583)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(PixelTexGenParameterfvSGIS, (pname, params), (F, "glPixelTexGenParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_584)(GLenum pname, GLint param);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_584)(GLenum pname, GLint param)
-{
-   DISPATCH(PixelTexGenParameteriSGIS, (pname, param), (F, "glPixelTexGenParameteriSGIS(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_585)(GLenum pname, const GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_585)(GLenum pname, const GLint * params)
-{
-   DISPATCH(PixelTexGenParameterivSGIS, (pname, params), (F, "glPixelTexGenParameterivSGIS(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_586)(GLclampf value, GLboolean invert);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_586)(GLclampf value, GLboolean invert)
-{
-   DISPATCH(SampleMaskSGIS, (value, invert), (F, "glSampleMaskSGIS(%f, %d);\n", value, invert));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_587)(GLenum pattern);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_587)(GLenum pattern)
-{
-   DISPATCH(SamplePatternSGIS, (pattern), (F, "glSamplePatternSGIS(0x%x);\n", pattern));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
-{
-   DISPATCH(ColorPointerEXT, (size, type, stride, count, pointer), (F, "glColorPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EdgeFlagPointerEXT)(GLsizei stride, GLsizei count, const GLboolean * pointer)
-{
-   DISPATCH(EdgeFlagPointerEXT, (stride, count, pointer), (F, "glEdgeFlagPointerEXT(%d, %d, %p);\n", stride, count, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(IndexPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
-{
-   DISPATCH(IndexPointerEXT, (type, stride, count, pointer), (F, "glIndexPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(NormalPointerEXT)(GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
-{
-   DISPATCH(NormalPointerEXT, (type, stride, count, pointer), (F, "glNormalPointerEXT(0x%x, %d, %d, %p);\n", type, stride, count, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexCoordPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
-{
-   DISPATCH(TexCoordPointerEXT, (size, type, stride, count, pointer), (F, "glTexCoordPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexPointerEXT)(GLint size, GLenum type, GLsizei stride, GLsizei count, const GLvoid * pointer)
-{
-   DISPATCH(VertexPointerEXT, (size, type, stride, count, pointer), (F, "glVertexPointerEXT(%d, 0x%x, %d, %d, %p);\n", size, type, stride, count, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameterf)(GLenum pname, GLfloat param)
-{
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterf(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameterfARB)(GLenum pname, GLfloat param)
-{
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfARB(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameterfEXT)(GLenum pname, GLfloat param)
-{
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfEXT(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_594)(GLenum pname, GLfloat param);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_594)(GLenum pname, GLfloat param)
-{
-   DISPATCH(PointParameterfEXT, (pname, param), (F, "glPointParameterfSGIS(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameterfv)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameterfvARB)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvARB(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameterfvEXT)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_595)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(PointParameterfvEXT, (pname, params), (F, "glPointParameterfvSGIS(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LockArraysEXT)(GLint first, GLsizei count)
-{
-   DISPATCH(LockArraysEXT, (first, count), (F, "glLockArraysEXT(%d, %d);\n", first, count));
-}
-
-KEYWORD1 void KEYWORD2 NAME(UnlockArraysEXT)(void)
-{
-   DISPATCH(UnlockArraysEXT, (), (F, "glUnlockArraysEXT();\n"));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_598)(GLenum pname, GLdouble * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_598)(GLenum pname, GLdouble * params)
-{
-   DISPATCH(CullParameterdvEXT, (pname, params), (F, "glCullParameterdvEXT(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_599)(GLenum pname, GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_599)(GLenum pname, GLfloat * params)
-{
-   DISPATCH(CullParameterfvEXT, (pname, params), (F, "glCullParameterfvEXT(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3b)(GLbyte red, GLbyte green, GLbyte blue)
-{
-   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3b(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bEXT)(GLbyte red, GLbyte green, GLbyte blue)
-{
-   DISPATCH(SecondaryColor3bEXT, (red, green, blue), (F, "glSecondaryColor3bEXT(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bv)(const GLbyte * v)
-{
-   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3bvEXT)(const GLbyte * v)
-{
-   DISPATCH(SecondaryColor3bvEXT, (v), (F, "glSecondaryColor3bvEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3d)(GLdouble red, GLdouble green, GLdouble blue)
-{
-   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3d(%f, %f, %f);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dEXT)(GLdouble red, GLdouble green, GLdouble blue)
-{
-   DISPATCH(SecondaryColor3dEXT, (red, green, blue), (F, "glSecondaryColor3dEXT(%f, %f, %f);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dv)(const GLdouble * v)
-{
-   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3dvEXT)(const GLdouble * v)
-{
-   DISPATCH(SecondaryColor3dvEXT, (v), (F, "glSecondaryColor3dvEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3f)(GLfloat red, GLfloat green, GLfloat blue)
-{
-   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3f(%f, %f, %f);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fEXT)(GLfloat red, GLfloat green, GLfloat blue)
-{
-   DISPATCH(SecondaryColor3fEXT, (red, green, blue), (F, "glSecondaryColor3fEXT(%f, %f, %f);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fv)(const GLfloat * v)
-{
-   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3fvEXT)(const GLfloat * v)
-{
-   DISPATCH(SecondaryColor3fvEXT, (v), (F, "glSecondaryColor3fvEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3i)(GLint red, GLint green, GLint blue)
-{
-   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3i(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iEXT)(GLint red, GLint green, GLint blue)
-{
-   DISPATCH(SecondaryColor3iEXT, (red, green, blue), (F, "glSecondaryColor3iEXT(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3iv)(const GLint * v)
-{
-   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ivEXT)(const GLint * v)
-{
-   DISPATCH(SecondaryColor3ivEXT, (v), (F, "glSecondaryColor3ivEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3s)(GLshort red, GLshort green, GLshort blue)
-{
-   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3s(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sEXT)(GLshort red, GLshort green, GLshort blue)
-{
-   DISPATCH(SecondaryColor3sEXT, (red, green, blue), (F, "glSecondaryColor3sEXT(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3sv)(const GLshort * v)
-{
-   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3svEXT)(const GLshort * v)
-{
-   DISPATCH(SecondaryColor3svEXT, (v), (F, "glSecondaryColor3svEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ub)(GLubyte red, GLubyte green, GLubyte blue)
-{
-   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ub(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubEXT)(GLubyte red, GLubyte green, GLubyte blue)
-{
-   DISPATCH(SecondaryColor3ubEXT, (red, green, blue), (F, "glSecondaryColor3ubEXT(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubv)(const GLubyte * v)
-{
-   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ubvEXT)(const GLubyte * v)
-{
-   DISPATCH(SecondaryColor3ubvEXT, (v), (F, "glSecondaryColor3ubvEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3ui)(GLuint red, GLuint green, GLuint blue)
-{
-   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3ui(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiEXT)(GLuint red, GLuint green, GLuint blue)
-{
-   DISPATCH(SecondaryColor3uiEXT, (red, green, blue), (F, "glSecondaryColor3uiEXT(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uiv)(const GLuint * v)
-{
-   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uiv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3uivEXT)(const GLuint * v)
-{
-   DISPATCH(SecondaryColor3uivEXT, (v), (F, "glSecondaryColor3uivEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3us)(GLushort red, GLushort green, GLushort blue)
-{
-   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3us(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usEXT)(GLushort red, GLushort green, GLushort blue)
-{
-   DISPATCH(SecondaryColor3usEXT, (red, green, blue), (F, "glSecondaryColor3usEXT(%d, %d, %d);\n", red, green, blue));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usv)(const GLushort * v)
-{
-   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColor3usvEXT)(const GLushort * v)
-{
-   DISPATCH(SecondaryColor3usvEXT, (v), (F, "glSecondaryColor3usvEXT(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointer)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointer(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SecondaryColorPointerEXT)(GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(SecondaryColorPointerEXT, (size, type, stride, pointer), (F, "glSecondaryColorPointerEXT(%d, 0x%x, %d, %p);\n", size, type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiDrawArrays)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
-{
-   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArrays(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiDrawArraysEXT)(GLenum mode, GLint * first, GLsizei * count, GLsizei primcount)
-{
-   DISPATCH(MultiDrawArraysEXT, (mode, first, count, primcount), (F, "glMultiDrawArraysEXT(0x%x, %p, %p, %d);\n", mode, (const void *) first, (const void *) count, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiDrawElements)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
-{
-   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElements(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(MultiDrawElementsEXT)(GLenum mode, const GLsizei * count, GLenum type, const GLvoid ** indices, GLsizei primcount)
-{
-   DISPATCH(MultiDrawElementsEXT, (mode, count, type, indices, primcount), (F, "glMultiDrawElementsEXT(0x%x, %p, 0x%x, %p, %d);\n", mode, (const void *) count, type, (const void *) indices, primcount));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoordPointer)(GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointer(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoordPointerEXT)(GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(FogCoordPointerEXT, (type, stride, pointer), (F, "glFogCoordPointerEXT(0x%x, %d, %p);\n", type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoordd)(GLdouble coord)
-{
-   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoordd(%f);\n", coord));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoorddEXT)(GLdouble coord)
-{
-   DISPATCH(FogCoorddEXT, (coord), (F, "glFogCoorddEXT(%f);\n", coord));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoorddv)(const GLdouble * coord)
-{
-   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddv(%p);\n", (const void *) coord));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoorddvEXT)(const GLdouble * coord)
-{
-   DISPATCH(FogCoorddvEXT, (coord), (F, "glFogCoorddvEXT(%p);\n", (const void *) coord));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoordf)(GLfloat coord)
-{
-   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordf(%f);\n", coord));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoordfEXT)(GLfloat coord)
-{
-   DISPATCH(FogCoordfEXT, (coord), (F, "glFogCoordfEXT(%f);\n", coord));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoordfv)(const GLfloat * coord)
-{
-   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfv(%p);\n", (const void *) coord));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FogCoordfvEXT)(const GLfloat * coord)
-{
-   DISPATCH(FogCoordfvEXT, (coord), (F, "glFogCoordfvEXT(%p);\n", (const void *) coord));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_624)(GLenum mode);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_624)(GLenum mode)
-{
-   DISPATCH(PixelTexGenSGIX, (mode), (F, "glPixelTexGenSGIX(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparate)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
-{
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparate(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendFuncSeparateEXT)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
-{
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateEXT(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_625)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_625)(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
-{
-   DISPATCH(BlendFuncSeparateEXT, (sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha), (F, "glBlendFuncSeparateINGR(0x%x, 0x%x, 0x%x, 0x%x);\n", sfactorRGB, dfactorRGB, sfactorAlpha, dfactorAlpha));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FlushVertexArrayRangeNV)(void)
-{
-   DISPATCH(FlushVertexArrayRangeNV, (), (F, "glFlushVertexArrayRangeNV();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexArrayRangeNV)(GLsizei length, const GLvoid * pointer)
-{
-   DISPATCH(VertexArrayRangeNV, (length, pointer), (F, "glVertexArrayRangeNV(%d, %p);\n", length, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CombinerInputNV)(GLenum stage, GLenum portion, GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
-{
-   DISPATCH(CombinerInputNV, (stage, portion, variable, input, mapping, componentUsage), (F, "glCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x);\n", stage, portion, variable, input, mapping, componentUsage));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CombinerOutputNV)(GLenum stage, GLenum portion, GLenum abOutput, GLenum cdOutput, GLenum sumOutput, GLenum scale, GLenum bias, GLboolean abDotProduct, GLboolean cdDotProduct, GLboolean muxSum)
-{
-   DISPATCH(CombinerOutputNV, (stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum), (F, "glCombinerOutputNV(0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, 0x%x, %d, %d, %d);\n", stage, portion, abOutput, cdOutput, sumOutput, scale, bias, abDotProduct, cdDotProduct, muxSum));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CombinerParameterfNV)(GLenum pname, GLfloat param)
-{
-   DISPATCH(CombinerParameterfNV, (pname, param), (F, "glCombinerParameterfNV(0x%x, %f);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CombinerParameterfvNV)(GLenum pname, const GLfloat * params)
-{
-   DISPATCH(CombinerParameterfvNV, (pname, params), (F, "glCombinerParameterfvNV(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CombinerParameteriNV)(GLenum pname, GLint param)
-{
-   DISPATCH(CombinerParameteriNV, (pname, param), (F, "glCombinerParameteriNV(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(CombinerParameterivNV)(GLenum pname, const GLint * params)
-{
-   DISPATCH(CombinerParameterivNV, (pname, params), (F, "glCombinerParameterivNV(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FinalCombinerInputNV)(GLenum variable, GLenum input, GLenum mapping, GLenum componentUsage)
-{
-   DISPATCH(FinalCombinerInputNV, (variable, input, mapping, componentUsage), (F, "glFinalCombinerInputNV(0x%x, 0x%x, 0x%x, 0x%x);\n", variable, input, mapping, componentUsage));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterfvNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetCombinerInputParameterfvNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterfvNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetCombinerInputParameterivNV)(GLenum stage, GLenum portion, GLenum variable, GLenum pname, GLint * params)
-{
-   DISPATCH(GetCombinerInputParameterivNV, (stage, portion, variable, pname, params), (F, "glGetCombinerInputParameterivNV(0x%x, 0x%x, 0x%x, 0x%x, %p);\n", stage, portion, variable, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterfvNV)(GLenum stage, GLenum portion, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetCombinerOutputParameterfvNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterfvNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetCombinerOutputParameterivNV)(GLenum stage, GLenum portion, GLenum pname, GLint * params)
-{
-   DISPATCH(GetCombinerOutputParameterivNV, (stage, portion, pname, params), (F, "glGetCombinerOutputParameterivNV(0x%x, 0x%x, 0x%x, %p);\n", stage, portion, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterfvNV)(GLenum variable, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetFinalCombinerInputParameterfvNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterfvNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetFinalCombinerInputParameterivNV)(GLenum variable, GLenum pname, GLint * params)
-{
-   DISPATCH(GetFinalCombinerInputParameterivNV, (variable, pname, params), (F, "glGetFinalCombinerInputParameterivNV(0x%x, 0x%x, %p);\n", variable, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ResizeBuffersMESA)(void)
-{
-   DISPATCH(ResizeBuffersMESA, (), (F, "glResizeBuffersMESA();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2d)(GLdouble x, GLdouble y)
-{
-   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2d(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dARB)(GLdouble x, GLdouble y)
-{
-   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dARB(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dMESA)(GLdouble x, GLdouble y)
-{
-   DISPATCH(WindowPos2dMESA, (x, y), (F, "glWindowPos2dMESA(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dv)(const GLdouble * v)
-{
-   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dvARB)(const GLdouble * v)
-{
-   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2dvMESA)(const GLdouble * v)
-{
-   DISPATCH(WindowPos2dvMESA, (v), (F, "glWindowPos2dvMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2f)(GLfloat x, GLfloat y)
-{
-   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2f(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fARB)(GLfloat x, GLfloat y)
-{
-   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fARB(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fMESA)(GLfloat x, GLfloat y)
-{
-   DISPATCH(WindowPos2fMESA, (x, y), (F, "glWindowPos2fMESA(%f, %f);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fv)(const GLfloat * v)
-{
-   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fvARB)(const GLfloat * v)
-{
-   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2fvMESA)(const GLfloat * v)
-{
-   DISPATCH(WindowPos2fvMESA, (v), (F, "glWindowPos2fvMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2i)(GLint x, GLint y)
-{
-   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2i(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2iARB)(GLint x, GLint y)
-{
-   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iARB(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2iMESA)(GLint x, GLint y)
-{
-   DISPATCH(WindowPos2iMESA, (x, y), (F, "glWindowPos2iMESA(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2iv)(const GLint * v)
-{
-   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2ivARB)(const GLint * v)
-{
-   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2ivMESA)(const GLint * v)
-{
-   DISPATCH(WindowPos2ivMESA, (v), (F, "glWindowPos2ivMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2s)(GLshort x, GLshort y)
-{
-   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2s(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2sARB)(GLshort x, GLshort y)
-{
-   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sARB(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2sMESA)(GLshort x, GLshort y)
-{
-   DISPATCH(WindowPos2sMESA, (x, y), (F, "glWindowPos2sMESA(%d, %d);\n", x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2sv)(const GLshort * v)
-{
-   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2svARB)(const GLshort * v)
-{
-   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos2svMESA)(const GLshort * v)
-{
-   DISPATCH(WindowPos2svMESA, (v), (F, "glWindowPos2svMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3d)(GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3d(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dARB)(GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dARB(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dMESA)(GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(WindowPos3dMESA, (x, y, z), (F, "glWindowPos3dMESA(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dv)(const GLdouble * v)
-{
-   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dvARB)(const GLdouble * v)
-{
-   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3dvMESA)(const GLdouble * v)
-{
-   DISPATCH(WindowPos3dvMESA, (v), (F, "glWindowPos3dvMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3f)(GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3f(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fARB)(GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fARB(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fMESA)(GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(WindowPos3fMESA, (x, y, z), (F, "glWindowPos3fMESA(%f, %f, %f);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fv)(const GLfloat * v)
-{
-   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fvARB)(const GLfloat * v)
-{
-   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3fvMESA)(const GLfloat * v)
-{
-   DISPATCH(WindowPos3fvMESA, (v), (F, "glWindowPos3fvMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3i)(GLint x, GLint y, GLint z)
-{
-   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3i(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3iARB)(GLint x, GLint y, GLint z)
-{
-   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iARB(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3iMESA)(GLint x, GLint y, GLint z)
-{
-   DISPATCH(WindowPos3iMESA, (x, y, z), (F, "glWindowPos3iMESA(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3iv)(const GLint * v)
-{
-   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3iv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3ivARB)(const GLint * v)
-{
-   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3ivMESA)(const GLint * v)
-{
-   DISPATCH(WindowPos3ivMESA, (v), (F, "glWindowPos3ivMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3s)(GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3s(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3sARB)(GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sARB(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3sMESA)(GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(WindowPos3sMESA, (x, y, z), (F, "glWindowPos3sMESA(%d, %d, %d);\n", x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3sv)(const GLshort * v)
-{
-   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3sv(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3svARB)(const GLshort * v)
-{
-   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svARB(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos3svMESA)(const GLshort * v)
-{
-   DISPATCH(WindowPos3svMESA, (v), (F, "glWindowPos3svMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4dMESA)(GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(WindowPos4dMESA, (x, y, z, w), (F, "glWindowPos4dMESA(%f, %f, %f, %f);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4dvMESA)(const GLdouble * v)
-{
-   DISPATCH(WindowPos4dvMESA, (v), (F, "glWindowPos4dvMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4fMESA)(GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(WindowPos4fMESA, (x, y, z, w), (F, "glWindowPos4fMESA(%f, %f, %f, %f);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4fvMESA)(const GLfloat * v)
-{
-   DISPATCH(WindowPos4fvMESA, (v), (F, "glWindowPos4fvMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4iMESA)(GLint x, GLint y, GLint z, GLint w)
-{
-   DISPATCH(WindowPos4iMESA, (x, y, z, w), (F, "glWindowPos4iMESA(%d, %d, %d, %d);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4ivMESA)(const GLint * v)
-{
-   DISPATCH(WindowPos4ivMESA, (v), (F, "glWindowPos4ivMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4sMESA)(GLshort x, GLshort y, GLshort z, GLshort w)
-{
-   DISPATCH(WindowPos4sMESA, (x, y, z, w), (F, "glWindowPos4sMESA(%d, %d, %d, %d);\n", x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(WindowPos4svMESA)(const GLshort * v)
-{
-   DISPATCH(WindowPos4svMESA, (v), (F, "glWindowPos4svMESA(%p);\n", (const void *) v));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_666)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_666)(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride)
-{
-   DISPATCH(MultiModeDrawArraysIBM, (mode, first, count, primcount, modestride), (F, "glMultiModeDrawArraysIBM(%p, %p, %p, %d, %d);\n", (const void *) mode, (const void *) first, (const void *) count, primcount, modestride));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_667)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_667)(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride)
-{
-   DISPATCH(MultiModeDrawElementsIBM, (mode, count, type, indices, primcount, modestride), (F, "glMultiModeDrawElementsIBM(%p, %p, 0x%x, %p, %d, %d);\n", (const void *) mode, (const void *) count, type, (const void *) indices, primcount, modestride));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_668)(GLsizei n, const GLuint * fences);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_668)(GLsizei n, const GLuint * fences)
-{
-   DISPATCH(DeleteFencesNV, (n, fences), (F, "glDeleteFencesNV(%d, %p);\n", n, (const void *) fences));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_669)(GLuint fence);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_669)(GLuint fence)
-{
-   DISPATCH(FinishFenceNV, (fence), (F, "glFinishFenceNV(%d);\n", fence));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_670)(GLsizei n, GLuint * fences);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_670)(GLsizei n, GLuint * fences)
-{
-   DISPATCH(GenFencesNV, (n, fences), (F, "glGenFencesNV(%d, %p);\n", n, (const void *) fences));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_671)(GLuint fence, GLenum pname, GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_671)(GLuint fence, GLenum pname, GLint * params)
-{
-   DISPATCH(GetFenceivNV, (fence, pname, params), (F, "glGetFenceivNV(%d, 0x%x, %p);\n", fence, pname, (const void *) params));
-}
-
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_672)(GLuint fence);
-
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_672)(GLuint fence)
-{
-   RETURN_DISPATCH(IsFenceNV, (fence), (F, "glIsFenceNV(%d);\n", fence));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_673)(GLuint fence, GLenum condition);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_673)(GLuint fence, GLenum condition)
-{
-   DISPATCH(SetFenceNV, (fence, condition), (F, "glSetFenceNV(%d, 0x%x);\n", fence, condition));
-}
-
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_674)(GLuint fence);
-
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_674)(GLuint fence)
-{
-   RETURN_DISPATCH(TestFenceNV, (fence), (F, "glTestFenceNV(%d);\n", fence));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(AreProgramsResidentNV)(GLsizei n, const GLuint * ids, GLboolean * residences)
-{
-   RETURN_DISPATCH(AreProgramsResidentNV, (n, ids, residences), (F, "glAreProgramsResidentNV(%d, %p, %p);\n", n, (const void *) ids, (const void *) residences));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindProgramARB)(GLenum target, GLuint program)
-{
-   DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramARB(0x%x, %d);\n", target, program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindProgramNV)(GLenum target, GLuint program)
-{
-   DISPATCH(BindProgramNV, (target, program), (F, "glBindProgramNV(0x%x, %d);\n", target, program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteProgramsARB)(GLsizei n, const GLuint * programs)
-{
-   DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsARB(%d, %p);\n", n, (const void *) programs));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteProgramsNV)(GLsizei n, const GLuint * programs)
-{
-   DISPATCH(DeleteProgramsNV, (n, programs), (F, "glDeleteProgramsNV(%d, %p);\n", n, (const void *) programs));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ExecuteProgramNV)(GLenum target, GLuint id, const GLfloat * params)
-{
-   DISPATCH(ExecuteProgramNV, (target, id, params), (F, "glExecuteProgramNV(0x%x, %d, %p);\n", target, id, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenProgramsARB)(GLsizei n, GLuint * programs)
-{
-   DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsARB(%d, %p);\n", n, (const void *) programs));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenProgramsNV)(GLsizei n, GLuint * programs)
-{
-   DISPATCH(GenProgramsNV, (n, programs), (F, "glGenProgramsNV(%d, %p);\n", n, (const void *) programs));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramParameterdvNV)(GLenum target, GLuint index, GLenum pname, GLdouble * params)
-{
-   DISPATCH(GetProgramParameterdvNV, (target, index, pname, params), (F, "glGetProgramParameterdvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramParameterfvNV)(GLenum target, GLuint index, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetProgramParameterfvNV, (target, index, pname, params), (F, "glGetProgramParameterfvNV(0x%x, %d, 0x%x, %p);\n", target, index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramStringNV)(GLuint id, GLenum pname, GLubyte * program)
-{
-   DISPATCH(GetProgramStringNV, (id, pname, program), (F, "glGetProgramStringNV(%d, 0x%x, %p);\n", id, pname, (const void *) program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramivNV)(GLuint id, GLenum pname, GLint * params)
-{
-   DISPATCH(GetProgramivNV, (id, pname, params), (F, "glGetProgramivNV(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTrackMatrixivNV)(GLenum target, GLuint address, GLenum pname, GLint * params)
-{
-   DISPATCH(GetTrackMatrixivNV, (target, address, pname, params), (F, "glGetTrackMatrixivNV(0x%x, %d, 0x%x, %p);\n", target, address, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointerv)(GLuint index, GLenum pname, GLvoid ** pointer)
-{
-   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointerv(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervARB)(GLuint index, GLenum pname, GLvoid ** pointer)
-{
-   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervARB(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribPointervNV)(GLuint index, GLenum pname, GLvoid ** pointer)
-{
-   DISPATCH(GetVertexAttribPointervNV, (index, pname, pointer), (F, "glGetVertexAttribPointervNV(%d, 0x%x, %p);\n", index, pname, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribdvNV)(GLuint index, GLenum pname, GLdouble * params)
-{
-   DISPATCH(GetVertexAttribdvNV, (index, pname, params), (F, "glGetVertexAttribdvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribfvNV)(GLuint index, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetVertexAttribfvNV, (index, pname, params), (F, "glGetVertexAttribfvNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetVertexAttribivNV)(GLuint index, GLenum pname, GLint * params)
-{
-   DISPATCH(GetVertexAttribivNV, (index, pname, params), (F, "glGetVertexAttribivNV(%d, 0x%x, %p);\n", index, pname, (const void *) params));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramARB)(GLuint program)
-{
-   RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramARB(%d);\n", program));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsProgramNV)(GLuint program)
-{
-   RETURN_DISPATCH(IsProgramNV, (program), (F, "glIsProgramNV(%d);\n", program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(LoadProgramNV)(GLenum target, GLuint id, GLsizei len, const GLubyte * program)
-{
-   DISPATCH(LoadProgramNV, (target, id, len, program), (F, "glLoadProgramNV(0x%x, %d, %d, %p);\n", target, id, len, (const void *) program));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramParameters4dvNV)(GLenum target, GLuint index, GLuint num, const GLdouble * params)
-{
-   DISPATCH(ProgramParameters4dvNV, (target, index, num, params), (F, "glProgramParameters4dvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramParameters4fvNV)(GLenum target, GLuint index, GLuint num, const GLfloat * params)
-{
-   DISPATCH(ProgramParameters4fvNV, (target, index, num, params), (F, "glProgramParameters4fvNV(0x%x, %d, %d, %p);\n", target, index, num, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RequestResidentProgramsNV)(GLsizei n, const GLuint * ids)
-{
-   DISPATCH(RequestResidentProgramsNV, (n, ids), (F, "glRequestResidentProgramsNV(%d, %p);\n", n, (const void *) ids));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TrackMatrixNV)(GLenum target, GLuint address, GLenum matrix, GLenum transform)
-{
-   DISPATCH(TrackMatrixNV, (target, address, matrix, transform), (F, "glTrackMatrixNV(0x%x, %d, 0x%x, 0x%x);\n", target, address, matrix, transform));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dNV)(GLuint index, GLdouble x)
-{
-   DISPATCH(VertexAttrib1dNV, (index, x), (F, "glVertexAttrib1dNV(%d, %f);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1dvNV)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib1dvNV, (index, v), (F, "glVertexAttrib1dvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fNV)(GLuint index, GLfloat x)
-{
-   DISPATCH(VertexAttrib1fNV, (index, x), (F, "glVertexAttrib1fNV(%d, %f);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1fvNV)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib1fvNV, (index, v), (F, "glVertexAttrib1fvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1sNV)(GLuint index, GLshort x)
-{
-   DISPATCH(VertexAttrib1sNV, (index, x), (F, "glVertexAttrib1sNV(%d, %d);\n", index, x));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib1svNV)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib1svNV, (index, v), (F, "glVertexAttrib1svNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dNV)(GLuint index, GLdouble x, GLdouble y)
-{
-   DISPATCH(VertexAttrib2dNV, (index, x, y), (F, "glVertexAttrib2dNV(%d, %f, %f);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2dvNV)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib2dvNV, (index, v), (F, "glVertexAttrib2dvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fNV)(GLuint index, GLfloat x, GLfloat y)
-{
-   DISPATCH(VertexAttrib2fNV, (index, x, y), (F, "glVertexAttrib2fNV(%d, %f, %f);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2fvNV)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib2fvNV, (index, v), (F, "glVertexAttrib2fvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2sNV)(GLuint index, GLshort x, GLshort y)
-{
-   DISPATCH(VertexAttrib2sNV, (index, x, y), (F, "glVertexAttrib2sNV(%d, %d, %d);\n", index, x, y));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib2svNV)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib2svNV, (index, v), (F, "glVertexAttrib2svNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z)
-{
-   DISPATCH(VertexAttrib3dNV, (index, x, y, z), (F, "glVertexAttrib3dNV(%d, %f, %f, %f);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3dvNV)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib3dvNV, (index, v), (F, "glVertexAttrib3dvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z)
-{
-   DISPATCH(VertexAttrib3fNV, (index, x, y, z), (F, "glVertexAttrib3fNV(%d, %f, %f, %f);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3fvNV)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib3fvNV, (index, v), (F, "glVertexAttrib3fvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3sNV)(GLuint index, GLshort x, GLshort y, GLshort z)
-{
-   DISPATCH(VertexAttrib3sNV, (index, x, y, z), (F, "glVertexAttrib3sNV(%d, %d, %d, %d);\n", index, x, y, z));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib3svNV)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib3svNV, (index, v), (F, "glVertexAttrib3svNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dNV)(GLuint index, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(VertexAttrib4dNV, (index, x, y, z, w), (F, "glVertexAttrib4dNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4dvNV)(GLuint index, const GLdouble * v)
-{
-   DISPATCH(VertexAttrib4dvNV, (index, v), (F, "glVertexAttrib4dvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fNV)(GLuint index, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(VertexAttrib4fNV, (index, x, y, z, w), (F, "glVertexAttrib4fNV(%d, %f, %f, %f, %f);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4fvNV)(GLuint index, const GLfloat * v)
-{
-   DISPATCH(VertexAttrib4fvNV, (index, v), (F, "glVertexAttrib4fvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4sNV)(GLuint index, GLshort x, GLshort y, GLshort z, GLshort w)
-{
-   DISPATCH(VertexAttrib4sNV, (index, x, y, z, w), (F, "glVertexAttrib4sNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4svNV)(GLuint index, const GLshort * v)
-{
-   DISPATCH(VertexAttrib4svNV, (index, v), (F, "glVertexAttrib4svNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubNV)(GLuint index, GLubyte x, GLubyte y, GLubyte z, GLubyte w)
-{
-   DISPATCH(VertexAttrib4ubNV, (index, x, y, z, w), (F, "glVertexAttrib4ubNV(%d, %d, %d, %d, %d);\n", index, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttrib4ubvNV)(GLuint index, const GLubyte * v)
-{
-   DISPATCH(VertexAttrib4ubvNV, (index, v), (F, "glVertexAttrib4ubvNV(%d, %p);\n", index, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribPointerNV)(GLuint index, GLint size, GLenum type, GLsizei stride, const GLvoid * pointer)
-{
-   DISPATCH(VertexAttribPointerNV, (index, size, type, stride, pointer), (F, "glVertexAttribPointerNV(%d, %d, 0x%x, %d, %p);\n", index, size, type, stride, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs1dvNV)(GLuint index, GLsizei n, const GLdouble * v)
-{
-   DISPATCH(VertexAttribs1dvNV, (index, n, v), (F, "glVertexAttribs1dvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs1fvNV)(GLuint index, GLsizei n, const GLfloat * v)
-{
-   DISPATCH(VertexAttribs1fvNV, (index, n, v), (F, "glVertexAttribs1fvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs1svNV)(GLuint index, GLsizei n, const GLshort * v)
-{
-   DISPATCH(VertexAttribs1svNV, (index, n, v), (F, "glVertexAttribs1svNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs2dvNV)(GLuint index, GLsizei n, const GLdouble * v)
-{
-   DISPATCH(VertexAttribs2dvNV, (index, n, v), (F, "glVertexAttribs2dvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs2fvNV)(GLuint index, GLsizei n, const GLfloat * v)
-{
-   DISPATCH(VertexAttribs2fvNV, (index, n, v), (F, "glVertexAttribs2fvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs2svNV)(GLuint index, GLsizei n, const GLshort * v)
-{
-   DISPATCH(VertexAttribs2svNV, (index, n, v), (F, "glVertexAttribs2svNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs3dvNV)(GLuint index, GLsizei n, const GLdouble * v)
-{
-   DISPATCH(VertexAttribs3dvNV, (index, n, v), (F, "glVertexAttribs3dvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs3fvNV)(GLuint index, GLsizei n, const GLfloat * v)
-{
-   DISPATCH(VertexAttribs3fvNV, (index, n, v), (F, "glVertexAttribs3fvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs3svNV)(GLuint index, GLsizei n, const GLshort * v)
-{
-   DISPATCH(VertexAttribs3svNV, (index, n, v), (F, "glVertexAttribs3svNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4dvNV)(GLuint index, GLsizei n, const GLdouble * v)
-{
-   DISPATCH(VertexAttribs4dvNV, (index, n, v), (F, "glVertexAttribs4dvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4fvNV)(GLuint index, GLsizei n, const GLfloat * v)
-{
-   DISPATCH(VertexAttribs4fvNV, (index, n, v), (F, "glVertexAttribs4fvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4svNV)(GLuint index, GLsizei n, const GLshort * v)
-{
-   DISPATCH(VertexAttribs4svNV, (index, n, v), (F, "glVertexAttribs4svNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(VertexAttribs4ubvNV)(GLuint index, GLsizei n, const GLubyte * v)
-{
-   DISPATCH(VertexAttribs4ubvNV, (index, n, v), (F, "glVertexAttribs4ubvNV(%d, %d, %p);\n", index, n, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexBumpParameterfvATI)(GLenum pname, GLfloat * param)
-{
-   DISPATCH(GetTexBumpParameterfvATI, (pname, param), (F, "glGetTexBumpParameterfvATI(0x%x, %p);\n", pname, (const void *) param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTexBumpParameterivATI)(GLenum pname, GLint * param)
-{
-   DISPATCH(GetTexBumpParameterivATI, (pname, param), (F, "glGetTexBumpParameterivATI(0x%x, %p);\n", pname, (const void *) param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexBumpParameterfvATI)(GLenum pname, const GLfloat * param)
-{
-   DISPATCH(TexBumpParameterfvATI, (pname, param), (F, "glTexBumpParameterfvATI(0x%x, %p);\n", pname, (const void *) param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TexBumpParameterivATI)(GLenum pname, const GLint * param)
-{
-   DISPATCH(TexBumpParameterivATI, (pname, param), (F, "glTexBumpParameterivATI(0x%x, %p);\n", pname, (const void *) param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
-{
-   DISPATCH(AlphaFragmentOp1ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod), (F, "glAlphaFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod));
-}
-
-KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
-{
-   DISPATCH(AlphaFragmentOp2ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glAlphaFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
-}
-
-KEYWORD1 void KEYWORD2 NAME(AlphaFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
-{
-   DISPATCH(AlphaFragmentOp3ATI, (op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glAlphaFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BeginFragmentShaderATI)(void)
-{
-   DISPATCH(BeginFragmentShaderATI, (), (F, "glBeginFragmentShaderATI();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindFragmentShaderATI)(GLuint id)
-{
-   DISPATCH(BindFragmentShaderATI, (id), (F, "glBindFragmentShaderATI(%d);\n", id));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp1ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod)
-{
-   DISPATCH(ColorFragmentOp1ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod), (F, "glColorFragmentOp1ATI(0x%x, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp2ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod)
-{
-   DISPATCH(ColorFragmentOp2ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod), (F, "glColorFragmentOp2ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorFragmentOp3ATI)(GLenum op, GLuint dst, GLuint dstMask, GLuint dstMod, GLuint arg1, GLuint arg1Rep, GLuint arg1Mod, GLuint arg2, GLuint arg2Rep, GLuint arg2Mod, GLuint arg3, GLuint arg3Rep, GLuint arg3Mod)
-{
-   DISPATCH(ColorFragmentOp3ATI, (op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod), (F, "glColorFragmentOp3ATI(0x%x, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d, %d);\n", op, dst, dstMask, dstMod, arg1, arg1Rep, arg1Mod, arg2, arg2Rep, arg2Mod, arg3, arg3Rep, arg3Mod));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteFragmentShaderATI)(GLuint id)
-{
-   DISPATCH(DeleteFragmentShaderATI, (id), (F, "glDeleteFragmentShaderATI(%d);\n", id));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndFragmentShaderATI)(void)
-{
-   DISPATCH(EndFragmentShaderATI, (), (F, "glEndFragmentShaderATI();\n"));
-}
-
-KEYWORD1 GLuint KEYWORD2 NAME(GenFragmentShadersATI)(GLuint range)
-{
-   RETURN_DISPATCH(GenFragmentShadersATI, (range), (F, "glGenFragmentShadersATI(%d);\n", range));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PassTexCoordATI)(GLuint dst, GLuint coord, GLenum swizzle)
-{
-   DISPATCH(PassTexCoordATI, (dst, coord, swizzle), (F, "glPassTexCoordATI(%d, %d, 0x%x);\n", dst, coord, swizzle));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SampleMapATI)(GLuint dst, GLuint interp, GLenum swizzle)
-{
-   DISPATCH(SampleMapATI, (dst, interp, swizzle), (F, "glSampleMapATI(%d, %d, 0x%x);\n", dst, interp, swizzle));
-}
-
-KEYWORD1 void KEYWORD2 NAME(SetFragmentShaderConstantATI)(GLuint dst, const GLfloat * value)
-{
-   DISPATCH(SetFragmentShaderConstantATI, (dst, value), (F, "glSetFragmentShaderConstantATI(%d, %p);\n", dst, (const void *) value));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameteri)(GLenum pname, GLint param)
-{
-   DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteri(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameteriNV)(GLenum pname, GLint param)
-{
-   DISPATCH(PointParameteriNV, (pname, param), (F, "glPointParameteriNV(0x%x, %d);\n", pname, param));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameteriv)(GLenum pname, const GLint * params)
-{
-   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameteriv(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(PointParameterivNV)(GLenum pname, const GLint * params)
-{
-   DISPATCH(PointParameterivNV, (pname, params), (F, "glPointParameterivNV(0x%x, %p);\n", pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_755)(GLenum face);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_755)(GLenum face)
-{
-   DISPATCH(ActiveStencilFaceEXT, (face), (F, "glActiveStencilFaceEXT(0x%x);\n", face));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_756)(GLuint array);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_756)(GLuint array)
-{
-   DISPATCH(BindVertexArrayAPPLE, (array), (F, "glBindVertexArrayAPPLE(%d);\n", array));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteVertexArrays)(GLsizei n, const GLuint * arrays)
-{
-   DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArrays(%d, %p);\n", n, (const void *) arrays));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_757)(GLsizei n, const GLuint * arrays);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_757)(GLsizei n, const GLuint * arrays)
-{
-   DISPATCH(DeleteVertexArraysAPPLE, (n, arrays), (F, "glDeleteVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_758)(GLsizei n, GLuint * arrays);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_758)(GLsizei n, GLuint * arrays)
-{
-   DISPATCH(GenVertexArraysAPPLE, (n, arrays), (F, "glGenVertexArraysAPPLE(%d, %p);\n", n, (const void *) arrays));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsVertexArray)(GLuint array)
-{
-   RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArray(%d);\n", array));
-}
-
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_759)(GLuint array);
-
-KEYWORD1_ALT GLboolean KEYWORD2 NAME(_dispatch_stub_759)(GLuint array)
-{
-   RETURN_DISPATCH(IsVertexArrayAPPLE, (array), (F, "glIsVertexArrayAPPLE(%d);\n", array));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterdvNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble * params)
-{
-   DISPATCH(GetProgramNamedParameterdvNV, (id, len, name, params), (F, "glGetProgramNamedParameterdvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetProgramNamedParameterfvNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat * params)
-{
-   DISPATCH(GetProgramNamedParameterfvNV, (id, len, name, params), (F, "glGetProgramNamedParameterfvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dNV)(GLuint id, GLsizei len, const GLubyte * name, GLdouble x, GLdouble y, GLdouble z, GLdouble w)
-{
-   DISPATCH(ProgramNamedParameter4dNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4dNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4dvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLdouble * v)
-{
-   DISPATCH(ProgramNamedParameter4dvNV, (id, len, name, v), (F, "glProgramNamedParameter4dvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fNV)(GLuint id, GLsizei len, const GLubyte * name, GLfloat x, GLfloat y, GLfloat z, GLfloat w)
-{
-   DISPATCH(ProgramNamedParameter4fNV, (id, len, name, x, y, z, w), (F, "glProgramNamedParameter4fNV(%d, %d, %p, %f, %f, %f, %f);\n", id, len, (const void *) name, x, y, z, w));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProgramNamedParameter4fvNV)(GLuint id, GLsizei len, const GLubyte * name, const GLfloat * v)
-{
-   DISPATCH(ProgramNamedParameter4fvNV, (id, len, name, v), (F, "glProgramNamedParameter4fvNV(%d, %d, %p, %p);\n", id, len, (const void *) name, (const void *) v));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_766)(GLclampd zmin, GLclampd zmax);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_766)(GLclampd zmin, GLclampd zmax)
-{
-   DISPATCH(DepthBoundsEXT, (zmin, zmax), (F, "glDepthBoundsEXT(%f, %f);\n", zmin, zmax));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlendEquationSeparate)(GLenum modeRGB, GLenum modeA)
-{
-   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparate(0x%x, 0x%x);\n", modeRGB, modeA));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_767)(GLenum modeRGB, GLenum modeA);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_767)(GLenum modeRGB, GLenum modeA)
-{
-   DISPATCH(BlendEquationSeparateEXT, (modeRGB, modeA), (F, "glBlendEquationSeparateEXT(0x%x, 0x%x);\n", modeRGB, modeA));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindFramebuffer)(GLenum target, GLuint framebuffer)
-{
-   DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebuffer(0x%x, %d);\n", target, framebuffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindFramebufferEXT)(GLenum target, GLuint framebuffer)
-{
-   DISPATCH(BindFramebufferEXT, (target, framebuffer), (F, "glBindFramebufferEXT(0x%x, %d);\n", target, framebuffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindRenderbuffer)(GLenum target, GLuint renderbuffer)
-{
-   DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbuffer(0x%x, %d);\n", target, renderbuffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindRenderbufferEXT)(GLenum target, GLuint renderbuffer)
-{
-   DISPATCH(BindRenderbufferEXT, (target, renderbuffer), (F, "glBindRenderbufferEXT(0x%x, %d);\n", target, renderbuffer));
-}
-
-KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatus)(GLenum target)
-{
-   RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatus(0x%x);\n", target));
-}
-
-KEYWORD1 GLenum KEYWORD2 NAME(CheckFramebufferStatusEXT)(GLenum target)
-{
-   RETURN_DISPATCH(CheckFramebufferStatusEXT, (target), (F, "glCheckFramebufferStatusEXT(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffers)(GLsizei n, const GLuint * framebuffers)
-{
-   DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffers(%d, %p);\n", n, (const void *) framebuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteFramebuffersEXT)(GLsizei n, const GLuint * framebuffers)
-{
-   DISPATCH(DeleteFramebuffersEXT, (n, framebuffers), (F, "glDeleteFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffers)(GLsizei n, const GLuint * renderbuffers)
-{
-   DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffers(%d, %p);\n", n, (const void *) renderbuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteRenderbuffersEXT)(GLsizei n, const GLuint * renderbuffers)
-{
-   DISPATCH(DeleteRenderbuffersEXT, (n, renderbuffers), (F, "glDeleteRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbuffer)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
-{
-   DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbuffer(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferRenderbufferEXT)(GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer)
-{
-   DISPATCH(FramebufferRenderbufferEXT, (target, attachment, renderbuffertarget, renderbuffer), (F, "glFramebufferRenderbufferEXT(0x%x, 0x%x, 0x%x, %d);\n", target, attachment, renderbuffertarget, renderbuffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-{
-   DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1D(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture1DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-{
-   DISPATCH(FramebufferTexture1DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture1DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-{
-   DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2D(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture2DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level)
-{
-   DISPATCH(FramebufferTexture2DEXT, (target, attachment, textarget, texture, level), (F, "glFramebufferTexture2DEXT(0x%x, 0x%x, 0x%x, %d, %d);\n", target, attachment, textarget, texture, level));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3D)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
-{
-   DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3D(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTexture3DEXT)(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level, GLint zoffset)
-{
-   DISPATCH(FramebufferTexture3DEXT, (target, attachment, textarget, texture, level, zoffset), (F, "glFramebufferTexture3DEXT(0x%x, 0x%x, 0x%x, %d, %d, %d);\n", target, attachment, textarget, texture, level, zoffset));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenFramebuffers)(GLsizei n, GLuint * framebuffers)
-{
-   DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffers(%d, %p);\n", n, (const void *) framebuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenFramebuffersEXT)(GLsizei n, GLuint * framebuffers)
-{
-   DISPATCH(GenFramebuffersEXT, (n, framebuffers), (F, "glGenFramebuffersEXT(%d, %p);\n", n, (const void *) framebuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenRenderbuffers)(GLsizei n, GLuint * renderbuffers)
-{
-   DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffers(%d, %p);\n", n, (const void *) renderbuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenRenderbuffersEXT)(GLsizei n, GLuint * renderbuffers)
-{
-   DISPATCH(GenRenderbuffersEXT, (n, renderbuffers), (F, "glGenRenderbuffersEXT(%d, %p);\n", n, (const void *) renderbuffers));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenerateMipmap)(GLenum target)
-{
-   DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmap(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenerateMipmapEXT)(GLenum target)
-{
-   DISPATCH(GenerateMipmapEXT, (target), (F, "glGenerateMipmapEXT(0x%x);\n", target));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameteriv)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
-{
-   DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameteriv(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetFramebufferAttachmentParameterivEXT)(GLenum target, GLenum attachment, GLenum pname, GLint * params)
-{
-   DISPATCH(GetFramebufferAttachmentParameterivEXT, (target, attachment, pname, params), (F, "glGetFramebufferAttachmentParameterivEXT(0x%x, 0x%x, 0x%x, %p);\n", target, attachment, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameteriv)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameteriv(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetRenderbufferParameterivEXT)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetRenderbufferParameterivEXT, (target, pname, params), (F, "glGetRenderbufferParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebuffer)(GLuint framebuffer)
-{
-   RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebuffer(%d);\n", framebuffer));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsFramebufferEXT)(GLuint framebuffer)
-{
-   RETURN_DISPATCH(IsFramebufferEXT, (framebuffer), (F, "glIsFramebufferEXT(%d);\n", framebuffer));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbuffer)(GLuint renderbuffer)
-{
-   RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbuffer(%d);\n", renderbuffer));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsRenderbufferEXT)(GLuint renderbuffer)
-{
-   RETURN_DISPATCH(IsRenderbufferEXT, (renderbuffer), (F, "glIsRenderbufferEXT(%d);\n", renderbuffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RenderbufferStorage)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
-{
-   DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorage(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(RenderbufferStorageEXT)(GLenum target, GLenum internalformat, GLsizei width, GLsizei height)
-{
-   DISPATCH(RenderbufferStorageEXT, (target, internalformat, width, height), (F, "glRenderbufferStorageEXT(0x%x, 0x%x, %d, %d);\n", target, internalformat, width, height));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BlitFramebuffer)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
-{
-   DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebuffer(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_785)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_785)(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter)
-{
-   DISPATCH(BlitFramebufferEXT, (srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter), (F, "glBlitFramebufferEXT(%d, %d, %d, %d, %d, %d, %d, %d, %d, 0x%x);\n", srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_786)(GLenum target, GLenum pname, GLint param);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_786)(GLenum target, GLenum pname, GLint param)
-{
-   DISPATCH(BufferParameteriAPPLE, (target, pname, param), (F, "glBufferParameteriAPPLE(0x%x, 0x%x, %d);\n", target, pname, param));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLenum target, GLintptr offset, GLsizeiptr size);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_787)(GLenum target, GLintptr offset, GLsizeiptr size)
-{
-   DISPATCH(FlushMappedBufferRangeAPPLE, (target, offset, size), (F, "glFlushMappedBufferRangeAPPLE(0x%x, %d, %d);\n", target, offset, size));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayer)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
-{
-   DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayer(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(FramebufferTextureLayerEXT)(GLenum target, GLenum attachment, GLuint texture, GLint level, GLint layer)
-{
-   DISPATCH(FramebufferTextureLayerEXT, (target, attachment, texture, level, layer), (F, "glFramebufferTextureLayerEXT(0x%x, 0x%x, %d, %d, %d);\n", target, attachment, texture, level, layer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ColorMaskIndexedEXT)(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
-{
-   DISPATCH(ColorMaskIndexedEXT, (buf, r, g, b, a), (F, "glColorMaskIndexedEXT(%d, %d, %d, %d, %d);\n", buf, r, g, b, a));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DisableIndexedEXT)(GLenum target, GLuint index)
-{
-   DISPATCH(DisableIndexedEXT, (target, index), (F, "glDisableIndexedEXT(0x%x, %d);\n", target, index));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EnableIndexedEXT)(GLenum target, GLuint index)
-{
-   DISPATCH(EnableIndexedEXT, (target, index), (F, "glEnableIndexedEXT(0x%x, %d);\n", target, index));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetBooleanIndexedvEXT)(GLenum value, GLuint index, GLboolean * data)
-{
-   DISPATCH(GetBooleanIndexedvEXT, (value, index, data), (F, "glGetBooleanIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetIntegerIndexedvEXT)(GLenum value, GLuint index, GLint * data)
-{
-   DISPATCH(GetIntegerIndexedvEXT, (value, index, data), (F, "glGetIntegerIndexedvEXT(0x%x, %d, %p);\n", value, index, (const void *) data));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsEnabledIndexedEXT)(GLenum target, GLuint index)
-{
-   RETURN_DISPATCH(IsEnabledIndexedEXT, (target, index), (F, "glIsEnabledIndexedEXT(0x%x, %d);\n", target, index));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BeginConditionalRenderNV)(GLuint query, GLenum mode)
-{
-   DISPATCH(BeginConditionalRenderNV, (query, mode), (F, "glBeginConditionalRenderNV(%d, 0x%x);\n", query, mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndConditionalRenderNV)(void)
-{
-   DISPATCH(EndConditionalRenderNV, (), (F, "glEndConditionalRenderNV();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedbackEXT)(GLenum mode)
-{
-   DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedbackEXT(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BeginTransformFeedback)(GLenum mode)
-{
-   DISPATCH(BeginTransformFeedbackEXT, (mode), (F, "glBeginTransformFeedback(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBufferBaseEXT)(GLenum target, GLuint index, GLuint buffer)
-{
-   DISPATCH(BindBufferBaseEXT, (target, index, buffer), (F, "glBindBufferBaseEXT(0x%x, %d, %d);\n", target, index, buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBufferBase)(GLenum target, GLuint index, GLuint buffer)
-{
-   DISPATCH(BindBufferBaseEXT, (target, index, buffer), (F, "glBindBufferBase(0x%x, %d, %d);\n", target, index, buffer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBufferOffsetEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset)
-{
-   DISPATCH(BindBufferOffsetEXT, (target, index, buffer, offset), (F, "glBindBufferOffsetEXT(0x%x, %d, %d, %d);\n", target, index, buffer, offset));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBufferRangeEXT)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
-{
-   DISPATCH(BindBufferRangeEXT, (target, index, buffer, offset, size), (F, "glBindBufferRangeEXT(0x%x, %d, %d, %d, %d);\n", target, index, buffer, offset, size));
-}
-
-KEYWORD1 void KEYWORD2 NAME(BindBufferRange)(GLenum target, GLuint index, GLuint buffer, GLintptr offset, GLsizeiptr size)
-{
-   DISPATCH(BindBufferRangeEXT, (target, index, buffer, offset, size), (F, "glBindBufferRange(0x%x, %d, %d, %d, %d);\n", target, index, buffer, offset, size));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndTransformFeedbackEXT)(void)
-{
-   DISPATCH(EndTransformFeedbackEXT, (), (F, "glEndTransformFeedbackEXT();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EndTransformFeedback)(void)
-{
-   DISPATCH(EndTransformFeedbackEXT, (), (F, "glEndTransformFeedback();\n"));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTransformFeedbackVaryingEXT)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)
-{
-   DISPATCH(GetTransformFeedbackVaryingEXT, (program, index, bufSize, length, size, type, name), (F, "glGetTransformFeedbackVaryingEXT(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetTransformFeedbackVarying)(GLuint program, GLuint index, GLsizei bufSize, GLsizei * length, GLsizei * size, GLenum * type, GLchar * name)
-{
-   DISPATCH(GetTransformFeedbackVaryingEXT, (program, index, bufSize, length, size, type, name), (F, "glGetTransformFeedbackVarying(%d, %d, %d, %p, %p, %p, %p);\n", program, index, bufSize, (const void *) length, (const void *) size, (const void *) type, (const void *) name));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryingsEXT)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode)
-{
-   DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryingsEXT(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(TransformFeedbackVaryings)(GLuint program, GLsizei count, const char ** varyings, GLenum bufferMode)
-{
-   DISPATCH(TransformFeedbackVaryingsEXT, (program, count, varyings, bufferMode), (F, "glTransformFeedbackVaryings(%d, %d, %p, 0x%x);\n", program, count, (const void *) varyings, bufferMode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProvokingVertexEXT)(GLenum mode)
-{
-   DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertexEXT(0x%x);\n", mode));
-}
-
-KEYWORD1 void KEYWORD2 NAME(ProvokingVertex)(GLenum mode)
-{
-   DISPATCH(ProvokingVertexEXT, (mode), (F, "glProvokingVertex(0x%x);\n", mode));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_805)(GLenum target, GLenum pname, GLvoid ** params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_805)(GLenum target, GLenum pname, GLvoid ** params)
-{
-   DISPATCH(GetTexParameterPointervAPPLE, (target, pname, params), (F, "glGetTexParameterPointervAPPLE(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_806)(GLenum target, GLsizei length, GLvoid * pointer);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_806)(GLenum target, GLsizei length, GLvoid * pointer)
-{
-   DISPATCH(TextureRangeAPPLE, (target, length, pointer), (F, "glTextureRangeAPPLE(0x%x, %d, %p);\n", target, length, (const void *) pointer));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetObjectParameterivAPPLE)(GLenum objectType, GLuint name, GLenum pname, GLint * value)
-{
-   DISPATCH(GetObjectParameterivAPPLE, (objectType, name, pname, value), (F, "glGetObjectParameterivAPPLE(0x%x, %d, 0x%x, %p);\n", objectType, name, pname, (const void *) value));
-}
-
-KEYWORD1 GLenum KEYWORD2 NAME(ObjectPurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
-{
-   RETURN_DISPATCH(ObjectPurgeableAPPLE, (objectType, name, option), (F, "glObjectPurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option));
-}
-
-KEYWORD1 GLenum KEYWORD2 NAME(ObjectUnpurgeableAPPLE)(GLenum objectType, GLuint name, GLenum option)
-{
-   RETURN_DISPATCH(ObjectUnpurgeableAPPLE, (objectType, name, option), (F, "glObjectUnpurgeableAPPLE(0x%x, %d, 0x%x);\n", objectType, name, option));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_810)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_810)(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask)
-{
-   DISPATCH(StencilFuncSeparateATI, (frontfunc, backfunc, ref, mask), (F, "glStencilFuncSeparateATI(0x%x, 0x%x, %d, %d);\n", frontfunc, backfunc, ref, mask));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_811)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_811)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
-{
-   DISPATCH(ProgramEnvParameters4fvEXT, (target, index, count, params), (F, "glProgramEnvParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_812)(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_812)(GLenum target, GLuint index, GLsizei count, const GLfloat * params)
-{
-   DISPATCH(ProgramLocalParameters4fvEXT, (target, index, count, params), (F, "glProgramLocalParameters4fvEXT(0x%x, %d, %d, %p);\n", target, index, count, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_813)(GLuint id, GLenum pname, GLint64EXT * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_813)(GLuint id, GLenum pname, GLint64EXT * params)
-{
-   DISPATCH(GetQueryObjecti64vEXT, (id, pname, params), (F, "glGetQueryObjecti64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_814)(GLuint id, GLenum pname, GLuint64EXT * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_814)(GLuint id, GLenum pname, GLuint64EXT * params)
-{
-   DISPATCH(GetQueryObjectui64vEXT, (id, pname, params), (F, "glGetQueryObjectui64vEXT(%d, 0x%x, %p);\n", id, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EGLImageTargetRenderbufferStorageOES)(GLenum target, GLvoid * writeOffset)
-{
-   DISPATCH(EGLImageTargetRenderbufferStorageOES, (target, writeOffset), (F, "glEGLImageTargetRenderbufferStorageOES(0x%x, %p);\n", target, (const void *) writeOffset));
-}
-
-KEYWORD1 void KEYWORD2 NAME(EGLImageTargetTexture2DOES)(GLenum target, GLvoid * writeOffset)
-{
-   DISPATCH(EGLImageTargetTexture2DOES, (target, writeOffset), (F, "glEGLImageTargetTexture2DOES(0x%x, %p);\n", target, (const void *) writeOffset));
-}
-
-
-#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */
-
-/* these entry points might require different protocols */
-#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS
-
-KEYWORD1 GLboolean KEYWORD2 NAME(AreTexturesResidentEXT)(GLsizei n, const GLuint * textures, GLboolean * residences)
-{
-   RETURN_DISPATCH(AreTexturesResident, (n, textures, residences), (F, "glAreTexturesResidentEXT(%d, %p, %p);\n", n, (const void *) textures, (const void *) residences));
-}
-
-KEYWORD1 void KEYWORD2 NAME(DeleteTexturesEXT)(GLsizei n, const GLuint * textures)
-{
-   DISPATCH(DeleteTextures, (n, textures), (F, "glDeleteTexturesEXT(%d, %p);\n", n, (const void *) textures));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GenTexturesEXT)(GLsizei n, GLuint * textures)
-{
-   DISPATCH(GenTextures, (n, textures), (F, "glGenTexturesEXT(%d, %p);\n", n, (const void *) textures));
-}
-
-KEYWORD1 GLboolean KEYWORD2 NAME(IsTextureEXT)(GLuint texture)
-{
-   RETURN_DISPATCH(IsTexture, (texture), (F, "glIsTextureEXT(%d);\n", texture));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetColorTableEXT)(GLenum target, GLenum format, GLenum type, GLvoid * table)
-{
-   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTableEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_343)(GLenum target, GLenum format, GLenum type, GLvoid * table);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_343)(GLenum target, GLenum format, GLenum type, GLvoid * table)
-{
-   DISPATCH(GetColorTable, (target, format, type, table), (F, "glGetColorTableSGI(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) table));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterfvEXT)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_344)(GLenum target, GLenum pname, GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_344)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetColorTableParameterfv, (target, pname, params), (F, "glGetColorTableParameterfvSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1 void KEYWORD2 NAME(GetColorTableParameterivEXT)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_345)(GLenum target, GLenum pname, GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_345)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetColorTableParameteriv, (target, pname, params), (F, "glGetColorTableParameterivSGI(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_356)(GLenum target, GLenum format, GLenum type, GLvoid * image);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_356)(GLenum target, GLenum format, GLenum type, GLvoid * image)
-{
-   DISPATCH(GetConvolutionFilter, (target, format, type, image), (F, "glGetConvolutionFilterEXT(0x%x, 0x%x, 0x%x, %p);\n", target, format, type, (const void *) image));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_357)(GLenum target, GLenum pname, GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_357)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetConvolutionParameterfv, (target, pname, params), (F, "glGetConvolutionParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_358)(GLenum target, GLenum pname, GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_358)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetConvolutionParameteriv, (target, pname, params), (F, "glGetConvolutionParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_359)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_359)(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span)
-{
-   DISPATCH(GetSeparableFilter, (target, format, type, row, column, span), (F, "glGetSeparableFilterEXT(0x%x, 0x%x, 0x%x, %p, %p, %p);\n", target, format, type, (const void *) row, (const void *) column, (const void *) span));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_361)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_361)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
-{
-   DISPATCH(GetHistogram, (target, reset, format, type, values), (F, "glGetHistogramEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_362)(GLenum target, GLenum pname, GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_362)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetHistogramParameterfv, (target, pname, params), (F, "glGetHistogramParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_363)(GLenum target, GLenum pname, GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_363)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetHistogramParameteriv, (target, pname, params), (F, "glGetHistogramParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_364)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_364)(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values)
-{
-   DISPATCH(GetMinmax, (target, reset, format, type, values), (F, "glGetMinmaxEXT(0x%x, %d, 0x%x, 0x%x, %p);\n", target, reset, format, type, (const void *) values));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_365)(GLenum target, GLenum pname, GLfloat * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_365)(GLenum target, GLenum pname, GLfloat * params)
-{
-   DISPATCH(GetMinmaxParameterfv, (target, pname, params), (F, "glGetMinmaxParameterfvEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_366)(GLenum target, GLenum pname, GLint * params);
-
-KEYWORD1_ALT void KEYWORD2 NAME(_dispatch_stub_366)(GLenum target, GLenum pname, GLint * params)
-{
-   DISPATCH(GetMinmaxParameteriv, (target, pname, params), (F, "glGetMinmaxParameterivEXT(0x%x, 0x%x, %p);\n", target, pname, (const void *) params));
-}
-
-
-#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */
-
-
-#endif /* defined( NAME ) */
-
-/*
- * This is how a dispatch table can be initialized with all the functions
- * we generated above.
- */
-#ifdef DISPATCH_TABLE_NAME
-
-#ifndef TABLE_ENTRY
-#error TABLE_ENTRY must be defined
-#endif
-
-#ifdef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
-#error _GLAPI_SKIP_NORMAL_ENTRY_POINTS must not be defined
-#endif
-
-_glapi_proc DISPATCH_TABLE_NAME[] = {
-   TABLE_ENTRY(NewList),
-   TABLE_ENTRY(EndList),
-   TABLE_ENTRY(CallList),
-   TABLE_ENTRY(CallLists),
-   TABLE_ENTRY(DeleteLists),
-   TABLE_ENTRY(GenLists),
-   TABLE_ENTRY(ListBase),
-   TABLE_ENTRY(Begin),
-   TABLE_ENTRY(Bitmap),
-   TABLE_ENTRY(Color3b),
-   TABLE_ENTRY(Color3bv),
-   TABLE_ENTRY(Color3d),
-   TABLE_ENTRY(Color3dv),
-   TABLE_ENTRY(Color3f),
-   TABLE_ENTRY(Color3fv),
-   TABLE_ENTRY(Color3i),
-   TABLE_ENTRY(Color3iv),
-   TABLE_ENTRY(Color3s),
-   TABLE_ENTRY(Color3sv),
-   TABLE_ENTRY(Color3ub),
-   TABLE_ENTRY(Color3ubv),
-   TABLE_ENTRY(Color3ui),
-   TABLE_ENTRY(Color3uiv),
-   TABLE_ENTRY(Color3us),
-   TABLE_ENTRY(Color3usv),
-   TABLE_ENTRY(Color4b),
-   TABLE_ENTRY(Color4bv),
-   TABLE_ENTRY(Color4d),
-   TABLE_ENTRY(Color4dv),
-   TABLE_ENTRY(Color4f),
-   TABLE_ENTRY(Color4fv),
-   TABLE_ENTRY(Color4i),
-   TABLE_ENTRY(Color4iv),
-   TABLE_ENTRY(Color4s),
-   TABLE_ENTRY(Color4sv),
-   TABLE_ENTRY(Color4ub),
-   TABLE_ENTRY(Color4ubv),
-   TABLE_ENTRY(Color4ui),
-   TABLE_ENTRY(Color4uiv),
-   TABLE_ENTRY(Color4us),
-   TABLE_ENTRY(Color4usv),
-   TABLE_ENTRY(EdgeFlag),
-   TABLE_ENTRY(EdgeFlagv),
-   TABLE_ENTRY(End),
-   TABLE_ENTRY(Indexd),
-   TABLE_ENTRY(Indexdv),
-   TABLE_ENTRY(Indexf),
-   TABLE_ENTRY(Indexfv),
-   TABLE_ENTRY(Indexi),
-   TABLE_ENTRY(Indexiv),
-   TABLE_ENTRY(Indexs),
-   TABLE_ENTRY(Indexsv),
-   TABLE_ENTRY(Normal3b),
-   TABLE_ENTRY(Normal3bv),
-   TABLE_ENTRY(Normal3d),
-   TABLE_ENTRY(Normal3dv),
-   TABLE_ENTRY(Normal3f),
-   TABLE_ENTRY(Normal3fv),
-   TABLE_ENTRY(Normal3i),
-   TABLE_ENTRY(Normal3iv),
-   TABLE_ENTRY(Normal3s),
-   TABLE_ENTRY(Normal3sv),
-   TABLE_ENTRY(RasterPos2d),
-   TABLE_ENTRY(RasterPos2dv),
-   TABLE_ENTRY(RasterPos2f),
-   TABLE_ENTRY(RasterPos2fv),
-   TABLE_ENTRY(RasterPos2i),
-   TABLE_ENTRY(RasterPos2iv),
-   TABLE_ENTRY(RasterPos2s),
-   TABLE_ENTRY(RasterPos2sv),
-   TABLE_ENTRY(RasterPos3d),
-   TABLE_ENTRY(RasterPos3dv),
-   TABLE_ENTRY(RasterPos3f),
-   TABLE_ENTRY(RasterPos3fv),
-   TABLE_ENTRY(RasterPos3i),
-   TABLE_ENTRY(RasterPos3iv),
-   TABLE_ENTRY(RasterPos3s),
-   TABLE_ENTRY(RasterPos3sv),
-   TABLE_ENTRY(RasterPos4d),
-   TABLE_ENTRY(RasterPos4dv),
-   TABLE_ENTRY(RasterPos4f),
-   TABLE_ENTRY(RasterPos4fv),
-   TABLE_ENTRY(RasterPos4i),
-   TABLE_ENTRY(RasterPos4iv),
-   TABLE_ENTRY(RasterPos4s),
-   TABLE_ENTRY(RasterPos4sv),
-   TABLE_ENTRY(Rectd),
-   TABLE_ENTRY(Rectdv),
-   TABLE_ENTRY(Rectf),
-   TABLE_ENTRY(Rectfv),
-   TABLE_ENTRY(Recti),
-   TABLE_ENTRY(Rectiv),
-   TABLE_ENTRY(Rects),
-   TABLE_ENTRY(Rectsv),
-   TABLE_ENTRY(TexCoord1d),
-   TABLE_ENTRY(TexCoord1dv),
-   TABLE_ENTRY(TexCoord1f),
-   TABLE_ENTRY(TexCoord1fv),
-   TABLE_ENTRY(TexCoord1i),
-   TABLE_ENTRY(TexCoord1iv),
-   TABLE_ENTRY(TexCoord1s),
-   TABLE_ENTRY(TexCoord1sv),
-   TABLE_ENTRY(TexCoord2d),
-   TABLE_ENTRY(TexCoord2dv),
-   TABLE_ENTRY(TexCoord2f),
-   TABLE_ENTRY(TexCoord2fv),
-   TABLE_ENTRY(TexCoord2i),
-   TABLE_ENTRY(TexCoord2iv),
-   TABLE_ENTRY(TexCoord2s),
-   TABLE_ENTRY(TexCoord2sv),
-   TABLE_ENTRY(TexCoord3d),
-   TABLE_ENTRY(TexCoord3dv),
-   TABLE_ENTRY(TexCoord3f),
-   TABLE_ENTRY(TexCoord3fv),
-   TABLE_ENTRY(TexCoord3i),
-   TABLE_ENTRY(TexCoord3iv),
-   TABLE_ENTRY(TexCoord3s),
-   TABLE_ENTRY(TexCoord3sv),
-   TABLE_ENTRY(TexCoord4d),
-   TABLE_ENTRY(TexCoord4dv),
-   TABLE_ENTRY(TexCoord4f),
-   TABLE_ENTRY(TexCoord4fv),
-   TABLE_ENTRY(TexCoord4i),
-   TABLE_ENTRY(TexCoord4iv),
-   TABLE_ENTRY(TexCoord4s),
-   TABLE_ENTRY(TexCoord4sv),
-   TABLE_ENTRY(Vertex2d),
-   TABLE_ENTRY(Vertex2dv),
-   TABLE_ENTRY(Vertex2f),
-   TABLE_ENTRY(Vertex2fv),
-   TABLE_ENTRY(Vertex2i),
-   TABLE_ENTRY(Vertex2iv),
-   TABLE_ENTRY(Vertex2s),
-   TABLE_ENTRY(Vertex2sv),
-   TABLE_ENTRY(Vertex3d),
-   TABLE_ENTRY(Vertex3dv),
-   TABLE_ENTRY(Vertex3f),
-   TABLE_ENTRY(Vertex3fv),
-   TABLE_ENTRY(Vertex3i),
-   TABLE_ENTRY(Vertex3iv),
-   TABLE_ENTRY(Vertex3s),
-   TABLE_ENTRY(Vertex3sv),
-   TABLE_ENTRY(Vertex4d),
-   TABLE_ENTRY(Vertex4dv),
-   TABLE_ENTRY(Vertex4f),
-   TABLE_ENTRY(Vertex4fv),
-   TABLE_ENTRY(Vertex4i),
-   TABLE_ENTRY(Vertex4iv),
-   TABLE_ENTRY(Vertex4s),
-   TABLE_ENTRY(Vertex4sv),
-   TABLE_ENTRY(ClipPlane),
-   TABLE_ENTRY(ColorMaterial),
-   TABLE_ENTRY(CullFace),
-   TABLE_ENTRY(Fogf),
-   TABLE_ENTRY(Fogfv),
-   TABLE_ENTRY(Fogi),
-   TABLE_ENTRY(Fogiv),
-   TABLE_ENTRY(FrontFace),
-   TABLE_ENTRY(Hint),
-   TABLE_ENTRY(Lightf),
-   TABLE_ENTRY(Lightfv),
-   TABLE_ENTRY(Lighti),
-   TABLE_ENTRY(Lightiv),
-   TABLE_ENTRY(LightModelf),
-   TABLE_ENTRY(LightModelfv),
-   TABLE_ENTRY(LightModeli),
-   TABLE_ENTRY(LightModeliv),
-   TABLE_ENTRY(LineStipple),
-   TABLE_ENTRY(LineWidth),
-   TABLE_ENTRY(Materialf),
-   TABLE_ENTRY(Materialfv),
-   TABLE_ENTRY(Materiali),
-   TABLE_ENTRY(Materialiv),
-   TABLE_ENTRY(PointSize),
-   TABLE_ENTRY(PolygonMode),
-   TABLE_ENTRY(PolygonStipple),
-   TABLE_ENTRY(Scissor),
-   TABLE_ENTRY(ShadeModel),
-   TABLE_ENTRY(TexParameterf),
-   TABLE_ENTRY(TexParameterfv),
-   TABLE_ENTRY(TexParameteri),
-   TABLE_ENTRY(TexParameteriv),
-   TABLE_ENTRY(TexImage1D),
-   TABLE_ENTRY(TexImage2D),
-   TABLE_ENTRY(TexEnvf),
-   TABLE_ENTRY(TexEnvfv),
-   TABLE_ENTRY(TexEnvi),
-   TABLE_ENTRY(TexEnviv),
-   TABLE_ENTRY(TexGend),
-   TABLE_ENTRY(TexGendv),
-   TABLE_ENTRY(TexGenf),
-   TABLE_ENTRY(TexGenfv),
-   TABLE_ENTRY(TexGeni),
-   TABLE_ENTRY(TexGeniv),
-   TABLE_ENTRY(FeedbackBuffer),
-   TABLE_ENTRY(SelectBuffer),
-   TABLE_ENTRY(RenderMode),
-   TABLE_ENTRY(InitNames),
-   TABLE_ENTRY(LoadName),
-   TABLE_ENTRY(PassThrough),
-   TABLE_ENTRY(PopName),
-   TABLE_ENTRY(PushName),
-   TABLE_ENTRY(DrawBuffer),
-   TABLE_ENTRY(Clear),
-   TABLE_ENTRY(ClearAccum),
-   TABLE_ENTRY(ClearIndex),
-   TABLE_ENTRY(ClearColor),
-   TABLE_ENTRY(ClearStencil),
-   TABLE_ENTRY(ClearDepth),
-   TABLE_ENTRY(StencilMask),
-   TABLE_ENTRY(ColorMask),
-   TABLE_ENTRY(DepthMask),
-   TABLE_ENTRY(IndexMask),
-   TABLE_ENTRY(Accum),
-   TABLE_ENTRY(Disable),
-   TABLE_ENTRY(Enable),
-   TABLE_ENTRY(Finish),
-   TABLE_ENTRY(Flush),
-   TABLE_ENTRY(PopAttrib),
-   TABLE_ENTRY(PushAttrib),
-   TABLE_ENTRY(Map1d),
-   TABLE_ENTRY(Map1f),
-   TABLE_ENTRY(Map2d),
-   TABLE_ENTRY(Map2f),
-   TABLE_ENTRY(MapGrid1d),
-   TABLE_ENTRY(MapGrid1f),
-   TABLE_ENTRY(MapGrid2d),
-   TABLE_ENTRY(MapGrid2f),
-   TABLE_ENTRY(EvalCoord1d),
-   TABLE_ENTRY(EvalCoord1dv),
-   TABLE_ENTRY(EvalCoord1f),
-   TABLE_ENTRY(EvalCoord1fv),
-   TABLE_ENTRY(EvalCoord2d),
-   TABLE_ENTRY(EvalCoord2dv),
-   TABLE_ENTRY(EvalCoord2f),
-   TABLE_ENTRY(EvalCoord2fv),
-   TABLE_ENTRY(EvalMesh1),
-   TABLE_ENTRY(EvalPoint1),
-   TABLE_ENTRY(EvalMesh2),
-   TABLE_ENTRY(EvalPoint2),
-   TABLE_ENTRY(AlphaFunc),
-   TABLE_ENTRY(BlendFunc),
-   TABLE_ENTRY(LogicOp),
-   TABLE_ENTRY(StencilFunc),
-   TABLE_ENTRY(StencilOp),
-   TABLE_ENTRY(DepthFunc),
-   TABLE_ENTRY(PixelZoom),
-   TABLE_ENTRY(PixelTransferf),
-   TABLE_ENTRY(PixelTransferi),
-   TABLE_ENTRY(PixelStoref),
-   TABLE_ENTRY(PixelStorei),
-   TABLE_ENTRY(PixelMapfv),
-   TABLE_ENTRY(PixelMapuiv),
-   TABLE_ENTRY(PixelMapusv),
-   TABLE_ENTRY(ReadBuffer),
-   TABLE_ENTRY(CopyPixels),
-   TABLE_ENTRY(ReadPixels),
-   TABLE_ENTRY(DrawPixels),
-   TABLE_ENTRY(GetBooleanv),
-   TABLE_ENTRY(GetClipPlane),
-   TABLE_ENTRY(GetDoublev),
-   TABLE_ENTRY(GetError),
-   TABLE_ENTRY(GetFloatv),
-   TABLE_ENTRY(GetIntegerv),
-   TABLE_ENTRY(GetLightfv),
-   TABLE_ENTRY(GetLightiv),
-   TABLE_ENTRY(GetMapdv),
-   TABLE_ENTRY(GetMapfv),
-   TABLE_ENTRY(GetMapiv),
-   TABLE_ENTRY(GetMaterialfv),
-   TABLE_ENTRY(GetMaterialiv),
-   TABLE_ENTRY(GetPixelMapfv),
-   TABLE_ENTRY(GetPixelMapuiv),
-   TABLE_ENTRY(GetPixelMapusv),
-   TABLE_ENTRY(GetPolygonStipple),
-   TABLE_ENTRY(GetString),
-   TABLE_ENTRY(GetTexEnvfv),
-   TABLE_ENTRY(GetTexEnviv),
-   TABLE_ENTRY(GetTexGendv),
-   TABLE_ENTRY(GetTexGenfv),
-   TABLE_ENTRY(GetTexGeniv),
-   TABLE_ENTRY(GetTexImage),
-   TABLE_ENTRY(GetTexParameterfv),
-   TABLE_ENTRY(GetTexParameteriv),
-   TABLE_ENTRY(GetTexLevelParameterfv),
-   TABLE_ENTRY(GetTexLevelParameteriv),
-   TABLE_ENTRY(IsEnabled),
-   TABLE_ENTRY(IsList),
-   TABLE_ENTRY(DepthRange),
-   TABLE_ENTRY(Frustum),
-   TABLE_ENTRY(LoadIdentity),
-   TABLE_ENTRY(LoadMatrixf),
-   TABLE_ENTRY(LoadMatrixd),
-   TABLE_ENTRY(MatrixMode),
-   TABLE_ENTRY(MultMatrixf),
-   TABLE_ENTRY(MultMatrixd),
-   TABLE_ENTRY(Ortho),
-   TABLE_ENTRY(PopMatrix),
-   TABLE_ENTRY(PushMatrix),
-   TABLE_ENTRY(Rotated),
-   TABLE_ENTRY(Rotatef),
-   TABLE_ENTRY(Scaled),
-   TABLE_ENTRY(Scalef),
-   TABLE_ENTRY(Translated),
-   TABLE_ENTRY(Translatef),
-   TABLE_ENTRY(Viewport),
-   TABLE_ENTRY(ArrayElement),
-   TABLE_ENTRY(BindTexture),
-   TABLE_ENTRY(ColorPointer),
-   TABLE_ENTRY(DisableClientState),
-   TABLE_ENTRY(DrawArrays),
-   TABLE_ENTRY(DrawElements),
-   TABLE_ENTRY(EdgeFlagPointer),
-   TABLE_ENTRY(EnableClientState),
-   TABLE_ENTRY(IndexPointer),
-   TABLE_ENTRY(Indexub),
-   TABLE_ENTRY(Indexubv),
-   TABLE_ENTRY(InterleavedArrays),
-   TABLE_ENTRY(NormalPointer),
-   TABLE_ENTRY(PolygonOffset),
-   TABLE_ENTRY(TexCoordPointer),
-   TABLE_ENTRY(VertexPointer),
-   TABLE_ENTRY(AreTexturesResident),
-   TABLE_ENTRY(CopyTexImage1D),
-   TABLE_ENTRY(CopyTexImage2D),
-   TABLE_ENTRY(CopyTexSubImage1D),
-   TABLE_ENTRY(CopyTexSubImage2D),
-   TABLE_ENTRY(DeleteTextures),
-   TABLE_ENTRY(GenTextures),
-   TABLE_ENTRY(GetPointerv),
-   TABLE_ENTRY(IsTexture),
-   TABLE_ENTRY(PrioritizeTextures),
-   TABLE_ENTRY(TexSubImage1D),
-   TABLE_ENTRY(TexSubImage2D),
-   TABLE_ENTRY(PopClientAttrib),
-   TABLE_ENTRY(PushClientAttrib),
-   TABLE_ENTRY(BlendColor),
-   TABLE_ENTRY(BlendEquation),
-   TABLE_ENTRY(DrawRangeElements),
-   TABLE_ENTRY(ColorTable),
-   TABLE_ENTRY(ColorTableParameterfv),
-   TABLE_ENTRY(ColorTableParameteriv),
-   TABLE_ENTRY(CopyColorTable),
-   TABLE_ENTRY(GetColorTable),
-   TABLE_ENTRY(GetColorTableParameterfv),
-   TABLE_ENTRY(GetColorTableParameteriv),
-   TABLE_ENTRY(ColorSubTable),
-   TABLE_ENTRY(CopyColorSubTable),
-   TABLE_ENTRY(ConvolutionFilter1D),
-   TABLE_ENTRY(ConvolutionFilter2D),
-   TABLE_ENTRY(ConvolutionParameterf),
-   TABLE_ENTRY(ConvolutionParameterfv),
-   TABLE_ENTRY(ConvolutionParameteri),
-   TABLE_ENTRY(ConvolutionParameteriv),
-   TABLE_ENTRY(CopyConvolutionFilter1D),
-   TABLE_ENTRY(CopyConvolutionFilter2D),
-   TABLE_ENTRY(GetConvolutionFilter),
-   TABLE_ENTRY(GetConvolutionParameterfv),
-   TABLE_ENTRY(GetConvolutionParameteriv),
-   TABLE_ENTRY(GetSeparableFilter),
-   TABLE_ENTRY(SeparableFilter2D),
-   TABLE_ENTRY(GetHistogram),
-   TABLE_ENTRY(GetHistogramParameterfv),
-   TABLE_ENTRY(GetHistogramParameteriv),
-   TABLE_ENTRY(GetMinmax),
-   TABLE_ENTRY(GetMinmaxParameterfv),
-   TABLE_ENTRY(GetMinmaxParameteriv),
-   TABLE_ENTRY(Histogram),
-   TABLE_ENTRY(Minmax),
-   TABLE_ENTRY(ResetHistogram),
-   TABLE_ENTRY(ResetMinmax),
-   TABLE_ENTRY(TexImage3D),
-   TABLE_ENTRY(TexSubImage3D),
-   TABLE_ENTRY(CopyTexSubImage3D),
-   TABLE_ENTRY(ActiveTextureARB),
-   TABLE_ENTRY(ClientActiveTextureARB),
-   TABLE_ENTRY(MultiTexCoord1dARB),
-   TABLE_ENTRY(MultiTexCoord1dvARB),
-   TABLE_ENTRY(MultiTexCoord1fARB),
-   TABLE_ENTRY(MultiTexCoord1fvARB),
-   TABLE_ENTRY(MultiTexCoord1iARB),
-   TABLE_ENTRY(MultiTexCoord1ivARB),
-   TABLE_ENTRY(MultiTexCoord1sARB),
-   TABLE_ENTRY(MultiTexCoord1svARB),
-   TABLE_ENTRY(MultiTexCoord2dARB),
-   TABLE_ENTRY(MultiTexCoord2dvARB),
-   TABLE_ENTRY(MultiTexCoord2fARB),
-   TABLE_ENTRY(MultiTexCoord2fvARB),
-   TABLE_ENTRY(MultiTexCoord2iARB),
-   TABLE_ENTRY(MultiTexCoord2ivARB),
-   TABLE_ENTRY(MultiTexCoord2sARB),
-   TABLE_ENTRY(MultiTexCoord2svARB),
-   TABLE_ENTRY(MultiTexCoord3dARB),
-   TABLE_ENTRY(MultiTexCoord3dvARB),
-   TABLE_ENTRY(MultiTexCoord3fARB),
-   TABLE_ENTRY(MultiTexCoord3fvARB),
-   TABLE_ENTRY(MultiTexCoord3iARB),
-   TABLE_ENTRY(MultiTexCoord3ivARB),
-   TABLE_ENTRY(MultiTexCoord3sARB),
-   TABLE_ENTRY(MultiTexCoord3svARB),
-   TABLE_ENTRY(MultiTexCoord4dARB),
-   TABLE_ENTRY(MultiTexCoord4dvARB),
-   TABLE_ENTRY(MultiTexCoord4fARB),
-   TABLE_ENTRY(MultiTexCoord4fvARB),
-   TABLE_ENTRY(MultiTexCoord4iARB),
-   TABLE_ENTRY(MultiTexCoord4ivARB),
-   TABLE_ENTRY(MultiTexCoord4sARB),
-   TABLE_ENTRY(MultiTexCoord4svARB),
-   TABLE_ENTRY(AttachShader),
-   TABLE_ENTRY(CreateProgram),
-   TABLE_ENTRY(CreateShader),
-   TABLE_ENTRY(DeleteProgram),
-   TABLE_ENTRY(DeleteShader),
-   TABLE_ENTRY(DetachShader),
-   TABLE_ENTRY(GetAttachedShaders),
-   TABLE_ENTRY(GetProgramInfoLog),
-   TABLE_ENTRY(GetProgramiv),
-   TABLE_ENTRY(GetShaderInfoLog),
-   TABLE_ENTRY(GetShaderiv),
-   TABLE_ENTRY(IsProgram),
-   TABLE_ENTRY(IsShader),
-   TABLE_ENTRY(StencilFuncSeparate),
-   TABLE_ENTRY(StencilMaskSeparate),
-   TABLE_ENTRY(StencilOpSeparate),
-   TABLE_ENTRY(UniformMatrix2x3fv),
-   TABLE_ENTRY(UniformMatrix2x4fv),
-   TABLE_ENTRY(UniformMatrix3x2fv),
-   TABLE_ENTRY(UniformMatrix3x4fv),
-   TABLE_ENTRY(UniformMatrix4x2fv),
-   TABLE_ENTRY(UniformMatrix4x3fv),
-   TABLE_ENTRY(DrawArraysInstanced),
-   TABLE_ENTRY(DrawElementsInstanced),
-   TABLE_ENTRY(LoadTransposeMatrixdARB),
-   TABLE_ENTRY(LoadTransposeMatrixfARB),
-   TABLE_ENTRY(MultTransposeMatrixdARB),
-   TABLE_ENTRY(MultTransposeMatrixfARB),
-   TABLE_ENTRY(SampleCoverageARB),
-   TABLE_ENTRY(CompressedTexImage1DARB),
-   TABLE_ENTRY(CompressedTexImage2DARB),
-   TABLE_ENTRY(CompressedTexImage3DARB),
-   TABLE_ENTRY(CompressedTexSubImage1DARB),
-   TABLE_ENTRY(CompressedTexSubImage2DARB),
-   TABLE_ENTRY(CompressedTexSubImage3DARB),
-   TABLE_ENTRY(GetCompressedTexImageARB),
-   TABLE_ENTRY(DisableVertexAttribArrayARB),
-   TABLE_ENTRY(EnableVertexAttribArrayARB),
-   TABLE_ENTRY(GetProgramEnvParameterdvARB),
-   TABLE_ENTRY(GetProgramEnvParameterfvARB),
-   TABLE_ENTRY(GetProgramLocalParameterdvARB),
-   TABLE_ENTRY(GetProgramLocalParameterfvARB),
-   TABLE_ENTRY(GetProgramStringARB),
-   TABLE_ENTRY(GetProgramivARB),
-   TABLE_ENTRY(GetVertexAttribdvARB),
-   TABLE_ENTRY(GetVertexAttribfvARB),
-   TABLE_ENTRY(GetVertexAttribivARB),
-   TABLE_ENTRY(ProgramEnvParameter4dARB),
-   TABLE_ENTRY(ProgramEnvParameter4dvARB),
-   TABLE_ENTRY(ProgramEnvParameter4fARB),
-   TABLE_ENTRY(ProgramEnvParameter4fvARB),
-   TABLE_ENTRY(ProgramLocalParameter4dARB),
-   TABLE_ENTRY(ProgramLocalParameter4dvARB),
-   TABLE_ENTRY(ProgramLocalParameter4fARB),
-   TABLE_ENTRY(ProgramLocalParameter4fvARB),
-   TABLE_ENTRY(ProgramStringARB),
-   TABLE_ENTRY(VertexAttrib1dARB),
-   TABLE_ENTRY(VertexAttrib1dvARB),
-   TABLE_ENTRY(VertexAttrib1fARB),
-   TABLE_ENTRY(VertexAttrib1fvARB),
-   TABLE_ENTRY(VertexAttrib1sARB),
-   TABLE_ENTRY(VertexAttrib1svARB),
-   TABLE_ENTRY(VertexAttrib2dARB),
-   TABLE_ENTRY(VertexAttrib2dvARB),
-   TABLE_ENTRY(VertexAttrib2fARB),
-   TABLE_ENTRY(VertexAttrib2fvARB),
-   TABLE_ENTRY(VertexAttrib2sARB),
-   TABLE_ENTRY(VertexAttrib2svARB),
-   TABLE_ENTRY(VertexAttrib3dARB),
-   TABLE_ENTRY(VertexAttrib3dvARB),
-   TABLE_ENTRY(VertexAttrib3fARB),
-   TABLE_ENTRY(VertexAttrib3fvARB),
-   TABLE_ENTRY(VertexAttrib3sARB),
-   TABLE_ENTRY(VertexAttrib3svARB),
-   TABLE_ENTRY(VertexAttrib4NbvARB),
-   TABLE_ENTRY(VertexAttrib4NivARB),
-   TABLE_ENTRY(VertexAttrib4NsvARB),
-   TABLE_ENTRY(VertexAttrib4NubARB),
-   TABLE_ENTRY(VertexAttrib4NubvARB),
-   TABLE_ENTRY(VertexAttrib4NuivARB),
-   TABLE_ENTRY(VertexAttrib4NusvARB),
-   TABLE_ENTRY(VertexAttrib4bvARB),
-   TABLE_ENTRY(VertexAttrib4dARB),
-   TABLE_ENTRY(VertexAttrib4dvARB),
-   TABLE_ENTRY(VertexAttrib4fARB),
-   TABLE_ENTRY(VertexAttrib4fvARB),
-   TABLE_ENTRY(VertexAttrib4ivARB),
-   TABLE_ENTRY(VertexAttrib4sARB),
-   TABLE_ENTRY(VertexAttrib4svARB),
-   TABLE_ENTRY(VertexAttrib4ubvARB),
-   TABLE_ENTRY(VertexAttrib4uivARB),
-   TABLE_ENTRY(VertexAttrib4usvARB),
-   TABLE_ENTRY(VertexAttribPointerARB),
-   TABLE_ENTRY(BindBufferARB),
-   TABLE_ENTRY(BufferDataARB),
-   TABLE_ENTRY(BufferSubDataARB),
-   TABLE_ENTRY(DeleteBuffersARB),
-   TABLE_ENTRY(GenBuffersARB),
-   TABLE_ENTRY(GetBufferParameterivARB),
-   TABLE_ENTRY(GetBufferPointervARB),
-   TABLE_ENTRY(GetBufferSubDataARB),
-   TABLE_ENTRY(IsBufferARB),
-   TABLE_ENTRY(MapBufferARB),
-   TABLE_ENTRY(UnmapBufferARB),
-   TABLE_ENTRY(BeginQueryARB),
-   TABLE_ENTRY(DeleteQueriesARB),
-   TABLE_ENTRY(EndQueryARB),
-   TABLE_ENTRY(GenQueriesARB),
-   TABLE_ENTRY(GetQueryObjectivARB),
-   TABLE_ENTRY(GetQueryObjectuivARB),
-   TABLE_ENTRY(GetQueryivARB),
-   TABLE_ENTRY(IsQueryARB),
-   TABLE_ENTRY(AttachObjectARB),
-   TABLE_ENTRY(CompileShaderARB),
-   TABLE_ENTRY(CreateProgramObjectARB),
-   TABLE_ENTRY(CreateShaderObjectARB),
-   TABLE_ENTRY(DeleteObjectARB),
-   TABLE_ENTRY(DetachObjectARB),
-   TABLE_ENTRY(GetActiveUniformARB),
-   TABLE_ENTRY(GetAttachedObjectsARB),
-   TABLE_ENTRY(GetHandleARB),
-   TABLE_ENTRY(GetInfoLogARB),
-   TABLE_ENTRY(GetObjectParameterfvARB),
-   TABLE_ENTRY(GetObjectParameterivARB),
-   TABLE_ENTRY(GetShaderSourceARB),
-   TABLE_ENTRY(GetUniformLocationARB),
-   TABLE_ENTRY(GetUniformfvARB),
-   TABLE_ENTRY(GetUniformivARB),
-   TABLE_ENTRY(LinkProgramARB),
-   TABLE_ENTRY(ShaderSourceARB),
-   TABLE_ENTRY(Uniform1fARB),
-   TABLE_ENTRY(Uniform1fvARB),
-   TABLE_ENTRY(Uniform1iARB),
-   TABLE_ENTRY(Uniform1ivARB),
-   TABLE_ENTRY(Uniform2fARB),
-   TABLE_ENTRY(Uniform2fvARB),
-   TABLE_ENTRY(Uniform2iARB),
-   TABLE_ENTRY(Uniform2ivARB),
-   TABLE_ENTRY(Uniform3fARB),
-   TABLE_ENTRY(Uniform3fvARB),
-   TABLE_ENTRY(Uniform3iARB),
-   TABLE_ENTRY(Uniform3ivARB),
-   TABLE_ENTRY(Uniform4fARB),
-   TABLE_ENTRY(Uniform4fvARB),
-   TABLE_ENTRY(Uniform4iARB),
-   TABLE_ENTRY(Uniform4ivARB),
-   TABLE_ENTRY(UniformMatrix2fvARB),
-   TABLE_ENTRY(UniformMatrix3fvARB),
-   TABLE_ENTRY(UniformMatrix4fvARB),
-   TABLE_ENTRY(UseProgramObjectARB),
-   TABLE_ENTRY(ValidateProgramARB),
-   TABLE_ENTRY(BindAttribLocationARB),
-   TABLE_ENTRY(GetActiveAttribARB),
-   TABLE_ENTRY(GetAttribLocationARB),
-   TABLE_ENTRY(DrawBuffersARB),
-   TABLE_ENTRY(RenderbufferStorageMultisample),
-   TABLE_ENTRY(FlushMappedBufferRange),
-   TABLE_ENTRY(MapBufferRange),
-   TABLE_ENTRY(BindVertexArray),
-   TABLE_ENTRY(GenVertexArrays),
-   TABLE_ENTRY(CopyBufferSubData),
-   TABLE_ENTRY(ClientWaitSync),
-   TABLE_ENTRY(DeleteSync),
-   TABLE_ENTRY(FenceSync),
-   TABLE_ENTRY(GetInteger64v),
-   TABLE_ENTRY(GetSynciv),
-   TABLE_ENTRY(IsSync),
-   TABLE_ENTRY(WaitSync),
-   TABLE_ENTRY(DrawElementsBaseVertex),
-   TABLE_ENTRY(DrawRangeElementsBaseVertex),
-   TABLE_ENTRY(MultiDrawElementsBaseVertex),
-   TABLE_ENTRY(PolygonOffsetEXT),
-   TABLE_ENTRY(_dispatch_stub_580),
-   TABLE_ENTRY(_dispatch_stub_581),
-   TABLE_ENTRY(_dispatch_stub_582),
-   TABLE_ENTRY(_dispatch_stub_583),
-   TABLE_ENTRY(_dispatch_stub_584),
-   TABLE_ENTRY(_dispatch_stub_585),
-   TABLE_ENTRY(_dispatch_stub_586),
-   TABLE_ENTRY(_dispatch_stub_587),
-   TABLE_ENTRY(ColorPointerEXT),
-   TABLE_ENTRY(EdgeFlagPointerEXT),
-   TABLE_ENTRY(IndexPointerEXT),
-   TABLE_ENTRY(NormalPointerEXT),
-   TABLE_ENTRY(TexCoordPointerEXT),
-   TABLE_ENTRY(VertexPointerEXT),
-   TABLE_ENTRY(PointParameterfEXT),
-   TABLE_ENTRY(PointParameterfvEXT),
-   TABLE_ENTRY(LockArraysEXT),
-   TABLE_ENTRY(UnlockArraysEXT),
-   TABLE_ENTRY(_dispatch_stub_598),
-   TABLE_ENTRY(_dispatch_stub_599),
-   TABLE_ENTRY(SecondaryColor3bEXT),
-   TABLE_ENTRY(SecondaryColor3bvEXT),
-   TABLE_ENTRY(SecondaryColor3dEXT),
-   TABLE_ENTRY(SecondaryColor3dvEXT),
-   TABLE_ENTRY(SecondaryColor3fEXT),
-   TABLE_ENTRY(SecondaryColor3fvEXT),
-   TABLE_ENTRY(SecondaryColor3iEXT),
-   TABLE_ENTRY(SecondaryColor3ivEXT),
-   TABLE_ENTRY(SecondaryColor3sEXT),
-   TABLE_ENTRY(SecondaryColor3svEXT),
-   TABLE_ENTRY(SecondaryColor3ubEXT),
-   TABLE_ENTRY(SecondaryColor3ubvEXT),
-   TABLE_ENTRY(SecondaryColor3uiEXT),
-   TABLE_ENTRY(SecondaryColor3uivEXT),
-   TABLE_ENTRY(SecondaryColor3usEXT),
-   TABLE_ENTRY(SecondaryColor3usvEXT),
-   TABLE_ENTRY(SecondaryColorPointerEXT),
-   TABLE_ENTRY(MultiDrawArraysEXT),
-   TABLE_ENTRY(MultiDrawElementsEXT),
-   TABLE_ENTRY(FogCoordPointerEXT),
-   TABLE_ENTRY(FogCoorddEXT),
-   TABLE_ENTRY(FogCoorddvEXT),
-   TABLE_ENTRY(FogCoordfEXT),
-   TABLE_ENTRY(FogCoordfvEXT),
-   TABLE_ENTRY(_dispatch_stub_624),
-   TABLE_ENTRY(BlendFuncSeparateEXT),
-   TABLE_ENTRY(FlushVertexArrayRangeNV),
-   TABLE_ENTRY(VertexArrayRangeNV),
-   TABLE_ENTRY(CombinerInputNV),
-   TABLE_ENTRY(CombinerOutputNV),
-   TABLE_ENTRY(CombinerParameterfNV),
-   TABLE_ENTRY(CombinerParameterfvNV),
-   TABLE_ENTRY(CombinerParameteriNV),
-   TABLE_ENTRY(CombinerParameterivNV),
-   TABLE_ENTRY(FinalCombinerInputNV),
-   TABLE_ENTRY(GetCombinerInputParameterfvNV),
-   TABLE_ENTRY(GetCombinerInputParameterivNV),
-   TABLE_ENTRY(GetCombinerOutputParameterfvNV),
-   TABLE_ENTRY(GetCombinerOutputParameterivNV),
-   TABLE_ENTRY(GetFinalCombinerInputParameterfvNV),
-   TABLE_ENTRY(GetFinalCombinerInputParameterivNV),
-   TABLE_ENTRY(ResizeBuffersMESA),
-   TABLE_ENTRY(WindowPos2dMESA),
-   TABLE_ENTRY(WindowPos2dvMESA),
-   TABLE_ENTRY(WindowPos2fMESA),
-   TABLE_ENTRY(WindowPos2fvMESA),
-   TABLE_ENTRY(WindowPos2iMESA),
-   TABLE_ENTRY(WindowPos2ivMESA),
-   TABLE_ENTRY(WindowPos2sMESA),
-   TABLE_ENTRY(WindowPos2svMESA),
-   TABLE_ENTRY(WindowPos3dMESA),
-   TABLE_ENTRY(WindowPos3dvMESA),
-   TABLE_ENTRY(WindowPos3fMESA),
-   TABLE_ENTRY(WindowPos3fvMESA),
-   TABLE_ENTRY(WindowPos3iMESA),
-   TABLE_ENTRY(WindowPos3ivMESA),
-   TABLE_ENTRY(WindowPos3sMESA),
-   TABLE_ENTRY(WindowPos3svMESA),
-   TABLE_ENTRY(WindowPos4dMESA),
-   TABLE_ENTRY(WindowPos4dvMESA),
-   TABLE_ENTRY(WindowPos4fMESA),
-   TABLE_ENTRY(WindowPos4fvMESA),
-   TABLE_ENTRY(WindowPos4iMESA),
-   TABLE_ENTRY(WindowPos4ivMESA),
-   TABLE_ENTRY(WindowPos4sMESA),
-   TABLE_ENTRY(WindowPos4svMESA),
-   TABLE_ENTRY(_dispatch_stub_666),
-   TABLE_ENTRY(_dispatch_stub_667),
-   TABLE_ENTRY(_dispatch_stub_668),
-   TABLE_ENTRY(_dispatch_stub_669),
-   TABLE_ENTRY(_dispatch_stub_670),
-   TABLE_ENTRY(_dispatch_stub_671),
-   TABLE_ENTRY(_dispatch_stub_672),
-   TABLE_ENTRY(_dispatch_stub_673),
-   TABLE_ENTRY(_dispatch_stub_674),
-   TABLE_ENTRY(AreProgramsResidentNV),
-   TABLE_ENTRY(BindProgramNV),
-   TABLE_ENTRY(DeleteProgramsNV),
-   TABLE_ENTRY(ExecuteProgramNV),
-   TABLE_ENTRY(GenProgramsNV),
-   TABLE_ENTRY(GetProgramParameterdvNV),
-   TABLE_ENTRY(GetProgramParameterfvNV),
-   TABLE_ENTRY(GetProgramStringNV),
-   TABLE_ENTRY(GetProgramivNV),
-   TABLE_ENTRY(GetTrackMatrixivNV),
-   TABLE_ENTRY(GetVertexAttribPointervNV),
-   TABLE_ENTRY(GetVertexAttribdvNV),
-   TABLE_ENTRY(GetVertexAttribfvNV),
-   TABLE_ENTRY(GetVertexAttribivNV),
-   TABLE_ENTRY(IsProgramNV),
-   TABLE_ENTRY(LoadProgramNV),
-   TABLE_ENTRY(ProgramParameters4dvNV),
-   TABLE_ENTRY(ProgramParameters4fvNV),
-   TABLE_ENTRY(RequestResidentProgramsNV),
-   TABLE_ENTRY(TrackMatrixNV),
-   TABLE_ENTRY(VertexAttrib1dNV),
-   TABLE_ENTRY(VertexAttrib1dvNV),
-   TABLE_ENTRY(VertexAttrib1fNV),
-   TABLE_ENTRY(VertexAttrib1fvNV),
-   TABLE_ENTRY(VertexAttrib1sNV),
-   TABLE_ENTRY(VertexAttrib1svNV),
-   TABLE_ENTRY(VertexAttrib2dNV),
-   TABLE_ENTRY(VertexAttrib2dvNV),
-   TABLE_ENTRY(VertexAttrib2fNV),
-   TABLE_ENTRY(VertexAttrib2fvNV),
-   TABLE_ENTRY(VertexAttrib2sNV),
-   TABLE_ENTRY(VertexAttrib2svNV),
-   TABLE_ENTRY(VertexAttrib3dNV),
-   TABLE_ENTRY(VertexAttrib3dvNV),
-   TABLE_ENTRY(VertexAttrib3fNV),
-   TABLE_ENTRY(VertexAttrib3fvNV),
-   TABLE_ENTRY(VertexAttrib3sNV),
-   TABLE_ENTRY(VertexAttrib3svNV),
-   TABLE_ENTRY(VertexAttrib4dNV),
-   TABLE_ENTRY(VertexAttrib4dvNV),
-   TABLE_ENTRY(VertexAttrib4fNV),
-   TABLE_ENTRY(VertexAttrib4fvNV),
-   TABLE_ENTRY(VertexAttrib4sNV),
-   TABLE_ENTRY(VertexAttrib4svNV),
-   TABLE_ENTRY(VertexAttrib4ubNV),
-   TABLE_ENTRY(VertexAttrib4ubvNV),
-   TABLE_ENTRY(VertexAttribPointerNV),
-   TABLE_ENTRY(VertexAttribs1dvNV),
-   TABLE_ENTRY(VertexAttribs1fvNV),
-   TABLE_ENTRY(VertexAttribs1svNV),
-   TABLE_ENTRY(VertexAttribs2dvNV),
-   TABLE_ENTRY(VertexAttribs2fvNV),
-   TABLE_ENTRY(VertexAttribs2svNV),
-   TABLE_ENTRY(VertexAttribs3dvNV),
-   TABLE_ENTRY(VertexAttribs3fvNV),
-   TABLE_ENTRY(VertexAttribs3svNV),
-   TABLE_ENTRY(VertexAttribs4dvNV),
-   TABLE_ENTRY(VertexAttribs4fvNV),
-   TABLE_ENTRY(VertexAttribs4svNV),
-   TABLE_ENTRY(VertexAttribs4ubvNV),
-   TABLE_ENTRY(GetTexBumpParameterfvATI),
-   TABLE_ENTRY(GetTexBumpParameterivATI),
-   TABLE_ENTRY(TexBumpParameterfvATI),
-   TABLE_ENTRY(TexBumpParameterivATI),
-   TABLE_ENTRY(AlphaFragmentOp1ATI),
-   TABLE_ENTRY(AlphaFragmentOp2ATI),
-   TABLE_ENTRY(AlphaFragmentOp3ATI),
-   TABLE_ENTRY(BeginFragmentShaderATI),
-   TABLE_ENTRY(BindFragmentShaderATI),
-   TABLE_ENTRY(ColorFragmentOp1ATI),
-   TABLE_ENTRY(ColorFragmentOp2ATI),
-   TABLE_ENTRY(ColorFragmentOp3ATI),
-   TABLE_ENTRY(DeleteFragmentShaderATI),
-   TABLE_ENTRY(EndFragmentShaderATI),
-   TABLE_ENTRY(GenFragmentShadersATI),
-   TABLE_ENTRY(PassTexCoordATI),
-   TABLE_ENTRY(SampleMapATI),
-   TABLE_ENTRY(SetFragmentShaderConstantATI),
-   TABLE_ENTRY(PointParameteriNV),
-   TABLE_ENTRY(PointParameterivNV),
-   TABLE_ENTRY(_dispatch_stub_755),
-   TABLE_ENTRY(_dispatch_stub_756),
-   TABLE_ENTRY(_dispatch_stub_757),
-   TABLE_ENTRY(_dispatch_stub_758),
-   TABLE_ENTRY(_dispatch_stub_759),
-   TABLE_ENTRY(GetProgramNamedParameterdvNV),
-   TABLE_ENTRY(GetProgramNamedParameterfvNV),
-   TABLE_ENTRY(ProgramNamedParameter4dNV),
-   TABLE_ENTRY(ProgramNamedParameter4dvNV),
-   TABLE_ENTRY(ProgramNamedParameter4fNV),
-   TABLE_ENTRY(ProgramNamedParameter4fvNV),
-   TABLE_ENTRY(_dispatch_stub_766),
-   TABLE_ENTRY(_dispatch_stub_767),
-   TABLE_ENTRY(BindFramebufferEXT),
-   TABLE_ENTRY(BindRenderbufferEXT),
-   TABLE_ENTRY(CheckFramebufferStatusEXT),
-   TABLE_ENTRY(DeleteFramebuffersEXT),
-   TABLE_ENTRY(DeleteRenderbuffersEXT),
-   TABLE_ENTRY(FramebufferRenderbufferEXT),
-   TABLE_ENTRY(FramebufferTexture1DEXT),
-   TABLE_ENTRY(FramebufferTexture2DEXT),
-   TABLE_ENTRY(FramebufferTexture3DEXT),
-   TABLE_ENTRY(GenFramebuffersEXT),
-   TABLE_ENTRY(GenRenderbuffersEXT),
-   TABLE_ENTRY(GenerateMipmapEXT),
-   TABLE_ENTRY(GetFramebufferAttachmentParameterivEXT),
-   TABLE_ENTRY(GetRenderbufferParameterivEXT),
-   TABLE_ENTRY(IsFramebufferEXT),
-   TABLE_ENTRY(IsRenderbufferEXT),
-   TABLE_ENTRY(RenderbufferStorageEXT),
-   TABLE_ENTRY(_dispatch_stub_785),
-   TABLE_ENTRY(_dispatch_stub_786),
-   TABLE_ENTRY(_dispatch_stub_787),
-   TABLE_ENTRY(FramebufferTextureLayerEXT),
-   TABLE_ENTRY(ColorMaskIndexedEXT),
-   TABLE_ENTRY(DisableIndexedEXT),
-   TABLE_ENTRY(EnableIndexedEXT),
-   TABLE_ENTRY(GetBooleanIndexedvEXT),
-   TABLE_ENTRY(GetIntegerIndexedvEXT),
-   TABLE_ENTRY(IsEnabledIndexedEXT),
-   TABLE_ENTRY(BeginConditionalRenderNV),
-   TABLE_ENTRY(EndConditionalRenderNV),
-   TABLE_ENTRY(BeginTransformFeedbackEXT),
-   TABLE_ENTRY(BindBufferBaseEXT),
-   TABLE_ENTRY(BindBufferOffsetEXT),
-   TABLE_ENTRY(BindBufferRangeEXT),
-   TABLE_ENTRY(EndTransformFeedbackEXT),
-   TABLE_ENTRY(GetTransformFeedbackVaryingEXT),
-   TABLE_ENTRY(TransformFeedbackVaryingsEXT),
-   TABLE_ENTRY(ProvokingVertexEXT),
-   TABLE_ENTRY(_dispatch_stub_805),
-   TABLE_ENTRY(_dispatch_stub_806),
-   TABLE_ENTRY(GetObjectParameterivAPPLE),
-   TABLE_ENTRY(ObjectPurgeableAPPLE),
-   TABLE_ENTRY(ObjectUnpurgeableAPPLE),
-   TABLE_ENTRY(_dispatch_stub_810),
-   TABLE_ENTRY(_dispatch_stub_811),
-   TABLE_ENTRY(_dispatch_stub_812),
-   TABLE_ENTRY(_dispatch_stub_813),
-   TABLE_ENTRY(_dispatch_stub_814),
-   TABLE_ENTRY(EGLImageTargetRenderbufferStorageOES),
-   TABLE_ENTRY(EGLImageTargetTexture2DOES),
-   /* A whole bunch of no-op functions.  These might be called
-    * when someone tries to call a dynamically-registered
-    * extension function without a current rendering context.
-    */
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-   TABLE_ENTRY(Unused),
-};
-#endif /* DISPATCH_TABLE_NAME */
-
-
-/*
- * This is just used to silence compiler warnings.
- * We list the functions which are not otherwise used.
- */
-#ifdef UNUSED_TABLE_NAME
-_glapi_proc UNUSED_TABLE_NAME[] = {
-#ifndef _GLAPI_SKIP_NORMAL_ENTRY_POINTS
-   TABLE_ENTRY(ArrayElementEXT),
-   TABLE_ENTRY(BindTextureEXT),
-   TABLE_ENTRY(DrawArraysEXT),
-   TABLE_ENTRY(CopyTexImage1DEXT),
-   TABLE_ENTRY(CopyTexImage2DEXT),
-   TABLE_ENTRY(CopyTexSubImage1DEXT),
-   TABLE_ENTRY(CopyTexSubImage2DEXT),
-   TABLE_ENTRY(GetPointervEXT),
-   TABLE_ENTRY(PrioritizeTexturesEXT),
-   TABLE_ENTRY(TexSubImage1DEXT),
-   TABLE_ENTRY(TexSubImage2DEXT),
-   TABLE_ENTRY(BlendColorEXT),
-   TABLE_ENTRY(BlendEquationEXT),
-   TABLE_ENTRY(DrawRangeElementsEXT),
-   TABLE_ENTRY(ColorTableEXT),
-   TABLE_ENTRY(_dispatch_stub_339),
-   TABLE_ENTRY(_dispatch_stub_340),
-   TABLE_ENTRY(_dispatch_stub_341),
-   TABLE_ENTRY(_dispatch_stub_342),
-   TABLE_ENTRY(_dispatch_stub_346),
-   TABLE_ENTRY(_dispatch_stub_347),
-   TABLE_ENTRY(_dispatch_stub_348),
-   TABLE_ENTRY(_dispatch_stub_349),
-   TABLE_ENTRY(_dispatch_stub_350),
-   TABLE_ENTRY(_dispatch_stub_351),
-   TABLE_ENTRY(_dispatch_stub_352),
-   TABLE_ENTRY(_dispatch_stub_353),
-   TABLE_ENTRY(_dispatch_stub_354),
-   TABLE_ENTRY(_dispatch_stub_355),
-   TABLE_ENTRY(_dispatch_stub_360),
-   TABLE_ENTRY(_dispatch_stub_367),
-   TABLE_ENTRY(_dispatch_stub_368),
-   TABLE_ENTRY(_dispatch_stub_369),
-   TABLE_ENTRY(_dispatch_stub_370),
-   TABLE_ENTRY(TexImage3DEXT),
-   TABLE_ENTRY(TexSubImage3DEXT),
-   TABLE_ENTRY(CopyTexSubImage3DEXT),
-   TABLE_ENTRY(ActiveTexture),
-   TABLE_ENTRY(ClientActiveTexture),
-   TABLE_ENTRY(MultiTexCoord1d),
-   TABLE_ENTRY(MultiTexCoord1dv),
-   TABLE_ENTRY(MultiTexCoord1f),
-   TABLE_ENTRY(MultiTexCoord1fv),
-   TABLE_ENTRY(MultiTexCoord1i),
-   TABLE_ENTRY(MultiTexCoord1iv),
-   TABLE_ENTRY(MultiTexCoord1s),
-   TABLE_ENTRY(MultiTexCoord1sv),
-   TABLE_ENTRY(MultiTexCoord2d),
-   TABLE_ENTRY(MultiTexCoord2dv),
-   TABLE_ENTRY(MultiTexCoord2f),
-   TABLE_ENTRY(MultiTexCoord2fv),
-   TABLE_ENTRY(MultiTexCoord2i),
-   TABLE_ENTRY(MultiTexCoord2iv),
-   TABLE_ENTRY(MultiTexCoord2s),
-   TABLE_ENTRY(MultiTexCoord2sv),
-   TABLE_ENTRY(MultiTexCoord3d),
-   TABLE_ENTRY(MultiTexCoord3dv),
-   TABLE_ENTRY(MultiTexCoord3f),
-   TABLE_ENTRY(MultiTexCoord3fv),
-   TABLE_ENTRY(MultiTexCoord3i),
-   TABLE_ENTRY(MultiTexCoord3iv),
-   TABLE_ENTRY(MultiTexCoord3s),
-   TABLE_ENTRY(MultiTexCoord3sv),
-   TABLE_ENTRY(MultiTexCoord4d),
-   TABLE_ENTRY(MultiTexCoord4dv),
-   TABLE_ENTRY(MultiTexCoord4f),
-   TABLE_ENTRY(MultiTexCoord4fv),
-   TABLE_ENTRY(MultiTexCoord4i),
-   TABLE_ENTRY(MultiTexCoord4iv),
-   TABLE_ENTRY(MultiTexCoord4s),
-   TABLE_ENTRY(MultiTexCoord4sv),
-   TABLE_ENTRY(_dispatch_stub_423),
-   TABLE_ENTRY(DrawArraysInstancedARB),
-   TABLE_ENTRY(DrawArraysInstancedEXT),
-   TABLE_ENTRY(DrawElementsInstancedARB),
-   TABLE_ENTRY(DrawElementsInstancedEXT),
-   TABLE_ENTRY(LoadTransposeMatrixd),
-   TABLE_ENTRY(LoadTransposeMatrixf),
-   TABLE_ENTRY(MultTransposeMatrixd),
-   TABLE_ENTRY(MultTransposeMatrixf),
-   TABLE_ENTRY(SampleCoverage),
-   TABLE_ENTRY(CompressedTexImage1D),
-   TABLE_ENTRY(CompressedTexImage2D),
-   TABLE_ENTRY(CompressedTexImage3D),
-   TABLE_ENTRY(CompressedTexSubImage1D),
-   TABLE_ENTRY(CompressedTexSubImage2D),
-   TABLE_ENTRY(CompressedTexSubImage3D),
-   TABLE_ENTRY(GetCompressedTexImage),
-   TABLE_ENTRY(DisableVertexAttribArray),
-   TABLE_ENTRY(EnableVertexAttribArray),
-   TABLE_ENTRY(GetVertexAttribdv),
-   TABLE_ENTRY(GetVertexAttribfv),
-   TABLE_ENTRY(GetVertexAttribiv),
-   TABLE_ENTRY(ProgramParameter4dNV),
-   TABLE_ENTRY(ProgramParameter4dvNV),
-   TABLE_ENTRY(ProgramParameter4fNV),
-   TABLE_ENTRY(ProgramParameter4fvNV),
-   TABLE_ENTRY(VertexAttrib1d),
-   TABLE_ENTRY(VertexAttrib1dv),
-   TABLE_ENTRY(VertexAttrib1f),
-   TABLE_ENTRY(VertexAttrib1fv),
-   TABLE_ENTRY(VertexAttrib1s),
-   TABLE_ENTRY(VertexAttrib1sv),
-   TABLE_ENTRY(VertexAttrib2d),
-   TABLE_ENTRY(VertexAttrib2dv),
-   TABLE_ENTRY(VertexAttrib2f),
-   TABLE_ENTRY(VertexAttrib2fv),
-   TABLE_ENTRY(VertexAttrib2s),
-   TABLE_ENTRY(VertexAttrib2sv),
-   TABLE_ENTRY(VertexAttrib3d),
-   TABLE_ENTRY(VertexAttrib3dv),
-   TABLE_ENTRY(VertexAttrib3f),
-   TABLE_ENTRY(VertexAttrib3fv),
-   TABLE_ENTRY(VertexAttrib3s),
-   TABLE_ENTRY(VertexAttrib3sv),
-   TABLE_ENTRY(VertexAttrib4Nbv),
-   TABLE_ENTRY(VertexAttrib4Niv),
-   TABLE_ENTRY(VertexAttrib4Nsv),
-   TABLE_ENTRY(VertexAttrib4Nub),
-   TABLE_ENTRY(VertexAttrib4Nubv),
-   TABLE_ENTRY(VertexAttrib4Nuiv),
-   TABLE_ENTRY(VertexAttrib4Nusv),
-   TABLE_ENTRY(VertexAttrib4bv),
-   TABLE_ENTRY(VertexAttrib4d),
-   TABLE_ENTRY(VertexAttrib4dv),
-   TABLE_ENTRY(VertexAttrib4f),
-   TABLE_ENTRY(VertexAttrib4fv),
-   TABLE_ENTRY(VertexAttrib4iv),
-   TABLE_ENTRY(VertexAttrib4s),
-   TABLE_ENTRY(VertexAttrib4sv),
-   TABLE_ENTRY(VertexAttrib4ubv),
-   TABLE_ENTRY(VertexAttrib4uiv),
-   TABLE_ENTRY(VertexAttrib4usv),
-   TABLE_ENTRY(VertexAttribPointer),
-   TABLE_ENTRY(BindBuffer),
-   TABLE_ENTRY(BufferData),
-   TABLE_ENTRY(BufferSubData),
-   TABLE_ENTRY(DeleteBuffers),
-   TABLE_ENTRY(GenBuffers),
-   TABLE_ENTRY(GetBufferParameteriv),
-   TABLE_ENTRY(GetBufferPointerv),
-   TABLE_ENTRY(GetBufferSubData),
-   TABLE_ENTRY(IsBuffer),
-   TABLE_ENTRY(MapBuffer),
-   TABLE_ENTRY(UnmapBuffer),
-   TABLE_ENTRY(BeginQuery),
-   TABLE_ENTRY(DeleteQueries),
-   TABLE_ENTRY(EndQuery),
-   TABLE_ENTRY(GenQueries),
-   TABLE_ENTRY(GetQueryObjectiv),
-   TABLE_ENTRY(GetQueryObjectuiv),
-   TABLE_ENTRY(GetQueryiv),
-   TABLE_ENTRY(IsQuery),
-   TABLE_ENTRY(CompileShader),
-   TABLE_ENTRY(GetActiveUniform),
-   TABLE_ENTRY(GetShaderSource),
-   TABLE_ENTRY(GetUniformLocation),
-   TABLE_ENTRY(GetUniformfv),
-   TABLE_ENTRY(GetUniformiv),
-   TABLE_ENTRY(LinkProgram),
-   TABLE_ENTRY(ShaderSource),
-   TABLE_ENTRY(Uniform1f),
-   TABLE_ENTRY(Uniform1fv),
-   TABLE_ENTRY(Uniform1i),
-   TABLE_ENTRY(Uniform1iv),
-   TABLE_ENTRY(Uniform2f),
-   TABLE_ENTRY(Uniform2fv),
-   TABLE_ENTRY(Uniform2i),
-   TABLE_ENTRY(Uniform2iv),
-   TABLE_ENTRY(Uniform3f),
-   TABLE_ENTRY(Uniform3fv),
-   TABLE_ENTRY(Uniform3i),
-   TABLE_ENTRY(Uniform3iv),
-   TABLE_ENTRY(Uniform4f),
-   TABLE_ENTRY(Uniform4fv),
-   TABLE_ENTRY(Uniform4i),
-   TABLE_ENTRY(Uniform4iv),
-   TABLE_ENTRY(UniformMatrix2fv),
-   TABLE_ENTRY(UniformMatrix3fv),
-   TABLE_ENTRY(UniformMatrix4fv),
-   TABLE_ENTRY(UseProgram),
-   TABLE_ENTRY(ValidateProgram),
-   TABLE_ENTRY(BindAttribLocation),
-   TABLE_ENTRY(GetActiveAttrib),
-   TABLE_ENTRY(GetAttribLocation),
-   TABLE_ENTRY(DrawBuffers),
-   TABLE_ENTRY(DrawBuffersATI),
-   TABLE_ENTRY(RenderbufferStorageMultisampleEXT),
-   TABLE_ENTRY(PointParameterf),
-   TABLE_ENTRY(PointParameterfARB),
-   TABLE_ENTRY(_dispatch_stub_594),
-   TABLE_ENTRY(PointParameterfv),
-   TABLE_ENTRY(PointParameterfvARB),
-   TABLE_ENTRY(_dispatch_stub_595),
-   TABLE_ENTRY(SecondaryColor3b),
-   TABLE_ENTRY(SecondaryColor3bv),
-   TABLE_ENTRY(SecondaryColor3d),
-   TABLE_ENTRY(SecondaryColor3dv),
-   TABLE_ENTRY(SecondaryColor3f),
-   TABLE_ENTRY(SecondaryColor3fv),
-   TABLE_ENTRY(SecondaryColor3i),
-   TABLE_ENTRY(SecondaryColor3iv),
-   TABLE_ENTRY(SecondaryColor3s),
-   TABLE_ENTRY(SecondaryColor3sv),
-   TABLE_ENTRY(SecondaryColor3ub),
-   TABLE_ENTRY(SecondaryColor3ubv),
-   TABLE_ENTRY(SecondaryColor3ui),
-   TABLE_ENTRY(SecondaryColor3uiv),
-   TABLE_ENTRY(SecondaryColor3us),
-   TABLE_ENTRY(SecondaryColor3usv),
-   TABLE_ENTRY(SecondaryColorPointer),
-   TABLE_ENTRY(MultiDrawArrays),
-   TABLE_ENTRY(MultiDrawElements),
-   TABLE_ENTRY(FogCoordPointer),
-   TABLE_ENTRY(FogCoordd),
-   TABLE_ENTRY(FogCoorddv),
-   TABLE_ENTRY(FogCoordf),
-   TABLE_ENTRY(FogCoordfv),
-   TABLE_ENTRY(BlendFuncSeparate),
-   TABLE_ENTRY(_dispatch_stub_625),
-   TABLE_ENTRY(WindowPos2d),
-   TABLE_ENTRY(WindowPos2dARB),
-   TABLE_ENTRY(WindowPos2dv),
-   TABLE_ENTRY(WindowPos2dvARB),
-   TABLE_ENTRY(WindowPos2f),
-   TABLE_ENTRY(WindowPos2fARB),
-   TABLE_ENTRY(WindowPos2fv),
-   TABLE_ENTRY(WindowPos2fvARB),
-   TABLE_ENTRY(WindowPos2i),
-   TABLE_ENTRY(WindowPos2iARB),
-   TABLE_ENTRY(WindowPos2iv),
-   TABLE_ENTRY(WindowPos2ivARB),
-   TABLE_ENTRY(WindowPos2s),
-   TABLE_ENTRY(WindowPos2sARB),
-   TABLE_ENTRY(WindowPos2sv),
-   TABLE_ENTRY(WindowPos2svARB),
-   TABLE_ENTRY(WindowPos3d),
-   TABLE_ENTRY(WindowPos3dARB),
-   TABLE_ENTRY(WindowPos3dv),
-   TABLE_ENTRY(WindowPos3dvARB),
-   TABLE_ENTRY(WindowPos3f),
-   TABLE_ENTRY(WindowPos3fARB),
-   TABLE_ENTRY(WindowPos3fv),
-   TABLE_ENTRY(WindowPos3fvARB),
-   TABLE_ENTRY(WindowPos3i),
-   TABLE_ENTRY(WindowPos3iARB),
-   TABLE_ENTRY(WindowPos3iv),
-   TABLE_ENTRY(WindowPos3ivARB),
-   TABLE_ENTRY(WindowPos3s),
-   TABLE_ENTRY(WindowPos3sARB),
-   TABLE_ENTRY(WindowPos3sv),
-   TABLE_ENTRY(WindowPos3svARB),
-   TABLE_ENTRY(BindProgramARB),
-   TABLE_ENTRY(DeleteProgramsARB),
-   TABLE_ENTRY(GenProgramsARB),
-   TABLE_ENTRY(GetVertexAttribPointerv),
-   TABLE_ENTRY(GetVertexAttribPointervARB),
-   TABLE_ENTRY(IsProgramARB),
-   TABLE_ENTRY(PointParameteri),
-   TABLE_ENTRY(PointParameteriv),
-   TABLE_ENTRY(DeleteVertexArrays),
-   TABLE_ENTRY(IsVertexArray),
-   TABLE_ENTRY(BlendEquationSeparate),
-   TABLE_ENTRY(BindFramebuffer),
-   TABLE_ENTRY(BindRenderbuffer),
-   TABLE_ENTRY(CheckFramebufferStatus),
-   TABLE_ENTRY(DeleteFramebuffers),
-   TABLE_ENTRY(DeleteRenderbuffers),
-   TABLE_ENTRY(FramebufferRenderbuffer),
-   TABLE_ENTRY(FramebufferTexture1D),
-   TABLE_ENTRY(FramebufferTexture2D),
-   TABLE_ENTRY(FramebufferTexture3D),
-   TABLE_ENTRY(GenFramebuffers),
-   TABLE_ENTRY(GenRenderbuffers),
-   TABLE_ENTRY(GenerateMipmap),
-   TABLE_ENTRY(GetFramebufferAttachmentParameteriv),
-   TABLE_ENTRY(GetRenderbufferParameteriv),
-   TABLE_ENTRY(IsFramebuffer),
-   TABLE_ENTRY(IsRenderbuffer),
-   TABLE_ENTRY(RenderbufferStorage),
-   TABLE_ENTRY(BlitFramebuffer),
-   TABLE_ENTRY(FramebufferTextureLayer),
-   TABLE_ENTRY(BeginTransformFeedback),
-   TABLE_ENTRY(BindBufferBase),
-   TABLE_ENTRY(BindBufferRange),
-   TABLE_ENTRY(EndTransformFeedback),
-   TABLE_ENTRY(GetTransformFeedbackVarying),
-   TABLE_ENTRY(TransformFeedbackVaryings),
-   TABLE_ENTRY(ProvokingVertex),
-#endif /* _GLAPI_SKIP_NORMAL_ENTRY_POINTS */
-#ifndef _GLAPI_SKIP_PROTO_ENTRY_POINTS
-   TABLE_ENTRY(AreTexturesResidentEXT),
-   TABLE_ENTRY(DeleteTexturesEXT),
-   TABLE_ENTRY(GenTexturesEXT),
-   TABLE_ENTRY(IsTextureEXT),
-   TABLE_ENTRY(GetColorTableEXT),
-   TABLE_ENTRY(_dispatch_stub_343),
-   TABLE_ENTRY(GetColorTableParameterfvEXT),
-   TABLE_ENTRY(_dispatch_stub_344),
-   TABLE_ENTRY(GetColorTableParameterivEXT),
-   TABLE_ENTRY(_dispatch_stub_345),
-   TABLE_ENTRY(_dispatch_stub_356),
-   TABLE_ENTRY(_dispatch_stub_357),
-   TABLE_ENTRY(_dispatch_stub_358),
-   TABLE_ENTRY(_dispatch_stub_359),
-   TABLE_ENTRY(_dispatch_stub_361),
-   TABLE_ENTRY(_dispatch_stub_362),
-   TABLE_ENTRY(_dispatch_stub_363),
-   TABLE_ENTRY(_dispatch_stub_364),
-   TABLE_ENTRY(_dispatch_stub_365),
-   TABLE_ENTRY(_dispatch_stub_366),
-#endif /* _GLAPI_SKIP_PROTO_ENTRY_POINTS */
-};
-#endif /*UNUSED_TABLE_NAME*/
-
-
-#  undef KEYWORD1
-#  undef KEYWORD1_ALT
-#  undef KEYWORD2
-#  undef NAME
-#  undef DISPATCH
-#  undef RETURN_DISPATCH
-#  undef DISPATCH_TABLE_NAME
-#  undef UNUSED_TABLE_NAME
-#  undef TABLE_ENTRY
-#  undef HIDDEN
diff --git a/src/mesa/glapi/glprocs.h b/src/mesa/glapi/glprocs.h
deleted file mode 100644 (file)
index 8eb04ee..0000000
+++ /dev/null
@@ -1,2427 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_procs.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
- * (C) Copyright IBM Corporation 2004, 2006
- * 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
- * BRIAN PAUL, 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.
- */
-
-
-/* This file is only included by glapi.c and is used for
- * the GetProcAddress() function
- */
-
-typedef struct {
-    GLint Name_offset;
-#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
-    _glapi_proc Address;
-#endif
-    GLuint Offset;
-} glprocs_table_t;
-
-#if   !defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , o }
-#elif  defined(NEED_FUNCTION_POINTER) && !defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f1 , o }
-#elif  defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f2 , o }
-#elif !defined(NEED_FUNCTION_POINTER) &&  defined(GLX_INDIRECT_RENDERING)
-#  define NAME_FUNC_OFFSET(n,f1,f2,f3,o) { n , (_glapi_proc) f3 , o }
-#endif
-
-
-
-static const char gl_string_table[] =
-    "glNewList\0"
-    "glEndList\0"
-    "glCallList\0"
-    "glCallLists\0"
-    "glDeleteLists\0"
-    "glGenLists\0"
-    "glListBase\0"
-    "glBegin\0"
-    "glBitmap\0"
-    "glColor3b\0"
-    "glColor3bv\0"
-    "glColor3d\0"
-    "glColor3dv\0"
-    "glColor3f\0"
-    "glColor3fv\0"
-    "glColor3i\0"
-    "glColor3iv\0"
-    "glColor3s\0"
-    "glColor3sv\0"
-    "glColor3ub\0"
-    "glColor3ubv\0"
-    "glColor3ui\0"
-    "glColor3uiv\0"
-    "glColor3us\0"
-    "glColor3usv\0"
-    "glColor4b\0"
-    "glColor4bv\0"
-    "glColor4d\0"
-    "glColor4dv\0"
-    "glColor4f\0"
-    "glColor4fv\0"
-    "glColor4i\0"
-    "glColor4iv\0"
-    "glColor4s\0"
-    "glColor4sv\0"
-    "glColor4ub\0"
-    "glColor4ubv\0"
-    "glColor4ui\0"
-    "glColor4uiv\0"
-    "glColor4us\0"
-    "glColor4usv\0"
-    "glEdgeFlag\0"
-    "glEdgeFlagv\0"
-    "glEnd\0"
-    "glIndexd\0"
-    "glIndexdv\0"
-    "glIndexf\0"
-    "glIndexfv\0"
-    "glIndexi\0"
-    "glIndexiv\0"
-    "glIndexs\0"
-    "glIndexsv\0"
-    "glNormal3b\0"
-    "glNormal3bv\0"
-    "glNormal3d\0"
-    "glNormal3dv\0"
-    "glNormal3f\0"
-    "glNormal3fv\0"
-    "glNormal3i\0"
-    "glNormal3iv\0"
-    "glNormal3s\0"
-    "glNormal3sv\0"
-    "glRasterPos2d\0"
-    "glRasterPos2dv\0"
-    "glRasterPos2f\0"
-    "glRasterPos2fv\0"
-    "glRasterPos2i\0"
-    "glRasterPos2iv\0"
-    "glRasterPos2s\0"
-    "glRasterPos2sv\0"
-    "glRasterPos3d\0"
-    "glRasterPos3dv\0"
-    "glRasterPos3f\0"
-    "glRasterPos3fv\0"
-    "glRasterPos3i\0"
-    "glRasterPos3iv\0"
-    "glRasterPos3s\0"
-    "glRasterPos3sv\0"
-    "glRasterPos4d\0"
-    "glRasterPos4dv\0"
-    "glRasterPos4f\0"
-    "glRasterPos4fv\0"
-    "glRasterPos4i\0"
-    "glRasterPos4iv\0"
-    "glRasterPos4s\0"
-    "glRasterPos4sv\0"
-    "glRectd\0"
-    "glRectdv\0"
-    "glRectf\0"
-    "glRectfv\0"
-    "glRecti\0"
-    "glRectiv\0"
-    "glRects\0"
-    "glRectsv\0"
-    "glTexCoord1d\0"
-    "glTexCoord1dv\0"
-    "glTexCoord1f\0"
-    "glTexCoord1fv\0"
-    "glTexCoord1i\0"
-    "glTexCoord1iv\0"
-    "glTexCoord1s\0"
-    "glTexCoord1sv\0"
-    "glTexCoord2d\0"
-    "glTexCoord2dv\0"
-    "glTexCoord2f\0"
-    "glTexCoord2fv\0"
-    "glTexCoord2i\0"
-    "glTexCoord2iv\0"
-    "glTexCoord2s\0"
-    "glTexCoord2sv\0"
-    "glTexCoord3d\0"
-    "glTexCoord3dv\0"
-    "glTexCoord3f\0"
-    "glTexCoord3fv\0"
-    "glTexCoord3i\0"
-    "glTexCoord3iv\0"
-    "glTexCoord3s\0"
-    "glTexCoord3sv\0"
-    "glTexCoord4d\0"
-    "glTexCoord4dv\0"
-    "glTexCoord4f\0"
-    "glTexCoord4fv\0"
-    "glTexCoord4i\0"
-    "glTexCoord4iv\0"
-    "glTexCoord4s\0"
-    "glTexCoord4sv\0"
-    "glVertex2d\0"
-    "glVertex2dv\0"
-    "glVertex2f\0"
-    "glVertex2fv\0"
-    "glVertex2i\0"
-    "glVertex2iv\0"
-    "glVertex2s\0"
-    "glVertex2sv\0"
-    "glVertex3d\0"
-    "glVertex3dv\0"
-    "glVertex3f\0"
-    "glVertex3fv\0"
-    "glVertex3i\0"
-    "glVertex3iv\0"
-    "glVertex3s\0"
-    "glVertex3sv\0"
-    "glVertex4d\0"
-    "glVertex4dv\0"
-    "glVertex4f\0"
-    "glVertex4fv\0"
-    "glVertex4i\0"
-    "glVertex4iv\0"
-    "glVertex4s\0"
-    "glVertex4sv\0"
-    "glClipPlane\0"
-    "glColorMaterial\0"
-    "glCullFace\0"
-    "glFogf\0"
-    "glFogfv\0"
-    "glFogi\0"
-    "glFogiv\0"
-    "glFrontFace\0"
-    "glHint\0"
-    "glLightf\0"
-    "glLightfv\0"
-    "glLighti\0"
-    "glLightiv\0"
-    "glLightModelf\0"
-    "glLightModelfv\0"
-    "glLightModeli\0"
-    "glLightModeliv\0"
-    "glLineStipple\0"
-    "glLineWidth\0"
-    "glMaterialf\0"
-    "glMaterialfv\0"
-    "glMateriali\0"
-    "glMaterialiv\0"
-    "glPointSize\0"
-    "glPolygonMode\0"
-    "glPolygonStipple\0"
-    "glScissor\0"
-    "glShadeModel\0"
-    "glTexParameterf\0"
-    "glTexParameterfv\0"
-    "glTexParameteri\0"
-    "glTexParameteriv\0"
-    "glTexImage1D\0"
-    "glTexImage2D\0"
-    "glTexEnvf\0"
-    "glTexEnvfv\0"
-    "glTexEnvi\0"
-    "glTexEnviv\0"
-    "glTexGend\0"
-    "glTexGendv\0"
-    "glTexGenf\0"
-    "glTexGenfv\0"
-    "glTexGeni\0"
-    "glTexGeniv\0"
-    "glFeedbackBuffer\0"
-    "glSelectBuffer\0"
-    "glRenderMode\0"
-    "glInitNames\0"
-    "glLoadName\0"
-    "glPassThrough\0"
-    "glPopName\0"
-    "glPushName\0"
-    "glDrawBuffer\0"
-    "glClear\0"
-    "glClearAccum\0"
-    "glClearIndex\0"
-    "glClearColor\0"
-    "glClearStencil\0"
-    "glClearDepth\0"
-    "glStencilMask\0"
-    "glColorMask\0"
-    "glDepthMask\0"
-    "glIndexMask\0"
-    "glAccum\0"
-    "glDisable\0"
-    "glEnable\0"
-    "glFinish\0"
-    "glFlush\0"
-    "glPopAttrib\0"
-    "glPushAttrib\0"
-    "glMap1d\0"
-    "glMap1f\0"
-    "glMap2d\0"
-    "glMap2f\0"
-    "glMapGrid1d\0"
-    "glMapGrid1f\0"
-    "glMapGrid2d\0"
-    "glMapGrid2f\0"
-    "glEvalCoord1d\0"
-    "glEvalCoord1dv\0"
-    "glEvalCoord1f\0"
-    "glEvalCoord1fv\0"
-    "glEvalCoord2d\0"
-    "glEvalCoord2dv\0"
-    "glEvalCoord2f\0"
-    "glEvalCoord2fv\0"
-    "glEvalMesh1\0"
-    "glEvalPoint1\0"
-    "glEvalMesh2\0"
-    "glEvalPoint2\0"
-    "glAlphaFunc\0"
-    "glBlendFunc\0"
-    "glLogicOp\0"
-    "glStencilFunc\0"
-    "glStencilOp\0"
-    "glDepthFunc\0"
-    "glPixelZoom\0"
-    "glPixelTransferf\0"
-    "glPixelTransferi\0"
-    "glPixelStoref\0"
-    "glPixelStorei\0"
-    "glPixelMapfv\0"
-    "glPixelMapuiv\0"
-    "glPixelMapusv\0"
-    "glReadBuffer\0"
-    "glCopyPixels\0"
-    "glReadPixels\0"
-    "glDrawPixels\0"
-    "glGetBooleanv\0"
-    "glGetClipPlane\0"
-    "glGetDoublev\0"
-    "glGetError\0"
-    "glGetFloatv\0"
-    "glGetIntegerv\0"
-    "glGetLightfv\0"
-    "glGetLightiv\0"
-    "glGetMapdv\0"
-    "glGetMapfv\0"
-    "glGetMapiv\0"
-    "glGetMaterialfv\0"
-    "glGetMaterialiv\0"
-    "glGetPixelMapfv\0"
-    "glGetPixelMapuiv\0"
-    "glGetPixelMapusv\0"
-    "glGetPolygonStipple\0"
-    "glGetString\0"
-    "glGetTexEnvfv\0"
-    "glGetTexEnviv\0"
-    "glGetTexGendv\0"
-    "glGetTexGenfv\0"
-    "glGetTexGeniv\0"
-    "glGetTexImage\0"
-    "glGetTexParameterfv\0"
-    "glGetTexParameteriv\0"
-    "glGetTexLevelParameterfv\0"
-    "glGetTexLevelParameteriv\0"
-    "glIsEnabled\0"
-    "glIsList\0"
-    "glDepthRange\0"
-    "glFrustum\0"
-    "glLoadIdentity\0"
-    "glLoadMatrixf\0"
-    "glLoadMatrixd\0"
-    "glMatrixMode\0"
-    "glMultMatrixf\0"
-    "glMultMatrixd\0"
-    "glOrtho\0"
-    "glPopMatrix\0"
-    "glPushMatrix\0"
-    "glRotated\0"
-    "glRotatef\0"
-    "glScaled\0"
-    "glScalef\0"
-    "glTranslated\0"
-    "glTranslatef\0"
-    "glViewport\0"
-    "glArrayElement\0"
-    "glBindTexture\0"
-    "glColorPointer\0"
-    "glDisableClientState\0"
-    "glDrawArrays\0"
-    "glDrawElements\0"
-    "glEdgeFlagPointer\0"
-    "glEnableClientState\0"
-    "glIndexPointer\0"
-    "glIndexub\0"
-    "glIndexubv\0"
-    "glInterleavedArrays\0"
-    "glNormalPointer\0"
-    "glPolygonOffset\0"
-    "glTexCoordPointer\0"
-    "glVertexPointer\0"
-    "glAreTexturesResident\0"
-    "glCopyTexImage1D\0"
-    "glCopyTexImage2D\0"
-    "glCopyTexSubImage1D\0"
-    "glCopyTexSubImage2D\0"
-    "glDeleteTextures\0"
-    "glGenTextures\0"
-    "glGetPointerv\0"
-    "glIsTexture\0"
-    "glPrioritizeTextures\0"
-    "glTexSubImage1D\0"
-    "glTexSubImage2D\0"
-    "glPopClientAttrib\0"
-    "glPushClientAttrib\0"
-    "glBlendColor\0"
-    "glBlendEquation\0"
-    "glDrawRangeElements\0"
-    "glColorTable\0"
-    "glColorTableParameterfv\0"
-    "glColorTableParameteriv\0"
-    "glCopyColorTable\0"
-    "glGetColorTable\0"
-    "glGetColorTableParameterfv\0"
-    "glGetColorTableParameteriv\0"
-    "glColorSubTable\0"
-    "glCopyColorSubTable\0"
-    "glConvolutionFilter1D\0"
-    "glConvolutionFilter2D\0"
-    "glConvolutionParameterf\0"
-    "glConvolutionParameterfv\0"
-    "glConvolutionParameteri\0"
-    "glConvolutionParameteriv\0"
-    "glCopyConvolutionFilter1D\0"
-    "glCopyConvolutionFilter2D\0"
-    "glGetConvolutionFilter\0"
-    "glGetConvolutionParameterfv\0"
-    "glGetConvolutionParameteriv\0"
-    "glGetSeparableFilter\0"
-    "glSeparableFilter2D\0"
-    "glGetHistogram\0"
-    "glGetHistogramParameterfv\0"
-    "glGetHistogramParameteriv\0"
-    "glGetMinmax\0"
-    "glGetMinmaxParameterfv\0"
-    "glGetMinmaxParameteriv\0"
-    "glHistogram\0"
-    "glMinmax\0"
-    "glResetHistogram\0"
-    "glResetMinmax\0"
-    "glTexImage3D\0"
-    "glTexSubImage3D\0"
-    "glCopyTexSubImage3D\0"
-    "glActiveTextureARB\0"
-    "glClientActiveTextureARB\0"
-    "glMultiTexCoord1dARB\0"
-    "glMultiTexCoord1dvARB\0"
-    "glMultiTexCoord1fARB\0"
-    "glMultiTexCoord1fvARB\0"
-    "glMultiTexCoord1iARB\0"
-    "glMultiTexCoord1ivARB\0"
-    "glMultiTexCoord1sARB\0"
-    "glMultiTexCoord1svARB\0"
-    "glMultiTexCoord2dARB\0"
-    "glMultiTexCoord2dvARB\0"
-    "glMultiTexCoord2fARB\0"
-    "glMultiTexCoord2fvARB\0"
-    "glMultiTexCoord2iARB\0"
-    "glMultiTexCoord2ivARB\0"
-    "glMultiTexCoord2sARB\0"
-    "glMultiTexCoord2svARB\0"
-    "glMultiTexCoord3dARB\0"
-    "glMultiTexCoord3dvARB\0"
-    "glMultiTexCoord3fARB\0"
-    "glMultiTexCoord3fvARB\0"
-    "glMultiTexCoord3iARB\0"
-    "glMultiTexCoord3ivARB\0"
-    "glMultiTexCoord3sARB\0"
-    "glMultiTexCoord3svARB\0"
-    "glMultiTexCoord4dARB\0"
-    "glMultiTexCoord4dvARB\0"
-    "glMultiTexCoord4fARB\0"
-    "glMultiTexCoord4fvARB\0"
-    "glMultiTexCoord4iARB\0"
-    "glMultiTexCoord4ivARB\0"
-    "glMultiTexCoord4sARB\0"
-    "glMultiTexCoord4svARB\0"
-    "glAttachShader\0"
-    "glCreateProgram\0"
-    "glCreateShader\0"
-    "glDeleteProgram\0"
-    "glDeleteShader\0"
-    "glDetachShader\0"
-    "glGetAttachedShaders\0"
-    "glGetProgramInfoLog\0"
-    "glGetProgramiv\0"
-    "glGetShaderInfoLog\0"
-    "glGetShaderiv\0"
-    "glIsProgram\0"
-    "glIsShader\0"
-    "glStencilFuncSeparate\0"
-    "glStencilMaskSeparate\0"
-    "glStencilOpSeparate\0"
-    "glUniformMatrix2x3fv\0"
-    "glUniformMatrix2x4fv\0"
-    "glUniformMatrix3x2fv\0"
-    "glUniformMatrix3x4fv\0"
-    "glUniformMatrix4x2fv\0"
-    "glUniformMatrix4x3fv\0"
-    "glDrawArraysInstanced\0"
-    "glDrawElementsInstanced\0"
-    "glLoadTransposeMatrixdARB\0"
-    "glLoadTransposeMatrixfARB\0"
-    "glMultTransposeMatrixdARB\0"
-    "glMultTransposeMatrixfARB\0"
-    "glSampleCoverageARB\0"
-    "glCompressedTexImage1DARB\0"
-    "glCompressedTexImage2DARB\0"
-    "glCompressedTexImage3DARB\0"
-    "glCompressedTexSubImage1DARB\0"
-    "glCompressedTexSubImage2DARB\0"
-    "glCompressedTexSubImage3DARB\0"
-    "glGetCompressedTexImageARB\0"
-    "glDisableVertexAttribArrayARB\0"
-    "glEnableVertexAttribArrayARB\0"
-    "glGetProgramEnvParameterdvARB\0"
-    "glGetProgramEnvParameterfvARB\0"
-    "glGetProgramLocalParameterdvARB\0"
-    "glGetProgramLocalParameterfvARB\0"
-    "glGetProgramStringARB\0"
-    "glGetProgramivARB\0"
-    "glGetVertexAttribdvARB\0"
-    "glGetVertexAttribfvARB\0"
-    "glGetVertexAttribivARB\0"
-    "glProgramEnvParameter4dARB\0"
-    "glProgramEnvParameter4dvARB\0"
-    "glProgramEnvParameter4fARB\0"
-    "glProgramEnvParameter4fvARB\0"
-    "glProgramLocalParameter4dARB\0"
-    "glProgramLocalParameter4dvARB\0"
-    "glProgramLocalParameter4fARB\0"
-    "glProgramLocalParameter4fvARB\0"
-    "glProgramStringARB\0"
-    "glVertexAttrib1dARB\0"
-    "glVertexAttrib1dvARB\0"
-    "glVertexAttrib1fARB\0"
-    "glVertexAttrib1fvARB\0"
-    "glVertexAttrib1sARB\0"
-    "glVertexAttrib1svARB\0"
-    "glVertexAttrib2dARB\0"
-    "glVertexAttrib2dvARB\0"
-    "glVertexAttrib2fARB\0"
-    "glVertexAttrib2fvARB\0"
-    "glVertexAttrib2sARB\0"
-    "glVertexAttrib2svARB\0"
-    "glVertexAttrib3dARB\0"
-    "glVertexAttrib3dvARB\0"
-    "glVertexAttrib3fARB\0"
-    "glVertexAttrib3fvARB\0"
-    "glVertexAttrib3sARB\0"
-    "glVertexAttrib3svARB\0"
-    "glVertexAttrib4NbvARB\0"
-    "glVertexAttrib4NivARB\0"
-    "glVertexAttrib4NsvARB\0"
-    "glVertexAttrib4NubARB\0"
-    "glVertexAttrib4NubvARB\0"
-    "glVertexAttrib4NuivARB\0"
-    "glVertexAttrib4NusvARB\0"
-    "glVertexAttrib4bvARB\0"
-    "glVertexAttrib4dARB\0"
-    "glVertexAttrib4dvARB\0"
-    "glVertexAttrib4fARB\0"
-    "glVertexAttrib4fvARB\0"
-    "glVertexAttrib4ivARB\0"
-    "glVertexAttrib4sARB\0"
-    "glVertexAttrib4svARB\0"
-    "glVertexAttrib4ubvARB\0"
-    "glVertexAttrib4uivARB\0"
-    "glVertexAttrib4usvARB\0"
-    "glVertexAttribPointerARB\0"
-    "glBindBufferARB\0"
-    "glBufferDataARB\0"
-    "glBufferSubDataARB\0"
-    "glDeleteBuffersARB\0"
-    "glGenBuffersARB\0"
-    "glGetBufferParameterivARB\0"
-    "glGetBufferPointervARB\0"
-    "glGetBufferSubDataARB\0"
-    "glIsBufferARB\0"
-    "glMapBufferARB\0"
-    "glUnmapBufferARB\0"
-    "glBeginQueryARB\0"
-    "glDeleteQueriesARB\0"
-    "glEndQueryARB\0"
-    "glGenQueriesARB\0"
-    "glGetQueryObjectivARB\0"
-    "glGetQueryObjectuivARB\0"
-    "glGetQueryivARB\0"
-    "glIsQueryARB\0"
-    "glAttachObjectARB\0"
-    "glCompileShaderARB\0"
-    "glCreateProgramObjectARB\0"
-    "glCreateShaderObjectARB\0"
-    "glDeleteObjectARB\0"
-    "glDetachObjectARB\0"
-    "glGetActiveUniformARB\0"
-    "glGetAttachedObjectsARB\0"
-    "glGetHandleARB\0"
-    "glGetInfoLogARB\0"
-    "glGetObjectParameterfvARB\0"
-    "glGetObjectParameterivARB\0"
-    "glGetShaderSourceARB\0"
-    "glGetUniformLocationARB\0"
-    "glGetUniformfvARB\0"
-    "glGetUniformivARB\0"
-    "glLinkProgramARB\0"
-    "glShaderSourceARB\0"
-    "glUniform1fARB\0"
-    "glUniform1fvARB\0"
-    "glUniform1iARB\0"
-    "glUniform1ivARB\0"
-    "glUniform2fARB\0"
-    "glUniform2fvARB\0"
-    "glUniform2iARB\0"
-    "glUniform2ivARB\0"
-    "glUniform3fARB\0"
-    "glUniform3fvARB\0"
-    "glUniform3iARB\0"
-    "glUniform3ivARB\0"
-    "glUniform4fARB\0"
-    "glUniform4fvARB\0"
-    "glUniform4iARB\0"
-    "glUniform4ivARB\0"
-    "glUniformMatrix2fvARB\0"
-    "glUniformMatrix3fvARB\0"
-    "glUniformMatrix4fvARB\0"
-    "glUseProgramObjectARB\0"
-    "glValidateProgramARB\0"
-    "glBindAttribLocationARB\0"
-    "glGetActiveAttribARB\0"
-    "glGetAttribLocationARB\0"
-    "glDrawBuffersARB\0"
-    "glRenderbufferStorageMultisample\0"
-    "glFlushMappedBufferRange\0"
-    "glMapBufferRange\0"
-    "glBindVertexArray\0"
-    "glGenVertexArrays\0"
-    "glCopyBufferSubData\0"
-    "glClientWaitSync\0"
-    "glDeleteSync\0"
-    "glFenceSync\0"
-    "glGetInteger64v\0"
-    "glGetSynciv\0"
-    "glIsSync\0"
-    "glWaitSync\0"
-    "glDrawElementsBaseVertex\0"
-    "glDrawRangeElementsBaseVertex\0"
-    "glMultiDrawElementsBaseVertex\0"
-    "glPolygonOffsetEXT\0"
-    "glGetPixelTexGenParameterfvSGIS\0"
-    "glGetPixelTexGenParameterivSGIS\0"
-    "glPixelTexGenParameterfSGIS\0"
-    "glPixelTexGenParameterfvSGIS\0"
-    "glPixelTexGenParameteriSGIS\0"
-    "glPixelTexGenParameterivSGIS\0"
-    "glSampleMaskSGIS\0"
-    "glSamplePatternSGIS\0"
-    "glColorPointerEXT\0"
-    "glEdgeFlagPointerEXT\0"
-    "glIndexPointerEXT\0"
-    "glNormalPointerEXT\0"
-    "glTexCoordPointerEXT\0"
-    "glVertexPointerEXT\0"
-    "glPointParameterfEXT\0"
-    "glPointParameterfvEXT\0"
-    "glLockArraysEXT\0"
-    "glUnlockArraysEXT\0"
-    "glCullParameterdvEXT\0"
-    "glCullParameterfvEXT\0"
-    "glSecondaryColor3bEXT\0"
-    "glSecondaryColor3bvEXT\0"
-    "glSecondaryColor3dEXT\0"
-    "glSecondaryColor3dvEXT\0"
-    "glSecondaryColor3fEXT\0"
-    "glSecondaryColor3fvEXT\0"
-    "glSecondaryColor3iEXT\0"
-    "glSecondaryColor3ivEXT\0"
-    "glSecondaryColor3sEXT\0"
-    "glSecondaryColor3svEXT\0"
-    "glSecondaryColor3ubEXT\0"
-    "glSecondaryColor3ubvEXT\0"
-    "glSecondaryColor3uiEXT\0"
-    "glSecondaryColor3uivEXT\0"
-    "glSecondaryColor3usEXT\0"
-    "glSecondaryColor3usvEXT\0"
-    "glSecondaryColorPointerEXT\0"
-    "glMultiDrawArraysEXT\0"
-    "glMultiDrawElementsEXT\0"
-    "glFogCoordPointerEXT\0"
-    "glFogCoorddEXT\0"
-    "glFogCoorddvEXT\0"
-    "glFogCoordfEXT\0"
-    "glFogCoordfvEXT\0"
-    "glPixelTexGenSGIX\0"
-    "glBlendFuncSeparateEXT\0"
-    "glFlushVertexArrayRangeNV\0"
-    "glVertexArrayRangeNV\0"
-    "glCombinerInputNV\0"
-    "glCombinerOutputNV\0"
-    "glCombinerParameterfNV\0"
-    "glCombinerParameterfvNV\0"
-    "glCombinerParameteriNV\0"
-    "glCombinerParameterivNV\0"
-    "glFinalCombinerInputNV\0"
-    "glGetCombinerInputParameterfvNV\0"
-    "glGetCombinerInputParameterivNV\0"
-    "glGetCombinerOutputParameterfvNV\0"
-    "glGetCombinerOutputParameterivNV\0"
-    "glGetFinalCombinerInputParameterfvNV\0"
-    "glGetFinalCombinerInputParameterivNV\0"
-    "glResizeBuffersMESA\0"
-    "glWindowPos2dMESA\0"
-    "glWindowPos2dvMESA\0"
-    "glWindowPos2fMESA\0"
-    "glWindowPos2fvMESA\0"
-    "glWindowPos2iMESA\0"
-    "glWindowPos2ivMESA\0"
-    "glWindowPos2sMESA\0"
-    "glWindowPos2svMESA\0"
-    "glWindowPos3dMESA\0"
-    "glWindowPos3dvMESA\0"
-    "glWindowPos3fMESA\0"
-    "glWindowPos3fvMESA\0"
-    "glWindowPos3iMESA\0"
-    "glWindowPos3ivMESA\0"
-    "glWindowPos3sMESA\0"
-    "glWindowPos3svMESA\0"
-    "glWindowPos4dMESA\0"
-    "glWindowPos4dvMESA\0"
-    "glWindowPos4fMESA\0"
-    "glWindowPos4fvMESA\0"
-    "glWindowPos4iMESA\0"
-    "glWindowPos4ivMESA\0"
-    "glWindowPos4sMESA\0"
-    "glWindowPos4svMESA\0"
-    "glMultiModeDrawArraysIBM\0"
-    "glMultiModeDrawElementsIBM\0"
-    "glDeleteFencesNV\0"
-    "glFinishFenceNV\0"
-    "glGenFencesNV\0"
-    "glGetFenceivNV\0"
-    "glIsFenceNV\0"
-    "glSetFenceNV\0"
-    "glTestFenceNV\0"
-    "glAreProgramsResidentNV\0"
-    "glBindProgramNV\0"
-    "glDeleteProgramsNV\0"
-    "glExecuteProgramNV\0"
-    "glGenProgramsNV\0"
-    "glGetProgramParameterdvNV\0"
-    "glGetProgramParameterfvNV\0"
-    "glGetProgramStringNV\0"
-    "glGetProgramivNV\0"
-    "glGetTrackMatrixivNV\0"
-    "glGetVertexAttribPointervNV\0"
-    "glGetVertexAttribdvNV\0"
-    "glGetVertexAttribfvNV\0"
-    "glGetVertexAttribivNV\0"
-    "glIsProgramNV\0"
-    "glLoadProgramNV\0"
-    "glProgramParameters4dvNV\0"
-    "glProgramParameters4fvNV\0"
-    "glRequestResidentProgramsNV\0"
-    "glTrackMatrixNV\0"
-    "glVertexAttrib1dNV\0"
-    "glVertexAttrib1dvNV\0"
-    "glVertexAttrib1fNV\0"
-    "glVertexAttrib1fvNV\0"
-    "glVertexAttrib1sNV\0"
-    "glVertexAttrib1svNV\0"
-    "glVertexAttrib2dNV\0"
-    "glVertexAttrib2dvNV\0"
-    "glVertexAttrib2fNV\0"
-    "glVertexAttrib2fvNV\0"
-    "glVertexAttrib2sNV\0"
-    "glVertexAttrib2svNV\0"
-    "glVertexAttrib3dNV\0"
-    "glVertexAttrib3dvNV\0"
-    "glVertexAttrib3fNV\0"
-    "glVertexAttrib3fvNV\0"
-    "glVertexAttrib3sNV\0"
-    "glVertexAttrib3svNV\0"
-    "glVertexAttrib4dNV\0"
-    "glVertexAttrib4dvNV\0"
-    "glVertexAttrib4fNV\0"
-    "glVertexAttrib4fvNV\0"
-    "glVertexAttrib4sNV\0"
-    "glVertexAttrib4svNV\0"
-    "glVertexAttrib4ubNV\0"
-    "glVertexAttrib4ubvNV\0"
-    "glVertexAttribPointerNV\0"
-    "glVertexAttribs1dvNV\0"
-    "glVertexAttribs1fvNV\0"
-    "glVertexAttribs1svNV\0"
-    "glVertexAttribs2dvNV\0"
-    "glVertexAttribs2fvNV\0"
-    "glVertexAttribs2svNV\0"
-    "glVertexAttribs3dvNV\0"
-    "glVertexAttribs3fvNV\0"
-    "glVertexAttribs3svNV\0"
-    "glVertexAttribs4dvNV\0"
-    "glVertexAttribs4fvNV\0"
-    "glVertexAttribs4svNV\0"
-    "glVertexAttribs4ubvNV\0"
-    "glGetTexBumpParameterfvATI\0"
-    "glGetTexBumpParameterivATI\0"
-    "glTexBumpParameterfvATI\0"
-    "glTexBumpParameterivATI\0"
-    "glAlphaFragmentOp1ATI\0"
-    "glAlphaFragmentOp2ATI\0"
-    "glAlphaFragmentOp3ATI\0"
-    "glBeginFragmentShaderATI\0"
-    "glBindFragmentShaderATI\0"
-    "glColorFragmentOp1ATI\0"
-    "glColorFragmentOp2ATI\0"
-    "glColorFragmentOp3ATI\0"
-    "glDeleteFragmentShaderATI\0"
-    "glEndFragmentShaderATI\0"
-    "glGenFragmentShadersATI\0"
-    "glPassTexCoordATI\0"
-    "glSampleMapATI\0"
-    "glSetFragmentShaderConstantATI\0"
-    "glPointParameteriNV\0"
-    "glPointParameterivNV\0"
-    "glActiveStencilFaceEXT\0"
-    "glBindVertexArrayAPPLE\0"
-    "glDeleteVertexArraysAPPLE\0"
-    "glGenVertexArraysAPPLE\0"
-    "glIsVertexArrayAPPLE\0"
-    "glGetProgramNamedParameterdvNV\0"
-    "glGetProgramNamedParameterfvNV\0"
-    "glProgramNamedParameter4dNV\0"
-    "glProgramNamedParameter4dvNV\0"
-    "glProgramNamedParameter4fNV\0"
-    "glProgramNamedParameter4fvNV\0"
-    "glDepthBoundsEXT\0"
-    "glBlendEquationSeparateEXT\0"
-    "glBindFramebufferEXT\0"
-    "glBindRenderbufferEXT\0"
-    "glCheckFramebufferStatusEXT\0"
-    "glDeleteFramebuffersEXT\0"
-    "glDeleteRenderbuffersEXT\0"
-    "glFramebufferRenderbufferEXT\0"
-    "glFramebufferTexture1DEXT\0"
-    "glFramebufferTexture2DEXT\0"
-    "glFramebufferTexture3DEXT\0"
-    "glGenFramebuffersEXT\0"
-    "glGenRenderbuffersEXT\0"
-    "glGenerateMipmapEXT\0"
-    "glGetFramebufferAttachmentParameterivEXT\0"
-    "glGetRenderbufferParameterivEXT\0"
-    "glIsFramebufferEXT\0"
-    "glIsRenderbufferEXT\0"
-    "glRenderbufferStorageEXT\0"
-    "glBlitFramebufferEXT\0"
-    "glBufferParameteriAPPLE\0"
-    "glFlushMappedBufferRangeAPPLE\0"
-    "glFramebufferTextureLayerEXT\0"
-    "glColorMaskIndexedEXT\0"
-    "glDisableIndexedEXT\0"
-    "glEnableIndexedEXT\0"
-    "glGetBooleanIndexedvEXT\0"
-    "glGetIntegerIndexedvEXT\0"
-    "glIsEnabledIndexedEXT\0"
-    "glBeginConditionalRenderNV\0"
-    "glEndConditionalRenderNV\0"
-    "glBeginTransformFeedbackEXT\0"
-    "glBindBufferBaseEXT\0"
-    "glBindBufferOffsetEXT\0"
-    "glBindBufferRangeEXT\0"
-    "glEndTransformFeedbackEXT\0"
-    "glGetTransformFeedbackVaryingEXT\0"
-    "glTransformFeedbackVaryingsEXT\0"
-    "glProvokingVertexEXT\0"
-    "glGetTexParameterPointervAPPLE\0"
-    "glTextureRangeAPPLE\0"
-    "glGetObjectParameterivAPPLE\0"
-    "glObjectPurgeableAPPLE\0"
-    "glObjectUnpurgeableAPPLE\0"
-    "glStencilFuncSeparateATI\0"
-    "glProgramEnvParameters4fvEXT\0"
-    "glProgramLocalParameters4fvEXT\0"
-    "glGetQueryObjecti64vEXT\0"
-    "glGetQueryObjectui64vEXT\0"
-    "glEGLImageTargetRenderbufferStorageOES\0"
-    "glEGLImageTargetTexture2DOES\0"
-    "glArrayElementEXT\0"
-    "glBindTextureEXT\0"
-    "glDrawArraysEXT\0"
-    "glAreTexturesResidentEXT\0"
-    "glCopyTexImage1DEXT\0"
-    "glCopyTexImage2DEXT\0"
-    "glCopyTexSubImage1DEXT\0"
-    "glCopyTexSubImage2DEXT\0"
-    "glDeleteTexturesEXT\0"
-    "glGenTexturesEXT\0"
-    "glGetPointervEXT\0"
-    "glIsTextureEXT\0"
-    "glPrioritizeTexturesEXT\0"
-    "glTexSubImage1DEXT\0"
-    "glTexSubImage2DEXT\0"
-    "glBlendColorEXT\0"
-    "glBlendEquationEXT\0"
-    "glDrawRangeElementsEXT\0"
-    "glColorTableSGI\0"
-    "glColorTableEXT\0"
-    "glColorTableParameterfvSGI\0"
-    "glColorTableParameterivSGI\0"
-    "glCopyColorTableSGI\0"
-    "glGetColorTableSGI\0"
-    "glGetColorTableEXT\0"
-    "glGetColorTableParameterfvSGI\0"
-    "glGetColorTableParameterfvEXT\0"
-    "glGetColorTableParameterivSGI\0"
-    "glGetColorTableParameterivEXT\0"
-    "glColorSubTableEXT\0"
-    "glCopyColorSubTableEXT\0"
-    "glConvolutionFilter1DEXT\0"
-    "glConvolutionFilter2DEXT\0"
-    "glConvolutionParameterfEXT\0"
-    "glConvolutionParameterfvEXT\0"
-    "glConvolutionParameteriEXT\0"
-    "glConvolutionParameterivEXT\0"
-    "glCopyConvolutionFilter1DEXT\0"
-    "glCopyConvolutionFilter2DEXT\0"
-    "glGetConvolutionFilterEXT\0"
-    "glGetConvolutionParameterfvEXT\0"
-    "glGetConvolutionParameterivEXT\0"
-    "glGetSeparableFilterEXT\0"
-    "glSeparableFilter2DEXT\0"
-    "glGetHistogramEXT\0"
-    "glGetHistogramParameterfvEXT\0"
-    "glGetHistogramParameterivEXT\0"
-    "glGetMinmaxEXT\0"
-    "glGetMinmaxParameterfvEXT\0"
-    "glGetMinmaxParameterivEXT\0"
-    "glHistogramEXT\0"
-    "glMinmaxEXT\0"
-    "glResetHistogramEXT\0"
-    "glResetMinmaxEXT\0"
-    "glTexImage3DEXT\0"
-    "glTexSubImage3DEXT\0"
-    "glCopyTexSubImage3DEXT\0"
-    "glActiveTexture\0"
-    "glClientActiveTexture\0"
-    "glMultiTexCoord1d\0"
-    "glMultiTexCoord1dv\0"
-    "glMultiTexCoord1f\0"
-    "glMultiTexCoord1fv\0"
-    "glMultiTexCoord1i\0"
-    "glMultiTexCoord1iv\0"
-    "glMultiTexCoord1s\0"
-    "glMultiTexCoord1sv\0"
-    "glMultiTexCoord2d\0"
-    "glMultiTexCoord2dv\0"
-    "glMultiTexCoord2f\0"
-    "glMultiTexCoord2fv\0"
-    "glMultiTexCoord2i\0"
-    "glMultiTexCoord2iv\0"
-    "glMultiTexCoord2s\0"
-    "glMultiTexCoord2sv\0"
-    "glMultiTexCoord3d\0"
-    "glMultiTexCoord3dv\0"
-    "glMultiTexCoord3f\0"
-    "glMultiTexCoord3fv\0"
-    "glMultiTexCoord3i\0"
-    "glMultiTexCoord3iv\0"
-    "glMultiTexCoord3s\0"
-    "glMultiTexCoord3sv\0"
-    "glMultiTexCoord4d\0"
-    "glMultiTexCoord4dv\0"
-    "glMultiTexCoord4f\0"
-    "glMultiTexCoord4fv\0"
-    "glMultiTexCoord4i\0"
-    "glMultiTexCoord4iv\0"
-    "glMultiTexCoord4s\0"
-    "glMultiTexCoord4sv\0"
-    "glStencilOpSeparateATI\0"
-    "glDrawArraysInstancedARB\0"
-    "glDrawArraysInstancedEXT\0"
-    "glDrawElementsInstancedARB\0"
-    "glDrawElementsInstancedEXT\0"
-    "glLoadTransposeMatrixd\0"
-    "glLoadTransposeMatrixf\0"
-    "glMultTransposeMatrixd\0"
-    "glMultTransposeMatrixf\0"
-    "glSampleCoverage\0"
-    "glCompressedTexImage1D\0"
-    "glCompressedTexImage2D\0"
-    "glCompressedTexImage3D\0"
-    "glCompressedTexSubImage1D\0"
-    "glCompressedTexSubImage2D\0"
-    "glCompressedTexSubImage3D\0"
-    "glGetCompressedTexImage\0"
-    "glDisableVertexAttribArray\0"
-    "glEnableVertexAttribArray\0"
-    "glGetVertexAttribdv\0"
-    "glGetVertexAttribfv\0"
-    "glGetVertexAttribiv\0"
-    "glProgramParameter4dNV\0"
-    "glProgramParameter4dvNV\0"
-    "glProgramParameter4fNV\0"
-    "glProgramParameter4fvNV\0"
-    "glVertexAttrib1d\0"
-    "glVertexAttrib1dv\0"
-    "glVertexAttrib1f\0"
-    "glVertexAttrib1fv\0"
-    "glVertexAttrib1s\0"
-    "glVertexAttrib1sv\0"
-    "glVertexAttrib2d\0"
-    "glVertexAttrib2dv\0"
-    "glVertexAttrib2f\0"
-    "glVertexAttrib2fv\0"
-    "glVertexAttrib2s\0"
-    "glVertexAttrib2sv\0"
-    "glVertexAttrib3d\0"
-    "glVertexAttrib3dv\0"
-    "glVertexAttrib3f\0"
-    "glVertexAttrib3fv\0"
-    "glVertexAttrib3s\0"
-    "glVertexAttrib3sv\0"
-    "glVertexAttrib4Nbv\0"
-    "glVertexAttrib4Niv\0"
-    "glVertexAttrib4Nsv\0"
-    "glVertexAttrib4Nub\0"
-    "glVertexAttrib4Nubv\0"
-    "glVertexAttrib4Nuiv\0"
-    "glVertexAttrib4Nusv\0"
-    "glVertexAttrib4bv\0"
-    "glVertexAttrib4d\0"
-    "glVertexAttrib4dv\0"
-    "glVertexAttrib4f\0"
-    "glVertexAttrib4fv\0"
-    "glVertexAttrib4iv\0"
-    "glVertexAttrib4s\0"
-    "glVertexAttrib4sv\0"
-    "glVertexAttrib4ubv\0"
-    "glVertexAttrib4uiv\0"
-    "glVertexAttrib4usv\0"
-    "glVertexAttribPointer\0"
-    "glBindBuffer\0"
-    "glBufferData\0"
-    "glBufferSubData\0"
-    "glDeleteBuffers\0"
-    "glGenBuffers\0"
-    "glGetBufferParameteriv\0"
-    "glGetBufferPointerv\0"
-    "glGetBufferSubData\0"
-    "glIsBuffer\0"
-    "glMapBuffer\0"
-    "glUnmapBuffer\0"
-    "glBeginQuery\0"
-    "glDeleteQueries\0"
-    "glEndQuery\0"
-    "glGenQueries\0"
-    "glGetQueryObjectiv\0"
-    "glGetQueryObjectuiv\0"
-    "glGetQueryiv\0"
-    "glIsQuery\0"
-    "glCompileShader\0"
-    "glGetActiveUniform\0"
-    "glGetShaderSource\0"
-    "glGetUniformLocation\0"
-    "glGetUniformfv\0"
-    "glGetUniformiv\0"
-    "glLinkProgram\0"
-    "glShaderSource\0"
-    "glUniform1f\0"
-    "glUniform1fv\0"
-    "glUniform1i\0"
-    "glUniform1iv\0"
-    "glUniform2f\0"
-    "glUniform2fv\0"
-    "glUniform2i\0"
-    "glUniform2iv\0"
-    "glUniform3f\0"
-    "glUniform3fv\0"
-    "glUniform3i\0"
-    "glUniform3iv\0"
-    "glUniform4f\0"
-    "glUniform4fv\0"
-    "glUniform4i\0"
-    "glUniform4iv\0"
-    "glUniformMatrix2fv\0"
-    "glUniformMatrix3fv\0"
-    "glUniformMatrix4fv\0"
-    "glUseProgram\0"
-    "glValidateProgram\0"
-    "glBindAttribLocation\0"
-    "glGetActiveAttrib\0"
-    "glGetAttribLocation\0"
-    "glDrawBuffers\0"
-    "glDrawBuffersATI\0"
-    "glRenderbufferStorageMultisampleEXT\0"
-    "glSampleMaskEXT\0"
-    "glSamplePatternEXT\0"
-    "glPointParameterf\0"
-    "glPointParameterfARB\0"
-    "glPointParameterfSGIS\0"
-    "glPointParameterfv\0"
-    "glPointParameterfvARB\0"
-    "glPointParameterfvSGIS\0"
-    "glSecondaryColor3b\0"
-    "glSecondaryColor3bv\0"
-    "glSecondaryColor3d\0"
-    "glSecondaryColor3dv\0"
-    "glSecondaryColor3f\0"
-    "glSecondaryColor3fv\0"
-    "glSecondaryColor3i\0"
-    "glSecondaryColor3iv\0"
-    "glSecondaryColor3s\0"
-    "glSecondaryColor3sv\0"
-    "glSecondaryColor3ub\0"
-    "glSecondaryColor3ubv\0"
-    "glSecondaryColor3ui\0"
-    "glSecondaryColor3uiv\0"
-    "glSecondaryColor3us\0"
-    "glSecondaryColor3usv\0"
-    "glSecondaryColorPointer\0"
-    "glMultiDrawArrays\0"
-    "glMultiDrawElements\0"
-    "glFogCoordPointer\0"
-    "glFogCoordd\0"
-    "glFogCoorddv\0"
-    "glFogCoordf\0"
-    "glFogCoordfv\0"
-    "glBlendFuncSeparate\0"
-    "glBlendFuncSeparateINGR\0"
-    "glWindowPos2d\0"
-    "glWindowPos2dARB\0"
-    "glWindowPos2dv\0"
-    "glWindowPos2dvARB\0"
-    "glWindowPos2f\0"
-    "glWindowPos2fARB\0"
-    "glWindowPos2fv\0"
-    "glWindowPos2fvARB\0"
-    "glWindowPos2i\0"
-    "glWindowPos2iARB\0"
-    "glWindowPos2iv\0"
-    "glWindowPos2ivARB\0"
-    "glWindowPos2s\0"
-    "glWindowPos2sARB\0"
-    "glWindowPos2sv\0"
-    "glWindowPos2svARB\0"
-    "glWindowPos3d\0"
-    "glWindowPos3dARB\0"
-    "glWindowPos3dv\0"
-    "glWindowPos3dvARB\0"
-    "glWindowPos3f\0"
-    "glWindowPos3fARB\0"
-    "glWindowPos3fv\0"
-    "glWindowPos3fvARB\0"
-    "glWindowPos3i\0"
-    "glWindowPos3iARB\0"
-    "glWindowPos3iv\0"
-    "glWindowPos3ivARB\0"
-    "glWindowPos3s\0"
-    "glWindowPos3sARB\0"
-    "glWindowPos3sv\0"
-    "glWindowPos3svARB\0"
-    "glBindProgramARB\0"
-    "glDeleteProgramsARB\0"
-    "glGenProgramsARB\0"
-    "glGetVertexAttribPointerv\0"
-    "glGetVertexAttribPointervARB\0"
-    "glIsProgramARB\0"
-    "glPointParameteri\0"
-    "glPointParameteriv\0"
-    "glDeleteVertexArrays\0"
-    "glIsVertexArray\0"
-    "glBlendEquationSeparate\0"
-    "glBlendEquationSeparateATI\0"
-    "glBindFramebuffer\0"
-    "glBindRenderbuffer\0"
-    "glCheckFramebufferStatus\0"
-    "glDeleteFramebuffers\0"
-    "glDeleteRenderbuffers\0"
-    "glFramebufferRenderbuffer\0"
-    "glFramebufferTexture1D\0"
-    "glFramebufferTexture2D\0"
-    "glFramebufferTexture3D\0"
-    "glGenFramebuffers\0"
-    "glGenRenderbuffers\0"
-    "glGenerateMipmap\0"
-    "glGetFramebufferAttachmentParameteriv\0"
-    "glGetRenderbufferParameteriv\0"
-    "glIsFramebuffer\0"
-    "glIsRenderbuffer\0"
-    "glRenderbufferStorage\0"
-    "glBlitFramebuffer\0"
-    "glFramebufferTextureLayer\0"
-    "glBeginTransformFeedback\0"
-    "glBindBufferBase\0"
-    "glBindBufferRange\0"
-    "glEndTransformFeedback\0"
-    "glGetTransformFeedbackVarying\0"
-    "glTransformFeedbackVaryings\0"
-    "glProvokingVertex\0"
-    ;
-
-
-#ifdef USE_MGL_NAMESPACE
-#define gl_dispatch_stub_343 mgl_dispatch_stub_343
-#define gl_dispatch_stub_344 mgl_dispatch_stub_344
-#define gl_dispatch_stub_345 mgl_dispatch_stub_345
-#define gl_dispatch_stub_356 mgl_dispatch_stub_356
-#define gl_dispatch_stub_357 mgl_dispatch_stub_357
-#define gl_dispatch_stub_358 mgl_dispatch_stub_358
-#define gl_dispatch_stub_359 mgl_dispatch_stub_359
-#define gl_dispatch_stub_361 mgl_dispatch_stub_361
-#define gl_dispatch_stub_362 mgl_dispatch_stub_362
-#define gl_dispatch_stub_363 mgl_dispatch_stub_363
-#define gl_dispatch_stub_364 mgl_dispatch_stub_364
-#define gl_dispatch_stub_365 mgl_dispatch_stub_365
-#define gl_dispatch_stub_366 mgl_dispatch_stub_366
-#define gl_dispatch_stub_580 mgl_dispatch_stub_580
-#define gl_dispatch_stub_581 mgl_dispatch_stub_581
-#define gl_dispatch_stub_582 mgl_dispatch_stub_582
-#define gl_dispatch_stub_583 mgl_dispatch_stub_583
-#define gl_dispatch_stub_584 mgl_dispatch_stub_584
-#define gl_dispatch_stub_585 mgl_dispatch_stub_585
-#define gl_dispatch_stub_586 mgl_dispatch_stub_586
-#define gl_dispatch_stub_587 mgl_dispatch_stub_587
-#define gl_dispatch_stub_598 mgl_dispatch_stub_598
-#define gl_dispatch_stub_599 mgl_dispatch_stub_599
-#define gl_dispatch_stub_624 mgl_dispatch_stub_624
-#define gl_dispatch_stub_666 mgl_dispatch_stub_666
-#define gl_dispatch_stub_667 mgl_dispatch_stub_667
-#define gl_dispatch_stub_668 mgl_dispatch_stub_668
-#define gl_dispatch_stub_669 mgl_dispatch_stub_669
-#define gl_dispatch_stub_670 mgl_dispatch_stub_670
-#define gl_dispatch_stub_671 mgl_dispatch_stub_671
-#define gl_dispatch_stub_672 mgl_dispatch_stub_672
-#define gl_dispatch_stub_673 mgl_dispatch_stub_673
-#define gl_dispatch_stub_674 mgl_dispatch_stub_674
-#define gl_dispatch_stub_755 mgl_dispatch_stub_755
-#define gl_dispatch_stub_756 mgl_dispatch_stub_756
-#define gl_dispatch_stub_757 mgl_dispatch_stub_757
-#define gl_dispatch_stub_758 mgl_dispatch_stub_758
-#define gl_dispatch_stub_759 mgl_dispatch_stub_759
-#define gl_dispatch_stub_766 mgl_dispatch_stub_766
-#define gl_dispatch_stub_767 mgl_dispatch_stub_767
-#define gl_dispatch_stub_785 mgl_dispatch_stub_785
-#define gl_dispatch_stub_786 mgl_dispatch_stub_786
-#define gl_dispatch_stub_787 mgl_dispatch_stub_787
-#define gl_dispatch_stub_805 mgl_dispatch_stub_805
-#define gl_dispatch_stub_806 mgl_dispatch_stub_806
-#define gl_dispatch_stub_810 mgl_dispatch_stub_810
-#define gl_dispatch_stub_811 mgl_dispatch_stub_811
-#define gl_dispatch_stub_812 mgl_dispatch_stub_812
-#define gl_dispatch_stub_813 mgl_dispatch_stub_813
-#define gl_dispatch_stub_814 mgl_dispatch_stub_814
-#endif /* USE_MGL_NAMESPACE */
-
-
-#if defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING)
-void GLAPIENTRY gl_dispatch_stub_343(GLenum target, GLenum format, GLenum type, GLvoid * table);
-void GLAPIENTRY gl_dispatch_stub_344(GLenum target, GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_345(GLenum target, GLenum pname, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_356(GLenum target, GLenum format, GLenum type, GLvoid * image);
-void GLAPIENTRY gl_dispatch_stub_357(GLenum target, GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_358(GLenum target, GLenum pname, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_359(GLenum target, GLenum format, GLenum type, GLvoid * row, GLvoid * column, GLvoid * span);
-void GLAPIENTRY gl_dispatch_stub_361(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-void GLAPIENTRY gl_dispatch_stub_362(GLenum target, GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_363(GLenum target, GLenum pname, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_364(GLenum target, GLboolean reset, GLenum format, GLenum type, GLvoid * values);
-void GLAPIENTRY gl_dispatch_stub_365(GLenum target, GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_366(GLenum target, GLenum pname, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_580(GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_581(GLenum pname, GLint * params);
-void GLAPIENTRY gl_dispatch_stub_582(GLenum pname, GLfloat param);
-void GLAPIENTRY gl_dispatch_stub_583(GLenum pname, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_584(GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_585(GLenum pname, const GLint * params);
-void GLAPIENTRY gl_dispatch_stub_586(GLclampf value, GLboolean invert);
-void GLAPIENTRY gl_dispatch_stub_587(GLenum pattern);
-void GLAPIENTRY gl_dispatch_stub_598(GLenum pname, GLdouble * params);
-void GLAPIENTRY gl_dispatch_stub_599(GLenum pname, GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_624(GLenum mode);
-void GLAPIENTRY gl_dispatch_stub_666(const GLenum * mode, const GLint * first, const GLsizei * count, GLsizei primcount, GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_667(const GLenum * mode, const GLsizei * count, GLenum type, const GLvoid * const * indices, GLsizei primcount, GLint modestride);
-void GLAPIENTRY gl_dispatch_stub_668(GLsizei n, const GLuint * fences);
-void GLAPIENTRY gl_dispatch_stub_669(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_670(GLsizei n, GLuint * fences);
-void GLAPIENTRY gl_dispatch_stub_671(GLuint fence, GLenum pname, GLint * params);
-GLboolean GLAPIENTRY gl_dispatch_stub_672(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_673(GLuint fence, GLenum condition);
-GLboolean GLAPIENTRY gl_dispatch_stub_674(GLuint fence);
-void GLAPIENTRY gl_dispatch_stub_755(GLenum face);
-void GLAPIENTRY gl_dispatch_stub_756(GLuint array);
-void GLAPIENTRY gl_dispatch_stub_757(GLsizei n, const GLuint * arrays);
-void GLAPIENTRY gl_dispatch_stub_758(GLsizei n, GLuint * arrays);
-GLboolean GLAPIENTRY gl_dispatch_stub_759(GLuint array);
-void GLAPIENTRY gl_dispatch_stub_766(GLclampd zmin, GLclampd zmax);
-void GLAPIENTRY gl_dispatch_stub_767(GLenum modeRGB, GLenum modeA);
-void GLAPIENTRY gl_dispatch_stub_785(GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter);
-void GLAPIENTRY gl_dispatch_stub_786(GLenum target, GLenum pname, GLint param);
-void GLAPIENTRY gl_dispatch_stub_787(GLenum target, GLintptr offset, GLsizeiptr size);
-void GLAPIENTRY gl_dispatch_stub_805(GLenum target, GLenum pname, GLvoid ** params);
-void GLAPIENTRY gl_dispatch_stub_806(GLenum target, GLsizei length, GLvoid * pointer);
-void GLAPIENTRY gl_dispatch_stub_810(GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
-void GLAPIENTRY gl_dispatch_stub_811(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_812(GLenum target, GLuint index, GLsizei count, const GLfloat * params);
-void GLAPIENTRY gl_dispatch_stub_813(GLuint id, GLenum pname, GLint64EXT * params);
-void GLAPIENTRY gl_dispatch_stub_814(GLuint id, GLenum pname, GLuint64EXT * params);
-#endif /* defined(NEED_FUNCTION_POINTER) || defined(GLX_INDIRECT_RENDERING) */
-
-static const glprocs_table_t static_functions[] = {
-    NAME_FUNC_OFFSET(    0, glNewList, glNewList, NULL, _gloffset_NewList),
-    NAME_FUNC_OFFSET(   10, glEndList, glEndList, NULL, _gloffset_EndList),
-    NAME_FUNC_OFFSET(   20, glCallList, glCallList, NULL, _gloffset_CallList),
-    NAME_FUNC_OFFSET(   31, glCallLists, glCallLists, NULL, _gloffset_CallLists),
-    NAME_FUNC_OFFSET(   43, glDeleteLists, glDeleteLists, NULL, _gloffset_DeleteLists),
-    NAME_FUNC_OFFSET(   57, glGenLists, glGenLists, NULL, _gloffset_GenLists),
-    NAME_FUNC_OFFSET(   68, glListBase, glListBase, NULL, _gloffset_ListBase),
-    NAME_FUNC_OFFSET(   79, glBegin, glBegin, NULL, _gloffset_Begin),
-    NAME_FUNC_OFFSET(   87, glBitmap, glBitmap, NULL, _gloffset_Bitmap),
-    NAME_FUNC_OFFSET(   96, glColor3b, glColor3b, NULL, _gloffset_Color3b),
-    NAME_FUNC_OFFSET(  106, glColor3bv, glColor3bv, NULL, _gloffset_Color3bv),
-    NAME_FUNC_OFFSET(  117, glColor3d, glColor3d, NULL, _gloffset_Color3d),
-    NAME_FUNC_OFFSET(  127, glColor3dv, glColor3dv, NULL, _gloffset_Color3dv),
-    NAME_FUNC_OFFSET(  138, glColor3f, glColor3f, NULL, _gloffset_Color3f),
-    NAME_FUNC_OFFSET(  148, glColor3fv, glColor3fv, NULL, _gloffset_Color3fv),
-    NAME_FUNC_OFFSET(  159, glColor3i, glColor3i, NULL, _gloffset_Color3i),
-    NAME_FUNC_OFFSET(  169, glColor3iv, glColor3iv, NULL, _gloffset_Color3iv),
-    NAME_FUNC_OFFSET(  180, glColor3s, glColor3s, NULL, _gloffset_Color3s),
-    NAME_FUNC_OFFSET(  190, glColor3sv, glColor3sv, NULL, _gloffset_Color3sv),
-    NAME_FUNC_OFFSET(  201, glColor3ub, glColor3ub, NULL, _gloffset_Color3ub),
-    NAME_FUNC_OFFSET(  212, glColor3ubv, glColor3ubv, NULL, _gloffset_Color3ubv),
-    NAME_FUNC_OFFSET(  224, glColor3ui, glColor3ui, NULL, _gloffset_Color3ui),
-    NAME_FUNC_OFFSET(  235, glColor3uiv, glColor3uiv, NULL, _gloffset_Color3uiv),
-    NAME_FUNC_OFFSET(  247, glColor3us, glColor3us, NULL, _gloffset_Color3us),
-    NAME_FUNC_OFFSET(  258, glColor3usv, glColor3usv, NULL, _gloffset_Color3usv),
-    NAME_FUNC_OFFSET(  270, glColor4b, glColor4b, NULL, _gloffset_Color4b),
-    NAME_FUNC_OFFSET(  280, glColor4bv, glColor4bv, NULL, _gloffset_Color4bv),
-    NAME_FUNC_OFFSET(  291, glColor4d, glColor4d, NULL, _gloffset_Color4d),
-    NAME_FUNC_OFFSET(  301, glColor4dv, glColor4dv, NULL, _gloffset_Color4dv),
-    NAME_FUNC_OFFSET(  312, glColor4f, glColor4f, NULL, _gloffset_Color4f),
-    NAME_FUNC_OFFSET(  322, glColor4fv, glColor4fv, NULL, _gloffset_Color4fv),
-    NAME_FUNC_OFFSET(  333, glColor4i, glColor4i, NULL, _gloffset_Color4i),
-    NAME_FUNC_OFFSET(  343, glColor4iv, glColor4iv, NULL, _gloffset_Color4iv),
-    NAME_FUNC_OFFSET(  354, glColor4s, glColor4s, NULL, _gloffset_Color4s),
-    NAME_FUNC_OFFSET(  364, glColor4sv, glColor4sv, NULL, _gloffset_Color4sv),
-    NAME_FUNC_OFFSET(  375, glColor4ub, glColor4ub, NULL, _gloffset_Color4ub),
-    NAME_FUNC_OFFSET(  386, glColor4ubv, glColor4ubv, NULL, _gloffset_Color4ubv),
-    NAME_FUNC_OFFSET(  398, glColor4ui, glColor4ui, NULL, _gloffset_Color4ui),
-    NAME_FUNC_OFFSET(  409, glColor4uiv, glColor4uiv, NULL, _gloffset_Color4uiv),
-    NAME_FUNC_OFFSET(  421, glColor4us, glColor4us, NULL, _gloffset_Color4us),
-    NAME_FUNC_OFFSET(  432, glColor4usv, glColor4usv, NULL, _gloffset_Color4usv),
-    NAME_FUNC_OFFSET(  444, glEdgeFlag, glEdgeFlag, NULL, _gloffset_EdgeFlag),
-    NAME_FUNC_OFFSET(  455, glEdgeFlagv, glEdgeFlagv, NULL, _gloffset_EdgeFlagv),
-    NAME_FUNC_OFFSET(  467, glEnd, glEnd, NULL, _gloffset_End),
-    NAME_FUNC_OFFSET(  473, glIndexd, glIndexd, NULL, _gloffset_Indexd),
-    NAME_FUNC_OFFSET(  482, glIndexdv, glIndexdv, NULL, _gloffset_Indexdv),
-    NAME_FUNC_OFFSET(  492, glIndexf, glIndexf, NULL, _gloffset_Indexf),
-    NAME_FUNC_OFFSET(  501, glIndexfv, glIndexfv, NULL, _gloffset_Indexfv),
-    NAME_FUNC_OFFSET(  511, glIndexi, glIndexi, NULL, _gloffset_Indexi),
-    NAME_FUNC_OFFSET(  520, glIndexiv, glIndexiv, NULL, _gloffset_Indexiv),
-    NAME_FUNC_OFFSET(  530, glIndexs, glIndexs, NULL, _gloffset_Indexs),
-    NAME_FUNC_OFFSET(  539, glIndexsv, glIndexsv, NULL, _gloffset_Indexsv),
-    NAME_FUNC_OFFSET(  549, glNormal3b, glNormal3b, NULL, _gloffset_Normal3b),
-    NAME_FUNC_OFFSET(  560, glNormal3bv, glNormal3bv, NULL, _gloffset_Normal3bv),
-    NAME_FUNC_OFFSET(  572, glNormal3d, glNormal3d, NULL, _gloffset_Normal3d),
-    NAME_FUNC_OFFSET(  583, glNormal3dv, glNormal3dv, NULL, _gloffset_Normal3dv),
-    NAME_FUNC_OFFSET(  595, glNormal3f, glNormal3f, NULL, _gloffset_Normal3f),
-    NAME_FUNC_OFFSET(  606, glNormal3fv, glNormal3fv, NULL, _gloffset_Normal3fv),
-    NAME_FUNC_OFFSET(  618, glNormal3i, glNormal3i, NULL, _gloffset_Normal3i),
-    NAME_FUNC_OFFSET(  629, glNormal3iv, glNormal3iv, NULL, _gloffset_Normal3iv),
-    NAME_FUNC_OFFSET(  641, glNormal3s, glNormal3s, NULL, _gloffset_Normal3s),
-    NAME_FUNC_OFFSET(  652, glNormal3sv, glNormal3sv, NULL, _gloffset_Normal3sv),
-    NAME_FUNC_OFFSET(  664, glRasterPos2d, glRasterPos2d, NULL, _gloffset_RasterPos2d),
-    NAME_FUNC_OFFSET(  678, glRasterPos2dv, glRasterPos2dv, NULL, _gloffset_RasterPos2dv),
-    NAME_FUNC_OFFSET(  693, glRasterPos2f, glRasterPos2f, NULL, _gloffset_RasterPos2f),
-    NAME_FUNC_OFFSET(  707, glRasterPos2fv, glRasterPos2fv, NULL, _gloffset_RasterPos2fv),
-    NAME_FUNC_OFFSET(  722, glRasterPos2i, glRasterPos2i, NULL, _gloffset_RasterPos2i),
-    NAME_FUNC_OFFSET(  736, glRasterPos2iv, glRasterPos2iv, NULL, _gloffset_RasterPos2iv),
-    NAME_FUNC_OFFSET(  751, glRasterPos2s, glRasterPos2s, NULL, _gloffset_RasterPos2s),
-    NAME_FUNC_OFFSET(  765, glRasterPos2sv, glRasterPos2sv, NULL, _gloffset_RasterPos2sv),
-    NAME_FUNC_OFFSET(  780, glRasterPos3d, glRasterPos3d, NULL, _gloffset_RasterPos3d),
-    NAME_FUNC_OFFSET(  794, glRasterPos3dv, glRasterPos3dv, NULL, _gloffset_RasterPos3dv),
-    NAME_FUNC_OFFSET(  809, glRasterPos3f, glRasterPos3f, NULL, _gloffset_RasterPos3f),
-    NAME_FUNC_OFFSET(  823, glRasterPos3fv, glRasterPos3fv, NULL, _gloffset_RasterPos3fv),
-    NAME_FUNC_OFFSET(  838, glRasterPos3i, glRasterPos3i, NULL, _gloffset_RasterPos3i),
-    NAME_FUNC_OFFSET(  852, glRasterPos3iv, glRasterPos3iv, NULL, _gloffset_RasterPos3iv),
-    NAME_FUNC_OFFSET(  867, glRasterPos3s, glRasterPos3s, NULL, _gloffset_RasterPos3s),
-    NAME_FUNC_OFFSET(  881, glRasterPos3sv, glRasterPos3sv, NULL, _gloffset_RasterPos3sv),
-    NAME_FUNC_OFFSET(  896, glRasterPos4d, glRasterPos4d, NULL, _gloffset_RasterPos4d),
-    NAME_FUNC_OFFSET(  910, glRasterPos4dv, glRasterPos4dv, NULL, _gloffset_RasterPos4dv),
-    NAME_FUNC_OFFSET(  925, glRasterPos4f, glRasterPos4f, NULL, _gloffset_RasterPos4f),
-    NAME_FUNC_OFFSET(  939, glRasterPos4fv, glRasterPos4fv, NULL, _gloffset_RasterPos4fv),
-    NAME_FUNC_OFFSET(  954, glRasterPos4i, glRasterPos4i, NULL, _gloffset_RasterPos4i),
-    NAME_FUNC_OFFSET(  968, glRasterPos4iv, glRasterPos4iv, NULL, _gloffset_RasterPos4iv),
-    NAME_FUNC_OFFSET(  983, glRasterPos4s, glRasterPos4s, NULL, _gloffset_RasterPos4s),
-    NAME_FUNC_OFFSET(  997, glRasterPos4sv, glRasterPos4sv, NULL, _gloffset_RasterPos4sv),
-    NAME_FUNC_OFFSET( 1012, glRectd, glRectd, NULL, _gloffset_Rectd),
-    NAME_FUNC_OFFSET( 1020, glRectdv, glRectdv, NULL, _gloffset_Rectdv),
-    NAME_FUNC_OFFSET( 1029, glRectf, glRectf, NULL, _gloffset_Rectf),
-    NAME_FUNC_OFFSET( 1037, glRectfv, glRectfv, NULL, _gloffset_Rectfv),
-    NAME_FUNC_OFFSET( 1046, glRecti, glRecti, NULL, _gloffset_Recti),
-    NAME_FUNC_OFFSET( 1054, glRectiv, glRectiv, NULL, _gloffset_Rectiv),
-    NAME_FUNC_OFFSET( 1063, glRects, glRects, NULL, _gloffset_Rects),
-    NAME_FUNC_OFFSET( 1071, glRectsv, glRectsv, NULL, _gloffset_Rectsv),
-    NAME_FUNC_OFFSET( 1080, glTexCoord1d, glTexCoord1d, NULL, _gloffset_TexCoord1d),
-    NAME_FUNC_OFFSET( 1093, glTexCoord1dv, glTexCoord1dv, NULL, _gloffset_TexCoord1dv),
-    NAME_FUNC_OFFSET( 1107, glTexCoord1f, glTexCoord1f, NULL, _gloffset_TexCoord1f),
-    NAME_FUNC_OFFSET( 1120, glTexCoord1fv, glTexCoord1fv, NULL, _gloffset_TexCoord1fv),
-    NAME_FUNC_OFFSET( 1134, glTexCoord1i, glTexCoord1i, NULL, _gloffset_TexCoord1i),
-    NAME_FUNC_OFFSET( 1147, glTexCoord1iv, glTexCoord1iv, NULL, _gloffset_TexCoord1iv),
-    NAME_FUNC_OFFSET( 1161, glTexCoord1s, glTexCoord1s, NULL, _gloffset_TexCoord1s),
-    NAME_FUNC_OFFSET( 1174, glTexCoord1sv, glTexCoord1sv, NULL, _gloffset_TexCoord1sv),
-    NAME_FUNC_OFFSET( 1188, glTexCoord2d, glTexCoord2d, NULL, _gloffset_TexCoord2d),
-    NAME_FUNC_OFFSET( 1201, glTexCoord2dv, glTexCoord2dv, NULL, _gloffset_TexCoord2dv),
-    NAME_FUNC_OFFSET( 1215, glTexCoord2f, glTexCoord2f, NULL, _gloffset_TexCoord2f),
-    NAME_FUNC_OFFSET( 1228, glTexCoord2fv, glTexCoord2fv, NULL, _gloffset_TexCoord2fv),
-    NAME_FUNC_OFFSET( 1242, glTexCoord2i, glTexCoord2i, NULL, _gloffset_TexCoord2i),
-    NAME_FUNC_OFFSET( 1255, glTexCoord2iv, glTexCoord2iv, NULL, _gloffset_TexCoord2iv),
-    NAME_FUNC_OFFSET( 1269, glTexCoord2s, glTexCoord2s, NULL, _gloffset_TexCoord2s),
-    NAME_FUNC_OFFSET( 1282, glTexCoord2sv, glTexCoord2sv, NULL, _gloffset_TexCoord2sv),
-    NAME_FUNC_OFFSET( 1296, glTexCoord3d, glTexCoord3d, NULL, _gloffset_TexCoord3d),
-    NAME_FUNC_OFFSET( 1309, glTexCoord3dv, glTexCoord3dv, NULL, _gloffset_TexCoord3dv),
-    NAME_FUNC_OFFSET( 1323, glTexCoord3f, glTexCoord3f, NULL, _gloffset_TexCoord3f),
-    NAME_FUNC_OFFSET( 1336, glTexCoord3fv, glTexCoord3fv, NULL, _gloffset_TexCoord3fv),
-    NAME_FUNC_OFFSET( 1350, glTexCoord3i, glTexCoord3i, NULL, _gloffset_TexCoord3i),
-    NAME_FUNC_OFFSET( 1363, glTexCoord3iv, glTexCoord3iv, NULL, _gloffset_TexCoord3iv),
-    NAME_FUNC_OFFSET( 1377, glTexCoord3s, glTexCoord3s, NULL, _gloffset_TexCoord3s),
-    NAME_FUNC_OFFSET( 1390, glTexCoord3sv, glTexCoord3sv, NULL, _gloffset_TexCoord3sv),
-    NAME_FUNC_OFFSET( 1404, glTexCoord4d, glTexCoord4d, NULL, _gloffset_TexCoord4d),
-    NAME_FUNC_OFFSET( 1417, glTexCoord4dv, glTexCoord4dv, NULL, _gloffset_TexCoord4dv),
-    NAME_FUNC_OFFSET( 1431, glTexCoord4f, glTexCoord4f, NULL, _gloffset_TexCoord4f),
-    NAME_FUNC_OFFSET( 1444, glTexCoord4fv, glTexCoord4fv, NULL, _gloffset_TexCoord4fv),
-    NAME_FUNC_OFFSET( 1458, glTexCoord4i, glTexCoord4i, NULL, _gloffset_TexCoord4i),
-    NAME_FUNC_OFFSET( 1471, glTexCoord4iv, glTexCoord4iv, NULL, _gloffset_TexCoord4iv),
-    NAME_FUNC_OFFSET( 1485, glTexCoord4s, glTexCoord4s, NULL, _gloffset_TexCoord4s),
-    NAME_FUNC_OFFSET( 1498, glTexCoord4sv, glTexCoord4sv, NULL, _gloffset_TexCoord4sv),
-    NAME_FUNC_OFFSET( 1512, glVertex2d, glVertex2d, NULL, _gloffset_Vertex2d),
-    NAME_FUNC_OFFSET( 1523, glVertex2dv, glVertex2dv, NULL, _gloffset_Vertex2dv),
-    NAME_FUNC_OFFSET( 1535, glVertex2f, glVertex2f, NULL, _gloffset_Vertex2f),
-    NAME_FUNC_OFFSET( 1546, glVertex2fv, glVertex2fv, NULL, _gloffset_Vertex2fv),
-    NAME_FUNC_OFFSET( 1558, glVertex2i, glVertex2i, NULL, _gloffset_Vertex2i),
-    NAME_FUNC_OFFSET( 1569, glVertex2iv, glVertex2iv, NULL, _gloffset_Vertex2iv),
-    NAME_FUNC_OFFSET( 1581, glVertex2s, glVertex2s, NULL, _gloffset_Vertex2s),
-    NAME_FUNC_OFFSET( 1592, glVertex2sv, glVertex2sv, NULL, _gloffset_Vertex2sv),
-    NAME_FUNC_OFFSET( 1604, glVertex3d, glVertex3d, NULL, _gloffset_Vertex3d),
-    NAME_FUNC_OFFSET( 1615, glVertex3dv, glVertex3dv, NULL, _gloffset_Vertex3dv),
-    NAME_FUNC_OFFSET( 1627, glVertex3f, glVertex3f, NULL, _gloffset_Vertex3f),
-    NAME_FUNC_OFFSET( 1638, glVertex3fv, glVertex3fv, NULL, _gloffset_Vertex3fv),
-    NAME_FUNC_OFFSET( 1650, glVertex3i, glVertex3i, NULL, _gloffset_Vertex3i),
-    NAME_FUNC_OFFSET( 1661, glVertex3iv, glVertex3iv, NULL, _gloffset_Vertex3iv),
-    NAME_FUNC_OFFSET( 1673, glVertex3s, glVertex3s, NULL, _gloffset_Vertex3s),
-    NAME_FUNC_OFFSET( 1684, glVertex3sv, glVertex3sv, NULL, _gloffset_Vertex3sv),
-    NAME_FUNC_OFFSET( 1696, glVertex4d, glVertex4d, NULL, _gloffset_Vertex4d),
-    NAME_FUNC_OFFSET( 1707, glVertex4dv, glVertex4dv, NULL, _gloffset_Vertex4dv),
-    NAME_FUNC_OFFSET( 1719, glVertex4f, glVertex4f, NULL, _gloffset_Vertex4f),
-    NAME_FUNC_OFFSET( 1730, glVertex4fv, glVertex4fv, NULL, _gloffset_Vertex4fv),
-    NAME_FUNC_OFFSET( 1742, glVertex4i, glVertex4i, NULL, _gloffset_Vertex4i),
-    NAME_FUNC_OFFSET( 1753, glVertex4iv, glVertex4iv, NULL, _gloffset_Vertex4iv),
-    NAME_FUNC_OFFSET( 1765, glVertex4s, glVertex4s, NULL, _gloffset_Vertex4s),
-    NAME_FUNC_OFFSET( 1776, glVertex4sv, glVertex4sv, NULL, _gloffset_Vertex4sv),
-    NAME_FUNC_OFFSET( 1788, glClipPlane, glClipPlane, NULL, _gloffset_ClipPlane),
-    NAME_FUNC_OFFSET( 1800, glColorMaterial, glColorMaterial, NULL, _gloffset_ColorMaterial),
-    NAME_FUNC_OFFSET( 1816, glCullFace, glCullFace, NULL, _gloffset_CullFace),
-    NAME_FUNC_OFFSET( 1827, glFogf, glFogf, NULL, _gloffset_Fogf),
-    NAME_FUNC_OFFSET( 1834, glFogfv, glFogfv, NULL, _gloffset_Fogfv),
-    NAME_FUNC_OFFSET( 1842, glFogi, glFogi, NULL, _gloffset_Fogi),
-    NAME_FUNC_OFFSET( 1849, glFogiv, glFogiv, NULL, _gloffset_Fogiv),
-    NAME_FUNC_OFFSET( 1857, glFrontFace, glFrontFace, NULL, _gloffset_FrontFace),
-    NAME_FUNC_OFFSET( 1869, glHint, glHint, NULL, _gloffset_Hint),
-    NAME_FUNC_OFFSET( 1876, glLightf, glLightf, NULL, _gloffset_Lightf),
-    NAME_FUNC_OFFSET( 1885, glLightfv, glLightfv, NULL, _gloffset_Lightfv),
-    NAME_FUNC_OFFSET( 1895, glLighti, glLighti, NULL, _gloffset_Lighti),
-    NAME_FUNC_OFFSET( 1904, glLightiv, glLightiv, NULL, _gloffset_Lightiv),
-    NAME_FUNC_OFFSET( 1914, glLightModelf, glLightModelf, NULL, _gloffset_LightModelf),
-    NAME_FUNC_OFFSET( 1928, glLightModelfv, glLightModelfv, NULL, _gloffset_LightModelfv),
-    NAME_FUNC_OFFSET( 1943, glLightModeli, glLightModeli, NULL, _gloffset_LightModeli),
-    NAME_FUNC_OFFSET( 1957, glLightModeliv, glLightModeliv, NULL, _gloffset_LightModeliv),
-    NAME_FUNC_OFFSET( 1972, glLineStipple, glLineStipple, NULL, _gloffset_LineStipple),
-    NAME_FUNC_OFFSET( 1986, glLineWidth, glLineWidth, NULL, _gloffset_LineWidth),
-    NAME_FUNC_OFFSET( 1998, glMaterialf, glMaterialf, NULL, _gloffset_Materialf),
-    NAME_FUNC_OFFSET( 2010, glMaterialfv, glMaterialfv, NULL, _gloffset_Materialfv),
-    NAME_FUNC_OFFSET( 2023, glMateriali, glMateriali, NULL, _gloffset_Materiali),
-    NAME_FUNC_OFFSET( 2035, glMaterialiv, glMaterialiv, NULL, _gloffset_Materialiv),
-    NAME_FUNC_OFFSET( 2048, glPointSize, glPointSize, NULL, _gloffset_PointSize),
-    NAME_FUNC_OFFSET( 2060, glPolygonMode, glPolygonMode, NULL, _gloffset_PolygonMode),
-    NAME_FUNC_OFFSET( 2074, glPolygonStipple, glPolygonStipple, NULL, _gloffset_PolygonStipple),
-    NAME_FUNC_OFFSET( 2091, glScissor, glScissor, NULL, _gloffset_Scissor),
-    NAME_FUNC_OFFSET( 2101, glShadeModel, glShadeModel, NULL, _gloffset_ShadeModel),
-    NAME_FUNC_OFFSET( 2114, glTexParameterf, glTexParameterf, NULL, _gloffset_TexParameterf),
-    NAME_FUNC_OFFSET( 2130, glTexParameterfv, glTexParameterfv, NULL, _gloffset_TexParameterfv),
-    NAME_FUNC_OFFSET( 2147, glTexParameteri, glTexParameteri, NULL, _gloffset_TexParameteri),
-    NAME_FUNC_OFFSET( 2163, glTexParameteriv, glTexParameteriv, NULL, _gloffset_TexParameteriv),
-    NAME_FUNC_OFFSET( 2180, glTexImage1D, glTexImage1D, NULL, _gloffset_TexImage1D),
-    NAME_FUNC_OFFSET( 2193, glTexImage2D, glTexImage2D, NULL, _gloffset_TexImage2D),
-    NAME_FUNC_OFFSET( 2206, glTexEnvf, glTexEnvf, NULL, _gloffset_TexEnvf),
-    NAME_FUNC_OFFSET( 2216, glTexEnvfv, glTexEnvfv, NULL, _gloffset_TexEnvfv),
-    NAME_FUNC_OFFSET( 2227, glTexEnvi, glTexEnvi, NULL, _gloffset_TexEnvi),
-    NAME_FUNC_OFFSET( 2237, glTexEnviv, glTexEnviv, NULL, _gloffset_TexEnviv),
-    NAME_FUNC_OFFSET( 2248, glTexGend, glTexGend, NULL, _gloffset_TexGend),
-    NAME_FUNC_OFFSET( 2258, glTexGendv, glTexGendv, NULL, _gloffset_TexGendv),
-    NAME_FUNC_OFFSET( 2269, glTexGenf, glTexGenf, NULL, _gloffset_TexGenf),
-    NAME_FUNC_OFFSET( 2279, glTexGenfv, glTexGenfv, NULL, _gloffset_TexGenfv),
-    NAME_FUNC_OFFSET( 2290, glTexGeni, glTexGeni, NULL, _gloffset_TexGeni),
-    NAME_FUNC_OFFSET( 2300, glTexGeniv, glTexGeniv, NULL, _gloffset_TexGeniv),
-    NAME_FUNC_OFFSET( 2311, glFeedbackBuffer, glFeedbackBuffer, NULL, _gloffset_FeedbackBuffer),
-    NAME_FUNC_OFFSET( 2328, glSelectBuffer, glSelectBuffer, NULL, _gloffset_SelectBuffer),
-    NAME_FUNC_OFFSET( 2343, glRenderMode, glRenderMode, NULL, _gloffset_RenderMode),
-    NAME_FUNC_OFFSET( 2356, glInitNames, glInitNames, NULL, _gloffset_InitNames),
-    NAME_FUNC_OFFSET( 2368, glLoadName, glLoadName, NULL, _gloffset_LoadName),
-    NAME_FUNC_OFFSET( 2379, glPassThrough, glPassThrough, NULL, _gloffset_PassThrough),
-    NAME_FUNC_OFFSET( 2393, glPopName, glPopName, NULL, _gloffset_PopName),
-    NAME_FUNC_OFFSET( 2403, glPushName, glPushName, NULL, _gloffset_PushName),
-    NAME_FUNC_OFFSET( 2414, glDrawBuffer, glDrawBuffer, NULL, _gloffset_DrawBuffer),
-    NAME_FUNC_OFFSET( 2427, glClear, glClear, NULL, _gloffset_Clear),
-    NAME_FUNC_OFFSET( 2435, glClearAccum, glClearAccum, NULL, _gloffset_ClearAccum),
-    NAME_FUNC_OFFSET( 2448, glClearIndex, glClearIndex, NULL, _gloffset_ClearIndex),
-    NAME_FUNC_OFFSET( 2461, glClearColor, glClearColor, NULL, _gloffset_ClearColor),
-    NAME_FUNC_OFFSET( 2474, glClearStencil, glClearStencil, NULL, _gloffset_ClearStencil),
-    NAME_FUNC_OFFSET( 2489, glClearDepth, glClearDepth, NULL, _gloffset_ClearDepth),
-    NAME_FUNC_OFFSET( 2502, glStencilMask, glStencilMask, NULL, _gloffset_StencilMask),
-    NAME_FUNC_OFFSET( 2516, glColorMask, glColorMask, NULL, _gloffset_ColorMask),
-    NAME_FUNC_OFFSET( 2528, glDepthMask, glDepthMask, NULL, _gloffset_DepthMask),
-    NAME_FUNC_OFFSET( 2540, glIndexMask, glIndexMask, NULL, _gloffset_IndexMask),
-    NAME_FUNC_OFFSET( 2552, glAccum, glAccum, NULL, _gloffset_Accum),
-    NAME_FUNC_OFFSET( 2560, glDisable, glDisable, NULL, _gloffset_Disable),
-    NAME_FUNC_OFFSET( 2570, glEnable, glEnable, NULL, _gloffset_Enable),
-    NAME_FUNC_OFFSET( 2579, glFinish, glFinish, NULL, _gloffset_Finish),
-    NAME_FUNC_OFFSET( 2588, glFlush, glFlush, NULL, _gloffset_Flush),
-    NAME_FUNC_OFFSET( 2596, glPopAttrib, glPopAttrib, NULL, _gloffset_PopAttrib),
-    NAME_FUNC_OFFSET( 2608, glPushAttrib, glPushAttrib, NULL, _gloffset_PushAttrib),
-    NAME_FUNC_OFFSET( 2621, glMap1d, glMap1d, NULL, _gloffset_Map1d),
-    NAME_FUNC_OFFSET( 2629, glMap1f, glMap1f, NULL, _gloffset_Map1f),
-    NAME_FUNC_OFFSET( 2637, glMap2d, glMap2d, NULL, _gloffset_Map2d),
-    NAME_FUNC_OFFSET( 2645, glMap2f, glMap2f, NULL, _gloffset_Map2f),
-    NAME_FUNC_OFFSET( 2653, glMapGrid1d, glMapGrid1d, NULL, _gloffset_MapGrid1d),
-    NAME_FUNC_OFFSET( 2665, glMapGrid1f, glMapGrid1f, NULL, _gloffset_MapGrid1f),
-    NAME_FUNC_OFFSET( 2677, glMapGrid2d, glMapGrid2d, NULL, _gloffset_MapGrid2d),
-    NAME_FUNC_OFFSET( 2689, glMapGrid2f, glMapGrid2f, NULL, _gloffset_MapGrid2f),
-    NAME_FUNC_OFFSET( 2701, glEvalCoord1d, glEvalCoord1d, NULL, _gloffset_EvalCoord1d),
-    NAME_FUNC_OFFSET( 2715, glEvalCoord1dv, glEvalCoord1dv, NULL, _gloffset_EvalCoord1dv),
-    NAME_FUNC_OFFSET( 2730, glEvalCoord1f, glEvalCoord1f, NULL, _gloffset_EvalCoord1f),
-    NAME_FUNC_OFFSET( 2744, glEvalCoord1fv, glEvalCoord1fv, NULL, _gloffset_EvalCoord1fv),
-    NAME_FUNC_OFFSET( 2759, glEvalCoord2d, glEvalCoord2d, NULL, _gloffset_EvalCoord2d),
-    NAME_FUNC_OFFSET( 2773, glEvalCoord2dv, glEvalCoord2dv, NULL, _gloffset_EvalCoord2dv),
-    NAME_FUNC_OFFSET( 2788, glEvalCoord2f, glEvalCoord2f, NULL, _gloffset_EvalCoord2f),
-    NAME_FUNC_OFFSET( 2802, glEvalCoord2fv, glEvalCoord2fv, NULL, _gloffset_EvalCoord2fv),
-    NAME_FUNC_OFFSET( 2817, glEvalMesh1, glEvalMesh1, NULL, _gloffset_EvalMesh1),
-    NAME_FUNC_OFFSET( 2829, glEvalPoint1, glEvalPoint1, NULL, _gloffset_EvalPoint1),
-    NAME_FUNC_OFFSET( 2842, glEvalMesh2, glEvalMesh2, NULL, _gloffset_EvalMesh2),
-    NAME_FUNC_OFFSET( 2854, glEvalPoint2, glEvalPoint2, NULL, _gloffset_EvalPoint2),
-    NAME_FUNC_OFFSET( 2867, glAlphaFunc, glAlphaFunc, NULL, _gloffset_AlphaFunc),
-    NAME_FUNC_OFFSET( 2879, glBlendFunc, glBlendFunc, NULL, _gloffset_BlendFunc),
-    NAME_FUNC_OFFSET( 2891, glLogicOp, glLogicOp, NULL, _gloffset_LogicOp),
-    NAME_FUNC_OFFSET( 2901, glStencilFunc, glStencilFunc, NULL, _gloffset_StencilFunc),
-    NAME_FUNC_OFFSET( 2915, glStencilOp, glStencilOp, NULL, _gloffset_StencilOp),
-    NAME_FUNC_OFFSET( 2927, glDepthFunc, glDepthFunc, NULL, _gloffset_DepthFunc),
-    NAME_FUNC_OFFSET( 2939, glPixelZoom, glPixelZoom, NULL, _gloffset_PixelZoom),
-    NAME_FUNC_OFFSET( 2951, glPixelTransferf, glPixelTransferf, NULL, _gloffset_PixelTransferf),
-    NAME_FUNC_OFFSET( 2968, glPixelTransferi, glPixelTransferi, NULL, _gloffset_PixelTransferi),
-    NAME_FUNC_OFFSET( 2985, glPixelStoref, glPixelStoref, NULL, _gloffset_PixelStoref),
-    NAME_FUNC_OFFSET( 2999, glPixelStorei, glPixelStorei, NULL, _gloffset_PixelStorei),
-    NAME_FUNC_OFFSET( 3013, glPixelMapfv, glPixelMapfv, NULL, _gloffset_PixelMapfv),
-    NAME_FUNC_OFFSET( 3026, glPixelMapuiv, glPixelMapuiv, NULL, _gloffset_PixelMapuiv),
-    NAME_FUNC_OFFSET( 3040, glPixelMapusv, glPixelMapusv, NULL, _gloffset_PixelMapusv),
-    NAME_FUNC_OFFSET( 3054, glReadBuffer, glReadBuffer, NULL, _gloffset_ReadBuffer),
-    NAME_FUNC_OFFSET( 3067, glCopyPixels, glCopyPixels, NULL, _gloffset_CopyPixels),
-    NAME_FUNC_OFFSET( 3080, glReadPixels, glReadPixels, NULL, _gloffset_ReadPixels),
-    NAME_FUNC_OFFSET( 3093, glDrawPixels, glDrawPixels, NULL, _gloffset_DrawPixels),
-    NAME_FUNC_OFFSET( 3106, glGetBooleanv, glGetBooleanv, NULL, _gloffset_GetBooleanv),
-    NAME_FUNC_OFFSET( 3120, glGetClipPlane, glGetClipPlane, NULL, _gloffset_GetClipPlane),
-    NAME_FUNC_OFFSET( 3135, glGetDoublev, glGetDoublev, NULL, _gloffset_GetDoublev),
-    NAME_FUNC_OFFSET( 3148, glGetError, glGetError, NULL, _gloffset_GetError),
-    NAME_FUNC_OFFSET( 3159, glGetFloatv, glGetFloatv, NULL, _gloffset_GetFloatv),
-    NAME_FUNC_OFFSET( 3171, glGetIntegerv, glGetIntegerv, NULL, _gloffset_GetIntegerv),
-    NAME_FUNC_OFFSET( 3185, glGetLightfv, glGetLightfv, NULL, _gloffset_GetLightfv),
-    NAME_FUNC_OFFSET( 3198, glGetLightiv, glGetLightiv, NULL, _gloffset_GetLightiv),
-    NAME_FUNC_OFFSET( 3211, glGetMapdv, glGetMapdv, NULL, _gloffset_GetMapdv),
-    NAME_FUNC_OFFSET( 3222, glGetMapfv, glGetMapfv, NULL, _gloffset_GetMapfv),
-    NAME_FUNC_OFFSET( 3233, glGetMapiv, glGetMapiv, NULL, _gloffset_GetMapiv),
-    NAME_FUNC_OFFSET( 3244, glGetMaterialfv, glGetMaterialfv, NULL, _gloffset_GetMaterialfv),
-    NAME_FUNC_OFFSET( 3260, glGetMaterialiv, glGetMaterialiv, NULL, _gloffset_GetMaterialiv),
-    NAME_FUNC_OFFSET( 3276, glGetPixelMapfv, glGetPixelMapfv, NULL, _gloffset_GetPixelMapfv),
-    NAME_FUNC_OFFSET( 3292, glGetPixelMapuiv, glGetPixelMapuiv, NULL, _gloffset_GetPixelMapuiv),
-    NAME_FUNC_OFFSET( 3309, glGetPixelMapusv, glGetPixelMapusv, NULL, _gloffset_GetPixelMapusv),
-    NAME_FUNC_OFFSET( 3326, glGetPolygonStipple, glGetPolygonStipple, NULL, _gloffset_GetPolygonStipple),
-    NAME_FUNC_OFFSET( 3346, glGetString, glGetString, NULL, _gloffset_GetString),
-    NAME_FUNC_OFFSET( 3358, glGetTexEnvfv, glGetTexEnvfv, NULL, _gloffset_GetTexEnvfv),
-    NAME_FUNC_OFFSET( 3372, glGetTexEnviv, glGetTexEnviv, NULL, _gloffset_GetTexEnviv),
-    NAME_FUNC_OFFSET( 3386, glGetTexGendv, glGetTexGendv, NULL, _gloffset_GetTexGendv),
-    NAME_FUNC_OFFSET( 3400, glGetTexGenfv, glGetTexGenfv, NULL, _gloffset_GetTexGenfv),
-    NAME_FUNC_OFFSET( 3414, glGetTexGeniv, glGetTexGeniv, NULL, _gloffset_GetTexGeniv),
-    NAME_FUNC_OFFSET( 3428, glGetTexImage, glGetTexImage, NULL, _gloffset_GetTexImage),
-    NAME_FUNC_OFFSET( 3442, glGetTexParameterfv, glGetTexParameterfv, NULL, _gloffset_GetTexParameterfv),
-    NAME_FUNC_OFFSET( 3462, glGetTexParameteriv, glGetTexParameteriv, NULL, _gloffset_GetTexParameteriv),
-    NAME_FUNC_OFFSET( 3482, glGetTexLevelParameterfv, glGetTexLevelParameterfv, NULL, _gloffset_GetTexLevelParameterfv),
-    NAME_FUNC_OFFSET( 3507, glGetTexLevelParameteriv, glGetTexLevelParameteriv, NULL, _gloffset_GetTexLevelParameteriv),
-    NAME_FUNC_OFFSET( 3532, glIsEnabled, glIsEnabled, NULL, _gloffset_IsEnabled),
-    NAME_FUNC_OFFSET( 3544, glIsList, glIsList, NULL, _gloffset_IsList),
-    NAME_FUNC_OFFSET( 3553, glDepthRange, glDepthRange, NULL, _gloffset_DepthRange),
-    NAME_FUNC_OFFSET( 3566, glFrustum, glFrustum, NULL, _gloffset_Frustum),
-    NAME_FUNC_OFFSET( 3576, glLoadIdentity, glLoadIdentity, NULL, _gloffset_LoadIdentity),
-    NAME_FUNC_OFFSET( 3591, glLoadMatrixf, glLoadMatrixf, NULL, _gloffset_LoadMatrixf),
-    NAME_FUNC_OFFSET( 3605, glLoadMatrixd, glLoadMatrixd, NULL, _gloffset_LoadMatrixd),
-    NAME_FUNC_OFFSET( 3619, glMatrixMode, glMatrixMode, NULL, _gloffset_MatrixMode),
-    NAME_FUNC_OFFSET( 3632, glMultMatrixf, glMultMatrixf, NULL, _gloffset_MultMatrixf),
-    NAME_FUNC_OFFSET( 3646, glMultMatrixd, glMultMatrixd, NULL, _gloffset_MultMatrixd),
-    NAME_FUNC_OFFSET( 3660, glOrtho, glOrtho, NULL, _gloffset_Ortho),
-    NAME_FUNC_OFFSET( 3668, glPopMatrix, glPopMatrix, NULL, _gloffset_PopMatrix),
-    NAME_FUNC_OFFSET( 3680, glPushMatrix, glPushMatrix, NULL, _gloffset_PushMatrix),
-    NAME_FUNC_OFFSET( 3693, glRotated, glRotated, NULL, _gloffset_Rotated),
-    NAME_FUNC_OFFSET( 3703, glRotatef, glRotatef, NULL, _gloffset_Rotatef),
-    NAME_FUNC_OFFSET( 3713, glScaled, glScaled, NULL, _gloffset_Scaled),
-    NAME_FUNC_OFFSET( 3722, glScalef, glScalef, NULL, _gloffset_Scalef),
-    NAME_FUNC_OFFSET( 3731, glTranslated, glTranslated, NULL, _gloffset_Translated),
-    NAME_FUNC_OFFSET( 3744, glTranslatef, glTranslatef, NULL, _gloffset_Translatef),
-    NAME_FUNC_OFFSET( 3757, glViewport, glViewport, NULL, _gloffset_Viewport),
-    NAME_FUNC_OFFSET( 3768, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement),
-    NAME_FUNC_OFFSET( 3783, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture),
-    NAME_FUNC_OFFSET( 3797, glColorPointer, glColorPointer, NULL, _gloffset_ColorPointer),
-    NAME_FUNC_OFFSET( 3812, glDisableClientState, glDisableClientState, NULL, _gloffset_DisableClientState),
-    NAME_FUNC_OFFSET( 3833, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays),
-    NAME_FUNC_OFFSET( 3846, glDrawElements, glDrawElements, NULL, _gloffset_DrawElements),
-    NAME_FUNC_OFFSET( 3861, glEdgeFlagPointer, glEdgeFlagPointer, NULL, _gloffset_EdgeFlagPointer),
-    NAME_FUNC_OFFSET( 3879, glEnableClientState, glEnableClientState, NULL, _gloffset_EnableClientState),
-    NAME_FUNC_OFFSET( 3899, glIndexPointer, glIndexPointer, NULL, _gloffset_IndexPointer),
-    NAME_FUNC_OFFSET( 3914, glIndexub, glIndexub, NULL, _gloffset_Indexub),
-    NAME_FUNC_OFFSET( 3924, glIndexubv, glIndexubv, NULL, _gloffset_Indexubv),
-    NAME_FUNC_OFFSET( 3935, glInterleavedArrays, glInterleavedArrays, NULL, _gloffset_InterleavedArrays),
-    NAME_FUNC_OFFSET( 3955, glNormalPointer, glNormalPointer, NULL, _gloffset_NormalPointer),
-    NAME_FUNC_OFFSET( 3971, glPolygonOffset, glPolygonOffset, NULL, _gloffset_PolygonOffset),
-    NAME_FUNC_OFFSET( 3987, glTexCoordPointer, glTexCoordPointer, NULL, _gloffset_TexCoordPointer),
-    NAME_FUNC_OFFSET( 4005, glVertexPointer, glVertexPointer, NULL, _gloffset_VertexPointer),
-    NAME_FUNC_OFFSET( 4021, glAreTexturesResident, glAreTexturesResident, NULL, _gloffset_AreTexturesResident),
-    NAME_FUNC_OFFSET( 4043, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D),
-    NAME_FUNC_OFFSET( 4060, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D),
-    NAME_FUNC_OFFSET( 4077, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D),
-    NAME_FUNC_OFFSET( 4097, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D),
-    NAME_FUNC_OFFSET( 4117, glDeleteTextures, glDeleteTextures, NULL, _gloffset_DeleteTextures),
-    NAME_FUNC_OFFSET( 4134, glGenTextures, glGenTextures, NULL, _gloffset_GenTextures),
-    NAME_FUNC_OFFSET( 4148, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv),
-    NAME_FUNC_OFFSET( 4162, glIsTexture, glIsTexture, NULL, _gloffset_IsTexture),
-    NAME_FUNC_OFFSET( 4174, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures),
-    NAME_FUNC_OFFSET( 4195, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D),
-    NAME_FUNC_OFFSET( 4211, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D),
-    NAME_FUNC_OFFSET( 4227, glPopClientAttrib, glPopClientAttrib, NULL, _gloffset_PopClientAttrib),
-    NAME_FUNC_OFFSET( 4245, glPushClientAttrib, glPushClientAttrib, NULL, _gloffset_PushClientAttrib),
-    NAME_FUNC_OFFSET( 4264, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor),
-    NAME_FUNC_OFFSET( 4277, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation),
-    NAME_FUNC_OFFSET( 4293, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements),
-    NAME_FUNC_OFFSET( 4313, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
-    NAME_FUNC_OFFSET( 4326, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv),
-    NAME_FUNC_OFFSET( 4350, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv),
-    NAME_FUNC_OFFSET( 4374, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable),
-    NAME_FUNC_OFFSET( 4391, glGetColorTable, glGetColorTable, NULL, _gloffset_GetColorTable),
-    NAME_FUNC_OFFSET( 4407, glGetColorTableParameterfv, glGetColorTableParameterfv, NULL, _gloffset_GetColorTableParameterfv),
-    NAME_FUNC_OFFSET( 4434, glGetColorTableParameteriv, glGetColorTableParameteriv, NULL, _gloffset_GetColorTableParameteriv),
-    NAME_FUNC_OFFSET( 4461, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable),
-    NAME_FUNC_OFFSET( 4477, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable),
-    NAME_FUNC_OFFSET( 4497, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D),
-    NAME_FUNC_OFFSET( 4519, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D),
-    NAME_FUNC_OFFSET( 4541, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf),
-    NAME_FUNC_OFFSET( 4565, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv),
-    NAME_FUNC_OFFSET( 4590, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri),
-    NAME_FUNC_OFFSET( 4614, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv),
-    NAME_FUNC_OFFSET( 4639, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D),
-    NAME_FUNC_OFFSET( 4665, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D),
-    NAME_FUNC_OFFSET( 4691, glGetConvolutionFilter, glGetConvolutionFilter, NULL, _gloffset_GetConvolutionFilter),
-    NAME_FUNC_OFFSET( 4714, glGetConvolutionParameterfv, glGetConvolutionParameterfv, NULL, _gloffset_GetConvolutionParameterfv),
-    NAME_FUNC_OFFSET( 4742, glGetConvolutionParameteriv, glGetConvolutionParameteriv, NULL, _gloffset_GetConvolutionParameteriv),
-    NAME_FUNC_OFFSET( 4770, glGetSeparableFilter, glGetSeparableFilter, NULL, _gloffset_GetSeparableFilter),
-    NAME_FUNC_OFFSET( 4791, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D),
-    NAME_FUNC_OFFSET( 4811, glGetHistogram, glGetHistogram, NULL, _gloffset_GetHistogram),
-    NAME_FUNC_OFFSET( 4826, glGetHistogramParameterfv, glGetHistogramParameterfv, NULL, _gloffset_GetHistogramParameterfv),
-    NAME_FUNC_OFFSET( 4852, glGetHistogramParameteriv, glGetHistogramParameteriv, NULL, _gloffset_GetHistogramParameteriv),
-    NAME_FUNC_OFFSET( 4878, glGetMinmax, glGetMinmax, NULL, _gloffset_GetMinmax),
-    NAME_FUNC_OFFSET( 4890, glGetMinmaxParameterfv, glGetMinmaxParameterfv, NULL, _gloffset_GetMinmaxParameterfv),
-    NAME_FUNC_OFFSET( 4913, glGetMinmaxParameteriv, glGetMinmaxParameteriv, NULL, _gloffset_GetMinmaxParameteriv),
-    NAME_FUNC_OFFSET( 4936, glHistogram, glHistogram, NULL, _gloffset_Histogram),
-    NAME_FUNC_OFFSET( 4948, glMinmax, glMinmax, NULL, _gloffset_Minmax),
-    NAME_FUNC_OFFSET( 4957, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram),
-    NAME_FUNC_OFFSET( 4974, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax),
-    NAME_FUNC_OFFSET( 4988, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D),
-    NAME_FUNC_OFFSET( 5001, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D),
-    NAME_FUNC_OFFSET( 5017, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D),
-    NAME_FUNC_OFFSET( 5037, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB),
-    NAME_FUNC_OFFSET( 5056, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB),
-    NAME_FUNC_OFFSET( 5081, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB),
-    NAME_FUNC_OFFSET( 5102, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB),
-    NAME_FUNC_OFFSET( 5124, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB),
-    NAME_FUNC_OFFSET( 5145, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB),
-    NAME_FUNC_OFFSET( 5167, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB),
-    NAME_FUNC_OFFSET( 5188, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB),
-    NAME_FUNC_OFFSET( 5210, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB),
-    NAME_FUNC_OFFSET( 5231, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB),
-    NAME_FUNC_OFFSET( 5253, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB),
-    NAME_FUNC_OFFSET( 5274, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB),
-    NAME_FUNC_OFFSET( 5296, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB),
-    NAME_FUNC_OFFSET( 5317, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB),
-    NAME_FUNC_OFFSET( 5339, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB),
-    NAME_FUNC_OFFSET( 5360, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB),
-    NAME_FUNC_OFFSET( 5382, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB),
-    NAME_FUNC_OFFSET( 5403, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB),
-    NAME_FUNC_OFFSET( 5425, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB),
-    NAME_FUNC_OFFSET( 5446, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB),
-    NAME_FUNC_OFFSET( 5468, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB),
-    NAME_FUNC_OFFSET( 5489, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB),
-    NAME_FUNC_OFFSET( 5511, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB),
-    NAME_FUNC_OFFSET( 5532, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB),
-    NAME_FUNC_OFFSET( 5554, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB),
-    NAME_FUNC_OFFSET( 5575, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB),
-    NAME_FUNC_OFFSET( 5597, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB),
-    NAME_FUNC_OFFSET( 5618, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB),
-    NAME_FUNC_OFFSET( 5640, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB),
-    NAME_FUNC_OFFSET( 5661, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB),
-    NAME_FUNC_OFFSET( 5683, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB),
-    NAME_FUNC_OFFSET( 5704, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB),
-    NAME_FUNC_OFFSET( 5726, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB),
-    NAME_FUNC_OFFSET( 5747, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB),
-    NAME_FUNC_OFFSET( 5769, glAttachShader, glAttachShader, NULL, _gloffset_AttachShader),
-    NAME_FUNC_OFFSET( 5784, glCreateProgram, glCreateProgram, NULL, _gloffset_CreateProgram),
-    NAME_FUNC_OFFSET( 5800, glCreateShader, glCreateShader, NULL, _gloffset_CreateShader),
-    NAME_FUNC_OFFSET( 5815, glDeleteProgram, glDeleteProgram, NULL, _gloffset_DeleteProgram),
-    NAME_FUNC_OFFSET( 5831, glDeleteShader, glDeleteShader, NULL, _gloffset_DeleteShader),
-    NAME_FUNC_OFFSET( 5846, glDetachShader, glDetachShader, NULL, _gloffset_DetachShader),
-    NAME_FUNC_OFFSET( 5861, glGetAttachedShaders, glGetAttachedShaders, NULL, _gloffset_GetAttachedShaders),
-    NAME_FUNC_OFFSET( 5882, glGetProgramInfoLog, glGetProgramInfoLog, NULL, _gloffset_GetProgramInfoLog),
-    NAME_FUNC_OFFSET( 5902, glGetProgramiv, glGetProgramiv, NULL, _gloffset_GetProgramiv),
-    NAME_FUNC_OFFSET( 5917, glGetShaderInfoLog, glGetShaderInfoLog, NULL, _gloffset_GetShaderInfoLog),
-    NAME_FUNC_OFFSET( 5936, glGetShaderiv, glGetShaderiv, NULL, _gloffset_GetShaderiv),
-    NAME_FUNC_OFFSET( 5950, glIsProgram, glIsProgram, NULL, _gloffset_IsProgram),
-    NAME_FUNC_OFFSET( 5962, glIsShader, glIsShader, NULL, _gloffset_IsShader),
-    NAME_FUNC_OFFSET( 5973, glStencilFuncSeparate, glStencilFuncSeparate, NULL, _gloffset_StencilFuncSeparate),
-    NAME_FUNC_OFFSET( 5995, glStencilMaskSeparate, glStencilMaskSeparate, NULL, _gloffset_StencilMaskSeparate),
-    NAME_FUNC_OFFSET( 6017, glStencilOpSeparate, glStencilOpSeparate, NULL, _gloffset_StencilOpSeparate),
-    NAME_FUNC_OFFSET( 6037, glUniformMatrix2x3fv, glUniformMatrix2x3fv, NULL, _gloffset_UniformMatrix2x3fv),
-    NAME_FUNC_OFFSET( 6058, glUniformMatrix2x4fv, glUniformMatrix2x4fv, NULL, _gloffset_UniformMatrix2x4fv),
-    NAME_FUNC_OFFSET( 6079, glUniformMatrix3x2fv, glUniformMatrix3x2fv, NULL, _gloffset_UniformMatrix3x2fv),
-    NAME_FUNC_OFFSET( 6100, glUniformMatrix3x4fv, glUniformMatrix3x4fv, NULL, _gloffset_UniformMatrix3x4fv),
-    NAME_FUNC_OFFSET( 6121, glUniformMatrix4x2fv, glUniformMatrix4x2fv, NULL, _gloffset_UniformMatrix4x2fv),
-    NAME_FUNC_OFFSET( 6142, glUniformMatrix4x3fv, glUniformMatrix4x3fv, NULL, _gloffset_UniformMatrix4x3fv),
-    NAME_FUNC_OFFSET( 6163, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
-    NAME_FUNC_OFFSET( 6185, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
-    NAME_FUNC_OFFSET( 6209, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB),
-    NAME_FUNC_OFFSET( 6235, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB),
-    NAME_FUNC_OFFSET( 6261, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB),
-    NAME_FUNC_OFFSET( 6287, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB),
-    NAME_FUNC_OFFSET( 6313, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB),
-    NAME_FUNC_OFFSET( 6333, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB),
-    NAME_FUNC_OFFSET( 6359, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB),
-    NAME_FUNC_OFFSET( 6385, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB),
-    NAME_FUNC_OFFSET( 6411, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB),
-    NAME_FUNC_OFFSET( 6440, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB),
-    NAME_FUNC_OFFSET( 6469, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB),
-    NAME_FUNC_OFFSET( 6498, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB),
-    NAME_FUNC_OFFSET( 6525, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB),
-    NAME_FUNC_OFFSET( 6555, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB),
-    NAME_FUNC_OFFSET( 6584, glGetProgramEnvParameterdvARB, glGetProgramEnvParameterdvARB, NULL, _gloffset_GetProgramEnvParameterdvARB),
-    NAME_FUNC_OFFSET( 6614, glGetProgramEnvParameterfvARB, glGetProgramEnvParameterfvARB, NULL, _gloffset_GetProgramEnvParameterfvARB),
-    NAME_FUNC_OFFSET( 6644, glGetProgramLocalParameterdvARB, glGetProgramLocalParameterdvARB, NULL, _gloffset_GetProgramLocalParameterdvARB),
-    NAME_FUNC_OFFSET( 6676, glGetProgramLocalParameterfvARB, glGetProgramLocalParameterfvARB, NULL, _gloffset_GetProgramLocalParameterfvARB),
-    NAME_FUNC_OFFSET( 6708, glGetProgramStringARB, glGetProgramStringARB, NULL, _gloffset_GetProgramStringARB),
-    NAME_FUNC_OFFSET( 6730, glGetProgramivARB, glGetProgramivARB, NULL, _gloffset_GetProgramivARB),
-    NAME_FUNC_OFFSET( 6748, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB),
-    NAME_FUNC_OFFSET( 6771, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB),
-    NAME_FUNC_OFFSET( 6794, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB),
-    NAME_FUNC_OFFSET( 6817, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, _gloffset_ProgramEnvParameter4dARB),
-    NAME_FUNC_OFFSET( 6844, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, _gloffset_ProgramEnvParameter4dvARB),
-    NAME_FUNC_OFFSET( 6872, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, _gloffset_ProgramEnvParameter4fARB),
-    NAME_FUNC_OFFSET( 6899, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, _gloffset_ProgramEnvParameter4fvARB),
-    NAME_FUNC_OFFSET( 6927, glProgramLocalParameter4dARB, glProgramLocalParameter4dARB, NULL, _gloffset_ProgramLocalParameter4dARB),
-    NAME_FUNC_OFFSET( 6956, glProgramLocalParameter4dvARB, glProgramLocalParameter4dvARB, NULL, _gloffset_ProgramLocalParameter4dvARB),
-    NAME_FUNC_OFFSET( 6986, glProgramLocalParameter4fARB, glProgramLocalParameter4fARB, NULL, _gloffset_ProgramLocalParameter4fARB),
-    NAME_FUNC_OFFSET( 7015, glProgramLocalParameter4fvARB, glProgramLocalParameter4fvARB, NULL, _gloffset_ProgramLocalParameter4fvARB),
-    NAME_FUNC_OFFSET( 7045, glProgramStringARB, glProgramStringARB, NULL, _gloffset_ProgramStringARB),
-    NAME_FUNC_OFFSET( 7064, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB),
-    NAME_FUNC_OFFSET( 7084, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB),
-    NAME_FUNC_OFFSET( 7105, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB),
-    NAME_FUNC_OFFSET( 7125, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB),
-    NAME_FUNC_OFFSET( 7146, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB),
-    NAME_FUNC_OFFSET( 7166, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB),
-    NAME_FUNC_OFFSET( 7187, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB),
-    NAME_FUNC_OFFSET( 7207, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB),
-    NAME_FUNC_OFFSET( 7228, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB),
-    NAME_FUNC_OFFSET( 7248, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB),
-    NAME_FUNC_OFFSET( 7269, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB),
-    NAME_FUNC_OFFSET( 7289, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB),
-    NAME_FUNC_OFFSET( 7310, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB),
-    NAME_FUNC_OFFSET( 7330, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB),
-    NAME_FUNC_OFFSET( 7351, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB),
-    NAME_FUNC_OFFSET( 7371, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB),
-    NAME_FUNC_OFFSET( 7392, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB),
-    NAME_FUNC_OFFSET( 7412, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB),
-    NAME_FUNC_OFFSET( 7433, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB),
-    NAME_FUNC_OFFSET( 7455, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB),
-    NAME_FUNC_OFFSET( 7477, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB),
-    NAME_FUNC_OFFSET( 7499, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB),
-    NAME_FUNC_OFFSET( 7521, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB),
-    NAME_FUNC_OFFSET( 7544, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB),
-    NAME_FUNC_OFFSET( 7567, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB),
-    NAME_FUNC_OFFSET( 7590, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, _gloffset_VertexAttrib4bvARB),
-    NAME_FUNC_OFFSET( 7611, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB),
-    NAME_FUNC_OFFSET( 7631, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB),
-    NAME_FUNC_OFFSET( 7652, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB),
-    NAME_FUNC_OFFSET( 7672, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB),
-    NAME_FUNC_OFFSET( 7693, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, _gloffset_VertexAttrib4ivARB),
-    NAME_FUNC_OFFSET( 7714, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB),
-    NAME_FUNC_OFFSET( 7734, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB),
-    NAME_FUNC_OFFSET( 7755, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, _gloffset_VertexAttrib4ubvARB),
-    NAME_FUNC_OFFSET( 7777, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, _gloffset_VertexAttrib4uivARB),
-    NAME_FUNC_OFFSET( 7799, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, _gloffset_VertexAttrib4usvARB),
-    NAME_FUNC_OFFSET( 7821, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB),
-    NAME_FUNC_OFFSET( 7846, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB),
-    NAME_FUNC_OFFSET( 7862, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB),
-    NAME_FUNC_OFFSET( 7878, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB),
-    NAME_FUNC_OFFSET( 7897, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB),
-    NAME_FUNC_OFFSET( 7916, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB),
-    NAME_FUNC_OFFSET( 7932, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB),
-    NAME_FUNC_OFFSET( 7958, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB),
-    NAME_FUNC_OFFSET( 7981, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB),
-    NAME_FUNC_OFFSET( 8003, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB),
-    NAME_FUNC_OFFSET( 8017, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB),
-    NAME_FUNC_OFFSET( 8032, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB),
-    NAME_FUNC_OFFSET( 8049, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB),
-    NAME_FUNC_OFFSET( 8065, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB),
-    NAME_FUNC_OFFSET( 8084, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB),
-    NAME_FUNC_OFFSET( 8098, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB),
-    NAME_FUNC_OFFSET( 8114, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB),
-    NAME_FUNC_OFFSET( 8136, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB),
-    NAME_FUNC_OFFSET( 8159, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB),
-    NAME_FUNC_OFFSET( 8175, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB),
-    NAME_FUNC_OFFSET( 8188, glAttachObjectARB, glAttachObjectARB, NULL, _gloffset_AttachObjectARB),
-    NAME_FUNC_OFFSET( 8206, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB),
-    NAME_FUNC_OFFSET( 8225, glCreateProgramObjectARB, glCreateProgramObjectARB, NULL, _gloffset_CreateProgramObjectARB),
-    NAME_FUNC_OFFSET( 8250, glCreateShaderObjectARB, glCreateShaderObjectARB, NULL, _gloffset_CreateShaderObjectARB),
-    NAME_FUNC_OFFSET( 8274, glDeleteObjectARB, glDeleteObjectARB, NULL, _gloffset_DeleteObjectARB),
-    NAME_FUNC_OFFSET( 8292, glDetachObjectARB, glDetachObjectARB, NULL, _gloffset_DetachObjectARB),
-    NAME_FUNC_OFFSET( 8310, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB),
-    NAME_FUNC_OFFSET( 8332, glGetAttachedObjectsARB, glGetAttachedObjectsARB, NULL, _gloffset_GetAttachedObjectsARB),
-    NAME_FUNC_OFFSET( 8356, glGetHandleARB, glGetHandleARB, NULL, _gloffset_GetHandleARB),
-    NAME_FUNC_OFFSET( 8371, glGetInfoLogARB, glGetInfoLogARB, NULL, _gloffset_GetInfoLogARB),
-    NAME_FUNC_OFFSET( 8387, glGetObjectParameterfvARB, glGetObjectParameterfvARB, NULL, _gloffset_GetObjectParameterfvARB),
-    NAME_FUNC_OFFSET( 8413, glGetObjectParameterivARB, glGetObjectParameterivARB, NULL, _gloffset_GetObjectParameterivARB),
-    NAME_FUNC_OFFSET( 8439, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB),
-    NAME_FUNC_OFFSET( 8460, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB),
-    NAME_FUNC_OFFSET( 8484, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB),
-    NAME_FUNC_OFFSET( 8502, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB),
-    NAME_FUNC_OFFSET( 8520, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB),
-    NAME_FUNC_OFFSET( 8537, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB),
-    NAME_FUNC_OFFSET( 8555, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB),
-    NAME_FUNC_OFFSET( 8570, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB),
-    NAME_FUNC_OFFSET( 8586, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB),
-    NAME_FUNC_OFFSET( 8601, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB),
-    NAME_FUNC_OFFSET( 8617, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB),
-    NAME_FUNC_OFFSET( 8632, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB),
-    NAME_FUNC_OFFSET( 8648, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB),
-    NAME_FUNC_OFFSET( 8663, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB),
-    NAME_FUNC_OFFSET( 8679, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB),
-    NAME_FUNC_OFFSET( 8694, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB),
-    NAME_FUNC_OFFSET( 8710, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB),
-    NAME_FUNC_OFFSET( 8725, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB),
-    NAME_FUNC_OFFSET( 8741, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB),
-    NAME_FUNC_OFFSET( 8756, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB),
-    NAME_FUNC_OFFSET( 8772, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB),
-    NAME_FUNC_OFFSET( 8787, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB),
-    NAME_FUNC_OFFSET( 8803, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB),
-    NAME_FUNC_OFFSET( 8825, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB),
-    NAME_FUNC_OFFSET( 8847, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB),
-    NAME_FUNC_OFFSET( 8869, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB),
-    NAME_FUNC_OFFSET( 8891, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB),
-    NAME_FUNC_OFFSET( 8912, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB),
-    NAME_FUNC_OFFSET( 8936, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB),
-    NAME_FUNC_OFFSET( 8957, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB),
-    NAME_FUNC_OFFSET( 8980, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
-    NAME_FUNC_OFFSET( 8997, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, _gloffset_RenderbufferStorageMultisample),
-    NAME_FUNC_OFFSET( 9030, glFlushMappedBufferRange, glFlushMappedBufferRange, NULL, _gloffset_FlushMappedBufferRange),
-    NAME_FUNC_OFFSET( 9055, glMapBufferRange, glMapBufferRange, NULL, _gloffset_MapBufferRange),
-    NAME_FUNC_OFFSET( 9072, glBindVertexArray, glBindVertexArray, NULL, _gloffset_BindVertexArray),
-    NAME_FUNC_OFFSET( 9090, glGenVertexArrays, glGenVertexArrays, NULL, _gloffset_GenVertexArrays),
-    NAME_FUNC_OFFSET( 9108, glCopyBufferSubData, glCopyBufferSubData, NULL, _gloffset_CopyBufferSubData),
-    NAME_FUNC_OFFSET( 9128, glClientWaitSync, glClientWaitSync, NULL, _gloffset_ClientWaitSync),
-    NAME_FUNC_OFFSET( 9145, glDeleteSync, glDeleteSync, NULL, _gloffset_DeleteSync),
-    NAME_FUNC_OFFSET( 9158, glFenceSync, glFenceSync, NULL, _gloffset_FenceSync),
-    NAME_FUNC_OFFSET( 9170, glGetInteger64v, glGetInteger64v, NULL, _gloffset_GetInteger64v),
-    NAME_FUNC_OFFSET( 9186, glGetSynciv, glGetSynciv, NULL, _gloffset_GetSynciv),
-    NAME_FUNC_OFFSET( 9198, glIsSync, glIsSync, NULL, _gloffset_IsSync),
-    NAME_FUNC_OFFSET( 9207, glWaitSync, glWaitSync, NULL, _gloffset_WaitSync),
-    NAME_FUNC_OFFSET( 9218, glDrawElementsBaseVertex, glDrawElementsBaseVertex, NULL, _gloffset_DrawElementsBaseVertex),
-    NAME_FUNC_OFFSET( 9243, glDrawRangeElementsBaseVertex, glDrawRangeElementsBaseVertex, NULL, _gloffset_DrawRangeElementsBaseVertex),
-    NAME_FUNC_OFFSET( 9273, glMultiDrawElementsBaseVertex, glMultiDrawElementsBaseVertex, NULL, _gloffset_MultiDrawElementsBaseVertex),
-    NAME_FUNC_OFFSET( 9303, glPolygonOffsetEXT, glPolygonOffsetEXT, NULL, _gloffset_PolygonOffsetEXT),
-    NAME_FUNC_OFFSET( 9322, gl_dispatch_stub_580, gl_dispatch_stub_580, NULL, _gloffset_GetPixelTexGenParameterfvSGIS),
-    NAME_FUNC_OFFSET( 9354, gl_dispatch_stub_581, gl_dispatch_stub_581, NULL, _gloffset_GetPixelTexGenParameterivSGIS),
-    NAME_FUNC_OFFSET( 9386, gl_dispatch_stub_582, gl_dispatch_stub_582, NULL, _gloffset_PixelTexGenParameterfSGIS),
-    NAME_FUNC_OFFSET( 9414, gl_dispatch_stub_583, gl_dispatch_stub_583, NULL, _gloffset_PixelTexGenParameterfvSGIS),
-    NAME_FUNC_OFFSET( 9443, gl_dispatch_stub_584, gl_dispatch_stub_584, NULL, _gloffset_PixelTexGenParameteriSGIS),
-    NAME_FUNC_OFFSET( 9471, gl_dispatch_stub_585, gl_dispatch_stub_585, NULL, _gloffset_PixelTexGenParameterivSGIS),
-    NAME_FUNC_OFFSET( 9500, gl_dispatch_stub_586, gl_dispatch_stub_586, NULL, _gloffset_SampleMaskSGIS),
-    NAME_FUNC_OFFSET( 9517, gl_dispatch_stub_587, gl_dispatch_stub_587, NULL, _gloffset_SamplePatternSGIS),
-    NAME_FUNC_OFFSET( 9537, glColorPointerEXT, glColorPointerEXT, NULL, _gloffset_ColorPointerEXT),
-    NAME_FUNC_OFFSET( 9555, glEdgeFlagPointerEXT, glEdgeFlagPointerEXT, NULL, _gloffset_EdgeFlagPointerEXT),
-    NAME_FUNC_OFFSET( 9576, glIndexPointerEXT, glIndexPointerEXT, NULL, _gloffset_IndexPointerEXT),
-    NAME_FUNC_OFFSET( 9594, glNormalPointerEXT, glNormalPointerEXT, NULL, _gloffset_NormalPointerEXT),
-    NAME_FUNC_OFFSET( 9613, glTexCoordPointerEXT, glTexCoordPointerEXT, NULL, _gloffset_TexCoordPointerEXT),
-    NAME_FUNC_OFFSET( 9634, glVertexPointerEXT, glVertexPointerEXT, NULL, _gloffset_VertexPointerEXT),
-    NAME_FUNC_OFFSET( 9653, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
-    NAME_FUNC_OFFSET( 9674, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
-    NAME_FUNC_OFFSET( 9696, glLockArraysEXT, glLockArraysEXT, NULL, _gloffset_LockArraysEXT),
-    NAME_FUNC_OFFSET( 9712, glUnlockArraysEXT, glUnlockArraysEXT, NULL, _gloffset_UnlockArraysEXT),
-    NAME_FUNC_OFFSET( 9730, gl_dispatch_stub_598, gl_dispatch_stub_598, NULL, _gloffset_CullParameterdvEXT),
-    NAME_FUNC_OFFSET( 9751, gl_dispatch_stub_599, gl_dispatch_stub_599, NULL, _gloffset_CullParameterfvEXT),
-    NAME_FUNC_OFFSET( 9772, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
-    NAME_FUNC_OFFSET( 9794, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
-    NAME_FUNC_OFFSET( 9817, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
-    NAME_FUNC_OFFSET( 9839, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
-    NAME_FUNC_OFFSET( 9862, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
-    NAME_FUNC_OFFSET( 9884, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
-    NAME_FUNC_OFFSET( 9907, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
-    NAME_FUNC_OFFSET( 9929, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
-    NAME_FUNC_OFFSET( 9952, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
-    NAME_FUNC_OFFSET( 9974, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
-    NAME_FUNC_OFFSET( 9997, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
-    NAME_FUNC_OFFSET(10020, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
-    NAME_FUNC_OFFSET(10044, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
-    NAME_FUNC_OFFSET(10067, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
-    NAME_FUNC_OFFSET(10091, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
-    NAME_FUNC_OFFSET(10114, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
-    NAME_FUNC_OFFSET(10138, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
-    NAME_FUNC_OFFSET(10165, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
-    NAME_FUNC_OFFSET(10186, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
-    NAME_FUNC_OFFSET(10209, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
-    NAME_FUNC_OFFSET(10230, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
-    NAME_FUNC_OFFSET(10245, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
-    NAME_FUNC_OFFSET(10261, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
-    NAME_FUNC_OFFSET(10276, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
-    NAME_FUNC_OFFSET(10292, gl_dispatch_stub_624, gl_dispatch_stub_624, NULL, _gloffset_PixelTexGenSGIX),
-    NAME_FUNC_OFFSET(10310, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
-    NAME_FUNC_OFFSET(10333, glFlushVertexArrayRangeNV, glFlushVertexArrayRangeNV, NULL, _gloffset_FlushVertexArrayRangeNV),
-    NAME_FUNC_OFFSET(10359, glVertexArrayRangeNV, glVertexArrayRangeNV, NULL, _gloffset_VertexArrayRangeNV),
-    NAME_FUNC_OFFSET(10380, glCombinerInputNV, glCombinerInputNV, NULL, _gloffset_CombinerInputNV),
-    NAME_FUNC_OFFSET(10398, glCombinerOutputNV, glCombinerOutputNV, NULL, _gloffset_CombinerOutputNV),
-    NAME_FUNC_OFFSET(10417, glCombinerParameterfNV, glCombinerParameterfNV, NULL, _gloffset_CombinerParameterfNV),
-    NAME_FUNC_OFFSET(10440, glCombinerParameterfvNV, glCombinerParameterfvNV, NULL, _gloffset_CombinerParameterfvNV),
-    NAME_FUNC_OFFSET(10464, glCombinerParameteriNV, glCombinerParameteriNV, NULL, _gloffset_CombinerParameteriNV),
-    NAME_FUNC_OFFSET(10487, glCombinerParameterivNV, glCombinerParameterivNV, NULL, _gloffset_CombinerParameterivNV),
-    NAME_FUNC_OFFSET(10511, glFinalCombinerInputNV, glFinalCombinerInputNV, NULL, _gloffset_FinalCombinerInputNV),
-    NAME_FUNC_OFFSET(10534, glGetCombinerInputParameterfvNV, glGetCombinerInputParameterfvNV, NULL, _gloffset_GetCombinerInputParameterfvNV),
-    NAME_FUNC_OFFSET(10566, glGetCombinerInputParameterivNV, glGetCombinerInputParameterivNV, NULL, _gloffset_GetCombinerInputParameterivNV),
-    NAME_FUNC_OFFSET(10598, glGetCombinerOutputParameterfvNV, glGetCombinerOutputParameterfvNV, NULL, _gloffset_GetCombinerOutputParameterfvNV),
-    NAME_FUNC_OFFSET(10631, glGetCombinerOutputParameterivNV, glGetCombinerOutputParameterivNV, NULL, _gloffset_GetCombinerOutputParameterivNV),
-    NAME_FUNC_OFFSET(10664, glGetFinalCombinerInputParameterfvNV, glGetFinalCombinerInputParameterfvNV, NULL, _gloffset_GetFinalCombinerInputParameterfvNV),
-    NAME_FUNC_OFFSET(10701, glGetFinalCombinerInputParameterivNV, glGetFinalCombinerInputParameterivNV, NULL, _gloffset_GetFinalCombinerInputParameterivNV),
-    NAME_FUNC_OFFSET(10738, glResizeBuffersMESA, glResizeBuffersMESA, NULL, _gloffset_ResizeBuffersMESA),
-    NAME_FUNC_OFFSET(10758, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
-    NAME_FUNC_OFFSET(10776, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
-    NAME_FUNC_OFFSET(10795, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
-    NAME_FUNC_OFFSET(10813, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
-    NAME_FUNC_OFFSET(10832, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
-    NAME_FUNC_OFFSET(10850, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
-    NAME_FUNC_OFFSET(10869, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
-    NAME_FUNC_OFFSET(10887, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
-    NAME_FUNC_OFFSET(10906, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
-    NAME_FUNC_OFFSET(10924, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
-    NAME_FUNC_OFFSET(10943, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
-    NAME_FUNC_OFFSET(10961, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
-    NAME_FUNC_OFFSET(10980, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
-    NAME_FUNC_OFFSET(10998, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
-    NAME_FUNC_OFFSET(11017, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
-    NAME_FUNC_OFFSET(11035, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
-    NAME_FUNC_OFFSET(11054, glWindowPos4dMESA, glWindowPos4dMESA, NULL, _gloffset_WindowPos4dMESA),
-    NAME_FUNC_OFFSET(11072, glWindowPos4dvMESA, glWindowPos4dvMESA, NULL, _gloffset_WindowPos4dvMESA),
-    NAME_FUNC_OFFSET(11091, glWindowPos4fMESA, glWindowPos4fMESA, NULL, _gloffset_WindowPos4fMESA),
-    NAME_FUNC_OFFSET(11109, glWindowPos4fvMESA, glWindowPos4fvMESA, NULL, _gloffset_WindowPos4fvMESA),
-    NAME_FUNC_OFFSET(11128, glWindowPos4iMESA, glWindowPos4iMESA, NULL, _gloffset_WindowPos4iMESA),
-    NAME_FUNC_OFFSET(11146, glWindowPos4ivMESA, glWindowPos4ivMESA, NULL, _gloffset_WindowPos4ivMESA),
-    NAME_FUNC_OFFSET(11165, glWindowPos4sMESA, glWindowPos4sMESA, NULL, _gloffset_WindowPos4sMESA),
-    NAME_FUNC_OFFSET(11183, glWindowPos4svMESA, glWindowPos4svMESA, NULL, _gloffset_WindowPos4svMESA),
-    NAME_FUNC_OFFSET(11202, gl_dispatch_stub_666, gl_dispatch_stub_666, NULL, _gloffset_MultiModeDrawArraysIBM),
-    NAME_FUNC_OFFSET(11227, gl_dispatch_stub_667, gl_dispatch_stub_667, NULL, _gloffset_MultiModeDrawElementsIBM),
-    NAME_FUNC_OFFSET(11254, gl_dispatch_stub_668, gl_dispatch_stub_668, NULL, _gloffset_DeleteFencesNV),
-    NAME_FUNC_OFFSET(11271, gl_dispatch_stub_669, gl_dispatch_stub_669, NULL, _gloffset_FinishFenceNV),
-    NAME_FUNC_OFFSET(11287, gl_dispatch_stub_670, gl_dispatch_stub_670, NULL, _gloffset_GenFencesNV),
-    NAME_FUNC_OFFSET(11301, gl_dispatch_stub_671, gl_dispatch_stub_671, NULL, _gloffset_GetFenceivNV),
-    NAME_FUNC_OFFSET(11316, gl_dispatch_stub_672, gl_dispatch_stub_672, NULL, _gloffset_IsFenceNV),
-    NAME_FUNC_OFFSET(11328, gl_dispatch_stub_673, gl_dispatch_stub_673, NULL, _gloffset_SetFenceNV),
-    NAME_FUNC_OFFSET(11341, gl_dispatch_stub_674, gl_dispatch_stub_674, NULL, _gloffset_TestFenceNV),
-    NAME_FUNC_OFFSET(11355, glAreProgramsResidentNV, glAreProgramsResidentNV, NULL, _gloffset_AreProgramsResidentNV),
-    NAME_FUNC_OFFSET(11379, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
-    NAME_FUNC_OFFSET(11395, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
-    NAME_FUNC_OFFSET(11414, glExecuteProgramNV, glExecuteProgramNV, NULL, _gloffset_ExecuteProgramNV),
-    NAME_FUNC_OFFSET(11433, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
-    NAME_FUNC_OFFSET(11449, glGetProgramParameterdvNV, glGetProgramParameterdvNV, NULL, _gloffset_GetProgramParameterdvNV),
-    NAME_FUNC_OFFSET(11475, glGetProgramParameterfvNV, glGetProgramParameterfvNV, NULL, _gloffset_GetProgramParameterfvNV),
-    NAME_FUNC_OFFSET(11501, glGetProgramStringNV, glGetProgramStringNV, NULL, _gloffset_GetProgramStringNV),
-    NAME_FUNC_OFFSET(11522, glGetProgramivNV, glGetProgramivNV, NULL, _gloffset_GetProgramivNV),
-    NAME_FUNC_OFFSET(11539, glGetTrackMatrixivNV, glGetTrackMatrixivNV, NULL, _gloffset_GetTrackMatrixivNV),
-    NAME_FUNC_OFFSET(11560, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
-    NAME_FUNC_OFFSET(11588, glGetVertexAttribdvNV, glGetVertexAttribdvNV, NULL, _gloffset_GetVertexAttribdvNV),
-    NAME_FUNC_OFFSET(11610, glGetVertexAttribfvNV, glGetVertexAttribfvNV, NULL, _gloffset_GetVertexAttribfvNV),
-    NAME_FUNC_OFFSET(11632, glGetVertexAttribivNV, glGetVertexAttribivNV, NULL, _gloffset_GetVertexAttribivNV),
-    NAME_FUNC_OFFSET(11654, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
-    NAME_FUNC_OFFSET(11668, glLoadProgramNV, glLoadProgramNV, NULL, _gloffset_LoadProgramNV),
-    NAME_FUNC_OFFSET(11684, glProgramParameters4dvNV, glProgramParameters4dvNV, NULL, _gloffset_ProgramParameters4dvNV),
-    NAME_FUNC_OFFSET(11709, glProgramParameters4fvNV, glProgramParameters4fvNV, NULL, _gloffset_ProgramParameters4fvNV),
-    NAME_FUNC_OFFSET(11734, glRequestResidentProgramsNV, glRequestResidentProgramsNV, NULL, _gloffset_RequestResidentProgramsNV),
-    NAME_FUNC_OFFSET(11762, glTrackMatrixNV, glTrackMatrixNV, NULL, _gloffset_TrackMatrixNV),
-    NAME_FUNC_OFFSET(11778, glVertexAttrib1dNV, glVertexAttrib1dNV, NULL, _gloffset_VertexAttrib1dNV),
-    NAME_FUNC_OFFSET(11797, glVertexAttrib1dvNV, glVertexAttrib1dvNV, NULL, _gloffset_VertexAttrib1dvNV),
-    NAME_FUNC_OFFSET(11817, glVertexAttrib1fNV, glVertexAttrib1fNV, NULL, _gloffset_VertexAttrib1fNV),
-    NAME_FUNC_OFFSET(11836, glVertexAttrib1fvNV, glVertexAttrib1fvNV, NULL, _gloffset_VertexAttrib1fvNV),
-    NAME_FUNC_OFFSET(11856, glVertexAttrib1sNV, glVertexAttrib1sNV, NULL, _gloffset_VertexAttrib1sNV),
-    NAME_FUNC_OFFSET(11875, glVertexAttrib1svNV, glVertexAttrib1svNV, NULL, _gloffset_VertexAttrib1svNV),
-    NAME_FUNC_OFFSET(11895, glVertexAttrib2dNV, glVertexAttrib2dNV, NULL, _gloffset_VertexAttrib2dNV),
-    NAME_FUNC_OFFSET(11914, glVertexAttrib2dvNV, glVertexAttrib2dvNV, NULL, _gloffset_VertexAttrib2dvNV),
-    NAME_FUNC_OFFSET(11934, glVertexAttrib2fNV, glVertexAttrib2fNV, NULL, _gloffset_VertexAttrib2fNV),
-    NAME_FUNC_OFFSET(11953, glVertexAttrib2fvNV, glVertexAttrib2fvNV, NULL, _gloffset_VertexAttrib2fvNV),
-    NAME_FUNC_OFFSET(11973, glVertexAttrib2sNV, glVertexAttrib2sNV, NULL, _gloffset_VertexAttrib2sNV),
-    NAME_FUNC_OFFSET(11992, glVertexAttrib2svNV, glVertexAttrib2svNV, NULL, _gloffset_VertexAttrib2svNV),
-    NAME_FUNC_OFFSET(12012, glVertexAttrib3dNV, glVertexAttrib3dNV, NULL, _gloffset_VertexAttrib3dNV),
-    NAME_FUNC_OFFSET(12031, glVertexAttrib3dvNV, glVertexAttrib3dvNV, NULL, _gloffset_VertexAttrib3dvNV),
-    NAME_FUNC_OFFSET(12051, glVertexAttrib3fNV, glVertexAttrib3fNV, NULL, _gloffset_VertexAttrib3fNV),
-    NAME_FUNC_OFFSET(12070, glVertexAttrib3fvNV, glVertexAttrib3fvNV, NULL, _gloffset_VertexAttrib3fvNV),
-    NAME_FUNC_OFFSET(12090, glVertexAttrib3sNV, glVertexAttrib3sNV, NULL, _gloffset_VertexAttrib3sNV),
-    NAME_FUNC_OFFSET(12109, glVertexAttrib3svNV, glVertexAttrib3svNV, NULL, _gloffset_VertexAttrib3svNV),
-    NAME_FUNC_OFFSET(12129, glVertexAttrib4dNV, glVertexAttrib4dNV, NULL, _gloffset_VertexAttrib4dNV),
-    NAME_FUNC_OFFSET(12148, glVertexAttrib4dvNV, glVertexAttrib4dvNV, NULL, _gloffset_VertexAttrib4dvNV),
-    NAME_FUNC_OFFSET(12168, glVertexAttrib4fNV, glVertexAttrib4fNV, NULL, _gloffset_VertexAttrib4fNV),
-    NAME_FUNC_OFFSET(12187, glVertexAttrib4fvNV, glVertexAttrib4fvNV, NULL, _gloffset_VertexAttrib4fvNV),
-    NAME_FUNC_OFFSET(12207, glVertexAttrib4sNV, glVertexAttrib4sNV, NULL, _gloffset_VertexAttrib4sNV),
-    NAME_FUNC_OFFSET(12226, glVertexAttrib4svNV, glVertexAttrib4svNV, NULL, _gloffset_VertexAttrib4svNV),
-    NAME_FUNC_OFFSET(12246, glVertexAttrib4ubNV, glVertexAttrib4ubNV, NULL, _gloffset_VertexAttrib4ubNV),
-    NAME_FUNC_OFFSET(12266, glVertexAttrib4ubvNV, glVertexAttrib4ubvNV, NULL, _gloffset_VertexAttrib4ubvNV),
-    NAME_FUNC_OFFSET(12287, glVertexAttribPointerNV, glVertexAttribPointerNV, NULL, _gloffset_VertexAttribPointerNV),
-    NAME_FUNC_OFFSET(12311, glVertexAttribs1dvNV, glVertexAttribs1dvNV, NULL, _gloffset_VertexAttribs1dvNV),
-    NAME_FUNC_OFFSET(12332, glVertexAttribs1fvNV, glVertexAttribs1fvNV, NULL, _gloffset_VertexAttribs1fvNV),
-    NAME_FUNC_OFFSET(12353, glVertexAttribs1svNV, glVertexAttribs1svNV, NULL, _gloffset_VertexAttribs1svNV),
-    NAME_FUNC_OFFSET(12374, glVertexAttribs2dvNV, glVertexAttribs2dvNV, NULL, _gloffset_VertexAttribs2dvNV),
-    NAME_FUNC_OFFSET(12395, glVertexAttribs2fvNV, glVertexAttribs2fvNV, NULL, _gloffset_VertexAttribs2fvNV),
-    NAME_FUNC_OFFSET(12416, glVertexAttribs2svNV, glVertexAttribs2svNV, NULL, _gloffset_VertexAttribs2svNV),
-    NAME_FUNC_OFFSET(12437, glVertexAttribs3dvNV, glVertexAttribs3dvNV, NULL, _gloffset_VertexAttribs3dvNV),
-    NAME_FUNC_OFFSET(12458, glVertexAttribs3fvNV, glVertexAttribs3fvNV, NULL, _gloffset_VertexAttribs3fvNV),
-    NAME_FUNC_OFFSET(12479, glVertexAttribs3svNV, glVertexAttribs3svNV, NULL, _gloffset_VertexAttribs3svNV),
-    NAME_FUNC_OFFSET(12500, glVertexAttribs4dvNV, glVertexAttribs4dvNV, NULL, _gloffset_VertexAttribs4dvNV),
-    NAME_FUNC_OFFSET(12521, glVertexAttribs4fvNV, glVertexAttribs4fvNV, NULL, _gloffset_VertexAttribs4fvNV),
-    NAME_FUNC_OFFSET(12542, glVertexAttribs4svNV, glVertexAttribs4svNV, NULL, _gloffset_VertexAttribs4svNV),
-    NAME_FUNC_OFFSET(12563, glVertexAttribs4ubvNV, glVertexAttribs4ubvNV, NULL, _gloffset_VertexAttribs4ubvNV),
-    NAME_FUNC_OFFSET(12585, glGetTexBumpParameterfvATI, glGetTexBumpParameterfvATI, NULL, _gloffset_GetTexBumpParameterfvATI),
-    NAME_FUNC_OFFSET(12612, glGetTexBumpParameterivATI, glGetTexBumpParameterivATI, NULL, _gloffset_GetTexBumpParameterivATI),
-    NAME_FUNC_OFFSET(12639, glTexBumpParameterfvATI, glTexBumpParameterfvATI, NULL, _gloffset_TexBumpParameterfvATI),
-    NAME_FUNC_OFFSET(12663, glTexBumpParameterivATI, glTexBumpParameterivATI, NULL, _gloffset_TexBumpParameterivATI),
-    NAME_FUNC_OFFSET(12687, glAlphaFragmentOp1ATI, glAlphaFragmentOp1ATI, NULL, _gloffset_AlphaFragmentOp1ATI),
-    NAME_FUNC_OFFSET(12709, glAlphaFragmentOp2ATI, glAlphaFragmentOp2ATI, NULL, _gloffset_AlphaFragmentOp2ATI),
-    NAME_FUNC_OFFSET(12731, glAlphaFragmentOp3ATI, glAlphaFragmentOp3ATI, NULL, _gloffset_AlphaFragmentOp3ATI),
-    NAME_FUNC_OFFSET(12753, glBeginFragmentShaderATI, glBeginFragmentShaderATI, NULL, _gloffset_BeginFragmentShaderATI),
-    NAME_FUNC_OFFSET(12778, glBindFragmentShaderATI, glBindFragmentShaderATI, NULL, _gloffset_BindFragmentShaderATI),
-    NAME_FUNC_OFFSET(12802, glColorFragmentOp1ATI, glColorFragmentOp1ATI, NULL, _gloffset_ColorFragmentOp1ATI),
-    NAME_FUNC_OFFSET(12824, glColorFragmentOp2ATI, glColorFragmentOp2ATI, NULL, _gloffset_ColorFragmentOp2ATI),
-    NAME_FUNC_OFFSET(12846, glColorFragmentOp3ATI, glColorFragmentOp3ATI, NULL, _gloffset_ColorFragmentOp3ATI),
-    NAME_FUNC_OFFSET(12868, glDeleteFragmentShaderATI, glDeleteFragmentShaderATI, NULL, _gloffset_DeleteFragmentShaderATI),
-    NAME_FUNC_OFFSET(12894, glEndFragmentShaderATI, glEndFragmentShaderATI, NULL, _gloffset_EndFragmentShaderATI),
-    NAME_FUNC_OFFSET(12917, glGenFragmentShadersATI, glGenFragmentShadersATI, NULL, _gloffset_GenFragmentShadersATI),
-    NAME_FUNC_OFFSET(12941, glPassTexCoordATI, glPassTexCoordATI, NULL, _gloffset_PassTexCoordATI),
-    NAME_FUNC_OFFSET(12959, glSampleMapATI, glSampleMapATI, NULL, _gloffset_SampleMapATI),
-    NAME_FUNC_OFFSET(12974, glSetFragmentShaderConstantATI, glSetFragmentShaderConstantATI, NULL, _gloffset_SetFragmentShaderConstantATI),
-    NAME_FUNC_OFFSET(13005, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
-    NAME_FUNC_OFFSET(13025, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
-    NAME_FUNC_OFFSET(13046, gl_dispatch_stub_755, gl_dispatch_stub_755, NULL, _gloffset_ActiveStencilFaceEXT),
-    NAME_FUNC_OFFSET(13069, gl_dispatch_stub_756, gl_dispatch_stub_756, NULL, _gloffset_BindVertexArrayAPPLE),
-    NAME_FUNC_OFFSET(13092, gl_dispatch_stub_757, gl_dispatch_stub_757, NULL, _gloffset_DeleteVertexArraysAPPLE),
-    NAME_FUNC_OFFSET(13118, gl_dispatch_stub_758, gl_dispatch_stub_758, NULL, _gloffset_GenVertexArraysAPPLE),
-    NAME_FUNC_OFFSET(13141, gl_dispatch_stub_759, gl_dispatch_stub_759, NULL, _gloffset_IsVertexArrayAPPLE),
-    NAME_FUNC_OFFSET(13162, glGetProgramNamedParameterdvNV, glGetProgramNamedParameterdvNV, NULL, _gloffset_GetProgramNamedParameterdvNV),
-    NAME_FUNC_OFFSET(13193, glGetProgramNamedParameterfvNV, glGetProgramNamedParameterfvNV, NULL, _gloffset_GetProgramNamedParameterfvNV),
-    NAME_FUNC_OFFSET(13224, glProgramNamedParameter4dNV, glProgramNamedParameter4dNV, NULL, _gloffset_ProgramNamedParameter4dNV),
-    NAME_FUNC_OFFSET(13252, glProgramNamedParameter4dvNV, glProgramNamedParameter4dvNV, NULL, _gloffset_ProgramNamedParameter4dvNV),
-    NAME_FUNC_OFFSET(13281, glProgramNamedParameter4fNV, glProgramNamedParameter4fNV, NULL, _gloffset_ProgramNamedParameter4fNV),
-    NAME_FUNC_OFFSET(13309, glProgramNamedParameter4fvNV, glProgramNamedParameter4fvNV, NULL, _gloffset_ProgramNamedParameter4fvNV),
-    NAME_FUNC_OFFSET(13338, gl_dispatch_stub_766, gl_dispatch_stub_766, NULL, _gloffset_DepthBoundsEXT),
-    NAME_FUNC_OFFSET(13355, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlendEquationSeparateEXT),
-    NAME_FUNC_OFFSET(13382, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT),
-    NAME_FUNC_OFFSET(13403, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT),
-    NAME_FUNC_OFFSET(13425, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT),
-    NAME_FUNC_OFFSET(13453, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT),
-    NAME_FUNC_OFFSET(13477, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT),
-    NAME_FUNC_OFFSET(13502, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT),
-    NAME_FUNC_OFFSET(13531, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT),
-    NAME_FUNC_OFFSET(13557, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT),
-    NAME_FUNC_OFFSET(13583, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT),
-    NAME_FUNC_OFFSET(13609, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT),
-    NAME_FUNC_OFFSET(13630, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT),
-    NAME_FUNC_OFFSET(13652, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT),
-    NAME_FUNC_OFFSET(13672, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT),
-    NAME_FUNC_OFFSET(13713, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT),
-    NAME_FUNC_OFFSET(13745, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT),
-    NAME_FUNC_OFFSET(13764, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT),
-    NAME_FUNC_OFFSET(13784, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT),
-    NAME_FUNC_OFFSET(13809, gl_dispatch_stub_785, gl_dispatch_stub_785, NULL, _gloffset_BlitFramebufferEXT),
-    NAME_FUNC_OFFSET(13830, gl_dispatch_stub_786, gl_dispatch_stub_786, NULL, _gloffset_BufferParameteriAPPLE),
-    NAME_FUNC_OFFSET(13854, gl_dispatch_stub_787, gl_dispatch_stub_787, NULL, _gloffset_FlushMappedBufferRangeAPPLE),
-    NAME_FUNC_OFFSET(13884, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT),
-    NAME_FUNC_OFFSET(13913, glColorMaskIndexedEXT, glColorMaskIndexedEXT, NULL, _gloffset_ColorMaskIndexedEXT),
-    NAME_FUNC_OFFSET(13935, glDisableIndexedEXT, glDisableIndexedEXT, NULL, _gloffset_DisableIndexedEXT),
-    NAME_FUNC_OFFSET(13955, glEnableIndexedEXT, glEnableIndexedEXT, NULL, _gloffset_EnableIndexedEXT),
-    NAME_FUNC_OFFSET(13974, glGetBooleanIndexedvEXT, glGetBooleanIndexedvEXT, NULL, _gloffset_GetBooleanIndexedvEXT),
-    NAME_FUNC_OFFSET(13998, glGetIntegerIndexedvEXT, glGetIntegerIndexedvEXT, NULL, _gloffset_GetIntegerIndexedvEXT),
-    NAME_FUNC_OFFSET(14022, glIsEnabledIndexedEXT, glIsEnabledIndexedEXT, NULL, _gloffset_IsEnabledIndexedEXT),
-    NAME_FUNC_OFFSET(14044, glBeginConditionalRenderNV, glBeginConditionalRenderNV, NULL, _gloffset_BeginConditionalRenderNV),
-    NAME_FUNC_OFFSET(14071, glEndConditionalRenderNV, glEndConditionalRenderNV, NULL, _gloffset_EndConditionalRenderNV),
-    NAME_FUNC_OFFSET(14096, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT),
-    NAME_FUNC_OFFSET(14124, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT),
-    NAME_FUNC_OFFSET(14144, glBindBufferOffsetEXT, glBindBufferOffsetEXT, NULL, _gloffset_BindBufferOffsetEXT),
-    NAME_FUNC_OFFSET(14166, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT),
-    NAME_FUNC_OFFSET(14187, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT),
-    NAME_FUNC_OFFSET(14213, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT),
-    NAME_FUNC_OFFSET(14246, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT),
-    NAME_FUNC_OFFSET(14277, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT),
-    NAME_FUNC_OFFSET(14298, gl_dispatch_stub_805, gl_dispatch_stub_805, NULL, _gloffset_GetTexParameterPointervAPPLE),
-    NAME_FUNC_OFFSET(14329, gl_dispatch_stub_806, gl_dispatch_stub_806, NULL, _gloffset_TextureRangeAPPLE),
-    NAME_FUNC_OFFSET(14349, glGetObjectParameterivAPPLE, glGetObjectParameterivAPPLE, NULL, _gloffset_GetObjectParameterivAPPLE),
-    NAME_FUNC_OFFSET(14377, glObjectPurgeableAPPLE, glObjectPurgeableAPPLE, NULL, _gloffset_ObjectPurgeableAPPLE),
-    NAME_FUNC_OFFSET(14400, glObjectUnpurgeableAPPLE, glObjectUnpurgeableAPPLE, NULL, _gloffset_ObjectUnpurgeableAPPLE),
-    NAME_FUNC_OFFSET(14425, gl_dispatch_stub_810, gl_dispatch_stub_810, NULL, _gloffset_StencilFuncSeparateATI),
-    NAME_FUNC_OFFSET(14450, gl_dispatch_stub_811, gl_dispatch_stub_811, NULL, _gloffset_ProgramEnvParameters4fvEXT),
-    NAME_FUNC_OFFSET(14479, gl_dispatch_stub_812, gl_dispatch_stub_812, NULL, _gloffset_ProgramLocalParameters4fvEXT),
-    NAME_FUNC_OFFSET(14510, gl_dispatch_stub_813, gl_dispatch_stub_813, NULL, _gloffset_GetQueryObjecti64vEXT),
-    NAME_FUNC_OFFSET(14534, gl_dispatch_stub_814, gl_dispatch_stub_814, NULL, _gloffset_GetQueryObjectui64vEXT),
-    NAME_FUNC_OFFSET(14559, glEGLImageTargetRenderbufferStorageOES, glEGLImageTargetRenderbufferStorageOES, NULL, _gloffset_EGLImageTargetRenderbufferStorageOES),
-    NAME_FUNC_OFFSET(14598, glEGLImageTargetTexture2DOES, glEGLImageTargetTexture2DOES, NULL, _gloffset_EGLImageTargetTexture2DOES),
-    NAME_FUNC_OFFSET(14627, glArrayElement, glArrayElement, NULL, _gloffset_ArrayElement),
-    NAME_FUNC_OFFSET(14645, glBindTexture, glBindTexture, NULL, _gloffset_BindTexture),
-    NAME_FUNC_OFFSET(14662, glDrawArrays, glDrawArrays, NULL, _gloffset_DrawArrays),
-    NAME_FUNC_OFFSET(14678, glAreTexturesResident, glAreTexturesResidentEXT, glAreTexturesResidentEXT, _gloffset_AreTexturesResident),
-    NAME_FUNC_OFFSET(14703, glCopyTexImage1D, glCopyTexImage1D, NULL, _gloffset_CopyTexImage1D),
-    NAME_FUNC_OFFSET(14723, glCopyTexImage2D, glCopyTexImage2D, NULL, _gloffset_CopyTexImage2D),
-    NAME_FUNC_OFFSET(14743, glCopyTexSubImage1D, glCopyTexSubImage1D, NULL, _gloffset_CopyTexSubImage1D),
-    NAME_FUNC_OFFSET(14766, glCopyTexSubImage2D, glCopyTexSubImage2D, NULL, _gloffset_CopyTexSubImage2D),
-    NAME_FUNC_OFFSET(14789, glDeleteTextures, glDeleteTexturesEXT, glDeleteTexturesEXT, _gloffset_DeleteTextures),
-    NAME_FUNC_OFFSET(14809, glGenTextures, glGenTexturesEXT, glGenTexturesEXT, _gloffset_GenTextures),
-    NAME_FUNC_OFFSET(14826, glGetPointerv, glGetPointerv, NULL, _gloffset_GetPointerv),
-    NAME_FUNC_OFFSET(14843, glIsTexture, glIsTextureEXT, glIsTextureEXT, _gloffset_IsTexture),
-    NAME_FUNC_OFFSET(14858, glPrioritizeTextures, glPrioritizeTextures, NULL, _gloffset_PrioritizeTextures),
-    NAME_FUNC_OFFSET(14882, glTexSubImage1D, glTexSubImage1D, NULL, _gloffset_TexSubImage1D),
-    NAME_FUNC_OFFSET(14901, glTexSubImage2D, glTexSubImage2D, NULL, _gloffset_TexSubImage2D),
-    NAME_FUNC_OFFSET(14920, glBlendColor, glBlendColor, NULL, _gloffset_BlendColor),
-    NAME_FUNC_OFFSET(14936, glBlendEquation, glBlendEquation, NULL, _gloffset_BlendEquation),
-    NAME_FUNC_OFFSET(14955, glDrawRangeElements, glDrawRangeElements, NULL, _gloffset_DrawRangeElements),
-    NAME_FUNC_OFFSET(14978, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
-    NAME_FUNC_OFFSET(14994, glColorTable, glColorTable, NULL, _gloffset_ColorTable),
-    NAME_FUNC_OFFSET(15010, glColorTableParameterfv, glColorTableParameterfv, NULL, _gloffset_ColorTableParameterfv),
-    NAME_FUNC_OFFSET(15037, glColorTableParameteriv, glColorTableParameteriv, NULL, _gloffset_ColorTableParameteriv),
-    NAME_FUNC_OFFSET(15064, glCopyColorTable, glCopyColorTable, NULL, _gloffset_CopyColorTable),
-    NAME_FUNC_OFFSET(15084, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
-    NAME_FUNC_OFFSET(15103, glGetColorTable, glGetColorTableEXT, glGetColorTableEXT, _gloffset_GetColorTable),
-    NAME_FUNC_OFFSET(15122, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
-    NAME_FUNC_OFFSET(15152, glGetColorTableParameterfv, glGetColorTableParameterfvEXT, glGetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv),
-    NAME_FUNC_OFFSET(15182, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
-    NAME_FUNC_OFFSET(15212, glGetColorTableParameteriv, glGetColorTableParameterivEXT, glGetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv),
-    NAME_FUNC_OFFSET(15242, glColorSubTable, glColorSubTable, NULL, _gloffset_ColorSubTable),
-    NAME_FUNC_OFFSET(15261, glCopyColorSubTable, glCopyColorSubTable, NULL, _gloffset_CopyColorSubTable),
-    NAME_FUNC_OFFSET(15284, glConvolutionFilter1D, glConvolutionFilter1D, NULL, _gloffset_ConvolutionFilter1D),
-    NAME_FUNC_OFFSET(15309, glConvolutionFilter2D, glConvolutionFilter2D, NULL, _gloffset_ConvolutionFilter2D),
-    NAME_FUNC_OFFSET(15334, glConvolutionParameterf, glConvolutionParameterf, NULL, _gloffset_ConvolutionParameterf),
-    NAME_FUNC_OFFSET(15361, glConvolutionParameterfv, glConvolutionParameterfv, NULL, _gloffset_ConvolutionParameterfv),
-    NAME_FUNC_OFFSET(15389, glConvolutionParameteri, glConvolutionParameteri, NULL, _gloffset_ConvolutionParameteri),
-    NAME_FUNC_OFFSET(15416, glConvolutionParameteriv, glConvolutionParameteriv, NULL, _gloffset_ConvolutionParameteriv),
-    NAME_FUNC_OFFSET(15444, glCopyConvolutionFilter1D, glCopyConvolutionFilter1D, NULL, _gloffset_CopyConvolutionFilter1D),
-    NAME_FUNC_OFFSET(15473, glCopyConvolutionFilter2D, glCopyConvolutionFilter2D, NULL, _gloffset_CopyConvolutionFilter2D),
-    NAME_FUNC_OFFSET(15502, glGetConvolutionFilter, gl_dispatch_stub_356, gl_dispatch_stub_356, _gloffset_GetConvolutionFilter),
-    NAME_FUNC_OFFSET(15528, glGetConvolutionParameterfv, gl_dispatch_stub_357, gl_dispatch_stub_357, _gloffset_GetConvolutionParameterfv),
-    NAME_FUNC_OFFSET(15559, glGetConvolutionParameteriv, gl_dispatch_stub_358, gl_dispatch_stub_358, _gloffset_GetConvolutionParameteriv),
-    NAME_FUNC_OFFSET(15590, glGetSeparableFilter, gl_dispatch_stub_359, gl_dispatch_stub_359, _gloffset_GetSeparableFilter),
-    NAME_FUNC_OFFSET(15614, glSeparableFilter2D, glSeparableFilter2D, NULL, _gloffset_SeparableFilter2D),
-    NAME_FUNC_OFFSET(15637, glGetHistogram, gl_dispatch_stub_361, gl_dispatch_stub_361, _gloffset_GetHistogram),
-    NAME_FUNC_OFFSET(15655, glGetHistogramParameterfv, gl_dispatch_stub_362, gl_dispatch_stub_362, _gloffset_GetHistogramParameterfv),
-    NAME_FUNC_OFFSET(15684, glGetHistogramParameteriv, gl_dispatch_stub_363, gl_dispatch_stub_363, _gloffset_GetHistogramParameteriv),
-    NAME_FUNC_OFFSET(15713, glGetMinmax, gl_dispatch_stub_364, gl_dispatch_stub_364, _gloffset_GetMinmax),
-    NAME_FUNC_OFFSET(15728, glGetMinmaxParameterfv, gl_dispatch_stub_365, gl_dispatch_stub_365, _gloffset_GetMinmaxParameterfv),
-    NAME_FUNC_OFFSET(15754, glGetMinmaxParameteriv, gl_dispatch_stub_366, gl_dispatch_stub_366, _gloffset_GetMinmaxParameteriv),
-    NAME_FUNC_OFFSET(15780, glHistogram, glHistogram, NULL, _gloffset_Histogram),
-    NAME_FUNC_OFFSET(15795, glMinmax, glMinmax, NULL, _gloffset_Minmax),
-    NAME_FUNC_OFFSET(15807, glResetHistogram, glResetHistogram, NULL, _gloffset_ResetHistogram),
-    NAME_FUNC_OFFSET(15827, glResetMinmax, glResetMinmax, NULL, _gloffset_ResetMinmax),
-    NAME_FUNC_OFFSET(15844, glTexImage3D, glTexImage3D, NULL, _gloffset_TexImage3D),
-    NAME_FUNC_OFFSET(15860, glTexSubImage3D, glTexSubImage3D, NULL, _gloffset_TexSubImage3D),
-    NAME_FUNC_OFFSET(15879, glCopyTexSubImage3D, glCopyTexSubImage3D, NULL, _gloffset_CopyTexSubImage3D),
-    NAME_FUNC_OFFSET(15902, glActiveTextureARB, glActiveTextureARB, NULL, _gloffset_ActiveTextureARB),
-    NAME_FUNC_OFFSET(15918, glClientActiveTextureARB, glClientActiveTextureARB, NULL, _gloffset_ClientActiveTextureARB),
-    NAME_FUNC_OFFSET(15940, glMultiTexCoord1dARB, glMultiTexCoord1dARB, NULL, _gloffset_MultiTexCoord1dARB),
-    NAME_FUNC_OFFSET(15958, glMultiTexCoord1dvARB, glMultiTexCoord1dvARB, NULL, _gloffset_MultiTexCoord1dvARB),
-    NAME_FUNC_OFFSET(15977, glMultiTexCoord1fARB, glMultiTexCoord1fARB, NULL, _gloffset_MultiTexCoord1fARB),
-    NAME_FUNC_OFFSET(15995, glMultiTexCoord1fvARB, glMultiTexCoord1fvARB, NULL, _gloffset_MultiTexCoord1fvARB),
-    NAME_FUNC_OFFSET(16014, glMultiTexCoord1iARB, glMultiTexCoord1iARB, NULL, _gloffset_MultiTexCoord1iARB),
-    NAME_FUNC_OFFSET(16032, glMultiTexCoord1ivARB, glMultiTexCoord1ivARB, NULL, _gloffset_MultiTexCoord1ivARB),
-    NAME_FUNC_OFFSET(16051, glMultiTexCoord1sARB, glMultiTexCoord1sARB, NULL, _gloffset_MultiTexCoord1sARB),
-    NAME_FUNC_OFFSET(16069, glMultiTexCoord1svARB, glMultiTexCoord1svARB, NULL, _gloffset_MultiTexCoord1svARB),
-    NAME_FUNC_OFFSET(16088, glMultiTexCoord2dARB, glMultiTexCoord2dARB, NULL, _gloffset_MultiTexCoord2dARB),
-    NAME_FUNC_OFFSET(16106, glMultiTexCoord2dvARB, glMultiTexCoord2dvARB, NULL, _gloffset_MultiTexCoord2dvARB),
-    NAME_FUNC_OFFSET(16125, glMultiTexCoord2fARB, glMultiTexCoord2fARB, NULL, _gloffset_MultiTexCoord2fARB),
-    NAME_FUNC_OFFSET(16143, glMultiTexCoord2fvARB, glMultiTexCoord2fvARB, NULL, _gloffset_MultiTexCoord2fvARB),
-    NAME_FUNC_OFFSET(16162, glMultiTexCoord2iARB, glMultiTexCoord2iARB, NULL, _gloffset_MultiTexCoord2iARB),
-    NAME_FUNC_OFFSET(16180, glMultiTexCoord2ivARB, glMultiTexCoord2ivARB, NULL, _gloffset_MultiTexCoord2ivARB),
-    NAME_FUNC_OFFSET(16199, glMultiTexCoord2sARB, glMultiTexCoord2sARB, NULL, _gloffset_MultiTexCoord2sARB),
-    NAME_FUNC_OFFSET(16217, glMultiTexCoord2svARB, glMultiTexCoord2svARB, NULL, _gloffset_MultiTexCoord2svARB),
-    NAME_FUNC_OFFSET(16236, glMultiTexCoord3dARB, glMultiTexCoord3dARB, NULL, _gloffset_MultiTexCoord3dARB),
-    NAME_FUNC_OFFSET(16254, glMultiTexCoord3dvARB, glMultiTexCoord3dvARB, NULL, _gloffset_MultiTexCoord3dvARB),
-    NAME_FUNC_OFFSET(16273, glMultiTexCoord3fARB, glMultiTexCoord3fARB, NULL, _gloffset_MultiTexCoord3fARB),
-    NAME_FUNC_OFFSET(16291, glMultiTexCoord3fvARB, glMultiTexCoord3fvARB, NULL, _gloffset_MultiTexCoord3fvARB),
-    NAME_FUNC_OFFSET(16310, glMultiTexCoord3iARB, glMultiTexCoord3iARB, NULL, _gloffset_MultiTexCoord3iARB),
-    NAME_FUNC_OFFSET(16328, glMultiTexCoord3ivARB, glMultiTexCoord3ivARB, NULL, _gloffset_MultiTexCoord3ivARB),
-    NAME_FUNC_OFFSET(16347, glMultiTexCoord3sARB, glMultiTexCoord3sARB, NULL, _gloffset_MultiTexCoord3sARB),
-    NAME_FUNC_OFFSET(16365, glMultiTexCoord3svARB, glMultiTexCoord3svARB, NULL, _gloffset_MultiTexCoord3svARB),
-    NAME_FUNC_OFFSET(16384, glMultiTexCoord4dARB, glMultiTexCoord4dARB, NULL, _gloffset_MultiTexCoord4dARB),
-    NAME_FUNC_OFFSET(16402, glMultiTexCoord4dvARB, glMultiTexCoord4dvARB, NULL, _gloffset_MultiTexCoord4dvARB),
-    NAME_FUNC_OFFSET(16421, glMultiTexCoord4fARB, glMultiTexCoord4fARB, NULL, _gloffset_MultiTexCoord4fARB),
-    NAME_FUNC_OFFSET(16439, glMultiTexCoord4fvARB, glMultiTexCoord4fvARB, NULL, _gloffset_MultiTexCoord4fvARB),
-    NAME_FUNC_OFFSET(16458, glMultiTexCoord4iARB, glMultiTexCoord4iARB, NULL, _gloffset_MultiTexCoord4iARB),
-    NAME_FUNC_OFFSET(16476, glMultiTexCoord4ivARB, glMultiTexCoord4ivARB, NULL, _gloffset_MultiTexCoord4ivARB),
-    NAME_FUNC_OFFSET(16495, glMultiTexCoord4sARB, glMultiTexCoord4sARB, NULL, _gloffset_MultiTexCoord4sARB),
-    NAME_FUNC_OFFSET(16513, glMultiTexCoord4svARB, glMultiTexCoord4svARB, NULL, _gloffset_MultiTexCoord4svARB),
-    NAME_FUNC_OFFSET(16532, glStencilOpSeparate, glStencilOpSeparate, NULL, _gloffset_StencilOpSeparate),
-    NAME_FUNC_OFFSET(16555, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
-    NAME_FUNC_OFFSET(16580, glDrawArraysInstanced, glDrawArraysInstanced, NULL, _gloffset_DrawArraysInstanced),
-    NAME_FUNC_OFFSET(16605, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
-    NAME_FUNC_OFFSET(16632, glDrawElementsInstanced, glDrawElementsInstanced, NULL, _gloffset_DrawElementsInstanced),
-    NAME_FUNC_OFFSET(16659, glLoadTransposeMatrixdARB, glLoadTransposeMatrixdARB, NULL, _gloffset_LoadTransposeMatrixdARB),
-    NAME_FUNC_OFFSET(16682, glLoadTransposeMatrixfARB, glLoadTransposeMatrixfARB, NULL, _gloffset_LoadTransposeMatrixfARB),
-    NAME_FUNC_OFFSET(16705, glMultTransposeMatrixdARB, glMultTransposeMatrixdARB, NULL, _gloffset_MultTransposeMatrixdARB),
-    NAME_FUNC_OFFSET(16728, glMultTransposeMatrixfARB, glMultTransposeMatrixfARB, NULL, _gloffset_MultTransposeMatrixfARB),
-    NAME_FUNC_OFFSET(16751, glSampleCoverageARB, glSampleCoverageARB, NULL, _gloffset_SampleCoverageARB),
-    NAME_FUNC_OFFSET(16768, glCompressedTexImage1DARB, glCompressedTexImage1DARB, NULL, _gloffset_CompressedTexImage1DARB),
-    NAME_FUNC_OFFSET(16791, glCompressedTexImage2DARB, glCompressedTexImage2DARB, NULL, _gloffset_CompressedTexImage2DARB),
-    NAME_FUNC_OFFSET(16814, glCompressedTexImage3DARB, glCompressedTexImage3DARB, NULL, _gloffset_CompressedTexImage3DARB),
-    NAME_FUNC_OFFSET(16837, glCompressedTexSubImage1DARB, glCompressedTexSubImage1DARB, NULL, _gloffset_CompressedTexSubImage1DARB),
-    NAME_FUNC_OFFSET(16863, glCompressedTexSubImage2DARB, glCompressedTexSubImage2DARB, NULL, _gloffset_CompressedTexSubImage2DARB),
-    NAME_FUNC_OFFSET(16889, glCompressedTexSubImage3DARB, glCompressedTexSubImage3DARB, NULL, _gloffset_CompressedTexSubImage3DARB),
-    NAME_FUNC_OFFSET(16915, glGetCompressedTexImageARB, glGetCompressedTexImageARB, NULL, _gloffset_GetCompressedTexImageARB),
-    NAME_FUNC_OFFSET(16939, glDisableVertexAttribArrayARB, glDisableVertexAttribArrayARB, NULL, _gloffset_DisableVertexAttribArrayARB),
-    NAME_FUNC_OFFSET(16966, glEnableVertexAttribArrayARB, glEnableVertexAttribArrayARB, NULL, _gloffset_EnableVertexAttribArrayARB),
-    NAME_FUNC_OFFSET(16992, glGetVertexAttribdvARB, glGetVertexAttribdvARB, NULL, _gloffset_GetVertexAttribdvARB),
-    NAME_FUNC_OFFSET(17012, glGetVertexAttribfvARB, glGetVertexAttribfvARB, NULL, _gloffset_GetVertexAttribfvARB),
-    NAME_FUNC_OFFSET(17032, glGetVertexAttribivARB, glGetVertexAttribivARB, NULL, _gloffset_GetVertexAttribivARB),
-    NAME_FUNC_OFFSET(17052, glProgramEnvParameter4dARB, glProgramEnvParameter4dARB, NULL, _gloffset_ProgramEnvParameter4dARB),
-    NAME_FUNC_OFFSET(17075, glProgramEnvParameter4dvARB, glProgramEnvParameter4dvARB, NULL, _gloffset_ProgramEnvParameter4dvARB),
-    NAME_FUNC_OFFSET(17099, glProgramEnvParameter4fARB, glProgramEnvParameter4fARB, NULL, _gloffset_ProgramEnvParameter4fARB),
-    NAME_FUNC_OFFSET(17122, glProgramEnvParameter4fvARB, glProgramEnvParameter4fvARB, NULL, _gloffset_ProgramEnvParameter4fvARB),
-    NAME_FUNC_OFFSET(17146, glVertexAttrib1dARB, glVertexAttrib1dARB, NULL, _gloffset_VertexAttrib1dARB),
-    NAME_FUNC_OFFSET(17163, glVertexAttrib1dvARB, glVertexAttrib1dvARB, NULL, _gloffset_VertexAttrib1dvARB),
-    NAME_FUNC_OFFSET(17181, glVertexAttrib1fARB, glVertexAttrib1fARB, NULL, _gloffset_VertexAttrib1fARB),
-    NAME_FUNC_OFFSET(17198, glVertexAttrib1fvARB, glVertexAttrib1fvARB, NULL, _gloffset_VertexAttrib1fvARB),
-    NAME_FUNC_OFFSET(17216, glVertexAttrib1sARB, glVertexAttrib1sARB, NULL, _gloffset_VertexAttrib1sARB),
-    NAME_FUNC_OFFSET(17233, glVertexAttrib1svARB, glVertexAttrib1svARB, NULL, _gloffset_VertexAttrib1svARB),
-    NAME_FUNC_OFFSET(17251, glVertexAttrib2dARB, glVertexAttrib2dARB, NULL, _gloffset_VertexAttrib2dARB),
-    NAME_FUNC_OFFSET(17268, glVertexAttrib2dvARB, glVertexAttrib2dvARB, NULL, _gloffset_VertexAttrib2dvARB),
-    NAME_FUNC_OFFSET(17286, glVertexAttrib2fARB, glVertexAttrib2fARB, NULL, _gloffset_VertexAttrib2fARB),
-    NAME_FUNC_OFFSET(17303, glVertexAttrib2fvARB, glVertexAttrib2fvARB, NULL, _gloffset_VertexAttrib2fvARB),
-    NAME_FUNC_OFFSET(17321, glVertexAttrib2sARB, glVertexAttrib2sARB, NULL, _gloffset_VertexAttrib2sARB),
-    NAME_FUNC_OFFSET(17338, glVertexAttrib2svARB, glVertexAttrib2svARB, NULL, _gloffset_VertexAttrib2svARB),
-    NAME_FUNC_OFFSET(17356, glVertexAttrib3dARB, glVertexAttrib3dARB, NULL, _gloffset_VertexAttrib3dARB),
-    NAME_FUNC_OFFSET(17373, glVertexAttrib3dvARB, glVertexAttrib3dvARB, NULL, _gloffset_VertexAttrib3dvARB),
-    NAME_FUNC_OFFSET(17391, glVertexAttrib3fARB, glVertexAttrib3fARB, NULL, _gloffset_VertexAttrib3fARB),
-    NAME_FUNC_OFFSET(17408, glVertexAttrib3fvARB, glVertexAttrib3fvARB, NULL, _gloffset_VertexAttrib3fvARB),
-    NAME_FUNC_OFFSET(17426, glVertexAttrib3sARB, glVertexAttrib3sARB, NULL, _gloffset_VertexAttrib3sARB),
-    NAME_FUNC_OFFSET(17443, glVertexAttrib3svARB, glVertexAttrib3svARB, NULL, _gloffset_VertexAttrib3svARB),
-    NAME_FUNC_OFFSET(17461, glVertexAttrib4NbvARB, glVertexAttrib4NbvARB, NULL, _gloffset_VertexAttrib4NbvARB),
-    NAME_FUNC_OFFSET(17480, glVertexAttrib4NivARB, glVertexAttrib4NivARB, NULL, _gloffset_VertexAttrib4NivARB),
-    NAME_FUNC_OFFSET(17499, glVertexAttrib4NsvARB, glVertexAttrib4NsvARB, NULL, _gloffset_VertexAttrib4NsvARB),
-    NAME_FUNC_OFFSET(17518, glVertexAttrib4NubARB, glVertexAttrib4NubARB, NULL, _gloffset_VertexAttrib4NubARB),
-    NAME_FUNC_OFFSET(17537, glVertexAttrib4NubvARB, glVertexAttrib4NubvARB, NULL, _gloffset_VertexAttrib4NubvARB),
-    NAME_FUNC_OFFSET(17557, glVertexAttrib4NuivARB, glVertexAttrib4NuivARB, NULL, _gloffset_VertexAttrib4NuivARB),
-    NAME_FUNC_OFFSET(17577, glVertexAttrib4NusvARB, glVertexAttrib4NusvARB, NULL, _gloffset_VertexAttrib4NusvARB),
-    NAME_FUNC_OFFSET(17597, glVertexAttrib4bvARB, glVertexAttrib4bvARB, NULL, _gloffset_VertexAttrib4bvARB),
-    NAME_FUNC_OFFSET(17615, glVertexAttrib4dARB, glVertexAttrib4dARB, NULL, _gloffset_VertexAttrib4dARB),
-    NAME_FUNC_OFFSET(17632, glVertexAttrib4dvARB, glVertexAttrib4dvARB, NULL, _gloffset_VertexAttrib4dvARB),
-    NAME_FUNC_OFFSET(17650, glVertexAttrib4fARB, glVertexAttrib4fARB, NULL, _gloffset_VertexAttrib4fARB),
-    NAME_FUNC_OFFSET(17667, glVertexAttrib4fvARB, glVertexAttrib4fvARB, NULL, _gloffset_VertexAttrib4fvARB),
-    NAME_FUNC_OFFSET(17685, glVertexAttrib4ivARB, glVertexAttrib4ivARB, NULL, _gloffset_VertexAttrib4ivARB),
-    NAME_FUNC_OFFSET(17703, glVertexAttrib4sARB, glVertexAttrib4sARB, NULL, _gloffset_VertexAttrib4sARB),
-    NAME_FUNC_OFFSET(17720, glVertexAttrib4svARB, glVertexAttrib4svARB, NULL, _gloffset_VertexAttrib4svARB),
-    NAME_FUNC_OFFSET(17738, glVertexAttrib4ubvARB, glVertexAttrib4ubvARB, NULL, _gloffset_VertexAttrib4ubvARB),
-    NAME_FUNC_OFFSET(17757, glVertexAttrib4uivARB, glVertexAttrib4uivARB, NULL, _gloffset_VertexAttrib4uivARB),
-    NAME_FUNC_OFFSET(17776, glVertexAttrib4usvARB, glVertexAttrib4usvARB, NULL, _gloffset_VertexAttrib4usvARB),
-    NAME_FUNC_OFFSET(17795, glVertexAttribPointerARB, glVertexAttribPointerARB, NULL, _gloffset_VertexAttribPointerARB),
-    NAME_FUNC_OFFSET(17817, glBindBufferARB, glBindBufferARB, NULL, _gloffset_BindBufferARB),
-    NAME_FUNC_OFFSET(17830, glBufferDataARB, glBufferDataARB, NULL, _gloffset_BufferDataARB),
-    NAME_FUNC_OFFSET(17843, glBufferSubDataARB, glBufferSubDataARB, NULL, _gloffset_BufferSubDataARB),
-    NAME_FUNC_OFFSET(17859, glDeleteBuffersARB, glDeleteBuffersARB, NULL, _gloffset_DeleteBuffersARB),
-    NAME_FUNC_OFFSET(17875, glGenBuffersARB, glGenBuffersARB, NULL, _gloffset_GenBuffersARB),
-    NAME_FUNC_OFFSET(17888, glGetBufferParameterivARB, glGetBufferParameterivARB, NULL, _gloffset_GetBufferParameterivARB),
-    NAME_FUNC_OFFSET(17911, glGetBufferPointervARB, glGetBufferPointervARB, NULL, _gloffset_GetBufferPointervARB),
-    NAME_FUNC_OFFSET(17931, glGetBufferSubDataARB, glGetBufferSubDataARB, NULL, _gloffset_GetBufferSubDataARB),
-    NAME_FUNC_OFFSET(17950, glIsBufferARB, glIsBufferARB, NULL, _gloffset_IsBufferARB),
-    NAME_FUNC_OFFSET(17961, glMapBufferARB, glMapBufferARB, NULL, _gloffset_MapBufferARB),
-    NAME_FUNC_OFFSET(17973, glUnmapBufferARB, glUnmapBufferARB, NULL, _gloffset_UnmapBufferARB),
-    NAME_FUNC_OFFSET(17987, glBeginQueryARB, glBeginQueryARB, NULL, _gloffset_BeginQueryARB),
-    NAME_FUNC_OFFSET(18000, glDeleteQueriesARB, glDeleteQueriesARB, NULL, _gloffset_DeleteQueriesARB),
-    NAME_FUNC_OFFSET(18016, glEndQueryARB, glEndQueryARB, NULL, _gloffset_EndQueryARB),
-    NAME_FUNC_OFFSET(18027, glGenQueriesARB, glGenQueriesARB, NULL, _gloffset_GenQueriesARB),
-    NAME_FUNC_OFFSET(18040, glGetQueryObjectivARB, glGetQueryObjectivARB, NULL, _gloffset_GetQueryObjectivARB),
-    NAME_FUNC_OFFSET(18059, glGetQueryObjectuivARB, glGetQueryObjectuivARB, NULL, _gloffset_GetQueryObjectuivARB),
-    NAME_FUNC_OFFSET(18079, glGetQueryivARB, glGetQueryivARB, NULL, _gloffset_GetQueryivARB),
-    NAME_FUNC_OFFSET(18092, glIsQueryARB, glIsQueryARB, NULL, _gloffset_IsQueryARB),
-    NAME_FUNC_OFFSET(18102, glCompileShaderARB, glCompileShaderARB, NULL, _gloffset_CompileShaderARB),
-    NAME_FUNC_OFFSET(18118, glGetActiveUniformARB, glGetActiveUniformARB, NULL, _gloffset_GetActiveUniformARB),
-    NAME_FUNC_OFFSET(18137, glGetShaderSourceARB, glGetShaderSourceARB, NULL, _gloffset_GetShaderSourceARB),
-    NAME_FUNC_OFFSET(18155, glGetUniformLocationARB, glGetUniformLocationARB, NULL, _gloffset_GetUniformLocationARB),
-    NAME_FUNC_OFFSET(18176, glGetUniformfvARB, glGetUniformfvARB, NULL, _gloffset_GetUniformfvARB),
-    NAME_FUNC_OFFSET(18191, glGetUniformivARB, glGetUniformivARB, NULL, _gloffset_GetUniformivARB),
-    NAME_FUNC_OFFSET(18206, glLinkProgramARB, glLinkProgramARB, NULL, _gloffset_LinkProgramARB),
-    NAME_FUNC_OFFSET(18220, glShaderSourceARB, glShaderSourceARB, NULL, _gloffset_ShaderSourceARB),
-    NAME_FUNC_OFFSET(18235, glUniform1fARB, glUniform1fARB, NULL, _gloffset_Uniform1fARB),
-    NAME_FUNC_OFFSET(18247, glUniform1fvARB, glUniform1fvARB, NULL, _gloffset_Uniform1fvARB),
-    NAME_FUNC_OFFSET(18260, glUniform1iARB, glUniform1iARB, NULL, _gloffset_Uniform1iARB),
-    NAME_FUNC_OFFSET(18272, glUniform1ivARB, glUniform1ivARB, NULL, _gloffset_Uniform1ivARB),
-    NAME_FUNC_OFFSET(18285, glUniform2fARB, glUniform2fARB, NULL, _gloffset_Uniform2fARB),
-    NAME_FUNC_OFFSET(18297, glUniform2fvARB, glUniform2fvARB, NULL, _gloffset_Uniform2fvARB),
-    NAME_FUNC_OFFSET(18310, glUniform2iARB, glUniform2iARB, NULL, _gloffset_Uniform2iARB),
-    NAME_FUNC_OFFSET(18322, glUniform2ivARB, glUniform2ivARB, NULL, _gloffset_Uniform2ivARB),
-    NAME_FUNC_OFFSET(18335, glUniform3fARB, glUniform3fARB, NULL, _gloffset_Uniform3fARB),
-    NAME_FUNC_OFFSET(18347, glUniform3fvARB, glUniform3fvARB, NULL, _gloffset_Uniform3fvARB),
-    NAME_FUNC_OFFSET(18360, glUniform3iARB, glUniform3iARB, NULL, _gloffset_Uniform3iARB),
-    NAME_FUNC_OFFSET(18372, glUniform3ivARB, glUniform3ivARB, NULL, _gloffset_Uniform3ivARB),
-    NAME_FUNC_OFFSET(18385, glUniform4fARB, glUniform4fARB, NULL, _gloffset_Uniform4fARB),
-    NAME_FUNC_OFFSET(18397, glUniform4fvARB, glUniform4fvARB, NULL, _gloffset_Uniform4fvARB),
-    NAME_FUNC_OFFSET(18410, glUniform4iARB, glUniform4iARB, NULL, _gloffset_Uniform4iARB),
-    NAME_FUNC_OFFSET(18422, glUniform4ivARB, glUniform4ivARB, NULL, _gloffset_Uniform4ivARB),
-    NAME_FUNC_OFFSET(18435, glUniformMatrix2fvARB, glUniformMatrix2fvARB, NULL, _gloffset_UniformMatrix2fvARB),
-    NAME_FUNC_OFFSET(18454, glUniformMatrix3fvARB, glUniformMatrix3fvARB, NULL, _gloffset_UniformMatrix3fvARB),
-    NAME_FUNC_OFFSET(18473, glUniformMatrix4fvARB, glUniformMatrix4fvARB, NULL, _gloffset_UniformMatrix4fvARB),
-    NAME_FUNC_OFFSET(18492, glUseProgramObjectARB, glUseProgramObjectARB, NULL, _gloffset_UseProgramObjectARB),
-    NAME_FUNC_OFFSET(18505, glValidateProgramARB, glValidateProgramARB, NULL, _gloffset_ValidateProgramARB),
-    NAME_FUNC_OFFSET(18523, glBindAttribLocationARB, glBindAttribLocationARB, NULL, _gloffset_BindAttribLocationARB),
-    NAME_FUNC_OFFSET(18544, glGetActiveAttribARB, glGetActiveAttribARB, NULL, _gloffset_GetActiveAttribARB),
-    NAME_FUNC_OFFSET(18562, glGetAttribLocationARB, glGetAttribLocationARB, NULL, _gloffset_GetAttribLocationARB),
-    NAME_FUNC_OFFSET(18582, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
-    NAME_FUNC_OFFSET(18596, glDrawBuffersARB, glDrawBuffersARB, NULL, _gloffset_DrawBuffersARB),
-    NAME_FUNC_OFFSET(18613, glRenderbufferStorageMultisample, glRenderbufferStorageMultisample, NULL, _gloffset_RenderbufferStorageMultisample),
-    NAME_FUNC_OFFSET(18649, gl_dispatch_stub_586, gl_dispatch_stub_586, NULL, _gloffset_SampleMaskSGIS),
-    NAME_FUNC_OFFSET(18665, gl_dispatch_stub_587, gl_dispatch_stub_587, NULL, _gloffset_SamplePatternSGIS),
-    NAME_FUNC_OFFSET(18684, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
-    NAME_FUNC_OFFSET(18702, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
-    NAME_FUNC_OFFSET(18723, glPointParameterfEXT, glPointParameterfEXT, NULL, _gloffset_PointParameterfEXT),
-    NAME_FUNC_OFFSET(18745, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
-    NAME_FUNC_OFFSET(18764, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
-    NAME_FUNC_OFFSET(18786, glPointParameterfvEXT, glPointParameterfvEXT, NULL, _gloffset_PointParameterfvEXT),
-    NAME_FUNC_OFFSET(18809, glSecondaryColor3bEXT, glSecondaryColor3bEXT, NULL, _gloffset_SecondaryColor3bEXT),
-    NAME_FUNC_OFFSET(18828, glSecondaryColor3bvEXT, glSecondaryColor3bvEXT, NULL, _gloffset_SecondaryColor3bvEXT),
-    NAME_FUNC_OFFSET(18848, glSecondaryColor3dEXT, glSecondaryColor3dEXT, NULL, _gloffset_SecondaryColor3dEXT),
-    NAME_FUNC_OFFSET(18867, glSecondaryColor3dvEXT, glSecondaryColor3dvEXT, NULL, _gloffset_SecondaryColor3dvEXT),
-    NAME_FUNC_OFFSET(18887, glSecondaryColor3fEXT, glSecondaryColor3fEXT, NULL, _gloffset_SecondaryColor3fEXT),
-    NAME_FUNC_OFFSET(18906, glSecondaryColor3fvEXT, glSecondaryColor3fvEXT, NULL, _gloffset_SecondaryColor3fvEXT),
-    NAME_FUNC_OFFSET(18926, glSecondaryColor3iEXT, glSecondaryColor3iEXT, NULL, _gloffset_SecondaryColor3iEXT),
-    NAME_FUNC_OFFSET(18945, glSecondaryColor3ivEXT, glSecondaryColor3ivEXT, NULL, _gloffset_SecondaryColor3ivEXT),
-    NAME_FUNC_OFFSET(18965, glSecondaryColor3sEXT, glSecondaryColor3sEXT, NULL, _gloffset_SecondaryColor3sEXT),
-    NAME_FUNC_OFFSET(18984, glSecondaryColor3svEXT, glSecondaryColor3svEXT, NULL, _gloffset_SecondaryColor3svEXT),
-    NAME_FUNC_OFFSET(19004, glSecondaryColor3ubEXT, glSecondaryColor3ubEXT, NULL, _gloffset_SecondaryColor3ubEXT),
-    NAME_FUNC_OFFSET(19024, glSecondaryColor3ubvEXT, glSecondaryColor3ubvEXT, NULL, _gloffset_SecondaryColor3ubvEXT),
-    NAME_FUNC_OFFSET(19045, glSecondaryColor3uiEXT, glSecondaryColor3uiEXT, NULL, _gloffset_SecondaryColor3uiEXT),
-    NAME_FUNC_OFFSET(19065, glSecondaryColor3uivEXT, glSecondaryColor3uivEXT, NULL, _gloffset_SecondaryColor3uivEXT),
-    NAME_FUNC_OFFSET(19086, glSecondaryColor3usEXT, glSecondaryColor3usEXT, NULL, _gloffset_SecondaryColor3usEXT),
-    NAME_FUNC_OFFSET(19106, glSecondaryColor3usvEXT, glSecondaryColor3usvEXT, NULL, _gloffset_SecondaryColor3usvEXT),
-    NAME_FUNC_OFFSET(19127, glSecondaryColorPointerEXT, glSecondaryColorPointerEXT, NULL, _gloffset_SecondaryColorPointerEXT),
-    NAME_FUNC_OFFSET(19151, glMultiDrawArraysEXT, glMultiDrawArraysEXT, NULL, _gloffset_MultiDrawArraysEXT),
-    NAME_FUNC_OFFSET(19169, glMultiDrawElementsEXT, glMultiDrawElementsEXT, NULL, _gloffset_MultiDrawElementsEXT),
-    NAME_FUNC_OFFSET(19189, glFogCoordPointerEXT, glFogCoordPointerEXT, NULL, _gloffset_FogCoordPointerEXT),
-    NAME_FUNC_OFFSET(19207, glFogCoorddEXT, glFogCoorddEXT, NULL, _gloffset_FogCoorddEXT),
-    NAME_FUNC_OFFSET(19219, glFogCoorddvEXT, glFogCoorddvEXT, NULL, _gloffset_FogCoorddvEXT),
-    NAME_FUNC_OFFSET(19232, glFogCoordfEXT, glFogCoordfEXT, NULL, _gloffset_FogCoordfEXT),
-    NAME_FUNC_OFFSET(19244, glFogCoordfvEXT, glFogCoordfvEXT, NULL, _gloffset_FogCoordfvEXT),
-    NAME_FUNC_OFFSET(19257, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
-    NAME_FUNC_OFFSET(19277, glBlendFuncSeparateEXT, glBlendFuncSeparateEXT, NULL, _gloffset_BlendFuncSeparateEXT),
-    NAME_FUNC_OFFSET(19301, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
-    NAME_FUNC_OFFSET(19315, glWindowPos2dMESA, glWindowPos2dMESA, NULL, _gloffset_WindowPos2dMESA),
-    NAME_FUNC_OFFSET(19332, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
-    NAME_FUNC_OFFSET(19347, glWindowPos2dvMESA, glWindowPos2dvMESA, NULL, _gloffset_WindowPos2dvMESA),
-    NAME_FUNC_OFFSET(19365, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
-    NAME_FUNC_OFFSET(19379, glWindowPos2fMESA, glWindowPos2fMESA, NULL, _gloffset_WindowPos2fMESA),
-    NAME_FUNC_OFFSET(19396, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
-    NAME_FUNC_OFFSET(19411, glWindowPos2fvMESA, glWindowPos2fvMESA, NULL, _gloffset_WindowPos2fvMESA),
-    NAME_FUNC_OFFSET(19429, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
-    NAME_FUNC_OFFSET(19443, glWindowPos2iMESA, glWindowPos2iMESA, NULL, _gloffset_WindowPos2iMESA),
-    NAME_FUNC_OFFSET(19460, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
-    NAME_FUNC_OFFSET(19475, glWindowPos2ivMESA, glWindowPos2ivMESA, NULL, _gloffset_WindowPos2ivMESA),
-    NAME_FUNC_OFFSET(19493, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
-    NAME_FUNC_OFFSET(19507, glWindowPos2sMESA, glWindowPos2sMESA, NULL, _gloffset_WindowPos2sMESA),
-    NAME_FUNC_OFFSET(19524, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
-    NAME_FUNC_OFFSET(19539, glWindowPos2svMESA, glWindowPos2svMESA, NULL, _gloffset_WindowPos2svMESA),
-    NAME_FUNC_OFFSET(19557, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
-    NAME_FUNC_OFFSET(19571, glWindowPos3dMESA, glWindowPos3dMESA, NULL, _gloffset_WindowPos3dMESA),
-    NAME_FUNC_OFFSET(19588, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
-    NAME_FUNC_OFFSET(19603, glWindowPos3dvMESA, glWindowPos3dvMESA, NULL, _gloffset_WindowPos3dvMESA),
-    NAME_FUNC_OFFSET(19621, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
-    NAME_FUNC_OFFSET(19635, glWindowPos3fMESA, glWindowPos3fMESA, NULL, _gloffset_WindowPos3fMESA),
-    NAME_FUNC_OFFSET(19652, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
-    NAME_FUNC_OFFSET(19667, glWindowPos3fvMESA, glWindowPos3fvMESA, NULL, _gloffset_WindowPos3fvMESA),
-    NAME_FUNC_OFFSET(19685, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
-    NAME_FUNC_OFFSET(19699, glWindowPos3iMESA, glWindowPos3iMESA, NULL, _gloffset_WindowPos3iMESA),
-    NAME_FUNC_OFFSET(19716, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
-    NAME_FUNC_OFFSET(19731, glWindowPos3ivMESA, glWindowPos3ivMESA, NULL, _gloffset_WindowPos3ivMESA),
-    NAME_FUNC_OFFSET(19749, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
-    NAME_FUNC_OFFSET(19763, glWindowPos3sMESA, glWindowPos3sMESA, NULL, _gloffset_WindowPos3sMESA),
-    NAME_FUNC_OFFSET(19780, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
-    NAME_FUNC_OFFSET(19795, glWindowPos3svMESA, glWindowPos3svMESA, NULL, _gloffset_WindowPos3svMESA),
-    NAME_FUNC_OFFSET(19813, glBindProgramNV, glBindProgramNV, NULL, _gloffset_BindProgramNV),
-    NAME_FUNC_OFFSET(19830, glDeleteProgramsNV, glDeleteProgramsNV, NULL, _gloffset_DeleteProgramsNV),
-    NAME_FUNC_OFFSET(19850, glGenProgramsNV, glGenProgramsNV, NULL, _gloffset_GenProgramsNV),
-    NAME_FUNC_OFFSET(19867, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
-    NAME_FUNC_OFFSET(19893, glGetVertexAttribPointervNV, glGetVertexAttribPointervNV, NULL, _gloffset_GetVertexAttribPointervNV),
-    NAME_FUNC_OFFSET(19922, glIsProgramNV, glIsProgramNV, NULL, _gloffset_IsProgramNV),
-    NAME_FUNC_OFFSET(19937, glPointParameteriNV, glPointParameteriNV, NULL, _gloffset_PointParameteriNV),
-    NAME_FUNC_OFFSET(19955, glPointParameterivNV, glPointParameterivNV, NULL, _gloffset_PointParameterivNV),
-    NAME_FUNC_OFFSET(19974, gl_dispatch_stub_757, gl_dispatch_stub_757, NULL, _gloffset_DeleteVertexArraysAPPLE),
-    NAME_FUNC_OFFSET(19995, gl_dispatch_stub_759, gl_dispatch_stub_759, NULL, _gloffset_IsVertexArrayAPPLE),
-    NAME_FUNC_OFFSET(20011, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlendEquationSeparateEXT),
-    NAME_FUNC_OFFSET(20035, gl_dispatch_stub_767, gl_dispatch_stub_767, NULL, _gloffset_BlendEquationSeparateEXT),
-    NAME_FUNC_OFFSET(20062, glBindFramebufferEXT, glBindFramebufferEXT, NULL, _gloffset_BindFramebufferEXT),
-    NAME_FUNC_OFFSET(20080, glBindRenderbufferEXT, glBindRenderbufferEXT, NULL, _gloffset_BindRenderbufferEXT),
-    NAME_FUNC_OFFSET(20099, glCheckFramebufferStatusEXT, glCheckFramebufferStatusEXT, NULL, _gloffset_CheckFramebufferStatusEXT),
-    NAME_FUNC_OFFSET(20124, glDeleteFramebuffersEXT, glDeleteFramebuffersEXT, NULL, _gloffset_DeleteFramebuffersEXT),
-    NAME_FUNC_OFFSET(20145, glDeleteRenderbuffersEXT, glDeleteRenderbuffersEXT, NULL, _gloffset_DeleteRenderbuffersEXT),
-    NAME_FUNC_OFFSET(20167, glFramebufferRenderbufferEXT, glFramebufferRenderbufferEXT, NULL, _gloffset_FramebufferRenderbufferEXT),
-    NAME_FUNC_OFFSET(20193, glFramebufferTexture1DEXT, glFramebufferTexture1DEXT, NULL, _gloffset_FramebufferTexture1DEXT),
-    NAME_FUNC_OFFSET(20216, glFramebufferTexture2DEXT, glFramebufferTexture2DEXT, NULL, _gloffset_FramebufferTexture2DEXT),
-    NAME_FUNC_OFFSET(20239, glFramebufferTexture3DEXT, glFramebufferTexture3DEXT, NULL, _gloffset_FramebufferTexture3DEXT),
-    NAME_FUNC_OFFSET(20262, glGenFramebuffersEXT, glGenFramebuffersEXT, NULL, _gloffset_GenFramebuffersEXT),
-    NAME_FUNC_OFFSET(20280, glGenRenderbuffersEXT, glGenRenderbuffersEXT, NULL, _gloffset_GenRenderbuffersEXT),
-    NAME_FUNC_OFFSET(20299, glGenerateMipmapEXT, glGenerateMipmapEXT, NULL, _gloffset_GenerateMipmapEXT),
-    NAME_FUNC_OFFSET(20316, glGetFramebufferAttachmentParameterivEXT, glGetFramebufferAttachmentParameterivEXT, NULL, _gloffset_GetFramebufferAttachmentParameterivEXT),
-    NAME_FUNC_OFFSET(20354, glGetRenderbufferParameterivEXT, glGetRenderbufferParameterivEXT, NULL, _gloffset_GetRenderbufferParameterivEXT),
-    NAME_FUNC_OFFSET(20383, glIsFramebufferEXT, glIsFramebufferEXT, NULL, _gloffset_IsFramebufferEXT),
-    NAME_FUNC_OFFSET(20399, glIsRenderbufferEXT, glIsRenderbufferEXT, NULL, _gloffset_IsRenderbufferEXT),
-    NAME_FUNC_OFFSET(20416, glRenderbufferStorageEXT, glRenderbufferStorageEXT, NULL, _gloffset_RenderbufferStorageEXT),
-    NAME_FUNC_OFFSET(20438, gl_dispatch_stub_785, gl_dispatch_stub_785, NULL, _gloffset_BlitFramebufferEXT),
-    NAME_FUNC_OFFSET(20456, glFramebufferTextureLayerEXT, glFramebufferTextureLayerEXT, NULL, _gloffset_FramebufferTextureLayerEXT),
-    NAME_FUNC_OFFSET(20482, glBeginTransformFeedbackEXT, glBeginTransformFeedbackEXT, NULL, _gloffset_BeginTransformFeedbackEXT),
-    NAME_FUNC_OFFSET(20507, glBindBufferBaseEXT, glBindBufferBaseEXT, NULL, _gloffset_BindBufferBaseEXT),
-    NAME_FUNC_OFFSET(20524, glBindBufferRangeEXT, glBindBufferRangeEXT, NULL, _gloffset_BindBufferRangeEXT),
-    NAME_FUNC_OFFSET(20542, glEndTransformFeedbackEXT, glEndTransformFeedbackEXT, NULL, _gloffset_EndTransformFeedbackEXT),
-    NAME_FUNC_OFFSET(20565, glGetTransformFeedbackVaryingEXT, glGetTransformFeedbackVaryingEXT, NULL, _gloffset_GetTransformFeedbackVaryingEXT),
-    NAME_FUNC_OFFSET(20595, glTransformFeedbackVaryingsEXT, glTransformFeedbackVaryingsEXT, NULL, _gloffset_TransformFeedbackVaryingsEXT),
-    NAME_FUNC_OFFSET(20623, glProvokingVertexEXT, glProvokingVertexEXT, NULL, _gloffset_ProvokingVertexEXT),
-    NAME_FUNC_OFFSET(-1, NULL, NULL, NULL, 0)
-};
-
-#undef NAME_FUNC_OFFSET
diff --git a/src/mesa/glapi/glthread.c b/src/mesa/glapi/glthread.c
deleted file mode 100644 (file)
index f365d17..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5.1
- *
- * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/*
- * XXX There's probably some work to do in order to make this file
- * truly reusable outside of Mesa.  First, the glheader.h include must go.
- */
-
-#ifdef HAVE_DIX_CONFIG_H
-#include <dix-config.h>
-#include "glapi/mesa.h"
-#else
-#include "main/compiler.h"
-#endif
-
-#include "glapi/glthread.h"
-
-
-/*
- * This file should still compile even when THREADS is not defined.
- * This is to make things easier to deal with on the makefile scene..
- */
-#ifdef THREADS
-#include <errno.h>
-
-/*
- * Error messages
- */
-#define INIT_TSD_ERROR "_glthread_: failed to allocate key for thread specific data"
-#define GET_TSD_ERROR "_glthread_: failed to get thread specific data"
-#define SET_TSD_ERROR "_glthread_: thread failed to set thread specific data"
-
-
-/*
- * Magic number to determine if a TSD object has been initialized.
- * Kind of a hack but there doesn't appear to be a better cross-platform
- * solution.
- */
-#define INIT_MAGIC 0xff8adc98
-
-
-
-/*
- * POSIX Threads -- The best way to go if your platform supports them.
- *                  Solaris >= 2.5 have POSIX threads, IRIX >= 6.4 reportedly
- *                  has them, and many of the free Unixes now have them.
- *                  Be sure to use appropriate -mt or -D_REENTRANT type
- *                  compile flags when building.
- */
-#ifdef PTHREADS
-
-PUBLIC unsigned long
-_glthread_GetID(void)
-{
-   return (unsigned long) pthread_self();
-}
-
-
-void
-_glthread_InitTSD(_glthread_TSD *tsd)
-{
-   if (pthread_key_create(&tsd->key, NULL/*free*/) != 0) {
-      perror(INIT_TSD_ERROR);
-      exit(-1);
-   }
-   tsd->initMagic = INIT_MAGIC;
-}
-
-
-void *
-_glthread_GetTSD(_glthread_TSD *tsd)
-{
-   if (tsd->initMagic != (int) INIT_MAGIC) {
-      _glthread_InitTSD(tsd);
-   }
-   return pthread_getspecific(tsd->key);
-}
-
-
-void
-_glthread_SetTSD(_glthread_TSD *tsd, void *ptr)
-{
-   if (tsd->initMagic != (int) INIT_MAGIC) {
-      _glthread_InitTSD(tsd);
-   }
-   if (pthread_setspecific(tsd->key, ptr) != 0) {
-      perror(SET_TSD_ERROR);
-      exit(-1);
-   }
-}
-
-#endif /* PTHREADS */
-
-
-
-/*
- * Win32 Threads.  The only available option for Windows 95/NT.
- * Be sure that you compile using the Multithreaded runtime, otherwise
- * bad things will happen.
- */
-#ifdef WIN32_THREADS
-
-static void InsteadOf_exit(int nCode)
-{
-   DWORD dwErr = GetLastError();
-}
-
-PUBLIC unsigned long
-_glthread_GetID(void)
-{
-   return GetCurrentThreadId();
-}
-
-
-void
-_glthread_InitTSD(_glthread_TSD *tsd)
-{
-   tsd->key = TlsAlloc();
-   if (tsd->key == TLS_OUT_OF_INDEXES) {
-      perror(INIT_TSD_ERROR);
-      InsteadOf_exit(-1);
-   }
-   tsd->initMagic = INIT_MAGIC;
-}
-
-
-void
-_glthread_DestroyTSD(_glthread_TSD *tsd)
-{
-   if (tsd->initMagic != INIT_MAGIC) {
-      return;
-   }
-   TlsFree(tsd->key);
-   tsd->initMagic = 0x0;
-}
-
-
-void *
-_glthread_GetTSD(_glthread_TSD *tsd)
-{
-   if (tsd->initMagic != INIT_MAGIC) {
-      _glthread_InitTSD(tsd);
-   }
-   return TlsGetValue(tsd->key);
-}
-
-
-void
-_glthread_SetTSD(_glthread_TSD *tsd, void *ptr)
-{
-   /* the following code assumes that the _glthread_TSD has been initialized
-      to zero at creation */
-   if (tsd->initMagic != INIT_MAGIC) {
-      _glthread_InitTSD(tsd);
-   }
-   if (TlsSetValue(tsd->key, ptr) == 0) {
-      perror(SET_TSD_ERROR);
-      InsteadOf_exit(-1);
-   }
-}
-
-#endif /* WIN32_THREADS */
-
-/*
- * BeOS threads
- */
-#ifdef BEOS_THREADS
-
-PUBLIC unsigned long
-_glthread_GetID(void)
-{
-   return (unsigned long) find_thread(NULL);
-}
-
-void
-_glthread_InitTSD(_glthread_TSD *tsd)
-{
-   tsd->key = tls_allocate();
-   tsd->initMagic = INIT_MAGIC;
-}
-
-void *
-_glthread_GetTSD(_glthread_TSD *tsd)
-{
-   if (tsd->initMagic != (int) INIT_MAGIC) {
-      _glthread_InitTSD(tsd);
-   }
-   return tls_get(tsd->key);
-}
-
-void
-_glthread_SetTSD(_glthread_TSD *tsd, void *ptr)
-{
-   if (tsd->initMagic != (int) INIT_MAGIC) {
-      _glthread_InitTSD(tsd);
-   }
-   tls_set(tsd->key, ptr);
-}
-
-#endif /* BEOS_THREADS */
-
-
-
-#else  /* THREADS */
-
-
-/*
- * no-op functions
- */
-
-PUBLIC unsigned long
-_glthread_GetID(void)
-{
-   return 0;
-}
-
-
-void
-_glthread_InitTSD(_glthread_TSD *tsd)
-{
-   (void) tsd;
-}
-
-
-void *
-_glthread_GetTSD(_glthread_TSD *tsd)
-{
-   (void) tsd;
-   return NULL;
-}
-
-
-void
-_glthread_SetTSD(_glthread_TSD *tsd, void *ptr)
-{
-   (void) tsd;
-   (void) ptr;
-}
-
-
-#endif /* THREADS */
diff --git a/src/mesa/glapi/glthread.h b/src/mesa/glapi/glthread.h
deleted file mode 100644 (file)
index 4fe9928..0000000
+++ /dev/null
@@ -1,255 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5.2
- *
- * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/*
- * Thread support for gl dispatch.
- *
- * Initial version by John Stone (j.stone@acm.org) (johns@cs.umr.edu)
- *                and Christoph Poliwoda (poliwoda@volumegraphics.com)
- * Revised by Keith Whitwell
- * Adapted for new gl dispatcher by Brian Paul
- *
- *
- *
- * DOCUMENTATION
- *
- * This thread module exports the following types:
- *   _glthread_TSD     Thread-specific data area
- *   _glthread_Thread  Thread datatype
- *   _glthread_Mutex   Mutual exclusion lock
- *
- * Macros:
- *   _glthread_DECLARE_STATIC_MUTEX(name)   Declare a non-local mutex
- *   _glthread_INIT_MUTEX(name)             Initialize a mutex
- *   _glthread_LOCK_MUTEX(name)             Lock a mutex
- *   _glthread_UNLOCK_MUTEX(name)           Unlock a mutex
- *
- * Functions:
- *   _glthread_GetID(v)      Get integer thread ID
- *   _glthread_InitTSD()     Initialize thread-specific data
- *   _glthread_GetTSD()      Get thread-specific data
- *   _glthread_SetTSD()      Set thread-specific data
- *
- */
-
-/*
- * If this file is accidentally included by a non-threaded build,
- * it should not cause the build to fail, or otherwise cause problems.
- * In general, it should only be included when needed however.
- */
-
-#ifndef GLTHREAD_H
-#define GLTHREAD_H
-
-
-#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)
-#ifndef THREADS
-#define THREADS
-#endif
-#endif
-
-
-/*
- * POSIX threads. This should be your choice in the Unix world
- * whenever possible.  When building with POSIX threads, be sure
- * to enable any compiler flags which will cause the MT-safe
- * libc (if one exists) to be used when linking, as well as any
- * header macros for MT-safe errno, etc.  For Solaris, this is the -mt
- * compiler flag.  On Solaris with gcc, use -D_REENTRANT to enable
- * proper compiling for MT-safe libc etc.
- */
-#if defined(PTHREADS)
-#include <pthread.h> /* POSIX threads headers */
-
-typedef struct {
-   pthread_key_t  key;
-   int initMagic;
-} _glthread_TSD;
-
-typedef pthread_t _glthread_Thread;
-
-typedef pthread_mutex_t _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name) \
-   static _glthread_Mutex name = PTHREAD_MUTEX_INITIALIZER
-
-#define _glthread_INIT_MUTEX(name) \
-   pthread_mutex_init(&(name), NULL)
-
-#define _glthread_DESTROY_MUTEX(name) \
-   pthread_mutex_destroy(&(name))
-
-#define _glthread_LOCK_MUTEX(name) \
-   (void) pthread_mutex_lock(&(name))
-
-#define _glthread_UNLOCK_MUTEX(name) \
-   (void) pthread_mutex_unlock(&(name))
-
-#endif /* PTHREADS */
-
-
-/*
- * Windows threads. Should work with Windows NT and 95.
- * IMPORTANT: Link with multithreaded runtime library when THREADS are
- * used!
- */
-#ifdef WIN32_THREADS
-#include <windows.h>
-
-typedef struct {
-   DWORD key;
-   int   initMagic;
-} _glthread_TSD;
-
-typedef HANDLE _glthread_Thread;
-
-typedef CRITICAL_SECTION _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name) \
-   /* static */ _glthread_Mutex name = { 0, 0, 0, 0, 0, 0 }
-
-#define _glthread_INIT_MUTEX(name) \
-   InitializeCriticalSection(&name)
-
-#define _glthread_DESTROY_MUTEX(name) \
-   DeleteCriticalSection(&name)
-
-#define _glthread_LOCK_MUTEX(name) \
-   EnterCriticalSection(&name)
-
-#define _glthread_UNLOCK_MUTEX(name) \
-   LeaveCriticalSection(&name)
-
-#endif /* WIN32_THREADS */
-
-
-/*
- * BeOS threads. R5.x required.
- */
-#ifdef BEOS_THREADS
-
-/* Problem with OS.h and this file on haiku */
-#ifndef __HAIKU__
-#include <kernel/OS.h>
-#endif
-
-#include <support/TLS.h>
-
-/* The only two typedefs required here
- * this is cause of the OS.h problem
- */
-#ifdef __HAIKU__
-typedef int32 thread_id;
-typedef int32 sem_id;
-#endif
-
-typedef struct {
-   int32        key;
-   int          initMagic;
-} _glthread_TSD;
-
-typedef thread_id _glthread_Thread;
-
-/* Use Benaphore, aka speeder semaphore */
-typedef struct {
-    int32   lock;
-    sem_id  sem;
-} benaphore;
-typedef benaphore _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name) \
-   static _glthread_Mutex name = { 0, 0 }
-
-#define _glthread_INIT_MUTEX(name) \
-   name.sem = create_sem(0, #name"_benaphore"), \
-   name.lock = 0
-
-#define _glthread_DESTROY_MUTEX(name) \
-   delete_sem(name.sem), \
-   name.lock = 0
-
-#define _glthread_LOCK_MUTEX(name) \
-   if (name.sem == 0) \
-      _glthread_INIT_MUTEX(name); \
-   if (atomic_add(&(name.lock), 1) >= 1) \
-      acquire_sem(name.sem)
-
-#define _glthread_UNLOCK_MUTEX(name) \
-   if (atomic_add(&(name.lock), -1) > 1) \
-      release_sem(name.sem)
-
-#endif /* BEOS_THREADS */
-
-
-/*
- * THREADS not defined
- */
-#ifndef THREADS
-
-typedef unsigned _glthread_TSD;
-
-typedef unsigned _glthread_Thread;
-
-typedef unsigned _glthread_Mutex;
-
-#define _glthread_DECLARE_STATIC_MUTEX(name)  static _glthread_Mutex name = 0
-
-#define _glthread_INIT_MUTEX(name)  (void) name
-
-#define _glthread_DESTROY_MUTEX(name)  (void) name
-
-#define _glthread_LOCK_MUTEX(name)  (void) name
-
-#define _glthread_UNLOCK_MUTEX(name)  (void) name
-
-#endif /* THREADS */
-
-
-
-/*
- * Platform independent thread specific data API.
- */
-
-extern unsigned long
-_glthread_GetID(void);
-
-
-extern void
-_glthread_InitTSD(_glthread_TSD *);
-
-
-extern void
-_glthread_DestroyTSD(_glthread_TSD *); /* WIN32 only */
-
-
-extern void *
-_glthread_GetTSD(_glthread_TSD *);
-
-
-extern void
-_glthread_SetTSD(_glthread_TSD *, void *);
-
-
-#endif /* THREADS_H */
diff --git a/src/mesa/glesv1_cm.pc.in b/src/mesa/glesv1_cm.pc.in
deleted file mode 100644 (file)
index e9c2222..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@INSTALL_DIR@
-exec_prefix=${prefix}
-libdir=@INSTALL_LIB_DIR@
-includedir=@INSTALL_INC_DIR@
-
-Name: glesv1_cm
-Description: Mesa OpenGL ES 1.0 CM library
-Requires.private: @GLESv1_CM_REQ_PRIV@
-Version: @VERSION@
-Libs: -L${libdir} -l@GLESv1_CM_LIB@
-Libs.private: @GLESv1_CM_PC_LIB_PRIV@
-Cflags: -I${includedir} @GLESv1_CM_PC_CFLAGS@
diff --git a/src/mesa/glesv2.pc.in b/src/mesa/glesv2.pc.in
deleted file mode 100644 (file)
index 3b747cb..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-prefix=@INSTALL_DIR@
-exec_prefix=${prefix}
-libdir=@INSTALL_LIB_DIR@
-includedir=@INSTALL_INC_DIR@
-
-Name: glesv2
-Description: Mesa OpenGL ES 2.0 library
-Requires.private: @GLESv2_PC_REQ_PRIV@
-Version: @VERSION@
-Libs: -L${libdir} -l@GLESv2_LIB@
-Libs.private: @GLESv2_PC_LIB_PRIV@
-Cflags: -I${includedir} @GLESv2_PC_CFLAGS@
diff --git a/src/mesa/main/.gitignore b/src/mesa/main/.gitignore
new file mode 100644 (file)
index 0000000..391c334
--- /dev/null
@@ -0,0 +1,4 @@
+api_exec_es1.c
+api_exec_es2.c
+get_es1.c
+get_es2.c
index 268bd5d3db2f7544e189e682a48fdd9dc7752ca3..b4ed18e75e8f0f253a72df4ab900ad23810cfad0 100644 (file)
        <function name="PixelStorei" template="PixelStore" gltype="GLint"/>
        <function name="ReadPixels" template="ReadPixels"/>
 
-       <function name="GetBooleanv" default_prefix="_es1_" template="GetState" gltype="GLboolean"/>
+       <function name="GetBooleanv" template="GetState" gltype="GLboolean"/>
 
        <function name="GetClipPlanef" template="GetClipPlane" gltype="GLfloat"/>
        <function name="GetClipPlanex" template="GetClipPlane" gltype="GLfixed"/>
 
        <function name="GetError" template="GetError"/>
-       <function name="GetFloatv" default_prefix="_es1_" template="GetState" gltype="GLfloat"/>
-       <function name="GetFixedv" default_prefix="_es1_" template="GetState" gltype="GLfixed"/>
-       <function name="GetIntegerv" default_prefix="_es1_" template="GetState" gltype="GLint"/>
+       <function name="GetFloatv" template="GetState" gltype="GLfloat"/>
+       <function name="GetFixedv" template="GetState" gltype="GLfixed"/>
+       <function name="GetIntegerv" template="GetState" gltype="GLint"/>
 
        <function name="GetLightfv" template="GetLight" gltype="GLfloat"/>
        <function name="GetLightxv" template="GetLight" gltype="GLfixed"/>
        <function name="PixelStorei" template="PixelStore" gltype="GLint"/>
        <function name="ReadPixels" template="ReadPixels"/>
 
-       <function name="GetBooleanv" default_prefix="_es2_" template="GetState" gltype="GLboolean"/>
+       <function name="GetBooleanv" template="GetState" gltype="GLboolean"/>
        <function name="GetError" template="GetError"/>
-       <function name="GetFloatv" default_prefix="_es2_" template="GetState" gltype="GLfloat"/>
-       <function name="GetIntegerv" default_prefix="_es2_" template="GetState" gltype="GLint"/>
+       <function name="GetFloatv" template="GetState" gltype="GLfloat"/>
+       <function name="GetIntegerv" template="GetState" gltype="GLint"/>
 
        <function name="GetString" template="GetString"/>
 
index f838561aef3b9d6d9d96a92cba6b9d8ddbf66a09..7bd6e328132d0b2bd46007f490af5606b2980782 100644 (file)
@@ -36,9 +36,7 @@
 #if FEATURE_ARB_vertex_program || FEATURE_ARB_fragment_program
 #include "shader/arbprogram.h"
 #endif
-#if FEATURE_ATI_fragment_shader
 #include "shader/atifragshader.h"
-#endif
 #include "attrib.h"
 #include "blend.h"
 #if FEATURE_ARB_vertex_buffer_object
 #endif
 #include "main/dispatch.h"
 
+
+#if FEATURE_GL
+
+
 #ifdef _GLAPI_USE_REMAP_TABLE
 
 #define need_MESA_remap_table
@@ -523,15 +525,7 @@ _mesa_create_exec_table(void)
    SET_DepthBoundsEXT(exec, _mesa_DepthBoundsEXT);
 
    /* 352. GL_EXT_transform_feedback */
-#if _HAVE_FULL_GL
-   SET_BeginTransformFeedbackEXT(exec, _mesa_BeginTransformFeedback);
-   SET_EndTransformFeedbackEXT(exec, _mesa_EndTransformFeedback);
-   SET_BindBufferRangeEXT(exec, _mesa_BindBufferRange);
-   SET_BindBufferBaseEXT(exec, _mesa_BindBufferBase);
-   SET_BindBufferOffsetEXT(exec, _mesa_BindBufferOffsetEXT);
-   SET_TransformFeedbackVaryingsEXT(exec, _mesa_TransformFeedbackVaryings);
-   SET_GetTransformFeedbackVaryingEXT(exec, _mesa_GetTransformFeedbackVarying);
-#endif
+   _mesa_init_transform_feedback_dispatch(exec);
 
    /* 364. GL_EXT_provoking_vertex */
    SET_ProvokingVertexEXT(exec, _mesa_ProvokingVertexEXT);
@@ -719,22 +713,7 @@ _mesa_create_exec_table(void)
 #endif
 
   /* GL_ATI_fragment_shader */
-#if FEATURE_ATI_fragment_shader
-   SET_GenFragmentShadersATI(exec, _mesa_GenFragmentShadersATI);
-   SET_BindFragmentShaderATI(exec, _mesa_BindFragmentShaderATI);
-   SET_DeleteFragmentShaderATI(exec, _mesa_DeleteFragmentShaderATI);
-   SET_BeginFragmentShaderATI(exec, _mesa_BeginFragmentShaderATI);
-   SET_EndFragmentShaderATI(exec, _mesa_EndFragmentShaderATI);
-   SET_PassTexCoordATI(exec, _mesa_PassTexCoordATI);
-   SET_SampleMapATI(exec, _mesa_SampleMapATI);
-   SET_ColorFragmentOp1ATI(exec, _mesa_ColorFragmentOp1ATI);
-   SET_ColorFragmentOp2ATI(exec, _mesa_ColorFragmentOp2ATI);
-   SET_ColorFragmentOp3ATI(exec, _mesa_ColorFragmentOp3ATI);
-   SET_AlphaFragmentOp1ATI(exec, _mesa_AlphaFragmentOp1ATI);
-   SET_AlphaFragmentOp2ATI(exec, _mesa_AlphaFragmentOp2ATI);
-   SET_AlphaFragmentOp3ATI(exec, _mesa_AlphaFragmentOp3ATI);
-   SET_SetFragmentShaderConstantATI(exec, _mesa_SetFragmentShaderConstantATI);
-#endif
+   _mesa_init_ati_fragment_shader_dispatch(exec);
 
   /* GL_ATI_envmap_bumpmap */
    SET_GetTexBumpParameterivATI(exec, _mesa_GetTexBumpParameterivATI);
@@ -824,3 +803,5 @@ _mesa_create_exec_table(void)
 
    return exec;
 }
+
+#endif /* FEATURE_GL */
index 92fb8d289d1e7dca81c43fd8980f1e1effd9b148..002448fedb8805c5a9995a94732d2b03145f09d8 100644 (file)
@@ -46,7 +46,6 @@
 #include "points.h"
 #include "polygon.h"
 #include "scissor.h"
-#include "simple_list.h"
 #include "stencil.h"
 #include "texenv.h"
 #include "texgen.h"
index 81704ae2c1166cf1bb913bdd8f61837e0b087b04..efd8057608c00c32d1bc2288fe9a44cc1534785e 100644 (file)
@@ -200,6 +200,13 @@ extern "C" {
 #  define __builtin_expect(x, y) x
 #endif
 
+#ifdef __GNUC__
+#define likely(x) __builtin_expect(!!(x), 1)
+#define unlikely(x) __builtin_expect(!!(x), 0)
+#else
+#define likely(x) !!(x)
+#define unlikely(x) !!(x)
+#endif
 
 /**
  * The __FUNCTION__ gcc variable is generally only used for debugging.
index 4dd448a698d05c34c95a08072c540614c203a7bf..e140a21b35486a71f2f1b664d9395c8d95505ebf 100644 (file)
@@ -415,6 +415,7 @@ one_time_init( GLcontext *ctx )
       }
 
       _mesa_init_sqrt_table();
+      _mesa_init_get_hash(ctx);
 
       for (i = 0; i < 256; i++) {
          _mesa_ubyte_to_float_color_tab[i] = (float) i / 255.0F;
index c9f4d433a573569c6f476ee7f123370a06c0b9c2..c61da62826fb3dd2f750550d139a789deb9284f7 100644 (file)
@@ -153,6 +153,8 @@ _mesa_get_current_context(void);
 
 /*@}*/
 
+extern void
+_mesa_init_get_hash(GLcontext *ctx);
 
 extern void
 _mesa_notifySwapBuffers(__GLcontext *gc);
index 897051eec07cae68e97e2b95b02483bf03f99c83..53e44533cb3ddbdb0472c1d255cd91649d74e69a 100644 (file)
@@ -706,27 +706,6 @@ struct dd_function_table {
    /*@}*/
 
 
-   /** 
-    * \name State-query functions
-    *
-    * Return GL_TRUE if query was completed, GL_FALSE otherwise.
-    */
-   /*@{*/
-   /** Return the value or values of a selected parameter */
-   GLboolean (*GetBooleanv)(GLcontext *ctx, GLenum pname, GLboolean *result);
-   /** Return the value or values of a selected parameter */
-   GLboolean (*GetDoublev)(GLcontext *ctx, GLenum pname, GLdouble *result);
-   /** Return the value or values of a selected parameter */
-   GLboolean (*GetFloatv)(GLcontext *ctx, GLenum pname, GLfloat *result);
-   /** Return the value or values of a selected parameter */
-   GLboolean (*GetIntegerv)(GLcontext *ctx, GLenum pname, GLint *result);
-   /** Return the value or values of a selected parameter */
-   GLboolean (*GetInteger64v)(GLcontext *ctx, GLenum pname, GLint64 *result);
-   /** Return the value or values of a selected parameter */
-   GLboolean (*GetPointerv)(GLcontext *ctx, GLenum pname, GLvoid **result);
-   /*@}*/
-   
-
    /**
     * \name Vertex/pixel buffer object functions
     */
@@ -1059,6 +1038,22 @@ struct dd_function_table {
                                             void *image_handle);
 #endif
 
+#if FEATURE_EXT_transform_feedback
+   struct gl_transform_feedback_object *
+        (*NewTransformFeedback)(GLcontext *ctx, GLuint name);
+   void (*DeleteTransformFeedback)(GLcontext *ctx,
+                                   struct gl_transform_feedback_object *obj);
+   void (*BeginTransformFeedback)(GLcontext *ctx, GLenum mode,
+                                  struct gl_transform_feedback_object *obj);
+   void (*EndTransformFeedback)(GLcontext *ctx,
+                                struct gl_transform_feedback_object *obj);
+   void (*PauseTransformFeedback)(GLcontext *ctx,
+                                  struct gl_transform_feedback_object *obj);
+   void (*ResumeTransformFeedback)(GLcontext *ctx,
+                                   struct gl_transform_feedback_object *obj);
+   void (*DrawTransformFeedback)(GLcontext *ctx, GLenum mode,
+                                 struct gl_transform_feedback_object *obj);
+#endif
 };
 
 
index 658ac9e40cf87d6366c4aeb3ef54d3d98d0de400..57a33292ed169aba5105e83069a0f3ccf5b67ade 100644 (file)
@@ -67,22 +67,27 @@ _mesa_dlopen(const char *libname, int flags)
 GenericFunc
 _mesa_dlsym(void *handle, const char *fname)
 {
+   union {
+      void *v;
+      GenericFunc f;
+   } u;
 #if defined(__blrts)
-   return (GenericFunc) NULL;
+   u.v = NULL;
 #elif defined(__DJGPP__)
    /* need '_' prefix on symbol names */
    char fname2[1000];
    fname2[0] = '_';
    strncpy(fname2 + 1, fname, 998);
    fname2[999] = 0;
-   return (GenericFunc) dlsym(handle, fname2);
+   u.v = dlsym(handle, fname2);
 #elif defined(_GNU_SOURCE)
-   return (GenericFunc) dlsym(handle, fname);
+   u.v = dlsym(handle, fname);
 #elif defined(__MINGW32__)
-   return (GenericFunc) GetProcAddress(handle, fname);
+   u.v = (void *) GetProcAddress(handle, fname);
 #else
-   return (GenericFunc) NULL;
+   u.v = NULL;
 #endif
+   return u.f;
 }
 
 
index 86d5b555e0fab6356be400f412ebbd24700b997d..c2ad5f238629243283ae3525b76648ef9f6faeac 100644 (file)
@@ -25,8 +25,6 @@
 #include "main/state.h"
 #include "main/imports.h"
 
-#include "main/dispatch.h"
-
 
 #if FEATURE_OES_draw_texture
 
index 8f08a3a6f92394f0961868a875e3158f07de778a..a3e089ed58e4cc7c65784968f44850851b2312aa 100644 (file)
@@ -190,7 +190,10 @@ print """/* DO NOT EDIT *************************************************
 print """
 #include "%s"
 #include "%s"
-""" % (versionHeader, versionExtHeader)
+#include "main/mfeatures.h"
+
+#if FEATURE_%s
+""" % (versionHeader, versionExtHeader, shortname.upper())
 
 # Everyone needs these types.
 print """
@@ -211,19 +214,23 @@ extern void _mesa_error(void *ctx, GLenum error, const char *fmtString, ... );
 #include "main/api_exec.h"
 #include "main/remap.h"
 
+/* cannot include main/dispatch.h here */
 #ifdef IN_DRI_DRIVER
 #define _GLAPI_USE_REMAP_TABLE
 #endif
-
-#include "es/glapi/glapi-%s/glapi/glapitable.h"
-#include "es/glapi/glapi-%s/glapi/glapioffsets.h"
-#include "es/glapi/glapi-%s/glapi/glapidispatch.h"
+#include "%sapi/glapi/glapitable.h"
+#include "%sapi/glapi/glapioffsets.h"
+#include "%sapi/glapi/glapidispatch.h"
 
 #if FEATURE_remap_table
 
+#if !FEATURE_GL
+int driDispatchRemapTable[driDispatchRemapTable_size];
+#endif
+
 #define need_MESA_remap_table
 
-#include "es/glapi/glapi-%s/main/remap_helper.h"
+#include "%sapi/main/remap_helper.h"
 
 void
 _mesa_init_remap_table_%s(void)
@@ -728,3 +735,6 @@ for func in keys:
 print ""
 print "   return exec;"
 print "}"
+
+print """
+#endif /* FEATURE_%s */""" % (shortname.upper())
index 4c8d4ccfa22862785374fb982a8a98b80686c339..030ba607dad0474b47ede4c7f96d06bb7bcd21a4 100644 (file)
@@ -28,7 +28,6 @@
 #include "imports.h"
 #include "context.h"
 #include "extensions.h"
-#include "simple_list.h"
 #include "mtypes.h"
 
 
@@ -86,6 +85,7 @@ static const struct {
    { OFF, "GL_ARB_texture_non_power_of_two",   F(ARB_texture_non_power_of_two)},
    { OFF, "GL_ARB_texture_rectangle",          F(NV_texture_rectangle) },
    { ON,  "GL_ARB_transpose_matrix",           F(ARB_transpose_matrix) },
+   { OFF, "GL_ARB_transform_feedback2",        F(ARB_transform_feedback2) },
    { OFF, "GL_ARB_vertex_array_bgra",          F(EXT_vertex_array_bgra) },
    { OFF, "GL_ARB_vertex_array_object",        F(ARB_vertex_array_object) },
    { ON,  "GL_ARB_vertex_buffer_object",       F(ARB_vertex_buffer_object) },
index 201a023246411110b2c6967935cbc1a9232870c2..2376e7f1a54c28cfda1f2cbca94ec8b3efefc586 100644 (file)
@@ -887,6 +887,7 @@ _mesa_base_fbo_format(GLcontext *ctx, GLenum internalFormat)
    case GL_RGB10_A2:
    case GL_RGBA12:
    case GL_RGBA16:
+   case GL_RGBA16_SNORM:
       return GL_RGBA;
    case GL_STENCIL_INDEX:
    case GL_STENCIL_INDEX1_EXT:
index b9796e4a4236bc26ac44d6bdd03379dcc631d49d..3671140e85900234f246e366781d1f89a8d56073 100644 (file)
@@ -721,6 +721,15 @@ static struct gl_format_info format_info[MESA_FORMAT_COUNT] =
       16, 16, 16, 16,
       0, 0, 0, 0, 0,
       1, 1, 8
+   },
+   {
+      MESA_FORMAT_RGBA_16,
+      "MESA_FORMAT_RGBA_16",
+      GL_RGBA,
+      GL_UNSIGNED_NORMALIZED,
+      16, 16, 16, 16,
+      0, 0, 0, 0, 0,
+      1, 1, 8
    }
 };
 
@@ -1125,6 +1134,19 @@ _mesa_format_to_type_and_comps(gl_format format,
       *datatype = GL_BYTE;
       *comps = 4;
       return;
+
+   case MESA_FORMAT_SIGNED_R_16:
+      *datatype = GL_SHORT;
+      *comps = 1;
+      return;
+   case MESA_FORMAT_SIGNED_RG_16:
+      *datatype = GL_SHORT;
+      *comps = 2;
+      return;
+   case MESA_FORMAT_SIGNED_RGB_16:
+      *datatype = GL_SHORT;
+      *comps = 3;
+      return;
    case MESA_FORMAT_SIGNED_RGBA_16:
       *datatype = GL_SHORT;
       *comps = 4;
index 97e1fc5df465a070752ff488a3a44474f49f13cb..c744688122f1fb010d105c813a1b4738f8312fde 100644 (file)
@@ -142,10 +142,11 @@ typedef enum
    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,
+   MESA_FORMAT_SIGNED_R_16,       /* ushort[0]=R */
+   MESA_FORMAT_SIGNED_RG_16,      /* ushort[0]=R, ushort[1]=G */
+   MESA_FORMAT_SIGNED_RGB_16,     /* ushort[0]=R, ushort[1]=G, ushort[2]=B */
+   MESA_FORMAT_SIGNED_RGBA_16,    /* ... */
+   MESA_FORMAT_RGBA_16,           /* ... */
    /*@}*/
 
    MESA_FORMAT_COUNT
index e3015cd6033f244111568b5c05f33545bbf780ed..12d046b0754bbea29226c333b5f5196ed0e72e4d 100644 (file)
@@ -1,11 +1,31 @@
-
-/***
- ***  NOTE!!!  DO NOT EDIT THIS FILE!!!  IT IS GENERATED BY get_gen.py
- ***/
+/*
+ * Copyright (C) 2010  Brian Paul   All Rights Reserved.
+ * Copyright (C) 2010  Intel Corporation
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the "Software"),
+ * to deal in the Software without restriction, including without limitation
+ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
+ * and/or sell copies of the Software, and to permit persons to whom the
+ * Software is furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included
+ * in all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
+ * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
+ * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+ *
+ * Author: Kristian Høgsberg <krh@bitplanet.net>
+ */
 
 #include "glheader.h"
 #include "context.h"
 #include "enable.h"
+#include "enums.h"
 #include "extensions.h"
 #include "get.h"
 #include "macros.h"
 #include "texcompress.h"
 #include "framebuffer.h"
 
+/* This is a table driven implemetation of the glGet*v() functions.
+ * The basic idea is that most getters just look up an int somewhere
+ * in GLcontext and then convert it to a bool or float according to
+ * which of glGetIntegerv() glGetBooleanv() etc is being called.
+ * Instead of generating code to do this, we can just record the enum
+ * value and the offset into GLcontext in an array of structs.  Then
+ * in glGet*(), we lookup the struct for the enum in question, and use
+ * the offset to get the int we need.
+ *
+ * Sometimes we need to look up a float, a boolean, a bit in a
+ * bitfield, a matrix or other types instead, so we need to track the
+ * type of the value in GLcontext.  And sometimes the value isn't in
+ * GLcontext but in the drawbuffer, the array object, current texture
+ * unit, or maybe it's a computed value.  So we need to also track
+ * where or how to find the value.  Finally, we sometimes need to
+ * check that one of a number of extensions are enabled, the GL
+ * version or flush or call _mesa_update_state().  This is done by
+ * attaching optional extra information to the value description
+ * struct, it's sort of like an array of opcodes that describe extra
+ * checks or actions.
+ *
+ * Putting all this together we end up with struct value_desc below,
+ * and with a couple of macros to help, the table of struct value_desc
+ * is about as concise as the specification in the old python script.
+ */
+
+#undef CONST
 
 #define FLOAT_TO_BOOLEAN(X)   ( (X) ? GL_TRUE : GL_FALSE )
+#define FLOAT_TO_FIXED(F)     ( ((F) * 65536.0f > INT_MAX) ? INT_MAX : \
+                                ((F) * 65536.0f < INT_MIN) ? INT_MIN : \
+                                (GLint) ((F) * 65536.0f) )
 
 #define INT_TO_BOOLEAN(I)     ( (I) ? GL_TRUE : GL_FALSE )
+#define INT_TO_FIXED(I)       ( ((I) > SHRT_MAX) ? INT_MAX : \
+                                ((I) < SHRT_MIN) ? INT_MIN : \
+                                (GLint) ((I) * 65536) )
 
 #define INT64_TO_BOOLEAN(I)   ( (I) ? GL_TRUE : GL_FALSE )
 #define INT64_TO_INT(I)       ( (GLint)((I > INT_MAX) ? INT_MAX : ((I < INT_MIN) ? INT_MIN : (I))) )
 #define BOOLEAN_TO_INT(B)     ( (GLint) (B) )
 #define BOOLEAN_TO_INT64(B)   ( (GLint64) (B) )
 #define BOOLEAN_TO_FLOAT(B)   ( (B) ? 1.0F : 0.0F )
+#define BOOLEAN_TO_FIXED(B)   ( (GLint) ((B) ? 1 : 0) << 16 )
 
 #define ENUM_TO_INT64(E)      ( (GLint64) (E) )
+#define ENUM_TO_FIXED(E)      (E)
 
+enum value_type {
+   TYPE_INVALID,
+   TYPE_API_MASK,
+   TYPE_INT,
+   TYPE_INT_2,
+   TYPE_INT_3,
+   TYPE_INT_4,
+   TYPE_INT_N,
+   TYPE_INT64,
+   TYPE_ENUM,
+   TYPE_ENUM_2,
+   TYPE_BOOLEAN,
+   TYPE_BIT_0,
+   TYPE_BIT_1,
+   TYPE_BIT_2,
+   TYPE_BIT_3,
+   TYPE_BIT_4,
+   TYPE_BIT_5,
+   TYPE_FLOAT,
+   TYPE_FLOAT_2,
+   TYPE_FLOAT_3,
+   TYPE_FLOAT_4,
+   TYPE_FLOATN,
+   TYPE_FLOATN_2,
+   TYPE_FLOATN_3,
+   TYPE_FLOATN_4,
+   TYPE_DOUBLEN,
+   TYPE_MATRIX,
+   TYPE_MATRIX_T,
+   TYPE_CONST
+};
 
-/*
- * Check if named extension is enabled, if not generate error and return.
- */
-#define CHECK_EXT1(EXT1)                                               \
-   if (!ctx->Extensions.EXT1) {                                        \
-      goto invalid_enum_error;                                         \
+enum value_location {
+   LOC_BUFFER,
+   LOC_CONTEXT,
+   LOC_ARRAY,
+   LOC_TEXUNIT,
+   LOC_CUSTOM
+};
+
+enum value_extra {
+   EXTRA_END = 0x8000,
+   EXTRA_VERSION_30,
+   EXTRA_VERSION_31,
+   EXTRA_VERSION_32,
+   EXTRA_NEW_BUFFERS, 
+   EXTRA_VALID_DRAW_BUFFER,
+   EXTRA_VALID_TEXTURE_UNIT,
+   EXTRA_FLUSH_CURRENT,
+};
+
+struct value_desc {
+   GLenum pname;
+   GLubyte location;  /**< enum value_location */
+   GLubyte type;      /**< enum value_type */
+   int offset;
+   const int *extra;
+};
+
+union value {
+   GLfloat value_float;
+   GLfloat value_float_4[4];
+   GLmatrix *value_matrix;
+   GLint value_int;
+   GLint value_int_4[4];
+   GLint64 value_int64;
+   GLenum value_enum;
+
+   /* Sigh, see GL_COMPRESSED_TEXTURE_FORMATS_ARB handling */
+   struct {
+      GLint n, ints[100];
+   } value_int_n;
+   GLboolean value_bool;
+};
+
+#define BUFFER_FIELD(field, type) \
+   LOC_BUFFER, type, offsetof(struct gl_framebuffer, field)
+#define CONTEXT_FIELD(field, type) \
+   LOC_CONTEXT, type, offsetof(GLcontext, field)
+#define ARRAY_FIELD(field, type) \
+   LOC_ARRAY, type, offsetof(struct gl_array_object, field)
+#define CONST(value) \
+   LOC_CONTEXT, TYPE_CONST, value
+
+#define BUFFER_INT(field) BUFFER_FIELD(field, TYPE_INT)
+#define BUFFER_ENUM(field) BUFFER_FIELD(field, TYPE_ENUM)
+
+#define CONTEXT_INT(field) CONTEXT_FIELD(field, TYPE_INT)
+#define CONTEXT_INT2(field) CONTEXT_FIELD(field, TYPE_INT_2)
+#define CONTEXT_INT64(field) CONTEXT_FIELD(field, TYPE_INT64)
+#define CONTEXT_ENUM(field) CONTEXT_FIELD(field, TYPE_ENUM)
+#define CONTEXT_ENUM2(field) CONTEXT_FIELD(field, TYPE_ENUM_2)
+#define CONTEXT_BOOL(field) CONTEXT_FIELD(field, TYPE_BOOLEAN)
+#define CONTEXT_BIT0(field) CONTEXT_FIELD(field, TYPE_BIT_0)
+#define CONTEXT_BIT1(field) CONTEXT_FIELD(field, TYPE_BIT_1)
+#define CONTEXT_BIT2(field) CONTEXT_FIELD(field, TYPE_BIT_2)
+#define CONTEXT_BIT3(field) CONTEXT_FIELD(field, TYPE_BIT_3)
+#define CONTEXT_BIT4(field) CONTEXT_FIELD(field, TYPE_BIT_4)
+#define CONTEXT_BIT5(field) CONTEXT_FIELD(field, TYPE_BIT_5)
+#define CONTEXT_FLOAT(field) CONTEXT_FIELD(field, TYPE_FLOAT)
+#define CONTEXT_FLOAT2(field) CONTEXT_FIELD(field, TYPE_FLOAT_2)
+#define CONTEXT_FLOAT3(field) CONTEXT_FIELD(field, TYPE_FLOAT_3)
+#define CONTEXT_FLOAT4(field) CONTEXT_FIELD(field, TYPE_FLOAT_4)
+#define CONTEXT_MATRIX(field) CONTEXT_FIELD(field, TYPE_MATRIX)
+#define CONTEXT_MATRIX_T(field) CONTEXT_FIELD(field, TYPE_MATRIX_T)
+
+#define ARRAY_INT(field) ARRAY_FIELD(field, TYPE_INT)
+#define ARRAY_ENUM(field) ARRAY_FIELD(field, TYPE_ENUM)
+#define ARRAY_BOOL(field) ARRAY_FIELD(field, TYPE_BOOLEAN)
+
+#define EXT(f)                                 \
+   offsetof(struct gl_extensions, f)
+
+#define EXTRA_EXT(e)                           \
+   static const int extra_##e[] = {            \
+      EXT(e), EXTRA_END                                \
    }
 
-/*
- * Check if either of two extensions is enabled.
- */
-#define CHECK_EXT2(EXT1, EXT2)                                         \
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) {               \
-      goto invalid_enum_error;                                         \
+#define EXTRA_EXT2(e1, e2)                     \
+   static const int extra_##e1##_##e2[] = {    \
+      EXT(e1), EXT(e2), EXTRA_END              \
    }
 
-/*
- * Check if either of three extensions is enabled.
- */
-#define CHECK_EXT3(EXT1, EXT2, EXT3)                                   \
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \
-       !ctx->Extensions.EXT3) {                                        \
-      goto invalid_enum_error;                                         \
+/* The 'extra' mechanism is a way to specify extra checks (such as
+ * extensions or specific gl versions) or actions (flush current, new
+ * buffers) that we need to do before looking up an enum.  We need to
+ * declare them all up front so we can refer to them in the value_desc
+ * structs below. */
+
+static const int extra_new_buffers[] = {
+   EXTRA_NEW_BUFFERS,
+   EXTRA_END
+};
+
+static const int extra_valid_draw_buffer[] = {
+   EXTRA_VALID_DRAW_BUFFER,
+   EXTRA_END
+};
+
+static const int extra_valid_texture_unit[] = {
+   EXTRA_VALID_TEXTURE_UNIT,
+   EXTRA_END
+};
+
+static const int extra_flush_current_valid_texture_unit[] = {
+   EXTRA_FLUSH_CURRENT,
+   EXTRA_VALID_TEXTURE_UNIT,
+   EXTRA_END
+};
+
+static const int extra_flush_current[] = {
+   EXTRA_FLUSH_CURRENT,
+   EXTRA_END
+};
+
+static const int extra_new_buffers_OES_read_format[] = {
+   EXTRA_NEW_BUFFERS,
+   EXT(OES_read_format),
+   EXTRA_END
+};
+
+static const int extra_EXT_secondary_color_flush_current[] = {
+   EXT(EXT_secondary_color),
+   EXTRA_FLUSH_CURRENT,
+   EXTRA_END
+};
+
+static const int extra_EXT_fog_coord_flush_current[] = {
+   EXT(EXT_fog_coord),
+   EXTRA_FLUSH_CURRENT,
+   EXTRA_END
+};
+
+EXTRA_EXT(ARB_multitexture);
+EXTRA_EXT(ARB_texture_cube_map);
+EXTRA_EXT(MESA_texture_array);
+EXTRA_EXT2(EXT_secondary_color, ARB_vertex_program);
+EXTRA_EXT(EXT_secondary_color);
+EXTRA_EXT(EXT_fog_coord);
+EXTRA_EXT(EXT_texture_lod_bias);
+EXTRA_EXT(EXT_texture_filter_anisotropic);
+EXTRA_EXT(IBM_rasterpos_clip);
+EXTRA_EXT(NV_point_sprite);
+EXTRA_EXT(SGIS_generate_mipmap);
+EXTRA_EXT(NV_vertex_program);
+EXTRA_EXT(NV_fragment_program);
+EXTRA_EXT(NV_texture_rectangle);
+EXTRA_EXT(EXT_stencil_two_side);
+EXTRA_EXT(NV_light_max_exponent);
+EXTRA_EXT(EXT_convolution);
+EXTRA_EXT(EXT_histogram);
+EXTRA_EXT(SGI_color_table);
+EXTRA_EXT(SGI_texture_color_table);
+EXTRA_EXT(EXT_depth_bounds_test);
+EXTRA_EXT(ARB_depth_clamp);
+EXTRA_EXT(ATI_fragment_shader);
+EXTRA_EXT(EXT_framebuffer_blit);
+EXTRA_EXT(ARB_shader_objects);
+EXTRA_EXT(EXT_provoking_vertex);
+EXTRA_EXT(ARB_fragment_shader);
+EXTRA_EXT(ARB_fragment_program);
+EXTRA_EXT(ARB_framebuffer_object);
+EXTRA_EXT(EXT_framebuffer_object);
+EXTRA_EXT(APPLE_vertex_array_object);
+EXTRA_EXT(ARB_seamless_cube_map);
+EXTRA_EXT(EXT_compiled_vertex_array);
+EXTRA_EXT(ARB_sync);
+EXTRA_EXT(ARB_vertex_shader);
+EXTRA_EXT(EXT_transform_feedback);
+EXTRA_EXT(ARB_transform_feedback2);
+EXTRA_EXT(EXT_pixel_buffer_object);
+EXTRA_EXT(ARB_vertex_program);
+EXTRA_EXT2(NV_point_sprite, ARB_point_sprite);
+EXTRA_EXT2(ARB_fragment_program, NV_fragment_program);
+EXTRA_EXT2(ARB_vertex_program, NV_vertex_program);
+EXTRA_EXT2(ARB_vertex_program, ARB_fragment_program);
+EXTRA_EXT(ARB_vertex_buffer_object);
+
+static const int
+extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = {
+   EXT(ARB_vertex_program),
+   EXT(ARB_fragment_program),
+   EXT(NV_vertex_program),
+   EXTRA_END
+};
+
+static const int
+extra_NV_vertex_program_ARB_vertex_program_ARB_fragment_program_NV_vertex_program[] = {
+   EXT(NV_vertex_program),
+   EXT(ARB_vertex_program),
+   EXT(ARB_fragment_program),
+   EXT(NV_vertex_program),
+   EXTRA_END
+};
+
+static const int extra_version_30[] = { EXTRA_VERSION_30, EXTRA_END };
+static const int extra_version_31[] = { EXTRA_VERSION_31, EXTRA_END };
+static const int extra_version_32[] = { EXTRA_VERSION_32, EXTRA_END };
+
+#define API_OPENGL_BIT (1 << API_OPENGL)
+#define API_OPENGLES_BIT (1 << API_OPENGLES)
+#define API_OPENGLES2_BIT (1 << API_OPENGLES2)
+
+/* This is the big table describing all the enums we accept in
+ * glGet*v().  The table is partitioned into six parts: enums
+ * understood by all GL APIs (OpenGL, GLES and GLES2), enums shared
+ * between OpenGL and GLES, enums exclusive to GLES, etc for the
+ * remaining combinations.  When we add the enums to the hash table in
+ * _mesa_init_get_hash(), we only add the enums for the API we're
+ * instantiating and the different sections are guarded by #if
+ * FEATURE_GL etc to make sure we only compile in the enums we may
+ * need. */
+
+static const struct value_desc values[] = {
+   /* Enums shared between OpenGL, GLES1 and GLES2 */
+   { 0, 0, TYPE_API_MASK,
+     API_OPENGL_BIT | API_OPENGLES_BIT | API_OPENGLES2_BIT},
+   { GL_ALPHA_BITS, BUFFER_INT(Visual.alphaBits), extra_new_buffers },
+   { GL_BLEND, CONTEXT_BIT0(Color.BlendEnabled) },
+   { GL_BLEND_SRC, CONTEXT_ENUM(Color.BlendSrcRGB) },
+   { GL_BLUE_BITS, BUFFER_INT(Visual.blueBits), extra_new_buffers },
+   { GL_COLOR_CLEAR_VALUE, CONTEXT_FIELD(Color.ClearColor[0], TYPE_FLOATN_4) },
+   { GL_COLOR_WRITEMASK, LOC_CUSTOM, TYPE_INT_4, 0, },
+   { GL_CULL_FACE, CONTEXT_BOOL(Polygon.CullFlag) },
+   { GL_CULL_FACE_MODE, CONTEXT_ENUM(Polygon.CullFaceMode) },
+   { GL_DEPTH_BITS, BUFFER_INT(Visual.depthBits) },
+   { GL_DEPTH_CLEAR_VALUE, CONTEXT_FIELD(Depth.Clear, TYPE_DOUBLEN) },
+   { GL_DEPTH_FUNC, CONTEXT_ENUM(Depth.Func) },
+   { GL_DEPTH_RANGE, CONTEXT_FIELD(Viewport.Near, TYPE_FLOATN_2) },
+   { GL_DEPTH_TEST, CONTEXT_BOOL(Depth.Test) },
+   { GL_DEPTH_WRITEMASK, CONTEXT_BOOL(Depth.Mask) },
+   { GL_DITHER, CONTEXT_BOOL(Color.DitherFlag) },
+   { GL_FRONT_FACE, CONTEXT_ENUM(Polygon.FrontFace) },
+   { GL_GREEN_BITS, BUFFER_INT(Visual.greenBits), extra_new_buffers },
+   { GL_LINE_WIDTH, CONTEXT_FLOAT(Line.Width) },
+   { GL_ALIASED_LINE_WIDTH_RANGE, CONTEXT_FLOAT2(Const.MinLineWidth) },
+   { GL_MAX_ELEMENTS_VERTICES, CONTEXT_INT(Const.MaxArrayLockSize) },
+   { GL_MAX_ELEMENTS_INDICES, CONTEXT_INT(Const.MaxArrayLockSize) },
+   { GL_MAX_TEXTURE_SIZE, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, Const.MaxTextureLevels) },
+   { GL_MAX_VIEWPORT_DIMS, CONTEXT_INT2(Const.MaxViewportWidth) },
+   { GL_PACK_ALIGNMENT, CONTEXT_INT(Pack.Alignment) },
+   { GL_ALIASED_POINT_SIZE_RANGE, CONTEXT_FLOAT2(Const.MinPointSize) },
+   { GL_POLYGON_OFFSET_FACTOR, CONTEXT_FLOAT(Polygon.OffsetFactor ) },
+   { GL_POLYGON_OFFSET_UNITS, CONTEXT_FLOAT(Polygon.OffsetUnits ) },
+   { GL_POLYGON_OFFSET_FILL, CONTEXT_BOOL(Polygon.OffsetFill) },
+   { GL_RED_BITS, BUFFER_INT(Visual.redBits), extra_new_buffers },
+   { GL_SCISSOR_BOX, LOC_CUSTOM, TYPE_INT_4, 0 },
+   { GL_SCISSOR_TEST, CONTEXT_BOOL(Scissor.Enabled) },
+   { GL_STENCIL_BITS, BUFFER_INT(Visual.stencilBits) },
+   { GL_STENCIL_CLEAR_VALUE, CONTEXT_INT(Stencil.Clear) },
+   { GL_STENCIL_FAIL, LOC_CUSTOM, TYPE_ENUM },
+   { GL_STENCIL_FUNC, LOC_CUSTOM, TYPE_ENUM },
+   { GL_STENCIL_PASS_DEPTH_FAIL, LOC_CUSTOM, TYPE_ENUM },
+   { GL_STENCIL_PASS_DEPTH_PASS, LOC_CUSTOM, TYPE_ENUM },
+   { GL_STENCIL_REF, LOC_CUSTOM, TYPE_INT },
+   { GL_STENCIL_TEST, CONTEXT_BOOL(Stencil.Enabled) },
+   { GL_STENCIL_VALUE_MASK, LOC_CUSTOM, TYPE_INT },
+   { GL_STENCIL_WRITEMASK, LOC_CUSTOM, TYPE_INT },
+   { GL_SUBPIXEL_BITS, CONTEXT_INT(Const.SubPixelBits) },
+   { GL_TEXTURE_BINDING_2D, LOC_CUSTOM, TYPE_INT, TEXTURE_2D_INDEX },
+   { GL_UNPACK_ALIGNMENT, CONTEXT_INT(Unpack.Alignment) },
+   { GL_VIEWPORT, LOC_CUSTOM, TYPE_INT_4, 0 },
+
+   /* GL_ARB_multitexture */
+   { GL_ACTIVE_TEXTURE_ARB,
+     LOC_CUSTOM, TYPE_INT, 0, extra_ARB_multitexture },
+
+   /* Note that all the OES_* extensions require that the Mesa "struct
+    * gl_extensions" include a member with the name of the extension.
+    * That structure does not yet include OES extensions (and we're
+    * not sure whether it will).  If it does, all the OES_*
+    * extensions below should mark the dependency. */
+
+   /* GL_ARB_texture_cube_map */
+   { GL_TEXTURE_BINDING_CUBE_MAP_ARB, LOC_CUSTOM, TYPE_INT,
+     TEXTURE_CUBE_INDEX, extra_ARB_texture_cube_map },
+   { GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, Const.MaxCubeTextureLevels),
+     extra_ARB_texture_cube_map }, /* XXX: OES_texture_cube_map */
+
+   /* XXX: OES_blend_subtract */
+   { GL_BLEND_SRC_RGB_EXT, CONTEXT_ENUM(Color.BlendSrcRGB) },
+   { GL_BLEND_DST_RGB_EXT, CONTEXT_ENUM(Color.BlendDstRGB) },
+   { GL_BLEND_SRC_ALPHA_EXT, CONTEXT_ENUM(Color.BlendSrcA) },
+   { GL_BLEND_DST_ALPHA_EXT, CONTEXT_ENUM(Color.BlendDstA) },
+
+   /* GL_BLEND_EQUATION_RGB, which is what we're really after, is
+    * defined identically to GL_BLEND_EQUATION. */
+   { GL_BLEND_EQUATION, CONTEXT_ENUM(Color.BlendEquationRGB) },
+   { GL_BLEND_EQUATION_ALPHA_EXT, CONTEXT_ENUM(Color.BlendEquationA) },
+
+   /* GL_ARB_texture_compression */
+   { GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB, LOC_CUSTOM, TYPE_INT, 0 },
+   { GL_COMPRESSED_TEXTURE_FORMATS_ARB, LOC_CUSTOM, TYPE_INT_N, 0 },
+
+   /* GL_ARB_multisample */
+   { GL_SAMPLE_ALPHA_TO_COVERAGE_ARB,
+     CONTEXT_BOOL(Multisample.SampleAlphaToCoverage) },
+   { GL_SAMPLE_COVERAGE_ARB, CONTEXT_BOOL(Multisample.SampleCoverage) },
+   { GL_SAMPLE_COVERAGE_VALUE_ARB,
+     CONTEXT_FLOAT(Multisample.SampleCoverageValue) },
+   { GL_SAMPLE_COVERAGE_INVERT_ARB,
+     CONTEXT_BOOL(Multisample.SampleCoverageInvert) },
+   { GL_SAMPLE_BUFFERS_ARB, BUFFER_INT(Visual.sampleBuffers) },
+   { GL_SAMPLES_ARB, BUFFER_INT(Visual.samples) },
+
+   /* GL_SGIS_generate_mipmap */
+   { GL_GENERATE_MIPMAP_HINT_SGIS, CONTEXT_ENUM(Hint.GenerateMipmap),
+     extra_SGIS_generate_mipmap },
+
+   /* GL_ARB_vertex_buffer_object */
+   { GL_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, 0 },
+
+   /* GL_ARB_vertex_buffer_object */
+   /* GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB - not supported */
+   { GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, 0,
+     extra_ARB_vertex_buffer_object },
+
+   /* GL_OES_read_format */
+   { GL_IMPLEMENTATION_COLOR_READ_TYPE_OES, LOC_CUSTOM, TYPE_INT, 0,
+     extra_new_buffers_OES_read_format },
+   { GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES, LOC_CUSTOM, TYPE_INT, 0,
+     extra_new_buffers_OES_read_format },
+
+   /* GL_EXT_framebuffer_object */
+   { GL_FRAMEBUFFER_BINDING_EXT, BUFFER_INT(Name),
+     extra_EXT_framebuffer_object },
+   { GL_RENDERBUFFER_BINDING_EXT, LOC_CUSTOM, TYPE_INT, 0,
+     extra_EXT_framebuffer_object },
+   { GL_MAX_RENDERBUFFER_SIZE_EXT, CONTEXT_INT(Const.MaxRenderbufferSize),
+     extra_EXT_framebuffer_object },
+
+   /* This entry isn't spec'ed for GLES 2, but is needed for Mesa's
+    * GLSL: */
+   { GL_MAX_CLIP_PLANES, CONTEXT_INT(Const.MaxClipPlanes) },
+
+#if FEATURE_GL || FEATURE_ES1
+   /* Enums in OpenGL and GLES1 */
+   { 0, 0, TYPE_API_MASK, API_OPENGL_BIT | API_OPENGLES_BIT },
+   { GL_LIGHT0, CONTEXT_BOOL(Light.Light[0].Enabled) },
+   { GL_LIGHT1, CONTEXT_BOOL(Light.Light[1].Enabled) },
+   { GL_LIGHT2, CONTEXT_BOOL(Light.Light[2].Enabled) },
+   { GL_LIGHT3, CONTEXT_BOOL(Light.Light[3].Enabled) },
+   { GL_LIGHT4, CONTEXT_BOOL(Light.Light[4].Enabled) },
+   { GL_LIGHT5, CONTEXT_BOOL(Light.Light[5].Enabled) },
+   { GL_LIGHT6, CONTEXT_BOOL(Light.Light[6].Enabled) },
+   { GL_LIGHT7, CONTEXT_BOOL(Light.Light[7].Enabled) },
+   { GL_LIGHTING, CONTEXT_BOOL(Light.Enabled) },
+   { GL_LIGHT_MODEL_AMBIENT,
+     CONTEXT_FIELD(Light.Model.Ambient[0], TYPE_FLOATN_4) },
+   { GL_LIGHT_MODEL_TWO_SIDE, CONTEXT_BOOL(Light.Model.TwoSide) },
+   { GL_ALPHA_TEST, CONTEXT_BOOL(Color.AlphaEnabled) },
+   { GL_ALPHA_TEST_FUNC, CONTEXT_ENUM(Color.AlphaFunc) },
+   { GL_ALPHA_TEST_REF, CONTEXT_FIELD(Color.AlphaRef, TYPE_FLOATN) },
+   { GL_BLEND_DST, CONTEXT_ENUM(Color.BlendDstRGB) },
+   { GL_CLIP_PLANE0, CONTEXT_BIT0(Transform.ClipPlanesEnabled) },
+   { GL_CLIP_PLANE1, CONTEXT_BIT1(Transform.ClipPlanesEnabled) },
+   { GL_CLIP_PLANE2, CONTEXT_BIT2(Transform.ClipPlanesEnabled) },
+   { GL_CLIP_PLANE3, CONTEXT_BIT3(Transform.ClipPlanesEnabled) },
+   { GL_CLIP_PLANE4, CONTEXT_BIT4(Transform.ClipPlanesEnabled) },
+   { GL_CLIP_PLANE5, CONTEXT_BIT5(Transform.ClipPlanesEnabled) },
+   { GL_COLOR_MATERIAL, CONTEXT_BOOL(Light.ColorMaterialEnabled) },
+   { GL_CURRENT_COLOR,
+     CONTEXT_FIELD(Current.Attrib[VERT_ATTRIB_COLOR0][0], TYPE_FLOATN_4),
+     extra_flush_current },
+   { GL_CURRENT_NORMAL,
+     CONTEXT_FIELD(Current.Attrib[VERT_ATTRIB_NORMAL][0], TYPE_FLOATN_3),
+     extra_flush_current },
+   { GL_CURRENT_TEXTURE_COORDS, LOC_CUSTOM, TYPE_FLOAT_4, 0,
+     extra_flush_current_valid_texture_unit },
+   { GL_DISTANCE_ATTENUATION_EXT, CONTEXT_FLOAT3(Point.Params[0]) },
+   { GL_FOG, CONTEXT_BOOL(Fog.Enabled) },
+   { GL_FOG_COLOR, CONTEXT_FIELD(Fog.Color[0], TYPE_FLOATN_4) },
+   { GL_FOG_DENSITY, CONTEXT_FLOAT(Fog.Density) },
+   { GL_FOG_END, CONTEXT_FLOAT(Fog.End) },
+   { GL_FOG_HINT, CONTEXT_ENUM(Hint.Fog) },
+   { GL_FOG_MODE, CONTEXT_ENUM(Fog.Mode) },
+   { GL_FOG_START, CONTEXT_FLOAT(Fog.Start) },
+   { GL_LINE_SMOOTH, CONTEXT_BOOL(Line.SmoothFlag) },
+   { GL_LINE_SMOOTH_HINT, CONTEXT_ENUM(Hint.LineSmooth) },
+   { GL_LINE_WIDTH_RANGE, CONTEXT_FLOAT2(Const.MinLineWidthAA) },
+   { GL_COLOR_LOGIC_OP, CONTEXT_BOOL(Color.ColorLogicOpEnabled) },
+   { GL_LOGIC_OP_MODE, CONTEXT_ENUM(Color.LogicOp) },
+   { GL_MATRIX_MODE, CONTEXT_ENUM(Transform.MatrixMode) },
+   { GL_MAX_MODELVIEW_STACK_DEPTH, CONST(MAX_MODELVIEW_STACK_DEPTH) },
+   { GL_MAX_PROJECTION_STACK_DEPTH, CONST(MAX_PROJECTION_STACK_DEPTH) },
+   { GL_MAX_TEXTURE_STACK_DEPTH, CONST(MAX_TEXTURE_STACK_DEPTH), },
+   { GL_MODELVIEW_MATRIX, CONTEXT_MATRIX(ModelviewMatrixStack.Top) },
+   { GL_MODELVIEW_STACK_DEPTH, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, ModelviewMatrixStack.Depth) },
+   { GL_NORMALIZE, CONTEXT_BOOL(Transform.Normalize) },
+   { GL_PACK_SKIP_IMAGES_EXT, CONTEXT_INT(Pack.SkipImages) },
+   { GL_PERSPECTIVE_CORRECTION_HINT, CONTEXT_ENUM(Hint.PerspectiveCorrection) },
+   { GL_POINT_SIZE, CONTEXT_FLOAT(Point.Size) },
+   { GL_POINT_SIZE_RANGE, CONTEXT_FLOAT2(Const.MinPointSizeAA) },
+   { GL_POINT_SMOOTH, CONTEXT_BOOL(Point.SmoothFlag) },
+   { GL_POINT_SMOOTH_HINT, CONTEXT_ENUM(Hint.PointSmooth) },
+   { GL_POINT_SIZE_MIN_EXT, CONTEXT_FLOAT(Point.MinSize) },
+   { GL_POINT_SIZE_MAX_EXT, CONTEXT_FLOAT(Point.MaxSize) },
+   { GL_POINT_FADE_THRESHOLD_SIZE_EXT, CONTEXT_FLOAT(Point.Threshold) },
+   { GL_PROJECTION_MATRIX, CONTEXT_MATRIX(ProjectionMatrixStack.Top) },
+   { GL_PROJECTION_STACK_DEPTH, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, ProjectionMatrixStack.Depth) },
+   { GL_RESCALE_NORMAL, CONTEXT_BOOL(Transform.RescaleNormals) },
+   { GL_SHADE_MODEL, CONTEXT_ENUM(Light.ShadeModel) },
+   { GL_TEXTURE_2D, LOC_CUSTOM, TYPE_BOOLEAN, 0 },
+   { GL_TEXTURE_MATRIX, LOC_CUSTOM, TYPE_MATRIX, 0, extra_valid_texture_unit },
+   { GL_TEXTURE_STACK_DEPTH, LOC_CUSTOM, TYPE_INT, 0,
+     extra_valid_texture_unit  },
+
+   { GL_VERTEX_ARRAY, ARRAY_BOOL(Vertex.Enabled) },
+   { GL_VERTEX_ARRAY_SIZE, ARRAY_INT(Vertex.Size) },
+   { GL_VERTEX_ARRAY_TYPE, ARRAY_ENUM(Vertex.Type) },
+   { GL_VERTEX_ARRAY_STRIDE, ARRAY_INT(Vertex.Stride) },
+   { GL_NORMAL_ARRAY, ARRAY_ENUM(Normal.Enabled) },
+   { GL_NORMAL_ARRAY_TYPE, ARRAY_ENUM(Normal.Type) },
+   { GL_NORMAL_ARRAY_STRIDE, ARRAY_INT(Normal.Stride) },
+   { GL_COLOR_ARRAY, ARRAY_BOOL(Color.Enabled) },
+   { GL_COLOR_ARRAY_SIZE, ARRAY_INT(Color.Size) },
+   { GL_COLOR_ARRAY_TYPE, ARRAY_ENUM(Color.Type) },
+   { GL_COLOR_ARRAY_STRIDE, ARRAY_INT(Color.Stride) },
+   { GL_TEXTURE_COORD_ARRAY,
+     LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Enabled) },
+   { GL_TEXTURE_COORD_ARRAY_SIZE,
+     LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Size) },
+   { GL_TEXTURE_COORD_ARRAY_TYPE,
+     LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Type) },
+   { GL_TEXTURE_COORD_ARRAY_STRIDE,
+     LOC_CUSTOM, TYPE_BOOLEAN, offsetof(struct gl_client_array, Stride) },
+
+   /* GL_ARB_multitexture */
+   { GL_MAX_TEXTURE_UNITS_ARB,
+     CONTEXT_INT(Const.MaxTextureUnits), extra_ARB_multitexture },
+   { GL_CLIENT_ACTIVE_TEXTURE_ARB,
+     LOC_CUSTOM, TYPE_INT, 0, extra_ARB_multitexture },
+
+   /* GL_ARB_texture_cube_map */
+   { GL_TEXTURE_CUBE_MAP_ARB, LOC_CUSTOM, TYPE_BOOLEAN, 0 },
+   /* S, T, and R are always set at the same time */
+   { GL_TEXTURE_GEN_STR_OES, LOC_TEXUNIT, TYPE_BIT_0,
+     offsetof(struct gl_texture_unit, TexGenEnabled) },
+
+   /* GL_ARB_multisample */
+   { GL_MULTISAMPLE_ARB, CONTEXT_BOOL(Multisample.Enabled) },
+   { GL_SAMPLE_ALPHA_TO_ONE_ARB, CONTEXT_BOOL(Multisample.SampleAlphaToOne) },
+
+   /* GL_ARB_vertex_buffer_object */
+   { GL_VERTEX_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(struct gl_array_object, Vertex.BufferObj) },
+   { GL_NORMAL_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(struct gl_array_object, Normal.BufferObj) },
+   { GL_COLOR_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(struct gl_array_object, Color.BufferObj) },
+   { GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT, 0 },
+
+   /* GL_OES_point_sprite */
+   { GL_POINT_SPRITE_NV,
+     CONTEXT_BOOL(Point.PointSprite),
+     extra_NV_point_sprite_ARB_point_sprite },
+
+   /* GL_ARB_fragment_shader */
+   { GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB,
+     CONTEXT_INT(Const.FragmentProgram.MaxUniformComponents),
+     extra_ARB_fragment_shader },
+
+   /* GL_ARB_vertex_shader */
+   { GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB,
+     CONTEXT_INT(Const.VertexProgram.MaxUniformComponents),
+     extra_ARB_vertex_shader },
+   { GL_MAX_VARYING_FLOATS_ARB, LOC_CUSTOM, TYPE_INT, 0,
+     extra_ARB_vertex_shader },
+
+   /* GL_EXT_texture_lod_bias */
+   { GL_MAX_TEXTURE_LOD_BIAS_EXT, CONTEXT_FLOAT(Const.MaxTextureLodBias),
+        extra_EXT_texture_lod_bias },
+
+   /* GL_EXT_texture_filter_anisotropic */
+   { GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT,
+     CONTEXT_FLOAT(Const.MaxTextureMaxAnisotropy),
+     extra_EXT_texture_filter_anisotropic },
+#endif /* FEATURE_GL || FEATURE_ES1 */
+
+#if FEATURE_ES1
+   { 0, 0, TYPE_API_MASK, API_OPENGLES_BIT },
+   /* XXX: OES_matrix_get */
+   { GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES },
+   { GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES },
+   { GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES },
+
+   /* OES_point_size_array */
+   { GL_POINT_SIZE_ARRAY_OES, ARRAY_FIELD(PointSize.Enabled, TYPE_BOOLEAN) },
+   { GL_POINT_SIZE_ARRAY_TYPE_OES, ARRAY_FIELD(PointSize.Type, TYPE_ENUM) },
+   { GL_POINT_SIZE_ARRAY_STRIDE_OES, ARRAY_FIELD(PointSize.Stride, TYPE_INT) },
+   { GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES, LOC_CUSTOM, TYPE_INT, 0 },
+#endif /* FEATURE_ES1 */
+
+#if FEATURE_GL || FEATURE_ES2
+   { 0, 0, TYPE_API_MASK, API_OPENGL_BIT | API_OPENGLES2_BIT },
+   /* This entry isn't spec'ed for GLES 2, but is needed for Mesa's GLSL: */
+   { GL_MAX_LIGHTS, CONTEXT_INT(Const.MaxLights) },
+   { GL_MAX_TEXTURE_COORDS_ARB, /* == GL_MAX_TEXTURE_COORDS_NV */
+     CONTEXT_INT(Const.MaxTextureCoordUnits),
+     extra_ARB_fragment_program_NV_fragment_program },
+
+   /* GL_ARB_draw_buffers */
+   { GL_MAX_DRAW_BUFFERS_ARB, CONTEXT_INT(Const.MaxDrawBuffers) },
+
+   { GL_BLEND_COLOR_EXT, CONTEXT_FIELD(Color.BlendColor[0], TYPE_FLOATN_4) },
+   /* GL_ARB_fragment_program */
+   { GL_MAX_TEXTURE_IMAGE_UNITS_ARB, /* == GL_MAX_TEXTURE_IMAGE_UNITS_NV */
+     CONTEXT_INT(Const.MaxTextureImageUnits),
+     extra_ARB_fragment_program_NV_fragment_program },
+   { GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB,
+     CONTEXT_INT(Const.MaxVertexTextureImageUnits), extra_ARB_vertex_shader },
+   { GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB,
+     CONTEXT_INT(Const.MaxCombinedTextureImageUnits),
+     extra_ARB_vertex_shader },
+
+   /* GL_ARB_shader_objects
+    * Actually, this token isn't part of GL_ARB_shader_objects, but is
+    * close enough for now. */
+   { GL_CURRENT_PROGRAM, LOC_CUSTOM, TYPE_INT, 0, extra_ARB_shader_objects },
+
+   /* OpenGL 2.0 */
+   { GL_STENCIL_BACK_FUNC, CONTEXT_ENUM(Stencil.Function[1]) },
+   { GL_STENCIL_BACK_VALUE_MASK, CONTEXT_INT(Stencil.ValueMask[1]) },
+   { GL_STENCIL_BACK_WRITEMASK, CONTEXT_INT(Stencil.WriteMask[1]) },
+   { GL_STENCIL_BACK_REF, CONTEXT_INT(Stencil.Ref[1]) },
+   { GL_STENCIL_BACK_FAIL, CONTEXT_ENUM(Stencil.FailFunc[1]) },
+   { GL_STENCIL_BACK_PASS_DEPTH_FAIL, CONTEXT_ENUM(Stencil.ZFailFunc[1]) },
+   { GL_STENCIL_BACK_PASS_DEPTH_PASS, CONTEXT_ENUM(Stencil.ZPassFunc[1]) },
+
+   { GL_MAX_VERTEX_ATTRIBS_ARB,
+     CONTEXT_INT(Const.VertexProgram.MaxAttribs), extra_ARB_vertex_program },
+
+   /* OES_texture_3D */
+   { GL_TEXTURE_BINDING_3D, LOC_CUSTOM, TYPE_INT, TEXTURE_3D_INDEX },
+   { GL_MAX_3D_TEXTURE_SIZE, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, Const.Max3DTextureLevels) },
+
+   /* GL_ARB_fragment_shader/OES_standard_derivatives */
+   { GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB,
+     CONTEXT_ENUM(Hint.FragmentShaderDerivative), extra_ARB_fragment_shader },
+#endif /* FEATURE_GL || FEATURE_ES2 */
+
+#if FEATURE_ES2
+   /* Enums unique to OpenGL ES 2.0 */
+   { 0, 0, TYPE_API_MASK, API_OPENGLES2_BIT },
+   { GL_MAX_FRAGMENT_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, Const.FragmentProgram.MaxUniformComponents) },
+   { GL_MAX_VARYING_VECTORS, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, Const.MaxVarying) },
+   { GL_MAX_VERTEX_UNIFORM_VECTORS, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, Const.VertexProgram.MaxUniformComponents) },
+   { GL_SHADER_COMPILER, CONST(1) },
+   /* OES_get_program_binary */
+   { GL_NUM_SHADER_BINARY_FORMATS, CONST(0) },
+   { GL_SHADER_BINARY_FORMATS, CONST(0) },
+#endif /* FEATURE_ES2 */
+
+#if FEATURE_GL
+   /* Remaining enums are only in OpenGL */
+   { 0, 0, TYPE_API_MASK, API_OPENGL_BIT },
+   { GL_ACCUM_RED_BITS, BUFFER_INT(Visual.accumRedBits) },
+   { GL_ACCUM_GREEN_BITS, BUFFER_INT(Visual.accumGreenBits) },
+   { GL_ACCUM_BLUE_BITS, BUFFER_INT(Visual.accumBlueBits) },
+   { GL_ACCUM_ALPHA_BITS, BUFFER_INT(Visual.accumAlphaBits) },
+   { GL_ACCUM_CLEAR_VALUE, CONTEXT_FIELD(Accum.ClearColor[0], TYPE_FLOATN_4) },
+   { GL_ALPHA_BIAS, CONTEXT_FLOAT(Pixel.AlphaBias) },
+   { GL_ALPHA_SCALE, CONTEXT_FLOAT(Pixel.AlphaScale) },
+   { GL_ATTRIB_STACK_DEPTH, CONTEXT_INT(AttribStackDepth) },
+   { GL_AUTO_NORMAL, CONTEXT_BOOL(Eval.AutoNormal) },
+   { GL_AUX_BUFFERS, BUFFER_INT(Visual.numAuxBuffers) },
+   { GL_BLUE_BIAS, CONTEXT_FLOAT(Pixel.BlueBias) },
+   { GL_BLUE_SCALE, CONTEXT_FLOAT(Pixel.BlueScale) },
+   { GL_CLIENT_ATTRIB_STACK_DEPTH, CONTEXT_INT(ClientAttribStackDepth) },
+   { GL_COLOR_MATERIAL_FACE, CONTEXT_ENUM(Light.ColorMaterialFace) },
+   { GL_COLOR_MATERIAL_PARAMETER, CONTEXT_ENUM(Light.ColorMaterialMode) },
+   { GL_CURRENT_INDEX,
+     CONTEXT_FLOAT(Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]),
+     extra_flush_current },
+   { GL_CURRENT_RASTER_COLOR,
+     CONTEXT_FIELD(Current.RasterColor[0], TYPE_FLOATN_4) },
+   { GL_CURRENT_RASTER_DISTANCE, CONTEXT_FLOAT(Current.RasterDistance) },
+   { GL_CURRENT_RASTER_INDEX, CONST(1) },
+   { GL_CURRENT_RASTER_POSITION, CONTEXT_FLOAT4(Current.RasterPos[0]) },
+   { GL_CURRENT_RASTER_SECONDARY_COLOR,
+     CONTEXT_FIELD(Current.RasterSecondaryColor[0], TYPE_FLOATN_4) },
+   { GL_CURRENT_RASTER_TEXTURE_COORDS, LOC_CUSTOM, TYPE_FLOAT_4, 0,
+     extra_valid_texture_unit },
+   { GL_CURRENT_RASTER_POSITION_VALID, CONTEXT_BOOL(Current.RasterPosValid) },
+   { GL_DEPTH_BIAS, CONTEXT_FLOAT(Pixel.DepthBias) },
+   { GL_DEPTH_SCALE, CONTEXT_FLOAT(Pixel.DepthScale) },
+   { GL_DOUBLEBUFFER, BUFFER_INT(Visual.doubleBufferMode) },
+   { GL_DRAW_BUFFER, BUFFER_ENUM(ColorDrawBuffer[0]) },
+   { GL_EDGE_FLAG, LOC_CUSTOM, TYPE_BOOLEAN, 0 },
+   { GL_FEEDBACK_BUFFER_SIZE, CONTEXT_INT(Feedback.BufferSize) },
+   { GL_FEEDBACK_BUFFER_TYPE, CONTEXT_ENUM(Feedback.Type) },
+   { GL_FOG_INDEX, CONTEXT_FLOAT(Fog.Index) },
+   { GL_GREEN_BIAS, CONTEXT_FLOAT(Pixel.GreenBias) },
+   { GL_GREEN_SCALE, CONTEXT_FLOAT(Pixel.GreenScale) },
+   { GL_INDEX_BITS, BUFFER_INT(Visual.indexBits), extra_new_buffers },
+   { GL_INDEX_CLEAR_VALUE, CONTEXT_INT(Color.ClearIndex) },
+   { GL_INDEX_MODE, CONST(0) }, 
+   { GL_INDEX_OFFSET, CONTEXT_INT(Pixel.IndexOffset) },
+   { GL_INDEX_SHIFT, CONTEXT_INT(Pixel.IndexShift) },
+   { GL_INDEX_WRITEMASK, CONTEXT_INT(Color.IndexMask) },
+   { GL_LIGHT_MODEL_COLOR_CONTROL, CONTEXT_ENUM(Light.Model.ColorControl) },
+   { GL_LIGHT_MODEL_LOCAL_VIEWER, CONTEXT_BOOL(Light.Model.LocalViewer) },
+   { GL_LINE_STIPPLE, CONTEXT_BOOL(Line.StippleFlag) },
+   { GL_LINE_STIPPLE_PATTERN, LOC_CUSTOM, TYPE_INT, 0 },
+   { GL_LINE_STIPPLE_REPEAT, CONTEXT_INT(Line.StippleFactor) },
+   { GL_LINE_WIDTH_GRANULARITY, CONTEXT_FLOAT(Const.LineWidthGranularity) },
+   { GL_LIST_BASE, CONTEXT_INT(List.ListBase) },
+   { GL_LIST_INDEX, LOC_CUSTOM, TYPE_INT, 0 },
+   { GL_LIST_MODE, LOC_CUSTOM, TYPE_ENUM, 0 },
+   { GL_INDEX_LOGIC_OP, CONTEXT_BOOL(Color.IndexLogicOpEnabled) },
+   { GL_MAP1_COLOR_4, CONTEXT_BOOL(Eval.Map1Color4) },
+   { GL_MAP1_GRID_DOMAIN, CONTEXT_FLOAT2(Eval.MapGrid1u1) },
+   { GL_MAP1_GRID_SEGMENTS, CONTEXT_INT(Eval.MapGrid1un) },
+   { GL_MAP1_INDEX, CONTEXT_BOOL(Eval.Map1Index) },
+   { GL_MAP1_NORMAL, CONTEXT_BOOL(Eval.Map1Normal) },
+   { GL_MAP1_TEXTURE_COORD_1, CONTEXT_BOOL(Eval.Map1TextureCoord1) },
+   { GL_MAP1_TEXTURE_COORD_2, CONTEXT_BOOL(Eval.Map1TextureCoord2) },
+   { GL_MAP1_TEXTURE_COORD_3, CONTEXT_BOOL(Eval.Map1TextureCoord3) },
+   { GL_MAP1_TEXTURE_COORD_4, CONTEXT_BOOL(Eval.Map1TextureCoord4) },
+   { GL_MAP1_VERTEX_3, CONTEXT_BOOL(Eval.Map1Vertex3) },
+   { GL_MAP1_VERTEX_4, CONTEXT_BOOL(Eval.Map1Vertex4) },
+   { GL_MAP2_COLOR_4, CONTEXT_BOOL(Eval.Map2Color4) },
+   { GL_MAP2_GRID_DOMAIN, LOC_CUSTOM, TYPE_FLOAT_4, 0 },
+   { GL_MAP2_GRID_SEGMENTS, CONTEXT_INT2(Eval.MapGrid2un) },
+   { GL_MAP2_INDEX, CONTEXT_BOOL(Eval.Map2Index) },
+   { GL_MAP2_NORMAL, CONTEXT_BOOL(Eval.Map2Normal) },
+   { GL_MAP2_TEXTURE_COORD_1, CONTEXT_BOOL(Eval.Map2TextureCoord1) },
+   { GL_MAP2_TEXTURE_COORD_2, CONTEXT_BOOL(Eval.Map2TextureCoord2) },
+   { GL_MAP2_TEXTURE_COORD_3, CONTEXT_BOOL(Eval.Map2TextureCoord3) },
+   { GL_MAP2_TEXTURE_COORD_4, CONTEXT_BOOL(Eval.Map2TextureCoord4) },
+   { GL_MAP2_VERTEX_3, CONTEXT_BOOL(Eval.Map2Vertex3) },
+   { GL_MAP2_VERTEX_4, CONTEXT_BOOL(Eval.Map2Vertex4) },
+   { GL_MAP_COLOR, CONTEXT_BOOL(Pixel.MapColorFlag) },
+   { GL_MAP_STENCIL, CONTEXT_BOOL(Pixel.MapStencilFlag) },
+   { GL_MAX_ATTRIB_STACK_DEPTH, CONST(MAX_ATTRIB_STACK_DEPTH) },
+   { GL_MAX_CLIENT_ATTRIB_STACK_DEPTH, CONST(MAX_CLIENT_ATTRIB_STACK_DEPTH) },
+
+   { GL_MAX_EVAL_ORDER, CONST(MAX_EVAL_ORDER) },
+   { GL_MAX_LIST_NESTING, CONST(MAX_LIST_NESTING) },
+   { GL_MAX_NAME_STACK_DEPTH, CONST(MAX_NAME_STACK_DEPTH) },
+   { GL_MAX_PIXEL_MAP_TABLE, CONST(MAX_PIXEL_MAP_TABLE) },
+   { GL_NAME_STACK_DEPTH, CONTEXT_INT(Select.NameStackDepth) },
+   { GL_PACK_LSB_FIRST, CONTEXT_BOOL(Pack.LsbFirst) },
+   { GL_PACK_ROW_LENGTH, CONTEXT_INT(Pack.RowLength) },
+   { GL_PACK_SKIP_PIXELS, CONTEXT_INT(Pack.SkipPixels) },
+   { GL_PACK_SKIP_ROWS, CONTEXT_INT(Pack.SkipRows) },
+   { GL_PACK_SWAP_BYTES, CONTEXT_BOOL(Pack.SwapBytes) },
+   { GL_PACK_IMAGE_HEIGHT_EXT, CONTEXT_INT(Pack.ImageHeight) },
+   { GL_PACK_INVERT_MESA, CONTEXT_BOOL(Pack.Invert) },
+   { GL_PIXEL_MAP_A_TO_A_SIZE, CONTEXT_INT(PixelMaps.AtoA.Size) },
+   { GL_PIXEL_MAP_B_TO_B_SIZE, CONTEXT_INT(PixelMaps.BtoB.Size) },
+   { GL_PIXEL_MAP_G_TO_G_SIZE, CONTEXT_INT(PixelMaps.GtoG.Size) },
+   { GL_PIXEL_MAP_I_TO_A_SIZE, CONTEXT_INT(PixelMaps.ItoA.Size) },
+   { GL_PIXEL_MAP_I_TO_B_SIZE, CONTEXT_INT(PixelMaps.ItoB.Size) },
+   { GL_PIXEL_MAP_I_TO_G_SIZE, CONTEXT_INT(PixelMaps.ItoG.Size) },
+   { GL_PIXEL_MAP_I_TO_I_SIZE, CONTEXT_INT(PixelMaps.ItoI.Size) },
+   { GL_PIXEL_MAP_I_TO_R_SIZE, CONTEXT_INT(PixelMaps.ItoR.Size) },
+   { GL_PIXEL_MAP_R_TO_R_SIZE, CONTEXT_INT(PixelMaps.RtoR.Size) },
+   { GL_PIXEL_MAP_S_TO_S_SIZE, CONTEXT_INT(PixelMaps.StoS.Size) },
+   { GL_POINT_SIZE_GRANULARITY, CONTEXT_FLOAT(Const.PointSizeGranularity) },
+   { GL_POLYGON_MODE, CONTEXT_ENUM2(Polygon.FrontMode) },
+   { GL_POLYGON_OFFSET_BIAS_EXT, CONTEXT_FLOAT(Polygon.OffsetUnits) },
+   { GL_POLYGON_OFFSET_POINT, CONTEXT_BOOL(Polygon.OffsetPoint) },
+   { GL_POLYGON_OFFSET_LINE, CONTEXT_BOOL(Polygon.OffsetLine) },
+   { GL_POLYGON_SMOOTH, CONTEXT_BOOL(Polygon.SmoothFlag) },
+   { GL_POLYGON_SMOOTH_HINT, CONTEXT_ENUM(Hint.PolygonSmooth) },
+   { GL_POLYGON_STIPPLE, CONTEXT_BOOL(Polygon.StippleFlag) },
+   { GL_READ_BUFFER, LOC_CUSTOM, TYPE_ENUM },
+   { GL_RED_BIAS, CONTEXT_FLOAT(Pixel.RedBias) },
+   { GL_RED_SCALE, CONTEXT_FLOAT(Pixel.RedScale) },
+   { GL_RENDER_MODE, CONTEXT_ENUM(RenderMode) },
+   { GL_RGBA_MODE, CONST(1) },
+   { GL_SELECTION_BUFFER_SIZE, CONTEXT_INT(Select.BufferSize) },
+   { GL_SHARED_TEXTURE_PALETTE_EXT, CONTEXT_BOOL(Texture.SharedPalette) },
+
+   { GL_STEREO, BUFFER_INT(Visual.stereoMode) },
+
+   { GL_TEXTURE_1D, LOC_CUSTOM, TYPE_BOOLEAN, 0 },
+   { GL_TEXTURE_3D, LOC_CUSTOM, TYPE_BOOLEAN, 0 },
+   { GL_TEXTURE_1D_ARRAY_EXT, LOC_CUSTOM, TYPE_BOOLEAN, 0 },
+   { GL_TEXTURE_2D_ARRAY_EXT, LOC_CUSTOM, TYPE_BOOLEAN, 0 },
+
+   { GL_TEXTURE_BINDING_1D, LOC_CUSTOM, TYPE_INT, TEXTURE_1D_INDEX },
+   { GL_TEXTURE_BINDING_1D_ARRAY, LOC_CUSTOM, TYPE_INT,
+     TEXTURE_1D_ARRAY_INDEX, extra_MESA_texture_array },
+   { GL_TEXTURE_BINDING_2D_ARRAY, LOC_CUSTOM, TYPE_INT,
+     TEXTURE_1D_ARRAY_INDEX, extra_MESA_texture_array },
+   { GL_MAX_ARRAY_TEXTURE_LAYERS_EXT,
+     CONTEXT_INT(Const.MaxArrayTextureLayers), extra_MESA_texture_array },
+
+   { GL_TEXTURE_GEN_S, LOC_TEXUNIT, TYPE_BIT_0,
+     offsetof(struct gl_texture_unit, TexGenEnabled) },
+   { GL_TEXTURE_GEN_T, LOC_TEXUNIT, TYPE_BIT_1,
+     offsetof(struct gl_texture_unit, TexGenEnabled) },
+   { GL_TEXTURE_GEN_R, LOC_TEXUNIT, TYPE_BIT_2,
+     offsetof(struct gl_texture_unit, TexGenEnabled) },
+   { GL_TEXTURE_GEN_Q, LOC_TEXUNIT, TYPE_BIT_3,
+     offsetof(struct gl_texture_unit, TexGenEnabled) },
+   { GL_UNPACK_LSB_FIRST, CONTEXT_BOOL(Unpack.LsbFirst) },
+   { GL_UNPACK_ROW_LENGTH, CONTEXT_INT(Unpack.RowLength) },
+   { GL_UNPACK_SKIP_PIXELS, CONTEXT_INT(Unpack.SkipPixels) },
+   { GL_UNPACK_SKIP_ROWS, CONTEXT_INT(Unpack.SkipRows) },
+   { GL_UNPACK_SWAP_BYTES, CONTEXT_BOOL(Unpack.SwapBytes) },
+   { GL_UNPACK_SKIP_IMAGES_EXT, CONTEXT_INT(Unpack.SkipImages) },
+   { GL_UNPACK_IMAGE_HEIGHT_EXT, CONTEXT_INT(Unpack.ImageHeight) },
+   { GL_UNPACK_CLIENT_STORAGE_APPLE, CONTEXT_BOOL(Unpack.ClientStorage) },
+   { GL_ZOOM_X, CONTEXT_FLOAT(Pixel.ZoomX) },
+   { GL_ZOOM_Y, CONTEXT_FLOAT(Pixel.ZoomY) },
+
+   /* Vertex arrays */
+   { GL_VERTEX_ARRAY_COUNT_EXT, CONST(0) },
+   { GL_NORMAL_ARRAY_COUNT_EXT, CONST(0) },
+   { GL_COLOR_ARRAY_COUNT_EXT, CONST(0) },
+   { GL_INDEX_ARRAY, ARRAY_BOOL(Index.Enabled) },
+   { GL_INDEX_ARRAY_TYPE, ARRAY_ENUM(Index.Type) },
+   { GL_INDEX_ARRAY_STRIDE, ARRAY_INT(Index.Stride) },
+   { GL_INDEX_ARRAY_COUNT_EXT, CONST(0) },
+   { GL_TEXTURE_COORD_ARRAY_COUNT_EXT, CONST(0) },
+   { GL_EDGE_FLAG_ARRAY, ARRAY_BOOL(EdgeFlag.Enabled) },
+   { GL_EDGE_FLAG_ARRAY_STRIDE, ARRAY_INT(EdgeFlag.Stride) },
+   { GL_EDGE_FLAG_ARRAY_COUNT_EXT, CONST(0) },
+
+   /* GL_ARB_texture_compression */
+   { GL_TEXTURE_COMPRESSION_HINT_ARB, CONTEXT_INT(Hint.TextureCompression) },
+
+   /* GL_EXT_compiled_vertex_array */
+   { GL_ARRAY_ELEMENT_LOCK_FIRST_EXT, CONTEXT_INT(Array.LockFirst),
+     extra_EXT_compiled_vertex_array },
+   { GL_ARRAY_ELEMENT_LOCK_COUNT_EXT, CONTEXT_INT(Array.LockCount),
+     extra_EXT_compiled_vertex_array },
+
+   /* GL_ARB_transpose_matrix */
+   { GL_TRANSPOSE_COLOR_MATRIX_ARB, CONTEXT_MATRIX_T(ColorMatrixStack.Top) },
+   { GL_TRANSPOSE_MODELVIEW_MATRIX_ARB,
+     CONTEXT_MATRIX_T(ModelviewMatrixStack) },
+   { GL_TRANSPOSE_PROJECTION_MATRIX_ARB,
+     CONTEXT_MATRIX_T(ProjectionMatrixStack.Top) },
+   { GL_TRANSPOSE_TEXTURE_MATRIX_ARB, CONTEXT_MATRIX_T(TextureMatrixStack) },
+
+   /* GL_SGI_color_matrix (also in 1.2 imaging) */
+   { GL_COLOR_MATRIX_SGI, CONTEXT_MATRIX(ColorMatrixStack.Top) },
+   { GL_COLOR_MATRIX_STACK_DEPTH_SGI, LOC_CUSTOM, TYPE_INT,
+     offsetof(GLcontext, ColorMatrixStack.Depth) },
+   { GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI,
+     CONST(MAX_COLOR_STACK_DEPTH) },
+   { GL_POST_COLOR_MATRIX_RED_SCALE_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixScale[0]) },
+   { GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixScale[1]) },
+   { GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixScale[2]) },
+   { GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixScale[3]) },
+   { GL_POST_COLOR_MATRIX_RED_BIAS_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixBias[0]) },
+   { GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixBias[1]) },
+   { GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixBias[2]) },
+   { GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI,
+     CONTEXT_FLOAT(Pixel.PostColorMatrixBias[3]) },
+
+   /* GL_EXT_convolution (also in 1.2 imaging) */
+   { GL_CONVOLUTION_1D_EXT, CONTEXT_BOOL(Pixel.Convolution1DEnabled),
+     extra_EXT_convolution },
+   { GL_CONVOLUTION_2D_EXT, CONTEXT_BOOL(Pixel.Convolution2DEnabled),
+     extra_EXT_convolution },
+   { GL_SEPARABLE_2D_EXT, CONTEXT_BOOL(Pixel.Separable2DEnabled),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_RED_SCALE_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionScale[0]),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_GREEN_SCALE_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionScale[1]),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_BLUE_SCALE_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionScale[2]),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_ALPHA_SCALE_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionScale[3]),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_RED_BIAS_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionBias[0]),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_GREEN_BIAS_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionBias[1]),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_BLUE_BIAS_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionBias[2]),
+     extra_EXT_convolution },
+   { GL_POST_CONVOLUTION_ALPHA_BIAS_EXT,
+     CONTEXT_FLOAT(Pixel.PostConvolutionBias[3]),
+     extra_EXT_convolution },
+
+   /* GL_EXT_histogram / GL_ARB_imaging */
+   { GL_HISTOGRAM, CONTEXT_BOOL(Pixel.HistogramEnabled),
+     extra_EXT_histogram },
+   { GL_MINMAX, CONTEXT_BOOL(Pixel.MinMaxEnabled), extra_EXT_histogram },
+
+   /* GL_SGI_color_table / GL_ARB_imaging */
+   { GL_COLOR_TABLE_SGI,
+     CONTEXT_BOOL(Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]),
+     extra_SGI_color_table },
+   { GL_POST_CONVOLUTION_COLOR_TABLE_SGI,
+     CONTEXT_BOOL(Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]),
+     extra_SGI_color_table },
+   { GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI,
+     CONTEXT_BOOL(Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]),
+     extra_SGI_color_table },
+
+   /* GL_SGI_texture_color_table */
+   { GL_TEXTURE_COLOR_TABLE_SGI, LOC_TEXUNIT, TYPE_BOOLEAN,
+     offsetof(struct gl_texture_unit, ColorTableEnabled),
+     extra_SGI_texture_color_table },
+
+   /* GL_EXT_secondary_color */
+   { GL_COLOR_SUM_EXT, CONTEXT_BOOL(Fog.ColorSumEnabled),
+     extra_EXT_secondary_color_ARB_vertex_program },
+   { GL_CURRENT_SECONDARY_COLOR_EXT,
+     CONTEXT_FIELD(Current.Attrib[VERT_ATTRIB_COLOR1][0], TYPE_FLOATN_4),
+     extra_EXT_secondary_color_flush_current },
+   { GL_SECONDARY_COLOR_ARRAY_EXT, ARRAY_BOOL(SecondaryColor.Enabled),
+     extra_EXT_secondary_color },
+   { GL_SECONDARY_COLOR_ARRAY_TYPE_EXT, ARRAY_ENUM(SecondaryColor.Type),
+     extra_EXT_secondary_color },
+   { GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT, ARRAY_INT(SecondaryColor.Stride),
+     extra_EXT_secondary_color },
+   { GL_SECONDARY_COLOR_ARRAY_SIZE_EXT, ARRAY_INT(SecondaryColor.Size),
+     extra_EXT_secondary_color },
+
+   /* GL_EXT_fog_coord */
+   { GL_CURRENT_FOG_COORDINATE_EXT,
+     CONTEXT_FLOAT(Current.Attrib[VERT_ATTRIB_FOG][0]),
+     extra_EXT_fog_coord_flush_current },
+   { GL_FOG_COORDINATE_ARRAY_EXT, ARRAY_BOOL(FogCoord.Enabled),
+     extra_EXT_fog_coord },
+   { GL_FOG_COORDINATE_ARRAY_TYPE_EXT, ARRAY_ENUM(FogCoord.Type),
+     extra_EXT_fog_coord },
+   { GL_FOG_COORDINATE_ARRAY_STRIDE_EXT, ARRAY_INT(FogCoord.Stride),
+     extra_EXT_fog_coord },
+   { GL_FOG_COORDINATE_SOURCE_EXT, CONTEXT_ENUM(Fog.FogCoordinateSource),
+     extra_EXT_fog_coord },
+
+   /* GL_IBM_rasterpos_clip */
+   { GL_RASTER_POSITION_UNCLIPPED_IBM,
+     CONTEXT_BOOL(Transform.RasterPositionUnclipped),
+     extra_IBM_rasterpos_clip },
+
+   /* GL_NV_point_sprite */
+   { GL_POINT_SPRITE_R_MODE_NV,
+     CONTEXT_ENUM(Point.SpriteRMode), extra_NV_point_sprite },
+   { GL_POINT_SPRITE_COORD_ORIGIN, CONTEXT_ENUM(Point.SpriteOrigin),
+     extra_NV_point_sprite_ARB_point_sprite },
+
+   /* GL_NV_vertex_program */
+   { GL_VERTEX_PROGRAM_BINDING_NV, LOC_CUSTOM, TYPE_INT, 0,
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY0_NV, ARRAY_BOOL(VertexAttrib[0].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY1_NV, ARRAY_BOOL(VertexAttrib[1].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY2_NV, ARRAY_BOOL(VertexAttrib[2].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY3_NV, ARRAY_BOOL(VertexAttrib[3].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY4_NV, ARRAY_BOOL(VertexAttrib[4].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY5_NV, ARRAY_BOOL(VertexAttrib[5].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY6_NV, ARRAY_BOOL(VertexAttrib[6].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY7_NV, ARRAY_BOOL(VertexAttrib[7].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY8_NV, ARRAY_BOOL(VertexAttrib[8].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY9_NV, ARRAY_BOOL(VertexAttrib[9].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY10_NV, ARRAY_BOOL(VertexAttrib[10].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY11_NV, ARRAY_BOOL(VertexAttrib[11].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY12_NV, ARRAY_BOOL(VertexAttrib[12].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY13_NV, ARRAY_BOOL(VertexAttrib[13].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY14_NV, ARRAY_BOOL(VertexAttrib[14].Enabled),
+     extra_NV_vertex_program },
+   { GL_VERTEX_ATTRIB_ARRAY15_NV, ARRAY_BOOL(VertexAttrib[15].Enabled),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB0_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[0]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB1_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[1]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB2_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[2]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB3_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[3]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB4_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[4]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB5_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[5]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB6_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[6]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB7_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[7]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB8_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[8]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB9_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[9]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB10_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[10]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB11_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[11]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB12_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[12]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB13_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[13]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB14_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[14]),
+     extra_NV_vertex_program },
+   { GL_MAP1_VERTEX_ATTRIB15_4_NV, CONTEXT_BOOL(Eval.Map1Attrib[15]),
+     extra_NV_vertex_program },
+
+   /* GL_NV_fragment_program */
+   { GL_FRAGMENT_PROGRAM_NV, CONTEXT_BOOL(FragmentProgram.Enabled),
+     extra_NV_fragment_program },
+   { GL_FRAGMENT_PROGRAM_BINDING_NV, LOC_CUSTOM, TYPE_INT, 0,
+     extra_NV_fragment_program },
+   { GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV,
+     CONST(MAX_NV_FRAGMENT_PROGRAM_PARAMS),
+     extra_NV_fragment_program },
+
+   /* GL_NV_texture_rectangle */
+   { GL_TEXTURE_RECTANGLE_NV,
+     LOC_CUSTOM, TYPE_BOOLEAN, 0, extra_NV_texture_rectangle },
+   { GL_TEXTURE_BINDING_RECTANGLE_NV,
+     LOC_CUSTOM, TYPE_INT, TEXTURE_RECT_INDEX, extra_NV_texture_rectangle },
+   { GL_MAX_RECTANGLE_TEXTURE_SIZE_NV,
+     CONTEXT_INT(Const.MaxTextureRectSize), extra_NV_texture_rectangle },
+
+   /* GL_EXT_stencil_two_side */
+   { GL_STENCIL_TEST_TWO_SIDE_EXT, CONTEXT_BOOL(Stencil.TestTwoSide),
+        extra_EXT_stencil_two_side },
+   { GL_ACTIVE_STENCIL_FACE_EXT, LOC_CUSTOM, TYPE_ENUM, 0 },
+
+   /* GL_NV_light_max_exponent */
+   { GL_MAX_SHININESS_NV, CONTEXT_FLOAT(Const.MaxShininess),
+     extra_NV_light_max_exponent },
+   { GL_MAX_SPOT_EXPONENT_NV, CONTEXT_FLOAT(Const.MaxSpotExponent),
+     extra_NV_light_max_exponent },
+     
+   /* GL_ARB_vertex_buffer_object */
+   { GL_INDEX_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(struct gl_array_object, Index.BufferObj) },
+   { GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(struct gl_array_object, EdgeFlag.BufferObj) },
+   { GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(struct gl_array_object, SecondaryColor.BufferObj) },
+   { GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB, LOC_CUSTOM, TYPE_INT,
+     offsetof(struct gl_array_object, FogCoord.BufferObj) },
+
+   /* GL_EXT_pixel_buffer_object */
+   { GL_PIXEL_PACK_BUFFER_BINDING_EXT, LOC_CUSTOM, TYPE_INT, 0,
+     extra_EXT_pixel_buffer_object },
+   { GL_PIXEL_UNPACK_BUFFER_BINDING_EXT, LOC_CUSTOM, TYPE_INT, 0,
+     extra_EXT_pixel_buffer_object },
+
+   /* GL_ARB_vertex_program */
+   { GL_VERTEX_PROGRAM_ARB, /* == GL_VERTEX_PROGRAM_NV */
+     CONTEXT_BOOL(VertexProgram.Enabled),
+     extra_ARB_vertex_program_NV_vertex_program },
+   { GL_VERTEX_PROGRAM_POINT_SIZE_ARB, /* == GL_VERTEX_PROGRAM_POINT_SIZE_NV*/
+     CONTEXT_BOOL(VertexProgram.PointSizeEnabled),
+     extra_ARB_vertex_program_NV_vertex_program },
+   { GL_VERTEX_PROGRAM_TWO_SIDE_ARB, /* == GL_VERTEX_PROGRAM_TWO_SIDE_NV */
+     CONTEXT_BOOL(VertexProgram.TwoSideEnabled),
+     extra_ARB_vertex_program_NV_vertex_program },
+   { GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB, /* == GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV */
+     CONTEXT_INT(Const.MaxProgramMatrixStackDepth),
+     extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program },
+   { GL_MAX_PROGRAM_MATRICES_ARB, /* == GL_MAX_TRACK_MATRICES_NV */
+     CONTEXT_INT(Const.MaxProgramMatrices),
+     extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program },
+   { GL_CURRENT_MATRIX_STACK_DEPTH_ARB, /* == GL_CURRENT_MATRIX_STACK_DEPTH_NV */
+     LOC_CUSTOM, TYPE_INT, 0,
+     extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program },
+
+   { GL_CURRENT_MATRIX_ARB, /* == GL_CURRENT_MATRIX_NV */
+     LOC_CUSTOM, TYPE_MATRIX, 0,
+     extra_ARB_vertex_program_ARB_fragment_program_NV_vertex_program },
+   { GL_TRANSPOSE_CURRENT_MATRIX_ARB, /* == GL_CURRENT_MATRIX_NV */
+     LOC_CUSTOM, TYPE_MATRIX, 0,
+     extra_ARB_vertex_program_ARB_fragment_program },
+
+   { GL_PROGRAM_ERROR_POSITION_ARB, /* == GL_PROGRAM_ERROR_POSITION_NV */
+     CONTEXT_INT(Program.ErrorPos),
+     extra_NV_vertex_program_ARB_vertex_program_ARB_fragment_program_NV_vertex_program },
+
+   /* GL_ARB_fragment_program */
+   { GL_FRAGMENT_PROGRAM_ARB, CONTEXT_BOOL(FragmentProgram.Enabled),
+     extra_ARB_fragment_program },
+
+   /* GL_EXT_depth_bounds_test */
+   { GL_DEPTH_BOUNDS_TEST_EXT, CONTEXT_BOOL(Depth.BoundsTest),
+     extra_EXT_depth_bounds_test },
+   { GL_DEPTH_BOUNDS_EXT, CONTEXT_FLOAT2(Depth.BoundsMin),
+     extra_EXT_depth_bounds_test },
+
+   /* GL_ARB_depth_clamp*/
+   { GL_DEPTH_CLAMP, CONTEXT_BOOL(Transform.DepthClamp),
+     extra_ARB_depth_clamp },
+
+   /* GL_ARB_draw_buffers */
+   { GL_DRAW_BUFFER0_ARB, BUFFER_ENUM(ColorDrawBuffer[0]) },
+   { GL_DRAW_BUFFER1_ARB, BUFFER_ENUM(ColorDrawBuffer[1]),
+     extra_valid_draw_buffer },
+   { GL_DRAW_BUFFER2_ARB, BUFFER_ENUM(ColorDrawBuffer[2]),
+     extra_valid_draw_buffer },
+   { GL_DRAW_BUFFER3_ARB, BUFFER_ENUM(ColorDrawBuffer[3]),
+     extra_valid_draw_buffer },
+
+   /* GL_ATI_fragment_shader */
+   { GL_NUM_FRAGMENT_REGISTERS_ATI, CONST(6), extra_ATI_fragment_shader },
+   { GL_NUM_FRAGMENT_CONSTANTS_ATI, CONST(8), extra_ATI_fragment_shader },
+   { GL_NUM_PASSES_ATI, CONST(2), extra_ATI_fragment_shader },
+   { GL_NUM_INSTRUCTIONS_PER_PASS_ATI, CONST(8), extra_ATI_fragment_shader },
+   { GL_NUM_INSTRUCTIONS_TOTAL_ATI, CONST(16), extra_ATI_fragment_shader },
+   { GL_COLOR_ALPHA_PAIRING_ATI, CONST(GL_TRUE), extra_ATI_fragment_shader },
+   { GL_NUM_LOOPBACK_COMPONENTS_ATI, CONST(3), extra_ATI_fragment_shader },
+   { GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI,
+     CONST(3), extra_ATI_fragment_shader },
+
+   /* GL_EXT_framebuffer_object */
+   { GL_MAX_COLOR_ATTACHMENTS_EXT, CONTEXT_INT(Const.MaxColorAttachments),
+     extra_EXT_framebuffer_object },
+   
+   /* GL_EXT_framebuffer_blit
+    * NOTE: GL_DRAW_FRAMEBUFFER_BINDING_EXT == GL_FRAMEBUFFER_BINDING_EXT */
+   { GL_READ_FRAMEBUFFER_BINDING_EXT, LOC_CUSTOM, TYPE_INT, 0,
+     extra_EXT_framebuffer_blit },
+
+   /* GL_EXT_provoking_vertex */
+   { GL_PROVOKING_VERTEX_EXT,
+     CONTEXT_BOOL(Light.ProvokingVertex), extra_EXT_provoking_vertex },
+   { GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT,
+     CONTEXT_BOOL(Const.QuadsFollowProvokingVertexConvention),
+     extra_EXT_provoking_vertex },
+
+   /* GL_ARB_framebuffer_object */
+   { GL_MAX_SAMPLES, CONTEXT_INT(Const.MaxSamples),
+     extra_ARB_framebuffer_object },
+
+   /* GL_APPLE_vertex_array_object */
+   { GL_VERTEX_ARRAY_BINDING_APPLE, ARRAY_INT(Name),
+     extra_APPLE_vertex_array_object },
+
+   /* GL_ARB_seamless_cube_map */
+   { GL_TEXTURE_CUBE_MAP_SEAMLESS,
+     CONTEXT_BOOL(Texture.CubeMapSeamless), extra_ARB_seamless_cube_map },
+
+   /* GL_ARB_sync */
+   { GL_MAX_SERVER_WAIT_TIMEOUT,
+     CONTEXT_INT64(Const.MaxServerWaitTimeout), extra_ARB_sync },
+
+   /* GL_EXT_transform_feedback */
+   { GL_TRANSFORM_FEEDBACK_BUFFER_BINDING, LOC_CUSTOM, TYPE_INT, 0,
+     extra_EXT_transform_feedback },
+   { GL_RASTERIZER_DISCARD, CONTEXT_BOOL(TransformFeedback.RasterDiscard),
+     extra_EXT_transform_feedback },
+   { GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS,
+     CONTEXT_INT(Const.MaxTransformFeedbackInterleavedComponents),
+     extra_EXT_transform_feedback },
+   { GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS,
+     CONTEXT_INT(Const.MaxTransformFeedbackSeparateAttribs),
+     extra_EXT_transform_feedback },
+   { GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS,
+     CONTEXT_INT(Const.MaxTransformFeedbackSeparateComponents),
+     extra_EXT_transform_feedback },
+
+   /* GL_ARB_transform_feedback2 */
+   { GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED, LOC_CUSTOM, TYPE_BOOLEAN, 0,
+     extra_ARB_transform_feedback2 },
+   { GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE, LOC_CUSTOM, TYPE_BOOLEAN, 0,
+     extra_ARB_transform_feedback2 },
+   { GL_TRANSFORM_FEEDBACK_BINDING, LOC_CUSTOM, TYPE_INT, 0,
+     extra_ARB_transform_feedback2 },
+
+   /* GL 3.0 */
+   { GL_NUM_EXTENSIONS, LOC_CUSTOM, TYPE_INT, 0, extra_version_30 },
+   { GL_MAJOR_VERSION, CONTEXT_INT(VersionMajor), extra_version_30 },
+   { GL_MINOR_VERSION, CONTEXT_INT(VersionMinor), extra_version_30  },
+   { GL_CONTEXT_FLAGS, CONTEXT_INT(Const.ContextFlags), extra_version_30  },
+
+   /* GL 3.1 */
+   { GL_PRIMITIVE_RESTART, CONTEXT_BOOL(Array.PrimitiveRestart),
+     extra_version_31 },
+   { GL_PRIMITIVE_RESTART_INDEX, CONTEXT_INT(Array.RestartIndex),
+     extra_version_31 },
+   /* GL 3.2 */
+   { GL_CONTEXT_PROFILE_MASK, CONTEXT_INT(Const.ProfileMask),
+     extra_version_32 },
+#endif /* FEATURE_GL */
+};
+
+/* All we need now is a way to look up the value struct from the enum.
+ * The code generated by gcc for the old generated big switch
+ * statement is a big, balanced, open coded if/else tree, essentially
+ * an unrolled binary search.  It would be natural to sort the new
+ * enum table and use bsearch(), but we will use a read-only hash
+ * table instead.  bsearch() has a nice guaranteed worst case
+ * performance, but we're also guaranteed to hit that worst case
+ * (log2(n) iterations) for about half the enums.  Instead, using an
+ * open addressing hash table, we can find the enum on the first try
+ * for 80% of the enums, 1 collision for 10% and never more than 5
+ * collisions for any enum (typical numbers).  And the code is very
+ * simple, even though it feels a little magic. */
+
+static unsigned short table[1024];
+static const int prime_factor = 89, prime_step = 281;
+
+#ifdef GET_DEBUG
+static void
+print_table_stats(void)
+{
+   int i, j, collisions[11], count, hash, mask;
+   const struct value_desc *d;
+
+   count = 0;
+   mask = Elements(table) - 1;
+   memset(collisions, 0, sizeof collisions);
+
+   for (i = 0; i < Elements(table); i++) {
+      if (!table[i])
+        continue;
+      count++;
+      d = &values[table[i]];
+      hash = (d->pname * prime_factor);
+      j = 0;
+      while (1) {
+        if (values[table[hash & mask]].pname == d->pname)
+           break;
+        hash += prime_step;
+        j++;
+      }
+
+      if (j < 10)
+        collisions[j]++;
+      else
+        collisions[10]++;
    }
 
-/*
- * Check if either of four extensions is enabled.
+   printf("number of enums: %d (total %d)\n", count, Elements(values));
+   for (i = 0; i < Elements(collisions) - 1; i++)
+      if (collisions[i] > 0)
+        printf("  %d enums with %d %scollisions\n",
+               collisions[i], i, i == 10 ? "or more " : "");
+}
+#endif
+
+/**
+ * Initialize the enum hash for a given API 
+ *
+ * This is called from one_time_init() to insert the enum values that
+ * are valid for the API in question into the enum hash table.
+ *
+ * \param the current context, for determining the API in question
  */
-#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4)                             \
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \
-       !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) {               \
-      goto invalid_enum_error;                                         \
+void _mesa_init_get_hash(GLcontext *ctx)
+{
+   int i, hash, index, mask;
+   int api_mask = 0, api_bit;
+
+   mask = Elements(table) - 1;
+   api_bit = 1 << ctx->API;
+
+   for (i = 0; i < Elements(values); i++) {
+      if (values[i].type == TYPE_API_MASK) {
+        api_mask = values[i].offset;
+        continue;
+      }
+      if (!(api_mask & api_bit))
+        continue;
+
+      hash = (values[i].pname * prime_factor) & mask;
+      while (1) {
+        index = hash & mask;
+        if (!table[index]) {
+           table[index] = i;
+           break;
+        }
+        hash += prime_step;
+      }
    }
 
-/*
- * Check GL version.
+#ifdef GET_DEBUG
+   print_table_stats();
+#endif
+}
+
+/**
+ * Handle irregular enums
+ *
+ * Some values don't conform to the "well-known type at context
+ * pointer + offset" pattern, so we have this function to catch all
+ * the corner cases.  Typically, it's a computed value or a one-off
+ * pointer to a custom struct or something.
+ *
+ * In this case we can't return a pointer to the value, so we'll have
+ * to use the temporary variable 'v' declared back in the calling
+ * glGet*v() function to store the result.
+ *
+ * \param ctx the current context
+ * \param d the struct value_desc that describes the enum
+ * \param v pointer to the tmp declared in the calling glGet*v() function
+ */
+static void
+find_custom_value(GLcontext *ctx, const struct value_desc *d, union value *v)
+{
+   struct gl_buffer_object *buffer_obj;
+   struct gl_client_array *array;
+   GLuint unit, *p;
+
+   switch (d->pname) {
+   case GL_TEXTURE_1D:
+   case GL_TEXTURE_2D:
+   case GL_TEXTURE_3D:
+   case GL_TEXTURE_1D_ARRAY_EXT:
+   case GL_TEXTURE_2D_ARRAY_EXT:
+   case GL_TEXTURE_CUBE_MAP_ARB:
+   case GL_TEXTURE_RECTANGLE_NV:
+      v->value_bool = _mesa_IsEnabled(d->pname);
+      break;
+
+   case GL_LINE_STIPPLE_PATTERN:
+      /* This is the only GLushort, special case it here by promoting
+       * to an int rather than introducing a new type. */
+      v->value_int = ctx->Line.StipplePattern;
+      break;
+
+   case GL_CURRENT_RASTER_TEXTURE_COORDS:
+      unit = ctx->Texture.CurrentUnit;
+      v->value_float_4[0] = ctx->Current.RasterTexCoords[unit][0];
+      v->value_float_4[1] = ctx->Current.RasterTexCoords[unit][1];
+      v->value_float_4[2] = ctx->Current.RasterTexCoords[unit][2];
+      v->value_float_4[3] = ctx->Current.RasterTexCoords[unit][3];
+      break;
+
+   case GL_CURRENT_TEXTURE_COORDS:
+      unit = ctx->Texture.CurrentUnit;
+      v->value_float_4[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0];
+      v->value_float_4[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1];
+      v->value_float_4[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2];
+      v->value_float_4[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3];
+      break;
+
+   case GL_COLOR_WRITEMASK:
+      v->value_int_4[0] = ctx->Color.ColorMask[0][RCOMP] ? 1 : 0;
+      v->value_int_4[1] = ctx->Color.ColorMask[0][GCOMP] ? 1 : 0;
+      v->value_int_4[2] = ctx->Color.ColorMask[0][BCOMP] ? 1 : 0;
+      v->value_int_4[3] = ctx->Color.ColorMask[0][ACOMP] ? 1 : 0;
+      break;
+
+   case GL_EDGE_FLAG:
+      v->value_bool = ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0;
+      break;
+
+   case GL_READ_BUFFER:
+      v->value_enum = ctx->ReadBuffer->ColorReadBuffer;
+      break;
+
+   case GL_MAP2_GRID_DOMAIN:
+      v->value_float_4[0] = ctx->Eval.MapGrid2u1;
+      v->value_float_4[1] = ctx->Eval.MapGrid2u2;
+      v->value_float_4[2] = ctx->Eval.MapGrid2v1;
+      v->value_float_4[3] = ctx->Eval.MapGrid2v2;
+      break;
+
+   case GL_TEXTURE_STACK_DEPTH:
+      unit = ctx->Texture.CurrentUnit;
+      v->value_int = ctx->TextureMatrixStack[unit].Depth + 1;
+      break;
+   case GL_TEXTURE_MATRIX:
+      unit = ctx->Texture.CurrentUnit;
+      v->value_matrix = ctx->TextureMatrixStack[unit].Top;
+      break;
+
+   case GL_TEXTURE_COORD_ARRAY:
+   case GL_TEXTURE_COORD_ARRAY_SIZE:
+   case GL_TEXTURE_COORD_ARRAY_TYPE:
+   case GL_TEXTURE_COORD_ARRAY_STRIDE:
+      array = &ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture];
+      v->value_int = *(GLuint *) ((char *) array + d->offset);
+      break;
+
+   case GL_ACTIVE_TEXTURE_ARB:
+      v->value_int = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
+      break;
+   case GL_CLIENT_ACTIVE_TEXTURE_ARB:
+      v->value_int = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
+      break;
+
+   case GL_MODELVIEW_STACK_DEPTH:
+   case GL_PROJECTION_STACK_DEPTH:
+   case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
+      v->value_int = *(GLint *) ((char *) ctx + d->offset) + 1;
+      break;
+
+   case GL_MAX_TEXTURE_SIZE:
+   case GL_MAX_3D_TEXTURE_SIZE:
+   case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
+      p = (GLuint *) ((char *) ctx + d->offset);
+      v->value_int = 1 << (*p - 1);
+      break;
+
+   case GL_SCISSOR_BOX:
+      v->value_int_4[0] = ctx->Scissor.X;
+      v->value_int_4[1] = ctx->Scissor.Y;
+      v->value_int_4[2] = ctx->Scissor.Width;
+      v->value_int_4[3] = ctx->Scissor.Height;
+      break;
+
+   case GL_LIST_INDEX:
+      v->value_int =
+        ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0;
+      break;
+   case GL_LIST_MODE:
+      if (!ctx->CompileFlag)
+        v->value_enum = 0;
+      else if (ctx->ExecuteFlag)
+        v->value_enum = GL_COMPILE_AND_EXECUTE;
+      else
+        v->value_enum = GL_COMPILE;
+      break;
+
+   case GL_VIEWPORT:
+      v->value_int_4[0] = ctx->Viewport.X;
+      v->value_int_4[1] = ctx->Viewport.Y;
+      v->value_int_4[2] = ctx->Viewport.Width;
+      v->value_int_4[3] = ctx->Viewport.Height;
+      break;
+
+   case GL_ACTIVE_STENCIL_FACE_EXT:
+      v->value_enum = ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT;
+      break;
+
+   case GL_STENCIL_FAIL:
+      v->value_enum = ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace];
+      break;
+   case GL_STENCIL_FUNC:
+      v->value_enum = ctx->Stencil.Function[ctx->Stencil.ActiveFace];
+      break;
+   case GL_STENCIL_PASS_DEPTH_FAIL:
+      v->value_enum = ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace];
+      break;
+   case GL_STENCIL_PASS_DEPTH_PASS:
+      v->value_enum = ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace];
+      break;
+   case GL_STENCIL_REF:
+      v->value_int = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
+      break;
+   case GL_STENCIL_VALUE_MASK:
+      v->value_int = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
+      break;
+   case GL_STENCIL_WRITEMASK:
+      v->value_int = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
+      break;
+
+   case GL_NUM_EXTENSIONS:
+      v->value_int = _mesa_get_extension_count(ctx);
+      break;
+
+   case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
+      v->value_int = _mesa_get_color_read_type(ctx);
+      break;
+   case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
+      v->value_int = _mesa_get_color_read_format(ctx);
+      break;
+
+   case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
+      v->value_int = ctx->CurrentStack->Depth + 1;
+      break;
+   case GL_CURRENT_MATRIX_ARB:
+   case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
+      v->value_matrix = ctx->CurrentStack->Top;
+      break;
+
+   case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
+      v->value_int = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
+      break;
+   case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
+      v->value_int_n.n = 
+        _mesa_get_compressed_formats(ctx, v->value_int_n.ints, GL_FALSE);
+      ASSERT(v->value_int_n.n <= 100);
+      break;
+
+   case GL_MAX_VARYING_FLOATS_ARB:
+      v->value_int = ctx->Const.MaxVarying * 4;
+      break;
+
+   /* Various object names */
+
+   case GL_TEXTURE_BINDING_1D:
+   case GL_TEXTURE_BINDING_2D:
+   case GL_TEXTURE_BINDING_3D:
+   case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
+   case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
+   case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
+   case GL_TEXTURE_BINDING_RECTANGLE_NV:
+      unit = ctx->Texture.CurrentUnit;
+      v->value_int =
+        ctx->Texture.Unit[unit].CurrentTex[d->offset]->Name;
+      break;
+
+   /* GL_ARB_vertex_buffer_object */
+   case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
+   case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
+   case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
+   case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
+   case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
+   case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
+   case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
+      buffer_obj = (struct gl_buffer_object *)
+        ((char *) ctx->Array.ArrayObj + d->offset);
+      v->value_int = buffer_obj->Name;
+      break;
+   case GL_ARRAY_BUFFER_BINDING_ARB:
+      v->value_int = ctx->Array.ArrayBufferObj->Name;
+      break;
+   case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
+      v->value_int =
+        ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
+      break;
+   case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
+      v->value_int = ctx->Array.ElementArrayBufferObj->Name;
+      break;
+
+   case GL_FRAGMENT_PROGRAM_BINDING_NV:
+      v->value_int = 
+        ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
+      break;
+   case GL_VERTEX_PROGRAM_BINDING_NV:
+      v->value_int =
+        ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0;
+      break;
+   case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
+      v->value_int = ctx->Pack.BufferObj->Name;
+      break;
+   case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
+      v->value_int = ctx->Unpack.BufferObj->Name;
+      break;
+   case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
+      v->value_int = ctx->TransformFeedback.CurrentBuffer->Name;
+      break;
+   case GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED:
+      v->value_int = ctx->TransformFeedback.CurrentObject->Paused;
+      break;
+   case GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE:
+      v->value_int = ctx->TransformFeedback.CurrentObject->Active;
+      break;
+   case GL_TRANSFORM_FEEDBACK_BINDING:
+      v->value_int = ctx->TransformFeedback.CurrentObject->Name;
+      break;
+   case GL_CURRENT_PROGRAM:
+      v->value_int =
+        ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
+      break;
+   case GL_READ_FRAMEBUFFER_BINDING_EXT:
+      v->value_int = ctx->ReadBuffer->Name;
+      break;
+   case GL_RENDERBUFFER_BINDING_EXT:
+      v->value_int =
+        ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
+      break;
+   case GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES:
+      v->value_int = ctx->Array.ArrayObj->PointSize.BufferObj->Name;
+      break;
+   }   
+}
+
+/**
+ * Check extra constraints on a struct value_desc descriptor
+ *
+ * If a struct value_desc has a non-NULL extra pointer, it means that
+ * there are a number of extra constraints to check or actions to
+ * perform.  The extras is just an integer array where each integer
+ * encode different constraints or actions.
+ *
+ * \param ctx current context
+ * \param func name of calling glGet*v() function for error reporting
+ * \param d the struct value_desc that has the extra constraints
+ *
+ * \return GL_FALSE if one of the constraints was not satisfied,
+ *     otherwise GL_TRUE.
  */
-#define CHECK_VERSION(VERSION)                                         \
-   if (version < VERSION) {                                            \
-      goto invalid_enum_error;                                         \
+static GLboolean
+check_extra(GLcontext *ctx, const char *func, const struct value_desc *d)
+{
+   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
+   int total, enabled;
+   const int *e;
+
+   total = 0;
+   enabled = 0;
+   for (e = d->extra; *e != EXTRA_END; e++)
+      switch (*e) {
+      case EXTRA_VERSION_30:
+        if (version < 30)
+           return GL_FALSE;
+        break;
+      case EXTRA_VERSION_31:
+        if (version < 31)
+           return GL_FALSE;
+        break;
+      case EXTRA_VERSION_32:
+        if (version < 32)
+           return GL_FALSE;
+        break;
+      case EXTRA_NEW_BUFFERS:
+        if (ctx->NewState & _NEW_BUFFERS)
+           _mesa_update_state(ctx);
+        break;
+      case EXTRA_FLUSH_CURRENT:
+        FLUSH_CURRENT(ctx, 0);
+        break;
+      case EXTRA_VALID_DRAW_BUFFER:
+        if (d->pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
+           _mesa_error(ctx, GL_INVALID_OPERATION, "%s(draw buffer %u)",
+                       func, d->pname - GL_DRAW_BUFFER0_ARB);
+           return GL_FALSE;
+        }
+        break;
+      case EXTRA_VALID_TEXTURE_UNIT:
+        if (ctx->Texture.CurrentUnit >= ctx->Const.MaxTextureCoordUnits) {
+           _mesa_error(ctx, GL_INVALID_OPERATION, "%s(texture %u)",
+                       func, ctx->Texture.CurrentUnit);
+           return GL_FALSE;
+        }
+        break;
+      case EXTRA_END:
+        break;
+      default: /* *e is a offset into the extension struct */
+        total++;
+        if (*(GLboolean *) ((char *) &ctx->Extensions + *e))
+           enabled++;
+        break;
+      }
+
+   if (total > 0 && enabled == 0) {
+      _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=%s)", func,
+                  _mesa_lookup_enum_by_nr(d->pname));
+      return GL_FALSE;
    }
 
+   return GL_TRUE;
+}
+
+static const struct value_desc error_value = { 0, 0, TYPE_INVALID };
 
-void GLAPIENTRY
-_mesa_GetBooleanv( GLenum pname, GLboolean *params )
+/**
+ * Find the struct value_desc corresponding to the enum 'pname'.
+ * 
+ * We hash the enum value to get an index into the 'table' array,
+ * which holds the index in the 'values' array of struct value_desc.
+ * Once we've found the entry, we do the extra checks, if any, then
+ * look up the value and return a pointer to it.
+ *
+ * If the value has to be computed (for example, it's the result of a
+ * function call or we need to add 1 to it), we use the tmp 'v' to
+ * store the result.
+ * 
+ * \param func name of glGet*v() func for error reporting
+ * \param pname the enum value we're looking up
+ * \param p is were we return the pointer to the value
+ * \param v a tmp union value variable in the calling glGet*v() function
+ *
+ * \return the struct value_desc corresponding to the enum or a struct
+ *     value_desc of TYPE_INVALID if not found.  This lets the calling
+ *     glGet*v() function jump right into a switch statement and
+ *     handle errors there instead of having to check for NULL.
+ */
+static const struct value_desc *
+find_value(const char *func, GLenum pname, void **p, union value *v)
 {
    GET_CURRENT_CONTEXT(ctx);
-   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-   (void) version;
+   struct gl_texture_unit *unit;
+   int mask, hash;
+   const struct value_desc *d;
 
-   if (!params)
-      return;
+   mask = Elements(table) - 1;
+   hash = (pname * prime_factor);
+   while (1) {
+      d = &values[table[hash & mask]];
+      if (likely(d->pname == pname))
+        break;
 
-   if (ctx->Driver.GetBooleanv &&
-       ctx->Driver.GetBooleanv(ctx, pname, params))
-      return;
+      /* If the enum isn't valid, the hash walk ends with index 0,
+       * which is the API mask entry at the beginning of values[]. */
+      if (d->type == TYPE_API_MASK) {
+        _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=%s)", func,
+                     _mesa_lookup_enum_by_nr(pname));
+        return &error_value;
+      }
+      hash += prime_step;
+   }
 
-   switch (pname) {
-      case GL_ACCUM_RED_BITS:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumRedBits);
-         break;
-      case GL_ACCUM_GREEN_BITS:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumGreenBits);
-         break;
-      case GL_ACCUM_BLUE_BITS:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumBlueBits);
-         break;
-      case GL_ACCUM_ALPHA_BITS:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.accumAlphaBits);
-         break;
-      case GL_ACCUM_CLEAR_VALUE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Accum.ClearColor[3]);
-         break;
-      case GL_ALPHA_BIAS:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaBias);
-         break;
-      case GL_ALPHA_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.alphaBits);
-         break;
-      case GL_ALPHA_SCALE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.AlphaScale);
-         break;
-      case GL_ALPHA_TEST:
-         params[0] = ctx->Color.AlphaEnabled;
-         break;
-      case GL_ALPHA_TEST_FUNC:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.AlphaFunc);
-         break;
-      case GL_ALPHA_TEST_REF:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Color.AlphaRef);
-         break;
-      case GL_ATTRIB_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(ctx->AttribStackDepth);
-         break;
-      case GL_AUTO_NORMAL:
-         params[0] = ctx->Eval.AutoNormal;
-         break;
-      case GL_AUX_BUFFERS:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.numAuxBuffers);
-         break;
-      case GL_BLEND:
-         params[0] = (ctx->Color.BlendEnabled & 1);
-         break;
-      case GL_BLEND_DST:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_SRC_RGB_EXT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_DST_RGB_EXT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC_ALPHA_EXT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendSrcA);
-         break;
-      case GL_BLEND_DST_ALPHA_EXT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendDstA);
-         break;
-      case GL_BLEND_EQUATION:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationRGB );
-         break;
-      case GL_BLEND_EQUATION_ALPHA_EXT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.BlendEquationA );
-         break;
-      case GL_BLEND_COLOR_EXT:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Color.BlendColor[3]);
-         break;
-      case GL_BLUE_BIAS:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueBias);
-         break;
-      case GL_BLUE_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.blueBits);
-         break;
-      case GL_BLUE_SCALE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.BlueScale);
-         break;
-      case GL_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(ctx->ClientAttribStackDepth);
-         break;
-      case GL_CLIP_PLANE0:
-         params[0] = (ctx->Transform.ClipPlanesEnabled >> 0) & 1;
-         break;
-      case GL_CLIP_PLANE1:
-         params[0] = (ctx->Transform.ClipPlanesEnabled >> 1) & 1;
-         break;
-      case GL_CLIP_PLANE2:
-         params[0] = (ctx->Transform.ClipPlanesEnabled >> 2) & 1;
-         break;
-      case GL_CLIP_PLANE3:
-         params[0] = (ctx->Transform.ClipPlanesEnabled >> 3) & 1;
-         break;
-      case GL_CLIP_PLANE4:
-         params[0] = (ctx->Transform.ClipPlanesEnabled >> 4) & 1;
-         break;
-      case GL_CLIP_PLANE5:
-         params[0] = (ctx->Transform.ClipPlanesEnabled >> 5) & 1;
-         break;
-      case GL_COLOR_CLEAR_VALUE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Color.ClearColor[3]);
-         break;
-      case GL_COLOR_MATERIAL:
-         params[0] = ctx->Light.ColorMaterialEnabled;
-         break;
-      case GL_COLOR_MATERIAL_FACE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialFace);
-         break;
-      case GL_COLOR_MATERIAL_PARAMETER:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Light.ColorMaterialMode);
-         break;
-      case GL_COLOR_WRITEMASK:
-         params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
-         params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
-         params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
-         params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
-         break;
-      case GL_CULL_FACE:
-         params[0] = ctx->Polygon.CullFlag;
-         break;
-      case GL_CULL_FACE_MODE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.CullFaceMode);
-         break;
-      case GL_CURRENT_COLOR:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
-         break;
-      case GL_CURRENT_INDEX:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
-         break;
-      case GL_CURRENT_NORMAL:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
-         break;
-      case GL_CURRENT_RASTER_COLOR:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterColor[3]);
-         break;
-      case GL_CURRENT_RASTER_DISTANCE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterDistance);
-         break;
-      case GL_CURRENT_RASTER_INDEX:
-         params[0] = FLOAT_TO_BOOLEAN(1.0);
-         break;
-      case GL_CURRENT_RASTER_POSITION:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterPos[3]);
-         break;
-      case GL_CURRENT_RASTER_SECONDARY_COLOR:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterSecondaryColor[3]);
-         break;
-      case GL_CURRENT_RASTER_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(raster tex coords, unit %u)", unit);
-            return;
-         }
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Current.RasterTexCoords[unit][3]);
-         }
-         break;
-      case GL_CURRENT_RASTER_POSITION_VALID:
-         params[0] = ctx->Current.RasterPosValid;
-         break;
-      case GL_CURRENT_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(current tex coords, unit %u)", unit);
-            return;
-         }
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
-         }
-         break;
-      case GL_DEPTH_BIAS:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthBias);
-         break;
-      case GL_DEPTH_BITS:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.depthBits);
-         break;
-      case GL_DEPTH_CLEAR_VALUE:
-         params[0] = FLOAT_TO_BOOLEAN(((GLfloat) ctx->Depth.Clear));
-         break;
-      case GL_DEPTH_FUNC:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Depth.Func);
-         break;
-      case GL_DEPTH_RANGE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Viewport.Near);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Viewport.Far);
-         break;
-      case GL_DEPTH_SCALE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.DepthScale);
-         break;
-      case GL_DEPTH_TEST:
-         params[0] = ctx->Depth.Test;
-         break;
-      case GL_DEPTH_WRITEMASK:
-         params[0] = ctx->Depth.Mask;
-         break;
-      case GL_DITHER:
-         params[0] = ctx->Color.DitherFlag;
-         break;
-      case GL_DOUBLEBUFFER:
-         params[0] = ctx->DrawBuffer->Visual.doubleBufferMode;
-         break;
-      case GL_DRAW_BUFFER:
-         params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_EDGE_FLAG:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = (ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0);
-         break;
-      case GL_FEEDBACK_BUFFER_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->Feedback.BufferSize);
-         break;
-      case GL_FEEDBACK_BUFFER_TYPE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Feedback.Type);
-         break;
-      case GL_FOG:
-         params[0] = ctx->Fog.Enabled;
-         break;
-      case GL_FOG_COLOR:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Fog.Color[3]);
-         break;
-      case GL_FOG_DENSITY:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Density);
-         break;
-      case GL_FOG_END:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.End);
-         break;
-      case GL_FOG_HINT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Hint.Fog);
-         break;
-      case GL_FOG_INDEX:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Index);
-         break;
-      case GL_FOG_MODE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Fog.Mode);
-         break;
-      case GL_FOG_START:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Fog.Start);
-         break;
-      case GL_FRONT_FACE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontFace);
-         break;
-      case GL_GREEN_BIAS:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenBias);
-         break;
-      case GL_GREEN_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.greenBits);
-         break;
-      case GL_GREEN_SCALE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.GreenScale);
-         break;
-      case GL_INDEX_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.indexBits);
-         break;
-      case GL_INDEX_CLEAR_VALUE:
-         params[0] = INT_TO_BOOLEAN(ctx->Color.ClearIndex);
-         break;
-      case GL_INDEX_MODE:
-         params[0] = GL_FALSE;
-         break;
-      case GL_INDEX_OFFSET:
-         params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexOffset);
-         break;
-      case GL_INDEX_SHIFT:
-         params[0] = INT_TO_BOOLEAN(ctx->Pixel.IndexShift);
-         break;
-      case GL_INDEX_WRITEMASK:
-         params[0] = INT_TO_BOOLEAN(ctx->Color.IndexMask);
-         break;
-      case GL_LIGHT0:
-         params[0] = ctx->Light.Light[0].Enabled;
-         break;
-      case GL_LIGHT1:
-         params[0] = ctx->Light.Light[1].Enabled;
-         break;
-      case GL_LIGHT2:
-         params[0] = ctx->Light.Light[2].Enabled;
-         break;
-      case GL_LIGHT3:
-         params[0] = ctx->Light.Light[3].Enabled;
-         break;
-      case GL_LIGHT4:
-         params[0] = ctx->Light.Light[4].Enabled;
-         break;
-      case GL_LIGHT5:
-         params[0] = ctx->Light.Light[5].Enabled;
-         break;
-      case GL_LIGHT6:
-         params[0] = ctx->Light.Light[6].Enabled;
-         break;
-      case GL_LIGHT7:
-         params[0] = ctx->Light.Light[7].Enabled;
-         break;
-      case GL_LIGHTING:
-         params[0] = ctx->Light.Enabled;
-         break;
-      case GL_LIGHT_MODEL_AMBIENT:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Light.Model.Ambient[3]);
-         break;
-      case GL_LIGHT_MODEL_COLOR_CONTROL:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Light.Model.ColorControl);
-         break;
-      case GL_LIGHT_MODEL_LOCAL_VIEWER:
-         params[0] = ctx->Light.Model.LocalViewer;
-         break;
-      case GL_LIGHT_MODEL_TWO_SIDE:
-         params[0] = ctx->Light.Model.TwoSide;
-         break;
-      case GL_LINE_SMOOTH:
-         params[0] = ctx->Line.SmoothFlag;
-         break;
-      case GL_LINE_SMOOTH_HINT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Hint.LineSmooth);
-         break;
-      case GL_LINE_STIPPLE:
-         params[0] = ctx->Line.StippleFlag;
-         break;
-      case GL_LINE_STIPPLE_PATTERN:
-         params[0] = INT_TO_BOOLEAN(ctx->Line.StipplePattern);
-         break;
-      case GL_LINE_STIPPLE_REPEAT:
-         params[0] = INT_TO_BOOLEAN(ctx->Line.StippleFactor);
-         break;
-      case GL_LINE_WIDTH:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Line.Width);
-         break;
-      case GL_LINE_WIDTH_GRANULARITY:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.LineWidthGranularity);
-         break;
-      case GL_LINE_WIDTH_RANGE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidthAA);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidthAA);
-         break;
-      case GL_ALIASED_LINE_WIDTH_RANGE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinLineWidth);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxLineWidth);
-         break;
-      case GL_LIST_BASE:
-         params[0] = INT_TO_BOOLEAN(ctx->List.ListBase);
-         break;
-      case GL_LIST_INDEX:
-         params[0] = INT_TO_BOOLEAN((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
-         break;
-      case GL_LIST_MODE:
-         {
-         GLenum mode;
-         if (!ctx->CompileFlag)
-            mode = 0;
-         else if (ctx->ExecuteFlag)
-            mode = GL_COMPILE_AND_EXECUTE;
-         else
-            mode = GL_COMPILE;
-         params[0] = ENUM_TO_BOOLEAN(mode);
-         }
-         break;
-      case GL_INDEX_LOGIC_OP:
-         params[0] = ctx->Color.IndexLogicOpEnabled;
-         break;
-      case GL_COLOR_LOGIC_OP:
-         params[0] = ctx->Color.ColorLogicOpEnabled;
-         break;
-      case GL_LOGIC_OP_MODE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Color.LogicOp);
-         break;
-      case GL_MAP1_COLOR_4:
-         params[0] = ctx->Eval.Map1Color4;
-         break;
-      case GL_MAP1_GRID_DOMAIN:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u1);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid1u2);
-         break;
-      case GL_MAP1_GRID_SEGMENTS:
-         params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid1un);
-         break;
-      case GL_MAP1_INDEX:
-         params[0] = ctx->Eval.Map1Index;
-         break;
-      case GL_MAP1_NORMAL:
-         params[0] = ctx->Eval.Map1Normal;
-         break;
-      case GL_MAP1_TEXTURE_COORD_1:
-         params[0] = ctx->Eval.Map1TextureCoord1;
-         break;
-      case GL_MAP1_TEXTURE_COORD_2:
-         params[0] = ctx->Eval.Map1TextureCoord2;
-         break;
-      case GL_MAP1_TEXTURE_COORD_3:
-         params[0] = ctx->Eval.Map1TextureCoord3;
-         break;
-      case GL_MAP1_TEXTURE_COORD_4:
-         params[0] = ctx->Eval.Map1TextureCoord4;
-         break;
-      case GL_MAP1_VERTEX_3:
-         params[0] = ctx->Eval.Map1Vertex3;
-         break;
-      case GL_MAP1_VERTEX_4:
-         params[0] = ctx->Eval.Map1Vertex4;
-         break;
-      case GL_MAP2_COLOR_4:
-         params[0] = ctx->Eval.Map2Color4;
-         break;
-      case GL_MAP2_GRID_DOMAIN:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u1);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2u2);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v1);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Eval.MapGrid2v2);
-         break;
-      case GL_MAP2_GRID_SEGMENTS:
-         params[0] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2un);
-         params[1] = INT_TO_BOOLEAN(ctx->Eval.MapGrid2vn);
-         break;
-      case GL_MAP2_INDEX:
-         params[0] = ctx->Eval.Map2Index;
-         break;
-      case GL_MAP2_NORMAL:
-         params[0] = ctx->Eval.Map2Normal;
-         break;
-      case GL_MAP2_TEXTURE_COORD_1:
-         params[0] = ctx->Eval.Map2TextureCoord1;
-         break;
-      case GL_MAP2_TEXTURE_COORD_2:
-         params[0] = ctx->Eval.Map2TextureCoord2;
-         break;
-      case GL_MAP2_TEXTURE_COORD_3:
-         params[0] = ctx->Eval.Map2TextureCoord3;
-         break;
-      case GL_MAP2_TEXTURE_COORD_4:
-         params[0] = ctx->Eval.Map2TextureCoord4;
-         break;
-      case GL_MAP2_VERTEX_3:
-         params[0] = ctx->Eval.Map2Vertex3;
-         break;
-      case GL_MAP2_VERTEX_4:
-         params[0] = ctx->Eval.Map2Vertex4;
-         break;
-      case GL_MAP_COLOR:
-         params[0] = ctx->Pixel.MapColorFlag;
-         break;
-      case GL_MAP_STENCIL:
-         params[0] = ctx->Pixel.MapStencilFlag;
-         break;
-      case GL_MATRIX_MODE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Transform.MatrixMode);
-         break;
-      case GL_MAX_ATTRIB_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(MAX_ATTRIB_STACK_DEPTH);
-         break;
-      case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(MAX_CLIENT_ATTRIB_STACK_DEPTH);
-         break;
-      case GL_MAX_CLIP_PLANES:
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxClipPlanes);
-         break;
-      case GL_MAX_ELEMENTS_VERTICES:
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
-         break;
-      case GL_MAX_ELEMENTS_INDICES:
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayLockSize);
-         break;
-      case GL_MAX_EVAL_ORDER:
-         params[0] = INT_TO_BOOLEAN(MAX_EVAL_ORDER);
-         break;
-      case GL_MAX_LIGHTS:
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxLights);
-         break;
-      case GL_MAX_LIST_NESTING:
-         params[0] = INT_TO_BOOLEAN(MAX_LIST_NESTING);
-         break;
-      case GL_MAX_MODELVIEW_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(MAX_MODELVIEW_STACK_DEPTH);
-         break;
-      case GL_MAX_NAME_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(MAX_NAME_STACK_DEPTH);
-         break;
-      case GL_MAX_PIXEL_MAP_TABLE:
-         params[0] = INT_TO_BOOLEAN(MAX_PIXEL_MAP_TABLE);
-         break;
-      case GL_MAX_PROJECTION_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(MAX_PROJECTION_STACK_DEPTH);
-         break;
-      case GL_MAX_TEXTURE_SIZE:
-         params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.MaxTextureLevels - 1));
-         break;
-      case GL_MAX_3D_TEXTURE_SIZE:
-         params[0] = INT_TO_BOOLEAN(1 << (ctx->Const.Max3DTextureLevels - 1));
-         break;
-      case GL_MAX_TEXTURE_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(MAX_TEXTURE_STACK_DEPTH);
-         break;
-      case GL_MAX_VIEWPORT_DIMS:
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxViewportWidth);
-         params[1] = INT_TO_BOOLEAN(ctx->Const.MaxViewportHeight);
-         break;
-      case GL_MODELVIEW_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_MODELVIEW_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(ctx->ModelviewMatrixStack.Depth + 1);
-         break;
-      case GL_NAME_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(ctx->Select.NameStackDepth);
-         break;
-      case GL_NORMALIZE:
-         params[0] = ctx->Transform.Normalize;
-         break;
-      case GL_PACK_ALIGNMENT:
-         params[0] = INT_TO_BOOLEAN(ctx->Pack.Alignment);
-         break;
-      case GL_PACK_LSB_FIRST:
-         params[0] = ctx->Pack.LsbFirst;
-         break;
-      case GL_PACK_ROW_LENGTH:
-         params[0] = INT_TO_BOOLEAN(ctx->Pack.RowLength);
-         break;
-      case GL_PACK_SKIP_PIXELS:
-         params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipPixels);
-         break;
-      case GL_PACK_SKIP_ROWS:
-         params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipRows);
-         break;
-      case GL_PACK_SWAP_BYTES:
-         params[0] = ctx->Pack.SwapBytes;
-         break;
-      case GL_PACK_SKIP_IMAGES_EXT:
-         params[0] = INT_TO_BOOLEAN(ctx->Pack.SkipImages);
-         break;
-      case GL_PACK_IMAGE_HEIGHT_EXT:
-         params[0] = INT_TO_BOOLEAN(ctx->Pack.ImageHeight);
-         break;
-      case GL_PACK_INVERT_MESA:
-         params[0] = ctx->Pack.Invert;
-         break;
-      case GL_PERSPECTIVE_CORRECTION_HINT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PerspectiveCorrection);
-         break;
-      case GL_PIXEL_MAP_A_TO_A_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.AtoA.Size);
-         break;
-      case GL_PIXEL_MAP_B_TO_B_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.BtoB.Size);
-         break;
-      case GL_PIXEL_MAP_G_TO_G_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.GtoG.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_A_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoA.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_B_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoB.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_G_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoG.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_I_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoI.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_R_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.ItoR.Size);
-         break;
-      case GL_PIXEL_MAP_R_TO_R_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.RtoR.Size);
-         break;
-      case GL_PIXEL_MAP_S_TO_S_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->PixelMaps.StoS.Size);
-         break;
-      case GL_POINT_SIZE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Size);
-         break;
-      case GL_POINT_SIZE_GRANULARITY:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.PointSizeGranularity);
-         break;
-      case GL_POINT_SIZE_RANGE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSizeAA);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSizeAA);
-         break;
-      case GL_ALIASED_POINT_SIZE_RANGE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MinPointSize);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Const.MaxPointSize);
-         break;
-      case GL_POINT_SMOOTH:
-         params[0] = ctx->Point.SmoothFlag;
-         break;
-      case GL_POINT_SMOOTH_HINT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PointSmooth);
-         break;
-      case GL_POINT_SIZE_MIN_EXT:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MinSize);
-         break;
-      case GL_POINT_SIZE_MAX_EXT:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Point.MaxSize);
-         break;
-      case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Threshold);
-         break;
-      case GL_DISTANCE_ATTENUATION_EXT:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Point.Params[0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Point.Params[1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Point.Params[2]);
-         break;
-      case GL_POLYGON_MODE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Polygon.FrontMode);
-         params[1] = ENUM_TO_BOOLEAN(ctx->Polygon.BackMode);
-         break;
-      case GL_POLYGON_OFFSET_BIAS_EXT:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits);
-         break;
-      case GL_POLYGON_OFFSET_FACTOR:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetFactor );
-         break;
-      case GL_POLYGON_OFFSET_UNITS:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Polygon.OffsetUnits );
-         break;
-      case GL_POLYGON_OFFSET_POINT:
-         params[0] = ctx->Polygon.OffsetPoint;
-         break;
-      case GL_POLYGON_OFFSET_LINE:
-         params[0] = ctx->Polygon.OffsetLine;
-         break;
-      case GL_POLYGON_OFFSET_FILL:
-         params[0] = ctx->Polygon.OffsetFill;
-         break;
-      case GL_POLYGON_SMOOTH:
-         params[0] = ctx->Polygon.SmoothFlag;
-         break;
-      case GL_POLYGON_SMOOTH_HINT:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Hint.PolygonSmooth);
-         break;
-      case GL_POLYGON_STIPPLE:
-         params[0] = ctx->Polygon.StippleFlag;
-         break;
-      case GL_PROJECTION_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_PROJECTION_STACK_DEPTH:
-         params[0] = INT_TO_BOOLEAN(ctx->ProjectionMatrixStack.Depth + 1);
-         break;
-      case GL_READ_BUFFER:
-         params[0] = ENUM_TO_BOOLEAN(ctx->ReadBuffer->ColorReadBuffer);
-         break;
-      case GL_RED_BIAS:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedBias);
-         break;
-      case GL_RED_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.redBits);
-         break;
-      case GL_RED_SCALE:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.RedScale);
-         break;
-      case GL_RENDER_MODE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->RenderMode);
-         break;
-      case GL_RESCALE_NORMAL:
-         params[0] = ctx->Transform.RescaleNormals;
-         break;
-      case GL_RGBA_MODE:
-         params[0] = GL_TRUE;
-         break;
-      case GL_SCISSOR_BOX:
-         params[0] = INT_TO_BOOLEAN(ctx->Scissor.X);
-         params[1] = INT_TO_BOOLEAN(ctx->Scissor.Y);
-         params[2] = INT_TO_BOOLEAN(ctx->Scissor.Width);
-         params[3] = INT_TO_BOOLEAN(ctx->Scissor.Height);
-         break;
-      case GL_SCISSOR_TEST:
-         params[0] = ctx->Scissor.Enabled;
-         break;
-      case GL_SELECTION_BUFFER_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->Select.BufferSize);
-         break;
-      case GL_SHADE_MODEL:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Light.ShadeModel);
-         break;
-      case GL_SHARED_TEXTURE_PALETTE_EXT:
-         params[0] = ctx->Texture.SharedPalette;
-         break;
-      case GL_STENCIL_BITS:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.stencilBits);
-         break;
-      case GL_STENCIL_CLEAR_VALUE:
-         params[0] = INT_TO_BOOLEAN(ctx->Stencil.Clear);
-         break;
-      case GL_STENCIL_FAIL:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_FUNC:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_REF:
-         params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_TEST:
-         params[0] = ctx->Stencil.Enabled;
-         break;
-      case GL_STENCIL_VALUE_MASK:
-         params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_WRITEMASK:
-         params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STEREO:
-         params[0] = ctx->DrawBuffer->Visual.stereoMode;
-         break;
-      case GL_SUBPIXEL_BITS:
-         params[0] = INT_TO_BOOLEAN(ctx->Const.SubPixelBits);
-         break;
-      case GL_TEXTURE_1D:
-         params[0] = _mesa_IsEnabled(GL_TEXTURE_1D);
-         break;
-      case GL_TEXTURE_2D:
-         params[0] = _mesa_IsEnabled(GL_TEXTURE_2D);
-         break;
-      case GL_TEXTURE_3D:
-         params[0] = _mesa_IsEnabled(GL_TEXTURE_3D);
-         break;
-      case GL_TEXTURE_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = _mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT);
-         break;
-      case GL_TEXTURE_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = _mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT);
-         break;
-      case GL_TEXTURE_BINDING_1D:
-         params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_2D:
-         params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_3D:
-         params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
-         break;
-      case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxArrayTextureLayers);
-         break;
-      case GL_TEXTURE_GEN_S:
-         params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0);
-         break;
-      case GL_TEXTURE_GEN_T:
-         params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0);
-         break;
-      case GL_TEXTURE_GEN_R:
-         params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0);
-         break;
-      case GL_TEXTURE_GEN_Q:
-         params[0] = ((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0);
-         break;
-      case GL_TEXTURE_MATRIX:
-         {
-         const GLfloat *matrix;
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
-                        unit);
-            return;
-         }
-         matrix = ctx->TextureMatrixStack[unit].Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_TEXTURE_STACK_DEPTH:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(texture stack depth, unit %u)", unit);
-            return;
-         }
-         params[0] = INT_TO_BOOLEAN(ctx->TextureMatrixStack[unit].Depth + 1);
-         }
-         break;
-      case GL_UNPACK_ALIGNMENT:
-         params[0] = INT_TO_BOOLEAN(ctx->Unpack.Alignment);
-         break;
-      case GL_UNPACK_LSB_FIRST:
-         params[0] = ctx->Unpack.LsbFirst;
-         break;
-      case GL_UNPACK_ROW_LENGTH:
-         params[0] = INT_TO_BOOLEAN(ctx->Unpack.RowLength);
-         break;
-      case GL_UNPACK_SKIP_PIXELS:
-         params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipPixels);
-         break;
-      case GL_UNPACK_SKIP_ROWS:
-         params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipRows);
-         break;
-      case GL_UNPACK_SWAP_BYTES:
-         params[0] = ctx->Unpack.SwapBytes;
-         break;
-      case GL_UNPACK_SKIP_IMAGES_EXT:
-         params[0] = INT_TO_BOOLEAN(ctx->Unpack.SkipImages);
-         break;
-      case GL_UNPACK_IMAGE_HEIGHT_EXT:
-         params[0] = INT_TO_BOOLEAN(ctx->Unpack.ImageHeight);
-         break;
-      case GL_UNPACK_CLIENT_STORAGE_APPLE:
-         params[0] = ctx->Unpack.ClientStorage;
-         break;
-      case GL_VIEWPORT:
-         params[0] = INT_TO_BOOLEAN(ctx->Viewport.X);
-         params[1] = INT_TO_BOOLEAN(ctx->Viewport.Y);
-         params[2] = INT_TO_BOOLEAN(ctx->Viewport.Width);
-         params[3] = INT_TO_BOOLEAN(ctx->Viewport.Height);
-         break;
-      case GL_ZOOM_X:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomX);
-         break;
-      case GL_ZOOM_Y:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.ZoomY);
-         break;
-      case GL_VERTEX_ARRAY:
-         params[0] = ctx->Array.ArrayObj->Vertex.Enabled;
-         break;
-      case GL_VERTEX_ARRAY_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Size);
-         break;
-      case GL_VERTEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Type);
-         break;
-      case GL_VERTEX_ARRAY_STRIDE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.Stride);
-         break;
-      case GL_VERTEX_ARRAY_COUNT_EXT:
-         params[0] = INT_TO_BOOLEAN(0);
-         break;
-      case GL_NORMAL_ARRAY:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Enabled);
-         break;
-      case GL_NORMAL_ARRAY_TYPE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Type);
-         break;
-      case GL_NORMAL_ARRAY_STRIDE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.Stride);
-         break;
-      case GL_NORMAL_ARRAY_COUNT_EXT:
-         params[0] = INT_TO_BOOLEAN(0);
-         break;
-      case GL_COLOR_ARRAY:
-         params[0] = ctx->Array.ArrayObj->Color.Enabled;
-         break;
-      case GL_COLOR_ARRAY_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Size);
-         break;
-      case GL_COLOR_ARRAY_TYPE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Type);
-         break;
-      case GL_COLOR_ARRAY_STRIDE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.Stride);
-         break;
-      case GL_COLOR_ARRAY_COUNT_EXT:
-         params[0] = INT_TO_BOOLEAN(0);
-         break;
-      case GL_INDEX_ARRAY:
-         params[0] = ctx->Array.ArrayObj->Index.Enabled;
-         break;
-      case GL_INDEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Type);
-         break;
-      case GL_INDEX_ARRAY_STRIDE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.Stride);
-         break;
-      case GL_INDEX_ARRAY_COUNT_EXT:
-         params[0] = INT_TO_BOOLEAN(0);
-         break;
-      case GL_TEXTURE_COORD_ARRAY:
-         params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled;
-         break;
-      case GL_TEXTURE_COORD_ARRAY_SIZE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_TYPE:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_STRIDE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
-         params[0] = INT_TO_BOOLEAN(0);
-         break;
-      case GL_EDGE_FLAG_ARRAY:
-         params[0] = ctx->Array.ArrayObj->EdgeFlag.Enabled;
-         break;
-      case GL_EDGE_FLAG_ARRAY_STRIDE:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.Stride);
-         break;
-      case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
-         params[0] = INT_TO_BOOLEAN(0);
-         break;
-      case GL_MAX_TEXTURE_UNITS_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureUnits);
-         break;
-      case GL_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
-         break;
-      case GL_CLIENT_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = INT_TO_BOOLEAN(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
-         break;
-      case GL_TEXTURE_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = _mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB);
-         break;
-      case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
-         break;
-      case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = INT_TO_BOOLEAN((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
-         break;
-      case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Hint.TextureCompression);
-         break;
-      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         params[0] = INT_TO_BOOLEAN(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
-         break;
-      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         {
-         GLint formats[100];
-         GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-         ASSERT(n <= 100);
-         for (i = 0; i < n; i++)
-            params[i] = ENUM_TO_BOOLEAN(formats[i]);
-         }
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = INT_TO_BOOLEAN(ctx->Array.LockFirst);
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = INT_TO_BOOLEAN(ctx->Array.LockCount);
-         break;
-      case GL_TRANSPOSE_COLOR_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_COLOR_MATRIX_SGI:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = INT_TO_BOOLEAN(ctx->ColorMatrixStack.Depth + 1);
-         break;
-      case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = INT_TO_BOOLEAN(MAX_COLOR_STACK_DEPTH);
-         break;
-      case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[0]);
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[1]);
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[2]);
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixScale[3]);
-         break;
-      case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[0]);
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[1]);
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[2]);
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostColorMatrixBias[3]);
-         break;
-      case GL_CONVOLUTION_1D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.Convolution1DEnabled;
-         break;
-      case GL_CONVOLUTION_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.Convolution2DEnabled;
-         break;
-      case GL_SEPARABLE_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.Separable2DEnabled;
-         break;
-      case GL_POST_CONVOLUTION_RED_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[0]);
-         break;
-      case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[1]);
-         break;
-      case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[2]);
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionScale[3]);
-         break;
-      case GL_POST_CONVOLUTION_RED_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[0]);
-         break;
-      case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[1]);
-         break;
-      case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[2]);
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Pixel.PostConvolutionBias[3]);
-         break;
-      case GL_HISTOGRAM:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = ctx->Pixel.HistogramEnabled;
-         break;
-      case GL_MINMAX:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = ctx->Pixel.MinMaxEnabled;
-         break;
-      case GL_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION];
-         break;
-      case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION];
-         break;
-      case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX];
-         break;
-      case GL_TEXTURE_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_texture_color_table);
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled;
-         break;
-      case GL_COLOR_SUM_EXT:
-         CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
-         params[0] = ctx->Fog.ColorSumEnabled;
-         break;
-      case GL_CURRENT_SECONDARY_COLOR_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
-         params[2] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
-         params[3] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = ctx->Array.ArrayObj->SecondaryColor.Enabled;
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Type);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Stride);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.Size);
-         break;
-      case GL_CURRENT_FOG_COORDINATE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ctx->Array.ArrayObj->FogCoord.Enabled;
-         break;
-      case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Type);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.Stride);
-         break;
-      case GL_FOG_COORDINATE_SOURCE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Fog.FogCoordinateSource);
-         break;
-      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
-         CHECK_EXT1(EXT_texture_lod_bias);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureLodBias);
-         break;
-      case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         CHECK_EXT1(EXT_texture_filter_anisotropic);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxTextureMaxAnisotropy);
-         break;
-      case GL_MULTISAMPLE_ARB:
-         params[0] = ctx->Multisample.Enabled;
-         break;
-      case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         params[0] = ctx->Multisample.SampleAlphaToCoverage;
-         break;
-      case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         params[0] = ctx->Multisample.SampleAlphaToOne;
-         break;
-      case GL_SAMPLE_COVERAGE_ARB:
-         params[0] = ctx->Multisample.SampleCoverage;
-         break;
-      case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Multisample.SampleCoverageValue);
-         break;
-      case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         params[0] = ctx->Multisample.SampleCoverageInvert;
-         break;
-      case GL_SAMPLE_BUFFERS_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.sampleBuffers);
-         break;
-      case GL_SAMPLES_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Visual.samples);
-         break;
-      case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         CHECK_EXT1(IBM_rasterpos_clip);
-         params[0] = ctx->Transform.RasterPositionUnclipped;
-         break;
-      case GL_POINT_SPRITE_NV:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = ctx->Point.PointSprite;
-         break;
-      case GL_POINT_SPRITE_R_MODE_NV:
-         CHECK_EXT1(NV_point_sprite);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteRMode);
-         break;
-      case GL_POINT_SPRITE_COORD_ORIGIN:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Point.SpriteOrigin);
-         break;
-      case GL_GENERATE_MIPMAP_HINT_SGIS:
-         CHECK_EXT1(SGIS_generate_mipmap);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Hint.GenerateMipmap);
-         break;
-      case GL_VERTEX_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = INT_TO_BOOLEAN((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY0_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[0].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY1_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[1].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY2_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[2].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY3_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[3].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[4].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY5_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[5].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY6_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[6].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY7_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[7].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY8_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[8].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY9_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[9].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY10_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[10].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY11_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[11].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY12_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[12].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY13_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[13].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY14_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[14].Enabled;
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY15_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Array.ArrayObj->VertexAttrib[15].Enabled;
-         break;
-      case GL_MAP1_VERTEX_ATTRIB0_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[0];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB1_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[1];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB2_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[2];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB3_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[3];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB4_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[4];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB5_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[5];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB6_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[6];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB7_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[7];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB8_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[8];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB9_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[9];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB10_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[10];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB11_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[11];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB12_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[12];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB13_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[13];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB14_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[14];
-         break;
-      case GL_MAP1_VERTEX_ATTRIB15_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = ctx->Eval.Map1Attrib[15];
-         break;
-      case GL_FRAGMENT_PROGRAM_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = ctx->FragmentProgram.Enabled;
-         break;
-      case GL_FRAGMENT_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = INT_TO_BOOLEAN(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
-         break;
-      case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = INT_TO_BOOLEAN(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
-         break;
-      case GL_TEXTURE_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = _mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV);
-         break;
-      case GL_TEXTURE_BINDING_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = INT_TO_BOOLEAN(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
-         break;
-      case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureRectSize);
-         break;
-      case GL_STENCIL_TEST_TWO_SIDE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = ctx->Stencil.TestTwoSide;
-         break;
-      case GL_ACTIVE_STENCIL_FACE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
-         break;
-      case GL_MAX_SHININESS_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxShininess);
-         break;
-      case GL_MAX_SPOT_EXPONENT_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Const.MaxSpotExponent);
-         break;
-      case GL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayBufferObj->Name);
-         break;
-      case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
-         break;
-      case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Normal.BufferObj->Name);
-         break;
-      case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Color.BufferObj->Name);
-         break;
-      case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Index.BufferObj->Name);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
-         break;
-      case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
-         break;
-      case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ElementArrayBufferObj->Name);
-         break;
-      case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = INT_TO_BOOLEAN(ctx->Pack.BufferObj->Name);
-         break;
-      case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = INT_TO_BOOLEAN(ctx->Unpack.BufferObj->Name);
-         break;
-      case GL_VERTEX_PROGRAM_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = ctx->VertexProgram.Enabled;
-         break;
-      case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = ctx->VertexProgram.PointSizeEnabled;
-         break;
-      case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = ctx->VertexProgram.TwoSideEnabled;
-         break;
-      case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrixStackDepth);
-         break;
-      case GL_MAX_PROGRAM_MATRICES_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxProgramMatrices);
-         break;
-      case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = ctx->CurrentStack->Depth + 1;
-         break;
-      case GL_CURRENT_MATRIX_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
-         CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = FLOAT_TO_BOOLEAN(matrix[0]);
-         params[1] = FLOAT_TO_BOOLEAN(matrix[4]);
-         params[2] = FLOAT_TO_BOOLEAN(matrix[8]);
-         params[3] = FLOAT_TO_BOOLEAN(matrix[12]);
-         params[4] = FLOAT_TO_BOOLEAN(matrix[1]);
-         params[5] = FLOAT_TO_BOOLEAN(matrix[5]);
-         params[6] = FLOAT_TO_BOOLEAN(matrix[9]);
-         params[7] = FLOAT_TO_BOOLEAN(matrix[13]);
-         params[8] = FLOAT_TO_BOOLEAN(matrix[2]);
-         params[9] = FLOAT_TO_BOOLEAN(matrix[6]);
-         params[10] = FLOAT_TO_BOOLEAN(matrix[10]);
-         params[11] = FLOAT_TO_BOOLEAN(matrix[14]);
-         params[12] = FLOAT_TO_BOOLEAN(matrix[3]);
-         params[13] = FLOAT_TO_BOOLEAN(matrix[7]);
-         params[14] = FLOAT_TO_BOOLEAN(matrix[11]);
-         params[15] = FLOAT_TO_BOOLEAN(matrix[15]);
-         }
-         break;
-      case GL_MAX_VERTEX_ATTRIBS_ARB:
-         CHECK_EXT1(ARB_vertex_program);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxAttribs);
-         break;
-      case GL_PROGRAM_ERROR_POSITION_ARB:
-         CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
-         params[0] = INT_TO_BOOLEAN(ctx->Program.ErrorPos);
-         break;
-      case GL_FRAGMENT_PROGRAM_ARB:
-         CHECK_EXT1(ARB_fragment_program);
-         params[0] = ctx->FragmentProgram.Enabled;
-         break;
-      case GL_MAX_TEXTURE_COORDS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureCoordUnits);
-         break;
-      case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTextureImageUnits);
-         break;
-      case GL_DEPTH_BOUNDS_TEST_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = ctx->Depth.BoundsTest;
-         break;
-      case GL_DEPTH_BOUNDS_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMin);
-         params[1] = FLOAT_TO_BOOLEAN(ctx->Depth.BoundsMax);
-         break;
-      case GL_DEPTH_CLAMP:
-         CHECK_EXT1(ARB_depth_clamp);
-         params[0] = ctx->Transform.DepthClamp;
-         break;
-      case GL_MAX_DRAW_BUFFERS_ARB:
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxDrawBuffers);
-         break;
-      case GL_DRAW_BUFFER0_ARB:
-         params[0] = ENUM_TO_BOOLEAN(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_DRAW_BUFFER1_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
-         params[0] = ENUM_TO_BOOLEAN(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER2_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
-         params[0] = ENUM_TO_BOOLEAN(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER3_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
-         params[0] = ENUM_TO_BOOLEAN(buffer);
-         }
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_type(ctx));
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = INT_TO_BOOLEAN(_mesa_get_color_read_format(ctx));
-         break;
-      case GL_NUM_FRAGMENT_REGISTERS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(6);
-         break;
-      case GL_NUM_FRAGMENT_CONSTANTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(8);
-         break;
-      case GL_NUM_PASSES_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(2);
-         break;
-      case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(8);
-         break;
-      case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(16);
-         break;
-      case GL_COLOR_ALPHA_PAIRING_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = GL_TRUE;
-         break;
-      case GL_NUM_LOOPBACK_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(3);
-         break;
-      case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(3);
-         break;
-      case GL_STENCIL_BACK_FUNC:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.Function[1]);
-         break;
-      case GL_STENCIL_BACK_VALUE_MASK:
-         params[0] = INT_TO_BOOLEAN(ctx->Stencil.ValueMask[1]);
-         break;
-      case GL_STENCIL_BACK_WRITEMASK:
-         params[0] = INT_TO_BOOLEAN(ctx->Stencil.WriteMask[1]);
-         break;
-      case GL_STENCIL_BACK_REF:
-         params[0] = INT_TO_BOOLEAN(ctx->Stencil.Ref[1]);
-         break;
-      case GL_STENCIL_BACK_FAIL:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.FailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZFailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_BOOLEAN(ctx->Stencil.ZPassFunc[1]);
-         break;
-      case GL_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = INT_TO_BOOLEAN(ctx->DrawBuffer->Name);
-         break;
-      case GL_RENDERBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = INT_TO_BOOLEAN(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
-         break;
-      case GL_MAX_COLOR_ATTACHMENTS_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxColorAttachments);
-         break;
-      case GL_MAX_RENDERBUFFER_SIZE_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxRenderbufferSize);
-         break;
-      case GL_READ_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_blit);
-         params[0] = INT_TO_BOOLEAN(ctx->ReadBuffer->Name);
-         break;
-      case GL_PROVOKING_VERTEX_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = ctx->Light.ProvokingVertex;
-         break;
-      case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = ctx->Const.QuadsFollowProvokingVertexConvention;
-         break;
-      case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.FragmentProgram.MaxUniformComponents);
-         break;
-      case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = ENUM_TO_BOOLEAN(ctx->Hint.FragmentShaderDerivative);
-         break;
-      case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.VertexProgram.MaxUniformComponents);
-         break;
-      case GL_MAX_VARYING_FLOATS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVarying * 4);
-         break;
-      case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxVertexTextureImageUnits);
-         break;
-      case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxCombinedTextureImageUnits);
-         break;
-      case GL_CURRENT_PROGRAM:
-         CHECK_EXT1(ARB_shader_objects);
-         params[0] = INT_TO_BOOLEAN(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
-         break;
-      case GL_MAX_SAMPLES:
-         CHECK_EXT1(ARB_framebuffer_object);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxSamples);
-         break;
-      case GL_VERTEX_ARRAY_BINDING_APPLE:
-         CHECK_EXT1(APPLE_vertex_array_object);
-         params[0] = INT_TO_BOOLEAN(ctx->Array.ArrayObj->Name);
-         break;
-      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
-         CHECK_EXT1(ARB_seamless_cube_map);
-         params[0] = ctx->Texture.CubeMapSeamless;
-         break;
-      case GL_MAX_SERVER_WAIT_TIMEOUT:
-         CHECK_EXT1(ARB_sync);
-         params[0] = INT64_TO_BOOLEAN(ctx->Const.MaxServerWaitTimeout);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = INT_TO_BOOLEAN(ctx->TransformFeedback.CurrentBuffer->Name);
-         break;
-      case GL_RASTERIZER_DISCARD:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = ctx->TransformFeedback.RasterDiscard;
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackInterleavedComponents);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackSeparateAttribs);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.MaxTransformFeedbackSeparateComponents);
-         break;
-      case GL_NUM_EXTENSIONS:
-         CHECK_VERSION(30);
-         params[0] = INT_TO_BOOLEAN(_mesa_get_extension_count(ctx));
-         break;
-      case GL_MAJOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = INT_TO_BOOLEAN(ctx->VersionMajor);
-         break;
-      case GL_MINOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = INT_TO_BOOLEAN(ctx->VersionMinor);
-         break;
-      case GL_CONTEXT_FLAGS:
-         CHECK_VERSION(30);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.ContextFlags);
-         break;
-      case GL_PRIMITIVE_RESTART:
-         CHECK_VERSION(31);
-         params[0] = ctx->Array.PrimitiveRestart;
-         break;
-      case GL_PRIMITIVE_RESTART_INDEX:
-         CHECK_VERSION(31);
-         params[0] = INT_TO_BOOLEAN(ctx->Array.RestartIndex);
-         break;
-      case GL_CONTEXT_PROFILE_MASK:
-         CHECK_VERSION(32);
-         params[0] = INT_TO_BOOLEAN(ctx->Const.ProfileMask);
-         break;
-      default:
-         goto invalid_enum_error;
+   if (unlikely(d->extra && !check_extra(ctx, func, d)))
+      return &error_value;
+
+   switch (d->location) {
+   case LOC_BUFFER:
+      *p = ((char *) ctx->DrawBuffer + d->offset);
+      return d;
+   case LOC_CONTEXT:
+      *p = ((char *) ctx + d->offset);
+      return d;
+   case LOC_ARRAY:
+      *p = ((char *) ctx->Array.ArrayObj + d->offset);
+      return d;
+   case LOC_TEXUNIT:
+      unit = &ctx->Texture.Unit[ctx->Texture.CurrentUnit];
+      *p = ((char *) unit + d->offset);
+      return d;
+   case LOC_CUSTOM:
+      find_custom_value(ctx, d, v);
+      *p = v;
+      return d;
+   default:
+      assert(0);
+      break;
    }
-   return;
 
-invalid_enum_error:
-   _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanv(pname=0x%x)", pname);
+   /* silence warning */
+   return &error_value;
 }
 
+static const int transpose[] = {
+   0, 4,  8, 12,
+   1, 5,  9, 13,
+   2, 6, 10, 14,
+   3, 7, 11, 15
+};
+
 void GLAPIENTRY
-_mesa_GetFloatv( GLenum pname, GLfloat *params )
+_mesa_GetBooleanv(GLenum pname, GLboolean *params)
 {
-   GET_CURRENT_CONTEXT(ctx);
-   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-   (void) version;
+   const struct value_desc *d;
+   union value v;
+   GLmatrix *m;
+   int shift, i;
+   void *p;
 
-   if (!params)
-      return;
+   d = find_value("glGetBooleanv", pname, &p, &v);
+   switch (d->type) {
+   case TYPE_INVALID:
+      break;
+   case TYPE_CONST:
+      params[0] = INT_TO_BOOLEAN(d->offset);
+      break;
 
-   if (ctx->Driver.GetFloatv &&
-       ctx->Driver.GetFloatv(ctx, pname, params))
-      return;
+   case TYPE_FLOAT_4:
+   case TYPE_FLOATN_4:
+      params[3] = FLOAT_TO_BOOLEAN(((GLfloat *) p)[3]);
+   case TYPE_FLOAT_3:
+   case TYPE_FLOATN_3:
+      params[2] = FLOAT_TO_BOOLEAN(((GLfloat *) p)[2]);
+   case TYPE_FLOAT_2:
+   case TYPE_FLOATN_2:
+      params[1] = FLOAT_TO_BOOLEAN(((GLfloat *) p)[1]);
+   case TYPE_FLOAT:
+   case TYPE_FLOATN:
+      params[0] = FLOAT_TO_BOOLEAN(((GLfloat *) p)[0]);
+      break;
 
-   switch (pname) {
-      case GL_ACCUM_RED_BITS:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumRedBits);
-         break;
-      case GL_ACCUM_GREEN_BITS:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumGreenBits);
-         break;
-      case GL_ACCUM_BLUE_BITS:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumBlueBits);
-         break;
-      case GL_ACCUM_ALPHA_BITS:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.accumAlphaBits);
-         break;
-      case GL_ACCUM_CLEAR_VALUE:
-         params[0] = ctx->Accum.ClearColor[0];
-         params[1] = ctx->Accum.ClearColor[1];
-         params[2] = ctx->Accum.ClearColor[2];
-         params[3] = ctx->Accum.ClearColor[3];
-         break;
-      case GL_ALPHA_BIAS:
-         params[0] = ctx->Pixel.AlphaBias;
-         break;
-      case GL_ALPHA_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.alphaBits);
-         break;
-      case GL_ALPHA_SCALE:
-         params[0] = ctx->Pixel.AlphaScale;
-         break;
-      case GL_ALPHA_TEST:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Color.AlphaEnabled);
-         break;
-      case GL_ALPHA_TEST_FUNC:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.AlphaFunc);
-         break;
-      case GL_ALPHA_TEST_REF:
-         params[0] = ctx->Color.AlphaRef;
-         break;
-      case GL_ATTRIB_STACK_DEPTH:
-         params[0] = (GLfloat)(ctx->AttribStackDepth);
-         break;
-      case GL_AUTO_NORMAL:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.AutoNormal);
-         break;
-      case GL_AUX_BUFFERS:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.numAuxBuffers);
-         break;
-      case GL_BLEND:
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Color.BlendEnabled & 1));
-         break;
-      case GL_BLEND_DST:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_SRC_RGB_EXT:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_DST_RGB_EXT:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC_ALPHA_EXT:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendSrcA);
-         break;
-      case GL_BLEND_DST_ALPHA_EXT:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendDstA);
-         break;
-      case GL_BLEND_EQUATION:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationRGB );
-         break;
-      case GL_BLEND_EQUATION_ALPHA_EXT:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.BlendEquationA );
-         break;
-      case GL_BLEND_COLOR_EXT:
-         params[0] = ctx->Color.BlendColor[0];
-         params[1] = ctx->Color.BlendColor[1];
-         params[2] = ctx->Color.BlendColor[2];
-         params[3] = ctx->Color.BlendColor[3];
-         break;
-      case GL_BLUE_BIAS:
-         params[0] = ctx->Pixel.BlueBias;
-         break;
-      case GL_BLUE_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.blueBits);
-         break;
-      case GL_BLUE_SCALE:
-         params[0] = ctx->Pixel.BlueScale;
-         break;
-      case GL_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = (GLfloat)(ctx->ClientAttribStackDepth);
-         break;
-      case GL_CLIP_PLANE0:
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
-         break;
-      case GL_CLIP_PLANE1:
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
-         break;
-      case GL_CLIP_PLANE2:
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
-         break;
-      case GL_CLIP_PLANE3:
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
-         break;
-      case GL_CLIP_PLANE4:
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
-         break;
-      case GL_CLIP_PLANE5:
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
-         break;
-      case GL_COLOR_CLEAR_VALUE:
-         params[0] = ctx->Color.ClearColor[0];
-         params[1] = ctx->Color.ClearColor[1];
-         params[2] = ctx->Color.ClearColor[2];
-         params[3] = ctx->Color.ClearColor[3];
-         break;
-      case GL_COLOR_MATERIAL:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ColorMaterialEnabled);
-         break;
-      case GL_COLOR_MATERIAL_FACE:
-         params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialFace);
-         break;
-      case GL_COLOR_MATERIAL_PARAMETER:
-         params[0] = ENUM_TO_FLOAT(ctx->Light.ColorMaterialMode);
-         break;
-      case GL_COLOR_WRITEMASK:
-         params[0] = (GLfloat)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
-         params[1] = (GLfloat)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
-         params[2] = (GLfloat)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
-         params[3] = (GLfloat)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
-         break;
-      case GL_CULL_FACE:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.CullFlag);
-         break;
-      case GL_CULL_FACE_MODE:
-         params[0] = ENUM_TO_FLOAT(ctx->Polygon.CullFaceMode);
-         break;
-      case GL_CURRENT_COLOR:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0];
-         params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1];
-         params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2];
-         params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3];
-         break;
-      case GL_CURRENT_INDEX:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0];
-         break;
-      case GL_CURRENT_NORMAL:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0];
-         params[1] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1];
-         params[2] = ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2];
-         break;
-      case GL_CURRENT_RASTER_COLOR:
-         params[0] = ctx->Current.RasterColor[0];
-         params[1] = ctx->Current.RasterColor[1];
-         params[2] = ctx->Current.RasterColor[2];
-         params[3] = ctx->Current.RasterColor[3];
-         break;
-      case GL_CURRENT_RASTER_DISTANCE:
-         params[0] = ctx->Current.RasterDistance;
-         break;
-      case GL_CURRENT_RASTER_INDEX:
-         params[0] = 1.0;
-         break;
-      case GL_CURRENT_RASTER_POSITION:
-         params[0] = ctx->Current.RasterPos[0];
-         params[1] = ctx->Current.RasterPos[1];
-         params[2] = ctx->Current.RasterPos[2];
-         params[3] = ctx->Current.RasterPos[3];
-         break;
-      case GL_CURRENT_RASTER_SECONDARY_COLOR:
-         params[0] = ctx->Current.RasterSecondaryColor[0];
-         params[1] = ctx->Current.RasterSecondaryColor[1];
-         params[2] = ctx->Current.RasterSecondaryColor[2];
-         params[3] = ctx->Current.RasterSecondaryColor[3];
-         break;
-      case GL_CURRENT_RASTER_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(raster tex coords, unit %u)", unit);
-            return;
-         }
-         params[0] = ctx->Current.RasterTexCoords[unit][0];
-         params[1] = ctx->Current.RasterTexCoords[unit][1];
-         params[2] = ctx->Current.RasterTexCoords[unit][2];
-         params[3] = ctx->Current.RasterTexCoords[unit][3];
-         }
-         break;
-      case GL_CURRENT_RASTER_POSITION_VALID:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Current.RasterPosValid);
-         break;
-      case GL_CURRENT_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(current tex coords, unit %u)", unit);
-            return;
-         }
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0];
-         params[1] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1];
-         params[2] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2];
-         params[3] = ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3];
-         }
-         break;
-      case GL_DEPTH_BIAS:
-         params[0] = ctx->Pixel.DepthBias;
-         break;
-      case GL_DEPTH_BITS:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.depthBits);
-         break;
-      case GL_DEPTH_CLEAR_VALUE:
-         params[0] = ((GLfloat) ctx->Depth.Clear);
-         break;
-      case GL_DEPTH_FUNC:
-         params[0] = ENUM_TO_FLOAT(ctx->Depth.Func);
-         break;
-      case GL_DEPTH_RANGE:
-         params[0] = ctx->Viewport.Near;
-         params[1] = ctx->Viewport.Far;
-         break;
-      case GL_DEPTH_SCALE:
-         params[0] = ctx->Pixel.DepthScale;
-         break;
-      case GL_DEPTH_TEST:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Test);
-         break;
-      case GL_DEPTH_WRITEMASK:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.Mask);
-         break;
-      case GL_DITHER:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Color.DitherFlag);
-         break;
-      case GL_DOUBLEBUFFER:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.doubleBufferMode);
-         break;
-      case GL_DRAW_BUFFER:
-         params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_EDGE_FLAG:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = BOOLEAN_TO_FLOAT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
-         break;
-      case GL_FEEDBACK_BUFFER_SIZE:
-         params[0] = (GLfloat)(ctx->Feedback.BufferSize);
-         break;
-      case GL_FEEDBACK_BUFFER_TYPE:
-         params[0] = ENUM_TO_FLOAT(ctx->Feedback.Type);
-         break;
-      case GL_FOG:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.Enabled);
-         break;
-      case GL_FOG_COLOR:
-         params[0] = ctx->Fog.Color[0];
-         params[1] = ctx->Fog.Color[1];
-         params[2] = ctx->Fog.Color[2];
-         params[3] = ctx->Fog.Color[3];
-         break;
-      case GL_FOG_DENSITY:
-         params[0] = ctx->Fog.Density;
-         break;
-      case GL_FOG_END:
-         params[0] = ctx->Fog.End;
-         break;
-      case GL_FOG_HINT:
-         params[0] = ENUM_TO_FLOAT(ctx->Hint.Fog);
-         break;
-      case GL_FOG_INDEX:
-         params[0] = ctx->Fog.Index;
-         break;
-      case GL_FOG_MODE:
-         params[0] = ENUM_TO_FLOAT(ctx->Fog.Mode);
-         break;
-      case GL_FOG_START:
-         params[0] = ctx->Fog.Start;
-         break;
-      case GL_FRONT_FACE:
-         params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontFace);
-         break;
-      case GL_GREEN_BIAS:
-         params[0] = ctx->Pixel.GreenBias;
-         break;
-      case GL_GREEN_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.greenBits);
-         break;
-      case GL_GREEN_SCALE:
-         params[0] = ctx->Pixel.GreenScale;
-         break;
-      case GL_INDEX_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.indexBits);
-         break;
-      case GL_INDEX_CLEAR_VALUE:
-         params[0] = (GLfloat)(ctx->Color.ClearIndex);
-         break;
-      case GL_INDEX_MODE:
-         params[0] = BOOLEAN_TO_FLOAT(GL_FALSE);
-         break;
-      case GL_INDEX_OFFSET:
-         params[0] = (GLfloat)(ctx->Pixel.IndexOffset);
-         break;
-      case GL_INDEX_SHIFT:
-         params[0] = (GLfloat)(ctx->Pixel.IndexShift);
-         break;
-      case GL_INDEX_WRITEMASK:
-         params[0] = (GLfloat)(ctx->Color.IndexMask);
-         break;
-      case GL_LIGHT0:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[0].Enabled);
-         break;
-      case GL_LIGHT1:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[1].Enabled);
-         break;
-      case GL_LIGHT2:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[2].Enabled);
-         break;
-      case GL_LIGHT3:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[3].Enabled);
-         break;
-      case GL_LIGHT4:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[4].Enabled);
-         break;
-      case GL_LIGHT5:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[5].Enabled);
-         break;
-      case GL_LIGHT6:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[6].Enabled);
-         break;
-      case GL_LIGHT7:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Light[7].Enabled);
-         break;
-      case GL_LIGHTING:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Enabled);
-         break;
-      case GL_LIGHT_MODEL_AMBIENT:
-         params[0] = ctx->Light.Model.Ambient[0];
-         params[1] = ctx->Light.Model.Ambient[1];
-         params[2] = ctx->Light.Model.Ambient[2];
-         params[3] = ctx->Light.Model.Ambient[3];
-         break;
-      case GL_LIGHT_MODEL_COLOR_CONTROL:
-         params[0] = ENUM_TO_FLOAT(ctx->Light.Model.ColorControl);
-         break;
-      case GL_LIGHT_MODEL_LOCAL_VIEWER:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.LocalViewer);
-         break;
-      case GL_LIGHT_MODEL_TWO_SIDE:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.Model.TwoSide);
-         break;
-      case GL_LINE_SMOOTH:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Line.SmoothFlag);
-         break;
-      case GL_LINE_SMOOTH_HINT:
-         params[0] = ENUM_TO_FLOAT(ctx->Hint.LineSmooth);
-         break;
-      case GL_LINE_STIPPLE:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Line.StippleFlag);
-         break;
-      case GL_LINE_STIPPLE_PATTERN:
-         params[0] = (GLfloat)(ctx->Line.StipplePattern);
-         break;
-      case GL_LINE_STIPPLE_REPEAT:
-         params[0] = (GLfloat)(ctx->Line.StippleFactor);
-         break;
-      case GL_LINE_WIDTH:
-         params[0] = ctx->Line.Width;
-         break;
-      case GL_LINE_WIDTH_GRANULARITY:
-         params[0] = ctx->Const.LineWidthGranularity;
-         break;
-      case GL_LINE_WIDTH_RANGE:
-         params[0] = ctx->Const.MinLineWidthAA;
-         params[1] = ctx->Const.MaxLineWidthAA;
-         break;
-      case GL_ALIASED_LINE_WIDTH_RANGE:
-         params[0] = ctx->Const.MinLineWidth;
-         params[1] = ctx->Const.MaxLineWidth;
-         break;
-      case GL_LIST_BASE:
-         params[0] = (GLfloat)(ctx->List.ListBase);
-         break;
-      case GL_LIST_INDEX:
-         params[0] = (GLfloat)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
-         break;
-      case GL_LIST_MODE:
-         {
-         GLenum mode;
-         if (!ctx->CompileFlag)
-            mode = 0;
-         else if (ctx->ExecuteFlag)
-            mode = GL_COMPILE_AND_EXECUTE;
-         else
-            mode = GL_COMPILE;
-         params[0] = ENUM_TO_FLOAT(mode);
-         }
-         break;
-      case GL_INDEX_LOGIC_OP:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Color.IndexLogicOpEnabled);
-         break;
-      case GL_COLOR_LOGIC_OP:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Color.ColorLogicOpEnabled);
-         break;
-      case GL_LOGIC_OP_MODE:
-         params[0] = ENUM_TO_FLOAT(ctx->Color.LogicOp);
-         break;
-      case GL_MAP1_COLOR_4:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Color4);
-         break;
-      case GL_MAP1_GRID_DOMAIN:
-         params[0] = ctx->Eval.MapGrid1u1;
-         params[1] = ctx->Eval.MapGrid1u2;
-         break;
-      case GL_MAP1_GRID_SEGMENTS:
-         params[0] = (GLfloat)(ctx->Eval.MapGrid1un);
-         break;
-      case GL_MAP1_INDEX:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Index);
-         break;
-      case GL_MAP1_NORMAL:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Normal);
-         break;
-      case GL_MAP1_TEXTURE_COORD_1:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord1);
-         break;
-      case GL_MAP1_TEXTURE_COORD_2:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord2);
-         break;
-      case GL_MAP1_TEXTURE_COORD_3:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord3);
-         break;
-      case GL_MAP1_TEXTURE_COORD_4:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1TextureCoord4);
-         break;
-      case GL_MAP1_VERTEX_3:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex3);
-         break;
-      case GL_MAP1_VERTEX_4:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Vertex4);
-         break;
-      case GL_MAP2_COLOR_4:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Color4);
-         break;
-      case GL_MAP2_GRID_DOMAIN:
-         params[0] = ctx->Eval.MapGrid2u1;
-         params[1] = ctx->Eval.MapGrid2u2;
-         params[2] = ctx->Eval.MapGrid2v1;
-         params[3] = ctx->Eval.MapGrid2v2;
-         break;
-      case GL_MAP2_GRID_SEGMENTS:
-         params[0] = (GLfloat)(ctx->Eval.MapGrid2un);
-         params[1] = (GLfloat)(ctx->Eval.MapGrid2vn);
-         break;
-      case GL_MAP2_INDEX:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Index);
-         break;
-      case GL_MAP2_NORMAL:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Normal);
-         break;
-      case GL_MAP2_TEXTURE_COORD_1:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord1);
-         break;
-      case GL_MAP2_TEXTURE_COORD_2:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord2);
-         break;
-      case GL_MAP2_TEXTURE_COORD_3:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord3);
-         break;
-      case GL_MAP2_TEXTURE_COORD_4:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2TextureCoord4);
-         break;
-      case GL_MAP2_VERTEX_3:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex3);
-         break;
-      case GL_MAP2_VERTEX_4:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map2Vertex4);
-         break;
-      case GL_MAP_COLOR:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapColorFlag);
-         break;
-      case GL_MAP_STENCIL:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MapStencilFlag);
-         break;
-      case GL_MATRIX_MODE:
-         params[0] = ENUM_TO_FLOAT(ctx->Transform.MatrixMode);
-         break;
-      case GL_MAX_ATTRIB_STACK_DEPTH:
-         params[0] = (GLfloat)(MAX_ATTRIB_STACK_DEPTH);
-         break;
-      case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = (GLfloat)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
-         break;
-      case GL_MAX_CLIP_PLANES:
-         params[0] = (GLfloat)(ctx->Const.MaxClipPlanes);
-         break;
-      case GL_MAX_ELEMENTS_VERTICES:
-         params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
-         break;
-      case GL_MAX_ELEMENTS_INDICES:
-         params[0] = (GLfloat)(ctx->Const.MaxArrayLockSize);
-         break;
-      case GL_MAX_EVAL_ORDER:
-         params[0] = (GLfloat)(MAX_EVAL_ORDER);
-         break;
-      case GL_MAX_LIGHTS:
-         params[0] = (GLfloat)(ctx->Const.MaxLights);
-         break;
-      case GL_MAX_LIST_NESTING:
-         params[0] = (GLfloat)(MAX_LIST_NESTING);
-         break;
-      case GL_MAX_MODELVIEW_STACK_DEPTH:
-         params[0] = (GLfloat)(MAX_MODELVIEW_STACK_DEPTH);
-         break;
-      case GL_MAX_NAME_STACK_DEPTH:
-         params[0] = (GLfloat)(MAX_NAME_STACK_DEPTH);
-         break;
-      case GL_MAX_PIXEL_MAP_TABLE:
-         params[0] = (GLfloat)(MAX_PIXEL_MAP_TABLE);
-         break;
-      case GL_MAX_PROJECTION_STACK_DEPTH:
-         params[0] = (GLfloat)(MAX_PROJECTION_STACK_DEPTH);
-         break;
-      case GL_MAX_TEXTURE_SIZE:
-         params[0] = (GLfloat)(1 << (ctx->Const.MaxTextureLevels - 1));
-         break;
-      case GL_MAX_3D_TEXTURE_SIZE:
-         params[0] = (GLfloat)(1 << (ctx->Const.Max3DTextureLevels - 1));
-         break;
-      case GL_MAX_TEXTURE_STACK_DEPTH:
-         params[0] = (GLfloat)(MAX_TEXTURE_STACK_DEPTH);
-         break;
-      case GL_MAX_VIEWPORT_DIMS:
-         params[0] = (GLfloat)(ctx->Const.MaxViewportWidth);
-         params[1] = (GLfloat)(ctx->Const.MaxViewportHeight);
-         break;
-      case GL_MODELVIEW_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[1];
-         params[2] = matrix[2];
-         params[3] = matrix[3];
-         params[4] = matrix[4];
-         params[5] = matrix[5];
-         params[6] = matrix[6];
-         params[7] = matrix[7];
-         params[8] = matrix[8];
-         params[9] = matrix[9];
-         params[10] = matrix[10];
-         params[11] = matrix[11];
-         params[12] = matrix[12];
-         params[13] = matrix[13];
-         params[14] = matrix[14];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_MODELVIEW_STACK_DEPTH:
-         params[0] = (GLfloat)(ctx->ModelviewMatrixStack.Depth + 1);
-         break;
-      case GL_NAME_STACK_DEPTH:
-         params[0] = (GLfloat)(ctx->Select.NameStackDepth);
-         break;
-      case GL_NORMALIZE:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.Normalize);
-         break;
-      case GL_PACK_ALIGNMENT:
-         params[0] = (GLfloat)(ctx->Pack.Alignment);
-         break;
-      case GL_PACK_LSB_FIRST:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.LsbFirst);
-         break;
-      case GL_PACK_ROW_LENGTH:
-         params[0] = (GLfloat)(ctx->Pack.RowLength);
-         break;
-      case GL_PACK_SKIP_PIXELS:
-         params[0] = (GLfloat)(ctx->Pack.SkipPixels);
-         break;
-      case GL_PACK_SKIP_ROWS:
-         params[0] = (GLfloat)(ctx->Pack.SkipRows);
-         break;
-      case GL_PACK_SWAP_BYTES:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.SwapBytes);
-         break;
-      case GL_PACK_SKIP_IMAGES_EXT:
-         params[0] = (GLfloat)(ctx->Pack.SkipImages);
-         break;
-      case GL_PACK_IMAGE_HEIGHT_EXT:
-         params[0] = (GLfloat)(ctx->Pack.ImageHeight);
-         break;
-      case GL_PACK_INVERT_MESA:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pack.Invert);
-         break;
-      case GL_PERSPECTIVE_CORRECTION_HINT:
-         params[0] = ENUM_TO_FLOAT(ctx->Hint.PerspectiveCorrection);
-         break;
-      case GL_PIXEL_MAP_A_TO_A_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.AtoA.Size);
-         break;
-      case GL_PIXEL_MAP_B_TO_B_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.BtoB.Size);
-         break;
-      case GL_PIXEL_MAP_G_TO_G_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.GtoG.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_A_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.ItoA.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_B_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.ItoB.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_G_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.ItoG.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_I_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.ItoI.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_R_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.ItoR.Size);
-         break;
-      case GL_PIXEL_MAP_R_TO_R_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.RtoR.Size);
-         break;
-      case GL_PIXEL_MAP_S_TO_S_SIZE:
-         params[0] = (GLfloat)(ctx->PixelMaps.StoS.Size);
-         break;
-      case GL_POINT_SIZE:
-         params[0] = ctx->Point.Size;
-         break;
-      case GL_POINT_SIZE_GRANULARITY:
-         params[0] = ctx->Const.PointSizeGranularity;
-         break;
-      case GL_POINT_SIZE_RANGE:
-         params[0] = ctx->Const.MinPointSizeAA;
-         params[1] = ctx->Const.MaxPointSizeAA;
-         break;
-      case GL_ALIASED_POINT_SIZE_RANGE:
-         params[0] = ctx->Const.MinPointSize;
-         params[1] = ctx->Const.MaxPointSize;
-         break;
-      case GL_POINT_SMOOTH:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Point.SmoothFlag);
-         break;
-      case GL_POINT_SMOOTH_HINT:
-         params[0] = ENUM_TO_FLOAT(ctx->Hint.PointSmooth);
-         break;
-      case GL_POINT_SIZE_MIN_EXT:
-         params[0] = ctx->Point.MinSize;
-         break;
-      case GL_POINT_SIZE_MAX_EXT:
-         params[0] = ctx->Point.MaxSize;
-         break;
-      case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-         params[0] = ctx->Point.Threshold;
-         break;
-      case GL_DISTANCE_ATTENUATION_EXT:
-         params[0] = ctx->Point.Params[0];
-         params[1] = ctx->Point.Params[1];
-         params[2] = ctx->Point.Params[2];
-         break;
-      case GL_POLYGON_MODE:
-         params[0] = ENUM_TO_FLOAT(ctx->Polygon.FrontMode);
-         params[1] = ENUM_TO_FLOAT(ctx->Polygon.BackMode);
-         break;
-      case GL_POLYGON_OFFSET_BIAS_EXT:
-         params[0] = ctx->Polygon.OffsetUnits;
-         break;
-      case GL_POLYGON_OFFSET_FACTOR:
-         params[0] = ctx->Polygon.OffsetFactor ;
-         break;
-      case GL_POLYGON_OFFSET_UNITS:
-         params[0] = ctx->Polygon.OffsetUnits ;
-         break;
-      case GL_POLYGON_OFFSET_POINT:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetPoint);
-         break;
-      case GL_POLYGON_OFFSET_LINE:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetLine);
-         break;
-      case GL_POLYGON_OFFSET_FILL:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.OffsetFill);
-         break;
-      case GL_POLYGON_SMOOTH:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.SmoothFlag);
-         break;
-      case GL_POLYGON_SMOOTH_HINT:
-         params[0] = ENUM_TO_FLOAT(ctx->Hint.PolygonSmooth);
-         break;
-      case GL_POLYGON_STIPPLE:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Polygon.StippleFlag);
-         break;
-      case GL_PROJECTION_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[1];
-         params[2] = matrix[2];
-         params[3] = matrix[3];
-         params[4] = matrix[4];
-         params[5] = matrix[5];
-         params[6] = matrix[6];
-         params[7] = matrix[7];
-         params[8] = matrix[8];
-         params[9] = matrix[9];
-         params[10] = matrix[10];
-         params[11] = matrix[11];
-         params[12] = matrix[12];
-         params[13] = matrix[13];
-         params[14] = matrix[14];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_PROJECTION_STACK_DEPTH:
-         params[0] = (GLfloat)(ctx->ProjectionMatrixStack.Depth + 1);
-         break;
-      case GL_READ_BUFFER:
-         params[0] = ENUM_TO_FLOAT(ctx->ReadBuffer->ColorReadBuffer);
-         break;
-      case GL_RED_BIAS:
-         params[0] = ctx->Pixel.RedBias;
-         break;
-      case GL_RED_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.redBits);
-         break;
-      case GL_RED_SCALE:
-         params[0] = ctx->Pixel.RedScale;
-         break;
-      case GL_RENDER_MODE:
-         params[0] = ENUM_TO_FLOAT(ctx->RenderMode);
-         break;
-      case GL_RESCALE_NORMAL:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RescaleNormals);
-         break;
-      case GL_RGBA_MODE:
-         params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
-         break;
-      case GL_SCISSOR_BOX:
-         params[0] = (GLfloat)(ctx->Scissor.X);
-         params[1] = (GLfloat)(ctx->Scissor.Y);
-         params[2] = (GLfloat)(ctx->Scissor.Width);
-         params[3] = (GLfloat)(ctx->Scissor.Height);
-         break;
-      case GL_SCISSOR_TEST:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Scissor.Enabled);
-         break;
-      case GL_SELECTION_BUFFER_SIZE:
-         params[0] = (GLfloat)(ctx->Select.BufferSize);
-         break;
-      case GL_SHADE_MODEL:
-         params[0] = ENUM_TO_FLOAT(ctx->Light.ShadeModel);
-         break;
-      case GL_SHARED_TEXTURE_PALETTE_EXT:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.SharedPalette);
-         break;
-      case GL_STENCIL_BITS:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.stencilBits);
-         break;
-      case GL_STENCIL_CLEAR_VALUE:
-         params[0] = (GLfloat)(ctx->Stencil.Clear);
-         break;
-      case GL_STENCIL_FAIL:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_FUNC:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_REF:
-         params[0] = (GLfloat)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_TEST:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.Enabled);
-         break;
-      case GL_STENCIL_VALUE_MASK:
-         params[0] = (GLfloat)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_WRITEMASK:
-         params[0] = (GLfloat)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STEREO:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->DrawBuffer->Visual.stereoMode);
-         break;
-      case GL_SUBPIXEL_BITS:
-         params[0] = (GLfloat)(ctx->Const.SubPixelBits);
-         break;
-      case GL_TEXTURE_1D:
-         params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D));
-         break;
-      case GL_TEXTURE_2D:
-         params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D));
-         break;
-      case GL_TEXTURE_3D:
-         params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_3D));
-         break;
-      case GL_TEXTURE_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
-         break;
-      case GL_TEXTURE_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
-         break;
-      case GL_TEXTURE_BINDING_1D:
-         params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_2D:
-         params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_3D:
-         params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
-         break;
-      case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = (GLfloat)(ctx->Const.MaxArrayTextureLayers);
-         break;
-      case GL_TEXTURE_GEN_S:
-         params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_T:
-         params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_R:
-         params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_Q:
-         params[0] = BOOLEAN_TO_FLOAT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_MATRIX:
-         {
-         const GLfloat *matrix;
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
-                        unit);
-            return;
-         }
-         matrix = ctx->TextureMatrixStack[unit].Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[1];
-         params[2] = matrix[2];
-         params[3] = matrix[3];
-         params[4] = matrix[4];
-         params[5] = matrix[5];
-         params[6] = matrix[6];
-         params[7] = matrix[7];
-         params[8] = matrix[8];
-         params[9] = matrix[9];
-         params[10] = matrix[10];
-         params[11] = matrix[11];
-         params[12] = matrix[12];
-         params[13] = matrix[13];
-         params[14] = matrix[14];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_TEXTURE_STACK_DEPTH:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(texture stack depth, unit %u)", unit);
-            return;
-         }
-         params[0] = (GLfloat)(ctx->TextureMatrixStack[unit].Depth + 1);
-         }
-         break;
-      case GL_UNPACK_ALIGNMENT:
-         params[0] = (GLfloat)(ctx->Unpack.Alignment);
-         break;
-      case GL_UNPACK_LSB_FIRST:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.LsbFirst);
-         break;
-      case GL_UNPACK_ROW_LENGTH:
-         params[0] = (GLfloat)(ctx->Unpack.RowLength);
-         break;
-      case GL_UNPACK_SKIP_PIXELS:
-         params[0] = (GLfloat)(ctx->Unpack.SkipPixels);
-         break;
-      case GL_UNPACK_SKIP_ROWS:
-         params[0] = (GLfloat)(ctx->Unpack.SkipRows);
-         break;
-      case GL_UNPACK_SWAP_BYTES:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.SwapBytes);
-         break;
-      case GL_UNPACK_SKIP_IMAGES_EXT:
-         params[0] = (GLfloat)(ctx->Unpack.SkipImages);
-         break;
-      case GL_UNPACK_IMAGE_HEIGHT_EXT:
-         params[0] = (GLfloat)(ctx->Unpack.ImageHeight);
-         break;
-      case GL_UNPACK_CLIENT_STORAGE_APPLE:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Unpack.ClientStorage);
-         break;
-      case GL_VIEWPORT:
-         params[0] = (GLfloat)(ctx->Viewport.X);
-         params[1] = (GLfloat)(ctx->Viewport.Y);
-         params[2] = (GLfloat)(ctx->Viewport.Width);
-         params[3] = (GLfloat)(ctx->Viewport.Height);
-         break;
-      case GL_ZOOM_X:
-         params[0] = ctx->Pixel.ZoomX;
-         break;
-      case GL_ZOOM_Y:
-         params[0] = ctx->Pixel.ZoomY;
-         break;
-      case GL_VERTEX_ARRAY:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Enabled);
-         break;
-      case GL_VERTEX_ARRAY_SIZE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Size);
-         break;
-      case GL_VERTEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Vertex.Type);
-         break;
-      case GL_VERTEX_ARRAY_STRIDE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.Stride);
-         break;
-      case GL_VERTEX_ARRAY_COUNT_EXT:
-         params[0] = (GLfloat)(0);
-         break;
-      case GL_NORMAL_ARRAY:
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Enabled);
-         break;
-      case GL_NORMAL_ARRAY_TYPE:
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Normal.Type);
-         break;
-      case GL_NORMAL_ARRAY_STRIDE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.Stride);
-         break;
-      case GL_NORMAL_ARRAY_COUNT_EXT:
-         params[0] = (GLfloat)(0);
-         break;
-      case GL_COLOR_ARRAY:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Color.Enabled);
-         break;
-      case GL_COLOR_ARRAY_SIZE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Size);
-         break;
-      case GL_COLOR_ARRAY_TYPE:
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Color.Type);
-         break;
-      case GL_COLOR_ARRAY_STRIDE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.Stride);
-         break;
-      case GL_COLOR_ARRAY_COUNT_EXT:
-         params[0] = (GLfloat)(0);
-         break;
-      case GL_INDEX_ARRAY:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->Index.Enabled);
-         break;
-      case GL_INDEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->Index.Type);
-         break;
-      case GL_INDEX_ARRAY_STRIDE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.Stride);
-         break;
-      case GL_INDEX_ARRAY_COUNT_EXT:
-         params[0] = (GLfloat)(0);
-         break;
-      case GL_TEXTURE_COORD_ARRAY:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_SIZE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_TYPE:
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_STRIDE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
-         params[0] = (GLfloat)(0);
-         break;
-      case GL_EDGE_FLAG_ARRAY:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
-         break;
-      case GL_EDGE_FLAG_ARRAY_STRIDE:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.Stride);
-         break;
-      case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
-         params[0] = (GLfloat)(0);
-         break;
-      case GL_MAX_TEXTURE_UNITS_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = (GLfloat)(ctx->Const.MaxTextureUnits);
-         break;
-      case GL_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
-         break;
-      case GL_CLIENT_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = (GLfloat)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
-         break;
-      case GL_TEXTURE_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
-         break;
-      case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
-         break;
-      case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = (GLfloat)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
-         break;
-      case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         params[0] = (GLfloat)(ctx->Hint.TextureCompression);
-         break;
-      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         params[0] = (GLfloat)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
-         break;
-      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         {
-         GLint formats[100];
-         GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-         ASSERT(n <= 100);
-         for (i = 0; i < n; i++)
-            params[i] = ENUM_TO_FLOAT(formats[i]);
-         }
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = (GLfloat)(ctx->Array.LockFirst);
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = (GLfloat)(ctx->Array.LockCount);
-         break;
-      case GL_TRANSPOSE_COLOR_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[4];
-         params[2] = matrix[8];
-         params[3] = matrix[12];
-         params[4] = matrix[1];
-         params[5] = matrix[5];
-         params[6] = matrix[9];
-         params[7] = matrix[13];
-         params[8] = matrix[2];
-         params[9] = matrix[6];
-         params[10] = matrix[10];
-         params[11] = matrix[14];
-         params[12] = matrix[3];
-         params[13] = matrix[7];
-         params[14] = matrix[11];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[4];
-         params[2] = matrix[8];
-         params[3] = matrix[12];
-         params[4] = matrix[1];
-         params[5] = matrix[5];
-         params[6] = matrix[9];
-         params[7] = matrix[13];
-         params[8] = matrix[2];
-         params[9] = matrix[6];
-         params[10] = matrix[10];
-         params[11] = matrix[14];
-         params[12] = matrix[3];
-         params[13] = matrix[7];
-         params[14] = matrix[11];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[4];
-         params[2] = matrix[8];
-         params[3] = matrix[12];
-         params[4] = matrix[1];
-         params[5] = matrix[5];
-         params[6] = matrix[9];
-         params[7] = matrix[13];
-         params[8] = matrix[2];
-         params[9] = matrix[6];
-         params[10] = matrix[10];
-         params[11] = matrix[14];
-         params[12] = matrix[3];
-         params[13] = matrix[7];
-         params[14] = matrix[11];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[4];
-         params[2] = matrix[8];
-         params[3] = matrix[12];
-         params[4] = matrix[1];
-         params[5] = matrix[5];
-         params[6] = matrix[9];
-         params[7] = matrix[13];
-         params[8] = matrix[2];
-         params[9] = matrix[6];
-         params[10] = matrix[10];
-         params[11] = matrix[14];
-         params[12] = matrix[3];
-         params[13] = matrix[7];
-         params[14] = matrix[11];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_COLOR_MATRIX_SGI:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[1];
-         params[2] = matrix[2];
-         params[3] = matrix[3];
-         params[4] = matrix[4];
-         params[5] = matrix[5];
-         params[6] = matrix[6];
-         params[7] = matrix[7];
-         params[8] = matrix[8];
-         params[9] = matrix[9];
-         params[10] = matrix[10];
-         params[11] = matrix[11];
-         params[12] = matrix[12];
-         params[13] = matrix[13];
-         params[14] = matrix[14];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = (GLfloat)(ctx->ColorMatrixStack.Depth + 1);
-         break;
-      case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = (GLfloat)(MAX_COLOR_STACK_DEPTH);
-         break;
-      case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixScale[0];
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixScale[1];
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixScale[2];
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixScale[3];
-         break;
-      case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixBias[0];
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixBias[1];
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixBias[2];
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
-         params[0] = ctx->Pixel.PostColorMatrixBias[3];
-         break;
-      case GL_CONVOLUTION_1D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution1DEnabled);
-         break;
-      case GL_CONVOLUTION_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Convolution2DEnabled);
-         break;
-      case GL_SEPARABLE_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.Separable2DEnabled);
-         break;
-      case GL_POST_CONVOLUTION_RED_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionScale[0];
-         break;
-      case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionScale[1];
-         break;
-      case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionScale[2];
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionScale[3];
-         break;
-      case GL_POST_CONVOLUTION_RED_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionBias[0];
-         break;
-      case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionBias[1];
-         break;
-      case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionBias[2];
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = ctx->Pixel.PostConvolutionBias[3];
-         break;
-      case GL_HISTOGRAM:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.HistogramEnabled);
-         break;
-      case GL_MINMAX:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.MinMaxEnabled);
-         break;
-      case GL_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
-         break;
-      case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
-         break;
-      case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
-         break;
-      case GL_TEXTURE_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_texture_color_table);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
-         break;
-      case GL_COLOR_SUM_EXT:
-         CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Fog.ColorSumEnabled);
-         break;
-      case GL_CURRENT_SECONDARY_COLOR_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0];
-         params[1] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1];
-         params[2] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2];
-         params[3] = ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3];
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->SecondaryColor.Type);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Stride);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.Size);
-         break;
-      case GL_CURRENT_FOG_COORDINATE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = ctx->Current.Attrib[VERT_ATTRIB_FOG][0];
-         break;
-      case GL_FOG_COORDINATE_ARRAY_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Enabled);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_FLOAT(ctx->Array.ArrayObj->FogCoord.Type);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.Stride);
-         break;
-      case GL_FOG_COORDINATE_SOURCE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_FLOAT(ctx->Fog.FogCoordinateSource);
-         break;
-      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
-         CHECK_EXT1(EXT_texture_lod_bias);
-         params[0] = ctx->Const.MaxTextureLodBias;
-         break;
-      case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         CHECK_EXT1(EXT_texture_filter_anisotropic);
-         params[0] = ctx->Const.MaxTextureMaxAnisotropy;
-         break;
-      case GL_MULTISAMPLE_ARB:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.Enabled);
-         break;
-      case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToCoverage);
-         break;
-      case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleAlphaToOne);
-         break;
-      case GL_SAMPLE_COVERAGE_ARB:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverage);
-         break;
-      case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         params[0] = ctx->Multisample.SampleCoverageValue;
-         break;
-      case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Multisample.SampleCoverageInvert);
-         break;
-      case GL_SAMPLE_BUFFERS_ARB:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.sampleBuffers);
-         break;
-      case GL_SAMPLES_ARB:
-         params[0] = (GLfloat)(ctx->DrawBuffer->Visual.samples);
-         break;
-      case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         CHECK_EXT1(IBM_rasterpos_clip);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.RasterPositionUnclipped);
-         break;
-      case GL_POINT_SPRITE_NV:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Point.PointSprite);
-         break;
-      case GL_POINT_SPRITE_R_MODE_NV:
-         CHECK_EXT1(NV_point_sprite);
-         params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteRMode);
-         break;
-      case GL_POINT_SPRITE_COORD_ORIGIN:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = ENUM_TO_FLOAT(ctx->Point.SpriteOrigin);
-         break;
-      case GL_GENERATE_MIPMAP_HINT_SGIS:
-         CHECK_EXT1(SGIS_generate_mipmap);
-         params[0] = ENUM_TO_FLOAT(ctx->Hint.GenerateMipmap);
-         break;
-      case GL_VERTEX_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = (GLfloat)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY0_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY1_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY2_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY3_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY5_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY6_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY7_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY8_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY9_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY10_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY11_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY12_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY13_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY14_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY15_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB0_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[0]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB1_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[1]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB2_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[2]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB3_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[3]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB4_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[4]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB5_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[5]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB6_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[6]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB7_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[7]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB8_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[8]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB9_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[9]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB10_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[10]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB11_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[11]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB12_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[12]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB13_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[13]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB14_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[14]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB15_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Eval.Map1Attrib[15]);
-         break;
-      case GL_FRAGMENT_PROGRAM_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
-         break;
-      case GL_FRAGMENT_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = (GLfloat)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
-         break;
-      case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = (GLfloat)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
-         break;
-      case GL_TEXTURE_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = BOOLEAN_TO_FLOAT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
-         break;
-      case GL_TEXTURE_BINDING_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = (GLfloat)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
-         break;
-      case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = (GLfloat)(ctx->Const.MaxTextureRectSize);
-         break;
-      case GL_STENCIL_TEST_TWO_SIDE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Stencil.TestTwoSide);
-         break;
-      case GL_ACTIVE_STENCIL_FACE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
-         break;
-      case GL_MAX_SHININESS_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = ctx->Const.MaxShininess;
-         break;
-      case GL_MAX_SPOT_EXPONENT_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = ctx->Const.MaxSpotExponent;
-         break;
-      case GL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayBufferObj->Name);
-         break;
-      case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
-         break;
-      case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
-         break;
-      case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Color.BufferObj->Name);
-         break;
-      case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Index.BufferObj->Name);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
-         break;
-      case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
-         break;
-      case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLfloat)(ctx->Array.ElementArrayBufferObj->Name);
-         break;
-      case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = (GLfloat)(ctx->Pack.BufferObj->Name);
-         break;
-      case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = (GLfloat)(ctx->Unpack.BufferObj->Name);
-         break;
-      case GL_VERTEX_PROGRAM_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.Enabled);
-         break;
-      case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.PointSizeEnabled);
-         break;
-      case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->VertexProgram.TwoSideEnabled);
-         break;
-      case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = (GLfloat)(ctx->Const.MaxProgramMatrixStackDepth);
-         break;
-      case GL_MAX_PROGRAM_MATRICES_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = (GLfloat)(ctx->Const.MaxProgramMatrices);
-         break;
-      case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->CurrentStack->Depth + 1);
-         break;
-      case GL_CURRENT_MATRIX_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[1];
-         params[2] = matrix[2];
-         params[3] = matrix[3];
-         params[4] = matrix[4];
-         params[5] = matrix[5];
-         params[6] = matrix[6];
-         params[7] = matrix[7];
-         params[8] = matrix[8];
-         params[9] = matrix[9];
-         params[10] = matrix[10];
-         params[11] = matrix[11];
-         params[12] = matrix[12];
-         params[13] = matrix[13];
-         params[14] = matrix[14];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
-         CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = matrix[0];
-         params[1] = matrix[4];
-         params[2] = matrix[8];
-         params[3] = matrix[12];
-         params[4] = matrix[1];
-         params[5] = matrix[5];
-         params[6] = matrix[9];
-         params[7] = matrix[13];
-         params[8] = matrix[2];
-         params[9] = matrix[6];
-         params[10] = matrix[10];
-         params[11] = matrix[14];
-         params[12] = matrix[3];
-         params[13] = matrix[7];
-         params[14] = matrix[11];
-         params[15] = matrix[15];
-         }
-         break;
-      case GL_MAX_VERTEX_ATTRIBS_ARB:
-         CHECK_EXT1(ARB_vertex_program);
-         params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxAttribs);
-         break;
-      case GL_PROGRAM_ERROR_POSITION_ARB:
-         CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
-         params[0] = (GLfloat)(ctx->Program.ErrorPos);
-         break;
-      case GL_FRAGMENT_PROGRAM_ARB:
-         CHECK_EXT1(ARB_fragment_program);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->FragmentProgram.Enabled);
-         break;
-      case GL_MAX_TEXTURE_COORDS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = (GLfloat)(ctx->Const.MaxTextureCoordUnits);
-         break;
-      case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = (GLfloat)(ctx->Const.MaxTextureImageUnits);
-         break;
-      case GL_DEPTH_BOUNDS_TEST_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Depth.BoundsTest);
-         break;
-      case GL_DEPTH_BOUNDS_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = ctx->Depth.BoundsMin;
-         params[1] = ctx->Depth.BoundsMax;
-         break;
-      case GL_DEPTH_CLAMP:
-         CHECK_EXT1(ARB_depth_clamp);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Transform.DepthClamp);
-         break;
-      case GL_MAX_DRAW_BUFFERS_ARB:
-         params[0] = (GLfloat)(ctx->Const.MaxDrawBuffers);
-         break;
-      case GL_DRAW_BUFFER0_ARB:
-         params[0] = ENUM_TO_FLOAT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_DRAW_BUFFER1_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
-         params[0] = ENUM_TO_FLOAT(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER2_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
-         params[0] = ENUM_TO_FLOAT(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER3_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
-         params[0] = ENUM_TO_FLOAT(buffer);
-         }
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLfloat)(_mesa_get_color_read_type(ctx));
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLfloat)(_mesa_get_color_read_format(ctx));
-         break;
-      case GL_NUM_FRAGMENT_REGISTERS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLfloat)(6);
-         break;
-      case GL_NUM_FRAGMENT_CONSTANTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLfloat)(8);
-         break;
-      case GL_NUM_PASSES_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLfloat)(2);
-         break;
-      case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLfloat)(8);
-         break;
-      case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLfloat)(16);
-         break;
-      case GL_COLOR_ALPHA_PAIRING_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = BOOLEAN_TO_FLOAT(GL_TRUE);
-         break;
-      case GL_NUM_LOOPBACK_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLfloat)(3);
-         break;
-      case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLfloat)(3);
-         break;
-      case GL_STENCIL_BACK_FUNC:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.Function[1]);
-         break;
-      case GL_STENCIL_BACK_VALUE_MASK:
-         params[0] = (GLfloat)(ctx->Stencil.ValueMask[1]);
-         break;
-      case GL_STENCIL_BACK_WRITEMASK:
-         params[0] = (GLfloat)(ctx->Stencil.WriteMask[1]);
-         break;
-      case GL_STENCIL_BACK_REF:
-         params[0] = (GLfloat)(ctx->Stencil.Ref[1]);
-         break;
-      case GL_STENCIL_BACK_FAIL:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.FailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZFailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_FLOAT(ctx->Stencil.ZPassFunc[1]);
-         break;
-      case GL_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLfloat)(ctx->DrawBuffer->Name);
-         break;
-      case GL_RENDERBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLfloat)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
-         break;
-      case GL_MAX_COLOR_ATTACHMENTS_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLfloat)(ctx->Const.MaxColorAttachments);
-         break;
-      case GL_MAX_RENDERBUFFER_SIZE_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLfloat)(ctx->Const.MaxRenderbufferSize);
-         break;
-      case GL_READ_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_blit);
-         params[0] = (GLfloat)(ctx->ReadBuffer->Name);
-         break;
-      case GL_PROVOKING_VERTEX_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Light.ProvokingVertex);
-         break;
-      case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Const.QuadsFollowProvokingVertexConvention);
-         break;
-      case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = (GLfloat)(ctx->Const.FragmentProgram.MaxUniformComponents);
-         break;
-      case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = ENUM_TO_FLOAT(ctx->Hint.FragmentShaderDerivative);
-         break;
-      case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLfloat)(ctx->Const.VertexProgram.MaxUniformComponents);
-         break;
-      case GL_MAX_VARYING_FLOATS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLfloat)(ctx->Const.MaxVarying * 4);
-         break;
-      case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLfloat)(ctx->Const.MaxVertexTextureImageUnits);
-         break;
-      case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLfloat)(ctx->Const.MaxCombinedTextureImageUnits);
-         break;
-      case GL_CURRENT_PROGRAM:
-         CHECK_EXT1(ARB_shader_objects);
-         params[0] = (GLfloat)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
-         break;
-      case GL_MAX_SAMPLES:
-         CHECK_EXT1(ARB_framebuffer_object);
-         params[0] = (GLfloat)(ctx->Const.MaxSamples);
-         break;
-      case GL_VERTEX_ARRAY_BINDING_APPLE:
-         CHECK_EXT1(APPLE_vertex_array_object);
-         params[0] = (GLfloat)(ctx->Array.ArrayObj->Name);
-         break;
-      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
-         CHECK_EXT1(ARB_seamless_cube_map);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Texture.CubeMapSeamless);
-         break;
-      case GL_MAX_SERVER_WAIT_TIMEOUT:
-         CHECK_EXT1(ARB_sync);
-         params[0] = (GLfloat)(ctx->Const.MaxServerWaitTimeout);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLfloat)(ctx->TransformFeedback.CurrentBuffer->Name);
-         break;
-      case GL_RASTERIZER_DISCARD:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->TransformFeedback.RasterDiscard);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackInterleavedComponents);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackSeparateAttribs);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLfloat)(ctx->Const.MaxTransformFeedbackSeparateComponents);
-         break;
-      case GL_NUM_EXTENSIONS:
-         CHECK_VERSION(30);
-         params[0] = (GLfloat)(_mesa_get_extension_count(ctx));
-         break;
-      case GL_MAJOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = (GLfloat)(ctx->VersionMajor);
-         break;
-      case GL_MINOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = (GLfloat)(ctx->VersionMinor);
-         break;
-      case GL_CONTEXT_FLAGS:
-         CHECK_VERSION(30);
-         params[0] = (GLfloat)(ctx->Const.ContextFlags);
-         break;
-      case GL_PRIMITIVE_RESTART:
-         CHECK_VERSION(31);
-         params[0] = BOOLEAN_TO_FLOAT(ctx->Array.PrimitiveRestart);
-         break;
-      case GL_PRIMITIVE_RESTART_INDEX:
-         CHECK_VERSION(31);
-         params[0] = (GLfloat)(ctx->Array.RestartIndex);
-         break;
-      case GL_CONTEXT_PROFILE_MASK:
-         CHECK_VERSION(32);
-         params[0] = (GLfloat)(ctx->Const.ProfileMask);
-         break;
-      default:
-         goto invalid_enum_error;
-   }
-   return;
+   case TYPE_DOUBLEN:
+      params[0] = FLOAT_TO_BOOLEAN(((GLdouble *) p)[0]);
+      break;
+
+   case TYPE_INT_4:
+      params[3] = INT_TO_BOOLEAN(((GLint *) p)[3]);
+   case TYPE_INT_3:
+      params[2] = INT_TO_BOOLEAN(((GLint *) p)[2]);
+   case TYPE_INT_2:
+   case TYPE_ENUM_2:
+      params[1] = INT_TO_BOOLEAN(((GLint *) p)[1]);
+   case TYPE_INT:
+   case TYPE_ENUM:
+      params[0] = INT_TO_BOOLEAN(((GLint *) p)[0]);
+      break;
 
-invalid_enum_error:
-   _mesa_error(ctx, GL_INVALID_ENUM, "glGetFloatv(pname=0x%x)", pname);
+   case TYPE_INT_N:
+      for (i = 0; i < v.value_int_n.n; i++)
+        params[i] = INT_TO_BOOLEAN(v.value_int_n.ints[i]);
+      break;
+
+   case TYPE_INT64:
+      params[0] = INT64_TO_BOOLEAN(((GLint64 *) p)[0]);
+      break;
+
+   case TYPE_BOOLEAN:
+      params[0] = ((GLboolean*) p)[0];
+      break;           
+
+   case TYPE_MATRIX:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_BOOLEAN(m->m[i]);
+      break;
+
+   case TYPE_MATRIX_T:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_BOOLEAN(m->m[transpose[i]]);
+      break;
+
+   case TYPE_BIT_0:
+   case TYPE_BIT_1:
+   case TYPE_BIT_2:
+   case TYPE_BIT_3:
+   case TYPE_BIT_4:
+   case TYPE_BIT_5:
+      shift = d->type - TYPE_BIT_0;
+      params[0] = (*(GLbitfield *) p >> shift) & 1;
+      break;
+   }
 }
 
 void GLAPIENTRY
-_mesa_GetIntegerv( GLenum pname, GLint *params )
+_mesa_GetFloatv(GLenum pname, GLfloat *params)
 {
-   GET_CURRENT_CONTEXT(ctx);
-   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-   (void) version;
+   const struct value_desc *d;
+   union value v;
+   GLmatrix *m;
+   int shift, i;
+   void *p;
 
-   if (!params)
-      return;
+   d = find_value("glGetFloatv", pname, &p, &v);
+   switch (d->type) {
+   case TYPE_INVALID:
+      break;
+   case TYPE_CONST:
+      params[0] = (GLfloat) d->offset;
+      break;
 
-   if (ctx->Driver.GetIntegerv &&
-       ctx->Driver.GetIntegerv(ctx, pname, params))
-      return;
+   case TYPE_FLOAT_4:
+   case TYPE_FLOATN_4:
+      params[3] = ((GLfloat *) p)[3];
+   case TYPE_FLOAT_3:
+   case TYPE_FLOATN_3:
+      params[2] = ((GLfloat *) p)[2];
+   case TYPE_FLOAT_2:
+   case TYPE_FLOATN_2:
+      params[1] = ((GLfloat *) p)[1];
+   case TYPE_FLOAT:
+   case TYPE_FLOATN:
+      params[0] = ((GLfloat *) p)[0];
+      break;
 
-   switch (pname) {
-      case GL_ACCUM_RED_BITS:
-         params[0] = ctx->DrawBuffer->Visual.accumRedBits;
-         break;
-      case GL_ACCUM_GREEN_BITS:
-         params[0] = ctx->DrawBuffer->Visual.accumGreenBits;
-         break;
-      case GL_ACCUM_BLUE_BITS:
-         params[0] = ctx->DrawBuffer->Visual.accumBlueBits;
-         break;
-      case GL_ACCUM_ALPHA_BITS:
-         params[0] = ctx->DrawBuffer->Visual.accumAlphaBits;
-         break;
-      case GL_ACCUM_CLEAR_VALUE:
-         params[0] = FLOAT_TO_INT(ctx->Accum.ClearColor[0]);
-         params[1] = FLOAT_TO_INT(ctx->Accum.ClearColor[1]);
-         params[2] = FLOAT_TO_INT(ctx->Accum.ClearColor[2]);
-         params[3] = FLOAT_TO_INT(ctx->Accum.ClearColor[3]);
-         break;
-      case GL_ALPHA_BIAS:
-         params[0] = IROUND(ctx->Pixel.AlphaBias);
-         break;
-      case GL_ALPHA_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = ctx->DrawBuffer->Visual.alphaBits;
-         break;
-      case GL_ALPHA_SCALE:
-         params[0] = IROUND(ctx->Pixel.AlphaScale);
-         break;
-      case GL_ALPHA_TEST:
-         params[0] = BOOLEAN_TO_INT(ctx->Color.AlphaEnabled);
-         break;
-      case GL_ALPHA_TEST_FUNC:
-         params[0] = ENUM_TO_INT(ctx->Color.AlphaFunc);
-         break;
-      case GL_ALPHA_TEST_REF:
-         params[0] = FLOAT_TO_INT(ctx->Color.AlphaRef);
-         break;
-      case GL_ATTRIB_STACK_DEPTH:
-         params[0] = ctx->AttribStackDepth;
-         break;
-      case GL_AUTO_NORMAL:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.AutoNormal);
-         break;
-      case GL_AUX_BUFFERS:
-         params[0] = ctx->DrawBuffer->Visual.numAuxBuffers;
-         break;
-      case GL_BLEND:
-         params[0] = BOOLEAN_TO_INT((ctx->Color.BlendEnabled & 1));
-         break;
-      case GL_BLEND_DST:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_SRC_RGB_EXT:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_DST_RGB_EXT:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC_ALPHA_EXT:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendSrcA);
-         break;
-      case GL_BLEND_DST_ALPHA_EXT:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendDstA);
-         break;
-      case GL_BLEND_EQUATION:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendEquationRGB );
-         break;
-      case GL_BLEND_EQUATION_ALPHA_EXT:
-         params[0] = ENUM_TO_INT(ctx->Color.BlendEquationA );
-         break;
-      case GL_BLEND_COLOR_EXT:
-         params[0] = FLOAT_TO_INT(ctx->Color.BlendColor[0]);
-         params[1] = FLOAT_TO_INT(ctx->Color.BlendColor[1]);
-         params[2] = FLOAT_TO_INT(ctx->Color.BlendColor[2]);
-         params[3] = FLOAT_TO_INT(ctx->Color.BlendColor[3]);
-         break;
-      case GL_BLUE_BIAS:
-         params[0] = IROUND(ctx->Pixel.BlueBias);
-         break;
-      case GL_BLUE_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = ctx->DrawBuffer->Visual.blueBits;
-         break;
-      case GL_BLUE_SCALE:
-         params[0] = IROUND(ctx->Pixel.BlueScale);
-         break;
-      case GL_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = ctx->ClientAttribStackDepth;
-         break;
-      case GL_CLIP_PLANE0:
-         params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
-         break;
-      case GL_CLIP_PLANE1:
-         params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
-         break;
-      case GL_CLIP_PLANE2:
-         params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
-         break;
-      case GL_CLIP_PLANE3:
-         params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
-         break;
-      case GL_CLIP_PLANE4:
-         params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
-         break;
-      case GL_CLIP_PLANE5:
-         params[0] = BOOLEAN_TO_INT((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
-         break;
-      case GL_COLOR_CLEAR_VALUE:
-         params[0] = FLOAT_TO_INT(ctx->Color.ClearColor[0]);
-         params[1] = FLOAT_TO_INT(ctx->Color.ClearColor[1]);
-         params[2] = FLOAT_TO_INT(ctx->Color.ClearColor[2]);
-         params[3] = FLOAT_TO_INT(ctx->Color.ClearColor[3]);
-         break;
-      case GL_COLOR_MATERIAL:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.ColorMaterialEnabled);
-         break;
-      case GL_COLOR_MATERIAL_FACE:
-         params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialFace);
-         break;
-      case GL_COLOR_MATERIAL_PARAMETER:
-         params[0] = ENUM_TO_INT(ctx->Light.ColorMaterialMode);
-         break;
-      case GL_COLOR_WRITEMASK:
-         params[0] = ctx->Color.ColorMask[0][RCOMP] ? 1 : 0;
-         params[1] = ctx->Color.ColorMask[0][GCOMP] ? 1 : 0;
-         params[2] = ctx->Color.ColorMask[0][BCOMP] ? 1 : 0;
-         params[3] = ctx->Color.ColorMask[0][ACOMP] ? 1 : 0;
-         break;
-      case GL_CULL_FACE:
-         params[0] = BOOLEAN_TO_INT(ctx->Polygon.CullFlag);
-         break;
-      case GL_CULL_FACE_MODE:
-         params[0] = ENUM_TO_INT(ctx->Polygon.CullFaceMode);
-         break;
-      case GL_CURRENT_COLOR:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
-         params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
-         params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
-         params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
-         break;
-      case GL_CURRENT_INDEX:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
-         break;
-      case GL_CURRENT_NORMAL:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
-         params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
-         params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
-         break;
-      case GL_CURRENT_RASTER_COLOR:
-         params[0] = FLOAT_TO_INT(ctx->Current.RasterColor[0]);
-         params[1] = FLOAT_TO_INT(ctx->Current.RasterColor[1]);
-         params[2] = FLOAT_TO_INT(ctx->Current.RasterColor[2]);
-         params[3] = FLOAT_TO_INT(ctx->Current.RasterColor[3]);
-         break;
-      case GL_CURRENT_RASTER_DISTANCE:
-         params[0] = IROUND(ctx->Current.RasterDistance);
-         break;
-      case GL_CURRENT_RASTER_INDEX:
-         params[0] = IROUND(1.0);
-         break;
-      case GL_CURRENT_RASTER_POSITION:
-         params[0] = IROUND(ctx->Current.RasterPos[0]);
-         params[1] = IROUND(ctx->Current.RasterPos[1]);
-         params[2] = IROUND(ctx->Current.RasterPos[2]);
-         params[3] = IROUND(ctx->Current.RasterPos[3]);
-         break;
-      case GL_CURRENT_RASTER_SECONDARY_COLOR:
-         params[0] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[0]);
-         params[1] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[1]);
-         params[2] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[2]);
-         params[3] = FLOAT_TO_INT(ctx->Current.RasterSecondaryColor[3]);
-         break;
-      case GL_CURRENT_RASTER_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(raster tex coords, unit %u)", unit);
-            return;
-         }
-         params[0] = IROUND(ctx->Current.RasterTexCoords[unit][0]);
-         params[1] = IROUND(ctx->Current.RasterTexCoords[unit][1]);
-         params[2] = IROUND(ctx->Current.RasterTexCoords[unit][2]);
-         params[3] = IROUND(ctx->Current.RasterTexCoords[unit][3]);
-         }
-         break;
-      case GL_CURRENT_RASTER_POSITION_VALID:
-         params[0] = BOOLEAN_TO_INT(ctx->Current.RasterPosValid);
-         break;
-      case GL_CURRENT_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(current tex coords, unit %u)", unit);
-            return;
-         }
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
-         params[1] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
-         params[2] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
-         params[3] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
-         }
-         break;
-      case GL_DEPTH_BIAS:
-         params[0] = IROUND(ctx->Pixel.DepthBias);
-         break;
-      case GL_DEPTH_BITS:
-         params[0] = ctx->DrawBuffer->Visual.depthBits;
-         break;
-      case GL_DEPTH_CLEAR_VALUE:
-         params[0] = FLOAT_TO_INT(((GLfloat) ctx->Depth.Clear));
-         break;
-      case GL_DEPTH_FUNC:
-         params[0] = ENUM_TO_INT(ctx->Depth.Func);
-         break;
-      case GL_DEPTH_RANGE:
-         params[0] = FLOAT_TO_INT(ctx->Viewport.Near);
-         params[1] = FLOAT_TO_INT(ctx->Viewport.Far);
-         break;
-      case GL_DEPTH_SCALE:
-         params[0] = IROUND(ctx->Pixel.DepthScale);
-         break;
-      case GL_DEPTH_TEST:
-         params[0] = BOOLEAN_TO_INT(ctx->Depth.Test);
-         break;
-      case GL_DEPTH_WRITEMASK:
-         params[0] = BOOLEAN_TO_INT(ctx->Depth.Mask);
-         break;
-      case GL_DITHER:
-         params[0] = BOOLEAN_TO_INT(ctx->Color.DitherFlag);
-         break;
-      case GL_DOUBLEBUFFER:
-         params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.doubleBufferMode);
-         break;
-      case GL_DRAW_BUFFER:
-         params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_EDGE_FLAG:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = BOOLEAN_TO_INT((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
-         break;
-      case GL_FEEDBACK_BUFFER_SIZE:
-         params[0] = ctx->Feedback.BufferSize;
-         break;
-      case GL_FEEDBACK_BUFFER_TYPE:
-         params[0] = ENUM_TO_INT(ctx->Feedback.Type);
-         break;
-      case GL_FOG:
-         params[0] = BOOLEAN_TO_INT(ctx->Fog.Enabled);
-         break;
-      case GL_FOG_COLOR:
-         params[0] = FLOAT_TO_INT(ctx->Fog.Color[0]);
-         params[1] = FLOAT_TO_INT(ctx->Fog.Color[1]);
-         params[2] = FLOAT_TO_INT(ctx->Fog.Color[2]);
-         params[3] = FLOAT_TO_INT(ctx->Fog.Color[3]);
-         break;
-      case GL_FOG_DENSITY:
-         params[0] = IROUND(ctx->Fog.Density);
-         break;
-      case GL_FOG_END:
-         params[0] = IROUND(ctx->Fog.End);
-         break;
-      case GL_FOG_HINT:
-         params[0] = ENUM_TO_INT(ctx->Hint.Fog);
-         break;
-      case GL_FOG_INDEX:
-         params[0] = IROUND(ctx->Fog.Index);
-         break;
-      case GL_FOG_MODE:
-         params[0] = ENUM_TO_INT(ctx->Fog.Mode);
-         break;
-      case GL_FOG_START:
-         params[0] = IROUND(ctx->Fog.Start);
-         break;
-      case GL_FRONT_FACE:
-         params[0] = ENUM_TO_INT(ctx->Polygon.FrontFace);
-         break;
-      case GL_GREEN_BIAS:
-         params[0] = IROUND(ctx->Pixel.GreenBias);
-         break;
-      case GL_GREEN_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = ctx->DrawBuffer->Visual.greenBits;
-         break;
-      case GL_GREEN_SCALE:
-         params[0] = IROUND(ctx->Pixel.GreenScale);
-         break;
-      case GL_INDEX_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = ctx->DrawBuffer->Visual.indexBits;
-         break;
-      case GL_INDEX_CLEAR_VALUE:
-         params[0] = ctx->Color.ClearIndex;
-         break;
-      case GL_INDEX_MODE:
-         params[0] = BOOLEAN_TO_INT(GL_FALSE);
-         break;
-      case GL_INDEX_OFFSET:
-         params[0] = ctx->Pixel.IndexOffset;
-         break;
-      case GL_INDEX_SHIFT:
-         params[0] = ctx->Pixel.IndexShift;
-         break;
-      case GL_INDEX_WRITEMASK:
-         params[0] = ctx->Color.IndexMask;
-         break;
-      case GL_LIGHT0:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[0].Enabled);
-         break;
-      case GL_LIGHT1:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[1].Enabled);
-         break;
-      case GL_LIGHT2:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[2].Enabled);
-         break;
-      case GL_LIGHT3:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[3].Enabled);
-         break;
-      case GL_LIGHT4:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[4].Enabled);
-         break;
-      case GL_LIGHT5:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[5].Enabled);
-         break;
-      case GL_LIGHT6:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[6].Enabled);
-         break;
-      case GL_LIGHT7:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Light[7].Enabled);
-         break;
-      case GL_LIGHTING:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Enabled);
-         break;
-      case GL_LIGHT_MODEL_AMBIENT:
-         params[0] = FLOAT_TO_INT(ctx->Light.Model.Ambient[0]);
-         params[1] = FLOAT_TO_INT(ctx->Light.Model.Ambient[1]);
-         params[2] = FLOAT_TO_INT(ctx->Light.Model.Ambient[2]);
-         params[3] = FLOAT_TO_INT(ctx->Light.Model.Ambient[3]);
-         break;
-      case GL_LIGHT_MODEL_COLOR_CONTROL:
-         params[0] = ENUM_TO_INT(ctx->Light.Model.ColorControl);
-         break;
-      case GL_LIGHT_MODEL_LOCAL_VIEWER:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Model.LocalViewer);
-         break;
-      case GL_LIGHT_MODEL_TWO_SIDE:
-         params[0] = BOOLEAN_TO_INT(ctx->Light.Model.TwoSide);
-         break;
-      case GL_LINE_SMOOTH:
-         params[0] = BOOLEAN_TO_INT(ctx->Line.SmoothFlag);
-         break;
-      case GL_LINE_SMOOTH_HINT:
-         params[0] = ENUM_TO_INT(ctx->Hint.LineSmooth);
-         break;
-      case GL_LINE_STIPPLE:
-         params[0] = BOOLEAN_TO_INT(ctx->Line.StippleFlag);
-         break;
-      case GL_LINE_STIPPLE_PATTERN:
-         params[0] = ctx->Line.StipplePattern;
-         break;
-      case GL_LINE_STIPPLE_REPEAT:
-         params[0] = ctx->Line.StippleFactor;
-         break;
-      case GL_LINE_WIDTH:
-         params[0] = IROUND(ctx->Line.Width);
-         break;
-      case GL_LINE_WIDTH_GRANULARITY:
-         params[0] = IROUND(ctx->Const.LineWidthGranularity);
-         break;
-      case GL_LINE_WIDTH_RANGE:
-         params[0] = IROUND(ctx->Const.MinLineWidthAA);
-         params[1] = IROUND(ctx->Const.MaxLineWidthAA);
-         break;
-      case GL_ALIASED_LINE_WIDTH_RANGE:
-         params[0] = IROUND(ctx->Const.MinLineWidth);
-         params[1] = IROUND(ctx->Const.MaxLineWidth);
-         break;
-      case GL_LIST_BASE:
-         params[0] = ctx->List.ListBase;
-         break;
-      case GL_LIST_INDEX:
-         params[0] = (ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0);
-         break;
-      case GL_LIST_MODE:
-         {
-         GLenum mode;
-         if (!ctx->CompileFlag)
-            mode = 0;
-         else if (ctx->ExecuteFlag)
-            mode = GL_COMPILE_AND_EXECUTE;
-         else
-            mode = GL_COMPILE;
-         params[0] = ENUM_TO_INT(mode);
-         }
-         break;
-      case GL_INDEX_LOGIC_OP:
-         params[0] = BOOLEAN_TO_INT(ctx->Color.IndexLogicOpEnabled);
-         break;
-      case GL_COLOR_LOGIC_OP:
-         params[0] = BOOLEAN_TO_INT(ctx->Color.ColorLogicOpEnabled);
-         break;
-      case GL_LOGIC_OP_MODE:
-         params[0] = ENUM_TO_INT(ctx->Color.LogicOp);
-         break;
-      case GL_MAP1_COLOR_4:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Color4);
-         break;
-      case GL_MAP1_GRID_DOMAIN:
-         params[0] = IROUND(ctx->Eval.MapGrid1u1);
-         params[1] = IROUND(ctx->Eval.MapGrid1u2);
-         break;
-      case GL_MAP1_GRID_SEGMENTS:
-         params[0] = ctx->Eval.MapGrid1un;
-         break;
-      case GL_MAP1_INDEX:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Index);
-         break;
-      case GL_MAP1_NORMAL:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Normal);
-         break;
-      case GL_MAP1_TEXTURE_COORD_1:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord1);
-         break;
-      case GL_MAP1_TEXTURE_COORD_2:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord2);
-         break;
-      case GL_MAP1_TEXTURE_COORD_3:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord3);
-         break;
-      case GL_MAP1_TEXTURE_COORD_4:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1TextureCoord4);
-         break;
-      case GL_MAP1_VERTEX_3:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex3);
-         break;
-      case GL_MAP1_VERTEX_4:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Vertex4);
-         break;
-      case GL_MAP2_COLOR_4:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Color4);
-         break;
-      case GL_MAP2_GRID_DOMAIN:
-         params[0] = IROUND(ctx->Eval.MapGrid2u1);
-         params[1] = IROUND(ctx->Eval.MapGrid2u2);
-         params[2] = IROUND(ctx->Eval.MapGrid2v1);
-         params[3] = IROUND(ctx->Eval.MapGrid2v2);
-         break;
-      case GL_MAP2_GRID_SEGMENTS:
-         params[0] = ctx->Eval.MapGrid2un;
-         params[1] = ctx->Eval.MapGrid2vn;
-         break;
-      case GL_MAP2_INDEX:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Index);
-         break;
-      case GL_MAP2_NORMAL:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Normal);
-         break;
-      case GL_MAP2_TEXTURE_COORD_1:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord1);
-         break;
-      case GL_MAP2_TEXTURE_COORD_2:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord2);
-         break;
-      case GL_MAP2_TEXTURE_COORD_3:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord3);
-         break;
-      case GL_MAP2_TEXTURE_COORD_4:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2TextureCoord4);
-         break;
-      case GL_MAP2_VERTEX_3:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex3);
-         break;
-      case GL_MAP2_VERTEX_4:
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map2Vertex4);
-         break;
-      case GL_MAP_COLOR:
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapColorFlag);
-         break;
-      case GL_MAP_STENCIL:
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.MapStencilFlag);
-         break;
-      case GL_MATRIX_MODE:
-         params[0] = ENUM_TO_INT(ctx->Transform.MatrixMode);
-         break;
-      case GL_MAX_ATTRIB_STACK_DEPTH:
-         params[0] = MAX_ATTRIB_STACK_DEPTH;
-         break;
-      case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = MAX_CLIENT_ATTRIB_STACK_DEPTH;
-         break;
-      case GL_MAX_CLIP_PLANES:
-         params[0] = ctx->Const.MaxClipPlanes;
-         break;
-      case GL_MAX_ELEMENTS_VERTICES:
-         params[0] = ctx->Const.MaxArrayLockSize;
-         break;
-      case GL_MAX_ELEMENTS_INDICES:
-         params[0] = ctx->Const.MaxArrayLockSize;
-         break;
-      case GL_MAX_EVAL_ORDER:
-         params[0] = MAX_EVAL_ORDER;
-         break;
-      case GL_MAX_LIGHTS:
-         params[0] = ctx->Const.MaxLights;
-         break;
-      case GL_MAX_LIST_NESTING:
-         params[0] = MAX_LIST_NESTING;
-         break;
-      case GL_MAX_MODELVIEW_STACK_DEPTH:
-         params[0] = MAX_MODELVIEW_STACK_DEPTH;
-         break;
-      case GL_MAX_NAME_STACK_DEPTH:
-         params[0] = MAX_NAME_STACK_DEPTH;
-         break;
-      case GL_MAX_PIXEL_MAP_TABLE:
-         params[0] = MAX_PIXEL_MAP_TABLE;
-         break;
-      case GL_MAX_PROJECTION_STACK_DEPTH:
-         params[0] = MAX_PROJECTION_STACK_DEPTH;
-         break;
-      case GL_MAX_TEXTURE_SIZE:
-         params[0] = 1 << (ctx->Const.MaxTextureLevels - 1);
-         break;
-      case GL_MAX_3D_TEXTURE_SIZE:
-         params[0] = 1 << (ctx->Const.Max3DTextureLevels - 1);
-         break;
-      case GL_MAX_TEXTURE_STACK_DEPTH:
-         params[0] = MAX_TEXTURE_STACK_DEPTH;
-         break;
-      case GL_MAX_VIEWPORT_DIMS:
-         params[0] = ctx->Const.MaxViewportWidth;
-         params[1] = ctx->Const.MaxViewportHeight;
-         break;
-      case GL_MODELVIEW_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[1]);
-         params[2] = IROUND(matrix[2]);
-         params[3] = IROUND(matrix[3]);
-         params[4] = IROUND(matrix[4]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[6]);
-         params[7] = IROUND(matrix[7]);
-         params[8] = IROUND(matrix[8]);
-         params[9] = IROUND(matrix[9]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[11]);
-         params[12] = IROUND(matrix[12]);
-         params[13] = IROUND(matrix[13]);
-         params[14] = IROUND(matrix[14]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_MODELVIEW_STACK_DEPTH:
-         params[0] = ctx->ModelviewMatrixStack.Depth + 1;
-         break;
-      case GL_NAME_STACK_DEPTH:
-         params[0] = ctx->Select.NameStackDepth;
-         break;
-      case GL_NORMALIZE:
-         params[0] = BOOLEAN_TO_INT(ctx->Transform.Normalize);
-         break;
-      case GL_PACK_ALIGNMENT:
-         params[0] = ctx->Pack.Alignment;
-         break;
-      case GL_PACK_LSB_FIRST:
-         params[0] = BOOLEAN_TO_INT(ctx->Pack.LsbFirst);
-         break;
-      case GL_PACK_ROW_LENGTH:
-         params[0] = ctx->Pack.RowLength;
-         break;
-      case GL_PACK_SKIP_PIXELS:
-         params[0] = ctx->Pack.SkipPixels;
-         break;
-      case GL_PACK_SKIP_ROWS:
-         params[0] = ctx->Pack.SkipRows;
-         break;
-      case GL_PACK_SWAP_BYTES:
-         params[0] = BOOLEAN_TO_INT(ctx->Pack.SwapBytes);
-         break;
-      case GL_PACK_SKIP_IMAGES_EXT:
-         params[0] = ctx->Pack.SkipImages;
-         break;
-      case GL_PACK_IMAGE_HEIGHT_EXT:
-         params[0] = ctx->Pack.ImageHeight;
-         break;
-      case GL_PACK_INVERT_MESA:
-         params[0] = BOOLEAN_TO_INT(ctx->Pack.Invert);
-         break;
-      case GL_PERSPECTIVE_CORRECTION_HINT:
-         params[0] = ENUM_TO_INT(ctx->Hint.PerspectiveCorrection);
-         break;
-      case GL_PIXEL_MAP_A_TO_A_SIZE:
-         params[0] = ctx->PixelMaps.AtoA.Size;
-         break;
-      case GL_PIXEL_MAP_B_TO_B_SIZE:
-         params[0] = ctx->PixelMaps.BtoB.Size;
-         break;
-      case GL_PIXEL_MAP_G_TO_G_SIZE:
-         params[0] = ctx->PixelMaps.GtoG.Size;
-         break;
-      case GL_PIXEL_MAP_I_TO_A_SIZE:
-         params[0] = ctx->PixelMaps.ItoA.Size;
-         break;
-      case GL_PIXEL_MAP_I_TO_B_SIZE:
-         params[0] = ctx->PixelMaps.ItoB.Size;
-         break;
-      case GL_PIXEL_MAP_I_TO_G_SIZE:
-         params[0] = ctx->PixelMaps.ItoG.Size;
-         break;
-      case GL_PIXEL_MAP_I_TO_I_SIZE:
-         params[0] = ctx->PixelMaps.ItoI.Size;
-         break;
-      case GL_PIXEL_MAP_I_TO_R_SIZE:
-         params[0] = ctx->PixelMaps.ItoR.Size;
-         break;
-      case GL_PIXEL_MAP_R_TO_R_SIZE:
-         params[0] = ctx->PixelMaps.RtoR.Size;
-         break;
-      case GL_PIXEL_MAP_S_TO_S_SIZE:
-         params[0] = ctx->PixelMaps.StoS.Size;
-         break;
-      case GL_POINT_SIZE:
-         params[0] = IROUND(ctx->Point.Size);
-         break;
-      case GL_POINT_SIZE_GRANULARITY:
-         params[0] = IROUND(ctx->Const.PointSizeGranularity);
-         break;
-      case GL_POINT_SIZE_RANGE:
-         params[0] = IROUND(ctx->Const.MinPointSizeAA);
-         params[1] = IROUND(ctx->Const.MaxPointSizeAA);
-         break;
-      case GL_ALIASED_POINT_SIZE_RANGE:
-         params[0] = IROUND(ctx->Const.MinPointSize);
-         params[1] = IROUND(ctx->Const.MaxPointSize);
-         break;
-      case GL_POINT_SMOOTH:
-         params[0] = BOOLEAN_TO_INT(ctx->Point.SmoothFlag);
-         break;
-      case GL_POINT_SMOOTH_HINT:
-         params[0] = ENUM_TO_INT(ctx->Hint.PointSmooth);
-         break;
-      case GL_POINT_SIZE_MIN_EXT:
-         params[0] = IROUND(ctx->Point.MinSize);
-         break;
-      case GL_POINT_SIZE_MAX_EXT:
-         params[0] = IROUND(ctx->Point.MaxSize);
-         break;
-      case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-         params[0] = IROUND(ctx->Point.Threshold);
-         break;
-      case GL_DISTANCE_ATTENUATION_EXT:
-         params[0] = IROUND(ctx->Point.Params[0]);
-         params[1] = IROUND(ctx->Point.Params[1]);
-         params[2] = IROUND(ctx->Point.Params[2]);
-         break;
-      case GL_POLYGON_MODE:
-         params[0] = ENUM_TO_INT(ctx->Polygon.FrontMode);
-         params[1] = ENUM_TO_INT(ctx->Polygon.BackMode);
-         break;
-      case GL_POLYGON_OFFSET_BIAS_EXT:
-         params[0] = IROUND(ctx->Polygon.OffsetUnits);
-         break;
-      case GL_POLYGON_OFFSET_FACTOR:
-         params[0] = IROUND(ctx->Polygon.OffsetFactor );
-         break;
-      case GL_POLYGON_OFFSET_UNITS:
-         params[0] = IROUND(ctx->Polygon.OffsetUnits );
-         break;
-      case GL_POLYGON_OFFSET_POINT:
-         params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetPoint);
-         break;
-      case GL_POLYGON_OFFSET_LINE:
-         params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetLine);
-         break;
-      case GL_POLYGON_OFFSET_FILL:
-         params[0] = BOOLEAN_TO_INT(ctx->Polygon.OffsetFill);
-         break;
-      case GL_POLYGON_SMOOTH:
-         params[0] = BOOLEAN_TO_INT(ctx->Polygon.SmoothFlag);
-         break;
-      case GL_POLYGON_SMOOTH_HINT:
-         params[0] = ENUM_TO_INT(ctx->Hint.PolygonSmooth);
-         break;
-      case GL_POLYGON_STIPPLE:
-         params[0] = BOOLEAN_TO_INT(ctx->Polygon.StippleFlag);
-         break;
-      case GL_PROJECTION_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[1]);
-         params[2] = IROUND(matrix[2]);
-         params[3] = IROUND(matrix[3]);
-         params[4] = IROUND(matrix[4]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[6]);
-         params[7] = IROUND(matrix[7]);
-         params[8] = IROUND(matrix[8]);
-         params[9] = IROUND(matrix[9]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[11]);
-         params[12] = IROUND(matrix[12]);
-         params[13] = IROUND(matrix[13]);
-         params[14] = IROUND(matrix[14]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_PROJECTION_STACK_DEPTH:
-         params[0] = ctx->ProjectionMatrixStack.Depth + 1;
-         break;
-      case GL_READ_BUFFER:
-         params[0] = ENUM_TO_INT(ctx->ReadBuffer->ColorReadBuffer);
-         break;
-      case GL_RED_BIAS:
-         params[0] = IROUND(ctx->Pixel.RedBias);
-         break;
-      case GL_RED_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = ctx->DrawBuffer->Visual.redBits;
-         break;
-      case GL_RED_SCALE:
-         params[0] = IROUND(ctx->Pixel.RedScale);
-         break;
-      case GL_RENDER_MODE:
-         params[0] = ENUM_TO_INT(ctx->RenderMode);
-         break;
-      case GL_RESCALE_NORMAL:
-         params[0] = BOOLEAN_TO_INT(ctx->Transform.RescaleNormals);
-         break;
-      case GL_RGBA_MODE:
-         params[0] = BOOLEAN_TO_INT(GL_TRUE);
-         break;
-      case GL_SCISSOR_BOX:
-         params[0] = ctx->Scissor.X;
-         params[1] = ctx->Scissor.Y;
-         params[2] = ctx->Scissor.Width;
-         params[3] = ctx->Scissor.Height;
-         break;
-      case GL_SCISSOR_TEST:
-         params[0] = BOOLEAN_TO_INT(ctx->Scissor.Enabled);
-         break;
-      case GL_SELECTION_BUFFER_SIZE:
-         params[0] = ctx->Select.BufferSize;
-         break;
-      case GL_SHADE_MODEL:
-         params[0] = ENUM_TO_INT(ctx->Light.ShadeModel);
-         break;
-      case GL_SHARED_TEXTURE_PALETTE_EXT:
-         params[0] = BOOLEAN_TO_INT(ctx->Texture.SharedPalette);
-         break;
-      case GL_STENCIL_BITS:
-         params[0] = ctx->DrawBuffer->Visual.stencilBits;
-         break;
-      case GL_STENCIL_CLEAR_VALUE:
-         params[0] = ctx->Stencil.Clear;
-         break;
-      case GL_STENCIL_FAIL:
-         params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_FUNC:
-         params[0] = ENUM_TO_INT(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_REF:
-         params[0] = ctx->Stencil.Ref[ctx->Stencil.ActiveFace];
-         break;
-      case GL_STENCIL_TEST:
-         params[0] = BOOLEAN_TO_INT(ctx->Stencil.Enabled);
-         break;
-      case GL_STENCIL_VALUE_MASK:
-         params[0] = ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace];
-         break;
-      case GL_STENCIL_WRITEMASK:
-         params[0] = ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace];
-         break;
-      case GL_STEREO:
-         params[0] = BOOLEAN_TO_INT(ctx->DrawBuffer->Visual.stereoMode);
-         break;
-      case GL_SUBPIXEL_BITS:
-         params[0] = ctx->Const.SubPixelBits;
-         break;
-      case GL_TEXTURE_1D:
-         params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D));
-         break;
-      case GL_TEXTURE_2D:
-         params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D));
-         break;
-      case GL_TEXTURE_3D:
-         params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_3D));
-         break;
-      case GL_TEXTURE_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
-         break;
-      case GL_TEXTURE_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
-         break;
-      case GL_TEXTURE_BINDING_1D:
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name;
-         break;
-      case GL_TEXTURE_BINDING_2D:
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name;
-         break;
-      case GL_TEXTURE_BINDING_3D:
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name;
-         break;
-      case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name;
-         break;
-      case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name;
-         break;
-      case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = ctx->Const.MaxArrayTextureLayers;
-         break;
-      case GL_TEXTURE_GEN_S:
-         params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_T:
-         params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_R:
-         params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_Q:
-         params[0] = BOOLEAN_TO_INT(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_MATRIX:
-         {
-         const GLfloat *matrix;
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
-                        unit);
-            return;
-         }
-         matrix = ctx->TextureMatrixStack[unit].Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[1]);
-         params[2] = IROUND(matrix[2]);
-         params[3] = IROUND(matrix[3]);
-         params[4] = IROUND(matrix[4]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[6]);
-         params[7] = IROUND(matrix[7]);
-         params[8] = IROUND(matrix[8]);
-         params[9] = IROUND(matrix[9]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[11]);
-         params[12] = IROUND(matrix[12]);
-         params[13] = IROUND(matrix[13]);
-         params[14] = IROUND(matrix[14]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_TEXTURE_STACK_DEPTH:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(texture stack depth, unit %u)", unit);
-            return;
-         }
-         params[0] = ctx->TextureMatrixStack[unit].Depth + 1;
-         }
-         break;
-      case GL_UNPACK_ALIGNMENT:
-         params[0] = ctx->Unpack.Alignment;
-         break;
-      case GL_UNPACK_LSB_FIRST:
-         params[0] = BOOLEAN_TO_INT(ctx->Unpack.LsbFirst);
-         break;
-      case GL_UNPACK_ROW_LENGTH:
-         params[0] = ctx->Unpack.RowLength;
-         break;
-      case GL_UNPACK_SKIP_PIXELS:
-         params[0] = ctx->Unpack.SkipPixels;
-         break;
-      case GL_UNPACK_SKIP_ROWS:
-         params[0] = ctx->Unpack.SkipRows;
-         break;
-      case GL_UNPACK_SWAP_BYTES:
-         params[0] = BOOLEAN_TO_INT(ctx->Unpack.SwapBytes);
-         break;
-      case GL_UNPACK_SKIP_IMAGES_EXT:
-         params[0] = ctx->Unpack.SkipImages;
-         break;
-      case GL_UNPACK_IMAGE_HEIGHT_EXT:
-         params[0] = ctx->Unpack.ImageHeight;
-         break;
-      case GL_UNPACK_CLIENT_STORAGE_APPLE:
-         params[0] = BOOLEAN_TO_INT(ctx->Unpack.ClientStorage);
-         break;
-      case GL_VIEWPORT:
-         params[0] = ctx->Viewport.X;
-         params[1] = ctx->Viewport.Y;
-         params[2] = ctx->Viewport.Width;
-         params[3] = ctx->Viewport.Height;
-         break;
-      case GL_ZOOM_X:
-         params[0] = IROUND(ctx->Pixel.ZoomX);
-         break;
-      case GL_ZOOM_Y:
-         params[0] = IROUND(ctx->Pixel.ZoomY);
-         break;
-      case GL_VERTEX_ARRAY:
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Vertex.Enabled);
-         break;
-      case GL_VERTEX_ARRAY_SIZE:
-         params[0] = ctx->Array.ArrayObj->Vertex.Size;
-         break;
-      case GL_VERTEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Vertex.Type);
-         break;
-      case GL_VERTEX_ARRAY_STRIDE:
-         params[0] = ctx->Array.ArrayObj->Vertex.Stride;
-         break;
-      case GL_VERTEX_ARRAY_COUNT_EXT:
-         params[0] = 0;
-         break;
-      case GL_NORMAL_ARRAY:
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Enabled);
-         break;
-      case GL_NORMAL_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Normal.Type);
-         break;
-      case GL_NORMAL_ARRAY_STRIDE:
-         params[0] = ctx->Array.ArrayObj->Normal.Stride;
-         break;
-      case GL_NORMAL_ARRAY_COUNT_EXT:
-         params[0] = 0;
-         break;
-      case GL_COLOR_ARRAY:
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Color.Enabled);
-         break;
-      case GL_COLOR_ARRAY_SIZE:
-         params[0] = ctx->Array.ArrayObj->Color.Size;
-         break;
-      case GL_COLOR_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Color.Type);
-         break;
-      case GL_COLOR_ARRAY_STRIDE:
-         params[0] = ctx->Array.ArrayObj->Color.Stride;
-         break;
-      case GL_COLOR_ARRAY_COUNT_EXT:
-         params[0] = 0;
-         break;
-      case GL_INDEX_ARRAY:
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->Index.Enabled);
-         break;
-      case GL_INDEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->Index.Type);
-         break;
-      case GL_INDEX_ARRAY_STRIDE:
-         params[0] = ctx->Array.ArrayObj->Index.Stride;
-         break;
-      case GL_INDEX_ARRAY_COUNT_EXT:
-         params[0] = 0;
-         break;
-      case GL_TEXTURE_COORD_ARRAY:
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_SIZE:
-         params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size;
-         break;
-      case GL_TEXTURE_COORD_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_STRIDE:
-         params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride;
-         break;
-      case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
-         params[0] = 0;
-         break;
-      case GL_EDGE_FLAG_ARRAY:
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->EdgeFlag.Enabled);
-         break;
-      case GL_EDGE_FLAG_ARRAY_STRIDE:
-         params[0] = ctx->Array.ArrayObj->EdgeFlag.Stride;
-         break;
-      case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
-         params[0] = 0;
-         break;
-      case GL_MAX_TEXTURE_UNITS_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = ctx->Const.MaxTextureUnits;
-         break;
-      case GL_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit;
-         break;
-      case GL_CLIENT_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = GL_TEXTURE0_ARB + ctx->Array.ActiveTexture;
-         break;
-      case GL_TEXTURE_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
-         break;
-      case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name;
-         break;
-      case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = (1 << (ctx->Const.MaxCubeTextureLevels - 1));
-         break;
-      case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         params[0] = ctx->Hint.TextureCompression;
-         break;
-      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         params[0] = _mesa_get_compressed_formats(ctx, NULL, GL_FALSE);
-         break;
-      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         {
-         GLint formats[100];
-         GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-         ASSERT(n <= 100);
-         for (i = 0; i < n; i++)
-            params[i] = ENUM_TO_INT(formats[i]);
-         }
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = ctx->Array.LockFirst;
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = ctx->Array.LockCount;
-         break;
-      case GL_TRANSPOSE_COLOR_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[4]);
-         params[2] = IROUND(matrix[8]);
-         params[3] = IROUND(matrix[12]);
-         params[4] = IROUND(matrix[1]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[9]);
-         params[7] = IROUND(matrix[13]);
-         params[8] = IROUND(matrix[2]);
-         params[9] = IROUND(matrix[6]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[14]);
-         params[12] = IROUND(matrix[3]);
-         params[13] = IROUND(matrix[7]);
-         params[14] = IROUND(matrix[11]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[4]);
-         params[2] = IROUND(matrix[8]);
-         params[3] = IROUND(matrix[12]);
-         params[4] = IROUND(matrix[1]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[9]);
-         params[7] = IROUND(matrix[13]);
-         params[8] = IROUND(matrix[2]);
-         params[9] = IROUND(matrix[6]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[14]);
-         params[12] = IROUND(matrix[3]);
-         params[13] = IROUND(matrix[7]);
-         params[14] = IROUND(matrix[11]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[4]);
-         params[2] = IROUND(matrix[8]);
-         params[3] = IROUND(matrix[12]);
-         params[4] = IROUND(matrix[1]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[9]);
-         params[7] = IROUND(matrix[13]);
-         params[8] = IROUND(matrix[2]);
-         params[9] = IROUND(matrix[6]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[14]);
-         params[12] = IROUND(matrix[3]);
-         params[13] = IROUND(matrix[7]);
-         params[14] = IROUND(matrix[11]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[4]);
-         params[2] = IROUND(matrix[8]);
-         params[3] = IROUND(matrix[12]);
-         params[4] = IROUND(matrix[1]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[9]);
-         params[7] = IROUND(matrix[13]);
-         params[8] = IROUND(matrix[2]);
-         params[9] = IROUND(matrix[6]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[14]);
-         params[12] = IROUND(matrix[3]);
-         params[13] = IROUND(matrix[7]);
-         params[14] = IROUND(matrix[11]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_COLOR_MATRIX_SGI:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[1]);
-         params[2] = IROUND(matrix[2]);
-         params[3] = IROUND(matrix[3]);
-         params[4] = IROUND(matrix[4]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[6]);
-         params[7] = IROUND(matrix[7]);
-         params[8] = IROUND(matrix[8]);
-         params[9] = IROUND(matrix[9]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[11]);
-         params[12] = IROUND(matrix[12]);
-         params[13] = IROUND(matrix[13]);
-         params[14] = IROUND(matrix[14]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = ctx->ColorMatrixStack.Depth + 1;
-         break;
-      case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = MAX_COLOR_STACK_DEPTH;
-         break;
-      case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[0]);
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[1]);
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[2]);
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixScale[3]);
-         break;
-      case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[0]);
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[1]);
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[2]);
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
-         params[0] = IROUND(ctx->Pixel.PostColorMatrixBias[3]);
-         break;
-      case GL_CONVOLUTION_1D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution1DEnabled);
-         break;
-      case GL_CONVOLUTION_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.Convolution2DEnabled);
-         break;
-      case GL_SEPARABLE_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.Separable2DEnabled);
-         break;
-      case GL_POST_CONVOLUTION_RED_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionScale[0]);
-         break;
-      case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionScale[1]);
-         break;
-      case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionScale[2]);
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionScale[3]);
-         break;
-      case GL_POST_CONVOLUTION_RED_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionBias[0]);
-         break;
-      case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionBias[1]);
-         break;
-      case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionBias[2]);
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND(ctx->Pixel.PostConvolutionBias[3]);
-         break;
-      case GL_HISTOGRAM:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.HistogramEnabled);
-         break;
-      case GL_MINMAX:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.MinMaxEnabled);
-         break;
-      case GL_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
-         break;
-      case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
-         break;
-      case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_INT(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
-         break;
-      case GL_TEXTURE_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_texture_color_table);
-         params[0] = BOOLEAN_TO_INT(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
-         break;
-      case GL_COLOR_SUM_EXT:
-         CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Fog.ColorSumEnabled);
-         break;
-      case GL_CURRENT_SECONDARY_COLOR_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
-         params[1] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
-         params[2] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
-         params[3] = FLOAT_TO_INT(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Enabled);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->SecondaryColor.Type);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = ctx->Array.ArrayObj->SecondaryColor.Stride;
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = ctx->Array.ArrayObj->SecondaryColor.Size;
-         break;
-      case GL_CURRENT_FOG_COORDINATE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = IROUND(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->FogCoord.Enabled);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_INT(ctx->Array.ArrayObj->FogCoord.Type);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ctx->Array.ArrayObj->FogCoord.Stride;
-         break;
-      case GL_FOG_COORDINATE_SOURCE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_INT(ctx->Fog.FogCoordinateSource);
-         break;
-      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
-         CHECK_EXT1(EXT_texture_lod_bias);
-         params[0] = IROUND(ctx->Const.MaxTextureLodBias);
-         break;
-      case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         CHECK_EXT1(EXT_texture_filter_anisotropic);
-         params[0] = IROUND(ctx->Const.MaxTextureMaxAnisotropy);
-         break;
-      case GL_MULTISAMPLE_ARB:
-         params[0] = BOOLEAN_TO_INT(ctx->Multisample.Enabled);
-         break;
-      case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToCoverage);
-         break;
-      case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleAlphaToOne);
-         break;
-      case GL_SAMPLE_COVERAGE_ARB:
-         params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverage);
-         break;
-      case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         params[0] = IROUND(ctx->Multisample.SampleCoverageValue);
-         break;
-      case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         params[0] = BOOLEAN_TO_INT(ctx->Multisample.SampleCoverageInvert);
-         break;
-      case GL_SAMPLE_BUFFERS_ARB:
-         params[0] = ctx->DrawBuffer->Visual.sampleBuffers;
-         break;
-      case GL_SAMPLES_ARB:
-         params[0] = ctx->DrawBuffer->Visual.samples;
-         break;
-      case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         CHECK_EXT1(IBM_rasterpos_clip);
-         params[0] = BOOLEAN_TO_INT(ctx->Transform.RasterPositionUnclipped);
-         break;
-      case GL_POINT_SPRITE_NV:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = BOOLEAN_TO_INT(ctx->Point.PointSprite);
-         break;
-      case GL_POINT_SPRITE_R_MODE_NV:
-         CHECK_EXT1(NV_point_sprite);
-         params[0] = ENUM_TO_INT(ctx->Point.SpriteRMode);
-         break;
-      case GL_POINT_SPRITE_COORD_ORIGIN:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = ENUM_TO_INT(ctx->Point.SpriteOrigin);
-         break;
-      case GL_GENERATE_MIPMAP_HINT_SGIS:
-         CHECK_EXT1(SGIS_generate_mipmap);
-         params[0] = ENUM_TO_INT(ctx->Hint.GenerateMipmap);
-         break;
-      case GL_VERTEX_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = (ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY0_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY1_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY2_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY3_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY5_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY6_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY7_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY8_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY9_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY10_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY11_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY12_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY13_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY14_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY15_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB0_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[0]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB1_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[1]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB2_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[2]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB3_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[3]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB4_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[4]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB5_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[5]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB6_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[6]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB7_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[7]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB8_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[8]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB9_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[9]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB10_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[10]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB11_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[11]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB12_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[12]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB13_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[13]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB14_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[14]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB15_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->Eval.Map1Attrib[15]);
-         break;
-      case GL_FRAGMENT_PROGRAM_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
-         break;
-      case GL_FRAGMENT_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0;
-         break;
-      case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = MAX_NV_FRAGMENT_PROGRAM_PARAMS;
-         break;
-      case GL_TEXTURE_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = BOOLEAN_TO_INT(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
-         break;
-      case GL_TEXTURE_BINDING_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name;
-         break;
-      case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = ctx->Const.MaxTextureRectSize;
-         break;
-      case GL_STENCIL_TEST_TWO_SIDE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = BOOLEAN_TO_INT(ctx->Stencil.TestTwoSide);
-         break;
-      case GL_ACTIVE_STENCIL_FACE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = ENUM_TO_INT(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
-         break;
-      case GL_MAX_SHININESS_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = IROUND(ctx->Const.MaxShininess);
-         break;
-      case GL_MAX_SPOT_EXPONENT_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = IROUND(ctx->Const.MaxSpotExponent);
-         break;
-      case GL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayBufferObj->Name;
-         break;
-      case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->Vertex.BufferObj->Name;
-         break;
-      case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->Normal.BufferObj->Name;
-         break;
-      case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->Color.BufferObj->Name;
-         break;
-      case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->Index.BufferObj->Name;
-         break;
-      case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name;
-         break;
-      case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name;
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name;
-         break;
-      case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ArrayObj->FogCoord.BufferObj->Name;
-         break;
-      case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = ctx->Array.ElementArrayBufferObj->Name;
-         break;
-      case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = ctx->Pack.BufferObj->Name;
-         break;
-      case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = ctx->Unpack.BufferObj->Name;
-         break;
-      case GL_VERTEX_PROGRAM_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.Enabled);
-         break;
-      case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.PointSizeEnabled);
-         break;
-      case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->VertexProgram.TwoSideEnabled);
-         break;
-      case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = ctx->Const.MaxProgramMatrixStackDepth;
-         break;
-      case GL_MAX_PROGRAM_MATRICES_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = ctx->Const.MaxProgramMatrices;
-         break;
-      case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT(ctx->CurrentStack->Depth + 1);
-         break;
-      case GL_CURRENT_MATRIX_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[1]);
-         params[2] = IROUND(matrix[2]);
-         params[3] = IROUND(matrix[3]);
-         params[4] = IROUND(matrix[4]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[6]);
-         params[7] = IROUND(matrix[7]);
-         params[8] = IROUND(matrix[8]);
-         params[9] = IROUND(matrix[9]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[11]);
-         params[12] = IROUND(matrix[12]);
-         params[13] = IROUND(matrix[13]);
-         params[14] = IROUND(matrix[14]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
-         CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = IROUND(matrix[0]);
-         params[1] = IROUND(matrix[4]);
-         params[2] = IROUND(matrix[8]);
-         params[3] = IROUND(matrix[12]);
-         params[4] = IROUND(matrix[1]);
-         params[5] = IROUND(matrix[5]);
-         params[6] = IROUND(matrix[9]);
-         params[7] = IROUND(matrix[13]);
-         params[8] = IROUND(matrix[2]);
-         params[9] = IROUND(matrix[6]);
-         params[10] = IROUND(matrix[10]);
-         params[11] = IROUND(matrix[14]);
-         params[12] = IROUND(matrix[3]);
-         params[13] = IROUND(matrix[7]);
-         params[14] = IROUND(matrix[11]);
-         params[15] = IROUND(matrix[15]);
-         }
-         break;
-      case GL_MAX_VERTEX_ATTRIBS_ARB:
-         CHECK_EXT1(ARB_vertex_program);
-         params[0] = ctx->Const.VertexProgram.MaxAttribs;
-         break;
-      case GL_PROGRAM_ERROR_POSITION_ARB:
-         CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
-         params[0] = ctx->Program.ErrorPos;
-         break;
-      case GL_FRAGMENT_PROGRAM_ARB:
-         CHECK_EXT1(ARB_fragment_program);
-         params[0] = BOOLEAN_TO_INT(ctx->FragmentProgram.Enabled);
-         break;
-      case GL_MAX_TEXTURE_COORDS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = ctx->Const.MaxTextureCoordUnits;
-         break;
-      case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = ctx->Const.MaxTextureImageUnits;
-         break;
-      case GL_DEPTH_BOUNDS_TEST_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = BOOLEAN_TO_INT(ctx->Depth.BoundsTest);
-         break;
-      case GL_DEPTH_BOUNDS_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = IROUND(ctx->Depth.BoundsMin);
-         params[1] = IROUND(ctx->Depth.BoundsMax);
-         break;
-      case GL_DEPTH_CLAMP:
-         CHECK_EXT1(ARB_depth_clamp);
-         params[0] = BOOLEAN_TO_INT(ctx->Transform.DepthClamp);
-         break;
-      case GL_MAX_DRAW_BUFFERS_ARB:
-         params[0] = ctx->Const.MaxDrawBuffers;
-         break;
-      case GL_DRAW_BUFFER0_ARB:
-         params[0] = ENUM_TO_INT(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_DRAW_BUFFER1_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
-         params[0] = ENUM_TO_INT(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER2_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
-         params[0] = ENUM_TO_INT(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER3_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
-         params[0] = ENUM_TO_INT(buffer);
-         }
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = _mesa_get_color_read_type(ctx);
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = _mesa_get_color_read_format(ctx);
-         break;
-      case GL_NUM_FRAGMENT_REGISTERS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = 6;
-         break;
-      case GL_NUM_FRAGMENT_CONSTANTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = 8;
-         break;
-      case GL_NUM_PASSES_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = 2;
-         break;
-      case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = 8;
-         break;
-      case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = 16;
-         break;
-      case GL_COLOR_ALPHA_PAIRING_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = BOOLEAN_TO_INT(GL_TRUE);
-         break;
-      case GL_NUM_LOOPBACK_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = 3;
-         break;
-      case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = 3;
-         break;
-      case GL_STENCIL_BACK_FUNC:
-         params[0] = ENUM_TO_INT(ctx->Stencil.Function[1]);
-         break;
-      case GL_STENCIL_BACK_VALUE_MASK:
-         params[0] = ctx->Stencil.ValueMask[1];
-         break;
-      case GL_STENCIL_BACK_WRITEMASK:
-         params[0] = ctx->Stencil.WriteMask[1];
-         break;
-      case GL_STENCIL_BACK_REF:
-         params[0] = ctx->Stencil.Ref[1];
-         break;
-      case GL_STENCIL_BACK_FAIL:
-         params[0] = ENUM_TO_INT(ctx->Stencil.FailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_INT(ctx->Stencil.ZFailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_INT(ctx->Stencil.ZPassFunc[1]);
-         break;
-      case GL_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = ctx->DrawBuffer->Name;
-         break;
-      case GL_RENDERBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0;
-         break;
-      case GL_MAX_COLOR_ATTACHMENTS_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = ctx->Const.MaxColorAttachments;
-         break;
-      case GL_MAX_RENDERBUFFER_SIZE_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = ctx->Const.MaxRenderbufferSize;
-         break;
-      case GL_READ_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_blit);
-         params[0] = ctx->ReadBuffer->Name;
-         break;
-      case GL_PROVOKING_VERTEX_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = BOOLEAN_TO_INT(ctx->Light.ProvokingVertex);
-         break;
-      case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = BOOLEAN_TO_INT(ctx->Const.QuadsFollowProvokingVertexConvention);
-         break;
-      case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = ctx->Const.FragmentProgram.MaxUniformComponents;
-         break;
-      case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = ENUM_TO_INT(ctx->Hint.FragmentShaderDerivative);
-         break;
-      case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = ctx->Const.VertexProgram.MaxUniformComponents;
-         break;
-      case GL_MAX_VARYING_FLOATS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = ctx->Const.MaxVarying * 4;
-         break;
-      case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = ctx->Const.MaxVertexTextureImageUnits;
-         break;
-      case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = ctx->Const.MaxCombinedTextureImageUnits;
-         break;
-      case GL_CURRENT_PROGRAM:
-         CHECK_EXT1(ARB_shader_objects);
-         params[0] = ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0;
-         break;
-      case GL_MAX_SAMPLES:
-         CHECK_EXT1(ARB_framebuffer_object);
-         params[0] = ctx->Const.MaxSamples;
-         break;
-      case GL_VERTEX_ARRAY_BINDING_APPLE:
-         CHECK_EXT1(APPLE_vertex_array_object);
-         params[0] = ctx->Array.ArrayObj->Name;
-         break;
-      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
-         CHECK_EXT1(ARB_seamless_cube_map);
-         params[0] = BOOLEAN_TO_INT(ctx->Texture.CubeMapSeamless);
-         break;
-      case GL_MAX_SERVER_WAIT_TIMEOUT:
-         CHECK_EXT1(ARB_sync);
-         params[0] = INT64_TO_INT(ctx->Const.MaxServerWaitTimeout);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = ctx->TransformFeedback.CurrentBuffer->Name;
-         break;
-      case GL_RASTERIZER_DISCARD:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = BOOLEAN_TO_INT(ctx->TransformFeedback.RasterDiscard);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = ctx->Const.MaxTransformFeedbackInterleavedComponents;
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = ctx->Const.MaxTransformFeedbackSeparateAttribs;
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = ctx->Const.MaxTransformFeedbackSeparateComponents;
-         break;
-      case GL_NUM_EXTENSIONS:
-         CHECK_VERSION(30);
-         params[0] = _mesa_get_extension_count(ctx);
-         break;
-      case GL_MAJOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = ctx->VersionMajor;
-         break;
-      case GL_MINOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = ctx->VersionMinor;
-         break;
-      case GL_CONTEXT_FLAGS:
-         CHECK_VERSION(30);
-         params[0] = ctx->Const.ContextFlags;
-         break;
-      case GL_PRIMITIVE_RESTART:
-         CHECK_VERSION(31);
-         params[0] = BOOLEAN_TO_INT(ctx->Array.PrimitiveRestart);
-         break;
-      case GL_PRIMITIVE_RESTART_INDEX:
-         CHECK_VERSION(31);
-         params[0] = ctx->Array.RestartIndex;
-         break;
-      case GL_CONTEXT_PROFILE_MASK:
-         CHECK_VERSION(32);
-         params[0] = ctx->Const.ProfileMask;
-         break;
-      default:
-         goto invalid_enum_error;
+   case TYPE_DOUBLEN:
+      params[0] = ((GLdouble *) p)[0];
+      break;
+
+   case TYPE_INT_4:
+      params[3] = (GLfloat) (((GLint *) p)[3]);
+   case TYPE_INT_3:
+      params[2] = (GLfloat) (((GLint *) p)[2]);
+   case TYPE_INT_2:
+   case TYPE_ENUM_2:
+      params[1] = (GLfloat) (((GLint *) p)[1]);
+   case TYPE_INT:
+   case TYPE_ENUM:
+      params[0] = (GLfloat) (((GLint *) p)[0]);
+      break;
+
+   case TYPE_INT_N:
+      for (i = 0; i < v.value_int_n.n; i++)
+        params[i] = INT_TO_FLOAT(v.value_int_n.ints[i]);
+      break;
+
+   case TYPE_INT64:
+      params[0] = ((GLint64 *) p)[0];
+      break;
+
+   case TYPE_BOOLEAN:
+      params[0] = BOOLEAN_TO_FLOAT(*(GLboolean*) p);
+      break;           
+
+   case TYPE_MATRIX:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = m->m[i];
+      break;
+
+   case TYPE_MATRIX_T:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = m->m[transpose[i]];
+      break;
+
+   case TYPE_BIT_0:
+   case TYPE_BIT_1:
+   case TYPE_BIT_2:
+   case TYPE_BIT_3:
+   case TYPE_BIT_4:
+   case TYPE_BIT_5:
+      shift = d->type - TYPE_BIT_0;
+      params[0] = BOOLEAN_TO_FLOAT((*(GLbitfield *) p >> shift) & 1);
+      break;
    }
-   return;
+}
+
+void GLAPIENTRY
+_mesa_GetIntegerv(GLenum pname, GLint *params)
+{
+   const struct value_desc *d;
+   union value v;
+   GLmatrix *m;
+   int shift, i;
+   void *p;
+
+   d = find_value("glGetIntegerv", pname, &p, &v);
+   switch (d->type) {
+   case TYPE_INVALID:
+      break;
+   case TYPE_CONST:
+      params[0] = d->offset;
+      break;
+
+   case TYPE_FLOAT_4:
+      params[3] = IROUND(((GLfloat *) p)[3]);
+   case TYPE_FLOAT_3:
+      params[2] = IROUND(((GLfloat *) p)[2]);
+   case TYPE_FLOAT_2:
+      params[1] = IROUND(((GLfloat *) p)[1]);
+   case TYPE_FLOAT:
+      params[0] = IROUND(((GLfloat *) p)[0]);
+      break;
+
+   case TYPE_FLOATN_4:
+      params[3] = FLOAT_TO_INT(((GLfloat *) p)[3]);
+   case TYPE_FLOATN_3:
+      params[2] = FLOAT_TO_INT(((GLfloat *) p)[2]);
+   case TYPE_FLOATN_2:
+      params[1] = FLOAT_TO_INT(((GLfloat *) p)[1]);
+   case TYPE_FLOATN:
+      params[0] = FLOAT_TO_INT(((GLfloat *) p)[0]);
+      break;
+
+   case TYPE_DOUBLEN:
+      params[0] = FLOAT_TO_INT(((GLdouble *) p)[0]);
+      break;
+
+   case TYPE_INT_4:
+      params[3] = ((GLint *) p)[3];
+   case TYPE_INT_3:
+      params[2] = ((GLint *) p)[2];
+   case TYPE_INT_2:
+   case TYPE_ENUM_2:
+      params[1] = ((GLint *) p)[1];
+   case TYPE_INT:
+   case TYPE_ENUM:
+      params[0] = ((GLint *) p)[0];
+      break;
 
-invalid_enum_error:
-   _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerv(pname=0x%x)", pname);
+   case TYPE_INT_N:
+      for (i = 0; i < v.value_int_n.n; i++)
+        params[i] = v.value_int_n.ints[i];
+      break;
+
+   case TYPE_INT64:
+      params[0] = INT64_TO_INT(((GLint64 *) p)[0]);
+      break;
+
+   case TYPE_BOOLEAN:
+      params[0] = BOOLEAN_TO_INT(*(GLboolean*) p);
+      break;           
+
+   case TYPE_MATRIX:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_INT(m->m[i]);
+      break;
+
+   case TYPE_MATRIX_T:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_INT(m->m[transpose[i]]);
+      break;
+
+   case TYPE_BIT_0:
+   case TYPE_BIT_1:
+   case TYPE_BIT_2:
+   case TYPE_BIT_3:
+   case TYPE_BIT_4:
+   case TYPE_BIT_5:
+      shift = d->type - TYPE_BIT_0;
+      params[0] = (*(GLbitfield *) p >> shift) & 1;
+      break;
+   }
 }
 
 #if FEATURE_ARB_sync
 void GLAPIENTRY
-_mesa_GetInteger64v( GLenum pname, GLint64 *params )
+_mesa_GetInteger64v(GLenum pname, GLint64 *params)
 {
-   GET_CURRENT_CONTEXT(ctx);
-   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-   (void) version;
+   const struct value_desc *d;
+   union value v;
+   GLmatrix *m;
+   int shift, i;
+   void *p;
 
-   if (!params)
-      return;
+   d = find_value("glGetInteger64v", pname, &p, &v);
+   switch (d->type) {
+   case TYPE_INVALID:
+      break;
+   case TYPE_CONST:
+      params[0] = d->offset;
+      break;
 
-   if (ctx->Driver.GetInteger64v &&
-       ctx->Driver.GetInteger64v(ctx, pname, params))
-      return;
+   case TYPE_FLOAT_4:
+      params[3] = IROUND64(((GLfloat *) p)[3]);
+   case TYPE_FLOAT_3:
+      params[2] = IROUND64(((GLfloat *) p)[2]);
+   case TYPE_FLOAT_2:
+      params[1] = IROUND64(((GLfloat *) p)[1]);
+   case TYPE_FLOAT:
+      params[0] = IROUND64(((GLfloat *) p)[0]);
+      break;
 
-   switch (pname) {
-      case GL_ACCUM_RED_BITS:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumRedBits);
-         break;
-      case GL_ACCUM_GREEN_BITS:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumGreenBits);
-         break;
-      case GL_ACCUM_BLUE_BITS:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumBlueBits);
-         break;
-      case GL_ACCUM_ALPHA_BITS:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.accumAlphaBits);
-         break;
-      case GL_ACCUM_CLEAR_VALUE:
-         params[0] = FLOAT_TO_INT64(ctx->Accum.ClearColor[0]);
-         params[1] = FLOAT_TO_INT64(ctx->Accum.ClearColor[1]);
-         params[2] = FLOAT_TO_INT64(ctx->Accum.ClearColor[2]);
-         params[3] = FLOAT_TO_INT64(ctx->Accum.ClearColor[3]);
-         break;
-      case GL_ALPHA_BIAS:
-         params[0] = IROUND64(ctx->Pixel.AlphaBias);
-         break;
-      case GL_ALPHA_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.alphaBits);
-         break;
-      case GL_ALPHA_SCALE:
-         params[0] = IROUND64(ctx->Pixel.AlphaScale);
-         break;
-      case GL_ALPHA_TEST:
-         params[0] = BOOLEAN_TO_INT64(ctx->Color.AlphaEnabled);
-         break;
-      case GL_ALPHA_TEST_FUNC:
-         params[0] = ENUM_TO_INT64(ctx->Color.AlphaFunc);
-         break;
-      case GL_ALPHA_TEST_REF:
-         params[0] = FLOAT_TO_INT64(ctx->Color.AlphaRef);
-         break;
-      case GL_ATTRIB_STACK_DEPTH:
-         params[0] = (GLint64)(ctx->AttribStackDepth);
-         break;
-      case GL_AUTO_NORMAL:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.AutoNormal);
-         break;
-      case GL_AUX_BUFFERS:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.numAuxBuffers);
-         break;
-      case GL_BLEND:
-         params[0] = BOOLEAN_TO_INT64((ctx->Color.BlendEnabled & 1));
-         break;
-      case GL_BLEND_DST:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_SRC_RGB_EXT:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcRGB);
-         break;
-      case GL_BLEND_DST_RGB_EXT:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendDstRGB);
-         break;
-      case GL_BLEND_SRC_ALPHA_EXT:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendSrcA);
-         break;
-      case GL_BLEND_DST_ALPHA_EXT:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendDstA);
-         break;
-      case GL_BLEND_EQUATION:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationRGB );
-         break;
-      case GL_BLEND_EQUATION_ALPHA_EXT:
-         params[0] = ENUM_TO_INT64(ctx->Color.BlendEquationA );
-         break;
-      case GL_BLEND_COLOR_EXT:
-         params[0] = FLOAT_TO_INT64(ctx->Color.BlendColor[0]);
-         params[1] = FLOAT_TO_INT64(ctx->Color.BlendColor[1]);
-         params[2] = FLOAT_TO_INT64(ctx->Color.BlendColor[2]);
-         params[3] = FLOAT_TO_INT64(ctx->Color.BlendColor[3]);
-         break;
-      case GL_BLUE_BIAS:
-         params[0] = IROUND64(ctx->Pixel.BlueBias);
-         break;
-      case GL_BLUE_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.blueBits);
-         break;
-      case GL_BLUE_SCALE:
-         params[0] = IROUND64(ctx->Pixel.BlueScale);
-         break;
-      case GL_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = (GLint64)(ctx->ClientAttribStackDepth);
-         break;
-      case GL_CLIP_PLANE0:
-         params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 0) & 1);
-         break;
-      case GL_CLIP_PLANE1:
-         params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 1) & 1);
-         break;
-      case GL_CLIP_PLANE2:
-         params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 2) & 1);
-         break;
-      case GL_CLIP_PLANE3:
-         params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 3) & 1);
-         break;
-      case GL_CLIP_PLANE4:
-         params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 4) & 1);
-         break;
-      case GL_CLIP_PLANE5:
-         params[0] = BOOLEAN_TO_INT64((ctx->Transform.ClipPlanesEnabled >> 5) & 1);
-         break;
-      case GL_COLOR_CLEAR_VALUE:
-         params[0] = FLOAT_TO_INT64(ctx->Color.ClearColor[0]);
-         params[1] = FLOAT_TO_INT64(ctx->Color.ClearColor[1]);
-         params[2] = FLOAT_TO_INT64(ctx->Color.ClearColor[2]);
-         params[3] = FLOAT_TO_INT64(ctx->Color.ClearColor[3]);
-         break;
-      case GL_COLOR_MATERIAL:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.ColorMaterialEnabled);
-         break;
-      case GL_COLOR_MATERIAL_FACE:
-         params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialFace);
-         break;
-      case GL_COLOR_MATERIAL_PARAMETER:
-         params[0] = ENUM_TO_INT64(ctx->Light.ColorMaterialMode);
-         break;
-      case GL_COLOR_WRITEMASK:
-         params[0] = (GLint64)(ctx->Color.ColorMask[0][RCOMP] ? 1 : 0);
-         params[1] = (GLint64)(ctx->Color.ColorMask[0][GCOMP] ? 1 : 0);
-         params[2] = (GLint64)(ctx->Color.ColorMask[0][BCOMP] ? 1 : 0);
-         params[3] = (GLint64)(ctx->Color.ColorMask[0][ACOMP] ? 1 : 0);
-         break;
-      case GL_CULL_FACE:
-         params[0] = BOOLEAN_TO_INT64(ctx->Polygon.CullFlag);
-         break;
-      case GL_CULL_FACE_MODE:
-         params[0] = ENUM_TO_INT64(ctx->Polygon.CullFaceMode);
-         break;
-      case GL_CURRENT_COLOR:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]);
-         params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]);
-         params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]);
-         params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]);
-         break;
-      case GL_CURRENT_INDEX:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]);
-         break;
-      case GL_CURRENT_NORMAL:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]);
-         params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]);
-         params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]);
-         break;
-      case GL_CURRENT_RASTER_COLOR:
-         params[0] = FLOAT_TO_INT64(ctx->Current.RasterColor[0]);
-         params[1] = FLOAT_TO_INT64(ctx->Current.RasterColor[1]);
-         params[2] = FLOAT_TO_INT64(ctx->Current.RasterColor[2]);
-         params[3] = FLOAT_TO_INT64(ctx->Current.RasterColor[3]);
-         break;
-      case GL_CURRENT_RASTER_DISTANCE:
-         params[0] = IROUND64(ctx->Current.RasterDistance);
-         break;
-      case GL_CURRENT_RASTER_INDEX:
-         params[0] = IROUND64(1.0);
-         break;
-      case GL_CURRENT_RASTER_POSITION:
-         params[0] = IROUND64(ctx->Current.RasterPos[0]);
-         params[1] = IROUND64(ctx->Current.RasterPos[1]);
-         params[2] = IROUND64(ctx->Current.RasterPos[2]);
-         params[3] = IROUND64(ctx->Current.RasterPos[3]);
-         break;
-      case GL_CURRENT_RASTER_SECONDARY_COLOR:
-         params[0] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[0]);
-         params[1] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[1]);
-         params[2] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[2]);
-         params[3] = FLOAT_TO_INT64(ctx->Current.RasterSecondaryColor[3]);
-         break;
-      case GL_CURRENT_RASTER_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(raster tex coords, unit %u)", unit);
-            return;
-         }
-         params[0] = IROUND64(ctx->Current.RasterTexCoords[unit][0]);
-         params[1] = IROUND64(ctx->Current.RasterTexCoords[unit][1]);
-         params[2] = IROUND64(ctx->Current.RasterTexCoords[unit][2]);
-         params[3] = IROUND64(ctx->Current.RasterTexCoords[unit][3]);
-         }
-         break;
-      case GL_CURRENT_RASTER_POSITION_VALID:
-         params[0] = BOOLEAN_TO_INT64(ctx->Current.RasterPosValid);
-         break;
-      case GL_CURRENT_TEXTURE_COORDS:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(current tex coords, unit %u)", unit);
-            return;
-         }
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]);
-         params[1] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]);
-         params[2] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]);
-         params[3] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]);
-         }
-         break;
-      case GL_DEPTH_BIAS:
-         params[0] = IROUND64(ctx->Pixel.DepthBias);
-         break;
-      case GL_DEPTH_BITS:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.depthBits);
-         break;
-      case GL_DEPTH_CLEAR_VALUE:
-         params[0] = FLOAT_TO_INT64(((GLfloat) ctx->Depth.Clear));
-         break;
-      case GL_DEPTH_FUNC:
-         params[0] = ENUM_TO_INT64(ctx->Depth.Func);
-         break;
-      case GL_DEPTH_RANGE:
-         params[0] = FLOAT_TO_INT64(ctx->Viewport.Near);
-         params[1] = FLOAT_TO_INT64(ctx->Viewport.Far);
-         break;
-      case GL_DEPTH_SCALE:
-         params[0] = IROUND64(ctx->Pixel.DepthScale);
-         break;
-      case GL_DEPTH_TEST:
-         params[0] = BOOLEAN_TO_INT64(ctx->Depth.Test);
-         break;
-      case GL_DEPTH_WRITEMASK:
-         params[0] = BOOLEAN_TO_INT64(ctx->Depth.Mask);
-         break;
-      case GL_DITHER:
-         params[0] = BOOLEAN_TO_INT64(ctx->Color.DitherFlag);
-         break;
-      case GL_DOUBLEBUFFER:
-         params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.doubleBufferMode);
-         break;
-      case GL_DRAW_BUFFER:
-         params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_EDGE_FLAG:
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = BOOLEAN_TO_INT64((ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0));
-         break;
-      case GL_FEEDBACK_BUFFER_SIZE:
-         params[0] = (GLint64)(ctx->Feedback.BufferSize);
-         break;
-      case GL_FEEDBACK_BUFFER_TYPE:
-         params[0] = ENUM_TO_INT64(ctx->Feedback.Type);
-         break;
-      case GL_FOG:
-         params[0] = BOOLEAN_TO_INT64(ctx->Fog.Enabled);
-         break;
-      case GL_FOG_COLOR:
-         params[0] = FLOAT_TO_INT64(ctx->Fog.Color[0]);
-         params[1] = FLOAT_TO_INT64(ctx->Fog.Color[1]);
-         params[2] = FLOAT_TO_INT64(ctx->Fog.Color[2]);
-         params[3] = FLOAT_TO_INT64(ctx->Fog.Color[3]);
-         break;
-      case GL_FOG_DENSITY:
-         params[0] = IROUND64(ctx->Fog.Density);
-         break;
-      case GL_FOG_END:
-         params[0] = IROUND64(ctx->Fog.End);
-         break;
-      case GL_FOG_HINT:
-         params[0] = ENUM_TO_INT64(ctx->Hint.Fog);
-         break;
-      case GL_FOG_INDEX:
-         params[0] = IROUND64(ctx->Fog.Index);
-         break;
-      case GL_FOG_MODE:
-         params[0] = ENUM_TO_INT64(ctx->Fog.Mode);
-         break;
-      case GL_FOG_START:
-         params[0] = IROUND64(ctx->Fog.Start);
-         break;
-      case GL_FRONT_FACE:
-         params[0] = ENUM_TO_INT64(ctx->Polygon.FrontFace);
-         break;
-      case GL_GREEN_BIAS:
-         params[0] = IROUND64(ctx->Pixel.GreenBias);
-         break;
-      case GL_GREEN_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.greenBits);
-         break;
-      case GL_GREEN_SCALE:
-         params[0] = IROUND64(ctx->Pixel.GreenScale);
-         break;
-      case GL_INDEX_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.indexBits);
-         break;
-      case GL_INDEX_CLEAR_VALUE:
-         params[0] = (GLint64)(ctx->Color.ClearIndex);
-         break;
-      case GL_INDEX_MODE:
-         params[0] = BOOLEAN_TO_INT64(GL_FALSE);
-         break;
-      case GL_INDEX_OFFSET:
-         params[0] = (GLint64)(ctx->Pixel.IndexOffset);
-         break;
-      case GL_INDEX_SHIFT:
-         params[0] = (GLint64)(ctx->Pixel.IndexShift);
-         break;
-      case GL_INDEX_WRITEMASK:
-         params[0] = (GLint64)(ctx->Color.IndexMask);
-         break;
-      case GL_LIGHT0:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[0].Enabled);
-         break;
-      case GL_LIGHT1:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[1].Enabled);
-         break;
-      case GL_LIGHT2:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[2].Enabled);
-         break;
-      case GL_LIGHT3:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[3].Enabled);
-         break;
-      case GL_LIGHT4:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[4].Enabled);
-         break;
-      case GL_LIGHT5:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[5].Enabled);
-         break;
-      case GL_LIGHT6:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[6].Enabled);
-         break;
-      case GL_LIGHT7:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Light[7].Enabled);
-         break;
-      case GL_LIGHTING:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Enabled);
-         break;
-      case GL_LIGHT_MODEL_AMBIENT:
-         params[0] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[0]);
-         params[1] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[1]);
-         params[2] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[2]);
-         params[3] = FLOAT_TO_INT64(ctx->Light.Model.Ambient[3]);
-         break;
-      case GL_LIGHT_MODEL_COLOR_CONTROL:
-         params[0] = ENUM_TO_INT64(ctx->Light.Model.ColorControl);
-         break;
-      case GL_LIGHT_MODEL_LOCAL_VIEWER:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.LocalViewer);
-         break;
-      case GL_LIGHT_MODEL_TWO_SIDE:
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.Model.TwoSide);
-         break;
-      case GL_LINE_SMOOTH:
-         params[0] = BOOLEAN_TO_INT64(ctx->Line.SmoothFlag);
-         break;
-      case GL_LINE_SMOOTH_HINT:
-         params[0] = ENUM_TO_INT64(ctx->Hint.LineSmooth);
-         break;
-      case GL_LINE_STIPPLE:
-         params[0] = BOOLEAN_TO_INT64(ctx->Line.StippleFlag);
-         break;
-      case GL_LINE_STIPPLE_PATTERN:
-         params[0] = (GLint64)(ctx->Line.StipplePattern);
-         break;
-      case GL_LINE_STIPPLE_REPEAT:
-         params[0] = (GLint64)(ctx->Line.StippleFactor);
-         break;
-      case GL_LINE_WIDTH:
-         params[0] = IROUND64(ctx->Line.Width);
-         break;
-      case GL_LINE_WIDTH_GRANULARITY:
-         params[0] = IROUND64(ctx->Const.LineWidthGranularity);
-         break;
-      case GL_LINE_WIDTH_RANGE:
-         params[0] = IROUND64(ctx->Const.MinLineWidthAA);
-         params[1] = IROUND64(ctx->Const.MaxLineWidthAA);
-         break;
-      case GL_ALIASED_LINE_WIDTH_RANGE:
-         params[0] = IROUND64(ctx->Const.MinLineWidth);
-         params[1] = IROUND64(ctx->Const.MaxLineWidth);
-         break;
-      case GL_LIST_BASE:
-         params[0] = (GLint64)(ctx->List.ListBase);
-         break;
-      case GL_LIST_INDEX:
-         params[0] = (GLint64)((ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0));
-         break;
-      case GL_LIST_MODE:
-         {
-         GLenum mode;
-         if (!ctx->CompileFlag)
-            mode = 0;
-         else if (ctx->ExecuteFlag)
-            mode = GL_COMPILE_AND_EXECUTE;
-         else
-            mode = GL_COMPILE;
-         params[0] = ENUM_TO_INT64(mode);
-         }
-         break;
-      case GL_INDEX_LOGIC_OP:
-         params[0] = BOOLEAN_TO_INT64(ctx->Color.IndexLogicOpEnabled);
-         break;
-      case GL_COLOR_LOGIC_OP:
-         params[0] = BOOLEAN_TO_INT64(ctx->Color.ColorLogicOpEnabled);
-         break;
-      case GL_LOGIC_OP_MODE:
-         params[0] = ENUM_TO_INT64(ctx->Color.LogicOp);
-         break;
-      case GL_MAP1_COLOR_4:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Color4);
-         break;
-      case GL_MAP1_GRID_DOMAIN:
-         params[0] = IROUND64(ctx->Eval.MapGrid1u1);
-         params[1] = IROUND64(ctx->Eval.MapGrid1u2);
-         break;
-      case GL_MAP1_GRID_SEGMENTS:
-         params[0] = (GLint64)(ctx->Eval.MapGrid1un);
-         break;
-      case GL_MAP1_INDEX:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Index);
-         break;
-      case GL_MAP1_NORMAL:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Normal);
-         break;
-      case GL_MAP1_TEXTURE_COORD_1:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord1);
-         break;
-      case GL_MAP1_TEXTURE_COORD_2:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord2);
-         break;
-      case GL_MAP1_TEXTURE_COORD_3:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord3);
-         break;
-      case GL_MAP1_TEXTURE_COORD_4:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1TextureCoord4);
-         break;
-      case GL_MAP1_VERTEX_3:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex3);
-         break;
-      case GL_MAP1_VERTEX_4:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Vertex4);
-         break;
-      case GL_MAP2_COLOR_4:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Color4);
-         break;
-      case GL_MAP2_GRID_DOMAIN:
-         params[0] = IROUND64(ctx->Eval.MapGrid2u1);
-         params[1] = IROUND64(ctx->Eval.MapGrid2u2);
-         params[2] = IROUND64(ctx->Eval.MapGrid2v1);
-         params[3] = IROUND64(ctx->Eval.MapGrid2v2);
-         break;
-      case GL_MAP2_GRID_SEGMENTS:
-         params[0] = (GLint64)(ctx->Eval.MapGrid2un);
-         params[1] = (GLint64)(ctx->Eval.MapGrid2vn);
-         break;
-      case GL_MAP2_INDEX:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Index);
-         break;
-      case GL_MAP2_NORMAL:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Normal);
-         break;
-      case GL_MAP2_TEXTURE_COORD_1:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord1);
-         break;
-      case GL_MAP2_TEXTURE_COORD_2:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord2);
-         break;
-      case GL_MAP2_TEXTURE_COORD_3:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord3);
-         break;
-      case GL_MAP2_TEXTURE_COORD_4:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2TextureCoord4);
-         break;
-      case GL_MAP2_VERTEX_3:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex3);
-         break;
-      case GL_MAP2_VERTEX_4:
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map2Vertex4);
-         break;
-      case GL_MAP_COLOR:
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapColorFlag);
-         break;
-      case GL_MAP_STENCIL:
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MapStencilFlag);
-         break;
-      case GL_MATRIX_MODE:
-         params[0] = ENUM_TO_INT64(ctx->Transform.MatrixMode);
-         break;
-      case GL_MAX_ATTRIB_STACK_DEPTH:
-         params[0] = (GLint64)(MAX_ATTRIB_STACK_DEPTH);
-         break;
-      case GL_MAX_CLIENT_ATTRIB_STACK_DEPTH:
-         params[0] = (GLint64)(MAX_CLIENT_ATTRIB_STACK_DEPTH);
-         break;
-      case GL_MAX_CLIP_PLANES:
-         params[0] = (GLint64)(ctx->Const.MaxClipPlanes);
-         break;
-      case GL_MAX_ELEMENTS_VERTICES:
-         params[0] = (GLint64)(ctx->Const.MaxArrayLockSize);
-         break;
-      case GL_MAX_ELEMENTS_INDICES:
-         params[0] = (GLint64)(ctx->Const.MaxArrayLockSize);
-         break;
-      case GL_MAX_EVAL_ORDER:
-         params[0] = (GLint64)(MAX_EVAL_ORDER);
-         break;
-      case GL_MAX_LIGHTS:
-         params[0] = (GLint64)(ctx->Const.MaxLights);
-         break;
-      case GL_MAX_LIST_NESTING:
-         params[0] = (GLint64)(MAX_LIST_NESTING);
-         break;
-      case GL_MAX_MODELVIEW_STACK_DEPTH:
-         params[0] = (GLint64)(MAX_MODELVIEW_STACK_DEPTH);
-         break;
-      case GL_MAX_NAME_STACK_DEPTH:
-         params[0] = (GLint64)(MAX_NAME_STACK_DEPTH);
-         break;
-      case GL_MAX_PIXEL_MAP_TABLE:
-         params[0] = (GLint64)(MAX_PIXEL_MAP_TABLE);
-         break;
-      case GL_MAX_PROJECTION_STACK_DEPTH:
-         params[0] = (GLint64)(MAX_PROJECTION_STACK_DEPTH);
-         break;
-      case GL_MAX_TEXTURE_SIZE:
-         params[0] = (GLint64)(1 << (ctx->Const.MaxTextureLevels - 1));
-         break;
-      case GL_MAX_3D_TEXTURE_SIZE:
-         params[0] = (GLint64)(1 << (ctx->Const.Max3DTextureLevels - 1));
-         break;
-      case GL_MAX_TEXTURE_STACK_DEPTH:
-         params[0] = (GLint64)(MAX_TEXTURE_STACK_DEPTH);
-         break;
-      case GL_MAX_VIEWPORT_DIMS:
-         params[0] = (GLint64)(ctx->Const.MaxViewportWidth);
-         params[1] = (GLint64)(ctx->Const.MaxViewportHeight);
-         break;
-      case GL_MODELVIEW_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[1]);
-         params[2] = IROUND64(matrix[2]);
-         params[3] = IROUND64(matrix[3]);
-         params[4] = IROUND64(matrix[4]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[6]);
-         params[7] = IROUND64(matrix[7]);
-         params[8] = IROUND64(matrix[8]);
-         params[9] = IROUND64(matrix[9]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[11]);
-         params[12] = IROUND64(matrix[12]);
-         params[13] = IROUND64(matrix[13]);
-         params[14] = IROUND64(matrix[14]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_MODELVIEW_STACK_DEPTH:
-         params[0] = (GLint64)(ctx->ModelviewMatrixStack.Depth + 1);
-         break;
-      case GL_NAME_STACK_DEPTH:
-         params[0] = (GLint64)(ctx->Select.NameStackDepth);
-         break;
-      case GL_NORMALIZE:
-         params[0] = BOOLEAN_TO_INT64(ctx->Transform.Normalize);
-         break;
-      case GL_PACK_ALIGNMENT:
-         params[0] = (GLint64)(ctx->Pack.Alignment);
-         break;
-      case GL_PACK_LSB_FIRST:
-         params[0] = BOOLEAN_TO_INT64(ctx->Pack.LsbFirst);
-         break;
-      case GL_PACK_ROW_LENGTH:
-         params[0] = (GLint64)(ctx->Pack.RowLength);
-         break;
-      case GL_PACK_SKIP_PIXELS:
-         params[0] = (GLint64)(ctx->Pack.SkipPixels);
-         break;
-      case GL_PACK_SKIP_ROWS:
-         params[0] = (GLint64)(ctx->Pack.SkipRows);
-         break;
-      case GL_PACK_SWAP_BYTES:
-         params[0] = BOOLEAN_TO_INT64(ctx->Pack.SwapBytes);
-         break;
-      case GL_PACK_SKIP_IMAGES_EXT:
-         params[0] = (GLint64)(ctx->Pack.SkipImages);
-         break;
-      case GL_PACK_IMAGE_HEIGHT_EXT:
-         params[0] = (GLint64)(ctx->Pack.ImageHeight);
-         break;
-      case GL_PACK_INVERT_MESA:
-         params[0] = BOOLEAN_TO_INT64(ctx->Pack.Invert);
-         break;
-      case GL_PERSPECTIVE_CORRECTION_HINT:
-         params[0] = ENUM_TO_INT64(ctx->Hint.PerspectiveCorrection);
-         break;
-      case GL_PIXEL_MAP_A_TO_A_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.AtoA.Size);
-         break;
-      case GL_PIXEL_MAP_B_TO_B_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.BtoB.Size);
-         break;
-      case GL_PIXEL_MAP_G_TO_G_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.GtoG.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_A_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.ItoA.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_B_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.ItoB.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_G_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.ItoG.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_I_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.ItoI.Size);
-         break;
-      case GL_PIXEL_MAP_I_TO_R_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.ItoR.Size);
-         break;
-      case GL_PIXEL_MAP_R_TO_R_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.RtoR.Size);
-         break;
-      case GL_PIXEL_MAP_S_TO_S_SIZE:
-         params[0] = (GLint64)(ctx->PixelMaps.StoS.Size);
-         break;
-      case GL_POINT_SIZE:
-         params[0] = IROUND64(ctx->Point.Size);
-         break;
-      case GL_POINT_SIZE_GRANULARITY:
-         params[0] = IROUND64(ctx->Const.PointSizeGranularity);
-         break;
-      case GL_POINT_SIZE_RANGE:
-         params[0] = IROUND64(ctx->Const.MinPointSizeAA);
-         params[1] = IROUND64(ctx->Const.MaxPointSizeAA);
-         break;
-      case GL_ALIASED_POINT_SIZE_RANGE:
-         params[0] = IROUND64(ctx->Const.MinPointSize);
-         params[1] = IROUND64(ctx->Const.MaxPointSize);
-         break;
-      case GL_POINT_SMOOTH:
-         params[0] = BOOLEAN_TO_INT64(ctx->Point.SmoothFlag);
-         break;
-      case GL_POINT_SMOOTH_HINT:
-         params[0] = ENUM_TO_INT64(ctx->Hint.PointSmooth);
-         break;
-      case GL_POINT_SIZE_MIN_EXT:
-         params[0] = IROUND64(ctx->Point.MinSize);
-         break;
-      case GL_POINT_SIZE_MAX_EXT:
-         params[0] = IROUND64(ctx->Point.MaxSize);
-         break;
-      case GL_POINT_FADE_THRESHOLD_SIZE_EXT:
-         params[0] = IROUND64(ctx->Point.Threshold);
-         break;
-      case GL_DISTANCE_ATTENUATION_EXT:
-         params[0] = IROUND64(ctx->Point.Params[0]);
-         params[1] = IROUND64(ctx->Point.Params[1]);
-         params[2] = IROUND64(ctx->Point.Params[2]);
-         break;
-      case GL_POLYGON_MODE:
-         params[0] = ENUM_TO_INT64(ctx->Polygon.FrontMode);
-         params[1] = ENUM_TO_INT64(ctx->Polygon.BackMode);
-         break;
-      case GL_POLYGON_OFFSET_BIAS_EXT:
-         params[0] = IROUND64(ctx->Polygon.OffsetUnits);
-         break;
-      case GL_POLYGON_OFFSET_FACTOR:
-         params[0] = IROUND64(ctx->Polygon.OffsetFactor );
-         break;
-      case GL_POLYGON_OFFSET_UNITS:
-         params[0] = IROUND64(ctx->Polygon.OffsetUnits );
-         break;
-      case GL_POLYGON_OFFSET_POINT:
-         params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetPoint);
-         break;
-      case GL_POLYGON_OFFSET_LINE:
-         params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetLine);
-         break;
-      case GL_POLYGON_OFFSET_FILL:
-         params[0] = BOOLEAN_TO_INT64(ctx->Polygon.OffsetFill);
-         break;
-      case GL_POLYGON_SMOOTH:
-         params[0] = BOOLEAN_TO_INT64(ctx->Polygon.SmoothFlag);
-         break;
-      case GL_POLYGON_SMOOTH_HINT:
-         params[0] = ENUM_TO_INT64(ctx->Hint.PolygonSmooth);
-         break;
-      case GL_POLYGON_STIPPLE:
-         params[0] = BOOLEAN_TO_INT64(ctx->Polygon.StippleFlag);
-         break;
-      case GL_PROJECTION_MATRIX:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[1]);
-         params[2] = IROUND64(matrix[2]);
-         params[3] = IROUND64(matrix[3]);
-         params[4] = IROUND64(matrix[4]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[6]);
-         params[7] = IROUND64(matrix[7]);
-         params[8] = IROUND64(matrix[8]);
-         params[9] = IROUND64(matrix[9]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[11]);
-         params[12] = IROUND64(matrix[12]);
-         params[13] = IROUND64(matrix[13]);
-         params[14] = IROUND64(matrix[14]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_PROJECTION_STACK_DEPTH:
-         params[0] = (GLint64)(ctx->ProjectionMatrixStack.Depth + 1);
-         break;
-      case GL_READ_BUFFER:
-         params[0] = ENUM_TO_INT64(ctx->ReadBuffer->ColorReadBuffer);
-         break;
-      case GL_RED_BIAS:
-         params[0] = IROUND64(ctx->Pixel.RedBias);
-         break;
-      case GL_RED_BITS:
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.redBits);
-         break;
-      case GL_RED_SCALE:
-         params[0] = IROUND64(ctx->Pixel.RedScale);
-         break;
-      case GL_RENDER_MODE:
-         params[0] = ENUM_TO_INT64(ctx->RenderMode);
-         break;
-      case GL_RESCALE_NORMAL:
-         params[0] = BOOLEAN_TO_INT64(ctx->Transform.RescaleNormals);
-         break;
-      case GL_RGBA_MODE:
-         params[0] = BOOLEAN_TO_INT64(GL_TRUE);
-         break;
-      case GL_SCISSOR_BOX:
-         params[0] = (GLint64)(ctx->Scissor.X);
-         params[1] = (GLint64)(ctx->Scissor.Y);
-         params[2] = (GLint64)(ctx->Scissor.Width);
-         params[3] = (GLint64)(ctx->Scissor.Height);
-         break;
-      case GL_SCISSOR_TEST:
-         params[0] = BOOLEAN_TO_INT64(ctx->Scissor.Enabled);
-         break;
-      case GL_SELECTION_BUFFER_SIZE:
-         params[0] = (GLint64)(ctx->Select.BufferSize);
-         break;
-      case GL_SHADE_MODEL:
-         params[0] = ENUM_TO_INT64(ctx->Light.ShadeModel);
-         break;
-      case GL_SHARED_TEXTURE_PALETTE_EXT:
-         params[0] = BOOLEAN_TO_INT64(ctx->Texture.SharedPalette);
-         break;
-      case GL_STENCIL_BITS:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.stencilBits);
-         break;
-      case GL_STENCIL_CLEAR_VALUE:
-         params[0] = (GLint64)(ctx->Stencil.Clear);
-         break;
-      case GL_STENCIL_FAIL:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_FUNC:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.Function[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_REF:
-         params[0] = (GLint64)(ctx->Stencil.Ref[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_TEST:
-         params[0] = BOOLEAN_TO_INT64(ctx->Stencil.Enabled);
-         break;
-      case GL_STENCIL_VALUE_MASK:
-         params[0] = (GLint64)(ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STENCIL_WRITEMASK:
-         params[0] = (GLint64)(ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]);
-         break;
-      case GL_STEREO:
-         params[0] = BOOLEAN_TO_INT64(ctx->DrawBuffer->Visual.stereoMode);
-         break;
-      case GL_SUBPIXEL_BITS:
-         params[0] = (GLint64)(ctx->Const.SubPixelBits);
-         break;
-      case GL_TEXTURE_1D:
-         params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D));
-         break;
-      case GL_TEXTURE_2D:
-         params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D));
-         break;
-      case GL_TEXTURE_3D:
-         params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_3D));
-         break;
-      case GL_TEXTURE_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT));
-         break;
-      case GL_TEXTURE_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT));
-         break;
-      case GL_TEXTURE_BINDING_1D:
-         params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_2D:
-         params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_3D:
-         params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_1D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name);
-         break;
-      case GL_TEXTURE_BINDING_2D_ARRAY_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name);
-         break;
-      case GL_MAX_ARRAY_TEXTURE_LAYERS_EXT:
-         CHECK_EXT1(MESA_texture_array);
-         params[0] = (GLint64)(ctx->Const.MaxArrayTextureLayers);
-         break;
-      case GL_TEXTURE_GEN_S:
-         params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_T:
-         params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_R:
-         params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_GEN_Q:
-         params[0] = BOOLEAN_TO_INT64(((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0));
-         break;
-      case GL_TEXTURE_MATRIX:
-         {
-         const GLfloat *matrix;
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
-                        unit);
-            return;
-         }
-         matrix = ctx->TextureMatrixStack[unit].Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[1]);
-         params[2] = IROUND64(matrix[2]);
-         params[3] = IROUND64(matrix[3]);
-         params[4] = IROUND64(matrix[4]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[6]);
-         params[7] = IROUND64(matrix[7]);
-         params[8] = IROUND64(matrix[8]);
-         params[9] = IROUND64(matrix[9]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[11]);
-         params[12] = IROUND64(matrix[12]);
-         params[13] = IROUND64(matrix[13]);
-         params[14] = IROUND64(matrix[14]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_TEXTURE_STACK_DEPTH:
-         {
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(texture stack depth, unit %u)", unit);
-            return;
-         }
-         params[0] = (GLint64)(ctx->TextureMatrixStack[unit].Depth + 1);
-         }
-         break;
-      case GL_UNPACK_ALIGNMENT:
-         params[0] = (GLint64)(ctx->Unpack.Alignment);
-         break;
-      case GL_UNPACK_LSB_FIRST:
-         params[0] = BOOLEAN_TO_INT64(ctx->Unpack.LsbFirst);
-         break;
-      case GL_UNPACK_ROW_LENGTH:
-         params[0] = (GLint64)(ctx->Unpack.RowLength);
-         break;
-      case GL_UNPACK_SKIP_PIXELS:
-         params[0] = (GLint64)(ctx->Unpack.SkipPixels);
-         break;
-      case GL_UNPACK_SKIP_ROWS:
-         params[0] = (GLint64)(ctx->Unpack.SkipRows);
-         break;
-      case GL_UNPACK_SWAP_BYTES:
-         params[0] = BOOLEAN_TO_INT64(ctx->Unpack.SwapBytes);
-         break;
-      case GL_UNPACK_SKIP_IMAGES_EXT:
-         params[0] = (GLint64)(ctx->Unpack.SkipImages);
-         break;
-      case GL_UNPACK_IMAGE_HEIGHT_EXT:
-         params[0] = (GLint64)(ctx->Unpack.ImageHeight);
-         break;
-      case GL_UNPACK_CLIENT_STORAGE_APPLE:
-         params[0] = BOOLEAN_TO_INT64(ctx->Unpack.ClientStorage);
-         break;
-      case GL_VIEWPORT:
-         params[0] = (GLint64)(ctx->Viewport.X);
-         params[1] = (GLint64)(ctx->Viewport.Y);
-         params[2] = (GLint64)(ctx->Viewport.Width);
-         params[3] = (GLint64)(ctx->Viewport.Height);
-         break;
-      case GL_ZOOM_X:
-         params[0] = IROUND64(ctx->Pixel.ZoomX);
-         break;
-      case GL_ZOOM_Y:
-         params[0] = IROUND64(ctx->Pixel.ZoomY);
-         break;
-      case GL_VERTEX_ARRAY:
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Vertex.Enabled);
-         break;
-      case GL_VERTEX_ARRAY_SIZE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Size);
-         break;
-      case GL_VERTEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Vertex.Type);
-         break;
-      case GL_VERTEX_ARRAY_STRIDE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.Stride);
-         break;
-      case GL_VERTEX_ARRAY_COUNT_EXT:
-         params[0] = (GLint64)(0);
-         break;
-      case GL_NORMAL_ARRAY:
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Enabled);
-         break;
-      case GL_NORMAL_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Normal.Type);
-         break;
-      case GL_NORMAL_ARRAY_STRIDE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.Stride);
-         break;
-      case GL_NORMAL_ARRAY_COUNT_EXT:
-         params[0] = (GLint64)(0);
-         break;
-      case GL_COLOR_ARRAY:
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Color.Enabled);
-         break;
-      case GL_COLOR_ARRAY_SIZE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Size);
-         break;
-      case GL_COLOR_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Color.Type);
-         break;
-      case GL_COLOR_ARRAY_STRIDE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Color.Stride);
-         break;
-      case GL_COLOR_ARRAY_COUNT_EXT:
-         params[0] = (GLint64)(0);
-         break;
-      case GL_INDEX_ARRAY:
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->Index.Enabled);
-         break;
-      case GL_INDEX_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->Index.Type);
-         break;
-      case GL_INDEX_ARRAY_STRIDE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Index.Stride);
-         break;
-      case GL_INDEX_ARRAY_COUNT_EXT:
-         params[0] = (GLint64)(0);
-         break;
-      case GL_TEXTURE_COORD_ARRAY:
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_SIZE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_TYPE:
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_STRIDE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_COUNT_EXT:
-         params[0] = (GLint64)(0);
-         break;
-      case GL_EDGE_FLAG_ARRAY:
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->EdgeFlag.Enabled);
-         break;
-      case GL_EDGE_FLAG_ARRAY_STRIDE:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.Stride);
-         break;
-      case GL_EDGE_FLAG_ARRAY_COUNT_EXT:
-         params[0] = (GLint64)(0);
-         break;
-      case GL_MAX_TEXTURE_UNITS_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = (GLint64)(ctx->Const.MaxTextureUnits);
-         break;
-      case GL_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit);
-         break;
-      case GL_CLIENT_ACTIVE_TEXTURE_ARB:
-         CHECK_EXT1(ARB_multitexture);
-         params[0] = (GLint64)(GL_TEXTURE0_ARB + ctx->Array.ActiveTexture);
-         break;
-      case GL_TEXTURE_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB));
-         break;
-      case GL_TEXTURE_BINDING_CUBE_MAP_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name);
-         break;
-      case GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB:
-         CHECK_EXT1(ARB_texture_cube_map);
-         params[0] = (GLint64)((1 << (ctx->Const.MaxCubeTextureLevels - 1)));
-         break;
-      case GL_TEXTURE_COMPRESSION_HINT_ARB:
-         params[0] = (GLint64)(ctx->Hint.TextureCompression);
-         break;
-      case GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB:
-         params[0] = (GLint64)(_mesa_get_compressed_formats(ctx, NULL, GL_FALSE));
-         break;
-      case GL_COMPRESSED_TEXTURE_FORMATS_ARB:
-         {
-         GLint formats[100];
-         GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-         ASSERT(n <= 100);
-         for (i = 0; i < n; i++)
-            params[i] = ENUM_TO_INT64(formats[i]);
-         }
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_FIRST_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = (GLint64)(ctx->Array.LockFirst);
-         break;
-      case GL_ARRAY_ELEMENT_LOCK_COUNT_EXT:
-         CHECK_EXT1(EXT_compiled_vertex_array);
-         params[0] = (GLint64)(ctx->Array.LockCount);
-         break;
-      case GL_TRANSPOSE_COLOR_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[4]);
-         params[2] = IROUND64(matrix[8]);
-         params[3] = IROUND64(matrix[12]);
-         params[4] = IROUND64(matrix[1]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[9]);
-         params[7] = IROUND64(matrix[13]);
-         params[8] = IROUND64(matrix[2]);
-         params[9] = IROUND64(matrix[6]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[14]);
-         params[12] = IROUND64(matrix[3]);
-         params[13] = IROUND64(matrix[7]);
-         params[14] = IROUND64(matrix[11]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_MODELVIEW_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[4]);
-         params[2] = IROUND64(matrix[8]);
-         params[3] = IROUND64(matrix[12]);
-         params[4] = IROUND64(matrix[1]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[9]);
-         params[7] = IROUND64(matrix[13]);
-         params[8] = IROUND64(matrix[2]);
-         params[9] = IROUND64(matrix[6]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[14]);
-         params[12] = IROUND64(matrix[3]);
-         params[13] = IROUND64(matrix[7]);
-         params[14] = IROUND64(matrix[11]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_PROJECTION_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[4]);
-         params[2] = IROUND64(matrix[8]);
-         params[3] = IROUND64(matrix[12]);
-         params[4] = IROUND64(matrix[1]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[9]);
-         params[7] = IROUND64(matrix[13]);
-         params[8] = IROUND64(matrix[2]);
-         params[9] = IROUND64(matrix[6]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[14]);
-         params[12] = IROUND64(matrix[3]);
-         params[13] = IROUND64(matrix[7]);
-         params[14] = IROUND64(matrix[11]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_TEXTURE_MATRIX_ARB:
-         {
-         const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[4]);
-         params[2] = IROUND64(matrix[8]);
-         params[3] = IROUND64(matrix[12]);
-         params[4] = IROUND64(matrix[1]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[9]);
-         params[7] = IROUND64(matrix[13]);
-         params[8] = IROUND64(matrix[2]);
-         params[9] = IROUND64(matrix[6]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[14]);
-         params[12] = IROUND64(matrix[3]);
-         params[13] = IROUND64(matrix[7]);
-         params[14] = IROUND64(matrix[11]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_COLOR_MATRIX_SGI:
-         {
-         const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[1]);
-         params[2] = IROUND64(matrix[2]);
-         params[3] = IROUND64(matrix[3]);
-         params[4] = IROUND64(matrix[4]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[6]);
-         params[7] = IROUND64(matrix[7]);
-         params[8] = IROUND64(matrix[8]);
-         params[9] = IROUND64(matrix[9]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[11]);
-         params[12] = IROUND64(matrix[12]);
-         params[13] = IROUND64(matrix[13]);
-         params[14] = IROUND64(matrix[14]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = (GLint64)(ctx->ColorMatrixStack.Depth + 1);
-         break;
-      case GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI:
-         params[0] = (GLint64)(MAX_COLOR_STACK_DEPTH);
-         break;
-      case GL_POST_COLOR_MATRIX_RED_SCALE_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[0]);
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[1]);
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[2]);
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixScale[3]);
-         break;
-      case GL_POST_COLOR_MATRIX_RED_BIAS_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[0]);
-         break;
-      case GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[1]);
-         break;
-      case GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[2]);
-         break;
-      case GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI:
-         params[0] = IROUND64(ctx->Pixel.PostColorMatrixBias[3]);
-         break;
-      case GL_CONVOLUTION_1D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution1DEnabled);
-         break;
-      case GL_CONVOLUTION_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Convolution2DEnabled);
-         break;
-      case GL_SEPARABLE_2D_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.Separable2DEnabled);
-         break;
-      case GL_POST_CONVOLUTION_RED_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[0]);
-         break;
-      case GL_POST_CONVOLUTION_GREEN_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[1]);
-         break;
-      case GL_POST_CONVOLUTION_BLUE_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[2]);
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_SCALE_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionScale[3]);
-         break;
-      case GL_POST_CONVOLUTION_RED_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[0]);
-         break;
-      case GL_POST_CONVOLUTION_GREEN_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[1]);
-         break;
-      case GL_POST_CONVOLUTION_BLUE_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[2]);
-         break;
-      case GL_POST_CONVOLUTION_ALPHA_BIAS_EXT:
-         CHECK_EXT1(EXT_convolution);
-         params[0] = IROUND64(ctx->Pixel.PostConvolutionBias[3]);
-         break;
-      case GL_HISTOGRAM:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.HistogramEnabled);
-         break;
-      case GL_MINMAX:
-         CHECK_EXT1(EXT_histogram);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.MinMaxEnabled);
-         break;
-      case GL_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]);
-         break;
-      case GL_POST_CONVOLUTION_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]);
-         break;
-      case GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_color_table);
-         params[0] = BOOLEAN_TO_INT64(ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]);
-         break;
-      case GL_TEXTURE_COLOR_TABLE_SGI:
-         CHECK_EXT1(SGI_texture_color_table);
-         params[0] = BOOLEAN_TO_INT64(ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled);
-         break;
-      case GL_COLOR_SUM_EXT:
-         CHECK_EXT2(EXT_secondary_color, ARB_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Fog.ColorSumEnabled);
-         break;
-      case GL_CURRENT_SECONDARY_COLOR_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]);
-         params[1] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]);
-         params[2] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]);
-         params[3] = FLOAT_TO_INT64(ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Enabled);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->SecondaryColor.Type);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Stride);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_SIZE_EXT:
-         CHECK_EXT1(EXT_secondary_color);
-         params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.Size);
-         break;
-      case GL_CURRENT_FOG_COORDINATE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         FLUSH_CURRENT(ctx, 0);
-         params[0] = IROUND64(ctx->Current.Attrib[VERT_ATTRIB_FOG][0]);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->FogCoord.Enabled);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_TYPE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_INT64(ctx->Array.ArrayObj->FogCoord.Type);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_STRIDE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.Stride);
-         break;
-      case GL_FOG_COORDINATE_SOURCE_EXT:
-         CHECK_EXT1(EXT_fog_coord);
-         params[0] = ENUM_TO_INT64(ctx->Fog.FogCoordinateSource);
-         break;
-      case GL_MAX_TEXTURE_LOD_BIAS_EXT:
-         CHECK_EXT1(EXT_texture_lod_bias);
-         params[0] = IROUND64(ctx->Const.MaxTextureLodBias);
-         break;
-      case GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT:
-         CHECK_EXT1(EXT_texture_filter_anisotropic);
-         params[0] = IROUND64(ctx->Const.MaxTextureMaxAnisotropy);
-         break;
-      case GL_MULTISAMPLE_ARB:
-         params[0] = BOOLEAN_TO_INT64(ctx->Multisample.Enabled);
-         break;
-      case GL_SAMPLE_ALPHA_TO_COVERAGE_ARB:
-         params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToCoverage);
-         break;
-      case GL_SAMPLE_ALPHA_TO_ONE_ARB:
-         params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleAlphaToOne);
-         break;
-      case GL_SAMPLE_COVERAGE_ARB:
-         params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverage);
-         break;
-      case GL_SAMPLE_COVERAGE_VALUE_ARB:
-         params[0] = IROUND64(ctx->Multisample.SampleCoverageValue);
-         break;
-      case GL_SAMPLE_COVERAGE_INVERT_ARB:
-         params[0] = BOOLEAN_TO_INT64(ctx->Multisample.SampleCoverageInvert);
-         break;
-      case GL_SAMPLE_BUFFERS_ARB:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.sampleBuffers);
-         break;
-      case GL_SAMPLES_ARB:
-         params[0] = (GLint64)(ctx->DrawBuffer->Visual.samples);
-         break;
-      case GL_RASTER_POSITION_UNCLIPPED_IBM:
-         CHECK_EXT1(IBM_rasterpos_clip);
-         params[0] = BOOLEAN_TO_INT64(ctx->Transform.RasterPositionUnclipped);
-         break;
-      case GL_POINT_SPRITE_NV:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = BOOLEAN_TO_INT64(ctx->Point.PointSprite);
-         break;
-      case GL_POINT_SPRITE_R_MODE_NV:
-         CHECK_EXT1(NV_point_sprite);
-         params[0] = ENUM_TO_INT64(ctx->Point.SpriteRMode);
-         break;
-      case GL_POINT_SPRITE_COORD_ORIGIN:
-         CHECK_EXT2(NV_point_sprite, ARB_point_sprite);
-         params[0] = ENUM_TO_INT64(ctx->Point.SpriteOrigin);
-         break;
-      case GL_GENERATE_MIPMAP_HINT_SGIS:
-         CHECK_EXT1(SGIS_generate_mipmap);
-         params[0] = ENUM_TO_INT64(ctx->Hint.GenerateMipmap);
-         break;
-      case GL_VERTEX_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = (GLint64)((ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0));
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY0_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[0].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY1_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[1].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY2_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[2].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY3_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[3].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[4].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY5_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[5].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY6_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[6].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY7_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[7].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY8_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[8].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY9_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[9].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY10_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[10].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY11_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[11].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY12_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[12].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY13_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[13].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY14_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[14].Enabled);
-         break;
-      case GL_VERTEX_ATTRIB_ARRAY15_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.ArrayObj->VertexAttrib[15].Enabled);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB0_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[0]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB1_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[1]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB2_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[2]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB3_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[3]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB4_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[4]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB5_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[5]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB6_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[6]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB7_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[7]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB8_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[8]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB9_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[9]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB10_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[10]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB11_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[11]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB12_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[12]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB13_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[13]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB14_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[14]);
-         break;
-      case GL_MAP1_VERTEX_ATTRIB15_4_NV:
-         CHECK_EXT1(NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->Eval.Map1Attrib[15]);
-         break;
-      case GL_FRAGMENT_PROGRAM_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
-         break;
-      case GL_FRAGMENT_PROGRAM_BINDING_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = (GLint64)(ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0);
-         break;
-      case GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV:
-         CHECK_EXT1(NV_fragment_program);
-         params[0] = (GLint64)(MAX_NV_FRAGMENT_PROGRAM_PARAMS);
-         break;
-      case GL_TEXTURE_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = BOOLEAN_TO_INT64(_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV));
-         break;
-      case GL_TEXTURE_BINDING_RECTANGLE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = (GLint64)(ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name);
-         break;
-      case GL_MAX_RECTANGLE_TEXTURE_SIZE_NV:
-         CHECK_EXT1(NV_texture_rectangle);
-         params[0] = (GLint64)(ctx->Const.MaxTextureRectSize);
-         break;
-      case GL_STENCIL_TEST_TWO_SIDE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = BOOLEAN_TO_INT64(ctx->Stencil.TestTwoSide);
-         break;
-      case GL_ACTIVE_STENCIL_FACE_EXT:
-         CHECK_EXT1(EXT_stencil_two_side);
-         params[0] = ENUM_TO_INT64(ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT);
-         break;
-      case GL_MAX_SHININESS_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = IROUND64(ctx->Const.MaxShininess);
-         break;
-      case GL_MAX_SPOT_EXPONENT_NV:
-         CHECK_EXT1(NV_light_max_exponent);
-         params[0] = IROUND64(ctx->Const.MaxSpotExponent);
-         break;
-      case GL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayBufferObj->Name);
-         break;
-      case GL_VERTEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Vertex.BufferObj->Name);
-         break;
-      case GL_NORMAL_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Normal.BufferObj->Name);
-         break;
-      case GL_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Color.BufferObj->Name);
-         break;
-      case GL_INDEX_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Index.BufferObj->Name);
-         break;
-      case GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name);
-         break;
-      case GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name);
-         break;
-      case GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name);
-         break;
-      case GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ArrayObj->FogCoord.BufferObj->Name);
-         break;
-      case GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB:
-         params[0] = (GLint64)(ctx->Array.ElementArrayBufferObj->Name);
-         break;
-      case GL_PIXEL_PACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = (GLint64)(ctx->Pack.BufferObj->Name);
-         break;
-      case GL_PIXEL_UNPACK_BUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_pixel_buffer_object);
-         params[0] = (GLint64)(ctx->Unpack.BufferObj->Name);
-         break;
-      case GL_VERTEX_PROGRAM_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.Enabled);
-         break;
-      case GL_VERTEX_PROGRAM_POINT_SIZE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.PointSizeEnabled);
-         break;
-      case GL_VERTEX_PROGRAM_TWO_SIDE_ARB:
-         CHECK_EXT2(ARB_vertex_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->VertexProgram.TwoSideEnabled);
-         break;
-      case GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = (GLint64)(ctx->Const.MaxProgramMatrixStackDepth);
-         break;
-      case GL_MAX_PROGRAM_MATRICES_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = (GLint64)(ctx->Const.MaxProgramMatrices);
-         break;
-      case GL_CURRENT_MATRIX_STACK_DEPTH_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_vertex_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->CurrentStack->Depth + 1);
-         break;
-      case GL_CURRENT_MATRIX_ARB:
-         CHECK_EXT3(ARB_vertex_program, ARB_fragment_program, NV_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[1]);
-         params[2] = IROUND64(matrix[2]);
-         params[3] = IROUND64(matrix[3]);
-         params[4] = IROUND64(matrix[4]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[6]);
-         params[7] = IROUND64(matrix[7]);
-         params[8] = IROUND64(matrix[8]);
-         params[9] = IROUND64(matrix[9]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[11]);
-         params[12] = IROUND64(matrix[12]);
-         params[13] = IROUND64(matrix[13]);
-         params[14] = IROUND64(matrix[14]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_TRANSPOSE_CURRENT_MATRIX_ARB:
-         CHECK_EXT2(ARB_vertex_program, ARB_fragment_program);
-         {
-         const GLfloat *matrix = ctx->CurrentStack->Top->m;
-         params[0] = IROUND64(matrix[0]);
-         params[1] = IROUND64(matrix[4]);
-         params[2] = IROUND64(matrix[8]);
-         params[3] = IROUND64(matrix[12]);
-         params[4] = IROUND64(matrix[1]);
-         params[5] = IROUND64(matrix[5]);
-         params[6] = IROUND64(matrix[9]);
-         params[7] = IROUND64(matrix[13]);
-         params[8] = IROUND64(matrix[2]);
-         params[9] = IROUND64(matrix[6]);
-         params[10] = IROUND64(matrix[10]);
-         params[11] = IROUND64(matrix[14]);
-         params[12] = IROUND64(matrix[3]);
-         params[13] = IROUND64(matrix[7]);
-         params[14] = IROUND64(matrix[11]);
-         params[15] = IROUND64(matrix[15]);
-         }
-         break;
-      case GL_MAX_VERTEX_ATTRIBS_ARB:
-         CHECK_EXT1(ARB_vertex_program);
-         params[0] = (GLint64)(ctx->Const.VertexProgram.MaxAttribs);
-         break;
-      case GL_PROGRAM_ERROR_POSITION_ARB:
-         CHECK_EXT4(NV_vertex_program, ARB_vertex_program, NV_fragment_program, ARB_fragment_program);
-         params[0] = (GLint64)(ctx->Program.ErrorPos);
-         break;
-      case GL_FRAGMENT_PROGRAM_ARB:
-         CHECK_EXT1(ARB_fragment_program);
-         params[0] = BOOLEAN_TO_INT64(ctx->FragmentProgram.Enabled);
-         break;
-      case GL_MAX_TEXTURE_COORDS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = (GLint64)(ctx->Const.MaxTextureCoordUnits);
-         break;
-      case GL_MAX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT2(ARB_fragment_program, NV_fragment_program);
-         params[0] = (GLint64)(ctx->Const.MaxTextureImageUnits);
-         break;
-      case GL_DEPTH_BOUNDS_TEST_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = BOOLEAN_TO_INT64(ctx->Depth.BoundsTest);
-         break;
-      case GL_DEPTH_BOUNDS_EXT:
-         CHECK_EXT1(EXT_depth_bounds_test);
-         params[0] = IROUND64(ctx->Depth.BoundsMin);
-         params[1] = IROUND64(ctx->Depth.BoundsMax);
-         break;
-      case GL_DEPTH_CLAMP:
-         CHECK_EXT1(ARB_depth_clamp);
-         params[0] = BOOLEAN_TO_INT64(ctx->Transform.DepthClamp);
-         break;
-      case GL_MAX_DRAW_BUFFERS_ARB:
-         params[0] = (GLint64)(ctx->Const.MaxDrawBuffers);
-         break;
-      case GL_DRAW_BUFFER0_ARB:
-         params[0] = ENUM_TO_INT64(ctx->DrawBuffer->ColorDrawBuffer[0]);
-         break;
-      case GL_DRAW_BUFFER1_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[1];
-         params[0] = ENUM_TO_INT64(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER2_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[2];
-         params[0] = ENUM_TO_INT64(buffer);
-         }
-         break;
-      case GL_DRAW_BUFFER3_ARB:
-         {
-         GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[3];
-         params[0] = ENUM_TO_INT64(buffer);
-         }
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_TYPE_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLint64)(_mesa_get_color_read_type(ctx));
-         break;
-      case GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES:
-         CHECK_EXT1(OES_read_format);
-         if (ctx->NewState & _NEW_BUFFERS)
-            _mesa_update_state(ctx);
-         params[0] = (GLint64)(_mesa_get_color_read_format(ctx));
-         break;
-      case GL_NUM_FRAGMENT_REGISTERS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLint64)(6);
-         break;
-      case GL_NUM_FRAGMENT_CONSTANTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLint64)(8);
-         break;
-      case GL_NUM_PASSES_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLint64)(2);
-         break;
-      case GL_NUM_INSTRUCTIONS_PER_PASS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLint64)(8);
-         break;
-      case GL_NUM_INSTRUCTIONS_TOTAL_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLint64)(16);
-         break;
-      case GL_COLOR_ALPHA_PAIRING_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = BOOLEAN_TO_INT64(GL_TRUE);
-         break;
-      case GL_NUM_LOOPBACK_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLint64)(3);
-         break;
-      case GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI:
-         CHECK_EXT1(ATI_fragment_shader);
-         params[0] = (GLint64)(3);
-         break;
-      case GL_STENCIL_BACK_FUNC:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.Function[1]);
-         break;
-      case GL_STENCIL_BACK_VALUE_MASK:
-         params[0] = (GLint64)(ctx->Stencil.ValueMask[1]);
-         break;
-      case GL_STENCIL_BACK_WRITEMASK:
-         params[0] = (GLint64)(ctx->Stencil.WriteMask[1]);
-         break;
-      case GL_STENCIL_BACK_REF:
-         params[0] = (GLint64)(ctx->Stencil.Ref[1]);
-         break;
-      case GL_STENCIL_BACK_FAIL:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.FailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_FAIL:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.ZFailFunc[1]);
-         break;
-      case GL_STENCIL_BACK_PASS_DEPTH_PASS:
-         params[0] = ENUM_TO_INT64(ctx->Stencil.ZPassFunc[1]);
-         break;
-      case GL_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLint64)(ctx->DrawBuffer->Name);
-         break;
-      case GL_RENDERBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLint64)(ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0);
-         break;
-      case GL_MAX_COLOR_ATTACHMENTS_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLint64)(ctx->Const.MaxColorAttachments);
-         break;
-      case GL_MAX_RENDERBUFFER_SIZE_EXT:
-         CHECK_EXT1(EXT_framebuffer_object);
-         params[0] = (GLint64)(ctx->Const.MaxRenderbufferSize);
-         break;
-      case GL_READ_FRAMEBUFFER_BINDING_EXT:
-         CHECK_EXT1(EXT_framebuffer_blit);
-         params[0] = (GLint64)(ctx->ReadBuffer->Name);
-         break;
-      case GL_PROVOKING_VERTEX_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = BOOLEAN_TO_INT64(ctx->Light.ProvokingVertex);
-         break;
-      case GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT:
-         CHECK_EXT1(EXT_provoking_vertex);
-         params[0] = BOOLEAN_TO_INT64(ctx->Const.QuadsFollowProvokingVertexConvention);
-         break;
-      case GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = (GLint64)(ctx->Const.FragmentProgram.MaxUniformComponents);
-         break;
-      case GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB:
-         CHECK_EXT1(ARB_fragment_shader);
-         params[0] = ENUM_TO_INT64(ctx->Hint.FragmentShaderDerivative);
-         break;
-      case GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLint64)(ctx->Const.VertexProgram.MaxUniformComponents);
-         break;
-      case GL_MAX_VARYING_FLOATS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLint64)(ctx->Const.MaxVarying * 4);
-         break;
-      case GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLint64)(ctx->Const.MaxVertexTextureImageUnits);
-         break;
-      case GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB:
-         CHECK_EXT1(ARB_vertex_shader);
-         params[0] = (GLint64)(ctx->Const.MaxCombinedTextureImageUnits);
-         break;
-      case GL_CURRENT_PROGRAM:
-         CHECK_EXT1(ARB_shader_objects);
-         params[0] = (GLint64)(ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0);
-         break;
-      case GL_MAX_SAMPLES:
-         CHECK_EXT1(ARB_framebuffer_object);
-         params[0] = (GLint64)(ctx->Const.MaxSamples);
-         break;
-      case GL_VERTEX_ARRAY_BINDING_APPLE:
-         CHECK_EXT1(APPLE_vertex_array_object);
-         params[0] = (GLint64)(ctx->Array.ArrayObj->Name);
-         break;
-      case GL_TEXTURE_CUBE_MAP_SEAMLESS:
-         CHECK_EXT1(ARB_seamless_cube_map);
-         params[0] = BOOLEAN_TO_INT64(ctx->Texture.CubeMapSeamless);
-         break;
-      case GL_MAX_SERVER_WAIT_TIMEOUT:
-         CHECK_EXT1(ARB_sync);
-         params[0] = ctx->Const.MaxServerWaitTimeout;
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLint64)(ctx->TransformFeedback.CurrentBuffer->Name);
-         break;
-      case GL_RASTERIZER_DISCARD:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = BOOLEAN_TO_INT64(ctx->TransformFeedback.RasterDiscard);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackInterleavedComponents);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackSeparateAttribs);
-         break;
-      case GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS:
-         CHECK_EXT1(EXT_transform_feedback);
-         params[0] = (GLint64)(ctx->Const.MaxTransformFeedbackSeparateComponents);
-         break;
-      case GL_NUM_EXTENSIONS:
-         CHECK_VERSION(30);
-         params[0] = (GLint64)(_mesa_get_extension_count(ctx));
-         break;
-      case GL_MAJOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = (GLint64)(ctx->VersionMajor);
-         break;
-      case GL_MINOR_VERSION:
-         CHECK_VERSION(30);
-         params[0] = (GLint64)(ctx->VersionMinor);
-         break;
-      case GL_CONTEXT_FLAGS:
-         CHECK_VERSION(30);
-         params[0] = (GLint64)(ctx->Const.ContextFlags);
-         break;
-      case GL_PRIMITIVE_RESTART:
-         CHECK_VERSION(31);
-         params[0] = BOOLEAN_TO_INT64(ctx->Array.PrimitiveRestart);
-         break;
-      case GL_PRIMITIVE_RESTART_INDEX:
-         CHECK_VERSION(31);
-         params[0] = (GLint64)(ctx->Array.RestartIndex);
-         break;
-      case GL_CONTEXT_PROFILE_MASK:
-         CHECK_VERSION(32);
-         params[0] = (GLint64)(ctx->Const.ProfileMask);
-         break;
-      default:
-         goto invalid_enum_error;
-   }
-   return;
+   case TYPE_FLOATN_4:
+      params[3] = FLOAT_TO_INT64(((GLfloat *) p)[3]);
+   case TYPE_FLOATN_3:
+      params[2] = FLOAT_TO_INT64(((GLfloat *) p)[2]);
+   case TYPE_FLOATN_2:
+      params[1] = FLOAT_TO_INT64(((GLfloat *) p)[1]);
+   case TYPE_FLOATN:
+      params[0] = FLOAT_TO_INT64(((GLfloat *) p)[0]);
+      break;
+
+   case TYPE_DOUBLEN:
+      params[0] = FLOAT_TO_INT64(((GLdouble *) p)[0]);
+      break;
+
+   case TYPE_INT_4:
+      params[3] = ((GLint *) p)[3];
+   case TYPE_INT_3:
+      params[2] = ((GLint *) p)[2];
+   case TYPE_INT_2:
+   case TYPE_ENUM_2:
+      params[1] = ((GLint *) p)[1];
+   case TYPE_INT:
+   case TYPE_ENUM:
+      params[0] = ((GLint *) p)[0];
+      break;
+
+   case TYPE_INT_N:
+      for (i = 0; i < v.value_int_n.n; i++)
+        params[i] = INT_TO_BOOLEAN(v.value_int_n.ints[i]);
+      break;
+
+   case TYPE_INT64:
+      params[0] = ((GLint64 *) p)[0];
+      break;
+
+   case TYPE_BOOLEAN:
+      params[0] = ((GLboolean*) p)[0];
+      break;           
+
+   case TYPE_MATRIX:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_INT64(m->m[i]);
+      break;
+
+   case TYPE_MATRIX_T:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_INT64(m->m[transpose[i]]);
+      break;
 
-invalid_enum_error:
-   _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64v(pname=0x%x)", pname);
+   case TYPE_BIT_0:
+   case TYPE_BIT_1:
+   case TYPE_BIT_2:
+   case TYPE_BIT_3:
+   case TYPE_BIT_4:
+   case TYPE_BIT_5:
+      shift = d->type - TYPE_BIT_0;
+      params[0] = (*(GLbitfield *) p >> shift) & 1;
+      break;
+   }
 }
 #endif /* FEATURE_ARB_sync */
 
-
 void GLAPIENTRY
-_mesa_GetDoublev( GLenum pname, GLdouble *params )
+_mesa_GetDoublev(GLenum pname, GLdouble *params)
 {
-   const GLfloat magic = -1234.5F;
-   GLfloat values[16];
-   GLuint i;
+   const struct value_desc *d;
+   union value v;
+   GLmatrix *m;
+   int shift, i;
+   void *p;
 
-   if (!params)
-      return;
+   d = find_value("glGetDoublev", pname, &p, &v);
+   switch (d->type) {
+   case TYPE_INVALID:
+      break;
+   case TYPE_CONST:
+      params[0] = d->offset;
+      break;
 
-   /* Init temp array to magic numbers so we can figure out how many values
-    * are returned by the GetFloatv() call.
-    */
-   for (i = 0; i < 16; i++)
-      values[i] = magic;
+   case TYPE_FLOAT_4:
+   case TYPE_FLOATN_4:
+      params[3] = ((GLfloat *) p)[3];
+   case TYPE_FLOAT_3:
+   case TYPE_FLOATN_3:
+      params[2] = ((GLfloat *) p)[2];
+   case TYPE_FLOAT_2:
+   case TYPE_FLOATN_2:
+      params[1] = ((GLfloat *) p)[1];
+   case TYPE_FLOAT:
+   case TYPE_FLOATN:
+      params[0] = ((GLfloat *) p)[0];
+      break;
 
-   _mesa_GetFloatv(pname, values);
-   
-   for (i = 0; i < 16 && values[i] != magic; i++)
-      params[i] = (GLdouble) values[i];
+   case TYPE_DOUBLEN:
+      params[0] = ((GLdouble *) p)[0];
+      break;
+
+   case TYPE_INT_4:
+      params[3] = ((GLint *) p)[3];
+   case TYPE_INT_3:
+      params[2] = ((GLint *) p)[2];
+   case TYPE_INT_2:
+   case TYPE_ENUM_2:
+      params[1] = ((GLint *) p)[1];
+   case TYPE_INT:
+   case TYPE_ENUM:
+      params[0] = ((GLint *) p)[0];
+      break;
+
+   case TYPE_INT_N:
+      for (i = 0; i < v.value_int_n.n; i++)
+        params[i] = v.value_int_n.ints[i];
+      break;
+
+   case TYPE_INT64:
+      params[0] = ((GLint64 *) p)[0];
+      break;
+
+   case TYPE_BOOLEAN:
+      params[0] = *(GLboolean*) p;
+      break;           
+
+   case TYPE_MATRIX:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = m->m[i];
+      break;
+
+   case TYPE_MATRIX_T:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = m->m[transpose[i]];
+      break;
+
+   case TYPE_BIT_0:
+   case TYPE_BIT_1:
+   case TYPE_BIT_2:
+   case TYPE_BIT_3:
+   case TYPE_BIT_4:
+   case TYPE_BIT_5:
+      shift = d->type - TYPE_BIT_0;
+      params[0] = (*(GLbitfield *) p >> shift) & 1;
+      break;
+   }
 }
 
-void GLAPIENTRY
-_mesa_GetBooleanIndexedv( GLenum pname, GLuint index, GLboolean *params )
+static enum value_type
+find_value_indexed(const char *func, GLenum pname, int index, union value *v)
 {
    GET_CURRENT_CONTEXT(ctx);
-   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-   (void) version;
-
-   if (!params)
-      return;
 
    switch (pname) {
-      case GL_BLEND:
-         CHECK_EXT1(EXT_draw_buffers2);
-         if (index >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = INT_TO_BOOLEAN(((ctx->Color.BlendEnabled >> index) & 1));
-         break;
-      case GL_COLOR_WRITEMASK:
-         CHECK_EXT1(EXT_draw_buffers2);
-         if (index >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0);
-         params[1] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0);
-         params[2] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0);
-         params[3] = INT_TO_BOOLEAN(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_START:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = INT64_TO_BOOLEAN(ctx->TransformFeedback.Offset[index]);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = INT64_TO_BOOLEAN(ctx->TransformFeedback.Size[index]);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetBooleanIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = INT_TO_BOOLEAN(ctx->TransformFeedback.Buffers[index]->Name);
-         break;
-      default:
-         goto invalid_enum_error;
+
+   case GL_BLEND:
+      if (index >= ctx->Const.MaxDrawBuffers)
+        goto invalid_value;
+      if (!ctx->Extensions.EXT_draw_buffers2)
+        goto invalid_enum;
+      v->value_int = (ctx->Color.BlendEnabled >> index) & 1;
+      return TYPE_INT;
+
+   case GL_COLOR_WRITEMASK:
+      if (index >= ctx->Const.MaxDrawBuffers)
+        goto invalid_value;
+      if (!ctx->Extensions.EXT_draw_buffers2)
+        goto invalid_enum;
+      v->value_int_4[0] = ctx->Color.ColorMask[index][RCOMP] ? 1 : 0;
+      v->value_int_4[1] = ctx->Color.ColorMask[index][GCOMP] ? 1 : 0;
+      v->value_int_4[2] = ctx->Color.ColorMask[index][BCOMP] ? 1 : 0;
+      v->value_int_4[3] = ctx->Color.ColorMask[index][ACOMP] ? 1 : 0;
+      return TYPE_INT_4;
+
+   case GL_TRANSFORM_FEEDBACK_BUFFER_START:
+      if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs)
+        goto invalid_value;
+      if (!ctx->Extensions.EXT_transform_feedback)
+        goto invalid_enum;
+      v->value_int64 = ctx->TransformFeedback.CurrentObject->Offset[index];
+      return TYPE_INT64;
+
+   case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
+      if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs)
+        goto invalid_value;
+      if (!ctx->Extensions.EXT_transform_feedback)
+        goto invalid_enum;
+      v->value_int64 = ctx->TransformFeedback.CurrentObject->Size[index];
+      return TYPE_INT64;
+
+   case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
+      if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs)
+        goto invalid_value;
+      if (!ctx->Extensions.EXT_transform_feedback)
+        goto invalid_enum;
+      v->value_int = ctx->TransformFeedback.CurrentObject->Buffers[index]->Name;
+      return TYPE_INT;
    }
-   return;
 
-invalid_enum_error:
-   _mesa_error(ctx, GL_INVALID_ENUM, "glGetBooleanIndexedv(pname=0x%x)", pname);
+ invalid_enum:
+   _mesa_error(ctx, GL_INVALID_ENUM, "%s(pname=%s)", func,
+               _mesa_lookup_enum_by_nr(pname));
+   return TYPE_INVALID;
+ invalid_value:
+   _mesa_error(ctx, GL_INVALID_VALUE, "%s(pname=%s)", func,
+               _mesa_lookup_enum_by_nr(pname));
+   return TYPE_INVALID;
 }
 
 void GLAPIENTRY
-_mesa_GetIntegerIndexedv( GLenum pname, GLuint index, GLint *params )
+_mesa_GetBooleanIndexedv( GLenum pname, GLuint index, GLboolean *params )
 {
-   GET_CURRENT_CONTEXT(ctx);
-   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-   (void) version;
+   union value v;
 
-   if (!params)
-      return;
-
-   switch (pname) {
-      case GL_BLEND:
-         CHECK_EXT1(EXT_draw_buffers2);
-         if (index >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = ((ctx->Color.BlendEnabled >> index) & 1);
-         break;
-      case GL_COLOR_WRITEMASK:
-         CHECK_EXT1(EXT_draw_buffers2);
-         if (index >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = ctx->Color.ColorMask[index][RCOMP] ? 1 : 0;
-         params[1] = ctx->Color.ColorMask[index][GCOMP] ? 1 : 0;
-         params[2] = ctx->Color.ColorMask[index][BCOMP] ? 1 : 0;
-         params[3] = ctx->Color.ColorMask[index][ACOMP] ? 1 : 0;
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_START:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = INT64_TO_INT(ctx->TransformFeedback.Offset[index]);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = INT64_TO_INT(ctx->TransformFeedback.Size[index]);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetIntegerIndexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = ctx->TransformFeedback.Buffers[index]->Name;
-         break;
-      default:
-         goto invalid_enum_error;
+   switch (find_value_indexed("glGetBooleanIndexedv", pname, index, &v)) {
+   case TYPE_INT:
+      params[0] = INT_TO_BOOLEAN(v.value_int);
+      break;
+   case TYPE_INT_4:
+      params[0] = INT_TO_BOOLEAN(v.value_int_4[0]);
+      params[1] = INT_TO_BOOLEAN(v.value_int_4[1]);
+      params[2] = INT_TO_BOOLEAN(v.value_int_4[2]);
+      params[3] = INT_TO_BOOLEAN(v.value_int_4[3]);
+      break;
+   case TYPE_INT64:
+      params[0] = INT64_TO_BOOLEAN(v.value_int);
+      break;
+   default:
+      assert(0);
    }
-   return;
+}
+
+void GLAPIENTRY
+_mesa_GetIntegerIndexedv( GLenum pname, GLuint index, GLint *params )
+{
+   union value v;
 
-invalid_enum_error:
-   _mesa_error(ctx, GL_INVALID_ENUM, "glGetIntegerIndexedv(pname=0x%x)", pname);
+   switch (find_value_indexed("glGetIntegerIndexedv", pname, index, &v)) {
+   case TYPE_INT:
+      params[0] = v.value_int;
+      break;
+   case TYPE_INT_4:
+      params[0] = v.value_int_4[0];
+      params[1] = v.value_int_4[1];
+      params[2] = v.value_int_4[2];
+      params[3] = v.value_int_4[3];
+      break;
+   case TYPE_INT64:
+      params[0] = INT64_TO_INT(v.value_int);
+      break;
+   default:
+      assert(0);
+   }
 }
 
 #if FEATURE_ARB_sync
 void GLAPIENTRY
 _mesa_GetInteger64Indexedv( GLenum pname, GLuint index, GLint64 *params )
 {
-   GET_CURRENT_CONTEXT(ctx);
-   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;
-   ASSERT_OUTSIDE_BEGIN_END(ctx);
-   (void) version;
+   union value v;
 
-   if (!params)
-      return;
-
-   switch (pname) {
-      case GL_BLEND:
-         CHECK_EXT1(EXT_draw_buffers2);
-         if (index >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = (GLint64)(((ctx->Color.BlendEnabled >> index) & 1));
-         break;
-      case GL_COLOR_WRITEMASK:
-         CHECK_EXT1(EXT_draw_buffers2);
-         if (index >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = (GLint64)(ctx->Color.ColorMask[index][RCOMP] ? 1 : 0);
-         params[1] = (GLint64)(ctx->Color.ColorMask[index][GCOMP] ? 1 : 0);
-         params[2] = (GLint64)(ctx->Color.ColorMask[index][BCOMP] ? 1 : 0);
-         params[3] = (GLint64)(ctx->Color.ColorMask[index][ACOMP] ? 1 : 0);
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_START:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = ctx->TransformFeedback.Offset[index];
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_SIZE:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = ctx->TransformFeedback.Size[index];
-         break;
-      case GL_TRANSFORM_FEEDBACK_BUFFER_BINDING:
-         CHECK_EXT1(EXT_transform_feedback);
-         if (index >= ctx->Const.MaxTransformFeedbackSeparateAttribs) {
-            _mesa_error(ctx, GL_INVALID_VALUE, "glGetInteger64Indexedv(index=%u), index", pname);
-            return;
-         }
-         params[0] = (GLint64)(ctx->TransformFeedback.Buffers[index]->Name);
-         break;
-      default:
-         goto invalid_enum_error;
+   switch (find_value_indexed("glGetIntegerIndexedv", pname, index, &v)) {
+   case TYPE_INT:
+      params[0] = v.value_int;
+      break;
+   case TYPE_INT_4:
+      params[0] = v.value_int_4[0];
+      params[1] = v.value_int_4[1];
+      params[2] = v.value_int_4[2];
+      params[3] = v.value_int_4[3];
+      break;
+   case TYPE_INT64:
+      params[0] = v.value_int;
+      break;
+   default:
+      assert(0);
    }
-   return;
-
-invalid_enum_error:
-   _mesa_error(ctx, GL_INVALID_ENUM, "glGetInteger64Indexedv(pname=0x%x)", pname);
 }
 #endif /* FEATURE_ARB_sync */
 
+#if FEATURE_ES1
+void GLAPIENTRY
+_mesa_GetFixedv(GLenum pname, GLfixed *params)
+{
+   const struct value_desc *d;
+   union value v;
+   GLmatrix *m;
+   int shift, i;
+   void *p;
+
+   d = find_value("glGetDoublev", pname, &p, &v);
+   switch (d->type) {
+   case TYPE_INVALID:
+      break;
+   case TYPE_CONST:
+      params[0] = INT_TO_FIXED(d->offset);
+      break;
+
+   case TYPE_FLOAT_4:
+   case TYPE_FLOATN_4:
+      params[3] = FLOAT_TO_FIXED(((GLfloat *) p)[3]);
+   case TYPE_FLOAT_3:
+   case TYPE_FLOATN_3:
+      params[2] = FLOAT_TO_FIXED(((GLfloat *) p)[2]);
+   case TYPE_FLOAT_2:
+   case TYPE_FLOATN_2:
+      params[1] = FLOAT_TO_FIXED(((GLfloat *) p)[1]);
+   case TYPE_FLOAT:
+   case TYPE_FLOATN:
+      params[0] = FLOAT_TO_FIXED(((GLfloat *) p)[0]);
+      break;
+
+   case TYPE_DOUBLEN:
+      params[0] = FLOAT_TO_FIXED(((GLdouble *) p)[0]);
+      break;
+
+   case TYPE_INT_4:
+      params[3] = INT_TO_FIXED(((GLint *) p)[3]);
+   case TYPE_INT_3:
+      params[2] = INT_TO_FIXED(((GLint *) p)[2]);
+   case TYPE_INT_2:
+   case TYPE_ENUM_2:
+      params[1] = INT_TO_FIXED(((GLint *) p)[1]);
+   case TYPE_INT:
+   case TYPE_ENUM:
+      params[0] = INT_TO_FIXED(((GLint *) p)[0]);
+      break;
+
+   case TYPE_INT_N:
+      for (i = 0; i < v.value_int_n.n; i++)
+        params[i] = INT_TO_FIXED(v.value_int_n.ints[i]);
+      break;
+
+   case TYPE_INT64:
+      params[0] = ((GLint64 *) p)[0];
+      break;
+
+   case TYPE_BOOLEAN:
+      params[0] = BOOLEAN_TO_FIXED(((GLboolean*) p)[0]);
+      break;           
+
+   case TYPE_MATRIX:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_FIXED(m->m[i]);
+      break;
+
+   case TYPE_MATRIX_T:
+      m = *(GLmatrix **) p;
+      for (i = 0; i < 16; i++)
+        params[i] = FLOAT_TO_FIXED(m->m[transpose[i]]);
+      break;
+
+   case TYPE_BIT_0:
+   case TYPE_BIT_1:
+   case TYPE_BIT_2:
+   case TYPE_BIT_3:
+   case TYPE_BIT_4:
+   case TYPE_BIT_5:
+      shift = d->type - TYPE_BIT_0;
+      params[0] = BOOLEAN_TO_FIXED((*(GLbitfield *) p >> shift) & 1);
+      break;
+   }
+}
+#endif
index 47e549e396b0460a1baefe1782e474d8a0e5806a..320492b4ce2869cba8d9b44e9bff15e7eea9208f 100644 (file)
@@ -50,6 +50,9 @@ _mesa_GetIntegerv( GLenum pname, GLint *params );
 extern void GLAPIENTRY
 _mesa_GetInteger64v( GLenum pname, GLint64 *params );
 
+extern void GLAPIENTRY
+_mesa_GetFixedv(GLenum pname, GLfixed *params);
+
 extern void GLAPIENTRY
 _mesa_GetBooleanIndexedv( GLenum pname, GLuint index, GLboolean *params );
 
@@ -71,27 +74,4 @@ _mesa_GetStringi(GLenum name, GLuint index);
 extern GLenum GLAPIENTRY
 _mesa_GetError( void );
 
-
-extern void GLAPIENTRY
-_es1_GetBooleanv( GLenum pname, GLboolean *params );
-
-extern void GLAPIENTRY
-_es1_GetFloatv( GLenum pname, GLfloat *params );
-
-extern void GLAPIENTRY
-_es1_GetIntegerv( GLenum pname, GLint *params );
-
-extern void GLAPIENTRY
-_es1_GetFixedv( GLenum pname, GLfixed *params );
-
-
-extern void GLAPIENTRY
-_es2_GetBooleanv( GLenum pname, GLboolean *params );
-
-extern void GLAPIENTRY
-_es2_GetFloatv( GLenum pname, GLfloat *params );
-
-extern void GLAPIENTRY
-_es2_GetIntegerv( GLenum pname, GLint *params );
-
 #endif
diff --git a/src/mesa/main/get_gen.py b/src/mesa/main/get_gen.py
deleted file mode 100644 (file)
index 21f7750..0000000
+++ /dev/null
@@ -1,1467 +0,0 @@
-#!/usr/bin/env python
-
-# Mesa 3-D graphics library
-#
-# Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-# This script is used to generate the get.c file:
-# python get_gen.py > get.c
-
-
-import string
-import sys
-
-
-GLint = 1
-GLenum = 2
-GLfloat = 3
-GLdouble = 4
-GLboolean = 5
-GLfloatN = 6    # A normalized value, such as a color or depth range
-GLint64 = 7
-
-
-TypeStrings = {
-       GLint : "GLint",
-       GLenum : "GLenum",
-       GLfloat : "GLfloat",
-       GLdouble : "GLdouble",
-       GLboolean : "GLboolean",
-       GLint64 : "GLint64"
-}
-
-
-NoState = None
-NoExt = None
-FlushCurrent = 1
-
-
-# Each entry is a tuple of:
-#  - the GL state name, such as GL_CURRENT_COLOR
-#  - the state datatype, one of GLint, GLfloat, GLboolean or GLenum
-#  - list of code fragments to get the state, such as ["ctx->Foo.Bar"]
-#  - optional extra code or empty string.  If present, "CONVERSION" will be
-#    replaced by ENUM_TO_FLOAT, INT_TO_FLOAT, etc.
-#  - state flags: either NoExt, FlushCurrent or "_NEW_xxx"
-#    if NoExt, do nothing special
-#    if FlushCurrent, emit FLUSH_CURRENT() call
-#    if "_NEW_xxx", call _mesa_update_state() if that dirty state flag is set
-#  - optional extensions to check, or NoExt
-#
-StateVars = [
-       ( "GL_ACCUM_RED_BITS", GLint, ["ctx->DrawBuffer->Visual.accumRedBits"],
-         "", NoState, NoExt ),
-       ( "GL_ACCUM_GREEN_BITS", GLint, ["ctx->DrawBuffer->Visual.accumGreenBits"],
-         "", NoState, NoExt ),
-       ( "GL_ACCUM_BLUE_BITS", GLint, ["ctx->DrawBuffer->Visual.accumBlueBits"],
-         "", NoState, NoExt ),
-       ( "GL_ACCUM_ALPHA_BITS", GLint, ["ctx->DrawBuffer->Visual.accumAlphaBits"],
-         "", NoState, NoExt ),
-       ( "GL_ACCUM_CLEAR_VALUE", GLfloatN,
-         [ "ctx->Accum.ClearColor[0]",
-               "ctx->Accum.ClearColor[1]",
-               "ctx->Accum.ClearColor[2]",
-               "ctx->Accum.ClearColor[3]" ],
-         "", NoState, NoExt ),
-       ( "GL_ALPHA_BIAS", GLfloat, ["ctx->Pixel.AlphaBias"], "", NoState, NoExt ),
-       ( "GL_ALPHA_BITS", GLint, ["ctx->DrawBuffer->Visual.alphaBits"],
-         "", "_NEW_BUFFERS", NoExt ),
-       ( "GL_ALPHA_SCALE", GLfloat, ["ctx->Pixel.AlphaScale"], "", NoState, NoExt ),
-       ( "GL_ALPHA_TEST", GLboolean, ["ctx->Color.AlphaEnabled"], "", NoState, NoExt ),
-       ( "GL_ALPHA_TEST_FUNC", GLenum, ["ctx->Color.AlphaFunc"], "", NoState, NoExt ),
-       ( "GL_ALPHA_TEST_REF", GLfloatN, ["ctx->Color.AlphaRef"], "", NoState, NoExt ),
-       ( "GL_ATTRIB_STACK_DEPTH", GLint, ["ctx->AttribStackDepth"], "", NoState, NoExt ),
-       ( "GL_AUTO_NORMAL", GLboolean, ["ctx->Eval.AutoNormal"], "", NoState, NoExt ),
-       ( "GL_AUX_BUFFERS", GLint, ["ctx->DrawBuffer->Visual.numAuxBuffers"],
-         "", NoState, NoExt ),
-       ( "GL_BLEND", GLboolean, ["(ctx->Color.BlendEnabled & 1)"], "", NoState, NoExt ),
-       ( "GL_BLEND_DST", GLenum, ["ctx->Color.BlendDstRGB"], "", NoState, NoExt ),
-       ( "GL_BLEND_SRC", GLenum, ["ctx->Color.BlendSrcRGB"], "", NoState, NoExt ),
-       ( "GL_BLEND_SRC_RGB_EXT", GLenum, ["ctx->Color.BlendSrcRGB"], "", NoState, NoExt ),
-       ( "GL_BLEND_DST_RGB_EXT", GLenum, ["ctx->Color.BlendDstRGB"], "", NoState, NoExt ),
-       ( "GL_BLEND_SRC_ALPHA_EXT", GLenum, ["ctx->Color.BlendSrcA"], "", NoState, NoExt ),
-       ( "GL_BLEND_DST_ALPHA_EXT", GLenum, ["ctx->Color.BlendDstA"], "", NoState, NoExt ),
-       ( "GL_BLEND_EQUATION", GLenum, ["ctx->Color.BlendEquationRGB "], "", NoState, NoExt),
-       ( "GL_BLEND_EQUATION_ALPHA_EXT", GLenum, ["ctx->Color.BlendEquationA "],
-         "", NoState, NoExt ),
-       ( "GL_BLEND_COLOR_EXT", GLfloatN,
-         [ "ctx->Color.BlendColor[0]",
-               "ctx->Color.BlendColor[1]",
-               "ctx->Color.BlendColor[2]",
-               "ctx->Color.BlendColor[3]"], "", NoState, NoExt ),
-       ( "GL_BLUE_BIAS", GLfloat, ["ctx->Pixel.BlueBias"], "", NoState, NoExt ),
-       ( "GL_BLUE_BITS", GLint, ["ctx->DrawBuffer->Visual.blueBits"], "", "_NEW_BUFFERS", NoExt ),
-       ( "GL_BLUE_SCALE", GLfloat, ["ctx->Pixel.BlueScale"], "", NoState, NoExt ),
-       ( "GL_CLIENT_ATTRIB_STACK_DEPTH", GLint,
-         ["ctx->ClientAttribStackDepth"], "", NoState, NoExt ),
-       ( "GL_CLIP_PLANE0", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 0) & 1" ], "", NoState, NoExt ),
-       ( "GL_CLIP_PLANE1", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 1) & 1" ], "", NoState, NoExt ),
-       ( "GL_CLIP_PLANE2", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 2) & 1" ], "", NoState, NoExt ),
-       ( "GL_CLIP_PLANE3", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 3) & 1" ], "", NoState, NoExt ),
-       ( "GL_CLIP_PLANE4", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 4) & 1" ], "", NoState, NoExt ),
-       ( "GL_CLIP_PLANE5", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 5) & 1" ], "", NoState, NoExt ),
-       ( "GL_COLOR_CLEAR_VALUE", GLfloatN,
-         [ "ctx->Color.ClearColor[0]",
-               "ctx->Color.ClearColor[1]",
-               "ctx->Color.ClearColor[2]",
-               "ctx->Color.ClearColor[3]" ], "", NoState, NoExt ),
-       ( "GL_COLOR_MATERIAL", GLboolean,
-         ["ctx->Light.ColorMaterialEnabled"], "", NoState, NoExt ),
-       ( "GL_COLOR_MATERIAL_FACE", GLenum,
-         ["ctx->Light.ColorMaterialFace"], "", NoState, NoExt ),
-       ( "GL_COLOR_MATERIAL_PARAMETER", GLenum,
-         ["ctx->Light.ColorMaterialMode"], "", NoState, NoExt ),
-       ( "GL_COLOR_WRITEMASK", GLint,
-         [ "ctx->Color.ColorMask[0][RCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[0][GCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[0][BCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[0][ACOMP] ? 1 : 0" ], "", NoState, NoExt ),
-       ( "GL_CULL_FACE", GLboolean, ["ctx->Polygon.CullFlag"], "", NoState, NoExt ),
-       ( "GL_CULL_FACE_MODE", GLenum, ["ctx->Polygon.CullFaceMode"], "", NoState, NoExt ),
-       ( "GL_CURRENT_COLOR", GLfloatN,
-         [ "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]",
-               "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]",
-               "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]",
-               "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]" ],
-         "", FlushCurrent, NoExt ),
-       ( "GL_CURRENT_INDEX", GLfloat,
-         [ "ctx->Current.Attrib[VERT_ATTRIB_COLOR_INDEX][0]" ],
-         "", FlushCurrent, NoExt ),
-       ( "GL_CURRENT_NORMAL", GLfloatN,
-         [ "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]",
-               "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]",
-               "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]"],
-         "", FlushCurrent, NoExt ),
-       ( "GL_CURRENT_RASTER_COLOR", GLfloatN,
-         ["ctx->Current.RasterColor[0]",
-          "ctx->Current.RasterColor[1]",
-          "ctx->Current.RasterColor[2]",
-          "ctx->Current.RasterColor[3]"], "", NoState, NoExt ),
-       ( "GL_CURRENT_RASTER_DISTANCE", GLfloat,
-         ["ctx->Current.RasterDistance"], "", NoState, NoExt ),
-       ( "GL_CURRENT_RASTER_INDEX", GLfloat,
-         ["1.0"], "", NoState, NoExt ),
-       ( "GL_CURRENT_RASTER_POSITION", GLfloat,
-         ["ctx->Current.RasterPos[0]",
-          "ctx->Current.RasterPos[1]",
-          "ctx->Current.RasterPos[2]",
-          "ctx->Current.RasterPos[3]"], "", NoState, NoExt ),
-       ( "GL_CURRENT_RASTER_SECONDARY_COLOR", GLfloatN,
-         ["ctx->Current.RasterSecondaryColor[0]",
-          "ctx->Current.RasterSecondaryColor[1]",
-          "ctx->Current.RasterSecondaryColor[2]",
-          "ctx->Current.RasterSecondaryColor[3]"], "", NoState, NoExt ),
-       ( "GL_CURRENT_RASTER_TEXTURE_COORDS", GLfloat,
-         ["ctx->Current.RasterTexCoords[unit][0]",
-          "ctx->Current.RasterTexCoords[unit][1]",
-          "ctx->Current.RasterTexCoords[unit][2]",
-          "ctx->Current.RasterTexCoords[unit][3]"],
-         """const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(raster tex coords, unit %u)", unit);
-            return;
-         }""",
-         NoState, NoExt ),
-       ( "GL_CURRENT_RASTER_POSITION_VALID", GLboolean,
-         ["ctx->Current.RasterPosValid"], "", NoState, NoExt ),
-       ( "GL_CURRENT_TEXTURE_COORDS", GLfloat,
-         ["ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][0]",
-          "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][1]",
-          "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][2]",
-          "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + unit][3]"],
-         """const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(current tex coords, unit %u)", unit);
-            return;
-         }
-         FLUSH_CURRENT(ctx, 0);""",
-         NoState, NoExt ),
-       ( "GL_DEPTH_BIAS", GLfloat, ["ctx->Pixel.DepthBias"], "", NoState, NoExt ),
-       ( "GL_DEPTH_BITS", GLint, ["ctx->DrawBuffer->Visual.depthBits"],
-         "", NoState, NoExt ),
-       ( "GL_DEPTH_CLEAR_VALUE", GLfloatN, ["((GLfloat) ctx->Depth.Clear)"], "", NoState, NoExt ),
-       ( "GL_DEPTH_FUNC", GLenum, ["ctx->Depth.Func"], "", NoState, NoExt ),
-       ( "GL_DEPTH_RANGE", GLfloatN,
-         [ "ctx->Viewport.Near", "ctx->Viewport.Far" ], "", NoState, NoExt ),
-       ( "GL_DEPTH_SCALE", GLfloat, ["ctx->Pixel.DepthScale"], "", NoState, NoExt ),
-       ( "GL_DEPTH_TEST", GLboolean, ["ctx->Depth.Test"], "", NoState, NoExt ),
-       ( "GL_DEPTH_WRITEMASK", GLboolean, ["ctx->Depth.Mask"], "", NoState, NoExt ),
-       ( "GL_DITHER", GLboolean, ["ctx->Color.DitherFlag"], "", NoState, NoExt ),
-       ( "GL_DOUBLEBUFFER", GLboolean,
-         ["ctx->DrawBuffer->Visual.doubleBufferMode"], "", NoState, NoExt ),
-       ( "GL_DRAW_BUFFER", GLenum, ["ctx->DrawBuffer->ColorDrawBuffer[0]"], "", NoState, NoExt ),
-       ( "GL_EDGE_FLAG", GLboolean, ["(ctx->Current.Attrib[VERT_ATTRIB_EDGEFLAG][0] == 1.0)"],
-         "", FlushCurrent, NoExt ),
-       ( "GL_FEEDBACK_BUFFER_SIZE", GLint, ["ctx->Feedback.BufferSize"], "", NoState, NoExt ),
-       ( "GL_FEEDBACK_BUFFER_TYPE", GLenum, ["ctx->Feedback.Type"], "", NoState, NoExt ),
-       ( "GL_FOG", GLboolean, ["ctx->Fog.Enabled"], "", NoState, NoExt ),
-       ( "GL_FOG_COLOR", GLfloatN,
-         [ "ctx->Fog.Color[0]",
-               "ctx->Fog.Color[1]",
-               "ctx->Fog.Color[2]",
-               "ctx->Fog.Color[3]" ], "", NoState, NoExt ),
-       ( "GL_FOG_DENSITY", GLfloat, ["ctx->Fog.Density"], "", NoState, NoExt ),
-       ( "GL_FOG_END", GLfloat, ["ctx->Fog.End"], "", NoState, NoExt ),
-       ( "GL_FOG_HINT", GLenum, ["ctx->Hint.Fog"], "", NoState, NoExt ),
-       ( "GL_FOG_INDEX", GLfloat, ["ctx->Fog.Index"], "", NoState, NoExt ),
-       ( "GL_FOG_MODE", GLenum, ["ctx->Fog.Mode"], "", NoState, NoExt ),
-       ( "GL_FOG_START", GLfloat, ["ctx->Fog.Start"], "", NoState, NoExt ),
-       ( "GL_FRONT_FACE", GLenum, ["ctx->Polygon.FrontFace"], "", NoState, NoExt ),
-       ( "GL_GREEN_BIAS", GLfloat, ["ctx->Pixel.GreenBias"], "", NoState, NoExt ),
-       ( "GL_GREEN_BITS", GLint, ["ctx->DrawBuffer->Visual.greenBits"],
-         "", "_NEW_BUFFERS", NoExt ),
-       ( "GL_GREEN_SCALE", GLfloat, ["ctx->Pixel.GreenScale"], "", NoState, NoExt ),
-       ( "GL_INDEX_BITS", GLint, ["ctx->DrawBuffer->Visual.indexBits"],
-         "", "_NEW_BUFFERS", NoExt ),
-       ( "GL_INDEX_CLEAR_VALUE", GLint, ["ctx->Color.ClearIndex"], "", NoState, NoExt ),
-       ( "GL_INDEX_MODE", GLboolean, ["GL_FALSE"],
-         "", NoState, NoExt ),
-       ( "GL_INDEX_OFFSET", GLint, ["ctx->Pixel.IndexOffset"], "", NoState, NoExt ),
-       ( "GL_INDEX_SHIFT", GLint, ["ctx->Pixel.IndexShift"], "", NoState, NoExt ),
-       ( "GL_INDEX_WRITEMASK", GLint, ["ctx->Color.IndexMask"], "", NoState, NoExt ),
-       ( "GL_LIGHT0", GLboolean, ["ctx->Light.Light[0].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT1", GLboolean, ["ctx->Light.Light[1].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT2", GLboolean, ["ctx->Light.Light[2].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT3", GLboolean, ["ctx->Light.Light[3].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT4", GLboolean, ["ctx->Light.Light[4].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT5", GLboolean, ["ctx->Light.Light[5].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT6", GLboolean, ["ctx->Light.Light[6].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT7", GLboolean, ["ctx->Light.Light[7].Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHTING", GLboolean, ["ctx->Light.Enabled"], "", NoState, NoExt ),
-       ( "GL_LIGHT_MODEL_AMBIENT", GLfloatN,
-         ["ctx->Light.Model.Ambient[0]",
-          "ctx->Light.Model.Ambient[1]",
-          "ctx->Light.Model.Ambient[2]",
-          "ctx->Light.Model.Ambient[3]"], "", NoState, NoExt ),
-       ( "GL_LIGHT_MODEL_COLOR_CONTROL", GLenum,
-         ["ctx->Light.Model.ColorControl"], "", NoState, NoExt ),
-       ( "GL_LIGHT_MODEL_LOCAL_VIEWER", GLboolean,
-         ["ctx->Light.Model.LocalViewer"], "", NoState, NoExt ),
-       ( "GL_LIGHT_MODEL_TWO_SIDE", GLboolean, ["ctx->Light.Model.TwoSide"], "", NoState, NoExt ),
-       ( "GL_LINE_SMOOTH", GLboolean, ["ctx->Line.SmoothFlag"], "", NoState, NoExt ),
-       ( "GL_LINE_SMOOTH_HINT", GLenum, ["ctx->Hint.LineSmooth"], "", NoState, NoExt ),
-       ( "GL_LINE_STIPPLE", GLboolean, ["ctx->Line.StippleFlag"], "", NoState, NoExt ),
-       ( "GL_LINE_STIPPLE_PATTERN", GLint, ["ctx->Line.StipplePattern"], "", NoState, NoExt ),
-       ( "GL_LINE_STIPPLE_REPEAT", GLint, ["ctx->Line.StippleFactor"], "", NoState, NoExt ),
-       ( "GL_LINE_WIDTH", GLfloat, ["ctx->Line.Width"], "", NoState, NoExt ),
-       ( "GL_LINE_WIDTH_GRANULARITY", GLfloat,
-         ["ctx->Const.LineWidthGranularity"], "", NoState, NoExt ),
-       ( "GL_LINE_WIDTH_RANGE", GLfloat,
-         ["ctx->Const.MinLineWidthAA",
-          "ctx->Const.MaxLineWidthAA"], "", NoState, NoExt ),
-       ( "GL_ALIASED_LINE_WIDTH_RANGE", GLfloat,
-         ["ctx->Const.MinLineWidth",
-          "ctx->Const.MaxLineWidth"], "", NoState, NoExt ),
-       ( "GL_LIST_BASE", GLint, ["ctx->List.ListBase"], "", NoState, NoExt ),
-       ( "GL_LIST_INDEX", GLint, ["(ctx->ListState.CurrentList ? ctx->ListState.CurrentList->Name : 0)"], "", NoState, NoExt ),
-       ( "GL_LIST_MODE", GLenum, ["mode"],
-         """GLenum mode;
-         if (!ctx->CompileFlag)
-            mode = 0;
-         else if (ctx->ExecuteFlag)
-            mode = GL_COMPILE_AND_EXECUTE;
-         else
-            mode = GL_COMPILE;""", NoState, NoExt ),
-       ( "GL_INDEX_LOGIC_OP", GLboolean, ["ctx->Color.IndexLogicOpEnabled"], "", NoState, NoExt ),
-       ( "GL_COLOR_LOGIC_OP", GLboolean, ["ctx->Color.ColorLogicOpEnabled"], "", NoState, NoExt ),
-       ( "GL_LOGIC_OP_MODE", GLenum, ["ctx->Color.LogicOp"], "", NoState, NoExt ),
-       ( "GL_MAP1_COLOR_4", GLboolean, ["ctx->Eval.Map1Color4"], "", NoState, NoExt ),
-       ( "GL_MAP1_GRID_DOMAIN", GLfloat,
-         ["ctx->Eval.MapGrid1u1",
-          "ctx->Eval.MapGrid1u2"], "", NoState, NoExt ),
-       ( "GL_MAP1_GRID_SEGMENTS", GLint, ["ctx->Eval.MapGrid1un"], "", NoState, NoExt ),
-       ( "GL_MAP1_INDEX", GLboolean, ["ctx->Eval.Map1Index"], "", NoState, NoExt ),
-       ( "GL_MAP1_NORMAL", GLboolean, ["ctx->Eval.Map1Normal"], "", NoState, NoExt ),
-       ( "GL_MAP1_TEXTURE_COORD_1", GLboolean, ["ctx->Eval.Map1TextureCoord1"], "", NoState, NoExt ),
-       ( "GL_MAP1_TEXTURE_COORD_2", GLboolean, ["ctx->Eval.Map1TextureCoord2"], "", NoState, NoExt ),
-       ( "GL_MAP1_TEXTURE_COORD_3", GLboolean, ["ctx->Eval.Map1TextureCoord3"], "", NoState, NoExt ),
-       ( "GL_MAP1_TEXTURE_COORD_4", GLboolean, ["ctx->Eval.Map1TextureCoord4"], "", NoState, NoExt ),
-       ( "GL_MAP1_VERTEX_3", GLboolean, ["ctx->Eval.Map1Vertex3"], "", NoState, NoExt ),
-       ( "GL_MAP1_VERTEX_4", GLboolean, ["ctx->Eval.Map1Vertex4"], "", NoState, NoExt ),
-       ( "GL_MAP2_COLOR_4", GLboolean, ["ctx->Eval.Map2Color4"], "", NoState, NoExt ),
-       ( "GL_MAP2_GRID_DOMAIN", GLfloat,
-         ["ctx->Eval.MapGrid2u1",
-          "ctx->Eval.MapGrid2u2",
-          "ctx->Eval.MapGrid2v1",
-          "ctx->Eval.MapGrid2v2"], "", NoState, NoExt ),
-       ( "GL_MAP2_GRID_SEGMENTS", GLint,
-         ["ctx->Eval.MapGrid2un",
-          "ctx->Eval.MapGrid2vn"], "", NoState, NoExt ),
-       ( "GL_MAP2_INDEX", GLboolean, ["ctx->Eval.Map2Index"], "", NoState, NoExt ),
-       ( "GL_MAP2_NORMAL", GLboolean, ["ctx->Eval.Map2Normal"], "", NoState, NoExt ),
-       ( "GL_MAP2_TEXTURE_COORD_1", GLboolean, ["ctx->Eval.Map2TextureCoord1"], "", NoState, NoExt ),
-       ( "GL_MAP2_TEXTURE_COORD_2", GLboolean, ["ctx->Eval.Map2TextureCoord2"], "", NoState, NoExt ),
-       ( "GL_MAP2_TEXTURE_COORD_3", GLboolean, ["ctx->Eval.Map2TextureCoord3"], "", NoState, NoExt ),
-       ( "GL_MAP2_TEXTURE_COORD_4", GLboolean, ["ctx->Eval.Map2TextureCoord4"], "", NoState, NoExt ),
-       ( "GL_MAP2_VERTEX_3", GLboolean, ["ctx->Eval.Map2Vertex3"], "", NoState, NoExt ),
-       ( "GL_MAP2_VERTEX_4", GLboolean, ["ctx->Eval.Map2Vertex4"], "", NoState, NoExt ),
-       ( "GL_MAP_COLOR", GLboolean, ["ctx->Pixel.MapColorFlag"], "", NoState, NoExt ),
-       ( "GL_MAP_STENCIL", GLboolean, ["ctx->Pixel.MapStencilFlag"], "", NoState, NoExt ),
-       ( "GL_MATRIX_MODE", GLenum, ["ctx->Transform.MatrixMode"], "", NoState, NoExt ),
-
-       ( "GL_MAX_ATTRIB_STACK_DEPTH", GLint, ["MAX_ATTRIB_STACK_DEPTH"], "", NoState, NoExt ),
-       ( "GL_MAX_CLIENT_ATTRIB_STACK_DEPTH", GLint, ["MAX_CLIENT_ATTRIB_STACK_DEPTH"], "", NoState, NoExt ),
-       ( "GL_MAX_CLIP_PLANES", GLint, ["ctx->Const.MaxClipPlanes"], "", NoState, NoExt ),
-       ( "GL_MAX_ELEMENTS_VERTICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", NoState, NoExt ),
-       ( "GL_MAX_ELEMENTS_INDICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", NoState, NoExt ),
-       ( "GL_MAX_EVAL_ORDER", GLint, ["MAX_EVAL_ORDER"], "", NoState, NoExt ),
-       ( "GL_MAX_LIGHTS", GLint, ["ctx->Const.MaxLights"], "", NoState, NoExt ),
-       ( "GL_MAX_LIST_NESTING", GLint, ["MAX_LIST_NESTING"], "", NoState, NoExt ),
-       ( "GL_MAX_MODELVIEW_STACK_DEPTH", GLint, ["MAX_MODELVIEW_STACK_DEPTH"], "", NoState, NoExt ),
-       ( "GL_MAX_NAME_STACK_DEPTH", GLint, ["MAX_NAME_STACK_DEPTH"], "", NoState, NoExt ),
-       ( "GL_MAX_PIXEL_MAP_TABLE", GLint, ["MAX_PIXEL_MAP_TABLE"], "", NoState, NoExt ),
-       ( "GL_MAX_PROJECTION_STACK_DEPTH", GLint, ["MAX_PROJECTION_STACK_DEPTH"], "", NoState, NoExt ),
-       ( "GL_MAX_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.MaxTextureLevels - 1)"], "", NoState, NoExt ),
-       ( "GL_MAX_3D_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.Max3DTextureLevels - 1)"], "", NoState, NoExt ),
-       ( "GL_MAX_TEXTURE_STACK_DEPTH", GLint, ["MAX_TEXTURE_STACK_DEPTH"], "", NoState, NoExt ),
-       ( "GL_MAX_VIEWPORT_DIMS", GLint,
-         ["ctx->Const.MaxViewportWidth", "ctx->Const.MaxViewportHeight"],
-         "", NoState, NoExt ),
-       ( "GL_MODELVIEW_MATRIX", GLfloat,
-         [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-               "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-               "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-               "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         "const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;", NoState, NoExt ),
-       ( "GL_MODELVIEW_STACK_DEPTH", GLint, ["ctx->ModelviewMatrixStack.Depth + 1"], "", NoState, NoExt ),
-       ( "GL_NAME_STACK_DEPTH", GLint, ["ctx->Select.NameStackDepth"], "", NoState, NoExt ),
-       ( "GL_NORMALIZE", GLboolean, ["ctx->Transform.Normalize"], "", NoState, NoExt ),
-       ( "GL_PACK_ALIGNMENT", GLint, ["ctx->Pack.Alignment"], "", NoState, NoExt ),
-       ( "GL_PACK_LSB_FIRST", GLboolean, ["ctx->Pack.LsbFirst"], "", NoState, NoExt ),
-       ( "GL_PACK_ROW_LENGTH", GLint, ["ctx->Pack.RowLength"], "", NoState, NoExt ),
-       ( "GL_PACK_SKIP_PIXELS", GLint, ["ctx->Pack.SkipPixels"], "", NoState, NoExt ),
-       ( "GL_PACK_SKIP_ROWS", GLint, ["ctx->Pack.SkipRows"], "", NoState, NoExt ),
-       ( "GL_PACK_SWAP_BYTES", GLboolean, ["ctx->Pack.SwapBytes"], "", NoState, NoExt ),
-       ( "GL_PACK_SKIP_IMAGES_EXT", GLint, ["ctx->Pack.SkipImages"], "", NoState, NoExt ),
-       ( "GL_PACK_IMAGE_HEIGHT_EXT", GLint, ["ctx->Pack.ImageHeight"], "", NoState, NoExt ),
-       ( "GL_PACK_INVERT_MESA", GLboolean, ["ctx->Pack.Invert"], "", NoState, NoExt ),
-       ( "GL_PERSPECTIVE_CORRECTION_HINT", GLenum,
-         ["ctx->Hint.PerspectiveCorrection"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_A_TO_A_SIZE", GLint, ["ctx->PixelMaps.AtoA.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_B_TO_B_SIZE", GLint, ["ctx->PixelMaps.BtoB.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_G_TO_G_SIZE", GLint, ["ctx->PixelMaps.GtoG.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_I_TO_A_SIZE", GLint, ["ctx->PixelMaps.ItoA.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_I_TO_B_SIZE", GLint, ["ctx->PixelMaps.ItoB.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_I_TO_G_SIZE", GLint, ["ctx->PixelMaps.ItoG.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_I_TO_I_SIZE", GLint, ["ctx->PixelMaps.ItoI.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_I_TO_R_SIZE", GLint, ["ctx->PixelMaps.ItoR.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_R_TO_R_SIZE", GLint, ["ctx->PixelMaps.RtoR.Size"], "", NoState, NoExt ),
-       ( "GL_PIXEL_MAP_S_TO_S_SIZE", GLint, ["ctx->PixelMaps.StoS.Size"], "", NoState, NoExt ),
-       ( "GL_POINT_SIZE", GLfloat, ["ctx->Point.Size"], "", NoState, NoExt ),
-       ( "GL_POINT_SIZE_GRANULARITY", GLfloat,
-         ["ctx->Const.PointSizeGranularity"], "", NoState, NoExt ),
-       ( "GL_POINT_SIZE_RANGE", GLfloat,
-         ["ctx->Const.MinPointSizeAA",
-          "ctx->Const.MaxPointSizeAA"], "", NoState, NoExt ),
-       ( "GL_ALIASED_POINT_SIZE_RANGE", GLfloat,
-         ["ctx->Const.MinPointSize",
-          "ctx->Const.MaxPointSize"], "", NoState, NoExt ),
-       ( "GL_POINT_SMOOTH", GLboolean, ["ctx->Point.SmoothFlag"], "", NoState, NoExt ),
-       ( "GL_POINT_SMOOTH_HINT", GLenum, ["ctx->Hint.PointSmooth"], "", NoState, NoExt ),
-       ( "GL_POINT_SIZE_MIN_EXT", GLfloat, ["ctx->Point.MinSize"], "", NoState, NoExt ),
-       ( "GL_POINT_SIZE_MAX_EXT", GLfloat, ["ctx->Point.MaxSize"], "", NoState, NoExt ),
-       ( "GL_POINT_FADE_THRESHOLD_SIZE_EXT", GLfloat,
-         ["ctx->Point.Threshold"], "", NoState, NoExt ),
-       ( "GL_DISTANCE_ATTENUATION_EXT", GLfloat,
-         ["ctx->Point.Params[0]",
-          "ctx->Point.Params[1]",
-          "ctx->Point.Params[2]"], "", NoState, NoExt ),
-       ( "GL_POLYGON_MODE", GLenum,
-         ["ctx->Polygon.FrontMode",
-          "ctx->Polygon.BackMode"], "", NoState, NoExt ),
-       ( "GL_POLYGON_OFFSET_BIAS_EXT", GLfloat, ["ctx->Polygon.OffsetUnits"], "", NoState, NoExt ),
-       ( "GL_POLYGON_OFFSET_FACTOR", GLfloat, ["ctx->Polygon.OffsetFactor "], "", NoState, NoExt ),
-       ( "GL_POLYGON_OFFSET_UNITS", GLfloat, ["ctx->Polygon.OffsetUnits "], "", NoState, NoExt ),
-       ( "GL_POLYGON_OFFSET_POINT", GLboolean, ["ctx->Polygon.OffsetPoint"], "", NoState, NoExt ),
-       ( "GL_POLYGON_OFFSET_LINE", GLboolean, ["ctx->Polygon.OffsetLine"], "", NoState, NoExt ),
-       ( "GL_POLYGON_OFFSET_FILL", GLboolean, ["ctx->Polygon.OffsetFill"], "", NoState, NoExt ),
-       ( "GL_POLYGON_SMOOTH", GLboolean, ["ctx->Polygon.SmoothFlag"], "", NoState, NoExt ),
-       ( "GL_POLYGON_SMOOTH_HINT", GLenum, ["ctx->Hint.PolygonSmooth"], "", NoState, NoExt ),
-       ( "GL_POLYGON_STIPPLE", GLboolean, ["ctx->Polygon.StippleFlag"], "", NoState, NoExt ),
-       ( "GL_PROJECTION_MATRIX", GLfloat,
-         [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-               "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-               "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-               "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         "const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;", NoState, NoExt ),
-       ( "GL_PROJECTION_STACK_DEPTH", GLint,
-         ["ctx->ProjectionMatrixStack.Depth + 1"], "", NoState, NoExt ),
-       ( "GL_READ_BUFFER", GLenum, ["ctx->ReadBuffer->ColorReadBuffer"], "", NoState, NoExt ),
-       ( "GL_RED_BIAS", GLfloat, ["ctx->Pixel.RedBias"], "", NoState, NoExt ),
-       ( "GL_RED_BITS", GLint, ["ctx->DrawBuffer->Visual.redBits"], "", "_NEW_BUFFERS", NoExt ),
-       ( "GL_RED_SCALE", GLfloat, ["ctx->Pixel.RedScale"], "", NoState, NoExt ),
-       ( "GL_RENDER_MODE", GLenum, ["ctx->RenderMode"], "", NoState, NoExt ),
-       ( "GL_RESCALE_NORMAL", GLboolean,
-         ["ctx->Transform.RescaleNormals"], "", NoState, NoExt ),
-       ( "GL_RGBA_MODE", GLboolean, ["GL_TRUE"],
-         "", NoState, NoExt ),
-       ( "GL_SCISSOR_BOX", GLint,
-         ["ctx->Scissor.X",
-          "ctx->Scissor.Y",
-          "ctx->Scissor.Width",
-          "ctx->Scissor.Height"], "", NoState, NoExt ),
-       ( "GL_SCISSOR_TEST", GLboolean, ["ctx->Scissor.Enabled"], "", NoState, NoExt ),
-       ( "GL_SELECTION_BUFFER_SIZE", GLint, ["ctx->Select.BufferSize"], "", NoState, NoExt ),
-       ( "GL_SHADE_MODEL", GLenum, ["ctx->Light.ShadeModel"], "", NoState, NoExt ),
-       ( "GL_SHARED_TEXTURE_PALETTE_EXT", GLboolean,
-         ["ctx->Texture.SharedPalette"], "", NoState, NoExt ),
-       ( "GL_STENCIL_BITS", GLint, ["ctx->DrawBuffer->Visual.stencilBits"], "", NoState, NoExt ),
-       ( "GL_STENCIL_CLEAR_VALUE", GLint, ["ctx->Stencil.Clear"], "", NoState, NoExt ),
-       ( "GL_STENCIL_FAIL", GLenum,
-         ["ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
-       ( "GL_STENCIL_FUNC", GLenum,
-         ["ctx->Stencil.Function[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
-       ( "GL_STENCIL_PASS_DEPTH_FAIL", GLenum,
-         ["ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
-       ( "GL_STENCIL_PASS_DEPTH_PASS", GLenum,
-         ["ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
-       ( "GL_STENCIL_REF", GLint,
-         ["ctx->Stencil.Ref[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
-       ( "GL_STENCIL_TEST", GLboolean, ["ctx->Stencil.Enabled"], "", NoState, NoExt ),
-       ( "GL_STENCIL_VALUE_MASK", GLint,
-         ["ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
-       ( "GL_STENCIL_WRITEMASK", GLint,
-         ["ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]"], "", NoState, NoExt ),
-       ( "GL_STEREO", GLboolean, ["ctx->DrawBuffer->Visual.stereoMode"],
-         "", NoState, NoExt ),
-       ( "GL_SUBPIXEL_BITS", GLint, ["ctx->Const.SubPixelBits"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_1D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D)"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_2D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D)"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_3D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_3D)"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_1D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_1D_ARRAY_EXT)"], "", NoState, ["MESA_texture_array"] ),
-       ( "GL_TEXTURE_2D_ARRAY_EXT", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D_ARRAY_EXT)"], "", NoState, ["MESA_texture_array"] ),
-       ( "GL_TEXTURE_BINDING_1D", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_INDEX]->Name"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_BINDING_2D", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_BINDING_3D", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_BINDING_1D_ARRAY_EXT", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_1D_ARRAY_INDEX]->Name"], "", NoState, ["MESA_texture_array"] ),
-       ( "GL_TEXTURE_BINDING_2D_ARRAY_EXT", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_ARRAY_INDEX]->Name"], "", NoState, ["MESA_texture_array"] ),
-       ( "GL_MAX_ARRAY_TEXTURE_LAYERS_EXT", GLint,
-         ["ctx->Const.MaxArrayTextureLayers"], "", NoState, ["MESA_texture_array"] ),
-       ( "GL_TEXTURE_GEN_S", GLboolean,
-         ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_GEN_T", GLboolean,
-         ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & T_BIT) ? 1 : 0)"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_GEN_R", GLboolean,
-         ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & R_BIT) ? 1 : 0)"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_GEN_Q", GLboolean,
-         ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & Q_BIT) ? 1 : 0)"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_MATRIX", GLfloat,
-         ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-          "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-          "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-          "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         """const GLfloat *matrix;
-         const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION, "glGet(texture matrix %u)",
-                        unit);
-            return;
-         }
-         matrix = ctx->TextureMatrixStack[unit].Top->m;""",
-         NoState, NoExt ),
-       ( "GL_TEXTURE_STACK_DEPTH", GLint,
-         ["ctx->TextureMatrixStack[unit].Depth + 1"],
-         """const GLuint unit = ctx->Texture.CurrentUnit;
-         if (unit >= ctx->Const.MaxTextureCoordUnits) {
-            _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glGet(texture stack depth, unit %u)", unit);
-            return;
-         }""",
-         NoState, NoExt ),
-       ( "GL_UNPACK_ALIGNMENT", GLint, ["ctx->Unpack.Alignment"], "", NoState, NoExt ),
-       ( "GL_UNPACK_LSB_FIRST", GLboolean, ["ctx->Unpack.LsbFirst"], "", NoState, NoExt ),
-       ( "GL_UNPACK_ROW_LENGTH", GLint, ["ctx->Unpack.RowLength"], "", NoState, NoExt ),
-       ( "GL_UNPACK_SKIP_PIXELS", GLint, ["ctx->Unpack.SkipPixels"], "", NoState, NoExt ),
-       ( "GL_UNPACK_SKIP_ROWS", GLint, ["ctx->Unpack.SkipRows"], "", NoState, NoExt ),
-       ( "GL_UNPACK_SWAP_BYTES", GLboolean, ["ctx->Unpack.SwapBytes"], "", NoState, NoExt ),
-       ( "GL_UNPACK_SKIP_IMAGES_EXT", GLint, ["ctx->Unpack.SkipImages"], "", NoState, NoExt ),
-       ( "GL_UNPACK_IMAGE_HEIGHT_EXT", GLint, ["ctx->Unpack.ImageHeight"], "", NoState, NoExt ),
-       ( "GL_UNPACK_CLIENT_STORAGE_APPLE", GLboolean, ["ctx->Unpack.ClientStorage"], "", NoState, NoExt ),
-       ( "GL_VIEWPORT", GLint, [ "ctx->Viewport.X", "ctx->Viewport.Y",
-         "ctx->Viewport.Width", "ctx->Viewport.Height" ], "", NoState, NoExt ),
-       ( "GL_ZOOM_X", GLfloat, ["ctx->Pixel.ZoomX"], "", NoState, NoExt ),
-       ( "GL_ZOOM_Y", GLfloat, ["ctx->Pixel.ZoomY"], "", NoState, NoExt ),
-
-       # Vertex arrays
-       ( "GL_VERTEX_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Vertex.Enabled"], "", NoState, NoExt ),
-       ( "GL_VERTEX_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Vertex.Size"], "", NoState, NoExt ),
-       ( "GL_VERTEX_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Vertex.Type"], "", NoState, NoExt ),
-       ( "GL_VERTEX_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Vertex.Stride"], "", NoState, NoExt ),
-       ( "GL_VERTEX_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
-       ( "GL_NORMAL_ARRAY", GLenum, ["ctx->Array.ArrayObj->Normal.Enabled"], "", NoState, NoExt ),
-       ( "GL_NORMAL_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Normal.Type"], "", NoState, NoExt ),
-       ( "GL_NORMAL_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Normal.Stride"], "", NoState, NoExt ),
-       ( "GL_NORMAL_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
-       ( "GL_COLOR_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Color.Enabled"], "", NoState, NoExt ),
-       ( "GL_COLOR_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Color.Size"], "", NoState, NoExt ),
-       ( "GL_COLOR_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Color.Type"], "", NoState, NoExt ),
-       ( "GL_COLOR_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Color.Stride"], "", NoState, NoExt ),
-       ( "GL_COLOR_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
-       ( "GL_INDEX_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Index.Enabled"], "", NoState, NoExt ),
-       ( "GL_INDEX_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Index.Type"], "", NoState, NoExt ),
-       ( "GL_INDEX_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Index.Stride"], "", NoState, NoExt ),
-       ( "GL_INDEX_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_COORD_ARRAY", GLboolean,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_COORD_ARRAY_SIZE", GLint,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_COORD_ARRAY_TYPE", GLenum,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_COORD_ARRAY_STRIDE", GLint,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_COORD_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
-       ( "GL_EDGE_FLAG_ARRAY", GLboolean, ["ctx->Array.ArrayObj->EdgeFlag.Enabled"], "", NoState, NoExt ),
-       ( "GL_EDGE_FLAG_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->EdgeFlag.Stride"], "", NoState, NoExt ),
-       ( "GL_EDGE_FLAG_ARRAY_COUNT_EXT", GLint, ["0"], "", NoState, NoExt ),
-
-       # GL_ARB_multitexture
-       ( "GL_MAX_TEXTURE_UNITS_ARB", GLint,
-         ["ctx->Const.MaxTextureUnits"], "", NoState, ["ARB_multitexture"] ),
-       ( "GL_ACTIVE_TEXTURE_ARB", GLint,
-         [ "GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit"], "", NoState, ["ARB_multitexture"] ),
-       ( "GL_CLIENT_ACTIVE_TEXTURE_ARB", GLint,
-         ["GL_TEXTURE0_ARB + ctx->Array.ActiveTexture"], "", NoState, ["ARB_multitexture"] ),
-
-       # GL_ARB_texture_cube_map
-       ( "GL_TEXTURE_CUBE_MAP_ARB", GLboolean,
-         ["_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)"], "", NoState, ["ARB_texture_cube_map"] ),
-       ( "GL_TEXTURE_BINDING_CUBE_MAP_ARB", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name"],
-         "", NoState, ["ARB_texture_cube_map"] ),
-       ( "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", GLint,
-         ["(1 << (ctx->Const.MaxCubeTextureLevels - 1))"],
-         "", NoState, ["ARB_texture_cube_map"]),
-
-       # GL_ARB_texture_compression */
-       ( "GL_TEXTURE_COMPRESSION_HINT_ARB", GLint,
-         ["ctx->Hint.TextureCompression"], "", NoState, NoExt ),
-       ( "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", GLint,
-         ["_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)"],
-         "", NoState, NoExt ),
-       ( "GL_COMPRESSED_TEXTURE_FORMATS_ARB", GLenum,
-         [],
-         """GLint formats[100];
-         GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-         ASSERT(n <= 100);
-         for (i = 0; i < n; i++)
-            params[i] = CONVERSION(formats[i]);""",
-         NoState, NoExt ),
-
-       # GL_EXT_compiled_vertex_array
-       ( "GL_ARRAY_ELEMENT_LOCK_FIRST_EXT", GLint, ["ctx->Array.LockFirst"],
-         "", NoState, ["EXT_compiled_vertex_array"] ),
-       ( "GL_ARRAY_ELEMENT_LOCK_COUNT_EXT", GLint, ["ctx->Array.LockCount"],
-         "", NoState, ["EXT_compiled_vertex_array"] ),
-
-       # GL_ARB_transpose_matrix
-       ( "GL_TRANSPOSE_COLOR_MATRIX_ARB", GLfloat,
-         ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
-          "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
-          "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
-          "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
-         "const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;",
-         NoState, NoExt ),
-       ( "GL_TRANSPOSE_MODELVIEW_MATRIX_ARB", GLfloat,
-         ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
-          "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
-          "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
-          "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
-         "const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;",
-         NoState, NoExt ),
-       ( "GL_TRANSPOSE_PROJECTION_MATRIX_ARB", GLfloat,
-         ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
-          "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
-          "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
-          "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
-         "const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;",
-         NoState, NoExt ),
-       ( "GL_TRANSPOSE_TEXTURE_MATRIX_ARB", GLfloat,
-         ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
-          "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
-          "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
-          "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
-         "const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;",
-         NoState, NoExt ),
-
-       # GL_SGI_color_matrix (also in 1.2 imaging)
-       ( "GL_COLOR_MATRIX_SGI", GLfloat,
-         ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-          "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-          "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-          "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         "const GLfloat *matrix = ctx->ColorMatrixStack.Top->m;",
-         NoState, NoExt ),
-       ( "GL_COLOR_MATRIX_STACK_DEPTH_SGI", GLint,
-         ["ctx->ColorMatrixStack.Depth + 1"], "", NoState, NoExt ),
-       ( "GL_MAX_COLOR_MATRIX_STACK_DEPTH_SGI", GLint,
-         ["MAX_COLOR_STACK_DEPTH"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_RED_SCALE_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixScale[0]"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_GREEN_SCALE_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixScale[1]"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_BLUE_SCALE_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixScale[2]"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_ALPHA_SCALE_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixScale[3]"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_RED_BIAS_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixBias[0]"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_GREEN_BIAS_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixBias[1]"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_BLUE_BIAS_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixBias[2]"], "", NoState, NoExt ),
-       ( "GL_POST_COLOR_MATRIX_ALPHA_BIAS_SGI", GLfloat,
-         ["ctx->Pixel.PostColorMatrixBias[3]"], "", NoState, NoExt ),
-
-       # GL_EXT_convolution (also in 1.2 imaging)
-       ( "GL_CONVOLUTION_1D_EXT", GLboolean,
-         ["ctx->Pixel.Convolution1DEnabled"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_CONVOLUTION_2D_EXT", GLboolean,
-         ["ctx->Pixel.Convolution2DEnabled"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_SEPARABLE_2D_EXT", GLboolean,
-         ["ctx->Pixel.Separable2DEnabled"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_RED_SCALE_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionScale[0]"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_GREEN_SCALE_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionScale[1]"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_BLUE_SCALE_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionScale[2]"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_ALPHA_SCALE_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionScale[3]"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_RED_BIAS_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionBias[0]"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_GREEN_BIAS_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionBias[1]"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_BLUE_BIAS_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionBias[2]"], "", NoState, ["EXT_convolution"] ),
-       ( "GL_POST_CONVOLUTION_ALPHA_BIAS_EXT", GLfloat,
-         ["ctx->Pixel.PostConvolutionBias[3]"], "", NoState, ["EXT_convolution"] ),
-
-       # GL_EXT_histogram / GL_ARB_imaging
-       ( "GL_HISTOGRAM", GLboolean,
-         [ "ctx->Pixel.HistogramEnabled" ], "", NoState, ["EXT_histogram"] ),
-       ( "GL_MINMAX", GLboolean,
-         [ "ctx->Pixel.MinMaxEnabled" ], "", NoState, ["EXT_histogram"] ),
-
-       # GL_SGI_color_table / GL_ARB_imaging
-       ( "GL_COLOR_TABLE_SGI", GLboolean,
-         ["ctx->Pixel.ColorTableEnabled[COLORTABLE_PRECONVOLUTION]"], "",
-         NoState, ["SGI_color_table"] ),
-       ( "GL_POST_CONVOLUTION_COLOR_TABLE_SGI", GLboolean,
-         ["ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCONVOLUTION]"], "",
-         NoState, ["SGI_color_table"] ),
-       ( "GL_POST_COLOR_MATRIX_COLOR_TABLE_SGI", GLboolean,
-         ["ctx->Pixel.ColorTableEnabled[COLORTABLE_POSTCOLORMATRIX]"], "",
-         NoState, ["SGI_color_table"] ),
-
-       # GL_SGI_texture_color_table
-       ( "GL_TEXTURE_COLOR_TABLE_SGI", GLboolean,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].ColorTableEnabled"],
-         "", NoState, ["SGI_texture_color_table"] ),
-
-       # GL_EXT_secondary_color
-       ( "GL_COLOR_SUM_EXT", GLboolean,
-         ["ctx->Fog.ColorSumEnabled"], "", NoState,
-         ["EXT_secondary_color", "ARB_vertex_program"] ),
-       ( "GL_CURRENT_SECONDARY_COLOR_EXT", GLfloatN,
-         ["ctx->Current.Attrib[VERT_ATTRIB_COLOR1][0]",
-          "ctx->Current.Attrib[VERT_ATTRIB_COLOR1][1]",
-          "ctx->Current.Attrib[VERT_ATTRIB_COLOR1][2]",
-          "ctx->Current.Attrib[VERT_ATTRIB_COLOR1][3]"],
-         "", FlushCurrent, ["EXT_secondary_color"] ),
-       ( "GL_SECONDARY_COLOR_ARRAY_EXT", GLboolean,
-         ["ctx->Array.ArrayObj->SecondaryColor.Enabled"],
-         "", NoState, ["EXT_secondary_color"] ),
-       ( "GL_SECONDARY_COLOR_ARRAY_TYPE_EXT", GLenum,
-         ["ctx->Array.ArrayObj->SecondaryColor.Type"],
-         "", NoState,  ["EXT_secondary_color"] ),
-       ( "GL_SECONDARY_COLOR_ARRAY_STRIDE_EXT", GLint,
-         ["ctx->Array.ArrayObj->SecondaryColor.Stride"],
-         "", NoState, ["EXT_secondary_color"] ),
-       ( "GL_SECONDARY_COLOR_ARRAY_SIZE_EXT", GLint,
-         ["ctx->Array.ArrayObj->SecondaryColor.Size"],
-         "", NoState, ["EXT_secondary_color"] ),
-
-       # GL_EXT_fog_coord
-       ( "GL_CURRENT_FOG_COORDINATE_EXT", GLfloat,
-         ["ctx->Current.Attrib[VERT_ATTRIB_FOG][0]"],
-         "", FlushCurrent, ["EXT_fog_coord"] ),
-       ( "GL_FOG_COORDINATE_ARRAY_EXT", GLboolean,
-         ["ctx->Array.ArrayObj->FogCoord.Enabled"],
-         "", NoState,  ["EXT_fog_coord"] ),
-       ( "GL_FOG_COORDINATE_ARRAY_TYPE_EXT", GLenum,
-         ["ctx->Array.ArrayObj->FogCoord.Type"],
-         "", NoState, ["EXT_fog_coord"] ),
-       ( "GL_FOG_COORDINATE_ARRAY_STRIDE_EXT", GLint,
-         ["ctx->Array.ArrayObj->FogCoord.Stride"],
-         "", NoState, ["EXT_fog_coord"] ),
-       ( "GL_FOG_COORDINATE_SOURCE_EXT", GLenum,
-         ["ctx->Fog.FogCoordinateSource"],
-         "", NoState, ["EXT_fog_coord"] ),
-
-       # GL_EXT_texture_lod_bias
-       ( "GL_MAX_TEXTURE_LOD_BIAS_EXT", GLfloat,
-         ["ctx->Const.MaxTextureLodBias"], "", NoState, ["EXT_texture_lod_bias"]),
-
-       # GL_EXT_texture_filter_anisotropic
-       ( "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", GLfloat,
-         ["ctx->Const.MaxTextureMaxAnisotropy"],
-         "", NoState, ["EXT_texture_filter_anisotropic"]),
-
-       # GL_ARB_multisample
-       ( "GL_MULTISAMPLE_ARB", GLboolean,
-         ["ctx->Multisample.Enabled"], "", NoState, NoExt ),
-       ( "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB", GLboolean,
-         ["ctx->Multisample.SampleAlphaToCoverage"], "", NoState, NoExt ),
-       ( "GL_SAMPLE_ALPHA_TO_ONE_ARB", GLboolean,
-         ["ctx->Multisample.SampleAlphaToOne"], "", NoState, NoExt ),
-       ( "GL_SAMPLE_COVERAGE_ARB", GLboolean,
-         ["ctx->Multisample.SampleCoverage"], "", NoState, NoExt ),
-       ( "GL_SAMPLE_COVERAGE_VALUE_ARB", GLfloat,
-         ["ctx->Multisample.SampleCoverageValue"], "", NoState, NoExt ),
-       ( "GL_SAMPLE_COVERAGE_INVERT_ARB", GLboolean,
-         ["ctx->Multisample.SampleCoverageInvert"], "", NoState, NoExt ),
-       ( "GL_SAMPLE_BUFFERS_ARB", GLint,
-         ["ctx->DrawBuffer->Visual.sampleBuffers"], "", NoState, NoExt ),
-       ( "GL_SAMPLES_ARB", GLint,
-         ["ctx->DrawBuffer->Visual.samples"], "", NoState, NoExt ),
-
-       # GL_IBM_rasterpos_clip
-       ( "GL_RASTER_POSITION_UNCLIPPED_IBM", GLboolean,
-         ["ctx->Transform.RasterPositionUnclipped"],
-         "", NoState, ["IBM_rasterpos_clip"] ),
-
-       # GL_NV_point_sprite
-       ( "GL_POINT_SPRITE_NV", GLboolean, ["ctx->Point.PointSprite"], # == GL_POINT_SPRITE_ARB
-         "", NoState, ["NV_point_sprite", "ARB_point_sprite"] ),
-       ( "GL_POINT_SPRITE_R_MODE_NV", GLenum, ["ctx->Point.SpriteRMode"],
-         "", NoState, ["NV_point_sprite"] ),
-       ( "GL_POINT_SPRITE_COORD_ORIGIN", GLenum, ["ctx->Point.SpriteOrigin"],
-         "", NoState, ["NV_point_sprite", "ARB_point_sprite"] ),
-
-       # GL_SGIS_generate_mipmap
-       ( "GL_GENERATE_MIPMAP_HINT_SGIS", GLenum, ["ctx->Hint.GenerateMipmap"],
-         "", NoState, ["SGIS_generate_mipmap"] ),
-
-       # GL_NV_vertex_program
-       ( "GL_VERTEX_PROGRAM_BINDING_NV", GLint,
-         ["(ctx->VertexProgram.Current ? ctx->VertexProgram.Current->Base.Id : 0)"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY0_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[0].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY1_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[1].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY2_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[2].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY3_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[3].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY4_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[4].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY5_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[5].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY6_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[6].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY7_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[7].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY8_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[8].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY9_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[9].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY10_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[10].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY11_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[11].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY12_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[12].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY13_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[13].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY14_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[14].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_VERTEX_ATTRIB_ARRAY15_NV", GLboolean,
-         ["ctx->Array.ArrayObj->VertexAttrib[15].Enabled"],
-         "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB0_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[0]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB1_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[1]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB2_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[2]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB3_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[3]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB4_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[4]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB5_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[5]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB6_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[6]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB7_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[7]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB8_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[8]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB9_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[9]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB10_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[10]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB11_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[11]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB12_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[12]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB13_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[13]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB14_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[14]"], "", NoState, ["NV_vertex_program"] ),
-       ( "GL_MAP1_VERTEX_ATTRIB15_4_NV", GLboolean,
-         ["ctx->Eval.Map1Attrib[15]"], "", NoState, ["NV_vertex_program"] ),
-
-       # GL_NV_fragment_program
-       ( "GL_FRAGMENT_PROGRAM_NV", GLboolean,
-         ["ctx->FragmentProgram.Enabled"], "", NoState, ["NV_fragment_program"] ),
-       ( "GL_FRAGMENT_PROGRAM_BINDING_NV", GLint,
-         ["ctx->FragmentProgram.Current ? ctx->FragmentProgram.Current->Base.Id : 0"],
-         "", NoState, ["NV_fragment_program"] ),
-       ( "GL_MAX_FRAGMENT_PROGRAM_LOCAL_PARAMETERS_NV", GLint,
-         ["MAX_NV_FRAGMENT_PROGRAM_PARAMS"], "", NoState, ["NV_fragment_program"] ),
-
-       # GL_NV_texture_rectangle
-       ( "GL_TEXTURE_RECTANGLE_NV", GLboolean,
-         ["_mesa_IsEnabled(GL_TEXTURE_RECTANGLE_NV)"], "", NoState, ["NV_texture_rectangle"] ),
-       ( "GL_TEXTURE_BINDING_RECTANGLE_NV", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_RECT_INDEX]->Name"],
-         "", NoState, ["NV_texture_rectangle"] ),
-       ( "GL_MAX_RECTANGLE_TEXTURE_SIZE_NV", GLint,
-         ["ctx->Const.MaxTextureRectSize"], "", NoState, ["NV_texture_rectangle"] ),
-
-       # GL_EXT_stencil_two_side
-       ( "GL_STENCIL_TEST_TWO_SIDE_EXT", GLboolean,
-         ["ctx->Stencil.TestTwoSide"], "", NoState, ["EXT_stencil_two_side"] ),
-       ( "GL_ACTIVE_STENCIL_FACE_EXT", GLenum,
-         ["ctx->Stencil.ActiveFace ? GL_BACK : GL_FRONT"],
-         "", NoState, ["EXT_stencil_two_side"] ),
-
-       # GL_NV_light_max_exponent
-       ( "GL_MAX_SHININESS_NV", GLfloat,
-         ["ctx->Const.MaxShininess"], "", NoState, ["NV_light_max_exponent"] ),
-       ( "GL_MAX_SPOT_EXPONENT_NV", GLfloat,
-         ["ctx->Const.MaxSpotExponent"], "", NoState, ["NV_light_max_exponent"] ),
-
-       # GL_ARB_vertex_buffer_object
-       ( "GL_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayBufferObj->Name"], "", NoState, NoExt ),
-       ( "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->Vertex.BufferObj->Name"], "", NoState, NoExt ),
-       ( "GL_NORMAL_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->Normal.BufferObj->Name"], "", NoState, NoExt ),
-       ( "GL_COLOR_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->Color.BufferObj->Name"], "", NoState, NoExt ),
-       ( "GL_INDEX_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->Index.BufferObj->Name"], "", NoState, NoExt ),
-       ( "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name"],
-         "", NoState, NoExt ),
-       ( "GL_EDGE_FLAG_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->EdgeFlag.BufferObj->Name"], "", NoState, NoExt ),
-       ( "GL_SECONDARY_COLOR_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->SecondaryColor.BufferObj->Name"],
-         "", NoState, NoExt ),
-       ( "GL_FOG_COORDINATE_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->FogCoord.BufferObj->Name"],
-         "", NoState, NoExt ),
-       # GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB - not supported
-       ( "GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ElementArrayBufferObj->Name"],
-         "", NoState, NoExt ),
-
-       # GL_EXT_pixel_buffer_object
-       ( "GL_PIXEL_PACK_BUFFER_BINDING_EXT", GLint,
-         ["ctx->Pack.BufferObj->Name"], "", NoState, ["EXT_pixel_buffer_object"] ),
-       ( "GL_PIXEL_UNPACK_BUFFER_BINDING_EXT", GLint,
-         ["ctx->Unpack.BufferObj->Name"], "", NoState, ["EXT_pixel_buffer_object"] ),
-
-       # GL_ARB_vertex_program
-       ( "GL_VERTEX_PROGRAM_ARB", GLboolean, # == GL_VERTEX_PROGRAM_NV
-         ["ctx->VertexProgram.Enabled"], "", NoState,
-         ["ARB_vertex_program", "NV_vertex_program"] ),
-       ( "GL_VERTEX_PROGRAM_POINT_SIZE_ARB", GLboolean, # == GL_VERTEX_PROGRAM_POINT_SIZE_NV
-         ["ctx->VertexProgram.PointSizeEnabled"], "", NoState,
-         ["ARB_vertex_program", "NV_vertex_program"] ),
-       ( "GL_VERTEX_PROGRAM_TWO_SIDE_ARB", GLboolean, # == GL_VERTEX_PROGRAM_TWO_SIDE_NV
-         ["ctx->VertexProgram.TwoSideEnabled"], "", NoState,
-         ["ARB_vertex_program", "NV_vertex_program"] ),
-       ( "GL_MAX_PROGRAM_MATRIX_STACK_DEPTH_ARB", GLint, # == GL_MAX_TRACK_MATRIX_STACK_DEPTH_NV
-         ["ctx->Const.MaxProgramMatrixStackDepth"], "", NoState,
-         ["ARB_vertex_program", "ARB_fragment_program", "NV_vertex_program"] ),
-       ( "GL_MAX_PROGRAM_MATRICES_ARB", GLint, # == GL_MAX_TRACK_MATRICES_NV
-         ["ctx->Const.MaxProgramMatrices"], "", NoState,
-         ["ARB_vertex_program", "ARB_fragment_program", "NV_vertex_program"] ),
-       ( "GL_CURRENT_MATRIX_STACK_DEPTH_ARB", GLboolean, # == GL_CURRENT_MATRIX_STACK_DEPTH_NV
-         ["ctx->CurrentStack->Depth + 1"], "", NoState,
-         ["ARB_vertex_program", "ARB_fragment_program", "NV_vertex_program"] ),
-       ( "GL_CURRENT_MATRIX_ARB", GLfloat, # == GL_CURRENT_MATRIX_NV
-         ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-          "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-          "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-          "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         "const GLfloat *matrix = ctx->CurrentStack->Top->m;", NoState,
-         ["ARB_vertex_program", "ARB_fragment_program", "NV_fragment_program"] ),
-       ( "GL_TRANSPOSE_CURRENT_MATRIX_ARB", GLfloat,
-         ["matrix[0]", "matrix[4]", "matrix[8]", "matrix[12]",
-          "matrix[1]", "matrix[5]", "matrix[9]", "matrix[13]",
-          "matrix[2]", "matrix[6]", "matrix[10]", "matrix[14]",
-          "matrix[3]", "matrix[7]", "matrix[11]", "matrix[15]"],
-         "const GLfloat *matrix = ctx->CurrentStack->Top->m;", NoState,
-         ["ARB_vertex_program", "ARB_fragment_program"] ),
-       ( "GL_MAX_VERTEX_ATTRIBS_ARB", GLint,
-         ["ctx->Const.VertexProgram.MaxAttribs"], "", NoState, ["ARB_vertex_program"] ),
-       ( "GL_PROGRAM_ERROR_POSITION_ARB", GLint, # == GL_PROGRAM_ERROR_POSITION_NV
-         ["ctx->Program.ErrorPos"], "", NoState, ["NV_vertex_program",
-          "ARB_vertex_program", "NV_fragment_program", "ARB_fragment_program"] ),
-
-       # GL_ARB_fragment_program
-       ( "GL_FRAGMENT_PROGRAM_ARB", GLboolean,
-         ["ctx->FragmentProgram.Enabled"], "", NoState, ["ARB_fragment_program"] ),
-       ( "GL_MAX_TEXTURE_COORDS_ARB", GLint, # == GL_MAX_TEXTURE_COORDS_NV
-         ["ctx->Const.MaxTextureCoordUnits"], "", NoState,
-         ["ARB_fragment_program", "NV_fragment_program"] ),
-       ( "GL_MAX_TEXTURE_IMAGE_UNITS_ARB", GLint, # == GL_MAX_TEXTURE_IMAGE_UNITS_NV
-         ["ctx->Const.MaxTextureImageUnits"], "", NoState,
-         ["ARB_fragment_program", "NV_fragment_program"] ),
-
-       # GL_EXT_depth_bounds_test
-       ( "GL_DEPTH_BOUNDS_TEST_EXT", GLboolean,
-         ["ctx->Depth.BoundsTest"], "", NoState, ["EXT_depth_bounds_test"] ),
-       ( "GL_DEPTH_BOUNDS_EXT", GLfloat,
-         ["ctx->Depth.BoundsMin", "ctx->Depth.BoundsMax"],
-         "", NoState, ["EXT_depth_bounds_test"] ),
-
-       # GL_ARB_depth_clamp
-       ( "GL_DEPTH_CLAMP", GLboolean, ["ctx->Transform.DepthClamp"], "",
-         NoState, ["ARB_depth_clamp"] ),
-
-       # GL_ARB_draw_buffers
-       ( "GL_MAX_DRAW_BUFFERS_ARB", GLint,
-         ["ctx->Const.MaxDrawBuffers"], "", NoState, NoExt ),
-       ( "GL_DRAW_BUFFER0_ARB", GLenum,
-         ["ctx->DrawBuffer->ColorDrawBuffer[0]"], "", NoState, NoExt ),
-       ( "GL_DRAW_BUFFER1_ARB", GLenum,
-         ["buffer"],
-         """GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[1];""", NoState, NoExt ),
-       ( "GL_DRAW_BUFFER2_ARB", GLenum,
-         ["buffer"],
-         """GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[2];""", NoState, NoExt ),
-       ( "GL_DRAW_BUFFER3_ARB", GLenum,
-         ["buffer"],
-         """GLenum buffer;
-         if (pname - GL_DRAW_BUFFER0_ARB >= ctx->Const.MaxDrawBuffers) {
-            _mesa_error(ctx, GL_INVALID_ENUM, "glGet(GL_DRAW_BUFFERx_ARB)");
-            return;
-         }
-         buffer = ctx->DrawBuffer->ColorDrawBuffer[3];""", NoState, NoExt ),
-       # XXX Add more GL_DRAW_BUFFERn_ARB entries as needed in the future
-
-       # GL_OES_read_format
-       ( "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES", GLint,
-         ["_mesa_get_color_read_type(ctx)"], "", "_NEW_BUFFERS", ["OES_read_format"] ),
-       ( "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", GLint,
-         ["_mesa_get_color_read_format(ctx)"], "", "_NEW_BUFFERS", ["OES_read_format"] ),
-
-       # GL_ATI_fragment_shader
-       ( "GL_NUM_FRAGMENT_REGISTERS_ATI", GLint, ["6"],
-         "", NoState, ["ATI_fragment_shader"] ),
-       ( "GL_NUM_FRAGMENT_CONSTANTS_ATI", GLint, ["8"],
-         "", NoState, ["ATI_fragment_shader"] ),
-       ( "GL_NUM_PASSES_ATI", GLint, ["2"],
-         "", NoState, ["ATI_fragment_shader"] ),
-       ( "GL_NUM_INSTRUCTIONS_PER_PASS_ATI", GLint, ["8"],
-         "", NoState, ["ATI_fragment_shader"] ),
-       ( "GL_NUM_INSTRUCTIONS_TOTAL_ATI", GLint, ["16"],
-         "", NoState, ["ATI_fragment_shader"] ),
-       ( "GL_COLOR_ALPHA_PAIRING_ATI", GLboolean, ["GL_TRUE"],
-         "", NoState, ["ATI_fragment_shader"] ),
-       ( "GL_NUM_LOOPBACK_COMPONENTS_ATI", GLint, ["3"],
-         "", NoState, ["ATI_fragment_shader"] ),
-       ( "GL_NUM_INPUT_INTERPOLATOR_COMPONENTS_ATI", GLint, ["3"],
-         "", NoState, ["ATI_fragment_shader"] ),
-
-       # OpenGL 2.0
-       ( "GL_STENCIL_BACK_FUNC", GLenum, ["ctx->Stencil.Function[1]"],
-         "", NoState, NoExt ),
-       ( "GL_STENCIL_BACK_VALUE_MASK", GLint, ["ctx->Stencil.ValueMask[1]"],
-         "", NoState, NoExt ),
-       ( "GL_STENCIL_BACK_WRITEMASK", GLint, ["ctx->Stencil.WriteMask[1]"],
-         "", NoState, NoExt ),
-       ( "GL_STENCIL_BACK_REF", GLint, ["ctx->Stencil.Ref[1]"],
-         "", NoState, NoExt ),
-       ( "GL_STENCIL_BACK_FAIL", GLenum, ["ctx->Stencil.FailFunc[1]"],
-         "", NoState, NoExt ),
-       ( "GL_STENCIL_BACK_PASS_DEPTH_FAIL", GLenum, ["ctx->Stencil.ZFailFunc[1]"],
-         "", NoState, NoExt ),
-       ( "GL_STENCIL_BACK_PASS_DEPTH_PASS", GLenum, ["ctx->Stencil.ZPassFunc[1]"],
-         "", NoState, NoExt ),
-
-       # GL_EXT_framebuffer_object
-       ( "GL_FRAMEBUFFER_BINDING_EXT", GLint, ["ctx->DrawBuffer->Name"], "",
-         NoState, ["EXT_framebuffer_object"] ),
-       ( "GL_RENDERBUFFER_BINDING_EXT", GLint,
-         ["ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0"], "",
-         NoState, ["EXT_framebuffer_object"] ),
-       ( "GL_MAX_COLOR_ATTACHMENTS_EXT", GLint,
-         ["ctx->Const.MaxColorAttachments"], "",
-         NoState, ["EXT_framebuffer_object"] ),
-       ( "GL_MAX_RENDERBUFFER_SIZE_EXT", GLint,
-         ["ctx->Const.MaxRenderbufferSize"], "",
-         NoState, ["EXT_framebuffer_object"] ),
-
-       # GL_EXT_framebuffer_blit
-       # NOTE: GL_DRAW_FRAMEBUFFER_BINDING_EXT == GL_FRAMEBUFFER_BINDING_EXT
-       ( "GL_READ_FRAMEBUFFER_BINDING_EXT", GLint, ["ctx->ReadBuffer->Name"], "",
-         NoState, ["EXT_framebuffer_blit"] ),
-
-       # GL_EXT_provoking_vertex
-       ( "GL_PROVOKING_VERTEX_EXT", GLboolean,
-         ["ctx->Light.ProvokingVertex"], "", NoState, ["EXT_provoking_vertex"] ),
-       ( "GL_QUADS_FOLLOW_PROVOKING_VERTEX_CONVENTION_EXT", GLboolean,
-         ["ctx->Const.QuadsFollowProvokingVertexConvention"], "",
-         NoState, ["EXT_provoking_vertex"] ),
-
-       # GL_ARB_fragment_shader
-       ( "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", GLint,
-         ["ctx->Const.FragmentProgram.MaxUniformComponents"], "",
-         NoState, ["ARB_fragment_shader"] ),
-       ( "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", GLenum,
-         ["ctx->Hint.FragmentShaderDerivative"],
-         "", NoState, ["ARB_fragment_shader"] ),
-
-       # GL_ARB_vertex_shader
-       ( "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", GLint,
-         ["ctx->Const.VertexProgram.MaxUniformComponents"], "",
-         NoState, ["ARB_vertex_shader"] ),
-       ( "GL_MAX_VARYING_FLOATS_ARB", GLint,
-         ["ctx->Const.MaxVarying * 4"], "", NoState, ["ARB_vertex_shader"] ),
-       ( "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", GLint,
-         ["ctx->Const.MaxVertexTextureImageUnits"],
-         "", NoState, ["ARB_vertex_shader"] ),
-       ( "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", GLint,
-         ["ctx->Const.MaxCombinedTextureImageUnits"],
-         "", NoState, ["ARB_vertex_shader"] ),
-
-       # GL_ARB_shader_objects
-       # Actually, this token isn't part of GL_ARB_shader_objects, but is
-       # close enough for now.
-       ( "GL_CURRENT_PROGRAM", GLint,
-         ["ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0"],
-         "", NoState, ["ARB_shader_objects"] ),
-
-       # GL_ARB_framebuffer_object
-       ( "GL_MAX_SAMPLES", GLint, ["ctx->Const.MaxSamples"], "",
-         NoState, ["ARB_framebuffer_object"] ),
-
-       # GL_APPLE_vertex_array_object
-       ( "GL_VERTEX_ARRAY_BINDING_APPLE", GLint, ["ctx->Array.ArrayObj->Name"], "",
-         NoState, ["APPLE_vertex_array_object"] ),
-
-       # GL_ARB_seamless_cube_map
-       ( "GL_TEXTURE_CUBE_MAP_SEAMLESS", GLboolean, ["ctx->Texture.CubeMapSeamless"], "",
-         NoState, ["ARB_seamless_cube_map"] ),
-
-       # GL_ARB_sync
-       ( "GL_MAX_SERVER_WAIT_TIMEOUT", GLint64, ["ctx->Const.MaxServerWaitTimeout"], "",
-         NoState, ["ARB_sync"] ),
-
-       # GL_EXT_transform_feedback
-       ( "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", GLint,
-         ["ctx->TransformFeedback.CurrentBuffer->Name"], "",
-         NoState, ["EXT_transform_feedback"] ),
-       ( "GL_RASTERIZER_DISCARD", GLboolean,
-         ["ctx->TransformFeedback.RasterDiscard"], "",
-         NoState, ["EXT_transform_feedback"] ),
-       ( "GL_MAX_TRANSFORM_FEEDBACK_INTERLEAVED_COMPONENTS", GLint,
-         ["ctx->Const.MaxTransformFeedbackInterleavedComponents"], "",
-         NoState, ["EXT_transform_feedback"] ),
-       ( "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_ATTRIBS", GLint,
-         ["ctx->Const.MaxTransformFeedbackSeparateAttribs"], "",
-         NoState, ["EXT_transform_feedback"] ),
-       ( "GL_MAX_TRANSFORM_FEEDBACK_SEPARATE_COMPONENTS", GLint,
-         ["ctx->Const.MaxTransformFeedbackSeparateComponents"], "",
-         NoState, ["EXT_transform_feedback"] ),
-
-       # GL 3.0
-       ( "GL_NUM_EXTENSIONS", GLint,
-         ["_mesa_get_extension_count(ctx)"], "", NoState, "30" ),
-       ( "GL_MAJOR_VERSION", GLint,
-         ["ctx->VersionMajor"], "", NoState, "30" ),
-       ( "GL_MINOR_VERSION", GLint,
-         ["ctx->VersionMinor"], "", NoState, "30" ),
-       ( "GL_CONTEXT_FLAGS", GLint,
-         ["ctx->Const.ContextFlags"], "", NoState, "30" ),
-
-    # GL 3.1
-    ( "GL_PRIMITIVE_RESTART", GLboolean,
-      ["ctx->Array.PrimitiveRestart"], "", NoState, "31" ),
-    ( "GL_PRIMITIVE_RESTART_INDEX", GLint,
-      ["ctx->Array.RestartIndex"], "", NoState, "31" ),
-       # GL 3.2
-       ( "GL_CONTEXT_PROFILE_MASK", GLint, ["ctx->Const.ProfileMask"], "",
-         NoState, "32" )
-
-]
-
-
-# These are queried via glGetIntegetIndexdvEXT() or glGetIntegeri_v()
-# The tuples are the same as above, with one exception: the "optional"
-# code field is instead the max legal index value.
-IndexedStateVars = [
-       # GL_EXT_draw_buffers2 / GL3
-       ( "GL_BLEND", GLint, ["((ctx->Color.BlendEnabled >> index) & 1)"],
-         "ctx->Const.MaxDrawBuffers", NoState, ["EXT_draw_buffers2"] ),
-       ( "GL_COLOR_WRITEMASK", GLint,
-         [ "ctx->Color.ColorMask[index][RCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[index][GCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[index][BCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[index][ACOMP] ? 1 : 0" ],
-         "ctx->Const.MaxDrawBuffers", NoState, ["EXT_draw_buffers2"] ),
-
-       # GL_EXT_transform_feedback
-       ( "GL_TRANSFORM_FEEDBACK_BUFFER_START", GLint64,
-         ["ctx->TransformFeedback.Offset[index]"],
-         "ctx->Const.MaxTransformFeedbackSeparateAttribs",
-         NoState, ["EXT_transform_feedback"] ),
-       ( "GL_TRANSFORM_FEEDBACK_BUFFER_SIZE", GLint64,
-         ["ctx->TransformFeedback.Size[index]"],
-         "ctx->Const.MaxTransformFeedbackSeparateAttribs",
-         NoState, ["EXT_transform_feedback"] ),
-       ( "GL_TRANSFORM_FEEDBACK_BUFFER_BINDING", GLint,
-         ["ctx->TransformFeedback.Buffers[index]->Name"],
-         "ctx->Const.MaxTransformFeedbackSeparateAttribs",
-         NoState, ["EXT_transform_feedback"] ),
-
-       # XXX more to come...
-]
-
-
-
-def ConversionFunc(fromType, toType):
-       """Return the name of the macro to convert between two data types."""
-       if fromType == toType:
-               return ""
-       elif fromType == GLfloat and toType == GLint:
-               return "IROUND"
-       elif fromType == GLfloat and toType == GLint64:
-               return "IROUND64"
-       elif fromType == GLfloatN and toType == GLfloat:
-               return ""
-       elif fromType == GLint and toType == GLfloat: # but not GLfloatN!
-               return "(GLfloat)"
-       elif fromType == GLint and toType == GLint64:
-               return "(GLint64)"
-       elif fromType == GLint64 and toType == GLfloat: # but not GLfloatN!
-               return "(GLfloat)"
-       else:
-               if fromType == GLfloatN:
-                       fromType = GLfloat
-               fromStr = TypeStrings[fromType]
-               fromStr = string.upper(fromStr[2:])
-               toStr = TypeStrings[toType]
-               toStr = string.upper(toStr[2:])
-               return fromStr + "_TO_" + toStr
-
-
-def EmitGetFunction(stateVars, returnType, indexed):
-       """Emit the code to implement glGetBooleanv, glGetIntegerv or glGetFloatv."""
-       assert (returnType == GLboolean or
-                       returnType == GLint or
-                       returnType == GLint64 or
-                       returnType == GLfloat)
-
-       strType = TypeStrings[returnType]
-       # Capitalize first letter of return type
-       if indexed:
-               if returnType == GLint:
-                       function = "GetIntegerIndexedv"
-               elif returnType == GLboolean:
-                       function = "GetBooleanIndexedv"
-               elif returnType == GLint64:
-                       function = "GetInteger64Indexedv"
-               else:
-                       function = "Foo"
-       else:
-               if returnType == GLint:
-                       function = "GetIntegerv"
-               elif returnType == GLboolean:
-                       function = "GetBooleanv"
-               elif returnType == GLfloat:
-                       function = "GetFloatv"
-               elif returnType == GLint64:
-                       function = "GetInteger64v"
-               else:
-                       sys.exit(1)
-
-       if returnType == GLint64:
-               print "#if FEATURE_ARB_sync"
-
-       print "void GLAPIENTRY"
-       if indexed:
-               print "_mesa_%s( GLenum pname, GLuint index, %s *params )" % (function, strType)
-       else:
-               print "_mesa_%s( GLenum pname, %s *params )" % (function, strType)
-       print "{"
-       print "   GET_CURRENT_CONTEXT(ctx);"
-       print "   const GLuint version = ctx->VersionMajor * 10 + ctx->VersionMinor;"
-       print "   ASSERT_OUTSIDE_BEGIN_END(ctx);"
-       print "   (void) version;"
-       print ""
-       print "   if (!params)"
-       print "      return;"
-       print ""
-       if indexed == 0:
-               print "   if (ctx->Driver.%s &&" % function
-               print "       ctx->Driver.%s(ctx, pname, params))" % function
-               print "      return;"
-               print ""
-       print "   switch (pname) {"
-
-       for state in stateVars:
-               if indexed:
-                       (name, varType, state, indexMax, dirtyFlags, extensions) = state
-                       optionalCode = 0
-               else:
-                       (name, varType, state, optionalCode, dirtyFlags, extensions) = state
-                       indexMax = 0
-               print "      case " + name + ":"
-
-               # Do extension check
-               if extensions:
-                       if extensions == "30" or extensions == "31" or extensions == "32":
-                               print ('         CHECK_VERSION(%s);' % extensions)
-                       elif len(extensions) == 1:
-                               print ('         CHECK_EXT1(%s);' % extensions[0])
-                       elif len(extensions) == 2:
-                               print ('         CHECK_EXT2(%s, %s);' % (extensions[0], extensions[1]))
-                       elif len(extensions) == 3:
-                               print ('         CHECK_EXT3(%s, %s, %s);' %
-                                          (extensions[0], extensions[1], extensions[2]))
-                       else:
-                               assert len(extensions) == 4
-                               print ('         CHECK_EXT4(%s, %s, %s, %s);' %
-                                          (extensions[0], extensions[1], extensions[2], extensions[3]))
-
-               # Do dirty state check
-               if dirtyFlags:
-                       if dirtyFlags == FlushCurrent:
-                               print ('         FLUSH_CURRENT(ctx, 0);')
-                       else:
-                               print ('         if (ctx->NewState & %s)' % dirtyFlags)
-                               print ('            _mesa_update_state(ctx);')
-
-               # Do index validation for glGet*Indexed() calls
-               if indexMax:
-                       print ('         if (index >= %s) {' % indexMax)
-                       print ('            _mesa_error(ctx, GL_INVALID_VALUE, "gl%s(index=%%u), index", pname);' % function)
-                       print ('            return;')
-                       print ('         }')
-
-               conversion = ConversionFunc(varType, returnType)
-               if optionalCode:
-                       optionalCode = string.replace(optionalCode, "CONVERSION", conversion);  
-                       print "         {"
-                       print "         " + optionalCode
-               n = len(state)
-               for i in range(n):
-                       if conversion:
-                               print "         params[%d] = %s(%s);" % (i, conversion, state[i])
-                       else:
-                               print "         params[%d] = %s;" % (i, state[i])
-               if optionalCode:
-                       print "         }"
-               print "         break;"
-
-       print "      default:"
-       print "         goto invalid_enum_error;"
-       print "   }"
-       print "   return;"
-       print ""
-       print "invalid_enum_error:"
-       print '   _mesa_error(ctx, GL_INVALID_ENUM, "gl%s(pname=0x%%x)", pname);' % function
-       print "}"
-       if returnType == GLint64:
-               print "#endif /* FEATURE_ARB_sync */"
-       print ""
-       return
-
-
-
-def EmitHeader():
-       """Print the get.c file header."""
-       print """
-/***
- ***  NOTE!!!  DO NOT EDIT THIS FILE!!!  IT IS GENERATED BY get_gen.py
- ***/
-
-#include "glheader.h"
-#include "context.h"
-#include "enable.h"
-#include "extensions.h"
-#include "get.h"
-#include "macros.h"
-#include "mtypes.h"
-#include "state.h"
-#include "texcompress.h"
-#include "framebuffer.h"
-
-
-#define FLOAT_TO_BOOLEAN(X)   ( (X) ? GL_TRUE : GL_FALSE )
-
-#define INT_TO_BOOLEAN(I)     ( (I) ? GL_TRUE : GL_FALSE )
-
-#define INT64_TO_BOOLEAN(I)   ( (I) ? GL_TRUE : GL_FALSE )
-#define INT64_TO_INT(I)       ( (GLint)((I > INT_MAX) ? INT_MAX : ((I < INT_MIN) ? INT_MIN : (I))) )
-
-#define BOOLEAN_TO_INT(B)     ( (GLint) (B) )
-#define BOOLEAN_TO_INT64(B)   ( (GLint64) (B) )
-#define BOOLEAN_TO_FLOAT(B)   ( (B) ? 1.0F : 0.0F )
-
-#define ENUM_TO_INT64(E)      ( (GLint64) (E) )
-
-
-/*
- * Check if named extension is enabled, if not generate error and return.
- */
-#define CHECK_EXT1(EXT1)                                               \\
-   if (!ctx->Extensions.EXT1) {                                        \\
-      goto invalid_enum_error;                                         \\
-   }
-
-/*
- * Check if either of two extensions is enabled.
- */
-#define CHECK_EXT2(EXT1, EXT2)                                         \\
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) {               \\
-      goto invalid_enum_error;                                         \\
-   }
-
-/*
- * Check if either of three extensions is enabled.
- */
-#define CHECK_EXT3(EXT1, EXT2, EXT3)                                   \\
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \\
-       !ctx->Extensions.EXT3) {                                        \\
-      goto invalid_enum_error;                                         \\
-   }
-
-/*
- * Check if either of four extensions is enabled.
- */
-#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4)                             \\
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \\
-       !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) {               \\
-      goto invalid_enum_error;                                         \\
-   }
-
-/*
- * Check GL version.
- */
-#define CHECK_VERSION(VERSION)                                         \\
-   if (version < VERSION) {                                            \\
-      goto invalid_enum_error;                                         \\
-   }
-
-"""
-       return
-
-
-
-def EmitGetDoublev():
-       print """
-void GLAPIENTRY
-_mesa_GetDoublev( GLenum pname, GLdouble *params )
-{
-   const GLfloat magic = -1234.5F;
-   GLfloat values[16];
-   GLuint i;
-
-   if (!params)
-      return;
-
-   /* Init temp array to magic numbers so we can figure out how many values
-    * are returned by the GetFloatv() call.
-    */
-   for (i = 0; i < 16; i++)
-      values[i] = magic;
-
-   _mesa_GetFloatv(pname, values);
-   
-   for (i = 0; i < 16 && values[i] != magic; i++)
-      params[i] = (GLdouble) values[i];
-}
-"""
-       
-
-
-
-EmitHeader()
-# XXX Maybe sort the StateVars list
-EmitGetFunction(StateVars, GLboolean, 0)
-EmitGetFunction(StateVars, GLfloat, 0)
-EmitGetFunction(StateVars, GLint, 0)
-EmitGetFunction(StateVars, GLint64, 0)
-EmitGetDoublev()
-
-EmitGetFunction(IndexedStateVars, GLboolean, 1)
-EmitGetFunction(IndexedStateVars, GLint, 1)
-EmitGetFunction(IndexedStateVars, GLint64, 1)
-
diff --git a/src/mesa/main/get_gen_es.py b/src/mesa/main/get_gen_es.py
deleted file mode 100644 (file)
index 5fadfee..0000000
+++ /dev/null
@@ -1,807 +0,0 @@
-#!/usr/bin/env python
-
-# Mesa 3-D graphics library
-#
-# Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
-#
-# Permission is hereby granted, free of charge, to any person obtaining a
-# copy of this software and associated documentation files (the "Software"),
-# to deal in the Software without restriction, including without limitation
-# the rights to use, copy, modify, merge, publish, distribute, sublicense,
-# and/or sell copies of the Software, and to permit persons to whom the
-# Software is furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included
-# in all copies or substantial portions of the Software.
-#
-# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
-# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
-# BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-
-# This script is used to generate the get.c file:
-# python get_gen.py > get.c
-
-
-import string
-import sys
-
-
-GLint = 1
-GLenum = 2
-GLfloat = 3
-GLdouble = 4
-GLboolean = 5
-GLfloatN = 6    # A normalized value, such as a color or depth range
-GLfixed = 7
-
-
-TypeStrings = {
-       GLint : "GLint",
-       GLenum : "GLenum",
-       GLfloat : "GLfloat",
-       GLdouble : "GLdouble",
-       GLboolean : "GLboolean",
-       GLfixed : "GLfixed"
-}
-
-
-# Each entry is a tuple of:
-#  - the GL state name, such as GL_CURRENT_COLOR
-#  - the state datatype, one of GLint, GLfloat, GLboolean or GLenum
-#  - list of code fragments to get the state, such as ["ctx->Foo.Bar"]
-#  - optional extra code or empty string
-#  - optional extensions to check, or None
-#
-
-# Present in ES 1.x and 2.x:
-StateVars_common = [
-       ( "GL_ALPHA_BITS", GLint, ["ctx->DrawBuffer->Visual.alphaBits"],
-         "", None ),
-       ( "GL_BLEND", GLboolean, ["ctx->Color.BlendEnabled"], "", None ),
-       ( "GL_BLEND_SRC", GLenum, ["ctx->Color.BlendSrcRGB"], "", None ),
-       ( "GL_BLUE_BITS", GLint, ["ctx->DrawBuffer->Visual.blueBits"], "", None ),
-       ( "GL_COLOR_CLEAR_VALUE", GLfloatN,
-         [ "ctx->Color.ClearColor[0]",
-               "ctx->Color.ClearColor[1]",
-               "ctx->Color.ClearColor[2]",
-               "ctx->Color.ClearColor[3]" ], "", None ),
-       ( "GL_COLOR_WRITEMASK", GLint,
-         [ "ctx->Color.ColorMask[RCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[GCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[BCOMP] ? 1 : 0",
-               "ctx->Color.ColorMask[ACOMP] ? 1 : 0" ], "", None ),
-       ( "GL_CULL_FACE", GLboolean, ["ctx->Polygon.CullFlag"], "", None ),
-       ( "GL_CULL_FACE_MODE", GLenum, ["ctx->Polygon.CullFaceMode"], "", None ),
-       ( "GL_DEPTH_BITS", GLint, ["ctx->DrawBuffer->Visual.depthBits"],
-         "", None ),
-       ( "GL_DEPTH_CLEAR_VALUE", GLfloatN, ["ctx->Depth.Clear"], "", None ),
-       ( "GL_DEPTH_FUNC", GLenum, ["ctx->Depth.Func"], "", None ),
-       ( "GL_DEPTH_RANGE", GLfloatN,
-         [ "ctx->Viewport.Near", "ctx->Viewport.Far" ], "", None ),
-       ( "GL_DEPTH_TEST", GLboolean, ["ctx->Depth.Test"], "", None ),
-       ( "GL_DEPTH_WRITEMASK", GLboolean, ["ctx->Depth.Mask"], "", None ),
-       ( "GL_DITHER", GLboolean, ["ctx->Color.DitherFlag"], "", None ),
-       ( "GL_FRONT_FACE", GLenum, ["ctx->Polygon.FrontFace"], "", None ),
-       ( "GL_GREEN_BITS", GLint, ["ctx->DrawBuffer->Visual.greenBits"],
-         "", None ),
-       ( "GL_LINE_WIDTH", GLfloat, ["ctx->Line.Width"], "", None ),
-       ( "GL_ALIASED_LINE_WIDTH_RANGE", GLfloat,
-         ["ctx->Const.MinLineWidth",
-          "ctx->Const.MaxLineWidth"], "", None ),
-       ( "GL_MAX_ELEMENTS_INDICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", None ),
-       ( "GL_MAX_ELEMENTS_VERTICES", GLint, ["ctx->Const.MaxArrayLockSize"], "", None ),
-
-       ( "GL_MAX_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.MaxTextureLevels - 1)"], "", None ),
-       ( "GL_MAX_VIEWPORT_DIMS", GLint,
-         ["ctx->Const.MaxViewportWidth", "ctx->Const.MaxViewportHeight"],
-         "", None ),
-       ( "GL_PACK_ALIGNMENT", GLint, ["ctx->Pack.Alignment"], "", None ),
-       ( "GL_ALIASED_POINT_SIZE_RANGE", GLfloat,
-         ["ctx->Const.MinPointSize",
-          "ctx->Const.MaxPointSize"], "", None ),
-       ( "GL_POLYGON_OFFSET_FACTOR", GLfloat, ["ctx->Polygon.OffsetFactor "], "", None ),
-       ( "GL_POLYGON_OFFSET_UNITS", GLfloat, ["ctx->Polygon.OffsetUnits "], "", None ),
-       ( "GL_RED_BITS", GLint, ["ctx->DrawBuffer->Visual.redBits"], "", None ),
-       ( "GL_SCISSOR_BOX", GLint,
-         ["ctx->Scissor.X",
-          "ctx->Scissor.Y",
-          "ctx->Scissor.Width",
-          "ctx->Scissor.Height"], "", None ),
-       ( "GL_SCISSOR_TEST", GLboolean, ["ctx->Scissor.Enabled"], "", None ),
-       ( "GL_STENCIL_BITS", GLint, ["ctx->DrawBuffer->Visual.stencilBits"], "", None ),
-       ( "GL_STENCIL_CLEAR_VALUE", GLint, ["ctx->Stencil.Clear"], "", None ),
-       ( "GL_STENCIL_FAIL", GLenum,
-         ["ctx->Stencil.FailFunc[ctx->Stencil.ActiveFace]"], "", None ),
-       ( "GL_STENCIL_FUNC", GLenum,
-         ["ctx->Stencil.Function[ctx->Stencil.ActiveFace]"], "", None ),
-       ( "GL_STENCIL_PASS_DEPTH_FAIL", GLenum,
-         ["ctx->Stencil.ZFailFunc[ctx->Stencil.ActiveFace]"], "", None ),
-       ( "GL_STENCIL_PASS_DEPTH_PASS", GLenum,
-         ["ctx->Stencil.ZPassFunc[ctx->Stencil.ActiveFace]"], "", None ),
-       ( "GL_STENCIL_REF", GLint,
-         ["ctx->Stencil.Ref[ctx->Stencil.ActiveFace]"], "", None ),
-       ( "GL_STENCIL_TEST", GLboolean, ["ctx->Stencil.Enabled"], "", None ),
-       ( "GL_STENCIL_VALUE_MASK", GLint,
-         ["ctx->Stencil.ValueMask[ctx->Stencil.ActiveFace]"], "", None ),
-       ( "GL_STENCIL_WRITEMASK", GLint,
-         ["ctx->Stencil.WriteMask[ctx->Stencil.ActiveFace]"], "", None ),
-       ( "GL_SUBPIXEL_BITS", GLint, ["ctx->Const.SubPixelBits"], "", None ),
-       ( "GL_TEXTURE_BINDING_2D", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_2D_INDEX]->Name"], "", None ),
-       ( "GL_UNPACK_ALIGNMENT", GLint, ["ctx->Unpack.Alignment"], "", None ),
-       ( "GL_VIEWPORT", GLint, [ "ctx->Viewport.X", "ctx->Viewport.Y",
-         "ctx->Viewport.Width", "ctx->Viewport.Height" ], "", None ),
-
-       # GL_ARB_multitexture
-       ( "GL_ACTIVE_TEXTURE_ARB", GLint,
-         [ "GL_TEXTURE0_ARB + ctx->Texture.CurrentUnit"], "", ["ARB_multitexture"] ),
-
-        # Note that all the OES_* extensions require that the Mesa
-        # "struct gl_extensions" include a member with the name of
-        # the extension.  That structure does not yet include OES
-        # extensions (and we're not sure whether it will).  If
-        # it does, all the OES_* extensions below should mark the
-        # dependency.
-
-       # OES_texture_cube_map
-       ( "GL_TEXTURE_BINDING_CUBE_MAP_ARB", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_CUBE_INDEX]->Name"],
-         "", None),
-       ( "GL_MAX_CUBE_MAP_TEXTURE_SIZE_ARB", GLint,
-         ["(1 << (ctx->Const.MaxCubeTextureLevels - 1))"],
-         "", None),
-
-        # OES_blend_subtract
-       ( "GL_BLEND_SRC_RGB_EXT", GLenum, ["ctx->Color.BlendSrcRGB"], "", None),
-       ( "GL_BLEND_DST_RGB_EXT", GLenum, ["ctx->Color.BlendDstRGB"], "", None),
-       ( "GL_BLEND_SRC_ALPHA_EXT", GLenum, ["ctx->Color.BlendSrcA"], "", None),
-       ( "GL_BLEND_DST_ALPHA_EXT", GLenum, ["ctx->Color.BlendDstA"], "", None),
-
-        # GL_BLEND_EQUATION_RGB, which is what we're really after,
-        # is defined identically to GL_BLEND_EQUATION.
-       ( "GL_BLEND_EQUATION", GLenum, ["ctx->Color.BlendEquationRGB "], "", None),
-       ( "GL_BLEND_EQUATION_ALPHA_EXT", GLenum, ["ctx->Color.BlendEquationA "],
-         "", None),
-
-       # GL_ARB_texture_compression */
-#      ( "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", GLint,
-#        ["_mesa_get_compressed_formats(ctx, NULL, GL_FALSE)"],
-#        "", ["ARB_texture_compression"] ),
-#      ( "GL_COMPRESSED_TEXTURE_FORMATS_ARB", GLenum,
-#        [],
-#        """GLint formats[100];
-#         GLuint i, n = _mesa_get_compressed_formats(ctx, formats, GL_FALSE);
-#         ASSERT(n <= 100);
-#         for (i = 0; i < n; i++)
-#            params[i] = ENUM_TO_INT(formats[i]);""",
-#        ["ARB_texture_compression"] ),
-
-       # GL_ARB_multisample
-       ( "GL_SAMPLE_ALPHA_TO_COVERAGE_ARB", GLboolean,
-         ["ctx->Multisample.SampleAlphaToCoverage"], "", ["ARB_multisample"] ),
-       ( "GL_SAMPLE_COVERAGE_ARB", GLboolean,
-         ["ctx->Multisample.SampleCoverage"], "", ["ARB_multisample"] ),
-       ( "GL_SAMPLE_COVERAGE_VALUE_ARB", GLfloat,
-         ["ctx->Multisample.SampleCoverageValue"], "", ["ARB_multisample"] ),
-       ( "GL_SAMPLE_COVERAGE_INVERT_ARB", GLboolean,
-         ["ctx->Multisample.SampleCoverageInvert"], "", ["ARB_multisample"] ),
-       ( "GL_SAMPLE_BUFFERS_ARB", GLint,
-         ["ctx->DrawBuffer->Visual.sampleBuffers"], "", ["ARB_multisample"] ),
-       ( "GL_SAMPLES_ARB", GLint,
-         ["ctx->DrawBuffer->Visual.samples"], "", ["ARB_multisample"] ),
-
-
-       # GL_SGIS_generate_mipmap
-       ( "GL_GENERATE_MIPMAP_HINT_SGIS", GLenum, ["ctx->Hint.GenerateMipmap"],
-         "", ["SGIS_generate_mipmap"] ),
-
-       # GL_ARB_vertex_buffer_object
-       ( "GL_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayBufferObj->Name"], "", ["ARB_vertex_buffer_object"] ),
-       # GL_WEIGHT_ARRAY_BUFFER_BINDING_ARB - not supported
-       ( "GL_ELEMENT_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ElementArrayBufferObj->Name"],
-         "", ["ARB_vertex_buffer_object"] ),
-
-       # GL_OES_read_format
-       ( "GL_IMPLEMENTATION_COLOR_READ_TYPE_OES", GLint,
-         ["_mesa_get_color_read_type(ctx)"], "", ["OES_read_format"] ),
-       ( "GL_IMPLEMENTATION_COLOR_READ_FORMAT_OES", GLint,
-         ["_mesa_get_color_read_format(ctx)"], "", ["OES_read_format"] ),
-
-       # GL_OES_framebuffer_object
-       ( "GL_FRAMEBUFFER_BINDING_EXT", GLint, ["ctx->DrawBuffer->Name"], "",
-         None),
-       ( "GL_RENDERBUFFER_BINDING_EXT", GLint,
-         ["ctx->CurrentRenderbuffer ? ctx->CurrentRenderbuffer->Name : 0"], "",
-         None),
-       ( "GL_MAX_RENDERBUFFER_SIZE_EXT", GLint,
-         ["ctx->Const.MaxRenderbufferSize"], "",
-         None),
-
-       # OpenGL ES 1/2 special:
-       ( "GL_NUM_COMPRESSED_TEXTURE_FORMATS_ARB", GLint,
-         [ "ARRAY_SIZE(compressed_formats)" ],
-         "",
-         None ),
-
-       ("GL_COMPRESSED_TEXTURE_FORMATS_ARB", GLint,
-        [],
-        """
-     int i;
-     for (i = 0; i < ARRAY_SIZE(compressed_formats); i++) {
-        params[i] = compressed_formats[i];
-     }""",
-        None ),
-
-       ( "GL_POLYGON_OFFSET_FILL", GLboolean, ["ctx->Polygon.OffsetFill"], "", None ),
-
-]
-
-# Only present in ES 1.x:
-StateVars_es1 = [
-       ( "GL_MAX_LIGHTS", GLint, ["ctx->Const.MaxLights"], "", None ),
-       ( "GL_LIGHT0", GLboolean, ["ctx->Light.Light[0].Enabled"], "", None ),
-       ( "GL_LIGHT1", GLboolean, ["ctx->Light.Light[1].Enabled"], "", None ),
-       ( "GL_LIGHT2", GLboolean, ["ctx->Light.Light[2].Enabled"], "", None ),
-       ( "GL_LIGHT3", GLboolean, ["ctx->Light.Light[3].Enabled"], "", None ),
-       ( "GL_LIGHT4", GLboolean, ["ctx->Light.Light[4].Enabled"], "", None ),
-       ( "GL_LIGHT5", GLboolean, ["ctx->Light.Light[5].Enabled"], "", None ),
-       ( "GL_LIGHT6", GLboolean, ["ctx->Light.Light[6].Enabled"], "", None ),
-       ( "GL_LIGHT7", GLboolean, ["ctx->Light.Light[7].Enabled"], "", None ),
-       ( "GL_LIGHTING", GLboolean, ["ctx->Light.Enabled"], "", None ),
-       ( "GL_LIGHT_MODEL_AMBIENT", GLfloatN,
-         ["ctx->Light.Model.Ambient[0]",
-          "ctx->Light.Model.Ambient[1]",
-          "ctx->Light.Model.Ambient[2]",
-          "ctx->Light.Model.Ambient[3]"], "", None ),
-       ( "GL_LIGHT_MODEL_TWO_SIDE", GLboolean, ["ctx->Light.Model.TwoSide"], "", None ),
-       ( "GL_ALPHA_TEST", GLboolean, ["ctx->Color.AlphaEnabled"], "", None ),
-       ( "GL_ALPHA_TEST_FUNC", GLenum, ["ctx->Color.AlphaFunc"], "", None ),
-       ( "GL_ALPHA_TEST_REF", GLfloatN, ["ctx->Color.AlphaRef"], "", None ),
-       ( "GL_BLEND_DST", GLenum, ["ctx->Color.BlendDstRGB"], "", None ),
-       ( "GL_MAX_CLIP_PLANES", GLint, ["ctx->Const.MaxClipPlanes"], "", None ),
-       ( "GL_CLIP_PLANE0", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 0) & 1" ], "", None ),
-       ( "GL_CLIP_PLANE1", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 1) & 1" ], "", None ),
-       ( "GL_CLIP_PLANE2", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 2) & 1" ], "", None ),
-       ( "GL_CLIP_PLANE3", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 3) & 1" ], "", None ),
-       ( "GL_CLIP_PLANE4", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 4) & 1" ], "", None ),
-       ( "GL_CLIP_PLANE5", GLboolean,
-         [ "(ctx->Transform.ClipPlanesEnabled >> 5) & 1" ], "", None ),
-       ( "GL_COLOR_MATERIAL", GLboolean,
-         ["ctx->Light.ColorMaterialEnabled"], "", None ),
-       ( "GL_CURRENT_COLOR", GLfloatN,
-         [ "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][0]",
-               "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][1]",
-               "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][2]",
-               "ctx->Current.Attrib[VERT_ATTRIB_COLOR0][3]" ],
-         "FLUSH_CURRENT(ctx, 0);", None ),
-       ( "GL_CURRENT_NORMAL", GLfloatN,
-         [ "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][0]",
-               "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][1]",
-               "ctx->Current.Attrib[VERT_ATTRIB_NORMAL][2]"],
-         "FLUSH_CURRENT(ctx, 0);", None ),
-       ( "GL_CURRENT_TEXTURE_COORDS", GLfloat,
-         ["ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][0]",
-          "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][1]",
-          "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][2]",
-          "ctx->Current.Attrib[VERT_ATTRIB_TEX0 + texUnit][3]"],
-         "const GLuint texUnit = ctx->Texture.CurrentUnit;", None ),
-       ( "GL_DISTANCE_ATTENUATION_EXT", GLfloat,
-         ["ctx->Point.Params[0]",
-          "ctx->Point.Params[1]",
-          "ctx->Point.Params[2]"], "", None ),
-       ( "GL_FOG", GLboolean, ["ctx->Fog.Enabled"], "", None ),
-       ( "GL_FOG_COLOR", GLfloatN,
-         [ "ctx->Fog.Color[0]",
-               "ctx->Fog.Color[1]",
-               "ctx->Fog.Color[2]",
-               "ctx->Fog.Color[3]" ], "", None ),
-       ( "GL_FOG_DENSITY", GLfloat, ["ctx->Fog.Density"], "", None ),
-       ( "GL_FOG_END", GLfloat, ["ctx->Fog.End"], "", None ),
-       ( "GL_FOG_HINT", GLenum, ["ctx->Hint.Fog"], "", None ),
-       ( "GL_FOG_MODE", GLenum, ["ctx->Fog.Mode"], "", None ),
-       ( "GL_FOG_START", GLfloat, ["ctx->Fog.Start"], "", None ),
-       ( "GL_LINE_SMOOTH", GLboolean, ["ctx->Line.SmoothFlag"], "", None ),
-       ( "GL_LINE_SMOOTH_HINT", GLenum, ["ctx->Hint.LineSmooth"], "", None ),
-       ( "GL_LINE_WIDTH_RANGE", GLfloat,
-         ["ctx->Const.MinLineWidthAA",
-          "ctx->Const.MaxLineWidthAA"], "", None ),
-       ( "GL_COLOR_LOGIC_OP", GLboolean, ["ctx->Color.ColorLogicOpEnabled"], "", None ),
-       ( "GL_LOGIC_OP_MODE", GLenum, ["ctx->Color.LogicOp"], "", None ),
-       ( "GL_MATRIX_MODE", GLenum, ["ctx->Transform.MatrixMode"], "", None ),
-
-       ( "GL_MAX_MODELVIEW_STACK_DEPTH", GLint, ["MAX_MODELVIEW_STACK_DEPTH"], "", None ),
-       ( "GL_MAX_PROJECTION_STACK_DEPTH", GLint, ["MAX_PROJECTION_STACK_DEPTH"], "", None ),
-       ( "GL_MAX_TEXTURE_STACK_DEPTH", GLint, ["MAX_TEXTURE_STACK_DEPTH"], "", None ),
-       ( "GL_MODELVIEW_MATRIX", GLfloat,
-         [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-               "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-               "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-               "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         "const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;", None ),
-       ( "GL_MODELVIEW_STACK_DEPTH", GLint, ["ctx->ModelviewMatrixStack.Depth + 1"], "", None ),
-       ( "GL_NORMALIZE", GLboolean, ["ctx->Transform.Normalize"], "", None ),
-       ( "GL_PACK_SKIP_IMAGES_EXT", GLint, ["ctx->Pack.SkipImages"], "", None ),
-       ( "GL_PERSPECTIVE_CORRECTION_HINT", GLenum,
-         ["ctx->Hint.PerspectiveCorrection"], "", None ),
-       ( "GL_POINT_SIZE", GLfloat, ["ctx->Point.Size"], "", None ),
-       ( "GL_POINT_SIZE_RANGE", GLfloat,
-         ["ctx->Const.MinPointSizeAA",
-          "ctx->Const.MaxPointSizeAA"], "", None ),
-       ( "GL_POINT_SMOOTH", GLboolean, ["ctx->Point.SmoothFlag"], "", None ),
-       ( "GL_POINT_SMOOTH_HINT", GLenum, ["ctx->Hint.PointSmooth"], "", None ),
-       ( "GL_POINT_SIZE_MIN_EXT", GLfloat, ["ctx->Point.MinSize"], "", None ),
-       ( "GL_POINT_SIZE_MAX_EXT", GLfloat, ["ctx->Point.MaxSize"], "", None ),
-       ( "GL_POINT_FADE_THRESHOLD_SIZE_EXT", GLfloat,
-         ["ctx->Point.Threshold"], "", None ),
-       ( "GL_PROJECTION_MATRIX", GLfloat,
-         [ "matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-               "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-               "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-               "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         "const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;", None ),
-       ( "GL_PROJECTION_STACK_DEPTH", GLint,
-         ["ctx->ProjectionMatrixStack.Depth + 1"], "", None ),
-       ( "GL_RESCALE_NORMAL", GLboolean,
-         ["ctx->Transform.RescaleNormals"], "", None ),
-       ( "GL_SHADE_MODEL", GLenum, ["ctx->Light.ShadeModel"], "", None ),
-       ( "GL_TEXTURE_2D", GLboolean, ["_mesa_IsEnabled(GL_TEXTURE_2D)"], "", None ),
-       ( "GL_TEXTURE_MATRIX", GLfloat,
-         ["matrix[0]", "matrix[1]", "matrix[2]", "matrix[3]",
-          "matrix[4]", "matrix[5]", "matrix[6]", "matrix[7]",
-          "matrix[8]", "matrix[9]", "matrix[10]", "matrix[11]",
-          "matrix[12]", "matrix[13]", "matrix[14]", "matrix[15]" ],
-         "const GLfloat *matrix = ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;", None ),
-       ( "GL_TEXTURE_STACK_DEPTH", GLint,
-         ["ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Depth + 1"], "", None ),
-       ( "GL_VERTEX_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Vertex.Enabled"], "", None ),
-       ( "GL_VERTEX_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Vertex.Size"], "", None ),
-       ( "GL_VERTEX_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Vertex.Type"], "", None ),
-       ( "GL_VERTEX_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Vertex.Stride"], "", None ),
-       ( "GL_NORMAL_ARRAY", GLenum, ["ctx->Array.ArrayObj->Normal.Enabled"], "", None ),
-       ( "GL_NORMAL_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Normal.Type"], "", None ),
-       ( "GL_NORMAL_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Normal.Stride"], "", None ),
-       ( "GL_COLOR_ARRAY", GLboolean, ["ctx->Array.ArrayObj->Color.Enabled"], "", None ),
-       ( "GL_COLOR_ARRAY_SIZE", GLint, ["ctx->Array.ArrayObj->Color.Size"], "", None ),
-       ( "GL_COLOR_ARRAY_TYPE", GLenum, ["ctx->Array.ArrayObj->Color.Type"], "", None ),
-       ( "GL_COLOR_ARRAY_STRIDE", GLint, ["ctx->Array.ArrayObj->Color.Stride"], "", None ),
-       ( "GL_TEXTURE_COORD_ARRAY", GLboolean,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Enabled"], "", None ),
-       ( "GL_TEXTURE_COORD_ARRAY_SIZE", GLint,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Size"], "", None ),
-       ( "GL_TEXTURE_COORD_ARRAY_TYPE", GLenum,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Type"], "", None ),
-       ( "GL_TEXTURE_COORD_ARRAY_STRIDE", GLint,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].Stride"], "", None ),
-       # GL_ARB_multitexture
-       ( "GL_MAX_TEXTURE_UNITS_ARB", GLint,
-         ["ctx->Const.MaxTextureUnits"], "", ["ARB_multitexture"] ),
-       ( "GL_CLIENT_ACTIVE_TEXTURE_ARB", GLint,
-         ["GL_TEXTURE0_ARB + ctx->Array.ActiveTexture"], "", ["ARB_multitexture"] ),
-        # OES_texture_cube_map
-       ( "GL_TEXTURE_CUBE_MAP_ARB", GLboolean,
-         ["_mesa_IsEnabled(GL_TEXTURE_CUBE_MAP_ARB)"], "", None),
-       ( "GL_TEXTURE_GEN_STR_OES", GLboolean,
-          # S, T, and R are always set at the same time
-         ["((ctx->Texture.Unit[ctx->Texture.CurrentUnit].TexGenEnabled & S_BIT) ? 1 : 0)"], "", None),
-        # ARB_multisample
-       ( "GL_MULTISAMPLE_ARB", GLboolean,
-         ["ctx->Multisample.Enabled"], "", ["ARB_multisample"] ),
-       ( "GL_SAMPLE_ALPHA_TO_ONE_ARB", GLboolean,
-         ["ctx->Multisample.SampleAlphaToOne"], "", ["ARB_multisample"] ),
-
-       ( "GL_VERTEX_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->Vertex.BufferObj->Name"], "", ["ARB_vertex_buffer_object"] ),
-       ( "GL_NORMAL_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->Normal.BufferObj->Name"], "", ["ARB_vertex_buffer_object"] ),
-       ( "GL_COLOR_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->Color.BufferObj->Name"], "", ["ARB_vertex_buffer_object"] ),
-       ( "GL_TEXTURE_COORD_ARRAY_BUFFER_BINDING_ARB", GLint,
-         ["ctx->Array.ArrayObj->TexCoord[ctx->Array.ActiveTexture].BufferObj->Name"],
-         "", ["ARB_vertex_buffer_object"] ),
-
-       # OES_point_sprite
-       ( "GL_POINT_SPRITE_NV", GLboolean, ["ctx->Point.PointSprite"], # == GL_POINT_SPRITE_ARB
-         "", None),
-
-       # GL_ARB_fragment_shader
-       ( "GL_MAX_FRAGMENT_UNIFORM_COMPONENTS_ARB", GLint,
-         ["ctx->Const.FragmentProgram.MaxUniformComponents"], "",
-         ["ARB_fragment_shader"] ),
-
-        # GL_ARB_vertex_shader
-       ( "GL_MAX_VERTEX_UNIFORM_COMPONENTS_ARB", GLint,
-         ["ctx->Const.VertexProgram.MaxUniformComponents"], "",
-         ["ARB_vertex_shader"] ),
-       ( "GL_MAX_VARYING_FLOATS_ARB", GLint,
-         ["ctx->Const.MaxVarying * 4"], "", ["ARB_vertex_shader"] ),
-
-        # OES_matrix_get
-       ( "GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES", GLint, [],
-         """
-      /* See GL_OES_matrix_get */
-      {
-         const GLfloat *matrix = ctx->ModelviewMatrixStack.Top->m;
-         memcpy(params, matrix, 16 * sizeof(GLint));
-      }""",
-         None),
-
-       ( "GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES", GLint, [],
-         """
-      /* See GL_OES_matrix_get */
-      {
-         const GLfloat *matrix = ctx->ProjectionMatrixStack.Top->m;
-         memcpy(params, matrix, 16 * sizeof(GLint));
-      }""",
-         None),
-
-       ( "GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES", GLint, [],
-         """
-      /* See GL_OES_matrix_get */
-      {
-         const GLfloat *matrix =
-            ctx->TextureMatrixStack[ctx->Texture.CurrentUnit].Top->m;
-         memcpy(params, matrix, 16 * sizeof(GLint));
-      }""",
-         None),
-
-        # OES_point_size_array
-       ("GL_POINT_SIZE_ARRAY_OES", GLboolean,
-        ["ctx->Array.ArrayObj->PointSize.Enabled"], "", None),
-       ("GL_POINT_SIZE_ARRAY_TYPE_OES", GLenum,
-      ["ctx->Array.ArrayObj->PointSize.Type"], "", None),
-       ("GL_POINT_SIZE_ARRAY_STRIDE_OES", GLint,
-        ["ctx->Array.ArrayObj->PointSize.Stride"], "", None),
-       ("GL_POINT_SIZE_ARRAY_BUFFER_BINDING_OES", GLint,
-        ["ctx->Array.ArrayObj->PointSize.BufferObj->Name"], "", None),
-
-       # GL_EXT_texture_lod_bias
-       ( "GL_MAX_TEXTURE_LOD_BIAS_EXT", GLfloat,
-         ["ctx->Const.MaxTextureLodBias"], "", ["EXT_texture_lod_bias"]),
-
-       # GL_EXT_texture_filter_anisotropic
-       ( "GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT", GLfloat,
-         ["ctx->Const.MaxTextureMaxAnisotropy"], "", ["EXT_texture_filter_anisotropic"]),
-
-]
-
-# Only present in ES 2.x:
-StateVars_es2 = [
-       # XXX These entries are not spec'ed for GLES 2, but are
-        #     needed for Mesa's GLSL:
-       ( "GL_MAX_LIGHTS", GLint, ["ctx->Const.MaxLights"], "", None ),
-       ( "GL_MAX_CLIP_PLANES", GLint, ["ctx->Const.MaxClipPlanes"], "", None ),
-        ( "GL_MAX_TEXTURE_COORDS_ARB", GLint, # == GL_MAX_TEXTURE_COORDS_NV
-          ["ctx->Const.MaxTextureCoordUnits"], "",
-          ["ARB_fragment_program", "NV_fragment_program"] ),
-       ( "GL_MAX_DRAW_BUFFERS_ARB", GLint,
-         ["ctx->Const.MaxDrawBuffers"], "", ["ARB_draw_buffers"] ),
-       ( "GL_BLEND_COLOR_EXT", GLfloatN,
-         [ "ctx->Color.BlendColor[0]",
-               "ctx->Color.BlendColor[1]",
-               "ctx->Color.BlendColor[2]",
-               "ctx->Color.BlendColor[3]"], "", None ),
-
-        # This is required for GLES2, but also needed for GLSL:
-        ( "GL_MAX_TEXTURE_IMAGE_UNITS_ARB", GLint, # == GL_MAX_TEXTURE_IMAGE_UNI
-          ["ctx->Const.MaxTextureImageUnits"], "",
-          ["ARB_fragment_program", "NV_fragment_program"] ),
-
-       ( "GL_MAX_VERTEX_TEXTURE_IMAGE_UNITS_ARB", GLint,
-         ["ctx->Const.MaxVertexTextureImageUnits"], "", ["ARB_vertex_shader"] ),
-       ( "GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB", GLint,
-         ["MAX_COMBINED_TEXTURE_IMAGE_UNITS"], "", ["ARB_vertex_shader"] ),
-
-       # GL_ARB_shader_objects
-       # Actually, this token isn't part of GL_ARB_shader_objects, but is
-       # close enough for now.
-       ( "GL_CURRENT_PROGRAM", GLint,
-         ["ctx->Shader.CurrentProgram ? ctx->Shader.CurrentProgram->Name : 0"],
-         "", ["ARB_shader_objects"] ),
-
-       # OpenGL 2.0
-       ( "GL_STENCIL_BACK_FUNC", GLenum, ["ctx->Stencil.Function[1]"], "", None ),
-       ( "GL_STENCIL_BACK_VALUE_MASK", GLint, ["ctx->Stencil.ValueMask[1]"], "", None ),
-       ( "GL_STENCIL_BACK_WRITEMASK", GLint, ["ctx->Stencil.WriteMask[1]"], "", None ),
-       ( "GL_STENCIL_BACK_REF", GLint, ["ctx->Stencil.Ref[1]"], "", None ),
-       ( "GL_STENCIL_BACK_FAIL", GLenum, ["ctx->Stencil.FailFunc[1]"], "", None ),
-       ( "GL_STENCIL_BACK_PASS_DEPTH_FAIL", GLenum, ["ctx->Stencil.ZFailFunc[1]"], "", None ),
-       ( "GL_STENCIL_BACK_PASS_DEPTH_PASS", GLenum, ["ctx->Stencil.ZPassFunc[1]"], "", None ),
-
-       ( "GL_MAX_VERTEX_ATTRIBS_ARB", GLint,
-         ["ctx->Const.VertexProgram.MaxAttribs"], "", ["ARB_vertex_program"] ),
-
-        # OES_texture_3D 
-       ( "GL_TEXTURE_BINDING_3D", GLint,
-         ["ctx->Texture.Unit[ctx->Texture.CurrentUnit].CurrentTex[TEXTURE_3D_INDEX]->Name"], "", None),
-       ( "GL_MAX_3D_TEXTURE_SIZE", GLint, ["1 << (ctx->Const.Max3DTextureLevels - 1)"], "", None),
-
-        # OES_standard_derivatives
-       ( "GL_FRAGMENT_SHADER_DERIVATIVE_HINT_ARB", GLenum,
-         ["ctx->Hint.FragmentShaderDerivative"], "", ["ARB_fragment_shader"] ),
-
-       # Unique to ES 2 (not in full GL)
-       ( "GL_MAX_FRAGMENT_UNIFORM_VECTORS", GLint,
-         ["ctx->Const.FragmentProgram.MaxUniformComponents / 4"], "", None),
-       ( "GL_MAX_VARYING_VECTORS", GLint,
-         ["ctx->Const.MaxVarying"], "", None),
-       ( "GL_MAX_VERTEX_UNIFORM_VECTORS", GLint,
-         ["ctx->Const.VertexProgram.MaxUniformComponents / 4"], "", None),
-       ( "GL_SHADER_COMPILER", GLint, ["1"], "", None),
-        # OES_get_program_binary
-       ( "GL_NUM_SHADER_BINARY_FORMATS", GLint, ["0"], "", None),
-       ( "GL_SHADER_BINARY_FORMATS", GLint, [], "", None),
-]
-
-
-
-def ConversionFunc(fromType, toType):
-       """Return the name of the macro to convert between two data types."""
-       if fromType == toType:
-               return ""
-       elif fromType == GLfloat and toType == GLint:
-               return "IROUND"
-       elif fromType == GLfloatN and toType == GLfloat:
-               return ""
-       elif fromType == GLint and toType == GLfloat: # but not GLfloatN!
-               return "(GLfloat)"
-       else:
-               if fromType == GLfloatN:
-                       fromType = GLfloat
-               fromStr = TypeStrings[fromType]
-               fromStr = string.upper(fromStr[2:])
-               toStr = TypeStrings[toType]
-               toStr = string.upper(toStr[2:])
-               return fromStr + "_TO_" + toStr
-
-
-def EmitGetFunction(stateVars, returnType, API):
-       """Emit the code to implement glGetBooleanv, glGetIntegerv or glGetFloatv."""
-       assert (returnType == GLboolean or
-                       returnType == GLint or
-                       returnType == GLfloat or
-                       returnType == GLfixed)
-
-       strType = TypeStrings[returnType]
-       # Capitalize first letter of return type
-       if returnType == GLint:
-               function = "_es%d_GetIntegerv" % API
-       elif returnType == GLboolean:
-               function = "_es%d_GetBooleanv" % API
-       elif returnType == GLfloat:
-               function = "_es%d_GetFloatv" % API
-       elif returnType == GLfixed:
-               function = "_es%d_GetFixedv" % API
-       else:
-               abort()
-
-       print "void GLAPIENTRY"
-       print "%s( GLenum pname, %s *params )" % (function, strType)
-       print "{"
-       print "   GET_CURRENT_CONTEXT(ctx);"
-       print "   ASSERT_OUTSIDE_BEGIN_END(ctx);"
-       print ""
-       print "   if (!params)"
-       print "      return;"
-       print ""
-       print "   if (ctx->NewState)"
-       print "      _mesa_update_state(ctx);"
-       print ""
-       print "   switch (pname) {"
-
-       for (name, varType, state, optionalCode, extensions) in stateVars:
-               print "      case " + name + ":"
-               if extensions:
-                       if len(extensions) == 1:
-                               print ('         CHECK_EXT1(%s, "%s");' %
-                                          (extensions[0], function))
-                       elif len(extensions) == 2:
-                               print ('         CHECK_EXT2(%s, %s, "%s");' %
-                                          (extensions[0], extensions[1], function))
-                       elif len(extensions) == 3:
-                               print ('         CHECK_EXT3(%s, %s, %s, "%s");' %
-                                          (extensions[0], extensions[1], extensions[2], function))
-                       else:
-                               assert len(extensions) == 4
-                               print ('         CHECK_EXT4(%s, %s, %s, %s, "%s");' %
-                                          (extensions[0], extensions[1], extensions[2], extensions[3], function))
-               if optionalCode:
-                       print "         {"
-                       print "         " + optionalCode
-               conversion = ConversionFunc(varType, returnType)
-               n = len(state)
-               for i in range(n):
-                       if conversion:
-                               print "         params[%d] = %s(%s);" % (i, conversion, state[i])
-                       else:
-                               print "         params[%d] = %s;" % (i, state[i])
-               if optionalCode:
-                       print "         }"
-               print "         break;"
-
-       print "      default:"
-       print '         _mesa_error(ctx, GL_INVALID_ENUM, "gl%s(pname=0x%%x)", pname);' % function
-       print "   }"
-       print "}"
-       print ""
-       return
-
-
-
-def EmitHeader():
-       """Print the get.c file header."""
-       print """
-/***
- ***  NOTE!!!  DO NOT EDIT THIS FILE!!!  IT IS GENERATED BY get_gen.py
- ***/
-
-#include "main/glheader.h"
-#include "main/context.h"
-#include "main/enable.h"
-#include "main/extensions.h"
-#include "main/fbobject.h"
-#include "main/get.h"
-#include "main/macros.h"
-#include "main/mtypes.h"
-#include "main/state.h"
-#include "main/texcompress.h"
-#include "main/framebuffer.h"
-
-
-/* ES1 tokens that should be in gl.h but aren't */
-#define GL_MAX_ELEMENTS_INDICES             0x80E9
-#define GL_MAX_ELEMENTS_VERTICES            0x80E8
-
-
-/* ES2 special tokens */
-#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
-#define GL_MAX_VARYING_VECTORS              0x8DFC
-#define GL_MAX_VARYING_VECTORS              0x8DFC
-#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
-#define GL_SHADER_COMPILER                  0x8DFA
-#define GL_PLATFORM_BINARY                  0x8D63
-#define GL_SHADER_BINARY_FORMATS            0x8DF8
-#define GL_NUM_SHADER_BINARY_FORMATS        0x8DF9
-
-
-#ifndef GL_OES_matrix_get
-#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES               0x898D
-#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES              0x898E
-#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES                 0x898F
-#endif
-
-#ifndef GL_OES_compressed_paletted_texture
-#define GL_PALETTE4_RGB8_OES                                    0x8B90
-#define GL_PALETTE4_RGBA8_OES                                   0x8B91
-#define GL_PALETTE4_R5_G6_B5_OES                                0x8B92
-#define GL_PALETTE4_RGBA4_OES                                   0x8B93
-#define GL_PALETTE4_RGB5_A1_OES                                 0x8B94
-#define GL_PALETTE8_RGB8_OES                                    0x8B95
-#define GL_PALETTE8_RGBA8_OES                                   0x8B96
-#define GL_PALETTE8_R5_G6_B5_OES                                0x8B97
-#define GL_PALETTE8_RGBA4_OES                                   0x8B98
-#define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
-#endif
-
-/* GL_OES_texture_cube_map */
-#ifndef GL_OES_texture_cube_map
-#define GL_TEXTURE_GEN_STR_OES                                  0x8D60
-#endif
-
-#define FLOAT_TO_BOOLEAN(X)   ( (X) ? GL_TRUE : GL_FALSE )
-#define FLOAT_TO_FIXED(F)     ( ((F) * 65536.0f > INT_MAX) ? INT_MAX : \\
-                                ((F) * 65536.0f < INT_MIN) ? INT_MIN : \\
-                                (GLint) ((F) * 65536.0f) )
-
-#define INT_TO_BOOLEAN(I)     ( (I) ? GL_TRUE : GL_FALSE )
-#define INT_TO_FIXED(I)       ( ((I) > SHRT_MAX) ? INT_MAX : \\
-                                ((I) < SHRT_MIN) ? INT_MIN : \\
-                                (GLint) ((I) * 65536) )
-
-#define BOOLEAN_TO_INT(B)     ( (GLint) (B) )
-#define BOOLEAN_TO_FLOAT(B)   ( (B) ? 1.0F : 0.0F )
-#define BOOLEAN_TO_FIXED(B)   ( (GLint) ((B) ? 1 : 0) << 16 )
-
-#define ENUM_TO_FIXED(E)      (E)
-
-
-/*
- * Check if named extension is enabled, if not generate error and return.
- */
-#define CHECK_EXT1(EXT1, FUNC)                                         \\
-   if (!ctx->Extensions.EXT1) {                                        \\
-      _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \\
-      return;                                                          \\
-   }
-
-/*
- * Check if either of two extensions is enabled.
- */
-#define CHECK_EXT2(EXT1, EXT2, FUNC)                                   \\
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2) {               \\
-      _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \\
-      return;                                                          \\
-   }
-
-/*
- * Check if either of three extensions is enabled.
- */
-#define CHECK_EXT3(EXT1, EXT2, EXT3, FUNC)                             \\
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \\
-       !ctx->Extensions.EXT3) {                                        \\
-      _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \\
-      return;                                                          \\
-   }
-
-/*
- * Check if either of four extensions is enabled.
- */
-#define CHECK_EXT4(EXT1, EXT2, EXT3, EXT4, FUNC)                       \\
-   if (!ctx->Extensions.EXT1 && !ctx->Extensions.EXT2 &&               \\
-       !ctx->Extensions.EXT3 && !ctx->Extensions.EXT4) {               \\
-      _mesa_error(ctx, GL_INVALID_ENUM, FUNC "(0x%x)", (int) pname);  \\
-      return;                                                          \\
-   }
-
-
-
-/**
- * List of compressed texture formats supported by ES.
- */
-static GLenum compressed_formats[] = {
-   GL_PALETTE4_RGB8_OES,
-   GL_PALETTE4_RGBA8_OES,
-   GL_PALETTE4_R5_G6_B5_OES,
-   GL_PALETTE4_RGBA4_OES,
-   GL_PALETTE4_RGB5_A1_OES,
-   GL_PALETTE8_RGB8_OES,
-   GL_PALETTE8_RGBA8_OES,
-   GL_PALETTE8_R5_G6_B5_OES,
-   GL_PALETTE8_RGBA4_OES,
-   GL_PALETTE8_RGB5_A1_OES
-};
-
-#define ARRAY_SIZE(A)  (sizeof(A) / sizeof(A[0]))
-
-"""
-       return
-
-
-def EmitAll(stateVars, API):
-       EmitHeader()
-       EmitGetFunction(stateVars, GLboolean, API)
-       EmitGetFunction(stateVars, GLfloat, API)
-       EmitGetFunction(stateVars, GLint, API)
-       if API == 1:
-               EmitGetFunction(stateVars, GLfixed, API)
-
-
-def main(args):
-       # Determine whether to generate ES1 or ES2 queries
-       if len(args) > 1 and args[1] == "1":
-               API = 1
-       elif len(args) > 1 and args[1] == "2":
-               API = 2
-       else:
-               API = 1
-       #print "len args = %d  API = %d" % (len(args), API)
-
-       if API == 1:
-               vars = StateVars_common + StateVars_es1
-       else:
-               vars = StateVars_common + StateVars_es2
-
-       EmitAll(vars, API)
-
-
-main(sys.argv)
index e3a60fa6eb568047255ba01c65422386907d93cb..54db5794bf64becfa16a20d56d8b256ba8a982f3 100644 (file)
@@ -172,10 +172,6 @@ _mesa_GetPointerv( GLenum pname, GLvoid **params )
    if (MESA_VERBOSE & VERBOSE_API)
       _mesa_debug(ctx, "glGetPointerv %s\n", _mesa_lookup_enum_by_nr(pname));
 
-   if (ctx->Driver.GetPointerv
-       && (*ctx->Driver.GetPointerv)(ctx, pname, params))
-      return;
-
    switch (pname) {
       case GL_VERTEX_ARRAY_POINTER:
          *params = (GLvoid *) ctx->Array.ArrayObj->Vertex.Ptr;
index 5b8e2f2d8112fe3c4b14a8fd73a98ca1ab67d1ff..a4044ff5cba053446a1eaa871573a403cbc71500 100644 (file)
@@ -107,6 +107,21 @@ typedef void *GLeglImageOES;
 #define GL_PALETTE8_RGB5_A1_OES                                 0x8B99
 #endif
 
+#ifndef GL_OES_matrix_get
+#define GL_MODELVIEW_MATRIX_FLOAT_AS_INT_BITS_OES               0x898D
+#define GL_PROJECTION_MATRIX_FLOAT_AS_INT_BITS_OES              0x898E
+#define GL_TEXTURE_MATRIX_FLOAT_AS_INT_BITS_OES                 0x898F
+#endif
+
+#ifndef GL_ES_VERSION_2_0
+#define GL_SHADER_BINARY_FORMATS            0x8DF8
+#define GL_NUM_SHADER_BINARY_FORMATS        0x8DF9
+#define GL_SHADER_COMPILER                  0x8DFA
+#define GL_MAX_VERTEX_UNIFORM_VECTORS       0x8DFB
+#define GL_MAX_VARYING_VECTORS              0x8DFC
+#define GL_MAX_FRAGMENT_UNIFORM_VECTORS     0x8DFD
+#endif
+
 /**
  * Special, internal token
  */
index b1389b25f2a4111b8826d39fa629f01db0c8fecf..25080db40c43f3b1ad8af3018b9c1ba2c7c05104 100644 (file)
@@ -243,41 +243,6 @@ _mesa_memset16( unsigned short *dst, unsigned short val, size_t n )
 /** \name Math */
 /*@{*/
 
-/** Wrapper around sin() */
-double
-_mesa_sin(double a)
-{
-   return sin(a);
-}
-
-/** Single precision wrapper around sin() */
-float
-_mesa_sinf(float a)
-{
-   return (float) sin((double) a);
-}
-
-/** Wrapper around cos() */
-double
-_mesa_cos(double a)
-{
-   return cos(a);
-}
-
-/** Single precision wrapper around asin() */
-float
-_mesa_asinf(float x)
-{
-   return (float) asin((double) x);
-}
-
-/** Single precision wrapper around atan() */
-float
-_mesa_atanf(float x)
-{
-   return (float) atan((double) x);
-}
-
 /** Wrapper around sqrt() */
 double
 _mesa_sqrtd(double x)
@@ -486,15 +451,6 @@ _mesa_inv_sqrtf(float n)
 #endif
 }
 
-
-/** Wrapper around pow() */
-double
-_mesa_pow(double x, double y)
-{
-   return pow(x, y);
-}
-
-
 /**
  * Find the first bit set in a word.
  */
index 1c263aabca106133aca11124e537a01ecdd39891..da825a095ea586dc977cc5272f8fe3e3c84ad080 100644 (file)
@@ -521,21 +521,6 @@ _mesa_realloc( void *oldBuffer, size_t oldSize, size_t newSize );
 extern void
 _mesa_memset16( unsigned short *dst, unsigned short val, size_t n );
 
-extern double
-_mesa_sin(double a);
-
-extern float
-_mesa_sinf(float a);
-
-extern double
-_mesa_cos(double a);
-
-extern float
-_mesa_asinf(float x);
-
-extern float
-_mesa_atanf(float x);
-
 extern double
 _mesa_sqrtd(double x);
 
@@ -548,9 +533,6 @@ _mesa_inv_sqrtf(float x);
 extern void
 _mesa_init_sqrt_table(void);
 
-extern double
-_mesa_pow(double x, double y);
-
 extern int
 _mesa_ffs(int32_t i);
 
index 19dc96892d23d57eeeebe5f38b9a3d4ea61b5eab..5b87b8c8acb374e99f2862278d23663beb9d038f 100644 (file)
@@ -162,7 +162,7 @@ _mesa_light(GLcontext *ctx, GLuint lnum, GLenum pname, const GLfloat *params)
          return;
       FLUSH_VERTICES(ctx, _NEW_LIGHT);
       light->SpotCutoff = params[0];
-      light->_CosCutoffNeg = (GLfloat) (_mesa_cos(light->SpotCutoff * DEG2RAD));
+      light->_CosCutoffNeg = (GLfloat) (cos(light->SpotCutoff * DEG2RAD));
       if (light->_CosCutoffNeg < 0)
          light->_CosCutoff = 0;
       else
@@ -950,7 +950,7 @@ validate_spot_exp_table( struct gl_light *l )
 
    for (i = EXP_TABLE_SIZE - 1; i > 0 ;i--) {
       if (clamp == 0) {
-        tmp = _mesa_pow(i / (GLdouble) (EXP_TABLE_SIZE - 1), exponent);
+        tmp = pow(i / (GLdouble) (EXP_TABLE_SIZE - 1), exponent);
         if (tmp < FLT_MIN * 100.0) {
            tmp = 0.0;
            clamp = 1;
@@ -1012,7 +1012,7 @@ validate_shine_table( GLcontext *ctx, GLuint side, GLfloat shininess )
             GLdouble t, x = j / (GLfloat) (SHINE_TABLE_SIZE - 1);
             if (x < 0.005) /* underflow check */
                x = 0.005;
-            t = _mesa_pow(x, shininess);
+            t = pow(x, shininess);
            if (t > 1e-20)
               m[j] = (GLfloat) t;
            else
index 9c1a5eefadd9012a07febf0b6399a4f957eafcd8..b3436114d40dbb7600cd46944cae6423526040ab 100644 (file)
@@ -94,7 +94,7 @@ do {                                                                  \
    int k = (int) f;                                                    \
    if (k < 0 /* gcc may cast an overflow float value to negative int value*/ \
        || k > SHINE_TABLE_SIZE-2)                                      \
-      result = (GLfloat) _mesa_pow( dp, _tab->shininess );             \
+      result = (GLfloat) pow( dp, _tab->shininess );           \
    else                                                                        \
       result = _tab->tab[k] + (f-k)*(_tab->tab[k+1]-_tab->tab[k]);     \
 } while (0)
index a8624574de4e031a26f9f409cd1bd7c5ec1fb348..40e17e53d6ce1f2bf383f39836609d2eb47e5ec1 100644 (file)
@@ -127,6 +127,9 @@ extern GLfloat _mesa_ubyte_to_float_color_tab[256];
 #define CLAMPED_FLOAT_TO_USHORT(us, f)  \
         us = ( (GLushort) IROUND( (f) * 65535.0F) )
 
+#define UNCLAMPED_FLOAT_TO_SHORT(s, f)  \
+        s = ( (GLshort) IROUND( CLAMP((f), -1.0F, 1.0F) * 32767.0F) )
+
 /*@}*/
 
 
index 9640b79ea7f128afe9568b57a69ef83c8be19b85..c34d9bac4a05433b1514d5a4a38c1cd934938725 100644 (file)
@@ -2034,24 +2034,46 @@ struct gl_shader_state
 
 
 /**
- * Context state for transform feedback.
+ * Transform feedback object state
  */
-struct gl_transform_feedback
+struct gl_transform_feedback_object
 {
+   GLuint Name;  /**< AKA the object ID */
+   GLint RefCount;
    GLboolean Active;  /**< Is transform feedback enabled? */
-   GLenum Mode;       /**< GL_POINTS, GL_LINES or GL_TRIANGLES */
+   GLboolean Paused;  /**< Is transform feedback paused? */
+
+   /** The feedback buffers */
+   GLuint BufferNames[MAX_FEEDBACK_ATTRIBS];
+   struct gl_buffer_object *Buffers[MAX_FEEDBACK_ATTRIBS];
+
    /** Start of feedback data in dest buffer */
    GLintptr Offset[MAX_FEEDBACK_ATTRIBS];
    /** Max data to put into dest buffer (in bytes) */
    GLsizeiptr Size[MAX_FEEDBACK_ATTRIBS];
+};
+
+
+/**
+ * Context state for transform feedback.
+ */
+struct gl_transform_feedback
+{
+   GLenum Mode;       /**< GL_POINTS, GL_LINES or GL_TRIANGLES */
+
    GLboolean RasterDiscard;  /**< GL_RASTERIZER_DISCARD */
 
    /** The general binding point (GL_TRANSFORM_FEEDBACK_BUFFER) */
    struct gl_buffer_object *CurrentBuffer;
 
-   /** The feedback buffers */
-   GLuint BufferNames[MAX_FEEDBACK_ATTRIBS];
-   struct gl_buffer_object *Buffers[MAX_FEEDBACK_ATTRIBS];
+   /** The table of all transform feedback objects */
+   struct _mesa_HashTable *Objects;
+
+   /** The current xform-fb object (GL_TRANSFORM_FEEDBACK_BINDING) */
+   struct gl_transform_feedback_object *CurrentObject;
+
+   /** The default xform-fb object (Name==0) */
+   struct gl_transform_feedback_object *DefaultObject;
 };
 
 
@@ -2480,6 +2502,7 @@ struct gl_extensions
    GLboolean ARB_texture_float;
    GLboolean ARB_texture_mirrored_repeat;
    GLboolean ARB_texture_non_power_of_two;
+   GLboolean ARB_transform_feedback2;
    GLboolean ARB_transpose_matrix;
    GLboolean ARB_vertex_array_object;
    GLboolean ARB_vertex_buffer_object;
@@ -2876,7 +2899,7 @@ struct gl_dlist_state
 typedef enum {
    API_OPENGL,
    API_OPENGLES,
-   API_OPENGLES2,
+   API_OPENGLES2
 } gl_api;
 
 /**
index 82b6fe7ab9f69dfe7dab2cbd07fc8af33daa8d54..a0969f6b9ffe6a281067d67f7ab9dd2245a2be46 100644 (file)
@@ -69,6 +69,21 @@ fpclassify(double x)
             return FP_NAN;
     }
 }
+
+#elif defined(__APPLE__) || defined(__CYGWIN__) || defined(__FreeBSD__) || \
+     defined(__DragonFly__) || (defined(__sun) && defined(__C99FEATURES__))
+
+/* fpclassify is available. */
+
+#elif !defined(_XOPEN_SOURCE) || _XOPEN_SOURCE < 600
+
+enum {FP_NAN, FP_INFINITE, FP_ZERO, FP_SUBNORMAL, FP_NORMAL}
+fpclassify(double x)
+{
+   /* XXX do something better someday */
+   return FP_NORMAL;
+}
+
 #endif
 
 extern GLbitfield GL_APIENTRY _es_QueryMatrixxOES(GLfixed mantissa[16], GLint exponent[16]);
index ba8b5dd0029e8ba3231ff98a1da3ad11d3338c6a..b044c0d5d49952094fe9102be7998b528bc73293 100644 (file)
@@ -80,6 +80,12 @@ _mesa_init_queryobj_dispatch(struct _glapi_table *disp);
 
 #define _MESA_INIT_QUERYOBJ_FUNCTIONS(driver, impl) do { } while (0)
 
+static INLINE struct gl_query_object *
+_mesa_lookup_query_object(GLcontext *ctx, GLuint id)
+{
+   return NULL;
+}
+
 static INLINE void
 _mesa_init_query_object_functions(struct dd_function_table *driver)
 {
diff --git a/src/mesa/main/rbadaptors.c b/src/mesa/main/rbadaptors.c
deleted file mode 100644 (file)
index 1060c57..0000000
+++ /dev/null
@@ -1,565 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5.3
- *
- * Copyright (C) 1999-2007  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-/**
- * Renderbuffer adaptors.
- * These fuctions are used to convert rendering from core Mesa's GLchan
- * colors to 8 or 16-bit color channels in RGBA renderbuffers.
- * This means Mesa can be compiled for 16 or 32-bit color processing
- * and still render into 8 and 16-bit/channel renderbuffers.
- */
-
-
-#include "glheader.h"
-#include "mtypes.h"
-#include "colormac.h"
-#include "renderbuffer.h"
-#include "rbadaptors.h"
-
-
-static void
-Delete_wrapper(struct gl_renderbuffer *rb)
-{
-   /* Decrement reference count on the buffer we're wrapping and delete
-    * it if refcount hits zero.
-    */
-   _mesa_reference_renderbuffer(&rb->Wrapped, NULL);
-
-   /* delete myself */
-   _mesa_delete_renderbuffer(rb);
-}
-
-
-static GLboolean
-AllocStorage_wrapper(GLcontext *ctx, struct gl_renderbuffer *rb,
-                     GLenum internalFormat, GLuint width, GLuint height)
-{
-   GLboolean b = rb->Wrapped->AllocStorage(ctx, rb->Wrapped, internalFormat,
-                                           width, height);
-   if (b) {
-      rb->Width = width;
-      rb->Height = height;
-   }
-   return b;
-}
-
-
-static void *
-GetPointer_wrapper(GLcontext *ctx, struct gl_renderbuffer *rb,
-                   GLint x, GLint y)
-{
-   (void) ctx;
-   (void) rb;
-   (void) x;
-   (void) y;
-   return NULL;
-}
-
-
-static void
-GetRow_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-               GLint x, GLint y, void *values)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLushort *values16 = (GLushort *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   ASSERT(count <= MAX_WIDTH);
-
-   /* get 8bpp values */
-   rb->Wrapped->GetRow(ctx, rb->Wrapped, count, x, y, values8);
-
-   /* convert 8bpp to 16bpp */
-   for (i = 0; i < 4 * count; i++) {
-      values16[i] = (values8[i] << 8) | values8[i];
-   }
-}
-
-
-static void
-GetValues_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                  const GLint x[], const GLint y[], void *values)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLushort *values16 = (GLushort *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-
-   rb->Wrapped->GetValues(ctx, rb->Wrapped, count, x, y, values8);
-
-   for (i = 0; i < 4 * count; i++) {
-      values16[i] = (values8[i] << 8) | values8[i];
-   }
-}
-
-
-static void
-PutRow_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-               GLint x, GLint y, const void *values, const GLubyte *mask)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLushort *values16 = (GLushort *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   for (i = 0; i < 4 * count; i++) {
-      values8[i] = values16[i] >> 8;
-   }
-   rb->Wrapped->PutRow(ctx, rb->Wrapped, count, x, y, values8, mask);
-}
-
-
-static void
-PutRowRGB_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                  GLint x, GLint y, const void *values, const GLubyte *mask)
-{
-   GLubyte values8[MAX_WIDTH * 3];
-   GLushort *values16 = (GLushort *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   for (i = 0; i < 3 * count; i++) {
-      values8[i] = values16[i] >> 8;
-   }
-   rb->Wrapped->PutRowRGB(ctx, rb->Wrapped, count, x, y, values8, mask);
-}
-
-
-static void
-PutMonoRow_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                   GLint x, GLint y, const void *value, const GLubyte *mask)
-{
-   GLubyte value8[4];
-   GLushort *value16 = (GLushort *) value;
-   ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   value8[0] = value16[0] >> 8;
-   value8[1] = value16[1] >> 8;
-   value8[2] = value16[2] >> 8;
-   value8[3] = value16[3] >> 8;
-   rb->Wrapped->PutMonoRow(ctx, rb->Wrapped, count, x, y, value8, mask);
-}
-
-
-static void
-PutValues_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                  const GLint x[], const GLint y[], const void *values,
-                  const GLubyte *mask)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLushort *values16 = (GLushort *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   for (i = 0; i < 4 * count; i++) {
-      values8[i] = values16[i] >> 8;
-   }
-   rb->Wrapped->PutValues(ctx, rb->Wrapped, count, x, y, values8, mask);
-}
-
-
-static void
-PutMonoValues_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb,
-                      GLuint count, const GLint x[], const GLint y[],
-                      const void *value, const GLubyte *mask)
-{
-   GLubyte value8[4];
-   GLushort *value16 = (GLushort *) value;
-   ASSERT(rb->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   value8[0] = value16[0] >> 8;
-   value8[1] = value16[1] >> 8;
-   value8[2] = value16[2] >> 8;
-   value8[3] = value16[3] >> 8;
-   rb->Wrapped->PutMonoValues(ctx, rb->Wrapped, count, x, y, value8, mask);
-}
-
-
-/**
- * Wrap an 8-bit/channel renderbuffer with a 16-bit/channel
- * renderbuffer adaptor.
- */
-struct gl_renderbuffer *
-_mesa_new_renderbuffer_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb8)
-{
-   struct gl_renderbuffer *rb16;
-
-   rb16 = _mesa_new_renderbuffer(ctx, rb8->Name);
-   if (rb16) {
-      ASSERT(rb8->DataType == GL_UNSIGNED_BYTE);
-      ASSERT(rb8->_BaseFormat == GL_RGBA);
-
-      _glthread_LOCK_MUTEX(rb8->Mutex);
-      rb8->RefCount++;
-      _glthread_UNLOCK_MUTEX(rb8->Mutex);
-
-      rb16->InternalFormat = rb8->InternalFormat;
-      rb16->Format = rb8->Format; /* XXX is this right? */
-      rb16->_BaseFormat = rb8->_BaseFormat;
-      rb16->DataType = GL_UNSIGNED_SHORT;
-      /* Note: passing through underlying bits/channel */
-      rb16->Wrapped = rb8;
-
-      rb16->AllocStorage = AllocStorage_wrapper;
-      rb16->Delete = Delete_wrapper;
-      rb16->GetPointer = GetPointer_wrapper;
-      rb16->GetRow = GetRow_16wrap8;
-      rb16->GetValues = GetValues_16wrap8;
-      rb16->PutRow = PutRow_16wrap8;
-      rb16->PutRowRGB = PutRowRGB_16wrap8;
-      rb16->PutMonoRow = PutMonoRow_16wrap8;
-      rb16->PutValues = PutValues_16wrap8;
-      rb16->PutMonoValues = PutMonoValues_16wrap8;
-   }
-   return rb16;
-}
-
-
-
-
-static void
-GetRow_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-               GLint x, GLint y, void *values)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   ASSERT(count <= MAX_WIDTH);
-
-   /* get 8bpp values */
-   rb->Wrapped->GetRow(ctx, rb->Wrapped, count, x, y, values8);
-
-   /* convert 8bpp to 32bpp */
-   for (i = 0; i < 4 * count; i++) {
-      values32[i] = UBYTE_TO_FLOAT(values8[i]);
-   }
-}
-
-
-static void
-GetValues_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                  const GLint x[], const GLint y[], void *values)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-
-   rb->Wrapped->GetValues(ctx, rb->Wrapped, count, x, y, values8);
-
-   for (i = 0; i < 4 * count; i++) {
-      values32[i] = UBYTE_TO_FLOAT(values8[i]);
-   }
-}
-
-
-static void
-PutRow_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-               GLint x, GLint y, const void *values, const GLubyte *mask)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   for (i = 0; i < 4 * count; i++) {
-      UNCLAMPED_FLOAT_TO_UBYTE(values8[i], values32[i]);
-   }
-   rb->Wrapped->PutRow(ctx, rb->Wrapped, count, x, y, values8, mask);
-}
-
-
-static void
-PutRowRGB_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                  GLint x, GLint y, const void *values, const GLubyte *mask)
-{
-   GLubyte values8[MAX_WIDTH * 3];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   for (i = 0; i < 3 * count; i++) {
-      UNCLAMPED_FLOAT_TO_UBYTE(values8[i], values32[i]);
-   }
-   rb->Wrapped->PutRowRGB(ctx, rb->Wrapped, count, x, y, values8, mask);
-}
-
-
-static void
-PutMonoRow_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                   GLint x, GLint y, const void *value, const GLubyte *mask)
-{
-   GLubyte value8[4];
-   GLfloat *value32 = (GLfloat *) value;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[0], value32[0]);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[1], value32[1]);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[2], value32[2]);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[3], value32[3]);
-   rb->Wrapped->PutMonoRow(ctx, rb->Wrapped, count, x, y, value8, mask);
-}
-
-
-static void
-PutValues_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                  const GLint x[], const GLint y[], const void *values,
-                  const GLubyte *mask)
-{
-   GLubyte values8[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   for (i = 0; i < 4 * count; i++) {
-      UNCLAMPED_FLOAT_TO_UBYTE(values8[i], values32[i]);
-   }
-   rb->Wrapped->PutValues(ctx, rb->Wrapped, count, x, y, values8, mask);
-}
-
-
-static void
-PutMonoValues_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb,
-                      GLuint count, const GLint x[], const GLint y[],
-                      const void *value, const GLubyte *mask)
-{
-   GLubyte value8[4];
-   GLfloat *value32 = (GLfloat *) value;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_BYTE);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[0], value32[0]);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[1], value32[1]);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[2], value32[2]);
-   UNCLAMPED_FLOAT_TO_UBYTE(value8[3], value32[3]);
-   rb->Wrapped->PutMonoValues(ctx, rb->Wrapped, count, x, y, value8, mask);
-}
-
-
-/**
- * Wrap an 8-bit/channel renderbuffer with a 32-bit/channel
- * renderbuffer adaptor.
- */
-struct gl_renderbuffer *
-_mesa_new_renderbuffer_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb8)
-{
-   struct gl_renderbuffer *rb32;
-
-   rb32 = _mesa_new_renderbuffer(ctx, rb8->Name);
-   if (rb32) {
-      ASSERT(rb8->DataType == GL_UNSIGNED_BYTE);
-      ASSERT(rb8->_BaseFormat == GL_RGBA);
-
-      _glthread_LOCK_MUTEX(rb8->Mutex);
-      rb8->RefCount++;
-      _glthread_UNLOCK_MUTEX(rb8->Mutex);
-
-      rb32->InternalFormat = rb8->InternalFormat;
-      rb32->Format = rb8->Format;  /* XXX is this right? */
-      rb32->_BaseFormat = rb8->_BaseFormat;
-      rb32->DataType = GL_FLOAT;
-      /* Note: passing through underlying bits/channel */
-      rb32->Wrapped = rb8;
-
-      rb32->AllocStorage = AllocStorage_wrapper;
-      rb32->Delete = Delete_wrapper;
-      rb32->GetPointer = GetPointer_wrapper;
-      rb32->GetRow = GetRow_32wrap8;
-      rb32->GetValues = GetValues_32wrap8;
-      rb32->PutRow = PutRow_32wrap8;
-      rb32->PutRowRGB = PutRowRGB_32wrap8;
-      rb32->PutMonoRow = PutMonoRow_32wrap8;
-      rb32->PutValues = PutValues_32wrap8;
-      rb32->PutMonoValues = PutMonoValues_32wrap8;
-   }
-   return rb32;
-}
-
-
-
-
-static void
-GetRow_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                GLint x, GLint y, void *values)
-{
-   GLushort values16[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_SHORT);
-   ASSERT(count <= MAX_WIDTH);
-
-   /* get 16bpp values */
-   rb->Wrapped->GetRow(ctx, rb->Wrapped, count, x, y, values16);
-
-   /* convert 16bpp to 32bpp */
-   for (i = 0; i < 4 * count; i++) {
-      values32[i] = USHORT_TO_FLOAT(values16[i]);
-   }
-}
-
-
-static void
-GetValues_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                   const GLint x[], const GLint y[], void *values)
-{
-   GLushort values16[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_SHORT);
-
-   rb->Wrapped->GetValues(ctx, rb->Wrapped, count, x, y, values16);
-
-   for (i = 0; i < 4 * count; i++) {
-      values32[i] = USHORT_TO_FLOAT(values16[i]);
-   }
-}
-
-
-static void
-PutRow_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                GLint x, GLint y, const void *values, const GLubyte *mask)
-{
-   GLushort values16[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_SHORT);
-   for (i = 0; i < 4 * count; i++) {
-      UNCLAMPED_FLOAT_TO_USHORT(values16[i], values32[i]);
-   }
-   rb->Wrapped->PutRow(ctx, rb->Wrapped, count, x, y, values16, mask);
-}
-
-
-static void
-PutRowRGB_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                   GLint x, GLint y, const void *values, const GLubyte *mask)
-{
-   GLushort values16[MAX_WIDTH * 3];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_SHORT);
-   for (i = 0; i < 3 * count; i++) {
-      UNCLAMPED_FLOAT_TO_USHORT(values16[i], values32[i]);
-   }
-   rb->Wrapped->PutRowRGB(ctx, rb->Wrapped, count, x, y, values16, mask);
-}
-
-
-static void
-PutMonoRow_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                    GLint x, GLint y, const void *value, const GLubyte *mask)
-{
-   GLushort value16[4];
-   GLfloat *value32 = (GLfloat *) value;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_SHORT);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[0], value32[0]);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[1], value32[1]);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[2], value32[2]);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[3], value32[3]);
-   rb->Wrapped->PutMonoRow(ctx, rb->Wrapped, count, x, y, value16, mask);
-}
-
-
-static void
-PutValues_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb, GLuint count,
-                   const GLint x[], const GLint y[], const void *values,
-                   const GLubyte *mask)
-{
-   GLushort values16[MAX_WIDTH * 4];
-   GLfloat *values32 = (GLfloat *) values;
-   GLuint i;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_SHORT);
-   for (i = 0; i < 4 * count; i++) {
-      UNCLAMPED_FLOAT_TO_USHORT(values16[i], values32[i]);
-   }
-   rb->Wrapped->PutValues(ctx, rb->Wrapped, count, x, y, values16, mask);
-}
-
-
-static void
-PutMonoValues_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb,
-                       GLuint count, const GLint x[], const GLint y[],
-                       const void *value, const GLubyte *mask)
-{
-   GLushort value16[4];
-   GLfloat *value32 = (GLfloat *) value;
-   ASSERT(rb->DataType == GL_FLOAT);
-   ASSERT(rb->Wrapped->DataType == GL_UNSIGNED_SHORT);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[0], value32[0]);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[1], value32[1]);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[2], value32[2]);
-   UNCLAMPED_FLOAT_TO_USHORT(value16[3], value32[3]);
-   rb->Wrapped->PutMonoValues(ctx, rb->Wrapped, count, x, y, value16, mask);
-}
-
-
-/**
- * Wrap an 16-bit/channel renderbuffer with a 32-bit/channel
- * renderbuffer adaptor.
- */
-struct gl_renderbuffer *
-_mesa_new_renderbuffer_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb16)
-{
-   struct gl_renderbuffer *rb32;
-
-   rb32 = _mesa_new_renderbuffer(ctx, rb16->Name);
-   if (rb32) {
-      ASSERT(rb16->DataType == GL_UNSIGNED_SHORT);
-      ASSERT(rb16->_BaseFormat == GL_RGBA);
-
-      _glthread_LOCK_MUTEX(rb16->Mutex);
-      rb16->RefCount++;
-      _glthread_UNLOCK_MUTEX(rb16->Mutex);
-
-      rb32->InternalFormat = rb16->InternalFormat;
-      rb32->Format = rb16->Format;  /* XXX is this right? */
-      rb32->_BaseFormat = rb16->_BaseFormat;
-      rb32->DataType = GL_FLOAT;
-      /* Note: passing through underlying bits/channel */
-      rb32->Wrapped = rb16;
-
-      rb32->AllocStorage = AllocStorage_wrapper;
-      rb32->Delete = Delete_wrapper;
-      rb32->GetPointer = GetPointer_wrapper;
-      rb32->GetRow = GetRow_32wrap16;
-      rb32->GetValues = GetValues_32wrap16;
-      rb32->PutRow = PutRow_32wrap16;
-      rb32->PutRowRGB = PutRowRGB_32wrap16;
-      rb32->PutMonoRow = PutMonoRow_32wrap16;
-      rb32->PutValues = PutValues_32wrap16;
-      rb32->PutMonoValues = PutMonoValues_32wrap16;
-   }
-   return rb32;
-}
diff --git a/src/mesa/main/rbadaptors.h b/src/mesa/main/rbadaptors.h
deleted file mode 100644 (file)
index 1d45b28..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  6.5.1
- *
- * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved.
- *
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- *
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- *
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-
-#ifndef RBADAPTORS_H
-#define RBADAPTORS_H
-
-
-extern struct gl_renderbuffer *
-_mesa_new_renderbuffer_16wrap8(GLcontext *ctx, struct gl_renderbuffer *rb8);
-
-extern struct gl_renderbuffer *
-_mesa_new_renderbuffer_32wrap8(GLcontext *ctx, struct gl_renderbuffer *rb8);
-
-extern struct gl_renderbuffer *
-_mesa_new_renderbuffer_32wrap16(GLcontext *ctx, struct gl_renderbuffer *rb16);
-
-
-#endif /* RBADAPTORS_H */
index 4d7b0aff046097d947067321f729e316b16a9c4e..adc1199d87af5eed2710dc1b412f85a828e5469e 100644 (file)
 #include "fbobject.h"
 #include "renderbuffer.h"
 
-#include "rbadaptors.h"
-
-
-/* 32-bit color index format.  Not a public format. */
-#define COLOR_INDEX32 0x424243
-
 
 /*
  * Routines for get/put values in common buffer formats follow.
@@ -992,6 +986,7 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
       pixelSize = 4 * sizeof(GLubyte);
       break;
    case GL_RGBA16:
+   case GL_RGBA16_SNORM:
       /* for accum buffer */
       rb->Format = MESA_FORMAT_SIGNED_RGBA_16;
       rb->DataType = GL_SHORT;
@@ -1091,21 +1086,6 @@ _mesa_soft_renderbuffer_storage(GLcontext *ctx, struct gl_renderbuffer *rb,
       rb->PutMonoValues = put_mono_values_uint;
       pixelSize = sizeof(GLuint);
       break;
-   case GL_COLOR_INDEX8_EXT:
-   case GL_COLOR_INDEX16_EXT:
-   case COLOR_INDEX32:
-      rb->Format = MESA_FORMAT_CI8;
-      rb->DataType = GL_UNSIGNED_BYTE;
-      rb->GetPointer = get_pointer_ubyte;
-      rb->GetRow = get_row_ubyte;
-      rb->GetValues = get_values_ubyte;
-      rb->PutRow = put_row_ubyte;
-      rb->PutRowRGB = NULL;
-      rb->PutMonoRow = put_mono_row_ubyte;
-      rb->PutValues = put_values_ubyte;
-      rb->PutMonoValues = put_mono_values_ubyte;
-      pixelSize = sizeof(GLubyte);
-      break;
    default:
       _mesa_problem(ctx, "Bad internalFormat in _mesa_soft_renderbuffer_storage");
       return GL_FALSE;
@@ -1777,7 +1757,7 @@ _mesa_add_accum_renderbuffer(GLcontext *ctx, struct gl_framebuffer *fb,
    }
 
    rb->Format = MESA_FORMAT_SIGNED_RGBA_16;
-   rb->InternalFormat = GL_RGBA16;
+   rb->InternalFormat = GL_RGBA16_SNORM;
    rb->AllocStorage = _mesa_soft_renderbuffer_storage;
    _mesa_add_renderbuffer(fb, BUFFER_ACCUM, rb);
 
@@ -1909,8 +1889,6 @@ void
 _mesa_add_renderbuffer(struct gl_framebuffer *fb,
                        GLuint bufferName, struct gl_renderbuffer *rb)
 {
-   GLenum baseFormat;
-
    assert(fb);
    assert(rb);
    assert(bufferName < BUFFER_COUNT);
@@ -1931,26 +1909,6 @@ _mesa_add_renderbuffer(struct gl_framebuffer *fb,
       assert(!rb->Name);
    }
 
-   /* If Mesa's compiled with deep color channels (16 or 32 bits / channel)
-    * and the device driver is expecting 8-bit values (GLubyte), we can
-    * use a "renderbuffer adaptor/wrapper" to do the necessary conversions.
-    */
-   baseFormat = _mesa_get_format_base_format(rb->Format);
-   if (baseFormat == GL_RGBA) {
-      if (CHAN_BITS == 16 && rb->DataType == GL_UNSIGNED_BYTE) {
-         GET_CURRENT_CONTEXT(ctx);
-         rb = _mesa_new_renderbuffer_16wrap8(ctx, rb);
-      }
-      else if (CHAN_BITS == 32 && rb->DataType == GL_UNSIGNED_BYTE) {
-         GET_CURRENT_CONTEXT(ctx);
-         rb = _mesa_new_renderbuffer_32wrap8(ctx, rb);
-      }
-      else if (CHAN_BITS == 32 && rb->DataType == GL_UNSIGNED_SHORT) {
-         GET_CURRENT_CONTEXT(ctx);
-         rb = _mesa_new_renderbuffer_32wrap16(ctx, rb);
-      }
-   }
-
    fb->Attachment[bufferName].Type = GL_RENDERBUFFER_EXT;
    fb->Attachment[bufferName].Complete = GL_TRUE;
    _mesa_reference_renderbuffer(&fb->Attachment[bufferName].Renderbuffer, rb);
index cff6de89ee30bd2e0c8278902cfdae779c337d1e..f4b1119eb17cc4627fdcefeab4633d712b987bff 100644 (file)
@@ -107,6 +107,24 @@ _mesa_get_compressed_formats(GLcontext *ctx, GLint *formats, GLboolean all)
    }
 #endif /* FEATURE_EXT_texture_sRGB */
    return n;
+
+#if FEATURE_ES1 || FEATURE_ES2
+   if (formats) {
+      formats[n++] = GL_PALETTE4_RGB8_OES;
+      formats[n++] = GL_PALETTE4_RGBA8_OES;
+      formats[n++] = GL_PALETTE4_R5_G6_B5_OES;
+      formats[n++] = GL_PALETTE4_RGBA4_OES;
+      formats[n++] = GL_PALETTE4_RGB5_A1_OES;
+      formats[n++] = GL_PALETTE8_RGB8_OES;
+      formats[n++] = GL_PALETTE8_RGBA8_OES;
+      formats[n++] = GL_PALETTE8_R5_G6_B5_OES;
+      formats[n++] = GL_PALETTE8_RGBA4_OES;
+      formats[n++] = GL_PALETTE8_RGB5_A1_OES;
+   }
+   else {
+      n += 10;
+   }
+#endif
 }
 
 
index 12c2e903eb508c7a07d3e653d88ff3e24ac2e012..85c394b051f8fc995cb6994598c927b47e09ad2f 100644 (file)
@@ -78,7 +78,7 @@ nonlinear_to_linear(GLubyte cs8)
             table[i] = cs / 12.92f;
          }
          else {
-            table[i] = (GLfloat) _mesa_pow((cs + 0.055) / 1.055, 2.4);
+            table[i] = (GLfloat) pow((cs + 0.055) / 1.055, 2.4);
          }
       }
       tableReady = GL_TRUE;
index 48a22c194552d7d17446f0af56423e1d9d6a4b3e..24d29137b0cadc571718d088693cae1f92f7c29c 100644 (file)
@@ -60,7 +60,7 @@ nonlinear_to_linear(GLubyte cs8)
             table[i] = cs / 12.92f;
          }
          else {
-            table[i] = (GLfloat) _mesa_pow((cs + 0.055) / 1.055, 2.4);
+            table[i] = (GLfloat) pow((cs + 0.055) / 1.055, 2.4);
          }
       }
       tableReady = GL_TRUE;
@@ -622,6 +622,13 @@ texfetch_funcs[MESA_FORMAT_COUNT] =
       fetch_texel_3d_signed_rgba_16,
       store_texel_signed_rgba_16
    },
+   {
+      MESA_FORMAT_RGBA_16,
+      fetch_texel_1d_rgba_16,
+      fetch_texel_2d_rgba_16,
+      fetch_texel_3d_rgba_16,
+      store_texel_rgba_16
+   }
 };
 
 
index 4df2b19181a458a780504d4a4b13f77d439ef107..e51fe3a577306e4eba173c0a1fc4a5ad06ea6a09 100644 (file)
@@ -1374,7 +1374,7 @@ store_texel_signed_rg_16(struct gl_texture_image *texImage,
 #endif
 
 
-/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/
+/* MESA_FORMAT_SIGNED_RGBA_16 ***********************************************/
 
 static void 
 FETCH(signed_rgb_16)(const struct gl_texture_image *texImage,
@@ -1383,7 +1383,7 @@ FETCH(signed_rgb_16)(const struct gl_texture_image *texImage,
    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[BCOMP] = SHORT_TO_FLOAT_TEX( s[2] );
    texel[ACOMP] = 1.0F;
 }
 
@@ -1401,7 +1401,7 @@ store_texel_signed_rgb_16(struct gl_texture_image *texImage,
 #endif
 
 
-/* MESA_FORMAT_SIGNED_RGB_16 ***********************************************/
+/* MESA_FORMAT_SIGNED_RGBA_16 ***********************************************/
 
 static void
 FETCH(signed_rgba_16)(const struct gl_texture_image *texImage,
@@ -1410,8 +1410,8 @@ FETCH(signed_rgba_16)(const struct gl_texture_image *texImage,
    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] );
+   texel[BCOMP] = SHORT_TO_FLOAT_TEX( s[2] );
+   texel[ACOMP] = SHORT_TO_FLOAT_TEX( s[3] );
 }
 
 #if DIM == 3
@@ -1430,6 +1430,35 @@ store_texel_signed_rgba_16(struct gl_texture_image *texImage,
 
 
 
+/* MESA_FORMAT_RGBA_16 ***********************************************/
+
+static void
+FETCH(rgba_16)(const struct gl_texture_image *texImage,
+               GLint i, GLint j, GLint k, GLfloat *texel)
+{
+   const GLushort *s = TEXEL_ADDR(GLushort, texImage, i, j, k, 4);
+   texel[RCOMP] = USHORT_TO_FLOAT( s[0] );
+   texel[GCOMP] = USHORT_TO_FLOAT( s[1] );
+   texel[BCOMP] = USHORT_TO_FLOAT( s[2] );
+   texel[ACOMP] = USHORT_TO_FLOAT( s[3] );
+}
+
+#if DIM == 3
+static void
+store_texel_rgba_16(struct gl_texture_image *texImage,
+                    GLint i, GLint j, GLint k, const void *texel)
+{
+   const GLushort *rgba = (const GLushort *) texel;
+   GLushort *dst = TEXEL_ADDR(GLushort, 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 06e6fd92fca9cec593f03fcd9eb70659c41031f9..d235485721a69507e414d55880bdbf706706c24b 100644 (file)
@@ -61,12 +61,9 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
    (void) type;
 
    switch (internalFormat) {
-      /* RGBA formats */
+      /* shallow RGBA formats */
       case 4:
       case GL_RGBA:
-      case GL_RGB10_A2:
-      case GL_RGBA12:
-      case GL_RGBA16:
       case GL_RGBA8:
          return MESA_FORMAT_RGBA8888;
       case GL_RGB5_A1:
@@ -76,12 +73,15 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
       case GL_RGBA4:
          return MESA_FORMAT_ARGB4444;
 
-      /* RGB formats */
+      /* deep RGBA formats */
+      case GL_RGB10_A2:
+      case GL_RGBA12:
+      case GL_RGBA16:
+         return MESA_FORMAT_RGBA_16;
+
+      /* shallow RGB formats */
       case 3:
       case GL_RGB:
-      case GL_RGB10:
-      case GL_RGB12:
-      case GL_RGB16:
       case GL_RGB8:
          return MESA_FORMAT_RGB888;
       case GL_R3_G3_B2:
@@ -91,6 +91,12 @@ _mesa_choose_tex_format( GLcontext *ctx, GLint internalFormat,
       case GL_RGB5:
          return MESA_FORMAT_RGB565;
 
+      /* deep RGB formats */
+      case GL_RGB10:
+      case GL_RGB12:
+      case GL_RGB16:
+         return MESA_FORMAT_RGBA_16;
+
       /* Alpha formats */
       case GL_ALPHA:
       case GL_ALPHA4:
index 7ad91805bc9348b5bc918e2ef8bd22cc4e59f277..00134ea9ffbbfb942eb05d349da45fe9809099c6 100644 (file)
@@ -224,7 +224,7 @@ linear_to_nonlinear(GLfloat cl)
       cs = 12.92f * cl;
    }
    else {
-      cs = (GLfloat)(1.055 * _mesa_pow(cl, 0.41666) - 0.055);
+      cs = (GLfloat)(1.055 * pow(cl, 0.41666) - 0.055);
    }
    return cs;
 }
index 0b55097bd694777702e17a3121ff33d561d99cff..ff752155ea9a3ff374104da02903dcce04d5395a 100644 (file)
@@ -1281,7 +1281,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
           type != GL_UNSIGNED_SHORT_8_8_REV_MESA) {
          char message[100];
          _mesa_snprintf(message, sizeof(message),
-                        "glTexImage%d(format/type YCBCR mismatch", dimensions);
+                        "glTexImage%dD(format/type YCBCR mismatch", dimensions);
          _mesa_error(ctx, GL_INVALID_ENUM, message);
          return GL_TRUE; /* error */
       }
@@ -1297,7 +1297,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
          if (!isProxy) {
             char message[100];
             _mesa_snprintf(message, sizeof(message),
-                           "glTexImage%d(format=GL_YCBCR_MESA and border=%d)",
+                           "glTexImage%dD(format=GL_YCBCR_MESA and border=%d)",
                            dimensions, border);
             _mesa_error(ctx, GL_INVALID_VALUE, message);
          }
@@ -1325,7 +1325,7 @@ texture_error_check( GLcontext *ctx, GLenum target,
    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);
+                     "glTexImage%dD(target)", dimensions);
          return GL_TRUE;
       }
       if (border != 0) {
@@ -1691,7 +1691,7 @@ copytexture_error_check( GLcontext *ctx, GLuint dimensions,
    if (_mesa_is_compressed_format(ctx, internalFormat)) {
       if (!target_can_be_compressed(ctx, target)) {
          _mesa_error(ctx, GL_INVALID_ENUM,
-                     "glCopyTexImage%d(target)", dimensions);
+                     "glCopyTexImage%dD(target)", dimensions);
          return GL_TRUE;
       }
       if (border != 0) {
@@ -1877,7 +1877,7 @@ copytexsubimage_error_check2( GLcontext *ctx, GLuint dimensions,
    if (_mesa_is_format_compressed(teximage->TexFormat)) {
       if (!target_can_be_compressed(ctx, target)) {
          _mesa_error(ctx, GL_INVALID_ENUM,
-                     "glCopyTexSubImage%d(target)", dimensions);
+                     "glCopyTexSubImage%dD(target)", dimensions);
          return GL_TRUE;
       }
       /* offset must be multiple of 4 */
index 94c0894de1f7244175a0851445a023de668429ba..ce05652c935f3c7e44cfd7f8f77fa6e6e71a0c4c 100644 (file)
@@ -2224,6 +2224,140 @@ _mesa_texstore_al1616(TEXSTORE_PARAMS)
 }
 
 
+static GLboolean
+_mesa_texstore_rgba_16(TEXSTORE_PARAMS)
+{
+   const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+   const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+   ASSERT(dstFormat == MESA_FORMAT_RGBA_16);
+   ASSERT(texelBytes == 8);
+
+   if (!ctx->_ImageTransferState &&
+       !srcPacking->SwapBytes &&
+       baseInternalFormat == GL_RGBA &&
+       srcFormat == GL_RGBA &&
+       srcType == GL_UNSIGNED_SHORT) {
+      /* simple memcpy path */
+      memcpy_texture(ctx, dims,
+                     dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset,
+                     dstRowStride,
+                     dstImageOffsets,
+                     srcWidth, srcHeight, srcDepth, srcFormat, srcType,
+                     srcAddr, srcPacking);
+   }
+   else {
+      /* general path */
+      const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+                                                 baseInternalFormat,
+                                                 baseFormat,
+                                                 srcWidth, srcHeight, srcDepth,
+                                                 srcFormat, srcType, srcAddr,
+                                                 srcPacking);
+      const GLfloat *src = 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++) {
+               GLushort r, g, b, a;
+
+               UNCLAMPED_FLOAT_TO_USHORT(r, src[0]);
+               UNCLAMPED_FLOAT_TO_USHORT(g, src[1]);
+               UNCLAMPED_FLOAT_TO_USHORT(b, src[2]);
+               UNCLAMPED_FLOAT_TO_USHORT(a, src[3]);
+               dstUS[col*4+0] = r;
+               dstUS[col*4+1] = g;
+               dstUS[col*4+2] = b;
+               dstUS[col*4+3] = a;
+               src += 4;
+            }
+            dstRow += dstRowStride;
+         }
+      }
+      free((void *) tempImage);
+   }
+   return GL_TRUE;
+}
+
+
+static GLboolean
+_mesa_texstore_signed_rgba_16(TEXSTORE_PARAMS)
+{
+   const GLuint texelBytes = _mesa_get_format_bytes(dstFormat);
+   const GLenum baseFormat = _mesa_get_format_base_format(dstFormat);
+
+   ASSERT(dstFormat == MESA_FORMAT_SIGNED_R_16 ||
+          dstFormat == MESA_FORMAT_SIGNED_RG_16 ||
+          dstFormat == MESA_FORMAT_SIGNED_RGB_16 ||
+          dstFormat == MESA_FORMAT_SIGNED_RGBA_16);
+
+   if (!ctx->_ImageTransferState &&
+       !srcPacking->SwapBytes &&
+       baseInternalFormat == GL_RGBA &&
+       dstFormat == MESA_FORMAT_SIGNED_RGBA_16 &&
+       srcFormat == GL_RGBA &&
+       srcType == GL_SHORT) {
+      /* simple memcpy path */
+      memcpy_texture(ctx, dims,
+                     dstFormat, dstAddr, dstXoffset, dstYoffset, dstZoffset,
+                     dstRowStride,
+                     dstImageOffsets,
+                     srcWidth, srcHeight, srcDepth, srcFormat, srcType,
+                     srcAddr, srcPacking);
+   }
+   else {
+      /* general path */
+      const GLfloat *tempImage = make_temp_float_image(ctx, dims,
+                                                 baseInternalFormat,
+                                                 baseFormat,
+                                                 srcWidth, srcHeight, srcDepth,
+                                                 srcFormat, srcType, srcAddr,
+                                                 srcPacking);
+      const GLfloat *src = tempImage;
+      const GLuint comps = _mesa_get_format_bytes(dstFormat) / 2;
+      GLint img, row, col;
+
+      if (!tempImage)
+         return GL_FALSE;
+
+      _mesa_adjust_image_for_convolution(ctx, dims, &srcWidth, &srcHeight);
+
+      /* Note: tempImage is always float[4] / RGBA.  We convert to 1, 2,
+       * 3 or 4 components/pixel here.
+       */
+      for (img = 0; img < srcDepth; img++) {
+         GLubyte *dstRow = (GLubyte *) dstAddr
+            + dstImageOffsets[dstZoffset + img] * texelBytes
+            + dstYoffset * dstRowStride
+            + dstXoffset * texelBytes;
+         for (row = 0; row < srcHeight; row++) {
+            GLshort *dstRowS = (GLshort *) dstRow;
+            for (col = 0; col < srcWidth; col++) {
+               GLuint c;
+               for (c = 0; c < comps; c++) {
+                  GLshort p;
+                  UNCLAMPED_FLOAT_TO_SHORT(p, src[col * 4 + c]);
+                  dstRowS[col * comps + c] = p;
+               }
+            }
+            dstRow += dstRowStride;
+            src += 4 * srcWidth;
+         }
+      }
+      free((void *) tempImage);
+   }
+   return GL_TRUE;
+}
+
+
 static GLboolean
 _mesa_texstore_rgb332(TEXSTORE_PARAMS)
 {
@@ -3347,10 +3481,11 @@ texstore_funcs[MESA_FORMAT_COUNT] =
    { MESA_FORMAT_SIGNED_RGBA8888, _mesa_texstore_signed_rgba8888 },
    { MESA_FORMAT_SIGNED_RGBA8888_REV, _mesa_texstore_signed_rgba8888 },
 
-   { 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*/ },
+   { MESA_FORMAT_SIGNED_R_16, _mesa_texstore_signed_rgba_16 },
+   { MESA_FORMAT_SIGNED_RG_16, _mesa_texstore_signed_rgba_16 },
+   { MESA_FORMAT_SIGNED_RGB_16, _mesa_texstore_signed_rgba_16 },
+   { MESA_FORMAT_SIGNED_RGBA_16, _mesa_texstore_signed_rgba_16 },
+   { MESA_FORMAT_RGBA_16, _mesa_texstore_rgba_16 }
 };
 
 
index 74519ba38a6d40cd6dfc5dfc633f2e9dea8bd2e9..050ebf02701684d58056c6fbae0f03a80340e83c 100644 (file)
 #include "buffers.h"
 #include "bufferobj.h"
 #include "context.h"
+#include "hash.h"
 #include "transformfeedback.h"
+#include "main/dispatch.h"
 
 #include "shader/prog_parameter.h"
 #include "shader/shader_api.h"
 
 
+#if FEATURE_EXT_transform_feedback
+
+
+/**
+ * Do reference counting of transform feedback buffers.
+ */
+static void
+reference_transform_feedback_object(struct gl_transform_feedback_object **ptr,
+                                    struct gl_transform_feedback_object *obj)
+{
+   if (*ptr == obj)
+      return;
+
+   if (*ptr) {
+      /* Unreference the old object */
+      struct gl_transform_feedback_object *oldObj = *ptr;
+
+      ASSERT(oldObj->RefCount > 0);
+      oldObj->RefCount--;
+
+      if (oldObj->RefCount == 0) {
+         GET_CURRENT_CONTEXT(ctx);
+         if (ctx)
+            ctx->Driver.DeleteTransformFeedback(ctx, oldObj);
+      }
+
+      *ptr = NULL;
+   }
+   ASSERT(!*ptr);
+
+   if (obj) {
+      /* reference new object */
+      if (obj->RefCount == 0) {
+         _mesa_problem(NULL, "referencing deleted transform feedback object");
+         *ptr = NULL;
+      }
+      else {
+         obj->RefCount++;
+         *ptr = obj;
+      }
+   }
+}
+
+
 /**
  * Check if the given primitive mode (as in glBegin(mode)) is compatible
  * with the current transform feedback mode (if it's enabled).
@@ -49,7 +95,7 @@
 GLboolean
 _mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode)
 {
-   if (ctx->TransformFeedback.Active) {
+   if (ctx->TransformFeedback.CurrentObject->Active) {
       switch (mode) {
       case GL_POINTS:
          return ctx->TransformFeedback.Mode == GL_POINTS;
@@ -74,7 +120,7 @@ _mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode)
 GLboolean
 _mesa_validate_transform_feedback_buffers(GLcontext *ctx)
 {
-
+   /* XXX to do */
    return GL_TRUE;
 }
 
@@ -86,29 +132,186 @@ _mesa_validate_transform_feedback_buffers(GLcontext *ctx)
 void
 _mesa_init_transform_feedback(GLcontext *ctx)
 {
+   if (!ctx->Driver.NewTransformFeedback) {
+      /* this feature/extension may not be supported by the driver */
+      return;
+   }
+
+   ctx->TransformFeedback.DefaultObject =
+      ctx->Driver.NewTransformFeedback(ctx, 0);
+
+   assert(ctx->TransformFeedback.DefaultObject->RefCount == 1);
+
+   reference_transform_feedback_object(&ctx->TransformFeedback.CurrentObject,
+                                       ctx->TransformFeedback.DefaultObject);
+
+   assert(ctx->TransformFeedback.DefaultObject->RefCount == 2);
+
+   ctx->TransformFeedback.Objects = _mesa_NewHashTable();
+
    _mesa_reference_buffer_object(ctx,
                                  &ctx->TransformFeedback.CurrentBuffer,
                                  ctx->Shared->NullBufferObj);
 }
 
 
+
+/**
+ * Callback for _mesa_HashDeleteAll().
+ */
+static void
+delete_cb(GLuint key, void *data, void *userData)
+{
+   GLcontext *ctx = (GLcontext *) userData;
+   struct gl_transform_feedback_object *obj =
+      (struct gl_transform_feedback_object *) data;
+
+   ctx->Driver.DeleteTransformFeedback(ctx, obj);
+}
+
+
 /**
  * Per-context free/clean-up for transform feedback.
  */
 void
 _mesa_free_transform_feedback(GLcontext *ctx)
 {
+   if (!ctx->Driver.NewTransformFeedback) {
+      /* this feature/extension may not be supported by the driver */
+      return;
+   }
+
    _mesa_reference_buffer_object(ctx,
                                  &ctx->TransformFeedback.CurrentBuffer,
                                  NULL);
+
+   /* Delete all feedback objects */
+   _mesa_HashDeleteAll(ctx->TransformFeedback.Objects, delete_cb, ctx);
+
+   /* Delete the default feedback object */
+   assert(ctx->Driver.DeleteTransformFeedback);
+   ctx->Driver.DeleteTransformFeedback(ctx,
+                                       ctx->TransformFeedback.DefaultObject);
+
+   ctx->TransformFeedback.CurrentObject = NULL;
+}
+
+
+/** Default fallback for ctx->Driver.NewTransformFeedback() */
+static struct gl_transform_feedback_object *
+new_transform_feedback(GLcontext *ctx, GLuint name)
+{
+   struct gl_transform_feedback_object *obj;
+   obj = CALLOC_STRUCT(gl_transform_feedback_object);
+   if (obj) {
+      obj->Name = name;
+      obj->RefCount = 1;
+   }
+   return obj;
+}
+
+/** Default fallback for ctx->Driver.DeleteTransformFeedback() */
+static void
+delete_transform_feedback(GLcontext *ctx,
+                          struct gl_transform_feedback_object *obj)
+{
+   GLuint i;
+
+   for (i = 0; i < Elements(obj->Buffers); i++) {
+      _mesa_reference_buffer_object(ctx, &obj->Buffers[i], NULL);
+   }
+
+   free(obj);
 }
 
+/** Default fallback for ctx->Driver.BeginTransformFeedback() */
+static void
+begin_transform_feedback(GLcontext *ctx, GLenum mode,
+                         struct gl_transform_feedback_object *obj)
+{
+   /* nop */
+}
+
+/** Default fallback for ctx->Driver.EndTransformFeedback() */
+static void
+end_transform_feedback(GLcontext *ctx,
+                       struct gl_transform_feedback_object *obj)
+{
+   /* nop */
+}
+
+/** Default fallback for ctx->Driver.PauseTransformFeedback() */
+static void
+pause_transform_feedback(GLcontext *ctx,
+                         struct gl_transform_feedback_object *obj)
+{
+   /* nop */
+}
+
+/** Default fallback for ctx->Driver.ResumeTransformFeedback() */
+static void
+resume_transform_feedback(GLcontext *ctx,
+                          struct gl_transform_feedback_object *obj)
+{
+   /* nop */
+}
+
+/** Default fallback for ctx->Driver.DrawTransformFeedback() */
+static void
+draw_transform_feedback(GLcontext *ctx, GLenum mode,
+                        struct gl_transform_feedback_object *obj)
+{
+   /* XXX to do */
+   /*
+    * Get number of vertices in obj's feedback buffer.
+    * Call ctx->Exec.DrawArrays(mode, 0, count);
+    */
+}
+
+
+/**
+ * Plug in default device driver functions for transform feedback.
+ * Most drivers will override some/all of these.
+ */
+void
+_mesa_init_transform_feedback_functions(struct dd_function_table *driver)
+{
+   driver->NewTransformFeedback = new_transform_feedback;
+   driver->DeleteTransformFeedback = delete_transform_feedback;
+   driver->BeginTransformFeedback = begin_transform_feedback;
+   driver->EndTransformFeedback = end_transform_feedback;
+   driver->PauseTransformFeedback = pause_transform_feedback;
+   driver->ResumeTransformFeedback = resume_transform_feedback;
+   driver->DrawTransformFeedback = draw_transform_feedback;
+}
+
+
+void
+_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp)
+{
+   SET_BeginTransformFeedbackEXT(disp, _mesa_BeginTransformFeedback);
+   SET_EndTransformFeedbackEXT(disp, _mesa_EndTransformFeedback);
+   SET_BindBufferRangeEXT(disp, _mesa_BindBufferRange);
+   SET_BindBufferBaseEXT(disp, _mesa_BindBufferBase);
+   SET_BindBufferOffsetEXT(disp, _mesa_BindBufferOffsetEXT);
+   SET_TransformFeedbackVaryingsEXT(disp, _mesa_TransformFeedbackVaryings);
+   SET_GetTransformFeedbackVaryingEXT(disp, _mesa_GetTransformFeedbackVarying);
+}
+
+
+/**
+ ** Begin API functions
+ **/
+
 
 void GLAPIENTRY
 _mesa_BeginTransformFeedback(GLenum mode)
 {
+   struct gl_transform_feedback_object *obj;
    GET_CURRENT_CONTEXT(ctx);
 
+   obj = ctx->TransformFeedback.CurrentObject;
+
    switch (mode) {
    case GL_POINTS:
    case GL_LINES:
@@ -120,29 +323,38 @@ _mesa_BeginTransformFeedback(GLenum mode)
       return;
    }
 
-   if (ctx->TransformFeedback.Active) {
+   if (obj->Active) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "glBeginTransformFeedback(already active)");
       return;
    }
 
-   ctx->TransformFeedback.Active = GL_TRUE;
+   obj->Active = GL_TRUE;
    ctx->TransformFeedback.Mode = mode;
+
+   assert(ctx->Driver.BeginTransformFeedback);
+   ctx->Driver.BeginTransformFeedback(ctx, mode, obj);
 }
 
 
 void GLAPIENTRY
 _mesa_EndTransformFeedback(void)
 {
+   struct gl_transform_feedback_object *obj;
    GET_CURRENT_CONTEXT(ctx);
 
-   if (!ctx->TransformFeedback.Active) {
+   obj = ctx->TransformFeedback.CurrentObject;
+
+   if (!obj->Active) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "glEndTransformFeedback(not active)");
       return;
    }
 
-   ctx->TransformFeedback.Active = GL_FALSE;
+   ctx->TransformFeedback.CurrentObject->Active = GL_FALSE;
+
+   assert(ctx->Driver.EndTransformFeedback);
+   ctx->Driver.EndTransformFeedback(ctx, obj);
 }
 
 
@@ -154,6 +366,9 @@ bind_buffer_range(GLcontext *ctx, GLuint index,
                   struct gl_buffer_object *bufObj,
                   GLintptr offset, GLsizeiptr size)
 {
+   struct gl_transform_feedback_object *obj =
+      ctx->TransformFeedback.CurrentObject;
+
    /* The general binding point */
    _mesa_reference_buffer_object(ctx,
                                  &ctx->TransformFeedback.CurrentBuffer,
@@ -161,13 +376,13 @@ bind_buffer_range(GLcontext *ctx, GLuint index,
 
    /* The per-attribute binding point */
    _mesa_reference_buffer_object(ctx,
-                                 &ctx->TransformFeedback.Buffers[index],
+                                 &obj->Buffers[index],
                                  bufObj);
 
-   ctx->TransformFeedback.BufferNames[index] = bufObj->Name;
+   obj->BufferNames[index] = bufObj->Name;
 
-   ctx->TransformFeedback.Offset[index] = offset;
-   ctx->TransformFeedback.Size[index] = size;
+   obj->Offset[index] = offset;
+   obj->Size[index] = size;
 }
 
 
@@ -179,6 +394,7 @@ void GLAPIENTRY
 _mesa_BindBufferRange(GLenum target, GLuint index,
                       GLuint buffer, GLintptr offset, GLsizeiptr size)
 {
+   struct gl_transform_feedback_object *obj;
    struct gl_buffer_object *bufObj;
    GET_CURRENT_CONTEXT(ctx);
 
@@ -187,7 +403,9 @@ _mesa_BindBufferRange(GLenum target, GLuint index,
       return;
    }
 
-   if (ctx->TransformFeedback.Active) {
+   obj = ctx->TransformFeedback.CurrentObject;
+
+   if (obj->Active) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "glBindBufferRange(transform feedback active)");
       return;
@@ -235,16 +453,19 @@ _mesa_BindBufferRange(GLenum target, GLuint index,
 void GLAPIENTRY
 _mesa_BindBufferBase(GLenum target, GLuint index, GLuint buffer)
 {
+   struct gl_transform_feedback_object *obj;
    struct gl_buffer_object *bufObj;
-   GET_CURRENT_CONTEXT(ctx);
    GLsizeiptr size;
+   GET_CURRENT_CONTEXT(ctx);
 
    if (target != GL_TRANSFORM_FEEDBACK_BUFFER) {
       _mesa_error(ctx, GL_INVALID_ENUM, "glBindBufferBase(target)");
       return;
    }
 
-   if (ctx->TransformFeedback.Active) {
+   obj = ctx->TransformFeedback.CurrentObject;
+
+   if (obj->Active) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "glBindBufferRange(transform feedback active)");
       return;
@@ -280,6 +501,7 @@ void GLAPIENTRY
 _mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer,
                           GLintptr offset)
 {
+   struct gl_transform_feedback_object *obj;
    struct gl_buffer_object *bufObj;
    GET_CURRENT_CONTEXT(ctx);
    GLsizeiptr size;
@@ -289,7 +511,9 @@ _mesa_BindBufferOffsetEXT(GLenum target, GLuint index, GLuint buffer,
       return;
    }
 
-   if (ctx->TransformFeedback.Active) {
+   obj = ctx->TransformFeedback.CurrentObject;
+
+   if (obj->Active) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "glBindBufferRange(transform feedback active)");
       return;
@@ -433,3 +657,250 @@ _mesa_GetTransformFeedbackVarying(GLuint program, GLuint index,
    }
 }
 
+
+
+static struct gl_transform_feedback_object *
+lookup_transform_feedback_object(GLcontext *ctx, GLuint name)
+{
+   if (name == 0) {
+      return ctx->TransformFeedback.DefaultObject;
+   }
+   else
+      return (struct gl_transform_feedback_object *)
+         _mesa_HashLookup(ctx->TransformFeedback.Objects, name);
+}
+
+
+/**
+ * Create new transform feedback objects.   Transform feedback objects
+ * encapsulate the state related to transform feedback to allow quickly
+ * switching state (and drawing the results, below).
+ * Part of GL_ARB_transform_feedback2.
+ */
+void GLAPIENTRY
+_mesa_GenTransformFeedbacks(GLsizei n, GLuint *names)
+{
+   GLuint first;
+   GET_CURRENT_CONTEXT(ctx);
+
+   ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+   if (n < 0) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glGenTransformFeedbacks(n < 0)");
+      return;
+   }
+
+   if (!names)
+      return;
+
+   /* we don't need contiguous IDs, but this might be faster */
+   first = _mesa_HashFindFreeKeyBlock(ctx->TransformFeedback.Objects, n);
+   if (first) {
+      GLsizei i;
+      for (i = 0; i < n; i++) {
+         struct gl_transform_feedback_object *obj
+            = ctx->Driver.NewTransformFeedback(ctx, first + i);
+         if (!obj) {
+            _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenTransformFeedbacks");
+            return;
+         }
+         names[i] = first + i;
+         _mesa_HashInsert(ctx->TransformFeedback.Objects, first + i, obj);
+      }
+   }
+   else {
+      _mesa_error(ctx, GL_OUT_OF_MEMORY, "glGenTransformFeedbacks");
+   }
+}
+
+
+/**
+ * Is the given ID a transform feedback object?
+ * Part of GL_ARB_transform_feedback2.
+ */
+GLboolean GLAPIENTRY
+_mesa_IsTransformFeedback(GLuint name)
+{
+   GET_CURRENT_CONTEXT(ctx);
+
+   ASSERT_OUTSIDE_BEGIN_END_WITH_RETVAL(ctx, GL_FALSE);
+
+   if (name && lookup_transform_feedback_object(ctx, name))
+      return GL_TRUE;
+   else
+      return GL_FALSE;
+}
+
+
+/**
+ * Bind the given transform feedback object.
+ * Part of GL_ARB_transform_feedback2.
+ */
+void GLAPIENTRY
+_mesa_BindTransformFeedback(GLenum target, GLuint name)
+{
+   struct gl_transform_feedback_object *obj;
+   GET_CURRENT_CONTEXT(ctx);
+
+   if (target != GL_TRANSFORM_FEEDBACK) {
+      _mesa_error(ctx, GL_INVALID_ENUM, "glBindTransformFeedback(target)");
+      return;
+   }
+
+   if (ctx->TransformFeedback.CurrentObject->Active &&
+       !ctx->TransformFeedback.CurrentObject->Paused) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+              "glBindTransformFeedback(transform is active, or not paused)");
+      return;
+   }
+
+   obj = lookup_transform_feedback_object(ctx, name);
+   if (!obj) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+                  "glBindTransformFeedback(name=%u)", name);
+      return;
+   }
+
+   reference_transform_feedback_object(&ctx->TransformFeedback.CurrentObject,
+                                       obj);
+}
+
+
+/**
+ * Delete the given transform feedback objects.
+ * Part of GL_ARB_transform_feedback2.
+ */
+void GLAPIENTRY
+_mesa_DeleteTransformFeedbacks(GLsizei n, const GLuint *names)
+{
+   GLint i;
+   GET_CURRENT_CONTEXT(ctx);
+
+   ASSERT_OUTSIDE_BEGIN_END(ctx);
+
+   if (n < 0) {
+      _mesa_error(ctx, GL_INVALID_VALUE, "glDeleteTransformFeedbacks(n < 0)");
+      return;
+   }
+
+   if (!names)
+      return;
+
+   for (i = 0; i < n; i++) {
+      if (names[i] > 0) {
+         struct gl_transform_feedback_object *obj
+            = lookup_transform_feedback_object(ctx, names[i]);
+         if (obj) {
+            if (obj->Active) {
+               _mesa_error(ctx, GL_INVALID_OPERATION,
+                           "glDeleteTransformFeedbacks(object %u is active)",
+                           names[i]);
+               return;
+            }
+            _mesa_HashRemove(ctx->TransformFeedback.Objects, names[i]);
+            /* unref, but object may not be deleted until later */
+            reference_transform_feedback_object(&obj, NULL);
+         }
+      }
+   }
+}
+
+
+/**
+ * Pause transform feedback.
+ * Part of GL_ARB_transform_feedback2.
+ */
+void GLAPIENTRY
+_mesa_PauseTransformFeedback(void)
+{
+   struct gl_transform_feedback_object *obj;
+   GET_CURRENT_CONTEXT(ctx);
+
+   obj = ctx->TransformFeedback.CurrentObject;
+
+   if (!obj->Active || obj->Paused) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+           "glPauseTransformFeedback(feedback not active or already paused)");
+      return;
+   }
+
+   obj->Paused = GL_TRUE;
+
+   assert(ctx->Driver.PauseTransformFeedback);
+   ctx->Driver.PauseTransformFeedback(ctx, obj);
+}
+
+
+/**
+ * Resume transform feedback.
+ * Part of GL_ARB_transform_feedback2.
+ */
+void GLAPIENTRY
+_mesa_ResumeTransformFeedback(void)
+{
+   struct gl_transform_feedback_object *obj;
+   GET_CURRENT_CONTEXT(ctx);
+
+   obj = ctx->TransformFeedback.CurrentObject;
+
+   if (!obj->Active || !obj->Paused) {
+      _mesa_error(ctx, GL_INVALID_OPERATION,
+               "glPauseTransformFeedback(feedback not active or not paused)");
+      return;
+   }
+
+   obj->Paused = GL_FALSE;
+
+   assert(ctx->Driver.ResumeTransformFeedback);
+   ctx->Driver.ResumeTransformFeedback(ctx, obj);
+}
+
+
+/**
+ * Draw the vertex data in a transform feedback object.
+ * \param mode  GL_POINTS, GL_LINES, GL_TRIANGLE_STRIP, etc.
+ * \param name  the transform feedback object
+ * The number of vertices comes from the transform feedback object.
+ * User still has to setup of the vertex attribute info with
+ * glVertexPointer, glColorPointer, etc.
+ * Part of GL_ARB_transform_feedback2.
+ */
+void GLAPIENTRY
+_mesa_DrawTransformFeedback(GLenum mode, GLuint name)
+{
+   GET_CURRENT_CONTEXT(ctx);
+   struct gl_transform_feedback_object *obj =
+      lookup_transform_feedback_object(ctx, name);
+
+   if (mode > GL_POLYGON) {
+      _mesa_error(ctx, GL_INVALID_ENUM,
+                  "glDrawTransformFeedback(mode=0x%x)", mode);
+      return;
+   }
+   if (!obj) {
+      _mesa_error(ctx, GL_INVALID_VALUE,
+                  "glDrawTransformFeedback(name = %u)", name);
+      return;
+   }
+
+   /* XXX check if EndTransformFeedback has never been called while
+    * the object was bound
+    */
+
+   assert(ctx->Driver.DrawTransformFeedback);
+   ctx->Driver.DrawTransformFeedback(ctx, mode, obj);
+}
+
+
+/*
+XXX misc to do:
+
+glGet*() for
+
+GL_TRANSFORM_FEEDBACK_BUFFER_PAUSED
+GL_TRANSFORM_FEEDBACK_BUFFER_ACTIVE
+GL_TRANSFORM_FEEDBACK_BINDING
+*/
+
+
+#endif /* FEATURE_EXT_transform_feedback */
index e89cc4147369d579b4d7cce1bb2ab98a9b6d3c0b..b806488abdd653d4628eb24443d9c7aa73710cc9 100644 (file)
 #ifndef TRANSFORM_FEEDBACK_H
 #define TRANSFORM_FEEDBACK_H
 
-#include "glheader.h"
+#include "main/mtypes.h"
 
 
+#if FEATURE_EXT_transform_feedback
+
 extern GLboolean
 _mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode);
 
@@ -41,6 +43,15 @@ extern void
 _mesa_free_transform_feedback(GLcontext *ctx);
 
 
+extern void
+_mesa_init_transform_feedback_functions(struct dd_function_table *driver);
+
+extern void
+_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp);
+
+
+/*** GL_EXT_transform_feedback ***/
+
 extern void GLAPIENTRY
 _mesa_BeginTransformFeedback(GLenum mode);
 
@@ -68,4 +79,64 @@ _mesa_GetTransformFeedbackVarying(GLuint program, GLuint index,
                                   GLsizei *size, GLenum *type, GLchar *name);
 
 
+
+/*** GL_ARB_transform_feedback2 ***/
+
+extern void GLAPIENTRY
+_mesa_GenTransformFeedbacks(GLsizei n, GLuint *names);
+
+extern GLboolean GLAPIENTRY
+_mesa_IsTransformFeedback(GLuint name);
+
+extern void GLAPIENTRY
+_mesa_BindTransformFeedback(GLenum target, GLuint name);
+
+extern void GLAPIENTRY
+_mesa_DeleteTransformFeedbacks(GLsizei n, const GLuint *names);
+
+extern void GLAPIENTRY
+_mesa_PauseTransformFeedback(void);
+
+extern void GLAPIENTRY
+_mesa_ResumeTransformFeedback(void);
+
+extern void GLAPIENTRY
+_mesa_DrawTransformFeedback(GLenum mode, GLuint name);
+
+#else /* FEATURE_EXT_transform_feedback */
+
+static INLINE GLboolean
+_mesa_validate_primitive_mode(GLcontext *ctx, GLenum mode)
+{
+   return GL_TRUE;
+}
+
+static INLINE GLboolean
+_mesa_validate_transform_feedback_buffers(GLcontext *ctx)
+{
+   return GL_TRUE;
+}
+
+static INLINE void
+_mesa_init_transform_feedback(GLcontext *ctx)
+{
+}
+
+static INLINE void
+_mesa_free_transform_feedback(GLcontext *ctx)
+{
+}
+
+static INLINE void
+_mesa_init_transform_feedback_functions(struct dd_function_table *driver)
+{
+}
+
+static INLINE void
+_mesa_init_transform_feedback_dispatch(struct _glapi_table *disp)
+{
+}
+
+#endif /* FEATURE_EXT_transform_feedback */
+
 #endif /* TRANSFORM_FEEDBACK_H */
index 4b33d0bbb37cf2d11a9da171d8f51b742e456b39..048b231c4ed73b877126780b71eea6c0a2e7e600 100644 (file)
@@ -804,8 +804,8 @@ _math_matrix_rotate( GLmatrix *mat,
    GLfloat m[16];
    GLboolean optimized;
 
-   s = (GLfloat) _mesa_sin( angle * DEG2RAD );
-   c = (GLfloat) _mesa_cos( angle * DEG2RAD );
+   s = (GLfloat) sin( angle * DEG2RAD );
+   c = (GLfloat) cos( angle * DEG2RAD );
 
    memcpy(m, Identity, sizeof(GLfloat)*16);
    optimized = GL_FALSE;
index 870f77e30dc7307491c89d8bba88e83af61e4c04..21bb9589cb08e9744bbaafed95905d0e24b08e2e 100644 (file)
 #include "main/macros.h"
 #include "main/enums.h"
 #include "main/mtypes.h"
+#include "main/dispatch.h"
 #include "atifragshader.h"
 
+#if FEATURE_ATI_fragment_shader
+
 #define MESA_DEBUG_ATI_FS 0
 
 static struct ati_fragment_shader DummyShader;
 
 
+void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
+{
+   SET_GenFragmentShadersATI(disp, _mesa_GenFragmentShadersATI);
+   SET_BindFragmentShaderATI(disp, _mesa_BindFragmentShaderATI);
+   SET_DeleteFragmentShaderATI(disp, _mesa_DeleteFragmentShaderATI);
+   SET_BeginFragmentShaderATI(disp, _mesa_BeginFragmentShaderATI);
+   SET_EndFragmentShaderATI(disp, _mesa_EndFragmentShaderATI);
+   SET_PassTexCoordATI(disp, _mesa_PassTexCoordATI);
+   SET_SampleMapATI(disp, _mesa_SampleMapATI);
+   SET_ColorFragmentOp1ATI(disp, _mesa_ColorFragmentOp1ATI);
+   SET_ColorFragmentOp2ATI(disp, _mesa_ColorFragmentOp2ATI);
+   SET_ColorFragmentOp3ATI(disp, _mesa_ColorFragmentOp3ATI);
+   SET_AlphaFragmentOp1ATI(disp, _mesa_AlphaFragmentOp1ATI);
+   SET_AlphaFragmentOp2ATI(disp, _mesa_AlphaFragmentOp2ATI);
+   SET_AlphaFragmentOp3ATI(disp, _mesa_AlphaFragmentOp3ATI);
+   SET_SetFragmentShaderConstantATI(disp, _mesa_SetFragmentShaderConstantATI);
+}
+
+
 /**
  * Allocate and initialize a new ATI fragment shader object.
  */
@@ -767,3 +790,5 @@ _mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value)
       COPY_4V(ctx->ATIFragmentShader.GlobalConstants[dstindex], value);
    }
 }
+
+#endif /* FEATURE_ATI_fragment_shader */
index e1dc20e60651b94fec5db95b6a3048d40e10921b..31c335ec8155407543d2fc4ad10c7e90abe5c232 100644 (file)
@@ -60,6 +60,11 @@ struct atifs_setupinst
 };
 
 
+#if FEATURE_ATI_fragment_shader
+
+extern void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp);
+
 extern struct ati_fragment_shader *
 _mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id);
 
@@ -120,4 +125,25 @@ _mesa_AlphaFragmentOp3ATI(GLenum op, GLuint dst, GLuint dstMod, GLuint arg1,
 extern void GLAPIENTRY
 _mesa_SetFragmentShaderConstantATI(GLuint dst, const GLfloat * value);
 
-#endif
+#else /* FEATURE_ATI_fragment_shader */
+
+static INLINE void
+_mesa_init_ati_fragment_shader_dispatch(struct _glapi_table *disp)
+{
+}
+
+static INLINE struct ati_fragment_shader *
+_mesa_new_ati_fragment_shader(GLcontext *ctx, GLuint id)
+{
+   return NULL;
+}
+
+static INLINE void
+_mesa_delete_ati_fragment_shader(GLcontext *ctx,
+                                 struct ati_fragment_shader *s)
+{
+}
+
+#endif /* FEATURE_ATI_fragment_shader */
+
+#endif /* ATIFRAGSHADER_H */
index 0067512cfb2f220191ddf654c6e14ca1bad861a0..f85c6513f3194c92d7c183674863a7841cce55d2 100644 (file)
@@ -762,7 +762,7 @@ _mesa_execute_program(GLcontext * ctx,
             GLfloat a[4], result[4];
             fetch_vector1(&inst->SrcReg[0], machine, a);
             result[0] = result[1] = result[2] = result[3]
-               = (GLfloat) _mesa_cos(a[0]);
+               = (GLfloat) cos(a[0]);
             store_vector4(inst, machine, result);
          }
          break;
@@ -876,7 +876,7 @@ _mesa_execute_program(GLcontext * ctx,
                 * result.z = result.x * APPX(result.y)
                 * We do what the ARB extension says.
                 */
-               q[2] = (GLfloat) _mesa_pow(2.0, t[0]);
+               q[2] = (GLfloat) pow(2.0, t[0]);
             }
             q[1] = t[0] - floor_t0;
             q[3] = 1.0F;
@@ -887,7 +887,7 @@ _mesa_execute_program(GLcontext * ctx,
          {
             GLfloat a[4], result[4], val;
             fetch_vector1(&inst->SrcReg[0], machine, a);
-            val = (GLfloat) _mesa_pow(2.0, a[0]);
+            val = (GLfloat) pow(2.0, a[0]);
             /*
             if (IS_INF_OR_NAN(val))
                val = 1.0e10;
@@ -1009,7 +1009,7 @@ _mesa_execute_program(GLcontext * ctx,
                if (a[1] == 0.0 && a[3] == 0.0)
                   result[2] = 1.0F;
                else
-                  result[2] = (GLfloat) _mesa_pow(a[1], a[3]);
+                  result[2] = (GLfloat) pow(a[1], a[3]);
             }
             else {
                result[2] = 0.0F;
@@ -1336,7 +1336,7 @@ _mesa_execute_program(GLcontext * ctx,
             fetch_vector1(&inst->SrcReg[0], machine, a);
             fetch_vector1(&inst->SrcReg[1], machine, b);
             result[0] = result[1] = result[2] = result[3]
-               = (GLfloat) _mesa_pow(a[0], b[0]);
+               = (GLfloat) pow(a[0], b[0]);
             store_vector4(inst, machine, result);
          }
          break;
@@ -1393,8 +1393,8 @@ _mesa_execute_program(GLcontext * ctx,
          {
             GLfloat a[4], result[4];
             fetch_vector1(&inst->SrcReg[0], machine, a);
-            result[0] = (GLfloat) _mesa_cos(a[0]);
-            result[1] = (GLfloat) _mesa_sin(a[0]);
+            result[0] = (GLfloat) cos(a[0]);
+            result[1] = (GLfloat) sin(a[0]);
             result[2] = 0.0;    /* undefined! */
             result[3] = 0.0;    /* undefined! */
             store_vector4(inst, machine, result);
@@ -1465,7 +1465,7 @@ _mesa_execute_program(GLcontext * ctx,
             GLfloat a[4], result[4];
             fetch_vector1(&inst->SrcReg[0], machine, a);
             result[0] = result[1] = result[2] = result[3]
-               = (GLfloat) _mesa_sin(a[0]);
+               = (GLfloat) sin(a[0]);
             store_vector4(inst, machine, result);
          }
          break;
index 4ff032d4ec8efb57df07c73676b248dece2a77db..f47f213ac8467a72c6ee338dfe8b80009f6eb031 100644 (file)
@@ -1517,12 +1517,14 @@ static void
 _mesa_link_program(GLcontext *ctx, GLuint program)
 {
    struct gl_shader_program *shProg;
+   struct gl_transform_feedback_object *obj =
+      ctx->TransformFeedback.CurrentObject;
 
    shProg = _mesa_lookup_shader_program_err(ctx, program, "glLinkProgram");
    if (!shProg)
       return;
 
-   if (ctx->TransformFeedback.Active && shProg == ctx->Shader.CurrentProgram) {
+   if (obj->Active && shProg == ctx->Shader.CurrentProgram) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "glLinkProgram(transform feedback active");
       return;
@@ -1591,8 +1593,10 @@ void
 _mesa_use_program(GLcontext *ctx, GLuint program)
 {
    struct gl_shader_program *shProg;
+   struct gl_transform_feedback_object *obj =
+      ctx->TransformFeedback.CurrentObject;
 
-   if (ctx->TransformFeedback.Active) {
+   if (obj->Active) {
       _mesa_error(ctx, GL_INVALID_OPERATION,
                   "glUseProgram(transform feedback active)");
       return;
@@ -1749,7 +1753,8 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,
          /* check that the sampler (tex unit index) is legal */
          if (texUnit >= ctx->Const.MaxTextureImageUnits) {
             _mesa_error(ctx, GL_INVALID_VALUE,
-                        "glUniform1(invalid sampler/tex unit index)");
+                        "glUniform1(invalid sampler/tex unit index for '%s')",
+                        param->Name);
             return;
          }
 
@@ -1797,7 +1802,8 @@ set_program_uniform(GLcontext *ctx, struct gl_program *program,
          /* non-array: count must be at most one; count == 0 is handled by the loop below */
          if (count > 1) {
             _mesa_error(ctx, GL_INVALID_OPERATION,
-                        "glUniform(uniform is not an array)");
+                        "glUniform(uniform '%s' is not an array)",
+                        param->Name);
             return;
          }
       }
@@ -1860,14 +1866,15 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
       return;   /* The standard specifies this as a no-op */
 
    if (location < -1) {
-      _mesa_error(ctx, GL_INVALID_OPERATION, "glUniform(location)");
+      _mesa_error(ctx, GL_INVALID_OPERATION, "glUniform(location=%d)",
+                  location);
       return;
    }
 
    split_location_offset(&location, &offset);
 
    if (location < 0 || location >= (GLint) shProg->Uniforms->NumUniforms) {
-      _mesa_error(ctx, GL_INVALID_VALUE, "glUniform(location)");
+      _mesa_error(ctx, GL_INVALID_VALUE, "glUniform(location=%d)", location);
       return;
    }
 
index b69e7eeae51fed7d2231532c8749f4cc35e0b0b4..74563bcf96e683c9e487b6c70ad4397f3b7f1c87 100644 (file)
@@ -1,12 +1,9 @@
 ### Lists of source files, included by Makefiles
 
-ES1_SOURCES = \
+# this is part of MAIN_SOURCES
+MAIN_ES_SOURCES = \
        main/api_exec_es1.c \
-       main/get_es1.c
-
-ES2_SOURCES = \
-       main/api_exec_es2.c \
-       main/get_es2.c
+       main/api_exec_es2.c
 
 MAIN_SOURCES = \
        main/api_arrayelt.c \
@@ -65,7 +62,6 @@ MAIN_SOURCES = \
        main/queryobj.c \
        main/querymatrix.c \
        main/rastpos.c \
-       main/rbadaptors.c \
        main/readpix.c \
        main/remap.c \
        main/renderbuffer.c \
@@ -96,16 +92,7 @@ MAIN_SOURCES = \
        main/version.c \
        main/viewport.c \
        main/vtxfmt.c \
-       $(ES_SOURCES)
-
-GLAPI_SOURCES = \
-       glapi/glapi.c \
-       glapi/glapi_dispatch.c \
-       glapi/glapi_entrypoint.c \
-       glapi/glapi_execmem.c \
-       glapi/glapi_getproc.c \
-       glapi/glapi_nop.c \
-       glapi/glthread.c
+       $(MAIN_ES_SOURCES)
 
 MATH_SOURCES = \
        math/m_debug_clip.c \
@@ -222,6 +209,7 @@ STATETRACKER_SOURCES = \
        state_tracker/st_cb_readpixels.c \
        state_tracker/st_cb_strings.c \
        state_tracker/st_cb_texture.c \
+       state_tracker/st_cb_xformfb.c \
        state_tracker/st_context.c \
        state_tracker/st_debug.c \
        state_tracker/st_draw.c \
@@ -310,23 +298,14 @@ X86_SOURCES =                     \
        x86/sse_normal.S        \
        x86/read_rgba_span_x86.S
 
-X86_API =                      \
-       x86/glapi_x86.S
-
 X86-64_SOURCES =               \
        x86-64/xform4.S
 
-X86-64_API =                   \
-       x86-64/glapi_x86-64.S
-
 SPARC_SOURCES =                        \
        sparc/clip.S            \
        sparc/norm.S            \
        sparc/xform.S
 
-SPARC_API =                    \
-       sparc/glapi_sparc.S
-
 COMMON_DRIVER_SOURCES =                        \
        drivers/common/driverfuncs.c    \
        drivers/common/meta.c
@@ -360,7 +339,6 @@ MESA_GALLIUM_SOURCES = \
 # All the core C sources, for dependency checking
 ALL_SOURCES = \
        $(MESA_SOURCES)         \
-       $(GLAPI_SOURCES)        \
        $(MESA_ASM_SOURCES)     \
        $(STATETRACKER_SOURCES)
 
@@ -375,10 +353,6 @@ MESA_GALLIUM_OBJECTS = \
        $(MESA_GALLIUM_SOURCES:.c=.o) \
        $(MESA_ASM_SOURCES:.S=.o)
 
-GLAPI_OBJECTS = \
-       $(GLAPI_SOURCES:.c=.o) \
-       $(GLAPI_ASM_SOURCES:.S=.o)
-
 
 COMMON_DRIVER_OBJECTS = $(COMMON_DRIVER_SOURCES:.c=.o)
 
@@ -395,5 +369,6 @@ GLSL_LIBS = \
 INCLUDE_DIRS = \
        -I$(TOP)/include \
        -I$(TOP)/src/mesa \
+       -I$(TOP)/src/mapi \
        -I$(TOP)/src/gallium/include \
        -I$(TOP)/src/gallium/auxiliary
diff --git a/src/mesa/sparc/glapi_sparc.S b/src/mesa/sparc/glapi_sparc.S
deleted file mode 100644 (file)
index e9f887b..0000000
+++ /dev/null
@@ -1,1402 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_SPARC_asm.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2003  Brian Paul   All Rights Reserved.
- * (C) Copyright IBM Corporation 2004
- * 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
- * BRIAN PAUL, 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 "glapi/glapioffsets.h"
-
-#ifdef __arch64__
-#define GL_OFF(N)      ((N) * 8)
-#define GL_LL          ldx
-#define GL_TIE_LD(SYM) %tie_ldx(SYM)
-#define GL_STACK_SIZE  128
-#else
-#define GL_OFF(N)      ((N) * 4)
-#define GL_LL          ld
-#define GL_TIE_LD(SYM) %tie_ld(SYM)
-#define GL_STACK_SIZE  64
-#endif
-
-#define GLOBL_FN(x) .globl x ; .type x, @function
-#define HIDDEN(x) .hidden x
-
-       .register %g2, #scratch
-       .register %g3, #scratch
-
-       .text
-
-       GLOBL_FN(__glapi_sparc_icache_flush)
-       HIDDEN(__glapi_sparc_icache_flush)
-       .type   __glapi_sparc_icache_flush, @function
-__glapi_sparc_icache_flush: /* %o0 = insn_addr */
-       flush   %o0
-       retl
-        nop
-
-       .align  32
-
-       .type   __glapi_sparc_get_pc, @function
-__glapi_sparc_get_pc:
-       retl
-        add    %o7, %g2, %g2
-       .size   __glapi_sparc_get_pc, .-__glapi_sparc_get_pc
-
-#ifdef GLX_USE_TLS
-
-       GLOBL_FN(__glapi_sparc_get_dispatch)
-       HIDDEN(__glapi_sparc_get_dispatch)
-__glapi_sparc_get_dispatch:
-       mov     %o7, %g1
-       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
-       call    __glapi_sparc_get_pc
-       add     %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
-       mov     %g1, %o7
-       sethi   %tie_hi22(_glapi_tls_Dispatch), %g1
-       add     %g1, %tie_lo10(_glapi_tls_Dispatch), %g1
-       GL_LL   [%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)
-       retl
-        mov    %g2, %o0
-
-       .data
-       .align  32
-
-       /* --> sethi %hi(_glapi_tls_Dispatch), %g1 */
-       /* --> or %g1, %lo(_glapi_tls_Dispatch), %g1 */
-       GLOBL_FN(__glapi_sparc_tls_stub)
-       HIDDEN(__glapi_sparc_tls_stub)
-__glapi_sparc_tls_stub: /* Call offset in %g3 */
-       mov     %o7, %g1
-       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
-       call    __glapi_sparc_get_pc
-       add     %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
-       mov     %g1, %o7
-       srl     %g3, 10, %g3
-       sethi   %tie_hi22(_glapi_tls_Dispatch), %g1
-       add     %g1, %tie_lo10(_glapi_tls_Dispatch), %g1
-       GL_LL   [%g2 + %g1], %g2, GL_TIE_LD(_glapi_tls_Dispatch)
-       GL_LL   [%g7+%g2], %g1
-       GL_LL   [%g1 + %g3], %g1
-       jmp     %g1
-        nop
-       .size   __glapi_sparc_tls_stub, .-__glapi_sparc_tls_stub
-
-#define GL_STUB(fn, off)                               \
-       GLOBL_FN(fn);                                   \
-fn:    ba      __glapi_sparc_tls_stub;                 \
-        sethi  GL_OFF(off), %g3;                       \
-       .size   fn,.-fn;
-
-#elif defined(PTHREADS)
-
-       /* 64-bit 0x00 --> sethi %hh(_glapi_Dispatch), %g1 */
-       /* 64-bit 0x04 --> sethi %lm(_glapi_Dispatch), %g2 */
-       /* 64-bit 0x08 --> or %g1, %hm(_glapi_Dispatch), %g1 */
-       /* 64-bit 0x0c --> sllx %g1, 32, %g1 */
-       /* 64-bit 0x10 --> add %g1, %g2, %g1 */
-       /* 64-bit 0x14 --> ldx [%g1 + %lo(_glapi_Dispatch)], %g1 */
-
-       /* 32-bit 0x00 --> sethi %hi(_glapi_Dispatch), %g1 */
-       /* 32-bit 0x04 --> ld [%g1 + %lo(_glapi_Dispatch)], %g1 */
-
-       .data
-       .align  32
-
-       GLOBL_FN(__glapi_sparc_pthread_stub)
-       HIDDEN(__glapi_sparc_pthread_stub)
-__glapi_sparc_pthread_stub: /* Call offset in %g3 */
-       mov     %o7, %g1
-       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
-       call    __glapi_sparc_get_pc
-        add    %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
-       mov     %g1, %o7
-       sethi   %hi(_glapi_Dispatch), %g1
-       or      %g1, %lo(_glapi_Dispatch), %g1
-       srl     %g3, 10, %g3
-       GL_LL   [%g2+%g1], %g2
-       GL_LL   [%g2], %g1
-       cmp     %g1, 0
-       be      2f
-        nop
-1:     GL_LL   [%g1 + %g3], %g1
-       jmp     %g1
-        nop
-2:     save    %sp, GL_STACK_SIZE, %sp
-       mov     %g3, %l0
-       call    _glapi_get_dispatch
-        nop
-       mov     %o0, %g1
-       mov     %l0, %g3
-       ba      1b
-        restore %g0, %g0, %g0
-       .size   __glapi_sparc_pthread_stub, .-__glapi_sparc_pthread_stub
-
-#define GL_STUB(fn, off)                       \
-       GLOBL_FN(fn);                           \
-fn:    ba      __glapi_sparc_pthread_stub;     \
-        sethi  GL_OFF(off), %g3;               \
-       .size   fn,.-fn;
-
-#else /* Non-threaded version. */
-
-       .type   __glapi_sparc_nothread_stub, @function
-__glapi_sparc_nothread_stub: /* Call offset in %g3 */
-       mov     %o7, %g1
-       sethi   %hi(_GLOBAL_OFFSET_TABLE_-4), %g2
-       call    __glapi_sparc_get_pc
-        add    %g2, %lo(_GLOBAL_OFFSET_TABLE_+4), %g2
-       mov     %g1, %o7
-       srl     %g3, 10, %g3
-       sethi   %hi(_glapi_Dispatch), %g1
-       or      %g1, %lo(_glapi_Dispatch), %g1
-       GL_LL   [%g2+%g1], %g2
-       GL_LL   [%g2], %g1
-       GL_LL   [%g1 + %g3], %g1
-       jmp     %g1
-        nop
-       .size   __glapi_sparc_nothread_stub, .-__glapi_sparc_nothread_stub
-
-#define GL_STUB(fn, off)                       \
-       GLOBL_FN(fn);                           \
-fn:    ba      __glapi_sparc_nothread_stub;    \
-        sethi  GL_OFF(off), %g3;               \
-       .size   fn,.-fn;
-
-#endif
-
-#define GL_STUB_ALIAS(fn, alias)               \
-       .globl  fn;                             \
-       .set    fn, alias
-
-       .text
-       .align  32
-
-       .globl  gl_dispatch_functions_start
-       HIDDEN(gl_dispatch_functions_start)
-gl_dispatch_functions_start:
-
-       GL_STUB(glNewList, _gloffset_NewList)
-       GL_STUB(glEndList, _gloffset_EndList)
-       GL_STUB(glCallList, _gloffset_CallList)
-       GL_STUB(glCallLists, _gloffset_CallLists)
-       GL_STUB(glDeleteLists, _gloffset_DeleteLists)
-       GL_STUB(glGenLists, _gloffset_GenLists)
-       GL_STUB(glListBase, _gloffset_ListBase)
-       GL_STUB(glBegin, _gloffset_Begin)
-       GL_STUB(glBitmap, _gloffset_Bitmap)
-       GL_STUB(glColor3b, _gloffset_Color3b)
-       GL_STUB(glColor3bv, _gloffset_Color3bv)
-       GL_STUB(glColor3d, _gloffset_Color3d)
-       GL_STUB(glColor3dv, _gloffset_Color3dv)
-       GL_STUB(glColor3f, _gloffset_Color3f)
-       GL_STUB(glColor3fv, _gloffset_Color3fv)
-       GL_STUB(glColor3i, _gloffset_Color3i)
-       GL_STUB(glColor3iv, _gloffset_Color3iv)
-       GL_STUB(glColor3s, _gloffset_Color3s)
-       GL_STUB(glColor3sv, _gloffset_Color3sv)
-       GL_STUB(glColor3ub, _gloffset_Color3ub)
-       GL_STUB(glColor3ubv, _gloffset_Color3ubv)
-       GL_STUB(glColor3ui, _gloffset_Color3ui)
-       GL_STUB(glColor3uiv, _gloffset_Color3uiv)
-       GL_STUB(glColor3us, _gloffset_Color3us)
-       GL_STUB(glColor3usv, _gloffset_Color3usv)
-       GL_STUB(glColor4b, _gloffset_Color4b)
-       GL_STUB(glColor4bv, _gloffset_Color4bv)
-       GL_STUB(glColor4d, _gloffset_Color4d)
-       GL_STUB(glColor4dv, _gloffset_Color4dv)
-       GL_STUB(glColor4f, _gloffset_Color4f)
-       GL_STUB(glColor4fv, _gloffset_Color4fv)
-       GL_STUB(glColor4i, _gloffset_Color4i)
-       GL_STUB(glColor4iv, _gloffset_Color4iv)
-       GL_STUB(glColor4s, _gloffset_Color4s)
-       GL_STUB(glColor4sv, _gloffset_Color4sv)
-       GL_STUB(glColor4ub, _gloffset_Color4ub)
-       GL_STUB(glColor4ubv, _gloffset_Color4ubv)
-       GL_STUB(glColor4ui, _gloffset_Color4ui)
-       GL_STUB(glColor4uiv, _gloffset_Color4uiv)
-       GL_STUB(glColor4us, _gloffset_Color4us)
-       GL_STUB(glColor4usv, _gloffset_Color4usv)
-       GL_STUB(glEdgeFlag, _gloffset_EdgeFlag)
-       GL_STUB(glEdgeFlagv, _gloffset_EdgeFlagv)
-       GL_STUB(glEnd, _gloffset_End)
-       GL_STUB(glIndexd, _gloffset_Indexd)
-       GL_STUB(glIndexdv, _gloffset_Indexdv)
-       GL_STUB(glIndexf, _gloffset_Indexf)
-       GL_STUB(glIndexfv, _gloffset_Indexfv)
-       GL_STUB(glIndexi, _gloffset_Indexi)
-       GL_STUB(glIndexiv, _gloffset_Indexiv)
-       GL_STUB(glIndexs, _gloffset_Indexs)
-       GL_STUB(glIndexsv, _gloffset_Indexsv)
-       GL_STUB(glNormal3b, _gloffset_Normal3b)
-       GL_STUB(glNormal3bv, _gloffset_Normal3bv)
-       GL_STUB(glNormal3d, _gloffset_Normal3d)
-       GL_STUB(glNormal3dv, _gloffset_Normal3dv)
-       GL_STUB(glNormal3f, _gloffset_Normal3f)
-       GL_STUB(glNormal3fv, _gloffset_Normal3fv)
-       GL_STUB(glNormal3i, _gloffset_Normal3i)
-       GL_STUB(glNormal3iv, _gloffset_Normal3iv)
-       GL_STUB(glNormal3s, _gloffset_Normal3s)
-       GL_STUB(glNormal3sv, _gloffset_Normal3sv)
-       GL_STUB(glRasterPos2d, _gloffset_RasterPos2d)
-       GL_STUB(glRasterPos2dv, _gloffset_RasterPos2dv)
-       GL_STUB(glRasterPos2f, _gloffset_RasterPos2f)
-       GL_STUB(glRasterPos2fv, _gloffset_RasterPos2fv)
-       GL_STUB(glRasterPos2i, _gloffset_RasterPos2i)
-       GL_STUB(glRasterPos2iv, _gloffset_RasterPos2iv)
-       GL_STUB(glRasterPos2s, _gloffset_RasterPos2s)
-       GL_STUB(glRasterPos2sv, _gloffset_RasterPos2sv)
-       GL_STUB(glRasterPos3d, _gloffset_RasterPos3d)
-       GL_STUB(glRasterPos3dv, _gloffset_RasterPos3dv)
-       GL_STUB(glRasterPos3f, _gloffset_RasterPos3f)
-       GL_STUB(glRasterPos3fv, _gloffset_RasterPos3fv)
-       GL_STUB(glRasterPos3i, _gloffset_RasterPos3i)
-       GL_STUB(glRasterPos3iv, _gloffset_RasterPos3iv)
-       GL_STUB(glRasterPos3s, _gloffset_RasterPos3s)
-       GL_STUB(glRasterPos3sv, _gloffset_RasterPos3sv)
-       GL_STUB(glRasterPos4d, _gloffset_RasterPos4d)
-       GL_STUB(glRasterPos4dv, _gloffset_RasterPos4dv)
-       GL_STUB(glRasterPos4f, _gloffset_RasterPos4f)
-       GL_STUB(glRasterPos4fv, _gloffset_RasterPos4fv)
-       GL_STUB(glRasterPos4i, _gloffset_RasterPos4i)
-       GL_STUB(glRasterPos4iv, _gloffset_RasterPos4iv)
-       GL_STUB(glRasterPos4s, _gloffset_RasterPos4s)
-       GL_STUB(glRasterPos4sv, _gloffset_RasterPos4sv)
-       GL_STUB(glRectd, _gloffset_Rectd)
-       GL_STUB(glRectdv, _gloffset_Rectdv)
-       GL_STUB(glRectf, _gloffset_Rectf)
-       GL_STUB(glRectfv, _gloffset_Rectfv)
-       GL_STUB(glRecti, _gloffset_Recti)
-       GL_STUB(glRectiv, _gloffset_Rectiv)
-       GL_STUB(glRects, _gloffset_Rects)
-       GL_STUB(glRectsv, _gloffset_Rectsv)
-       GL_STUB(glTexCoord1d, _gloffset_TexCoord1d)
-       GL_STUB(glTexCoord1dv, _gloffset_TexCoord1dv)
-       GL_STUB(glTexCoord1f, _gloffset_TexCoord1f)
-       GL_STUB(glTexCoord1fv, _gloffset_TexCoord1fv)
-       GL_STUB(glTexCoord1i, _gloffset_TexCoord1i)
-       GL_STUB(glTexCoord1iv, _gloffset_TexCoord1iv)
-       GL_STUB(glTexCoord1s, _gloffset_TexCoord1s)
-       GL_STUB(glTexCoord1sv, _gloffset_TexCoord1sv)
-       GL_STUB(glTexCoord2d, _gloffset_TexCoord2d)
-       GL_STUB(glTexCoord2dv, _gloffset_TexCoord2dv)
-       GL_STUB(glTexCoord2f, _gloffset_TexCoord2f)
-       GL_STUB(glTexCoord2fv, _gloffset_TexCoord2fv)
-       GL_STUB(glTexCoord2i, _gloffset_TexCoord2i)
-       GL_STUB(glTexCoord2iv, _gloffset_TexCoord2iv)
-       GL_STUB(glTexCoord2s, _gloffset_TexCoord2s)
-       GL_STUB(glTexCoord2sv, _gloffset_TexCoord2sv)
-       GL_STUB(glTexCoord3d, _gloffset_TexCoord3d)
-       GL_STUB(glTexCoord3dv, _gloffset_TexCoord3dv)
-       GL_STUB(glTexCoord3f, _gloffset_TexCoord3f)
-       GL_STUB(glTexCoord3fv, _gloffset_TexCoord3fv)
-       GL_STUB(glTexCoord3i, _gloffset_TexCoord3i)
-       GL_STUB(glTexCoord3iv, _gloffset_TexCoord3iv)
-       GL_STUB(glTexCoord3s, _gloffset_TexCoord3s)
-       GL_STUB(glTexCoord3sv, _gloffset_TexCoord3sv)
-       GL_STUB(glTexCoord4d, _gloffset_TexCoord4d)
-       GL_STUB(glTexCoord4dv, _gloffset_TexCoord4dv)
-       GL_STUB(glTexCoord4f, _gloffset_TexCoord4f)
-       GL_STUB(glTexCoord4fv, _gloffset_TexCoord4fv)
-       GL_STUB(glTexCoord4i, _gloffset_TexCoord4i)
-       GL_STUB(glTexCoord4iv, _gloffset_TexCoord4iv)
-       GL_STUB(glTexCoord4s, _gloffset_TexCoord4s)
-       GL_STUB(glTexCoord4sv, _gloffset_TexCoord4sv)
-       GL_STUB(glVertex2d, _gloffset_Vertex2d)
-       GL_STUB(glVertex2dv, _gloffset_Vertex2dv)
-       GL_STUB(glVertex2f, _gloffset_Vertex2f)
-       GL_STUB(glVertex2fv, _gloffset_Vertex2fv)
-       GL_STUB(glVertex2i, _gloffset_Vertex2i)
-       GL_STUB(glVertex2iv, _gloffset_Vertex2iv)
-       GL_STUB(glVertex2s, _gloffset_Vertex2s)
-       GL_STUB(glVertex2sv, _gloffset_Vertex2sv)
-       GL_STUB(glVertex3d, _gloffset_Vertex3d)
-       GL_STUB(glVertex3dv, _gloffset_Vertex3dv)
-       GL_STUB(glVertex3f, _gloffset_Vertex3f)
-       GL_STUB(glVertex3fv, _gloffset_Vertex3fv)
-       GL_STUB(glVertex3i, _gloffset_Vertex3i)
-       GL_STUB(glVertex3iv, _gloffset_Vertex3iv)
-       GL_STUB(glVertex3s, _gloffset_Vertex3s)
-       GL_STUB(glVertex3sv, _gloffset_Vertex3sv)
-       GL_STUB(glVertex4d, _gloffset_Vertex4d)
-       GL_STUB(glVertex4dv, _gloffset_Vertex4dv)
-       GL_STUB(glVertex4f, _gloffset_Vertex4f)
-       GL_STUB(glVertex4fv, _gloffset_Vertex4fv)
-       GL_STUB(glVertex4i, _gloffset_Vertex4i)
-       GL_STUB(glVertex4iv, _gloffset_Vertex4iv)
-       GL_STUB(glVertex4s, _gloffset_Vertex4s)
-       GL_STUB(glVertex4sv, _gloffset_Vertex4sv)
-       GL_STUB(glClipPlane, _gloffset_ClipPlane)
-       GL_STUB(glColorMaterial, _gloffset_ColorMaterial)
-       GL_STUB(glCullFace, _gloffset_CullFace)
-       GL_STUB(glFogf, _gloffset_Fogf)
-       GL_STUB(glFogfv, _gloffset_Fogfv)
-       GL_STUB(glFogi, _gloffset_Fogi)
-       GL_STUB(glFogiv, _gloffset_Fogiv)
-       GL_STUB(glFrontFace, _gloffset_FrontFace)
-       GL_STUB(glHint, _gloffset_Hint)
-       GL_STUB(glLightf, _gloffset_Lightf)
-       GL_STUB(glLightfv, _gloffset_Lightfv)
-       GL_STUB(glLighti, _gloffset_Lighti)
-       GL_STUB(glLightiv, _gloffset_Lightiv)
-       GL_STUB(glLightModelf, _gloffset_LightModelf)
-       GL_STUB(glLightModelfv, _gloffset_LightModelfv)
-       GL_STUB(glLightModeli, _gloffset_LightModeli)
-       GL_STUB(glLightModeliv, _gloffset_LightModeliv)
-       GL_STUB(glLineStipple, _gloffset_LineStipple)
-       GL_STUB(glLineWidth, _gloffset_LineWidth)
-       GL_STUB(glMaterialf, _gloffset_Materialf)
-       GL_STUB(glMaterialfv, _gloffset_Materialfv)
-       GL_STUB(glMateriali, _gloffset_Materiali)
-       GL_STUB(glMaterialiv, _gloffset_Materialiv)
-       GL_STUB(glPointSize, _gloffset_PointSize)
-       GL_STUB(glPolygonMode, _gloffset_PolygonMode)
-       GL_STUB(glPolygonStipple, _gloffset_PolygonStipple)
-       GL_STUB(glScissor, _gloffset_Scissor)
-       GL_STUB(glShadeModel, _gloffset_ShadeModel)
-       GL_STUB(glTexParameterf, _gloffset_TexParameterf)
-       GL_STUB(glTexParameterfv, _gloffset_TexParameterfv)
-       GL_STUB(glTexParameteri, _gloffset_TexParameteri)
-       GL_STUB(glTexParameteriv, _gloffset_TexParameteriv)
-       GL_STUB(glTexImage1D, _gloffset_TexImage1D)
-       GL_STUB(glTexImage2D, _gloffset_TexImage2D)
-       GL_STUB(glTexEnvf, _gloffset_TexEnvf)
-       GL_STUB(glTexEnvfv, _gloffset_TexEnvfv)
-       GL_STUB(glTexEnvi, _gloffset_TexEnvi)
-       GL_STUB(glTexEnviv, _gloffset_TexEnviv)
-       GL_STUB(glTexGend, _gloffset_TexGend)
-       GL_STUB(glTexGendv, _gloffset_TexGendv)
-       GL_STUB(glTexGenf, _gloffset_TexGenf)
-       GL_STUB(glTexGenfv, _gloffset_TexGenfv)
-       GL_STUB(glTexGeni, _gloffset_TexGeni)
-       GL_STUB(glTexGeniv, _gloffset_TexGeniv)
-       GL_STUB(glFeedbackBuffer, _gloffset_FeedbackBuffer)
-       GL_STUB(glSelectBuffer, _gloffset_SelectBuffer)
-       GL_STUB(glRenderMode, _gloffset_RenderMode)
-       GL_STUB(glInitNames, _gloffset_InitNames)
-       GL_STUB(glLoadName, _gloffset_LoadName)
-       GL_STUB(glPassThrough, _gloffset_PassThrough)
-       GL_STUB(glPopName, _gloffset_PopName)
-       GL_STUB(glPushName, _gloffset_PushName)
-       GL_STUB(glDrawBuffer, _gloffset_DrawBuffer)
-       GL_STUB(glClear, _gloffset_Clear)
-       GL_STUB(glClearAccum, _gloffset_ClearAccum)
-       GL_STUB(glClearIndex, _gloffset_ClearIndex)
-       GL_STUB(glClearColor, _gloffset_ClearColor)
-       GL_STUB(glClearStencil, _gloffset_ClearStencil)
-       GL_STUB(glClearDepth, _gloffset_ClearDepth)
-       GL_STUB(glStencilMask, _gloffset_StencilMask)
-       GL_STUB(glColorMask, _gloffset_ColorMask)
-       GL_STUB(glDepthMask, _gloffset_DepthMask)
-       GL_STUB(glIndexMask, _gloffset_IndexMask)
-       GL_STUB(glAccum, _gloffset_Accum)
-       GL_STUB(glDisable, _gloffset_Disable)
-       GL_STUB(glEnable, _gloffset_Enable)
-       GL_STUB(glFinish, _gloffset_Finish)
-       GL_STUB(glFlush, _gloffset_Flush)
-       GL_STUB(glPopAttrib, _gloffset_PopAttrib)
-       GL_STUB(glPushAttrib, _gloffset_PushAttrib)
-       GL_STUB(glMap1d, _gloffset_Map1d)
-       GL_STUB(glMap1f, _gloffset_Map1f)
-       GL_STUB(glMap2d, _gloffset_Map2d)
-       GL_STUB(glMap2f, _gloffset_Map2f)
-       GL_STUB(glMapGrid1d, _gloffset_MapGrid1d)
-       GL_STUB(glMapGrid1f, _gloffset_MapGrid1f)
-       GL_STUB(glMapGrid2d, _gloffset_MapGrid2d)
-       GL_STUB(glMapGrid2f, _gloffset_MapGrid2f)
-       GL_STUB(glEvalCoord1d, _gloffset_EvalCoord1d)
-       GL_STUB(glEvalCoord1dv, _gloffset_EvalCoord1dv)
-       GL_STUB(glEvalCoord1f, _gloffset_EvalCoord1f)
-       GL_STUB(glEvalCoord1fv, _gloffset_EvalCoord1fv)
-       GL_STUB(glEvalCoord2d, _gloffset_EvalCoord2d)
-       GL_STUB(glEvalCoord2dv, _gloffset_EvalCoord2dv)
-       GL_STUB(glEvalCoord2f, _gloffset_EvalCoord2f)
-       GL_STUB(glEvalCoord2fv, _gloffset_EvalCoord2fv)
-       GL_STUB(glEvalMesh1, _gloffset_EvalMesh1)
-       GL_STUB(glEvalPoint1, _gloffset_EvalPoint1)
-       GL_STUB(glEvalMesh2, _gloffset_EvalMesh2)
-       GL_STUB(glEvalPoint2, _gloffset_EvalPoint2)
-       GL_STUB(glAlphaFunc, _gloffset_AlphaFunc)
-       GL_STUB(glBlendFunc, _gloffset_BlendFunc)
-       GL_STUB(glLogicOp, _gloffset_LogicOp)
-       GL_STUB(glStencilFunc, _gloffset_StencilFunc)
-       GL_STUB(glStencilOp, _gloffset_StencilOp)
-       GL_STUB(glDepthFunc, _gloffset_DepthFunc)
-       GL_STUB(glPixelZoom, _gloffset_PixelZoom)
-       GL_STUB(glPixelTransferf, _gloffset_PixelTransferf)
-       GL_STUB(glPixelTransferi, _gloffset_PixelTransferi)
-       GL_STUB(glPixelStoref, _gloffset_PixelStoref)
-       GL_STUB(glPixelStorei, _gloffset_PixelStorei)
-       GL_STUB(glPixelMapfv, _gloffset_PixelMapfv)
-       GL_STUB(glPixelMapuiv, _gloffset_PixelMapuiv)
-       GL_STUB(glPixelMapusv, _gloffset_PixelMapusv)
-       GL_STUB(glReadBuffer, _gloffset_ReadBuffer)
-       GL_STUB(glCopyPixels, _gloffset_CopyPixels)
-       GL_STUB(glReadPixels, _gloffset_ReadPixels)
-       GL_STUB(glDrawPixels, _gloffset_DrawPixels)
-       GL_STUB(glGetBooleanv, _gloffset_GetBooleanv)
-       GL_STUB(glGetClipPlane, _gloffset_GetClipPlane)
-       GL_STUB(glGetDoublev, _gloffset_GetDoublev)
-       GL_STUB(glGetError, _gloffset_GetError)
-       GL_STUB(glGetFloatv, _gloffset_GetFloatv)
-       GL_STUB(glGetIntegerv, _gloffset_GetIntegerv)
-       GL_STUB(glGetLightfv, _gloffset_GetLightfv)
-       GL_STUB(glGetLightiv, _gloffset_GetLightiv)
-       GL_STUB(glGetMapdv, _gloffset_GetMapdv)
-       GL_STUB(glGetMapfv, _gloffset_GetMapfv)
-       GL_STUB(glGetMapiv, _gloffset_GetMapiv)
-       GL_STUB(glGetMaterialfv, _gloffset_GetMaterialfv)
-       GL_STUB(glGetMaterialiv, _gloffset_GetMaterialiv)
-       GL_STUB(glGetPixelMapfv, _gloffset_GetPixelMapfv)
-       GL_STUB(glGetPixelMapuiv, _gloffset_GetPixelMapuiv)
-       GL_STUB(glGetPixelMapusv, _gloffset_GetPixelMapusv)
-       GL_STUB(glGetPolygonStipple, _gloffset_GetPolygonStipple)
-       GL_STUB(glGetString, _gloffset_GetString)
-       GL_STUB(glGetTexEnvfv, _gloffset_GetTexEnvfv)
-       GL_STUB(glGetTexEnviv, _gloffset_GetTexEnviv)
-       GL_STUB(glGetTexGendv, _gloffset_GetTexGendv)
-       GL_STUB(glGetTexGenfv, _gloffset_GetTexGenfv)
-       GL_STUB(glGetTexGeniv, _gloffset_GetTexGeniv)
-       GL_STUB(glGetTexImage, _gloffset_GetTexImage)
-       GL_STUB(glGetTexParameterfv, _gloffset_GetTexParameterfv)
-       GL_STUB(glGetTexParameteriv, _gloffset_GetTexParameteriv)
-       GL_STUB(glGetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv)
-       GL_STUB(glGetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv)
-       GL_STUB(glIsEnabled, _gloffset_IsEnabled)
-       GL_STUB(glIsList, _gloffset_IsList)
-       GL_STUB(glDepthRange, _gloffset_DepthRange)
-       GL_STUB(glFrustum, _gloffset_Frustum)
-       GL_STUB(glLoadIdentity, _gloffset_LoadIdentity)
-       GL_STUB(glLoadMatrixf, _gloffset_LoadMatrixf)
-       GL_STUB(glLoadMatrixd, _gloffset_LoadMatrixd)
-       GL_STUB(glMatrixMode, _gloffset_MatrixMode)
-       GL_STUB(glMultMatrixf, _gloffset_MultMatrixf)
-       GL_STUB(glMultMatrixd, _gloffset_MultMatrixd)
-       GL_STUB(glOrtho, _gloffset_Ortho)
-       GL_STUB(glPopMatrix, _gloffset_PopMatrix)
-       GL_STUB(glPushMatrix, _gloffset_PushMatrix)
-       GL_STUB(glRotated, _gloffset_Rotated)
-       GL_STUB(glRotatef, _gloffset_Rotatef)
-       GL_STUB(glScaled, _gloffset_Scaled)
-       GL_STUB(glScalef, _gloffset_Scalef)
-       GL_STUB(glTranslated, _gloffset_Translated)
-       GL_STUB(glTranslatef, _gloffset_Translatef)
-       GL_STUB(glViewport, _gloffset_Viewport)
-       GL_STUB(glArrayElement, _gloffset_ArrayElement)
-       GL_STUB(glBindTexture, _gloffset_BindTexture)
-       GL_STUB(glColorPointer, _gloffset_ColorPointer)
-       GL_STUB(glDisableClientState, _gloffset_DisableClientState)
-       GL_STUB(glDrawArrays, _gloffset_DrawArrays)
-       GL_STUB(glDrawElements, _gloffset_DrawElements)
-       GL_STUB(glEdgeFlagPointer, _gloffset_EdgeFlagPointer)
-       GL_STUB(glEnableClientState, _gloffset_EnableClientState)
-       GL_STUB(glIndexPointer, _gloffset_IndexPointer)
-       GL_STUB(glIndexub, _gloffset_Indexub)
-       GL_STUB(glIndexubv, _gloffset_Indexubv)
-       GL_STUB(glInterleavedArrays, _gloffset_InterleavedArrays)
-       GL_STUB(glNormalPointer, _gloffset_NormalPointer)
-       GL_STUB(glPolygonOffset, _gloffset_PolygonOffset)
-       GL_STUB(glTexCoordPointer, _gloffset_TexCoordPointer)
-       GL_STUB(glVertexPointer, _gloffset_VertexPointer)
-       GL_STUB(glAreTexturesResident, _gloffset_AreTexturesResident)
-       GL_STUB(glCopyTexImage1D, _gloffset_CopyTexImage1D)
-       GL_STUB(glCopyTexImage2D, _gloffset_CopyTexImage2D)
-       GL_STUB(glCopyTexSubImage1D, _gloffset_CopyTexSubImage1D)
-       GL_STUB(glCopyTexSubImage2D, _gloffset_CopyTexSubImage2D)
-       GL_STUB(glDeleteTextures, _gloffset_DeleteTextures)
-       GL_STUB(glGenTextures, _gloffset_GenTextures)
-       GL_STUB(glGetPointerv, _gloffset_GetPointerv)
-       GL_STUB(glIsTexture, _gloffset_IsTexture)
-       GL_STUB(glPrioritizeTextures, _gloffset_PrioritizeTextures)
-       GL_STUB(glTexSubImage1D, _gloffset_TexSubImage1D)
-       GL_STUB(glTexSubImage2D, _gloffset_TexSubImage2D)
-       GL_STUB(glPopClientAttrib, _gloffset_PopClientAttrib)
-       GL_STUB(glPushClientAttrib, _gloffset_PushClientAttrib)
-       GL_STUB(glBlendColor, _gloffset_BlendColor)
-       GL_STUB(glBlendEquation, _gloffset_BlendEquation)
-       GL_STUB(glDrawRangeElements, _gloffset_DrawRangeElements)
-       GL_STUB(glColorTable, _gloffset_ColorTable)
-       GL_STUB(glColorTableParameterfv, _gloffset_ColorTableParameterfv)
-       GL_STUB(glColorTableParameteriv, _gloffset_ColorTableParameteriv)
-       GL_STUB(glCopyColorTable, _gloffset_CopyColorTable)
-       GL_STUB(glGetColorTable, _gloffset_GetColorTable)
-       GL_STUB(glGetColorTableParameterfv, _gloffset_GetColorTableParameterfv)
-       GL_STUB(glGetColorTableParameteriv, _gloffset_GetColorTableParameteriv)
-       GL_STUB(glColorSubTable, _gloffset_ColorSubTable)
-       GL_STUB(glCopyColorSubTable, _gloffset_CopyColorSubTable)
-       GL_STUB(glConvolutionFilter1D, _gloffset_ConvolutionFilter1D)
-       GL_STUB(glConvolutionFilter2D, _gloffset_ConvolutionFilter2D)
-       GL_STUB(glConvolutionParameterf, _gloffset_ConvolutionParameterf)
-       GL_STUB(glConvolutionParameterfv, _gloffset_ConvolutionParameterfv)
-       GL_STUB(glConvolutionParameteri, _gloffset_ConvolutionParameteri)
-       GL_STUB(glConvolutionParameteriv, _gloffset_ConvolutionParameteriv)
-       GL_STUB(glCopyConvolutionFilter1D, _gloffset_CopyConvolutionFilter1D)
-       GL_STUB(glCopyConvolutionFilter2D, _gloffset_CopyConvolutionFilter2D)
-       GL_STUB(glGetConvolutionFilter, _gloffset_GetConvolutionFilter)
-       GL_STUB(glGetConvolutionParameterfv, _gloffset_GetConvolutionParameterfv)
-       GL_STUB(glGetConvolutionParameteriv, _gloffset_GetConvolutionParameteriv)
-       GL_STUB(glGetSeparableFilter, _gloffset_GetSeparableFilter)
-       GL_STUB(glSeparableFilter2D, _gloffset_SeparableFilter2D)
-       GL_STUB(glGetHistogram, _gloffset_GetHistogram)
-       GL_STUB(glGetHistogramParameterfv, _gloffset_GetHistogramParameterfv)
-       GL_STUB(glGetHistogramParameteriv, _gloffset_GetHistogramParameteriv)
-       GL_STUB(glGetMinmax, _gloffset_GetMinmax)
-       GL_STUB(glGetMinmaxParameterfv, _gloffset_GetMinmaxParameterfv)
-       GL_STUB(glGetMinmaxParameteriv, _gloffset_GetMinmaxParameteriv)
-       GL_STUB(glHistogram, _gloffset_Histogram)
-       GL_STUB(glMinmax, _gloffset_Minmax)
-       GL_STUB(glResetHistogram, _gloffset_ResetHistogram)
-       GL_STUB(glResetMinmax, _gloffset_ResetMinmax)
-       GL_STUB(glTexImage3D, _gloffset_TexImage3D)
-       GL_STUB(glTexSubImage3D, _gloffset_TexSubImage3D)
-       GL_STUB(glCopyTexSubImage3D, _gloffset_CopyTexSubImage3D)
-       GL_STUB(glActiveTextureARB, _gloffset_ActiveTextureARB)
-       GL_STUB(glClientActiveTextureARB, _gloffset_ClientActiveTextureARB)
-       GL_STUB(glMultiTexCoord1dARB, _gloffset_MultiTexCoord1dARB)
-       GL_STUB(glMultiTexCoord1dvARB, _gloffset_MultiTexCoord1dvARB)
-       GL_STUB(glMultiTexCoord1fARB, _gloffset_MultiTexCoord1fARB)
-       GL_STUB(glMultiTexCoord1fvARB, _gloffset_MultiTexCoord1fvARB)
-       GL_STUB(glMultiTexCoord1iARB, _gloffset_MultiTexCoord1iARB)
-       GL_STUB(glMultiTexCoord1ivARB, _gloffset_MultiTexCoord1ivARB)
-       GL_STUB(glMultiTexCoord1sARB, _gloffset_MultiTexCoord1sARB)
-       GL_STUB(glMultiTexCoord1svARB, _gloffset_MultiTexCoord1svARB)
-       GL_STUB(glMultiTexCoord2dARB, _gloffset_MultiTexCoord2dARB)
-       GL_STUB(glMultiTexCoord2dvARB, _gloffset_MultiTexCoord2dvARB)
-       GL_STUB(glMultiTexCoord2fARB, _gloffset_MultiTexCoord2fARB)
-       GL_STUB(glMultiTexCoord2fvARB, _gloffset_MultiTexCoord2fvARB)
-       GL_STUB(glMultiTexCoord2iARB, _gloffset_MultiTexCoord2iARB)
-       GL_STUB(glMultiTexCoord2ivARB, _gloffset_MultiTexCoord2ivARB)
-       GL_STUB(glMultiTexCoord2sARB, _gloffset_MultiTexCoord2sARB)
-       GL_STUB(glMultiTexCoord2svARB, _gloffset_MultiTexCoord2svARB)
-       GL_STUB(glMultiTexCoord3dARB, _gloffset_MultiTexCoord3dARB)
-       GL_STUB(glMultiTexCoord3dvARB, _gloffset_MultiTexCoord3dvARB)
-       GL_STUB(glMultiTexCoord3fARB, _gloffset_MultiTexCoord3fARB)
-       GL_STUB(glMultiTexCoord3fvARB, _gloffset_MultiTexCoord3fvARB)
-       GL_STUB(glMultiTexCoord3iARB, _gloffset_MultiTexCoord3iARB)
-       GL_STUB(glMultiTexCoord3ivARB, _gloffset_MultiTexCoord3ivARB)
-       GL_STUB(glMultiTexCoord3sARB, _gloffset_MultiTexCoord3sARB)
-       GL_STUB(glMultiTexCoord3svARB, _gloffset_MultiTexCoord3svARB)
-       GL_STUB(glMultiTexCoord4dARB, _gloffset_MultiTexCoord4dARB)
-       GL_STUB(glMultiTexCoord4dvARB, _gloffset_MultiTexCoord4dvARB)
-       GL_STUB(glMultiTexCoord4fARB, _gloffset_MultiTexCoord4fARB)
-       GL_STUB(glMultiTexCoord4fvARB, _gloffset_MultiTexCoord4fvARB)
-       GL_STUB(glMultiTexCoord4iARB, _gloffset_MultiTexCoord4iARB)
-       GL_STUB(glMultiTexCoord4ivARB, _gloffset_MultiTexCoord4ivARB)
-       GL_STUB(glMultiTexCoord4sARB, _gloffset_MultiTexCoord4sARB)
-       GL_STUB(glMultiTexCoord4svARB, _gloffset_MultiTexCoord4svARB)
-       GL_STUB(glAttachShader, _gloffset_AttachShader)
-       GL_STUB(glCreateProgram, _gloffset_CreateProgram)
-       GL_STUB(glCreateShader, _gloffset_CreateShader)
-       GL_STUB(glDeleteProgram, _gloffset_DeleteProgram)
-       GL_STUB(glDeleteShader, _gloffset_DeleteShader)
-       GL_STUB(glDetachShader, _gloffset_DetachShader)
-       GL_STUB(glGetAttachedShaders, _gloffset_GetAttachedShaders)
-       GL_STUB(glGetProgramInfoLog, _gloffset_GetProgramInfoLog)
-       GL_STUB(glGetProgramiv, _gloffset_GetProgramiv)
-       GL_STUB(glGetShaderInfoLog, _gloffset_GetShaderInfoLog)
-       GL_STUB(glGetShaderiv, _gloffset_GetShaderiv)
-       GL_STUB(glIsProgram, _gloffset_IsProgram)
-       GL_STUB(glIsShader, _gloffset_IsShader)
-       GL_STUB(glStencilFuncSeparate, _gloffset_StencilFuncSeparate)
-       GL_STUB(glStencilMaskSeparate, _gloffset_StencilMaskSeparate)
-       GL_STUB(glStencilOpSeparate, _gloffset_StencilOpSeparate)
-       GL_STUB(glUniformMatrix2x3fv, _gloffset_UniformMatrix2x3fv)
-       GL_STUB(glUniformMatrix2x4fv, _gloffset_UniformMatrix2x4fv)
-       GL_STUB(glUniformMatrix3x2fv, _gloffset_UniformMatrix3x2fv)
-       GL_STUB(glUniformMatrix3x4fv, _gloffset_UniformMatrix3x4fv)
-       GL_STUB(glUniformMatrix4x2fv, _gloffset_UniformMatrix4x2fv)
-       GL_STUB(glUniformMatrix4x3fv, _gloffset_UniformMatrix4x3fv)
-       GL_STUB(glDrawArraysInstanced, _gloffset_DrawArraysInstanced)
-       GL_STUB(glDrawElementsInstanced, _gloffset_DrawElementsInstanced)
-       GL_STUB(glLoadTransposeMatrixdARB, _gloffset_LoadTransposeMatrixdARB)
-       GL_STUB(glLoadTransposeMatrixfARB, _gloffset_LoadTransposeMatrixfARB)
-       GL_STUB(glMultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB)
-       GL_STUB(glMultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB)
-       GL_STUB(glSampleCoverageARB, _gloffset_SampleCoverageARB)
-       GL_STUB(glCompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB)
-       GL_STUB(glCompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB)
-       GL_STUB(glCompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB)
-       GL_STUB(glCompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB)
-       GL_STUB(glCompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB)
-       GL_STUB(glCompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB)
-       GL_STUB(glGetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB)
-       GL_STUB(glDisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB)
-       GL_STUB(glEnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB)
-       GL_STUB(glGetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB)
-       GL_STUB(glGetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB)
-       GL_STUB(glGetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB)
-       GL_STUB(glGetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB)
-       GL_STUB(glGetProgramStringARB, _gloffset_GetProgramStringARB)
-       GL_STUB(glGetProgramivARB, _gloffset_GetProgramivARB)
-       GL_STUB(glGetVertexAttribdvARB, _gloffset_GetVertexAttribdvARB)
-       GL_STUB(glGetVertexAttribfvARB, _gloffset_GetVertexAttribfvARB)
-       GL_STUB(glGetVertexAttribivARB, _gloffset_GetVertexAttribivARB)
-       GL_STUB(glProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB)
-       GL_STUB(glProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB)
-       GL_STUB(glProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB)
-       GL_STUB(glProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB)
-       GL_STUB(glProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB)
-       GL_STUB(glProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB)
-       GL_STUB(glProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB)
-       GL_STUB(glProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB)
-       GL_STUB(glProgramStringARB, _gloffset_ProgramStringARB)
-       GL_STUB(glVertexAttrib1dARB, _gloffset_VertexAttrib1dARB)
-       GL_STUB(glVertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB)
-       GL_STUB(glVertexAttrib1fARB, _gloffset_VertexAttrib1fARB)
-       GL_STUB(glVertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB)
-       GL_STUB(glVertexAttrib1sARB, _gloffset_VertexAttrib1sARB)
-       GL_STUB(glVertexAttrib1svARB, _gloffset_VertexAttrib1svARB)
-       GL_STUB(glVertexAttrib2dARB, _gloffset_VertexAttrib2dARB)
-       GL_STUB(glVertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB)
-       GL_STUB(glVertexAttrib2fARB, _gloffset_VertexAttrib2fARB)
-       GL_STUB(glVertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB)
-       GL_STUB(glVertexAttrib2sARB, _gloffset_VertexAttrib2sARB)
-       GL_STUB(glVertexAttrib2svARB, _gloffset_VertexAttrib2svARB)
-       GL_STUB(glVertexAttrib3dARB, _gloffset_VertexAttrib3dARB)
-       GL_STUB(glVertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB)
-       GL_STUB(glVertexAttrib3fARB, _gloffset_VertexAttrib3fARB)
-       GL_STUB(glVertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB)
-       GL_STUB(glVertexAttrib3sARB, _gloffset_VertexAttrib3sARB)
-       GL_STUB(glVertexAttrib3svARB, _gloffset_VertexAttrib3svARB)
-       GL_STUB(glVertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB)
-       GL_STUB(glVertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB)
-       GL_STUB(glVertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB)
-       GL_STUB(glVertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB)
-       GL_STUB(glVertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB)
-       GL_STUB(glVertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB)
-       GL_STUB(glVertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB)
-       GL_STUB(glVertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB)
-       GL_STUB(glVertexAttrib4dARB, _gloffset_VertexAttrib4dARB)
-       GL_STUB(glVertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB)
-       GL_STUB(glVertexAttrib4fARB, _gloffset_VertexAttrib4fARB)
-       GL_STUB(glVertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB)
-       GL_STUB(glVertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB)
-       GL_STUB(glVertexAttrib4sARB, _gloffset_VertexAttrib4sARB)
-       GL_STUB(glVertexAttrib4svARB, _gloffset_VertexAttrib4svARB)
-       GL_STUB(glVertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB)
-       GL_STUB(glVertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB)
-       GL_STUB(glVertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB)
-       GL_STUB(glVertexAttribPointerARB, _gloffset_VertexAttribPointerARB)
-       GL_STUB(glBindBufferARB, _gloffset_BindBufferARB)
-       GL_STUB(glBufferDataARB, _gloffset_BufferDataARB)
-       GL_STUB(glBufferSubDataARB, _gloffset_BufferSubDataARB)
-       GL_STUB(glDeleteBuffersARB, _gloffset_DeleteBuffersARB)
-       GL_STUB(glGenBuffersARB, _gloffset_GenBuffersARB)
-       GL_STUB(glGetBufferParameterivARB, _gloffset_GetBufferParameterivARB)
-       GL_STUB(glGetBufferPointervARB, _gloffset_GetBufferPointervARB)
-       GL_STUB(glGetBufferSubDataARB, _gloffset_GetBufferSubDataARB)
-       GL_STUB(glIsBufferARB, _gloffset_IsBufferARB)
-       GL_STUB(glMapBufferARB, _gloffset_MapBufferARB)
-       GL_STUB(glUnmapBufferARB, _gloffset_UnmapBufferARB)
-       GL_STUB(glBeginQueryARB, _gloffset_BeginQueryARB)
-       GL_STUB(glDeleteQueriesARB, _gloffset_DeleteQueriesARB)
-       GL_STUB(glEndQueryARB, _gloffset_EndQueryARB)
-       GL_STUB(glGenQueriesARB, _gloffset_GenQueriesARB)
-       GL_STUB(glGetQueryObjectivARB, _gloffset_GetQueryObjectivARB)
-       GL_STUB(glGetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB)
-       GL_STUB(glGetQueryivARB, _gloffset_GetQueryivARB)
-       GL_STUB(glIsQueryARB, _gloffset_IsQueryARB)
-       GL_STUB(glAttachObjectARB, _gloffset_AttachObjectARB)
-       GL_STUB(glCompileShaderARB, _gloffset_CompileShaderARB)
-       GL_STUB(glCreateProgramObjectARB, _gloffset_CreateProgramObjectARB)
-       GL_STUB(glCreateShaderObjectARB, _gloffset_CreateShaderObjectARB)
-       GL_STUB(glDeleteObjectARB, _gloffset_DeleteObjectARB)
-       GL_STUB(glDetachObjectARB, _gloffset_DetachObjectARB)
-       GL_STUB(glGetActiveUniformARB, _gloffset_GetActiveUniformARB)
-       GL_STUB(glGetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB)
-       GL_STUB(glGetHandleARB, _gloffset_GetHandleARB)
-       GL_STUB(glGetInfoLogARB, _gloffset_GetInfoLogARB)
-       GL_STUB(glGetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB)
-       GL_STUB(glGetObjectParameterivARB, _gloffset_GetObjectParameterivARB)
-       GL_STUB(glGetShaderSourceARB, _gloffset_GetShaderSourceARB)
-       GL_STUB(glGetUniformLocationARB, _gloffset_GetUniformLocationARB)
-       GL_STUB(glGetUniformfvARB, _gloffset_GetUniformfvARB)
-       GL_STUB(glGetUniformivARB, _gloffset_GetUniformivARB)
-       GL_STUB(glLinkProgramARB, _gloffset_LinkProgramARB)
-       GL_STUB(glShaderSourceARB, _gloffset_ShaderSourceARB)
-       GL_STUB(glUniform1fARB, _gloffset_Uniform1fARB)
-       GL_STUB(glUniform1fvARB, _gloffset_Uniform1fvARB)
-       GL_STUB(glUniform1iARB, _gloffset_Uniform1iARB)
-       GL_STUB(glUniform1ivARB, _gloffset_Uniform1ivARB)
-       GL_STUB(glUniform2fARB, _gloffset_Uniform2fARB)
-       GL_STUB(glUniform2fvARB, _gloffset_Uniform2fvARB)
-       GL_STUB(glUniform2iARB, _gloffset_Uniform2iARB)
-       GL_STUB(glUniform2ivARB, _gloffset_Uniform2ivARB)
-       GL_STUB(glUniform3fARB, _gloffset_Uniform3fARB)
-       GL_STUB(glUniform3fvARB, _gloffset_Uniform3fvARB)
-       GL_STUB(glUniform3iARB, _gloffset_Uniform3iARB)
-       GL_STUB(glUniform3ivARB, _gloffset_Uniform3ivARB)
-       GL_STUB(glUniform4fARB, _gloffset_Uniform4fARB)
-       GL_STUB(glUniform4fvARB, _gloffset_Uniform4fvARB)
-       GL_STUB(glUniform4iARB, _gloffset_Uniform4iARB)
-       GL_STUB(glUniform4ivARB, _gloffset_Uniform4ivARB)
-       GL_STUB(glUniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB)
-       GL_STUB(glUniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB)
-       GL_STUB(glUniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB)
-       GL_STUB(glUseProgramObjectARB, _gloffset_UseProgramObjectARB)
-       GL_STUB(glValidateProgramARB, _gloffset_ValidateProgramARB)
-       GL_STUB(glBindAttribLocationARB, _gloffset_BindAttribLocationARB)
-       GL_STUB(glGetActiveAttribARB, _gloffset_GetActiveAttribARB)
-       GL_STUB(glGetAttribLocationARB, _gloffset_GetAttribLocationARB)
-       GL_STUB(glDrawBuffersARB, _gloffset_DrawBuffersARB)
-       GL_STUB(glRenderbufferStorageMultisample, _gloffset_RenderbufferStorageMultisample)
-       GL_STUB(glFlushMappedBufferRange, _gloffset_FlushMappedBufferRange)
-       GL_STUB(glMapBufferRange, _gloffset_MapBufferRange)
-       GL_STUB(glBindVertexArray, _gloffset_BindVertexArray)
-       GL_STUB(glGenVertexArrays, _gloffset_GenVertexArrays)
-       GL_STUB(glCopyBufferSubData, _gloffset_CopyBufferSubData)
-       GL_STUB(glClientWaitSync, _gloffset_ClientWaitSync)
-       GL_STUB(glDeleteSync, _gloffset_DeleteSync)
-       GL_STUB(glFenceSync, _gloffset_FenceSync)
-       GL_STUB(glGetInteger64v, _gloffset_GetInteger64v)
-       GL_STUB(glGetSynciv, _gloffset_GetSynciv)
-       GL_STUB(glIsSync, _gloffset_IsSync)
-       GL_STUB(glWaitSync, _gloffset_WaitSync)
-       GL_STUB(glDrawElementsBaseVertex, _gloffset_DrawElementsBaseVertex)
-       GL_STUB(glDrawRangeElementsBaseVertex, _gloffset_DrawRangeElementsBaseVertex)
-       GL_STUB(glMultiDrawElementsBaseVertex, _gloffset_MultiDrawElementsBaseVertex)
-       GL_STUB(glPolygonOffsetEXT, _gloffset_PolygonOffsetEXT)
-       GL_STUB(gl_dispatch_stub_580, _gloffset_GetPixelTexGenParameterfvSGIS)
-       HIDDEN(gl_dispatch_stub_580)
-       GL_STUB(gl_dispatch_stub_581, _gloffset_GetPixelTexGenParameterivSGIS)
-       HIDDEN(gl_dispatch_stub_581)
-       GL_STUB(gl_dispatch_stub_582, _gloffset_PixelTexGenParameterfSGIS)
-       HIDDEN(gl_dispatch_stub_582)
-       GL_STUB(gl_dispatch_stub_583, _gloffset_PixelTexGenParameterfvSGIS)
-       HIDDEN(gl_dispatch_stub_583)
-       GL_STUB(gl_dispatch_stub_584, _gloffset_PixelTexGenParameteriSGIS)
-       HIDDEN(gl_dispatch_stub_584)
-       GL_STUB(gl_dispatch_stub_585, _gloffset_PixelTexGenParameterivSGIS)
-       HIDDEN(gl_dispatch_stub_585)
-       GL_STUB(gl_dispatch_stub_586, _gloffset_SampleMaskSGIS)
-       HIDDEN(gl_dispatch_stub_586)
-       GL_STUB(gl_dispatch_stub_587, _gloffset_SamplePatternSGIS)
-       HIDDEN(gl_dispatch_stub_587)
-       GL_STUB(glColorPointerEXT, _gloffset_ColorPointerEXT)
-       GL_STUB(glEdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT)
-       GL_STUB(glIndexPointerEXT, _gloffset_IndexPointerEXT)
-       GL_STUB(glNormalPointerEXT, _gloffset_NormalPointerEXT)
-       GL_STUB(glTexCoordPointerEXT, _gloffset_TexCoordPointerEXT)
-       GL_STUB(glVertexPointerEXT, _gloffset_VertexPointerEXT)
-       GL_STUB(glPointParameterfEXT, _gloffset_PointParameterfEXT)
-       GL_STUB(glPointParameterfvEXT, _gloffset_PointParameterfvEXT)
-       GL_STUB(glLockArraysEXT, _gloffset_LockArraysEXT)
-       GL_STUB(glUnlockArraysEXT, _gloffset_UnlockArraysEXT)
-       GL_STUB(gl_dispatch_stub_598, _gloffset_CullParameterdvEXT)
-       HIDDEN(gl_dispatch_stub_598)
-       GL_STUB(gl_dispatch_stub_599, _gloffset_CullParameterfvEXT)
-       HIDDEN(gl_dispatch_stub_599)
-       GL_STUB(glSecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT)
-       GL_STUB(glSecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT)
-       GL_STUB(glSecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT)
-       GL_STUB(glSecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT)
-       GL_STUB(glSecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT)
-       GL_STUB(glSecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT)
-       GL_STUB(glSecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT)
-       GL_STUB(glSecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT)
-       GL_STUB(glSecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT)
-       GL_STUB(glSecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT)
-       GL_STUB(glSecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT)
-       GL_STUB(glSecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT)
-       GL_STUB(glSecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT)
-       GL_STUB(glSecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT)
-       GL_STUB(glSecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT)
-       GL_STUB(glSecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT)
-       GL_STUB(glSecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT)
-       GL_STUB(glMultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT)
-       GL_STUB(glMultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT)
-       GL_STUB(glFogCoordPointerEXT, _gloffset_FogCoordPointerEXT)
-       GL_STUB(glFogCoorddEXT, _gloffset_FogCoorddEXT)
-       GL_STUB(glFogCoorddvEXT, _gloffset_FogCoorddvEXT)
-       GL_STUB(glFogCoordfEXT, _gloffset_FogCoordfEXT)
-       GL_STUB(glFogCoordfvEXT, _gloffset_FogCoordfvEXT)
-       GL_STUB(gl_dispatch_stub_624, _gloffset_PixelTexGenSGIX)
-       HIDDEN(gl_dispatch_stub_624)
-       GL_STUB(glBlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT)
-       GL_STUB(glFlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV)
-       GL_STUB(glVertexArrayRangeNV, _gloffset_VertexArrayRangeNV)
-       GL_STUB(glCombinerInputNV, _gloffset_CombinerInputNV)
-       GL_STUB(glCombinerOutputNV, _gloffset_CombinerOutputNV)
-       GL_STUB(glCombinerParameterfNV, _gloffset_CombinerParameterfNV)
-       GL_STUB(glCombinerParameterfvNV, _gloffset_CombinerParameterfvNV)
-       GL_STUB(glCombinerParameteriNV, _gloffset_CombinerParameteriNV)
-       GL_STUB(glCombinerParameterivNV, _gloffset_CombinerParameterivNV)
-       GL_STUB(glFinalCombinerInputNV, _gloffset_FinalCombinerInputNV)
-       GL_STUB(glGetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV)
-       GL_STUB(glGetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV)
-       GL_STUB(glGetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV)
-       GL_STUB(glGetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV)
-       GL_STUB(glGetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV)
-       GL_STUB(glGetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV)
-       GL_STUB(glResizeBuffersMESA, _gloffset_ResizeBuffersMESA)
-       GL_STUB(glWindowPos2dMESA, _gloffset_WindowPos2dMESA)
-       GL_STUB(glWindowPos2dvMESA, _gloffset_WindowPos2dvMESA)
-       GL_STUB(glWindowPos2fMESA, _gloffset_WindowPos2fMESA)
-       GL_STUB(glWindowPos2fvMESA, _gloffset_WindowPos2fvMESA)
-       GL_STUB(glWindowPos2iMESA, _gloffset_WindowPos2iMESA)
-       GL_STUB(glWindowPos2ivMESA, _gloffset_WindowPos2ivMESA)
-       GL_STUB(glWindowPos2sMESA, _gloffset_WindowPos2sMESA)
-       GL_STUB(glWindowPos2svMESA, _gloffset_WindowPos2svMESA)
-       GL_STUB(glWindowPos3dMESA, _gloffset_WindowPos3dMESA)
-       GL_STUB(glWindowPos3dvMESA, _gloffset_WindowPos3dvMESA)
-       GL_STUB(glWindowPos3fMESA, _gloffset_WindowPos3fMESA)
-       GL_STUB(glWindowPos3fvMESA, _gloffset_WindowPos3fvMESA)
-       GL_STUB(glWindowPos3iMESA, _gloffset_WindowPos3iMESA)
-       GL_STUB(glWindowPos3ivMESA, _gloffset_WindowPos3ivMESA)
-       GL_STUB(glWindowPos3sMESA, _gloffset_WindowPos3sMESA)
-       GL_STUB(glWindowPos3svMESA, _gloffset_WindowPos3svMESA)
-       GL_STUB(glWindowPos4dMESA, _gloffset_WindowPos4dMESA)
-       GL_STUB(glWindowPos4dvMESA, _gloffset_WindowPos4dvMESA)
-       GL_STUB(glWindowPos4fMESA, _gloffset_WindowPos4fMESA)
-       GL_STUB(glWindowPos4fvMESA, _gloffset_WindowPos4fvMESA)
-       GL_STUB(glWindowPos4iMESA, _gloffset_WindowPos4iMESA)
-       GL_STUB(glWindowPos4ivMESA, _gloffset_WindowPos4ivMESA)
-       GL_STUB(glWindowPos4sMESA, _gloffset_WindowPos4sMESA)
-       GL_STUB(glWindowPos4svMESA, _gloffset_WindowPos4svMESA)
-       GL_STUB(gl_dispatch_stub_666, _gloffset_MultiModeDrawArraysIBM)
-       HIDDEN(gl_dispatch_stub_666)
-       GL_STUB(gl_dispatch_stub_667, _gloffset_MultiModeDrawElementsIBM)
-       HIDDEN(gl_dispatch_stub_667)
-       GL_STUB(gl_dispatch_stub_668, _gloffset_DeleteFencesNV)
-       HIDDEN(gl_dispatch_stub_668)
-       GL_STUB(gl_dispatch_stub_669, _gloffset_FinishFenceNV)
-       HIDDEN(gl_dispatch_stub_669)
-       GL_STUB(gl_dispatch_stub_670, _gloffset_GenFencesNV)
-       HIDDEN(gl_dispatch_stub_670)
-       GL_STUB(gl_dispatch_stub_671, _gloffset_GetFenceivNV)
-       HIDDEN(gl_dispatch_stub_671)
-       GL_STUB(gl_dispatch_stub_672, _gloffset_IsFenceNV)
-       HIDDEN(gl_dispatch_stub_672)
-       GL_STUB(gl_dispatch_stub_673, _gloffset_SetFenceNV)
-       HIDDEN(gl_dispatch_stub_673)
-       GL_STUB(gl_dispatch_stub_674, _gloffset_TestFenceNV)
-       HIDDEN(gl_dispatch_stub_674)
-       GL_STUB(glAreProgramsResidentNV, _gloffset_AreProgramsResidentNV)
-       GL_STUB(glBindProgramNV, _gloffset_BindProgramNV)
-       GL_STUB(glDeleteProgramsNV, _gloffset_DeleteProgramsNV)
-       GL_STUB(glExecuteProgramNV, _gloffset_ExecuteProgramNV)
-       GL_STUB(glGenProgramsNV, _gloffset_GenProgramsNV)
-       GL_STUB(glGetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV)
-       GL_STUB(glGetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV)
-       GL_STUB(glGetProgramStringNV, _gloffset_GetProgramStringNV)
-       GL_STUB(glGetProgramivNV, _gloffset_GetProgramivNV)
-       GL_STUB(glGetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV)
-       GL_STUB(glGetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV)
-       GL_STUB(glGetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV)
-       GL_STUB(glGetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV)
-       GL_STUB(glGetVertexAttribivNV, _gloffset_GetVertexAttribivNV)
-       GL_STUB(glIsProgramNV, _gloffset_IsProgramNV)
-       GL_STUB(glLoadProgramNV, _gloffset_LoadProgramNV)
-       GL_STUB(glProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV)
-       GL_STUB(glProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV)
-       GL_STUB(glRequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV)
-       GL_STUB(glTrackMatrixNV, _gloffset_TrackMatrixNV)
-       GL_STUB(glVertexAttrib1dNV, _gloffset_VertexAttrib1dNV)
-       GL_STUB(glVertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV)
-       GL_STUB(glVertexAttrib1fNV, _gloffset_VertexAttrib1fNV)
-       GL_STUB(glVertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV)
-       GL_STUB(glVertexAttrib1sNV, _gloffset_VertexAttrib1sNV)
-       GL_STUB(glVertexAttrib1svNV, _gloffset_VertexAttrib1svNV)
-       GL_STUB(glVertexAttrib2dNV, _gloffset_VertexAttrib2dNV)
-       GL_STUB(glVertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV)
-       GL_STUB(glVertexAttrib2fNV, _gloffset_VertexAttrib2fNV)
-       GL_STUB(glVertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV)
-       GL_STUB(glVertexAttrib2sNV, _gloffset_VertexAttrib2sNV)
-       GL_STUB(glVertexAttrib2svNV, _gloffset_VertexAttrib2svNV)
-       GL_STUB(glVertexAttrib3dNV, _gloffset_VertexAttrib3dNV)
-       GL_STUB(glVertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV)
-       GL_STUB(glVertexAttrib3fNV, _gloffset_VertexAttrib3fNV)
-       GL_STUB(glVertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV)
-       GL_STUB(glVertexAttrib3sNV, _gloffset_VertexAttrib3sNV)
-       GL_STUB(glVertexAttrib3svNV, _gloffset_VertexAttrib3svNV)
-       GL_STUB(glVertexAttrib4dNV, _gloffset_VertexAttrib4dNV)
-       GL_STUB(glVertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV)
-       GL_STUB(glVertexAttrib4fNV, _gloffset_VertexAttrib4fNV)
-       GL_STUB(glVertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV)
-       GL_STUB(glVertexAttrib4sNV, _gloffset_VertexAttrib4sNV)
-       GL_STUB(glVertexAttrib4svNV, _gloffset_VertexAttrib4svNV)
-       GL_STUB(glVertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV)
-       GL_STUB(glVertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV)
-       GL_STUB(glVertexAttribPointerNV, _gloffset_VertexAttribPointerNV)
-       GL_STUB(glVertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV)
-       GL_STUB(glVertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV)
-       GL_STUB(glVertexAttribs1svNV, _gloffset_VertexAttribs1svNV)
-       GL_STUB(glVertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV)
-       GL_STUB(glVertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV)
-       GL_STUB(glVertexAttribs2svNV, _gloffset_VertexAttribs2svNV)
-       GL_STUB(glVertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV)
-       GL_STUB(glVertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV)
-       GL_STUB(glVertexAttribs3svNV, _gloffset_VertexAttribs3svNV)
-       GL_STUB(glVertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV)
-       GL_STUB(glVertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV)
-       GL_STUB(glVertexAttribs4svNV, _gloffset_VertexAttribs4svNV)
-       GL_STUB(glVertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV)
-       GL_STUB(glGetTexBumpParameterfvATI, _gloffset_GetTexBumpParameterfvATI)
-       GL_STUB(glGetTexBumpParameterivATI, _gloffset_GetTexBumpParameterivATI)
-       GL_STUB(glTexBumpParameterfvATI, _gloffset_TexBumpParameterfvATI)
-       GL_STUB(glTexBumpParameterivATI, _gloffset_TexBumpParameterivATI)
-       GL_STUB(glAlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI)
-       GL_STUB(glAlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI)
-       GL_STUB(glAlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI)
-       GL_STUB(glBeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI)
-       GL_STUB(glBindFragmentShaderATI, _gloffset_BindFragmentShaderATI)
-       GL_STUB(glColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI)
-       GL_STUB(glColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI)
-       GL_STUB(glColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI)
-       GL_STUB(glDeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI)
-       GL_STUB(glEndFragmentShaderATI, _gloffset_EndFragmentShaderATI)
-       GL_STUB(glGenFragmentShadersATI, _gloffset_GenFragmentShadersATI)
-       GL_STUB(glPassTexCoordATI, _gloffset_PassTexCoordATI)
-       GL_STUB(glSampleMapATI, _gloffset_SampleMapATI)
-       GL_STUB(glSetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI)
-       GL_STUB(glPointParameteriNV, _gloffset_PointParameteriNV)
-       GL_STUB(glPointParameterivNV, _gloffset_PointParameterivNV)
-       GL_STUB(gl_dispatch_stub_755, _gloffset_ActiveStencilFaceEXT)
-       HIDDEN(gl_dispatch_stub_755)
-       GL_STUB(gl_dispatch_stub_756, _gloffset_BindVertexArrayAPPLE)
-       HIDDEN(gl_dispatch_stub_756)
-       GL_STUB(gl_dispatch_stub_757, _gloffset_DeleteVertexArraysAPPLE)
-       HIDDEN(gl_dispatch_stub_757)
-       GL_STUB(gl_dispatch_stub_758, _gloffset_GenVertexArraysAPPLE)
-       HIDDEN(gl_dispatch_stub_758)
-       GL_STUB(gl_dispatch_stub_759, _gloffset_IsVertexArrayAPPLE)
-       HIDDEN(gl_dispatch_stub_759)
-       GL_STUB(glGetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV)
-       GL_STUB(glGetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV)
-       GL_STUB(glProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV)
-       GL_STUB(glProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV)
-       GL_STUB(glProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV)
-       GL_STUB(glProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV)
-       GL_STUB(gl_dispatch_stub_766, _gloffset_DepthBoundsEXT)
-       HIDDEN(gl_dispatch_stub_766)
-       GL_STUB(gl_dispatch_stub_767, _gloffset_BlendEquationSeparateEXT)
-       HIDDEN(gl_dispatch_stub_767)
-       GL_STUB(glBindFramebufferEXT, _gloffset_BindFramebufferEXT)
-       GL_STUB(glBindRenderbufferEXT, _gloffset_BindRenderbufferEXT)
-       GL_STUB(glCheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT)
-       GL_STUB(glDeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT)
-       GL_STUB(glDeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT)
-       GL_STUB(glFramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT)
-       GL_STUB(glFramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT)
-       GL_STUB(glFramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT)
-       GL_STUB(glFramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT)
-       GL_STUB(glGenFramebuffersEXT, _gloffset_GenFramebuffersEXT)
-       GL_STUB(glGenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT)
-       GL_STUB(glGenerateMipmapEXT, _gloffset_GenerateMipmapEXT)
-       GL_STUB(glGetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT)
-       GL_STUB(glGetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT)
-       GL_STUB(glIsFramebufferEXT, _gloffset_IsFramebufferEXT)
-       GL_STUB(glIsRenderbufferEXT, _gloffset_IsRenderbufferEXT)
-       GL_STUB(glRenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT)
-       GL_STUB(gl_dispatch_stub_785, _gloffset_BlitFramebufferEXT)
-       HIDDEN(gl_dispatch_stub_785)
-       GL_STUB(gl_dispatch_stub_786, _gloffset_BufferParameteriAPPLE)
-       HIDDEN(gl_dispatch_stub_786)
-       GL_STUB(gl_dispatch_stub_787, _gloffset_FlushMappedBufferRangeAPPLE)
-       HIDDEN(gl_dispatch_stub_787)
-       GL_STUB(glFramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT)
-       GL_STUB(glColorMaskIndexedEXT, _gloffset_ColorMaskIndexedEXT)
-       GL_STUB(glDisableIndexedEXT, _gloffset_DisableIndexedEXT)
-       GL_STUB(glEnableIndexedEXT, _gloffset_EnableIndexedEXT)
-       GL_STUB(glGetBooleanIndexedvEXT, _gloffset_GetBooleanIndexedvEXT)
-       GL_STUB(glGetIntegerIndexedvEXT, _gloffset_GetIntegerIndexedvEXT)
-       GL_STUB(glIsEnabledIndexedEXT, _gloffset_IsEnabledIndexedEXT)
-       GL_STUB(glBeginConditionalRenderNV, _gloffset_BeginConditionalRenderNV)
-       GL_STUB(glEndConditionalRenderNV, _gloffset_EndConditionalRenderNV)
-       GL_STUB(glBeginTransformFeedbackEXT, _gloffset_BeginTransformFeedbackEXT)
-       GL_STUB(glBindBufferBaseEXT, _gloffset_BindBufferBaseEXT)
-       GL_STUB(glBindBufferOffsetEXT, _gloffset_BindBufferOffsetEXT)
-       GL_STUB(glBindBufferRangeEXT, _gloffset_BindBufferRangeEXT)
-       GL_STUB(glEndTransformFeedbackEXT, _gloffset_EndTransformFeedbackEXT)
-       GL_STUB(glGetTransformFeedbackVaryingEXT, _gloffset_GetTransformFeedbackVaryingEXT)
-       GL_STUB(glTransformFeedbackVaryingsEXT, _gloffset_TransformFeedbackVaryingsEXT)
-       GL_STUB(glProvokingVertexEXT, _gloffset_ProvokingVertexEXT)
-       GL_STUB(gl_dispatch_stub_805, _gloffset_GetTexParameterPointervAPPLE)
-       HIDDEN(gl_dispatch_stub_805)
-       GL_STUB(gl_dispatch_stub_806, _gloffset_TextureRangeAPPLE)
-       HIDDEN(gl_dispatch_stub_806)
-       GL_STUB(glGetObjectParameterivAPPLE, _gloffset_GetObjectParameterivAPPLE)
-       GL_STUB(glObjectPurgeableAPPLE, _gloffset_ObjectPurgeableAPPLE)
-       GL_STUB(glObjectUnpurgeableAPPLE, _gloffset_ObjectUnpurgeableAPPLE)
-       GL_STUB(gl_dispatch_stub_810, _gloffset_StencilFuncSeparateATI)
-       HIDDEN(gl_dispatch_stub_810)
-       GL_STUB(gl_dispatch_stub_811, _gloffset_ProgramEnvParameters4fvEXT)
-       HIDDEN(gl_dispatch_stub_811)
-       GL_STUB(gl_dispatch_stub_812, _gloffset_ProgramLocalParameters4fvEXT)
-       HIDDEN(gl_dispatch_stub_812)
-       GL_STUB(gl_dispatch_stub_813, _gloffset_GetQueryObjecti64vEXT)
-       HIDDEN(gl_dispatch_stub_813)
-       GL_STUB(gl_dispatch_stub_814, _gloffset_GetQueryObjectui64vEXT)
-       HIDDEN(gl_dispatch_stub_814)
-       GL_STUB(glEGLImageTargetRenderbufferStorageOES, _gloffset_EGLImageTargetRenderbufferStorageOES)
-       GL_STUB(glEGLImageTargetTexture2DOES, _gloffset_EGLImageTargetTexture2DOES)
-       GL_STUB_ALIAS(glArrayElementEXT, glArrayElement)
-       GL_STUB_ALIAS(glBindTextureEXT, glBindTexture)
-       GL_STUB_ALIAS(glDrawArraysEXT, glDrawArrays)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glAreTexturesResidentEXT, glAreTexturesResident)
-#endif
-       GL_STUB_ALIAS(glCopyTexImage1DEXT, glCopyTexImage1D)
-       GL_STUB_ALIAS(glCopyTexImage2DEXT, glCopyTexImage2D)
-       GL_STUB_ALIAS(glCopyTexSubImage1DEXT, glCopyTexSubImage1D)
-       GL_STUB_ALIAS(glCopyTexSubImage2DEXT, glCopyTexSubImage2D)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glDeleteTexturesEXT, glDeleteTextures)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGenTexturesEXT, glGenTextures)
-#endif
-       GL_STUB_ALIAS(glGetPointervEXT, glGetPointerv)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glIsTextureEXT, glIsTexture)
-#endif
-       GL_STUB_ALIAS(glPrioritizeTexturesEXT, glPrioritizeTextures)
-       GL_STUB_ALIAS(glTexSubImage1DEXT, glTexSubImage1D)
-       GL_STUB_ALIAS(glTexSubImage2DEXT, glTexSubImage2D)
-       GL_STUB_ALIAS(glBlendColorEXT, glBlendColor)
-       GL_STUB_ALIAS(glBlendEquationEXT, glBlendEquation)
-       GL_STUB_ALIAS(glDrawRangeElementsEXT, glDrawRangeElements)
-       GL_STUB_ALIAS(glColorTableSGI, glColorTable)
-       GL_STUB_ALIAS(glColorTableEXT, glColorTable)
-       GL_STUB_ALIAS(glColorTableParameterfvSGI, glColorTableParameterfv)
-       GL_STUB_ALIAS(glColorTableParameterivSGI, glColorTableParameteriv)
-       GL_STUB_ALIAS(glCopyColorTableSGI, glCopyColorTable)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetColorTableSGI, glGetColorTable)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetColorTableEXT, glGetColorTable)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetColorTableParameterfvSGI, glGetColorTableParameterfv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetColorTableParameterfvEXT, glGetColorTableParameterfv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetColorTableParameterivSGI, glGetColorTableParameteriv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetColorTableParameterivEXT, glGetColorTableParameteriv)
-#endif
-       GL_STUB_ALIAS(glColorSubTableEXT, glColorSubTable)
-       GL_STUB_ALIAS(glCopyColorSubTableEXT, glCopyColorSubTable)
-       GL_STUB_ALIAS(glConvolutionFilter1DEXT, glConvolutionFilter1D)
-       GL_STUB_ALIAS(glConvolutionFilter2DEXT, glConvolutionFilter2D)
-       GL_STUB_ALIAS(glConvolutionParameterfEXT, glConvolutionParameterf)
-       GL_STUB_ALIAS(glConvolutionParameterfvEXT, glConvolutionParameterfv)
-       GL_STUB_ALIAS(glConvolutionParameteriEXT, glConvolutionParameteri)
-       GL_STUB_ALIAS(glConvolutionParameterivEXT, glConvolutionParameteriv)
-       GL_STUB_ALIAS(glCopyConvolutionFilter1DEXT, glCopyConvolutionFilter1D)
-       GL_STUB_ALIAS(glCopyConvolutionFilter2DEXT, glCopyConvolutionFilter2D)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetConvolutionFilterEXT, glGetConvolutionFilter)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetConvolutionParameterfvEXT, glGetConvolutionParameterfv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetConvolutionParameterivEXT, glGetConvolutionParameteriv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetSeparableFilterEXT, glGetSeparableFilter)
-#endif
-       GL_STUB_ALIAS(glSeparableFilter2DEXT, glSeparableFilter2D)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetHistogramEXT, glGetHistogram)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetHistogramParameterfvEXT, glGetHistogramParameterfv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetHistogramParameterivEXT, glGetHistogramParameteriv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetMinmaxEXT, glGetMinmax)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetMinmaxParameterfvEXT, glGetMinmaxParameterfv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(glGetMinmaxParameterivEXT, glGetMinmaxParameteriv)
-#endif
-       GL_STUB_ALIAS(glHistogramEXT, glHistogram)
-       GL_STUB_ALIAS(glMinmaxEXT, glMinmax)
-       GL_STUB_ALIAS(glResetHistogramEXT, glResetHistogram)
-       GL_STUB_ALIAS(glResetMinmaxEXT, glResetMinmax)
-       GL_STUB_ALIAS(glTexImage3DEXT, glTexImage3D)
-       GL_STUB_ALIAS(glTexSubImage3DEXT, glTexSubImage3D)
-       GL_STUB_ALIAS(glCopyTexSubImage3DEXT, glCopyTexSubImage3D)
-       GL_STUB_ALIAS(glActiveTexture, glActiveTextureARB)
-       GL_STUB_ALIAS(glClientActiveTexture, glClientActiveTextureARB)
-       GL_STUB_ALIAS(glMultiTexCoord1d, glMultiTexCoord1dARB)
-       GL_STUB_ALIAS(glMultiTexCoord1dv, glMultiTexCoord1dvARB)
-       GL_STUB_ALIAS(glMultiTexCoord1f, glMultiTexCoord1fARB)
-       GL_STUB_ALIAS(glMultiTexCoord1fv, glMultiTexCoord1fvARB)
-       GL_STUB_ALIAS(glMultiTexCoord1i, glMultiTexCoord1iARB)
-       GL_STUB_ALIAS(glMultiTexCoord1iv, glMultiTexCoord1ivARB)
-       GL_STUB_ALIAS(glMultiTexCoord1s, glMultiTexCoord1sARB)
-       GL_STUB_ALIAS(glMultiTexCoord1sv, glMultiTexCoord1svARB)
-       GL_STUB_ALIAS(glMultiTexCoord2d, glMultiTexCoord2dARB)
-       GL_STUB_ALIAS(glMultiTexCoord2dv, glMultiTexCoord2dvARB)
-       GL_STUB_ALIAS(glMultiTexCoord2f, glMultiTexCoord2fARB)
-       GL_STUB_ALIAS(glMultiTexCoord2fv, glMultiTexCoord2fvARB)
-       GL_STUB_ALIAS(glMultiTexCoord2i, glMultiTexCoord2iARB)
-       GL_STUB_ALIAS(glMultiTexCoord2iv, glMultiTexCoord2ivARB)
-       GL_STUB_ALIAS(glMultiTexCoord2s, glMultiTexCoord2sARB)
-       GL_STUB_ALIAS(glMultiTexCoord2sv, glMultiTexCoord2svARB)
-       GL_STUB_ALIAS(glMultiTexCoord3d, glMultiTexCoord3dARB)
-       GL_STUB_ALIAS(glMultiTexCoord3dv, glMultiTexCoord3dvARB)
-       GL_STUB_ALIAS(glMultiTexCoord3f, glMultiTexCoord3fARB)
-       GL_STUB_ALIAS(glMultiTexCoord3fv, glMultiTexCoord3fvARB)
-       GL_STUB_ALIAS(glMultiTexCoord3i, glMultiTexCoord3iARB)
-       GL_STUB_ALIAS(glMultiTexCoord3iv, glMultiTexCoord3ivARB)
-       GL_STUB_ALIAS(glMultiTexCoord3s, glMultiTexCoord3sARB)
-       GL_STUB_ALIAS(glMultiTexCoord3sv, glMultiTexCoord3svARB)
-       GL_STUB_ALIAS(glMultiTexCoord4d, glMultiTexCoord4dARB)
-       GL_STUB_ALIAS(glMultiTexCoord4dv, glMultiTexCoord4dvARB)
-       GL_STUB_ALIAS(glMultiTexCoord4f, glMultiTexCoord4fARB)
-       GL_STUB_ALIAS(glMultiTexCoord4fv, glMultiTexCoord4fvARB)
-       GL_STUB_ALIAS(glMultiTexCoord4i, glMultiTexCoord4iARB)
-       GL_STUB_ALIAS(glMultiTexCoord4iv, glMultiTexCoord4ivARB)
-       GL_STUB_ALIAS(glMultiTexCoord4s, glMultiTexCoord4sARB)
-       GL_STUB_ALIAS(glMultiTexCoord4sv, glMultiTexCoord4svARB)
-       GL_STUB_ALIAS(glStencilOpSeparateATI, glStencilOpSeparate)
-       GL_STUB_ALIAS(glDrawArraysInstancedARB, glDrawArraysInstanced)
-       GL_STUB_ALIAS(glDrawArraysInstancedEXT, glDrawArraysInstanced)
-       GL_STUB_ALIAS(glDrawElementsInstancedARB, glDrawElementsInstanced)
-       GL_STUB_ALIAS(glDrawElementsInstancedEXT, glDrawElementsInstanced)
-       GL_STUB_ALIAS(glLoadTransposeMatrixd, glLoadTransposeMatrixdARB)
-       GL_STUB_ALIAS(glLoadTransposeMatrixf, glLoadTransposeMatrixfARB)
-       GL_STUB_ALIAS(glMultTransposeMatrixd, glMultTransposeMatrixdARB)
-       GL_STUB_ALIAS(glMultTransposeMatrixf, glMultTransposeMatrixfARB)
-       GL_STUB_ALIAS(glSampleCoverage, glSampleCoverageARB)
-       GL_STUB_ALIAS(glCompressedTexImage1D, glCompressedTexImage1DARB)
-       GL_STUB_ALIAS(glCompressedTexImage2D, glCompressedTexImage2DARB)
-       GL_STUB_ALIAS(glCompressedTexImage3D, glCompressedTexImage3DARB)
-       GL_STUB_ALIAS(glCompressedTexSubImage1D, glCompressedTexSubImage1DARB)
-       GL_STUB_ALIAS(glCompressedTexSubImage2D, glCompressedTexSubImage2DARB)
-       GL_STUB_ALIAS(glCompressedTexSubImage3D, glCompressedTexSubImage3DARB)
-       GL_STUB_ALIAS(glGetCompressedTexImage, glGetCompressedTexImageARB)
-       GL_STUB_ALIAS(glDisableVertexAttribArray, glDisableVertexAttribArrayARB)
-       GL_STUB_ALIAS(glEnableVertexAttribArray, glEnableVertexAttribArrayARB)
-       GL_STUB_ALIAS(glGetVertexAttribdv, glGetVertexAttribdvARB)
-       GL_STUB_ALIAS(glGetVertexAttribfv, glGetVertexAttribfvARB)
-       GL_STUB_ALIAS(glGetVertexAttribiv, glGetVertexAttribivARB)
-       GL_STUB_ALIAS(glProgramParameter4dNV, glProgramEnvParameter4dARB)
-       GL_STUB_ALIAS(glProgramParameter4dvNV, glProgramEnvParameter4dvARB)
-       GL_STUB_ALIAS(glProgramParameter4fNV, glProgramEnvParameter4fARB)
-       GL_STUB_ALIAS(glProgramParameter4fvNV, glProgramEnvParameter4fvARB)
-       GL_STUB_ALIAS(glVertexAttrib1d, glVertexAttrib1dARB)
-       GL_STUB_ALIAS(glVertexAttrib1dv, glVertexAttrib1dvARB)
-       GL_STUB_ALIAS(glVertexAttrib1f, glVertexAttrib1fARB)
-       GL_STUB_ALIAS(glVertexAttrib1fv, glVertexAttrib1fvARB)
-       GL_STUB_ALIAS(glVertexAttrib1s, glVertexAttrib1sARB)
-       GL_STUB_ALIAS(glVertexAttrib1sv, glVertexAttrib1svARB)
-       GL_STUB_ALIAS(glVertexAttrib2d, glVertexAttrib2dARB)
-       GL_STUB_ALIAS(glVertexAttrib2dv, glVertexAttrib2dvARB)
-       GL_STUB_ALIAS(glVertexAttrib2f, glVertexAttrib2fARB)
-       GL_STUB_ALIAS(glVertexAttrib2fv, glVertexAttrib2fvARB)
-       GL_STUB_ALIAS(glVertexAttrib2s, glVertexAttrib2sARB)
-       GL_STUB_ALIAS(glVertexAttrib2sv, glVertexAttrib2svARB)
-       GL_STUB_ALIAS(glVertexAttrib3d, glVertexAttrib3dARB)
-       GL_STUB_ALIAS(glVertexAttrib3dv, glVertexAttrib3dvARB)
-       GL_STUB_ALIAS(glVertexAttrib3f, glVertexAttrib3fARB)
-       GL_STUB_ALIAS(glVertexAttrib3fv, glVertexAttrib3fvARB)
-       GL_STUB_ALIAS(glVertexAttrib3s, glVertexAttrib3sARB)
-       GL_STUB_ALIAS(glVertexAttrib3sv, glVertexAttrib3svARB)
-       GL_STUB_ALIAS(glVertexAttrib4Nbv, glVertexAttrib4NbvARB)
-       GL_STUB_ALIAS(glVertexAttrib4Niv, glVertexAttrib4NivARB)
-       GL_STUB_ALIAS(glVertexAttrib4Nsv, glVertexAttrib4NsvARB)
-       GL_STUB_ALIAS(glVertexAttrib4Nub, glVertexAttrib4NubARB)
-       GL_STUB_ALIAS(glVertexAttrib4Nubv, glVertexAttrib4NubvARB)
-       GL_STUB_ALIAS(glVertexAttrib4Nuiv, glVertexAttrib4NuivARB)
-       GL_STUB_ALIAS(glVertexAttrib4Nusv, glVertexAttrib4NusvARB)
-       GL_STUB_ALIAS(glVertexAttrib4bv, glVertexAttrib4bvARB)
-       GL_STUB_ALIAS(glVertexAttrib4d, glVertexAttrib4dARB)
-       GL_STUB_ALIAS(glVertexAttrib4dv, glVertexAttrib4dvARB)
-       GL_STUB_ALIAS(glVertexAttrib4f, glVertexAttrib4fARB)
-       GL_STUB_ALIAS(glVertexAttrib4fv, glVertexAttrib4fvARB)
-       GL_STUB_ALIAS(glVertexAttrib4iv, glVertexAttrib4ivARB)
-       GL_STUB_ALIAS(glVertexAttrib4s, glVertexAttrib4sARB)
-       GL_STUB_ALIAS(glVertexAttrib4sv, glVertexAttrib4svARB)
-       GL_STUB_ALIAS(glVertexAttrib4ubv, glVertexAttrib4ubvARB)
-       GL_STUB_ALIAS(glVertexAttrib4uiv, glVertexAttrib4uivARB)
-       GL_STUB_ALIAS(glVertexAttrib4usv, glVertexAttrib4usvARB)
-       GL_STUB_ALIAS(glVertexAttribPointer, glVertexAttribPointerARB)
-       GL_STUB_ALIAS(glBindBuffer, glBindBufferARB)
-       GL_STUB_ALIAS(glBufferData, glBufferDataARB)
-       GL_STUB_ALIAS(glBufferSubData, glBufferSubDataARB)
-       GL_STUB_ALIAS(glDeleteBuffers, glDeleteBuffersARB)
-       GL_STUB_ALIAS(glGenBuffers, glGenBuffersARB)
-       GL_STUB_ALIAS(glGetBufferParameteriv, glGetBufferParameterivARB)
-       GL_STUB_ALIAS(glGetBufferPointerv, glGetBufferPointervARB)
-       GL_STUB_ALIAS(glGetBufferSubData, glGetBufferSubDataARB)
-       GL_STUB_ALIAS(glIsBuffer, glIsBufferARB)
-       GL_STUB_ALIAS(glMapBuffer, glMapBufferARB)
-       GL_STUB_ALIAS(glUnmapBuffer, glUnmapBufferARB)
-       GL_STUB_ALIAS(glBeginQuery, glBeginQueryARB)
-       GL_STUB_ALIAS(glDeleteQueries, glDeleteQueriesARB)
-       GL_STUB_ALIAS(glEndQuery, glEndQueryARB)
-       GL_STUB_ALIAS(glGenQueries, glGenQueriesARB)
-       GL_STUB_ALIAS(glGetQueryObjectiv, glGetQueryObjectivARB)
-       GL_STUB_ALIAS(glGetQueryObjectuiv, glGetQueryObjectuivARB)
-       GL_STUB_ALIAS(glGetQueryiv, glGetQueryivARB)
-       GL_STUB_ALIAS(glIsQuery, glIsQueryARB)
-       GL_STUB_ALIAS(glCompileShader, glCompileShaderARB)
-       GL_STUB_ALIAS(glGetActiveUniform, glGetActiveUniformARB)
-       GL_STUB_ALIAS(glGetShaderSource, glGetShaderSourceARB)
-       GL_STUB_ALIAS(glGetUniformLocation, glGetUniformLocationARB)
-       GL_STUB_ALIAS(glGetUniformfv, glGetUniformfvARB)
-       GL_STUB_ALIAS(glGetUniformiv, glGetUniformivARB)
-       GL_STUB_ALIAS(glLinkProgram, glLinkProgramARB)
-       GL_STUB_ALIAS(glShaderSource, glShaderSourceARB)
-       GL_STUB_ALIAS(glUniform1f, glUniform1fARB)
-       GL_STUB_ALIAS(glUniform1fv, glUniform1fvARB)
-       GL_STUB_ALIAS(glUniform1i, glUniform1iARB)
-       GL_STUB_ALIAS(glUniform1iv, glUniform1ivARB)
-       GL_STUB_ALIAS(glUniform2f, glUniform2fARB)
-       GL_STUB_ALIAS(glUniform2fv, glUniform2fvARB)
-       GL_STUB_ALIAS(glUniform2i, glUniform2iARB)
-       GL_STUB_ALIAS(glUniform2iv, glUniform2ivARB)
-       GL_STUB_ALIAS(glUniform3f, glUniform3fARB)
-       GL_STUB_ALIAS(glUniform3fv, glUniform3fvARB)
-       GL_STUB_ALIAS(glUniform3i, glUniform3iARB)
-       GL_STUB_ALIAS(glUniform3iv, glUniform3ivARB)
-       GL_STUB_ALIAS(glUniform4f, glUniform4fARB)
-       GL_STUB_ALIAS(glUniform4fv, glUniform4fvARB)
-       GL_STUB_ALIAS(glUniform4i, glUniform4iARB)
-       GL_STUB_ALIAS(glUniform4iv, glUniform4ivARB)
-       GL_STUB_ALIAS(glUniformMatrix2fv, glUniformMatrix2fvARB)
-       GL_STUB_ALIAS(glUniformMatrix3fv, glUniformMatrix3fvARB)
-       GL_STUB_ALIAS(glUniformMatrix4fv, glUniformMatrix4fvARB)
-       GL_STUB_ALIAS(glUseProgram, glUseProgramObjectARB)
-       GL_STUB_ALIAS(glValidateProgram, glValidateProgramARB)
-       GL_STUB_ALIAS(glBindAttribLocation, glBindAttribLocationARB)
-       GL_STUB_ALIAS(glGetActiveAttrib, glGetActiveAttribARB)
-       GL_STUB_ALIAS(glGetAttribLocation, glGetAttribLocationARB)
-       GL_STUB_ALIAS(glDrawBuffers, glDrawBuffersARB)
-       GL_STUB_ALIAS(glDrawBuffersATI, glDrawBuffersARB)
-       GL_STUB_ALIAS(glRenderbufferStorageMultisampleEXT, glRenderbufferStorageMultisample)
-       GL_STUB_ALIAS(glPointParameterf, glPointParameterfEXT)
-       GL_STUB_ALIAS(glPointParameterfARB, glPointParameterfEXT)
-       GL_STUB_ALIAS(glPointParameterfSGIS, glPointParameterfEXT)
-       GL_STUB_ALIAS(glPointParameterfv, glPointParameterfvEXT)
-       GL_STUB_ALIAS(glPointParameterfvARB, glPointParameterfvEXT)
-       GL_STUB_ALIAS(glPointParameterfvSGIS, glPointParameterfvEXT)
-       GL_STUB_ALIAS(glSecondaryColor3b, glSecondaryColor3bEXT)
-       GL_STUB_ALIAS(glSecondaryColor3bv, glSecondaryColor3bvEXT)
-       GL_STUB_ALIAS(glSecondaryColor3d, glSecondaryColor3dEXT)
-       GL_STUB_ALIAS(glSecondaryColor3dv, glSecondaryColor3dvEXT)
-       GL_STUB_ALIAS(glSecondaryColor3f, glSecondaryColor3fEXT)
-       GL_STUB_ALIAS(glSecondaryColor3fv, glSecondaryColor3fvEXT)
-       GL_STUB_ALIAS(glSecondaryColor3i, glSecondaryColor3iEXT)
-       GL_STUB_ALIAS(glSecondaryColor3iv, glSecondaryColor3ivEXT)
-       GL_STUB_ALIAS(glSecondaryColor3s, glSecondaryColor3sEXT)
-       GL_STUB_ALIAS(glSecondaryColor3sv, glSecondaryColor3svEXT)
-       GL_STUB_ALIAS(glSecondaryColor3ub, glSecondaryColor3ubEXT)
-       GL_STUB_ALIAS(glSecondaryColor3ubv, glSecondaryColor3ubvEXT)
-       GL_STUB_ALIAS(glSecondaryColor3ui, glSecondaryColor3uiEXT)
-       GL_STUB_ALIAS(glSecondaryColor3uiv, glSecondaryColor3uivEXT)
-       GL_STUB_ALIAS(glSecondaryColor3us, glSecondaryColor3usEXT)
-       GL_STUB_ALIAS(glSecondaryColor3usv, glSecondaryColor3usvEXT)
-       GL_STUB_ALIAS(glSecondaryColorPointer, glSecondaryColorPointerEXT)
-       GL_STUB_ALIAS(glMultiDrawArrays, glMultiDrawArraysEXT)
-       GL_STUB_ALIAS(glMultiDrawElements, glMultiDrawElementsEXT)
-       GL_STUB_ALIAS(glFogCoordPointer, glFogCoordPointerEXT)
-       GL_STUB_ALIAS(glFogCoordd, glFogCoorddEXT)
-       GL_STUB_ALIAS(glFogCoorddv, glFogCoorddvEXT)
-       GL_STUB_ALIAS(glFogCoordf, glFogCoordfEXT)
-       GL_STUB_ALIAS(glFogCoordfv, glFogCoordfvEXT)
-       GL_STUB_ALIAS(glBlendFuncSeparate, glBlendFuncSeparateEXT)
-       GL_STUB_ALIAS(glBlendFuncSeparateINGR, glBlendFuncSeparateEXT)
-       GL_STUB_ALIAS(glWindowPos2d, glWindowPos2dMESA)
-       GL_STUB_ALIAS(glWindowPos2dARB, glWindowPos2dMESA)
-       GL_STUB_ALIAS(glWindowPos2dv, glWindowPos2dvMESA)
-       GL_STUB_ALIAS(glWindowPos2dvARB, glWindowPos2dvMESA)
-       GL_STUB_ALIAS(glWindowPos2f, glWindowPos2fMESA)
-       GL_STUB_ALIAS(glWindowPos2fARB, glWindowPos2fMESA)
-       GL_STUB_ALIAS(glWindowPos2fv, glWindowPos2fvMESA)
-       GL_STUB_ALIAS(glWindowPos2fvARB, glWindowPos2fvMESA)
-       GL_STUB_ALIAS(glWindowPos2i, glWindowPos2iMESA)
-       GL_STUB_ALIAS(glWindowPos2iARB, glWindowPos2iMESA)
-       GL_STUB_ALIAS(glWindowPos2iv, glWindowPos2ivMESA)
-       GL_STUB_ALIAS(glWindowPos2ivARB, glWindowPos2ivMESA)
-       GL_STUB_ALIAS(glWindowPos2s, glWindowPos2sMESA)
-       GL_STUB_ALIAS(glWindowPos2sARB, glWindowPos2sMESA)
-       GL_STUB_ALIAS(glWindowPos2sv, glWindowPos2svMESA)
-       GL_STUB_ALIAS(glWindowPos2svARB, glWindowPos2svMESA)
-       GL_STUB_ALIAS(glWindowPos3d, glWindowPos3dMESA)
-       GL_STUB_ALIAS(glWindowPos3dARB, glWindowPos3dMESA)
-       GL_STUB_ALIAS(glWindowPos3dv, glWindowPos3dvMESA)
-       GL_STUB_ALIAS(glWindowPos3dvARB, glWindowPos3dvMESA)
-       GL_STUB_ALIAS(glWindowPos3f, glWindowPos3fMESA)
-       GL_STUB_ALIAS(glWindowPos3fARB, glWindowPos3fMESA)
-       GL_STUB_ALIAS(glWindowPos3fv, glWindowPos3fvMESA)
-       GL_STUB_ALIAS(glWindowPos3fvARB, glWindowPos3fvMESA)
-       GL_STUB_ALIAS(glWindowPos3i, glWindowPos3iMESA)
-       GL_STUB_ALIAS(glWindowPos3iARB, glWindowPos3iMESA)
-       GL_STUB_ALIAS(glWindowPos3iv, glWindowPos3ivMESA)
-       GL_STUB_ALIAS(glWindowPos3ivARB, glWindowPos3ivMESA)
-       GL_STUB_ALIAS(glWindowPos3s, glWindowPos3sMESA)
-       GL_STUB_ALIAS(glWindowPos3sARB, glWindowPos3sMESA)
-       GL_STUB_ALIAS(glWindowPos3sv, glWindowPos3svMESA)
-       GL_STUB_ALIAS(glWindowPos3svARB, glWindowPos3svMESA)
-       GL_STUB_ALIAS(glBindProgramARB, glBindProgramNV)
-       GL_STUB_ALIAS(glDeleteProgramsARB, glDeleteProgramsNV)
-       GL_STUB_ALIAS(glGenProgramsARB, glGenProgramsNV)
-       GL_STUB_ALIAS(glGetVertexAttribPointerv, glGetVertexAttribPointervNV)
-       GL_STUB_ALIAS(glGetVertexAttribPointervARB, glGetVertexAttribPointervNV)
-       GL_STUB_ALIAS(glIsProgramARB, glIsProgramNV)
-       GL_STUB_ALIAS(glPointParameteri, glPointParameteriNV)
-       GL_STUB_ALIAS(glPointParameteriv, glPointParameterivNV)
-       GL_STUB_ALIAS(glBindFramebuffer, glBindFramebufferEXT)
-       GL_STUB_ALIAS(glBindRenderbuffer, glBindRenderbufferEXT)
-       GL_STUB_ALIAS(glCheckFramebufferStatus, glCheckFramebufferStatusEXT)
-       GL_STUB_ALIAS(glDeleteFramebuffers, glDeleteFramebuffersEXT)
-       GL_STUB_ALIAS(glDeleteRenderbuffers, glDeleteRenderbuffersEXT)
-       GL_STUB_ALIAS(glFramebufferRenderbuffer, glFramebufferRenderbufferEXT)
-       GL_STUB_ALIAS(glFramebufferTexture1D, glFramebufferTexture1DEXT)
-       GL_STUB_ALIAS(glFramebufferTexture2D, glFramebufferTexture2DEXT)
-       GL_STUB_ALIAS(glFramebufferTexture3D, glFramebufferTexture3DEXT)
-       GL_STUB_ALIAS(glGenFramebuffers, glGenFramebuffersEXT)
-       GL_STUB_ALIAS(glGenRenderbuffers, glGenRenderbuffersEXT)
-       GL_STUB_ALIAS(glGenerateMipmap, glGenerateMipmapEXT)
-       GL_STUB_ALIAS(glGetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameterivEXT)
-       GL_STUB_ALIAS(glGetRenderbufferParameteriv, glGetRenderbufferParameterivEXT)
-       GL_STUB_ALIAS(glIsFramebuffer, glIsFramebufferEXT)
-       GL_STUB_ALIAS(glIsRenderbuffer, glIsRenderbufferEXT)
-       GL_STUB_ALIAS(glRenderbufferStorage, glRenderbufferStorageEXT)
-       GL_STUB_ALIAS(glFramebufferTextureLayer, glFramebufferTextureLayerEXT)
-       GL_STUB_ALIAS(glBeginTransformFeedback, glBeginTransformFeedbackEXT)
-       GL_STUB_ALIAS(glBindBufferBase, glBindBufferBaseEXT)
-       GL_STUB_ALIAS(glBindBufferRange, glBindBufferRangeEXT)
-       GL_STUB_ALIAS(glEndTransformFeedback, glEndTransformFeedbackEXT)
-       GL_STUB_ALIAS(glGetTransformFeedbackVarying, glGetTransformFeedbackVaryingEXT)
-       GL_STUB_ALIAS(glTransformFeedbackVaryings, glTransformFeedbackVaryingsEXT)
-       GL_STUB_ALIAS(glProvokingVertex, glProvokingVertexEXT)
-
-       .globl  gl_dispatch_functions_end
-       HIDDEN(gl_dispatch_functions_end)
-gl_dispatch_functions_end:
index a8f2b879d532c511c8d04476ac94c063532c128b..28439103b23c0d39a8de4007a2301fce3cc81df1 100644 (file)
@@ -44,7 +44,6 @@
 #include "st_atom.h"
 #include "st_atom_constbuf.h"
 #include "st_program.h"
-#include "st_inlines.h"
 
 
 /**
@@ -84,7 +83,7 @@ void st_upload_constants( struct st_context *st,
       }
 
       /* load Mesa constants into the constant buffer */
-      st_no_flush_pipe_buffer_write(st, *cbuf,
+      pipe_buffer_write(st->pipe, *cbuf,
                                    0, paramBytes,
                                    params->ParameterValues);
 
index 323de8a8bd3c80110f30d613df4550ff6bc65cf9..b8644faaf8375ebeee0f707fcd1a1570ad7bf8ab 100644 (file)
 #include "st_context.h"
 #include "st_format.h"
 #include "st_texture.h"
-#include "st_inlines.h"
 
 #include "pipe/p_screen.h"
 #include "pipe/p_context.h"
+#include "util/u_inlines.h"
 #include "util/u_pack_color.h"
 
 
@@ -149,7 +149,7 @@ load_color_map_texture(GLcontext *ctx, struct pipe_resource *pt)
    uint *dest;
    uint i, j;
 
-   transfer = st_cond_flush_get_tex_transfer(st_context(ctx),
+   transfer = pipe_get_transfer(st_context(ctx)->pipe,
                                             pt, 0, 0, 0, PIPE_TRANSFER_WRITE,
                                             0, 0, texSize, texSize);
    dest = (uint *) pipe_transfer_map(pipe, transfer);
index 5669b1f82af0053d78f509fcb374236684a932c2..2599bd5ca0339b6b9a81608b0c8782a60cc4e158 100644 (file)
@@ -53,21 +53,6 @@ static GLuint translate_fill( GLenum mode )
    }
 }
 
-static GLboolean get_offset_flag( GLuint fill_mode, 
-                                 const struct gl_polygon_attrib *p )
-{
-   switch (fill_mode) {
-   case PIPE_POLYGON_MODE_POINT:
-      return p->OffsetPoint;
-   case PIPE_POLYGON_MODE_LINE:
-      return p->OffsetLine;
-   case PIPE_POLYGON_MODE_FILL:
-      return p->OffsetFill;
-   default:
-      assert(0);
-      return 0;
-   }
-}
 
 
 static void update_raster_state( struct st_context *st )
@@ -82,10 +67,7 @@ static void update_raster_state( struct st_context *st )
    /* _NEW_POLYGON, _NEW_BUFFERS
     */
    {
-      if (ctx->Polygon.FrontFace == GL_CCW)
-         raster->front_winding = PIPE_WINDING_CCW;
-      else
-         raster->front_winding = PIPE_WINDING_CW;
+      raster->front_ccw = (ctx->Polygon.FrontFace == GL_CCW);
 
       /* XXX
        * I think the intention here is that user-created framebuffer objects
@@ -94,7 +76,7 @@ static void update_raster_state( struct st_context *st )
        * But this is an implementation/driver-specific artifact - remove...
        */
       if (ctx->DrawBuffer && ctx->DrawBuffer->Name != 0)
-         raster->front_winding ^= PIPE_WINDING_BOTH;
+         raster->front_ccw ^= 1;
    }
 
    /* _NEW_LIGHT
@@ -131,40 +113,36 @@ static void update_raster_state( struct st_context *st )
    /* _NEW_POLYGON
     */
    if (ctx->Polygon.CullFlag) {
-      if (ctx->Polygon.CullFaceMode == GL_FRONT_AND_BACK) {
-        raster->cull_mode = PIPE_WINDING_BOTH;
-      }
-      else if (ctx->Polygon.CullFaceMode == GL_FRONT) {
-        raster->cull_mode = raster->front_winding;
-      }
-      else {
-        raster->cull_mode = raster->front_winding ^ PIPE_WINDING_BOTH;
+      switch (ctx->Polygon.CullFaceMode) {
+      case GL_FRONT:
+        raster->cull_face = PIPE_FACE_FRONT;
+         break;
+      case GL_BACK:
+        raster->cull_face = PIPE_FACE_BACK;
+         break;
+      case GL_FRONT_AND_BACK:
+        raster->cull_face = PIPE_FACE_FRONT_AND_BACK;
+         break;
       }
    }
+   else {
+      raster->cull_face = PIPE_FACE_NONE;
+   }
 
    /* _NEW_POLYGON
     */
    {
-      GLuint fill_front = translate_fill( ctx->Polygon.FrontMode );
-      GLuint fill_back = translate_fill( ctx->Polygon.BackMode );
-      
-      if (raster->front_winding == PIPE_WINDING_CW) {
-        raster->fill_cw = fill_front;
-        raster->fill_ccw = fill_back;
-      }
-      else {
-        raster->fill_cw = fill_back;
-        raster->fill_ccw = fill_front;
-      }
+      raster->fill_front = translate_fill( ctx->Polygon.FrontMode );
+      raster->fill_back = translate_fill( ctx->Polygon.BackMode );
 
       /* Simplify when culling is active:
        */
-      if (raster->cull_mode & PIPE_WINDING_CW) {
-        raster->fill_cw = raster->fill_ccw;
+      if (raster->cull_face & PIPE_FACE_FRONT) {
+        raster->fill_front = raster->fill_back;
       }
       
-      if (raster->cull_mode & PIPE_WINDING_CCW) {
-        raster->fill_ccw = raster->fill_cw;
+      if (raster->cull_face & PIPE_FACE_BACK) {
+        raster->fill_back = raster->fill_front;
       }
    }
 
@@ -172,8 +150,14 @@ static void update_raster_state( struct st_context *st )
     */
    if (ctx->Polygon.OffsetUnits != 0.0 ||
        ctx->Polygon.OffsetFactor != 0.0) {
-      raster->offset_cw = get_offset_flag( raster->fill_cw, &ctx->Polygon );
-      raster->offset_ccw = get_offset_flag( raster->fill_ccw, &ctx->Polygon );
+      raster->offset_point = ctx->Polygon.OffsetPoint;
+      raster->offset_line = ctx->Polygon.OffsetLine;
+      raster->offset_tri = ctx->Polygon.OffsetFill;
+   }
+
+   if (ctx->Polygon.OffsetPoint ||
+       ctx->Polygon.OffsetLine ||
+       ctx->Polygon.OffsetFill) {
       raster->offset_units = ctx->Polygon.OffsetUnits;
       raster->offset_scale = ctx->Polygon.OffsetFactor;
    }
index 0101837f9990bdd518694cba0dd452f381718a2c..425e7987d33e410032cada99a622bac1773455ee 100644 (file)
 #include "st_cb_accum.h"
 #include "st_cb_fbo.h"
 #include "st_texture.h"
-#include "st_inlines.h"
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
 #include "util/u_inlines.h"
 #include "util/u_tile.h"
 
 
+#if FEATURE_accum
+
 /**
  * For hardware that supports deep color buffers, we could accelerate
  * most/all the accum operations with blending/texturing.
@@ -136,7 +137,7 @@ accum_accum(struct st_context *st, GLfloat value,
    if (ST_DEBUG & DEBUG_FALLBACK)
       debug_printf("%s: fallback processing\n", __FUNCTION__);
 
-   color_trans = st_cond_flush_get_tex_transfer(st,
+   color_trans = pipe_get_transfer(st->pipe,
                                                color_strb->texture,
                                                0, 0, 0,
                                                PIPE_TRANSFER_READ, xpos, ypos,
@@ -185,7 +186,7 @@ accum_load(struct st_context *st, GLfloat value,
    if (ST_DEBUG & DEBUG_FALLBACK)
       debug_printf("%s: fallback processing\n", __FUNCTION__);
 
-   color_trans = st_cond_flush_get_tex_transfer(st, color_strb->texture,
+   color_trans = pipe_get_transfer(st->pipe, color_strb->texture,
                                                0, 0, 0,
                                                PIPE_TRANSFER_READ, xpos, ypos,
                                                width, height);
@@ -241,7 +242,7 @@ accum_return(GLcontext *ctx, GLfloat value,
    else
       usage = PIPE_TRANSFER_WRITE;
    
-   color_trans = st_cond_flush_get_tex_transfer(st_context(ctx),
+   color_trans = pipe_get_transfer(st_context(ctx)->pipe,
                                                color_strb->texture, 0, 0, 0,
                                                usage,
                                                xpos, ypos,
@@ -301,9 +302,6 @@ st_Accum(GLcontext *ctx, GLenum op, GLfloat value)
    if(!acc_strb->data)
       return;
    
-   /* make sure color bufs aren't cached */
-   st_flush( st, PIPE_FLUSH_RENDER_CACHE, NULL );
-
    switch (op) {
    case GL_ADD:
       if (value != 0.0F) {
@@ -337,3 +335,5 @@ void st_init_accum_functions(struct dd_function_table *functions)
 {
    functions->Accum = st_Accum;
 }
+
+#endif /* FEATURE_accum */
index ed9b7dab9432d5309eb6e5d74159055ff56f7560..7d52481c82e7cf268eaf87d2ef828fae6e4c2ff0 100644 (file)
 #define ST_CB_ACCUM_H
 
 
+#include "main/mtypes.h"
+
+#if FEATURE_accum
+
 extern void
 st_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb);
 
 extern void st_init_accum_functions(struct dd_function_table *functions);
 
+#else
+
+static INLINE void
+st_clear_accum_buffer(GLcontext *ctx, struct gl_renderbuffer *rb)
+{
+   ASSERT_NO_FEATURE();
+}
+
+static INLINE void
+st_init_accum_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_accum */
 
 #endif /* ST_CB_ACCUM_H */
index 1b3787828e17cba749ba3e86bdddc06d742962bd..5aca1105eeb7a26c05cf6b9791112d1d9d1e5540 100644 (file)
@@ -43,7 +43,6 @@
 #include "st_program.h"
 #include "st_cb_bitmap.h"
 #include "st_texture.h"
-#include "st_inlines.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
@@ -54,6 +53,7 @@
 #include "cso_cache/cso_context.h"
 
 
+#if FEATURE_drawpix
 
 /**
  * glBitmaps are drawn as textured quads.  The user's bitmap pattern
@@ -282,7 +282,7 @@ make_bitmap_texture(GLcontext *ctx, GLsizei width, GLsizei height,
       return NULL;
    }
 
-   transfer = st_no_flush_get_tex_transfer(st, pt, 0, 0, 0,
+   transfer = pipe_get_transfer(st->pipe, pt, 0, 0, 0,
                                           PIPE_TRANSFER_WRITE,
                                           0, 0, width, height);
 
@@ -382,7 +382,7 @@ setup_bitmap_vertex_data(struct st_context *st,
    }
 
    /* put vertex data into vbuf */
-   st_no_flush_pipe_buffer_write_nooverlap(st,
+   pipe_buffer_write_nooverlap(st->pipe,
                                            st->bitmap.vbuf,
                                            st->bitmap.vbuf_slot * sizeof st->bitmap.vertices,
                                            sizeof st->bitmap.vertices,
@@ -579,7 +579,7 @@ create_cache_trans(struct st_context *st)
    /* Map the texture transfer.
     * Subsequent glBitmap calls will write into the texture image.
     */
-   cache->trans = st_no_flush_get_tex_transfer(st, cache->texture, 0, 0, 0,
+   cache->trans = pipe_get_transfer(st->pipe, cache->texture, 0, 0, 0,
                                               PIPE_TRANSFER_WRITE, 0, 0,
                                               BITMAP_CACHE_WIDTH,
                                               BITMAP_CACHE_HEIGHT);
@@ -860,3 +860,5 @@ st_destroy_bitmap(struct st_context *st)
       st->bitmap.cache = NULL;
    }
 }
+
+#endif /* FEATURE_drawpix */
index 81cf61981dc394fa5197745bbe3020fd0a0a29ca..8af975b74fce7a81c33fa9d88f03b12339c57d5e 100644 (file)
 #define ST_CB_BITMAP_H
 
 
+#include "main/mtypes.h"
+
+#if FEATURE_drawpix
+
 extern void
 st_init_bitmap_functions(struct dd_function_table *functions);
 
@@ -48,5 +52,33 @@ st_flush_bitmap_cache(struct st_context *st);
 extern void
 st_flush_bitmap(struct st_context *st);
 
+#else
+
+static INLINE void
+st_init_bitmap_functions(struct dd_function_table *functions)
+{
+}
+
+static INLINE void
+st_init_bitmap(struct st_context *st)
+{
+}
+
+static INLINE void
+st_destroy_bitmap(struct st_context *st)
+{
+}
+
+static INLINE void
+st_flush_bitmap_cache(struct st_context *st)
+{
+}
+
+static INLINE void
+st_flush_bitmap(struct st_context *st)
+{
+}
+
+#endif /* FEATURE_drawpix */
 
 #endif /* ST_CB_BITMAP_H */
index 3a34bdfe9a4837448da8d790e3e6c95889f8748f..fb7b48a7bf642423b0717ec66ed0e43448e761f0 100644 (file)
@@ -60,6 +60,7 @@ st_destroy_blit(struct st_context *st)
 
 
 #if FEATURE_EXT_framebuffer_blit
+
 static void
 st_BlitFramebuffer(GLcontext *ctx,
                    GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1,
@@ -205,14 +206,12 @@ st_BlitFramebuffer(GLcontext *ctx,
       }
    }
 }
-#endif /* FEATURE_EXT_framebuffer_blit */
-
 
 
 void
 st_init_blit_functions(struct dd_function_table *functions)
 {
-#if FEATURE_EXT_framebuffer_blit
    functions->BlitFramebuffer = st_BlitFramebuffer;
-#endif
 }
+
+#endif /* FEATURE_EXT_framebuffer_blit */
index ed22986b531ba749f0685164d33be36f63336e07..7ab9a54df90d02c4434887772801021502dac738 100644 (file)
 #define ST_CB_BLIT_H
 
 
+#include "main/mtypes.h"
 #include "st_context.h"
 
 
-
 extern void
 st_init_blit(struct st_context *st);
 
 extern void
 st_destroy_blit(struct st_context *st);
 
+#if FEATURE_EXT_framebuffer_blit
+
 extern void
 st_init_blit_functions(struct dd_function_table *functions);
 
+#else
+
+static INLINE void
+st_init_blit_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_EXT_framebuffer_blit */
 
 #endif /* ST_CB_BLIT_H */
index b883c071f7e25eb412406475f6bb9ba4ed281d3c..7991a93a1e6b04383a7b01edc403fc3aab1d6160 100644 (file)
@@ -36,7 +36,6 @@
 #include "main/arrayobj.h"
 #include "main/bufferobj.h"
 
-#include "st_inlines.h"
 #include "st_context.h"
 #include "st_cb_bufferobjects.h"
 
@@ -202,7 +201,7 @@ st_bufferobj_data(GLcontext *ctx,
       }
 
       if (data)
-         st_no_flush_pipe_buffer_write(st_context(ctx), st_obj->buffer, 0,
+         pipe_buffer_write(st_context(ctx)->pipe, st_obj->buffer, 0,
                                       size, data);
       return GL_TRUE;
    }
index 736180ddc6c2d1d203322baef10f20e1a160d623..7e3b87351f1fbdb98dd907a8f22da0ff74cd59f6 100644 (file)
@@ -43,7 +43,6 @@
 #include "st_cb_clear.h"
 #include "st_cb_fbo.h"
 #include "st_program.h"
-#include "st_inlines.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_state.h"
@@ -163,7 +162,7 @@ draw_quad(struct st_context *st,
    }
 
    /* put vertex data into vbuf */
-   st_no_flush_pipe_buffer_write_nooverlap(st, st->clear.vbuf,
+   pipe_buffer_write_nooverlap(st->pipe, st->clear.vbuf,
                                            st->clear.vbuf_slot
                                              * sizeof(st->clear.vertices),
                                            sizeof(st->clear.vertices),
index ad20004d369b91307139d1599925bf0c8a662527..f74d8cd42d046cb98e832efae13208171f4b5e00 100644 (file)
@@ -49,7 +49,6 @@
 #include "st_cb_fbo.h"
 #include "st_format.h"
 #include "st_texture.h"
-#include "st_inlines.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
@@ -63,6 +62,8 @@
 #include "cso_cache/cso_context.h"
 
 
+#if FEATURE_drawpix
+
 /**
  * Check if the given program is:
  * 0: MOVE result.color, fragment.color;
@@ -384,7 +385,7 @@ make_texture(struct st_context *st,
       /* we'll do pixel transfer in a fragment shader */
       ctx->_ImageTransferState = 0x0;
 
-      transfer = st_no_flush_get_tex_transfer(st, pt, 0, 0, 0,
+      transfer = pipe_get_transfer(st->pipe, pt, 0, 0, 0,
                                              PIPE_TRANSFER_WRITE, 0, 0,
                                              width, height);
 
@@ -508,7 +509,7 @@ draw_quad(GLcontext *ctx, GLfloat x0, GLfloat y0, GLfloat z,
       buf = pipe_buffer_create(pipe->screen,
                               PIPE_BIND_VERTEX_BUFFER,
                                sizeof(verts));
-      st_no_flush_pipe_buffer_write(st, buf, 0, sizeof(verts), verts);
+      pipe_buffer_write(st->pipe, buf, 0, sizeof(verts), verts);
 
       util_draw_vertex_buffer(pipe, buf, 0,
                               PIPE_PRIM_QUADS,
@@ -685,7 +686,7 @@ draw_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
    else
       usage = PIPE_TRANSFER_WRITE;
 
-   pt = st_cond_flush_get_tex_transfer(st_context(ctx), strb->texture, 0, 0, 0,
+   pt = pipe_get_transfer(st_context(ctx)->pipe, strb->texture, 0, 0, 0,
                                       usage, x, y,
                                       width, height);
 
@@ -885,7 +886,7 @@ copy_stencil_pixels(GLcontext *ctx, GLint srcx, GLint srcy,
       dsty = rbDraw->Base.Height - dsty - height;
    }
 
-   ptDraw = st_cond_flush_get_tex_transfer(st_context(ctx),
+   ptDraw = pipe_get_transfer(st_context(ctx)->pipe,
                                           rbDraw->texture, 0, 0, 0,
                                           usage, dstx, dsty,
                                           width, height);
@@ -971,8 +972,6 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
    GLuint sample_count;
    struct gl_pixelstore_attrib pack = ctx->DefaultPacking;
 
-   pipe->flush(pipe, PIPE_FLUSH_RENDER_CACHE, NULL);
-
    st_validate_state(st);
 
    if (type == GL_STENCIL) {
@@ -1075,7 +1074,7 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
    else {
       /* CPU-based fallback/conversion */
       struct pipe_transfer *ptRead =
-         st_cond_flush_get_tex_transfer(st, rbRead->texture, 0, 0, 0,
+         pipe_get_transfer(st->pipe, rbRead->texture, 0, 0, 0,
                                         PIPE_TRANSFER_READ,
                                         readX, readY, readW, readH);
       struct pipe_transfer *ptTex;
@@ -1089,7 +1088,7 @@ st_CopyPixels(GLcontext *ctx, GLint srcx, GLint srcy,
       else
          transfer_usage = PIPE_TRANSFER_WRITE;
 
-      ptTex = st_cond_flush_get_tex_transfer(st, pt, 0, 0, 0, transfer_usage,
+      ptTex = pipe_get_transfer(st->pipe, pt, 0, 0, 0, transfer_usage,
                                              0, 0, width, height);
 
       /* copy image from ptRead surface to ptTex surface */
@@ -1143,7 +1142,9 @@ st_destroy_drawpix(struct st_context *st)
    st_reference_fragprog(st, &st->drawpix.z_shader, NULL);
    st_reference_fragprog(st, &st->pixel_xfer.combined_prog, NULL);
    if (st->drawpix.vert_shaders[0])
-      free(st->drawpix.vert_shaders[0]);
+      ureg_free_tokens(st->drawpix.vert_shaders[0]);
    if (st->drawpix.vert_shaders[1])
-      free(st->drawpix.vert_shaders[1]);
+      ureg_free_tokens(st->drawpix.vert_shaders[1]);
 }
+
+#endif /* FEATURE_drawpix */
index 26fe864d185599590ff289991fe49fef7b035ca6..7d5e901ccc514a921310b55ccf4f5c98f89f1b0b 100644 (file)
 #define ST_CB_DRAWPIXELS_H
 
 
+#include "main/mtypes.h"
+
+#if FEATURE_drawpix
+
 extern void st_init_drawpixels_functions(struct dd_function_table *functions);
 
 extern void
 st_destroy_drawpix(struct st_context *st);
 
+#else
+
+static INLINE void
+st_init_drawpixels_functions(struct dd_function_table *functions)
+{
+}
+
+static INLINE void
+st_destroy_drawpix(struct st_context *st)
+{
+}
+
+#endif /* FEATURE_drawpix */
 
 #endif /* ST_CB_DRAWPIXELS_H */
index 6d387d5ccf1c771cdaa3473c07d0ec044f80587f..3d99d6c8a11dc41d2de0bc594524105a60caddad 100644 (file)
 #include "main/imports.h"
 #include "main/image.h"
 #include "main/bufferobj.h"
-#include "main/drawtex.h"
 #include "main/macros.h"
-#include "main/state.h"
-#include "main/texformat.h"
 #include "shader/program.h"
-#include "shader/prog_parameter.h"
 #include "shader/prog_print.h"
 
 #include "st_context.h"
 #include "st_atom.h"
-#include "st_atom_constbuf.h"
-#include "st_draw.h"
 #include "st_cb_drawtex.h"
 
 #include "pipe/p_context.h"
 #include "pipe/p_defines.h"
 #include "util/u_inlines.h"
 #include "pipe/p_shader_tokens.h"
-#include "util/u_tile.h"
 #include "util/u_draw_quad.h"
 #include "util/u_simple_shaders.h"
 
 #include "cso_cache/cso_context.h"
 
 
+#if FEATURE_OES_draw_texture
+
+
 struct cached_shader
 {
-   //struct pipe_shader_state shader;
    void *handle;
 
    uint num_attribs;
@@ -60,9 +55,6 @@ static struct cached_shader CachedShaders[MAX_SHADERS];
 static GLuint NumCachedShaders = 0;
 
 
-#if FEATURE_OES_draw_texture
-
-
 static void *
 lookup_shader(struct pipe_context *pipe,
               uint num_attribs,
@@ -288,13 +280,10 @@ st_DrawTex(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z,
 }
 
 
-#endif /* FEATURE_OES_draw_texture */
-
-
 void
 st_init_drawtex_functions(struct dd_function_table *functions)
 {
-   _MESA_INIT_DRAWTEX_FUNCTIONS(functions, st_);
+   functions->DrawTex = st_DrawTex;
 }
 
 
@@ -310,3 +299,6 @@ st_destroy_drawtex(struct st_context *st)
    }
    NumCachedShaders = 0;
 }
+
+
+#endif /* FEATURE_OES_draw_texture */
index 7b0da7027984ad1c79133e4866eaedc9f6730d19..a3f54a349ccb49092aa68a8da655376ebaa7e4e4 100644 (file)
@@ -9,10 +9,29 @@
 #ifndef ST_CB_DRAWTEX_H
 #define ST_CB_DRAWTEX_H
 
+
+#include "main/mtypes.h"
+
+#if FEATURE_OES_draw_texture
+
 extern void
 st_init_drawtex_functions(struct dd_function_table *functions);
 
 extern void
 st_destroy_drawtex(struct st_context *st);
 
+#else
+
+static INLINE void
+st_init_drawtex_functions(struct dd_function_table *functions)
+{
+}
+
+static INLINE void
+st_destroy_drawtex(struct st_context *st)
+{
+}
+
+#endif /* FEATURE_OES_draw_texture */
+
 #endif /* ST_CB_DRAWTEX_H */
index 91a42fafd19f0bea7b59136b8b0bebb27564c43c..4aaf91d5a19dd6188a7ed5524f98a0b10c130696 100644 (file)
@@ -129,6 +129,10 @@ st_bind_surface(GLcontext *ctx, GLenum target,
    /* FIXME create a non-default sampler view from the pipe_surface? */
    pipe_resource_reference(&stImage->pt, ps->texture);
 
+   stObj->width0 = ps->width;
+   stObj->height0 = ps->height;
+   stObj->depth0 = 1;
+
    _mesa_dirty_texobj(ctx, texObj, GL_TRUE);
 }
 
index c85d3da84a294e4e98ea4b9342089f43de86e59a..e57730b5ecdc632000973bf27447fd3e99529c11 100644 (file)
@@ -54,6 +54,8 @@
 #include "draw/draw_pipe.h"
 
 
+#if FEATURE_feedback
+
 /**
  * This is actually used for both feedback and selection.
  */
@@ -302,3 +304,5 @@ void st_init_feedback_functions(struct dd_function_table *functions)
 {
    functions->RenderMode = st_RenderMode;
 }
+
+#endif /* FEATURE_feedback */
index 2559ba3817bc819ca6109a328055a379eb0494c2..706d84960f7bd75d7789d7319b495fea8ac716ab 100644 (file)
 #define ST_CB_FEEDBACK_H
 
 
+#include "main/mtypes.h"
+
+#if FEATURE_feedback
+
 extern void
 st_init_feedback_functions(struct dd_function_table *functions);
 
+#else
+
+static INLINE void
+st_init_feedback_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_feedback */
 
 #endif /* ST_CB_FEEDBACK_H */
index 1896663932c7a617ca9e1a156f768cc5dac67c90..e423d9d8a51dbb9e9340ed98f1696d9a2dc54ced 100644 (file)
@@ -43,6 +43,8 @@
 #include "st_cb_queryobj.h"
 
 
+#if FEATURE_queryobj
+
 static struct gl_query_object *
 st_NewQueryObject(GLcontext *ctx, GLuint id)
 {
@@ -51,6 +53,7 @@ st_NewQueryObject(GLcontext *ctx, GLuint id)
       stq->base.Id = id;
       stq->base.Ready = GL_TRUE;
       stq->pq = NULL;
+      stq->type = PIPE_QUERY_TYPES; /* an invalid value */
       return &stq->base;
    }
    return NULL;
@@ -78,17 +81,41 @@ st_BeginQuery(GLcontext *ctx, struct gl_query_object *q)
 {
    struct pipe_context *pipe = st_context(ctx)->pipe;
    struct st_query_object *stq = st_query_object(q);
+   unsigned type;
 
+   /* convert GL query type to Gallium query type */
    switch (q->Target) {
    case GL_SAMPLES_PASSED_ARB:
-      if (!stq->pq)
-        stq->pq = pipe->create_query( pipe, PIPE_QUERY_OCCLUSION_COUNTER );
+      type = PIPE_QUERY_OCCLUSION_COUNTER;
+      break;
+   case GL_PRIMITIVES_GENERATED:
+      type = PIPE_QUERY_PRIMITIVES_GENERATED;
+      break;
+   case GL_TRANSFORM_FEEDBACK_PRIMITIVES_WRITTEN:
+      type = PIPE_QUERY_PRIMITIVES_EMITTED;
+      break;
+   case GL_TIME_ELAPSED_EXT:
+      type = PIPE_QUERY_TIME_ELAPSED;
       break;
    default:
-      assert(0);
+      assert(0 && "unexpected query target in st_BeginQuery()");
       return;
    }
 
+   if (stq->pq && stq->type != type) {
+      /* free old query of different type */
+      pipe->destroy_query(pipe, stq->pq);
+      stq->pq = NULL;
+      stq->type = PIPE_QUERY_TYPES; /* an invalid value */
+   }
+
+   if (!stq->pq) {
+      stq->pq = pipe->create_query(pipe, type);
+      stq->type = type;
+   }
+
+   assert(stq->type == type);
+
    pipe->begin_query(pipe, stq->pq);
 }
 
@@ -146,3 +173,5 @@ void st_init_query_functions(struct dd_function_table *functions)
    functions->WaitQuery = st_WaitQuery;
    functions->CheckQuery = st_CheckQuery;
 }
+
+#endif /* FEATURE_queryobj */
index fa256b71824606ca0bdd8086c43b2b0865789b08..017471b0b0655651ae9affc0a213db3355e85a14 100644 (file)
@@ -29,6 +29,8 @@
 #define ST_CB_QUERYOBJ_H
 
 
+#include "main/mtypes.h"
+
 /**
  * Subclass of gl_query_object
  */
@@ -36,6 +38,7 @@ struct st_query_object
 {
    struct gl_query_object base;
    struct pipe_query *pq;
+   unsigned type;  /**< PIPE_QUERY_x */
 };
 
 
@@ -49,9 +52,18 @@ st_query_object(struct gl_query_object *q)
 }
 
 
+#if FEATURE_queryobj
 
 extern void
 st_init_query_functions(struct dd_function_table *functions);
 
+#else
+
+static INLINE void
+st_init_query_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_queryobj */
 
 #endif
index 843f3200278d3f79a9bdc76d669451c6e69ac5dd..7b2eb8012de405b04f154ab63daffe8c5c4b8c7c 100644 (file)
@@ -50,6 +50,7 @@
 #include "vbo/vbo.h"
 
 
+#if FEATURE_rastpos
 
 /**
  * Our special drawing pipeline stage (replaces rasterization).
@@ -267,3 +268,5 @@ void st_init_rasterpos_functions(struct dd_function_table *functions)
 {
    functions->RasterPos = st_RasterPos;
 }
+
+#endif /* FEATURE_rastpos */
index 2b992e1405ec99b1285a1f2bb01600a101e2500d..d2ed7297f152d2074364d6e0d86a56dc434a7624 100644 (file)
 #ifndef ST_CB_RASTERPOS_H
 #define ST_CB_RASTERPOS_H
 
+
+#include "main/mtypes.h"
+
+#if FEATURE_rastpos
+
 extern void st_init_rasterpos_functions(struct dd_function_table *functions);
 
-#endif
+#else
+
+static INLINE void
+st_init_rasterpos_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_rastpos */
+
+#endif /* ST_CB_RASTERPOS_H */
index 69950ac44bba6d9d9624f551bb2777db860e881e..b8493dab93f0ad02fcc0b7c635fb59c08a9586c3 100644 (file)
 #include "st_debug.h"
 #include "st_context.h"
 #include "st_atom.h"
+#include "st_cb_bitmap.h"
 #include "st_cb_readpixels.h"
 #include "st_cb_fbo.h"
-#include "st_texture.h"
-#include "st_inlines.h"
 
 /**
  * Special case for reading stencil buffer.
@@ -75,7 +74,7 @@ st_read_stencil_pixels(GLcontext *ctx, GLint x, GLint y,
 
    /* Create a read transfer from the renderbuffer's texture */
 
-   pt = st_cond_flush_get_tex_transfer(st_context(ctx), strb->texture,
+   pt = pipe_get_transfer(st_context(ctx)->pipe, strb->texture,
                                       0, 0, 0,
                                       PIPE_TRANSFER_READ, x, y,
                                       width, height);
@@ -231,7 +230,7 @@ st_fast_readpixels(GLcontext *ctx, struct st_renderbuffer *strb,
          y = strb->texture->height0 - y - height;
       }
 
-      trans = st_cond_flush_get_tex_transfer(st_context(ctx), strb->texture,
+      trans = pipe_get_transfer(st_context(ctx)->pipe, strb->texture,
                                             0, 0, 0,
                                             PIPE_TRANSFER_READ, x, y,
                                             width, height);
@@ -346,12 +345,12 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
       return;
    }
 
+   st_flush_bitmap_cache(st);
+
    dest = _mesa_map_pbo_dest(ctx, &clippedPacking, dest);
    if (!dest)
       return;
 
-   st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
-
    if (format == GL_STENCIL_INDEX ||
        format == GL_DEPTH_STENCIL) {
       st_read_stencil_pixels(ctx, x, y, width, height,
@@ -395,7 +394,7 @@ st_readpixels(GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height,
    }
 
    /* Create a read transfer from the renderbuffer's texture */
-   trans = st_cond_flush_get_tex_transfer(st_context(ctx), strb->texture,
+   trans = pipe_get_transfer(st_context(ctx)->pipe, strb->texture,
                                          0, 0, 0,
                                          PIPE_TRANSFER_READ, x, y,
                                          width, height);
index 92342167d9226e7f8817b82f3b92246b75f72782..647898ef7c9a1c840f914799f35ecf6fe944197a 100644 (file)
 #include "state_tracker/st_debug.h"
 #include "state_tracker/st_context.h"
 #include "state_tracker/st_cb_fbo.h"
+#include "state_tracker/st_cb_flush.h"
 #include "state_tracker/st_cb_texture.h"
 #include "state_tracker/st_format.h"
 #include "state_tracker/st_texture.h"
 #include "state_tracker/st_gen_mipmap.h"
-#include "state_tracker/st_inlines.h"
 #include "state_tracker/st_atom.h"
 
 #include "pipe/p_context.h"
@@ -255,8 +255,10 @@ get_texture_dims(GLenum target)
  *
  * We use the given st_texture_image as a clue to determine the size of the
  * mipmap image at level=0.
+ *
+ * \return GL_TRUE for success, GL_FALSE if out of memory.
  */
-static void
+static GLboolean
 guess_and_alloc_texture(struct st_context *st,
                        struct st_texture_object *stObj,
                        const struct st_texture_image *stImage)
@@ -287,7 +289,8 @@ guess_and_alloc_texture(struct st_context *st,
            (dims >= 3 && depth == 1) ) {
          /* we can't determine the image size at level=0 */
          stObj->width0 = stObj->height0 = stObj->depth0 = 0;
-         return;
+         /* this is not an out of memory error */
+         return GL_TRUE;
       }
    }
 
@@ -349,7 +352,9 @@ guess_and_alloc_texture(struct st_context *st,
                                  depth,
                                  bindings);
 
-   DBG("%s - success\n", __FUNCTION__);
+   DBG("%s returning %d\n", __FUNCTION__, (stObj->pt != NULL));
+
+   return stObj->pt != NULL;
 }
 
 
@@ -459,7 +464,7 @@ compress_with_blit(GLcontext * ctx,
 
    /* Put user's tex data into the temporary texture
     */
-   tex_xfer = st_cond_flush_get_tex_transfer(st_context(ctx), src_tex,
+   tex_xfer = pipe_get_transfer(st_context(ctx)->pipe, src_tex,
                                             0, 0, 0, /* face, level are zero */
                                             PIPE_TRANSFER_WRITE,
                                             0, 0, width, height); /* x, y, w, h */
@@ -597,14 +602,12 @@ st_TexImage(GLcontext * ctx,
    }
 
    if (!stObj->pt) {
-      guess_and_alloc_texture(st, stObj, stImage);
-      if (!stObj->pt) {
+      if (!guess_and_alloc_texture(st, stObj, stImage)) {
          /* Probably out of memory.
           * Try flushing any pending rendering, then retry.
           */
          st_finish(st);
-         guess_and_alloc_texture(st, stObj, stImage);
-         if (!stObj->pt) {
+         if (!guess_and_alloc_texture(st, stObj, stImage)) {
             _mesa_error(ctx, GL_OUT_OF_MEMORY, "glTexImage");
             return;
          }
@@ -871,7 +874,7 @@ decompress_with_blit(GLcontext * ctx, GLenum target, GLint level,
                         PIPE_TEX_MIPFILTER_NEAREST);
 
    /* map the dst_surface so we can read from it */
-   tex_xfer = st_cond_flush_get_tex_transfer(st_context(ctx),
+   tex_xfer = pipe_get_transfer(st_context(ctx)->pipe,
                                             dst_texture, 0, 0, 0,
                                             PIPE_TRANSFER_READ,
                                             0, 0, width, height);
@@ -957,11 +960,6 @@ st_get_tex_image(GLcontext * ctx, GLenum target, GLint level,
       /* Image is stored in hardware format in a buffer managed by the
        * kernel.  Need to explicitly map and unmap it.
        */
-      unsigned face = _mesa_tex_target_to_face(target);
-
-      st_teximage_flush_before_map(st, stImage->pt, face, level,
-                                  PIPE_TRANSFER_READ);
-
       texImage->Data = st_texture_image_map(st, stImage, 0,
                                             PIPE_TRANSFER_READ, 0, 0,
                                             stImage->base.Width,
@@ -1093,16 +1091,12 @@ st_TexSubimage(GLcontext *ctx, GLint dims, GLenum target, GLint level,
     * from uploading the buffer under us.
     */
    if (stImage->pt) {
-      unsigned face = _mesa_tex_target_to_face(target);
-
       if (format == GL_DEPTH_COMPONENT &&
           util_format_is_depth_and_stencil(stImage->pt->format))
          transfer_usage = PIPE_TRANSFER_READ_WRITE;
       else
          transfer_usage = PIPE_TRANSFER_WRITE;
 
-      st_teximage_flush_before_map(st, stImage->pt, face, level,
-                                  transfer_usage);
       texImage->Data = st_texture_image_map(st, stImage, zoffset, 
                                             transfer_usage,
                                             xoffset, yoffset,
@@ -1225,11 +1219,8 @@ st_CompressedTexSubImage2D(GLcontext *ctx, GLenum target, GLint level,
    enum pipe_format pformat;
 
    if (stImage->pt) {
-      unsigned face = _mesa_tex_target_to_face(target);
       pformat = stImage->pt->format;
 
-      st_teximage_flush_before_map(st, stImage->pt, face, level,
-                                  PIPE_TRANSFER_WRITE);
       texImage->Data = st_texture_image_map(st, stImage, 0, 
                                             PIPE_TRANSFER_WRITE,
                                             xoffset, yoffset,
@@ -1313,7 +1304,7 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
       srcY = strb->Base.Height - srcY - height;
    }
 
-   src_trans = st_cond_flush_get_tex_transfer( st_context(ctx),
+   src_trans = pipe_get_transfer(st_context(ctx)->pipe,
                                               strb->texture,
                                               0, 0, 0,
                                               PIPE_TRANSFER_READ,
@@ -1327,9 +1318,6 @@ fallback_copy_texsubimage(GLcontext *ctx, GLenum target, GLint level,
    else
       transfer_usage = PIPE_TRANSFER_WRITE;
 
-   st_teximage_flush_before_map(st, stImage->pt, 0, 0,
-                               transfer_usage);
-
    texDest = st_texture_image_map(st, stImage, 0, transfer_usage,
                                   destX, destY, width, height);
 
@@ -1511,9 +1499,6 @@ st_copy_texsubimage(GLcontext *ctx,
    struct pipe_surface *dest_surface = NULL;
    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(st, PIPE_FLUSH_RENDER_CACHE, NULL);
-
    /* make sure finalize_textures has been called? 
     */
    if (0) st_validate_state(st);
@@ -1787,17 +1772,12 @@ copy_image_data_to_texture(struct st_context *st,
        */
       st_texture_image_copy(st->pipe,
                             stObj->pt, dstLevel,  /* dest texture, level */
-                            stImage->pt, /* src texture */
+                            stImage->pt, stImage->level, /* src texture, level */
                             stImage->face);
 
       pipe_resource_reference(&stImage->pt, NULL);
    }
    else if (stImage->base.Data) {
-      /* More straightforward upload.  
-       */
-      st_teximage_flush_before_map(st, stObj->pt, stImage->face, dstLevel,
-                                  PIPE_TRANSFER_WRITE);
-
       st_texture_image_data(st,
                             stObj->pt,
                             stImage->face,
@@ -1909,7 +1889,7 @@ st_finalize_texture(GLcontext *ctx,
     */
    for (face = 0; face < nr_faces; face++) {
       GLuint level;
-      for (level = 0; level <= stObj->lastLevel; level++) {
+      for (level = stObj->base.BaseLevel; level <= stObj->lastLevel; level++) {
          struct st_texture_image *stImage =
             st_texture_image(stObj->base.Image[face][level]);
 
diff --git a/src/mesa/state_tracker/st_cb_xformfb.c b/src/mesa/state_tracker/st_cb_xformfb.c
new file mode 100644 (file)
index 0000000..749e88e
--- /dev/null
@@ -0,0 +1,133 @@
+/**************************************************************************
+ * 
+ * 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.
+ * 
+ **************************************************************************/
+
+
+/**
+ * Transform feedback functions.
+ *
+ * \author Brian Paul
+ */
+
+
+#include "main/imports.h"
+#include "main/context.h"
+#include "main/transformfeedback.h"
+
+#include "st_cb_xformfb.h"
+
+
+#if FEATURE_EXT_transform_feedback
+
+#if 0
+static struct gl_transform_feedback_object *
+st_new_transform_feedback(GLcontext *ctx, GLuint name)
+{
+   struct gl_transform_feedback_object *obj;
+   obj = CALLOC_STRUCT(gl_transform_feedback_object);
+   if (obj) {
+      obj->Name = name;
+      obj->RefCount = 1;
+   }
+   return obj;
+}
+#endif
+
+#if 0
+static void
+st_delete_transform_feedback(GLcontext *ctx,
+                             struct gl_transform_feedback_object *obj)
+{
+   GLuint i;
+
+   for (i = 0; i < Elements(obj->Buffers); i++) {
+      _mesa_reference_buffer_object(ctx, &obj->Buffers[i], NULL);
+   }
+
+   free(obj);
+}
+#endif
+
+
+static void
+st_begin_transform_feedback(GLcontext *ctx, GLenum mode,
+                            struct gl_transform_feedback_object *obj)
+{
+   /* to-do */
+}
+
+
+static void
+st_end_transform_feedback(GLcontext *ctx,
+                          struct gl_transform_feedback_object *obj)
+{
+   /* to-do */
+}
+
+
+static void
+st_pause_transform_feedback(GLcontext *ctx,
+                            struct gl_transform_feedback_object *obj)
+{
+   /* to-do */
+}
+
+
+static void
+st_resume_transform_feedback(GLcontext *ctx,
+                             struct gl_transform_feedback_object *obj)
+{
+   /* to-do */
+}
+
+
+static void
+st_draw_transform_feedback(GLcontext *ctx, GLenum mode,
+                           struct gl_transform_feedback_object *obj)
+{
+   /* XXX to do */
+   /*
+    * Get number of vertices in obj's feedback buffer.
+    * Call ctx->Exec.DrawArrays(mode, 0, count);
+    */
+}
+
+
+void
+st_init_xformfb_functions(struct dd_function_table *functions)
+{
+   /* let core Mesa plug in its functions */
+   _mesa_init_transform_feedback_functions(functions);
+
+   /* then override a few: */
+   functions->BeginTransformFeedback = st_begin_transform_feedback;
+   functions->EndTransformFeedback = st_end_transform_feedback;
+   functions->PauseTransformFeedback = st_pause_transform_feedback;
+   functions->ResumeTransformFeedback = st_resume_transform_feedback;
+   functions->DrawTransformFeedback = st_draw_transform_feedback;
+}
+
+#endif /* FEATURE_EXT_transform_feedback */
diff --git a/src/mesa/state_tracker/st_cb_xformfb.h b/src/mesa/state_tracker/st_cb_xformfb.h
new file mode 100644 (file)
index 0000000..50efcb9
--- /dev/null
@@ -0,0 +1,46 @@
+/**************************************************************************
+ * 
+ * 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 ST_CB_XFORMFB_H
+#define ST_CB_XFORMFB_H
+
+
+#if FEATURE_EXT_transform_feedback
+
+extern void
+st_init_xformfb_functions(struct dd_function_table *functions);
+
+#else
+
+static INLINE void
+st_init_xformfb_functions(struct dd_function_table *functions)
+{
+}
+
+#endif /* FEATURE_EXT_transform_feedback */
+
+#endif /* ST_CB_XFORMFB_H */
index d4ea593e3f7dbf07b41169b0520bfc0031b83869..2070f14a5a64893ccad18ff78ca70b4b35f4e9e2 100644 (file)
 #include "st_cb_bufferobjects.h"
 #include "st_cb_clear.h"
 #include "st_cb_condrender.h"
-#if FEATURE_drawpix
 #include "st_cb_drawpixels.h"
 #include "st_cb_rasterpos.h"
-#endif
-#if FEATURE_OES_draw_texture
 #include "st_cb_drawtex.h"
-#endif
 #include "st_cb_eglimage.h"
 #include "st_cb_fbo.h"
-#if FEATURE_feedback
 #include "st_cb_feedback.h"
-#endif
 #include "st_cb_program.h"
 #include "st_cb_queryobj.h"
 #include "st_cb_readpixels.h"
 #include "st_cb_texture.h"
+#include "st_cb_xformfb.h"
 #include "st_cb_flush.h"
 #include "st_cb_strings.h"
 #include "st_atom.h"
@@ -65,7 +60,6 @@
 #include "util/u_inlines.h"
 #include "util/u_rect.h"
 #include "util/u_surface.h"
-#include "draw/draw_context.h"
 #include "cso_cache/cso_context.h"
 
 
@@ -116,18 +110,6 @@ st_create_context_priv( GLcontext *ctx, struct pipe_context *pipe )
    /* state tracker needs the VBO module */
    _vbo_CreateContext(ctx);
 
-#if FEATURE_feedback || FEATURE_drawpix
-   st->draw = draw_create(pipe); /* for selection/feedback */
-
-   /* Disable draw options that might convert points/lines to tris, etc.
-    * as that would foul-up feedback/selection mode.
-    */
-   draw_wide_line_threshold(st->draw, 1000.0f);
-   draw_wide_point_threshold(st->draw, 1000.0f);
-   draw_enable_line_stipple(st->draw, FALSE);
-   draw_enable_point_sprites(st->draw, FALSE);
-#endif
-
    st->dirty.mesa = ~0;
    st->dirty.st = ~0;
 
@@ -208,23 +190,14 @@ static void st_destroy_context_priv( struct st_context *st )
 {
    uint i;
 
-#if FEATURE_feedback || FEATURE_drawpix
-   draw_destroy(st->draw);
-#endif
    st_destroy_atoms( st );
    st_destroy_draw( st );
    st_destroy_generate_mipmap(st);
-#if FEATURE_EXT_framebuffer_blit
    st_destroy_blit(st);
-#endif
    st_destroy_clear(st);
-#if FEATURE_drawpix
    st_destroy_bitmap(st);
    st_destroy_drawpix(st);
-#endif
-#if FEATURE_OES_draw_texture
    st_destroy_drawtex(st);
-#endif
 
    for (i = 0; i < Elements(st->state.sampler_views); i++) {
       pipe_sampler_view_reference(&st->state.sampler_views[i], NULL);
@@ -284,39 +257,29 @@ void st_init_driver_functions(struct dd_function_table *functions)
 {
    _mesa_init_glsl_driver_functions(functions);
 
-#if FEATURE_accum
    st_init_accum_functions(functions);
-#endif
-#if FEATURE_EXT_framebuffer_blit
    st_init_blit_functions(functions);
-#endif
    st_init_bufferobject_functions(functions);
    st_init_clear_functions(functions);
-#if FEATURE_drawpix
    st_init_bitmap_functions(functions);
    st_init_drawpixels_functions(functions);
    st_init_rasterpos_functions(functions);
-#endif
 
-#if FEATURE_OES_draw_texture
    st_init_drawtex_functions(functions);
-#endif
 
    st_init_eglimage_functions(functions);
 
    st_init_fbo_functions(functions);
-#if FEATURE_feedback
    st_init_feedback_functions(functions);
-#endif
    st_init_program_functions(functions);
-#if FEATURE_queryobj
    st_init_query_functions(functions);
-#endif
    st_init_cond_render_functions(functions);
    st_init_readpixels_functions(functions);
    st_init_texture_functions(functions);
    st_init_flush_functions(functions);
    st_init_string_functions(functions);
 
+   st_init_xformfb_functions(functions);
+
    functions->UpdateState = st_invalidate_state;
 }
index 4137596bd404eb209fd8e0067cf7ff7a6bdd944c..eb2e5b2bbf77334112082961517bf658edcd14b0 100644 (file)
@@ -57,6 +57,7 @@
 #include "pipe/p_defines.h"
 #include "util/u_inlines.h"
 #include "util/u_format.h"
+#include "draw/draw_context.h"
 #include "cso_cache/cso_context.h"
 
 
@@ -741,11 +742,26 @@ void st_init_draw( struct st_context *st )
    GLcontext *ctx = st->ctx;
 
    vbo_set_draw_func(ctx, st_draw_vbo);
+
+#if FEATURE_feedback || FEATURE_rastpos
+   st->draw = draw_create(st->pipe); /* for selection/feedback */
+
+   /* Disable draw options that might convert points/lines to tris, etc.
+    * as that would foul-up feedback/selection mode.
+    */
+   draw_wide_line_threshold(st->draw, 1000.0f);
+   draw_wide_point_threshold(st->draw, 1000.0f);
+   draw_enable_line_stipple(st->draw, FALSE);
+   draw_enable_point_sprites(st->draw, FALSE);
+#endif
 }
 
 
 void st_destroy_draw( struct st_context *st )
 {
+#if FEATURE_feedback || FEATURE_rastpos
+   draw_destroy(st->draw);
+#endif
 }
 
 
index a1f70e869362a8f70714f58848722fefd66f98af..5cf2666334129234baa0627d6696df5404685f24 100644 (file)
@@ -45,7 +45,7 @@
 #include "draw/draw_context.h"
 
 
-#if FEATURE_feedback || FEATURE_drawpix
+#if FEATURE_feedback || FEATURE_rastpos
 
 /**
  * Set the (private) draw module's post-transformed vertex format when in
@@ -279,5 +279,5 @@ st_feedback_draw_vbo(GLcontext *ctx,
    }
 }
 
-#endif /* FEATURE_feedback || FEATURE_drawpix */
+#endif /* FEATURE_feedback || FEATURE_rastpos */
 
index 9ada38aa483b1683cc03228a72aa1d06b4047311..810a0635b50842484e1c52e22e7b0452efb735fb 100644 (file)
@@ -67,6 +67,7 @@ void st_init_limits(struct st_context *st)
 {
    struct pipe_screen *screen = st->pipe->screen;
    struct gl_constants *c = &st->ctx->Const;
+   struct gl_program_constants *pc;
 
    c->MaxTextureLevels
       = _min(screen->get_param(screen, PIPE_CAP_MAX_TEXTURE_2D_LEVELS),
@@ -140,6 +141,26 @@ void st_init_limits(struct st_context *st)
 
    /* Quads always follow GL provoking rules. */
    c->QuadsFollowProvokingVertexConvention = GL_FALSE;
+
+   pc = &c->FragmentProgram;
+   pc->MaxNativeInstructions    = screen->get_param(screen, PIPE_CAP_MAX_FS_INSTRUCTIONS);
+   pc->MaxNativeAluInstructions = screen->get_param(screen, PIPE_CAP_MAX_FS_ALU_INSTRUCTIONS);
+   pc->MaxNativeTexInstructions = screen->get_param(screen, PIPE_CAP_MAX_FS_TEX_INSTRUCTIONS);
+   pc->MaxNativeTexIndirections = screen->get_param(screen, PIPE_CAP_MAX_FS_TEX_INDIRECTIONS);
+   pc->MaxNativeAttribs         = screen->get_param(screen, PIPE_CAP_MAX_FS_INPUTS);
+   pc->MaxNativeTemps           = screen->get_param(screen, PIPE_CAP_MAX_FS_TEMPS);
+   pc->MaxNativeAddressRegs     = screen->get_param(screen, PIPE_CAP_MAX_FS_ADDRS);
+   pc->MaxNativeParameters      = screen->get_param(screen, PIPE_CAP_MAX_FS_CONSTS);
+
+   pc = &c->VertexProgram;
+   pc->MaxNativeInstructions    = screen->get_param(screen, PIPE_CAP_MAX_VS_INSTRUCTIONS);
+   pc->MaxNativeAluInstructions = screen->get_param(screen, PIPE_CAP_MAX_VS_ALU_INSTRUCTIONS);
+   pc->MaxNativeTexInstructions = screen->get_param(screen, PIPE_CAP_MAX_VS_TEX_INSTRUCTIONS);
+   pc->MaxNativeTexIndirections = screen->get_param(screen, PIPE_CAP_MAX_VS_TEX_INDIRECTIONS);
+   pc->MaxNativeAttribs         = screen->get_param(screen, PIPE_CAP_MAX_VS_INPUTS);
+   pc->MaxNativeTemps           = screen->get_param(screen, PIPE_CAP_MAX_VS_TEMPS);
+   pc->MaxNativeAddressRegs     = screen->get_param(screen, PIPE_CAP_MAX_VS_ADDRS);
+   pc->MaxNativeParameters      = screen->get_param(screen, PIPE_CAP_MAX_VS_CONSTS);
 }
 
 
@@ -275,6 +296,9 @@ void st_init_extensions(struct st_context *st)
    if (screen->get_param(screen, PIPE_CAP_OCCLUSION_QUERY)) {
       ctx->Extensions.ARB_occlusion_query = GL_TRUE;
    }
+   if (screen->get_param(screen, PIPE_CAP_TIMER_QUERY)) {
+     ctx->Extensions.EXT_timer_query = GL_TRUE;
+   }
 
    if (screen->get_param(screen, PIPE_CAP_TEXTURE_SHADOW_MAP)) {
       ctx->Extensions.ARB_depth_texture = GL_TRUE;
index 5cf8b4a881bed4bfed505c641bd2d4351444fe4f..2d587df6055a1c37414567b187551e8f41f43d43 100644 (file)
@@ -39,9 +39,9 @@
 
 #include "st_debug.h"
 #include "st_context.h"
+#include "st_texture.h"
 #include "st_gen_mipmap.h"
 #include "st_cb_texture.h"
-#include "st_inlines.h"
 
 
 /**
@@ -79,6 +79,7 @@ st_render_mipmap(struct st_context *st,
    struct pipe_sampler_view *psv = st_get_texture_sampler_view(stObj, pipe);
    const uint face = _mesa_tex_target_to_face(target);
 
+   assert(psv->texture == stObj->pt);
    assert(target != GL_TEXTURE_3D); /* not done yet */
 
    /* check if we can render in the texture's format */
@@ -104,10 +105,32 @@ decompress_image(enum pipe_format format,
                  unsigned width, unsigned height)
 {
    const struct util_format_description *desc = util_format_description(format);
-   const uint dst_stride = 4 * width;
+   const uint bw = util_format_get_blockwidth(format);
+   const uint bh = util_format_get_blockheight(format);
+   const uint dst_stride = 4 * MAX2(width, bw);
    const uint src_stride = util_format_get_stride(format, width);
 
    desc->unpack_rgba_8unorm(dst, dst_stride, src, src_stride, width, height);
+
+   if (width < bw || height < bh) {
+      /* We're decompressing an image smaller than the compression
+       * block size.  We don't want garbage pixel values in the region
+       * outside (width x height) so replicate pixels from the (width
+       * x height) region to fill out the (bw x bh) block size.
+       */
+      uint x, y;
+      for (y = 0; y < bh; y++) {
+         for (x = 0; x < bw; x++) {
+            if (x >= width || y >= height) {
+               uint p = (y * bw + x) * 4;
+               dst[p + 0] = dst[0];
+               dst[p + 1] = dst[1];
+               dst[p + 2] = dst[2];
+               dst[p + 3] = dst[3];
+            }
+         }
+      }
+   }
 }
 
 
@@ -176,13 +199,13 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
       ubyte *dstData;
       int srcStride, dstStride;
 
-      srcTrans = st_cond_flush_get_tex_transfer(st_context(ctx), pt, face,
+      srcTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, face,
                                                srcLevel, zslice,
                                                PIPE_TRANSFER_READ, 0, 0,
                                                 srcWidth, srcHeight);
                                                
 
-      dstTrans = st_cond_flush_get_tex_transfer(st_context(ctx), pt, face,
+      dstTrans = pipe_get_transfer(st_context(ctx)->pipe, pt, face,
                                                dstLevel, zslice,
                                                PIPE_TRANSFER_WRITE, 0, 0,
                                                dstWidth, dstHeight);
@@ -221,7 +244,7 @@ fallback_generate_mipmap(GLcontext *ctx, GLenum target,
                                      dstWidth2); /* stride in texels */
 
          /* compress the new image: dstTemp -> dstData */
-         compress_image(format, dstTemp, dstData, dstWidth2, dstHeight2);
+         compress_image(format, dstTemp, dstData, dstWidth, dstHeight);
 
          free(srcTemp);
          free(dstTemp);
@@ -261,7 +284,6 @@ compute_num_levels(GLcontext *ctx,
       return 1;
    }
    else {
-      const GLuint maxLevels = texObj->MaxLevel - texObj->BaseLevel + 1;
       const struct gl_texture_image *baseImage = 
          _mesa_get_tex_image(ctx, texObj, target, texObj->BaseLevel);
       GLuint size, numLevels;
@@ -269,14 +291,16 @@ compute_num_levels(GLcontext *ctx,
       size = MAX2(baseImage->Width2, baseImage->Height2);
       size = MAX2(size, baseImage->Depth2);
 
-      numLevels = 0;
+      numLevels = texObj->BaseLevel;
 
       while (size > 0) {
          numLevels++;
          size >>= 1;
       }
 
-      numLevels = MIN2(numLevels, maxLevels);
+      numLevels = MIN2(numLevels, texObj->MaxLevel + 1);
+
+      assert(numLevels >= 1);
 
       return numLevels;
    }
@@ -304,7 +328,7 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
       but we're not supporting multisampled textures yet. */
    assert(pt->nr_samples < 2);
 
-   /* find expected last mipmap level */
+   /* find expected last mipmap level to generate*/
    lastLevel = compute_num_levels(ctx, texObj, target) - 1;
 
    if (lastLevel == 0)
@@ -343,7 +367,7 @@ st_generate_mipmap(GLcontext *ctx, GLenum target,
       pt = stObj->pt;
    }
 
-   assert(lastLevel <= pt->last_level);
+   assert(pt->last_level >= lastLevel);
 
    /* Try to generate the mipmap by rendering/texturing.  If that fails,
     * use the software fallback.
diff --git a/src/mesa/state_tracker/st_inlines.h b/src/mesa/state_tracker/st_inlines.h
deleted file mode 100644 (file)
index 3bf7ba1..0000000
+++ /dev/null
@@ -1,159 +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.
- * 
- **************************************************************************/
-
-/**
- * Functions for checking if buffers/textures are referenced when we need
- * to read/write from/to them.  Flush when needed.
- */
-
-#ifndef ST_INLINES_H
-#define ST_INLINES_H
-
-#include "pipe/p_context.h"
-#include "pipe/p_screen.h"
-#include "pipe/p_defines.h"
-#include "util/u_inlines.h"
-#include "util/u_box.h"
-#include "pipe/p_state.h"
-
-#include "st_context.h"
-#include "st_texture.h"
-#include "st_cb_flush.h"
-
-static INLINE struct pipe_transfer *
-st_cond_flush_get_tex_transfer(struct st_context *st,
-                              struct pipe_resource *pt,
-                              unsigned int face,
-                              unsigned int level,
-                              unsigned int zslice,
-                              enum pipe_transfer_usage usage,
-                              unsigned int x, unsigned int y,
-                              unsigned int w, unsigned int h)
-{
-   struct pipe_context *context = st->pipe;
-   struct pipe_subresource subresource;
-   struct pipe_box box;
-
-   subresource.face = face;
-   subresource.level = level;
-
-   u_box_2d_zslice(x, y, zslice, w, h, &box);
-
-   st_teximage_flush_before_map(st, pt, face, level, usage);
-
-   return context->get_transfer(context, 
-                               pt,
-                               subresource,
-                               usage,
-                               &box);
-}
-
-static INLINE struct pipe_transfer *
-st_no_flush_get_tex_transfer(struct st_context *st,
-                            struct pipe_resource *pt,
-                            unsigned int face,
-                            unsigned int level,
-                            unsigned int zslice,
-                            enum pipe_transfer_usage usage,
-                            unsigned int x, unsigned int y,
-                            unsigned int w, unsigned int h)
-{
-   struct pipe_context *context = st->pipe;
-   struct pipe_box box;
-   struct pipe_subresource subresource = u_subresource( face, level );
-   
-   u_box_2d_zslice( x, y, zslice, 
-                   w, h,
-                   &box );
-
-   return context->get_transfer(context,
-                               pt,
-                               subresource,
-                               usage,
-                               &box);
-}
-
-
-static INLINE void
-st_cond_flush_pipe_buffer_write(struct st_context *st,
-                               struct pipe_resource *buf,
-                               unsigned int offset,
-                               unsigned int size,
-                               const void * data)
-{
-   struct pipe_context *pipe = st->pipe;
-
-   pipe_buffer_write(pipe, buf, offset, size, data);
-}
-
-static INLINE void
-st_no_flush_pipe_buffer_write(struct st_context *st,
-                             struct pipe_resource *buf,
-                             unsigned int offset,
-                             unsigned int size,
-                             const void * data)
-{
-   pipe_buffer_write(st->pipe, buf, offset, size, data);
-}
-
-static INLINE void
-st_no_flush_pipe_buffer_write_nooverlap(struct st_context *st,
-                                        struct pipe_resource *buf,
-                                        unsigned int offset,
-                                        unsigned int size,
-                                        const void * data)
-{
-   pipe_buffer_write_nooverlap(st->pipe, buf, offset, size, data);
-}
-
-static INLINE void
-st_cond_flush_pipe_buffer_read(struct st_context *st,
-                              struct pipe_resource *buf,
-                              unsigned int offset,
-                              unsigned int size,
-                              void * data)
-{
-   struct pipe_context *pipe = st->pipe;
-
-   if (pipe->is_resource_referenced(pipe, buf, 0, 0) & PIPE_REFERENCED_FOR_WRITE)
-      st_flush(st, PIPE_FLUSH_RENDER_CACHE, NULL);
-
-   pipe_buffer_read(pipe, buf, offset, size, data);
-}
-
-static INLINE void
-st_no_flush_pipe_buffer_read(struct st_context *st,
-                            struct pipe_resource *buf,
-                            unsigned int offset,
-                            unsigned int size,
-                            void * data)
-{
-   pipe_buffer_read(st->pipe, buf, offset, size, data);
-}
-
-#endif
-
index 44d59d447635d56109bd629f3b9398353fafb915..869196941c3a2e530e46f94928caabbe3de06dbf 100644 (file)
@@ -508,6 +508,7 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target
    struct st_texture_object *stObj;
    struct st_texture_image *stImage;
    GLenum internalFormat;
+   GLuint width, height, depth;
 
    switch (target) {
    case ST_TEXTURE_1D:
@@ -527,12 +528,6 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target
       break;
    }
 
-   if (util_format_get_component_bits(internal_format,
-            UTIL_FORMAT_COLORSPACE_RGB, 3) > 0)
-      internalFormat = GL_RGBA;
-   else
-      internalFormat = GL_RGB;
-
    texObj = _mesa_select_tex_object(ctx, texUnit, target);
    _mesa_lock_texture(ctx, texObj);
 
@@ -546,17 +541,51 @@ st_context_teximage(struct st_context_iface *stctxi, enum st_texture_type target
    texImage = _mesa_get_tex_image(ctx, texObj, target, level);
    stImage = st_texture_image(texImage);
    if (tex) {
+      /*
+       * XXX When internal_format and tex->format differ, st_finalize_texture
+       * needs to allocate a new texture with internal_format and copy the
+       * texture here into the new one.  It will result in surface_copy being
+       * called on surfaces whose formats differ.
+       *
+       * To avoid that, internal_format is (wrongly) ignored here.  A sane fix
+       * is to use a sampler view.
+       */
+      if (util_format_get_component_bits(tex->format,
+               UTIL_FORMAT_COLORSPACE_RGB, 3) > 0)
+         internalFormat = GL_RGBA;
+      else
+         internalFormat = GL_RGB;
+
       _mesa_init_teximage_fields(ctx, target, texImage,
             tex->width0, tex->height0, 1, 0, internalFormat);
       texImage->TexFormat = st_ChooseTextureFormat(ctx, internalFormat,
             GL_RGBA, GL_UNSIGNED_BYTE);
       _mesa_set_fetch_functions(texImage, 2);
+
+      width = tex->width0;
+      height = tex->height0;
+      depth = tex->depth0;
+
+      /* 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--;
+      }
    }
    else {
       _mesa_clear_texture_image(ctx, texImage);
+      width = height = depth = 0;
    }
 
    pipe_resource_reference(&stImage->pt, tex);
+   stObj->width0 = width;
+   stObj->height0 = height;
+   stObj->depth0 = depth;
 
    _mesa_dirty_texobj(ctx, texObj, GL_TRUE);
    _mesa_unlock_texture(ctx, texObj);
index e8eb9ec3904157d224c4ecda8d9e78d5f39aa437..6df6cdfe03db298ca89f0b973311828dc68a2870 100644 (file)
@@ -62,10 +62,12 @@ struct st_translate {
    struct ureg_src inputs[PIPE_MAX_SHADER_INPUTS];
    struct ureg_dst address[1];
    struct ureg_src samplers[PIPE_MAX_SAMPLERS];
-   struct ureg_dst psizregreal;
-   struct ureg_src pointSizeConst;
-   GLint psizoutindex;
-   GLboolean prevInstWrotePsiz;
+
+   /* Extra info for handling point size clamping in vertex shader */
+   struct ureg_dst pointSizeResult; /**< Actual point size output register */
+   struct ureg_src pointSizeConst;  /**< Point size range constant register */
+   GLint pointSizeOutIndex;         /**< Temp point size output register */
+   GLboolean prevInstWrotePointSize;
 
    const GLuint *inputMapping;
    const GLuint *outputMapping;
@@ -92,6 +94,12 @@ struct st_translate {
 };
 
 
+/**
+ * Make note of a branch to a label in the TGSI code.
+ * After we've emitted all instructions, we'll go over the list
+ * of labels built here and patch the TGSI code with the actual
+ * location of each label.
+ */
 static unsigned *get_label( struct st_translate *t,
                             unsigned branch_target )
 {
@@ -116,6 +124,12 @@ static unsigned *get_label( struct st_translate *t,
 }
 
 
+/**
+ * Called prior to emitting the TGSI code for each Mesa instruction.
+ * Allocate additional space for instructions if needed.
+ * Update the insn[] array so the next Mesa instruction points to
+ * the next TGSI instruction.
+ */
 static void set_insn_start( struct st_translate *t,
                             unsigned start )
 {
@@ -135,8 +149,8 @@ static void set_insn_start( struct st_translate *t,
 }
 
 
-/*
- * Map mesa register file to TGSI register file.
+/**
+ * Map a Mesa dst register to a TGSI ureg_dst register.
  */
 static struct ureg_dst
 dst_register( struct st_translate *t,
@@ -154,8 +168,18 @@ dst_register( struct st_translate *t,
       return t->temps[index];
 
    case PROGRAM_OUTPUT:
-      if (index == t->psizoutindex)
-         t->prevInstWrotePsiz = GL_TRUE;
+      if (t->procType == TGSI_PROCESSOR_VERTEX && index == VERT_RESULT_PSIZ)
+         t->prevInstWrotePointSize = GL_TRUE;
+
+      if (t->procType == TGSI_PROCESSOR_VERTEX)
+         assert(index < VERT_RESULT_MAX);
+      else if (t->procType == TGSI_PROCESSOR_FRAGMENT)
+         assert(index < FRAG_RESULT_MAX);
+      else
+         assert(0 && "geom shaders not handled in dst_register() yet");
+
+      assert(t->outputMapping[index] < Elements(t->outputs));
+
       return t->outputs[t->outputMapping[index]];
 
    case PROGRAM_ADDRESS:
@@ -168,6 +192,9 @@ dst_register( struct st_translate *t,
 }
 
 
+/**
+ * Map a Mesa src register to a TGSI ureg_src register.
+ */
 static struct ureg_src
 src_register( struct st_translate *t,
               gl_register_file file,
@@ -244,6 +271,9 @@ translate_texture_target( GLuint textarget,
 }
 
 
+/**
+ * Create a TGSI ureg_dst register from a Mesa dest register.
+ */
 static struct ureg_dst
 translate_dst( struct st_translate *t,
                const struct prog_dst_register *DstReg,
@@ -266,6 +296,9 @@ translate_dst( struct st_translate *t,
 }
 
 
+/**
+ * Create a TGSI ureg_src register from a Mesa src register.
+ */
 static struct ureg_src
 translate_src( struct st_translate *t,
                const struct prog_src_register *SrcReg )
@@ -675,6 +708,7 @@ compile_instruction(
    }
 }
 
+
 /**
  * Emit the TGSI instructions to adjust the WPOS pixel center convention
  */
@@ -686,12 +720,14 @@ emit_adjusted_wpos( struct st_translate *t,
    struct ureg_dst wpos_temp = ureg_DECL_temporary(ureg);
    struct ureg_src wpos_input = t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]];
 
-   ureg_ADD(ureg, ureg_writemask(wpos_temp, TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y),
-                  wpos_input, ureg_imm1f(ureg, value));
+   ureg_ADD(ureg,
+            ureg_writemask(wpos_temp, TGSI_WRITEMASK_X | TGSI_WRITEMASK_Y),
+            wpos_input, ureg_imm1f(ureg, value));
 
    t->inputs[t->inputMapping[FRAG_ATTRIB_WPOS]] = ureg_src(wpos_temp);
 }
 
+
 /**
  * Emit the TGSI instructions for inverting the WPOS y coordinate.
  */
@@ -884,8 +920,8 @@ st_translate_mesa_program(
    t->inputMapping = inputMapping;
    t->outputMapping = outputMapping;
    t->ureg = ureg;
-   t->psizoutindex = -1;
-   t->prevInstWrotePsiz = GL_FALSE;
+   t->pointSizeOutIndex = -1;
+   t->prevInstWrotePointSize = GL_FALSE;
 
    /*_mesa_print_program(program);*/
 
@@ -954,6 +990,9 @@ st_translate_mesa_program(
                                            outputSemanticName[i],
                                            outputSemanticIndex[i] );
          if ((outputSemanticName[i] == TGSI_SEMANTIC_PSIZE) && program->Id) {
+            /* Writing to the point size result register requires special
+             * handling to implement clamping.
+             */
             static const gl_state_index pointSizeClampState[STATE_LENGTH]
                = { STATE_INTERNAL, STATE_POINT_SIZE_IMPL_CLAMP, 0, 0, 0 };
                /* XXX: note we are modifying the incoming shader here!  Need to
@@ -965,8 +1004,8 @@ st_translate_mesa_program(
                                          pointSizeClampState);
             struct ureg_dst psizregtemp = ureg_DECL_temporary( ureg );
             t->pointSizeConst = ureg_DECL_constant( ureg, pointSizeClampConst );
-            t->psizregreal = t->outputs[i];
-            t->psizoutindex = i;
+            t->pointSizeResult = t->outputs[i];
+            t->pointSizeOutIndex = i;
             t->outputs[i] = psizregtemp;
          }
       }
@@ -1035,19 +1074,24 @@ st_translate_mesa_program(
       set_insn_start( t, ureg_get_instruction_number( ureg ));
       compile_instruction( t, &program->Instructions[i] );
 
-      /* note can't do that easily at the end of prog due to
-         possible early return */
-      if (t->prevInstWrotePsiz && program->Id) {
+      if (t->prevInstWrotePointSize && program->Id) {
+         /* The previous instruction wrote to the (fake) vertex point size
+          * result register.  Now we need to clamp that value to the min/max
+          * point size range, putting the result into the real point size
+          * register.
+          * Note that we can't do this easily at the end of program due to
+          * possible early return.
+          */
          set_insn_start( t, ureg_get_instruction_number( ureg ));
          ureg_MAX( t->ureg,
-                   ureg_writemask(t->outputs[t->psizoutindex], WRITEMASK_X),
-                   ureg_src(t->outputs[t->psizoutindex]),
+                   ureg_writemask(t->outputs[t->pointSizeOutIndex], WRITEMASK_X),
+                   ureg_src(t->outputs[t->pointSizeOutIndex]),
                    ureg_swizzle(t->pointSizeConst, 1,1,1,1));
-         ureg_MIN( t->ureg, ureg_writemask(t->psizregreal, WRITEMASK_X),
-                   ureg_src(t->outputs[t->psizoutindex]),
+         ureg_MIN( t->ureg, ureg_writemask(t->pointSizeResult, WRITEMASK_X),
+                   ureg_src(t->outputs[t->pointSizeOutIndex]),
                    ureg_swizzle(t->pointSizeConst, 2,2,2,2));
       }
-      t->prevInstWrotePsiz = GL_FALSE;
+      t->prevInstWrotePointSize = GL_FALSE;
    }
 
    /* Fix up all emitted labels:
index 772a2ee17c9d800d4562033574053b02c0293920..3c865028a7abc4c3e5ae3362d7feab38de2b48f8 100644 (file)
@@ -65,8 +65,10 @@ st_vp_release_varients( struct st_context *st,
       if (vpv->driver_shader) 
          cso_delete_vertex_shader(st->cso_context, vpv->driver_shader);
       
+#if FEATURE_feedback || FEATURE_rastpos
       if (vpv->draw_shader)
          draw_delete_vertex_shader( st->draw, vpv->draw_shader );
+#endif
       
       if (vpv->tgsi.tokens)
          st_free_tokens(vpv->tgsi.tokens);
index d0d1c5c3156117157631a2a6d40fee2b1535edb3..dbdf1ea1ad0420037b4e48bfeede0f4fceaabef0 100644 (file)
@@ -29,7 +29,6 @@
 #include "st_format.h"
 #include "st_texture.h"
 #include "st_cb_fbo.h"
-#include "st_inlines.h"
 #include "main/enums.h"
 
 #undef Elements  /* fix re-defined macro warning */
@@ -66,6 +65,9 @@ st_texture_create(struct st_context *st,
    struct pipe_screen *screen = st->pipe->screen;
 
    assert(target <= PIPE_TEXTURE_CUBE);
+   assert(width0 > 0);
+   assert(height0 > 0);
+   assert(depth0 > 0);
 
    DBG("%s target %s format %s last_level %d\n", __FUNCTION__,
        _mesa_lookup_enum_by_nr(target),
@@ -142,7 +144,7 @@ st_texture_image_map(struct st_context *st, struct st_texture_image *stImage,
 
    DBG("%s \n", __FUNCTION__);
 
-   stImage->transfer = st_no_flush_get_tex_transfer(st, pt, stImage->face,
+   stImage->transfer = pipe_get_transfer(st->pipe, pt, stImage->face,
                                                    stImage->level, zoffset,
                                                    usage, x, y, w, h);
 
@@ -217,7 +219,7 @@ st_texture_image_data(struct st_context *st,
    DBG("%s\n", __FUNCTION__);
 
    for (i = 0; i < depth; i++) {
-      dst_transfer = st_no_flush_get_tex_transfer(st, dst, face, level, i,
+      dst_transfer = pipe_get_transfer(st->pipe, dst, face, level, i,
                                                  PIPE_TRANSFER_WRITE, 0, 0,
                                                  u_minify(dst->width0, level),
                                                   u_minify(dst->height0, level));
@@ -237,12 +239,47 @@ st_texture_image_data(struct st_context *st,
 }
 
 
-/* Copy mipmap image between textures
+/**
+ * For debug only: get/print center pixel in the src resource.
+ */
+static void
+print_center_pixel(struct pipe_context *pipe, struct pipe_resource *src)
+{
+   struct pipe_subresource rect;
+   struct pipe_transfer *xfer;
+   struct pipe_box region;
+   ubyte *map;
+
+   rect.face = 0;
+   rect.level = 0;
+
+   region.x = src->width0 / 2;
+   region.y = src->height0 / 2;
+   region.z = 0;
+   region.width = 1;
+   region.height = 1;
+   region.depth = 1;
+
+   xfer = pipe->get_transfer(pipe, src, rect, PIPE_TRANSFER_READ, &region);
+   map = pipe->transfer_map(pipe, xfer);
+
+   printf("center pixel: %d %d %d %d\n", map[0], map[1], map[2], map[3]);
+
+   pipe->transfer_unmap(pipe, xfer);
+   pipe->transfer_destroy(pipe, xfer);
+}
+
+
+/**
+ * Copy the image at level=0 in 'src' to the 'dst' resource at 'dstLevel'.
+ * This is used to copy mipmap images from one texture buffer to another.
+ * This typically happens when our initial guess at the total texture size
+ * is incorrect (see the guess_and_alloc_texture() function).
  */
 void
 st_texture_image_copy(struct pipe_context *pipe,
                       struct pipe_resource *dst, GLuint dstLevel,
-                      struct pipe_resource *src,
+                      struct pipe_resource *src, GLuint srcLevel,
                       GLuint face)
 {
    GLuint width = u_minify(dst->width0, dstLevel); 
@@ -251,43 +288,20 @@ st_texture_image_copy(struct pipe_context *pipe,
    struct pipe_subresource dstsub, srcsub;
    GLuint i;
 
-   assert(src->width0 == dst->width0);
-   assert(src->height0 == dst->height0);
+   assert(u_minify(src->width0, srcLevel) == width);
+   assert(u_minify(src->height0, srcLevel) == height);
+   assert(u_minify(src->depth0, srcLevel) == depth);
 
    dstsub.face = face;
    dstsub.level = dstLevel;
    srcsub.face = face;
-
+   srcsub.level = srcLevel;
+   /* Loop over 3D image slices */
    for (i = 0; i < depth; i++) {
-      GLuint srcLevel;
-
-      /* find src texture level of needed size */
-      for (srcLevel = 0; srcLevel <= src->last_level; srcLevel++) {
-         if (u_minify(src->width0, srcLevel) == width &&
-             u_minify(src->height0, srcLevel) == height) {
-            break;
-         }
-      }
-      assert(u_minify(src->width0, srcLevel) == width);
-      assert(u_minify(src->height0, srcLevel) == height);
-
-#if 0
-      {
-         struct pipe_screen *screen = pipe->screen;
-         src_surface = screen->get_tex_surface(screen, src, face, srcLevel, i,
-                                               PIPE_BUFFER_USAGE_CPU_READ);
-         ubyte *map = screen->surface_map(screen, src_surface, PIPE_BUFFER_USAGE_CPU_READ);
-         map += src_surface->width * src_surface->height * 4 / 2;
-         printf("%s center pixel: %d %d %d %d (pt %p[%d] -> %p[%d])\n",
-                __FUNCTION__,
-                map[0], map[1], map[2], map[3],
-                src, srcLevel, dst, dstLevel);
-
-         screen->surface_unmap(screen, src_surface);
-         pipe_surface_reference(&src_surface, NULL);
+
+      if (0)  {
+         print_center_pixel(pipe, src);
       }
-#endif
-      srcsub.level = srcLevel;
 
       pipe->resource_copy_region(pipe,
                                  dst,
@@ -300,19 +314,3 @@ st_texture_image_copy(struct pipe_context *pipe,
    }
 }
 
-
-void
-st_teximage_flush_before_map(struct st_context *st,
-                            struct pipe_resource *pt,
-                            unsigned int face,
-                            unsigned int level,
-                            enum pipe_transfer_usage usage)
-{
-   struct pipe_context *pipe = st->pipe;
-   unsigned referenced =
-      pipe->is_resource_referenced(pipe, pt, face, level);
-
-   if (referenced && ((referenced & PIPE_REFERENCED_FOR_WRITE) ||
-                     (usage & PIPE_TRANSFER_WRITE)))
-      st->pipe->flush(st->pipe, PIPE_FLUSH_RENDER_CACHE, NULL);
-}
index 447f091db1fde51a21d229fd0d41892732a91193..ed5d271597c735383be9968734b23e2a741562e4 100644 (file)
@@ -205,13 +205,7 @@ st_texture_image_data(struct st_context *st,
 extern void
 st_texture_image_copy(struct pipe_context *pipe,
                       struct pipe_resource *dst, GLuint dstLevel,
-                      struct pipe_resource *src,
+                      struct pipe_resource *src, GLuint srcLevel,
                       GLuint face);
 
-extern void
-st_teximage_flush_before_map(struct st_context *st,
-                            struct pipe_resource *pt,
-                            unsigned int face,
-                            unsigned int level,
-                            enum pipe_transfer_usage usage);
 #endif
index ebd1574c43e2298b19fe3be2ca7c8598c7b84b8b..0fcb7c77af0a2aa89c79b4cf084ab5803a0ae7fc 100644 (file)
@@ -115,7 +115,7 @@ setup_vertex_format(GLcontext *ctx)
    GLboolean intColors = !ctx->FragmentProgram._Current
                       && !ctx->ATIFragmentShader._Enabled
                       && ctx->RenderMode == GL_RENDER
-                      && CHAN_TYPE == GL_UNSIGNED_BYTE;
+                      && CHAN_TYPE != GL_FLOAT;
 
    if (intColors != swsetup->intColors ||
        !RENDERINPUTS_EQUAL(tnl->render_inputs_bitset,
index 13148fc3e22f330c289e85360b90576e9b4bf339..580850574c9f55b804b35b5011ef3f02af34d781 100644 (file)
@@ -198,10 +198,8 @@ GLboolean _vbo_CreateContext( GLcontext *ctx )
     * vtxfmt mechanism can be removed now.
     */
    vbo_exec_init( ctx );
-#if FEATURE_dlist
    if (ctx->API == API_OPENGL)
       vbo_save_init( ctx );
-#endif
 
    _math_init_eval();
 
@@ -233,10 +231,8 @@ void _vbo_DestroyContext( GLcontext *ctx )
       }
 
       vbo_exec_destroy(ctx);
-#if FEATURE_dlist
       if (ctx->API == API_OPENGL)
          vbo_save_destroy(ctx);
-#endif
       FREE(vbo);
       ctx->swtnl_im = NULL;
    }
index 8b726dc8ac5bfd0e63669c3311d264b496cdd530..00cfc522a0d3939de0b0038ddc52eab7655b46c1 100644 (file)
@@ -54,9 +54,7 @@
 #include "vbo.h"
 #include "vbo_attrib.h"
 #include "vbo_exec.h"
-#if FEATURE_dlist
 #include "vbo_save.h"
-#endif
 
 
 struct vbo_context {
index fd9a13027050d4c5ad6f156f62d53635358fd302..dd5570689e7d2fc189efebb4b49014242232755b 100644 (file)
@@ -33,6 +33,8 @@
 #include "vbo_context.h"
 
 
+#if FEATURE_dlist
+
 
 static void vbo_save_callback_init( GLcontext *ctx )
 {
@@ -117,3 +119,4 @@ void vbo_save_fallback( GLcontext *ctx, GLboolean fallback )
 }
 
 
+#endif /* FEATURE_dlist */
index 86bbd24f7b11fb31aa62115d7b36390a950a06fe..82ba6c8afe786acf725753b5348117bd7c82d8a5 100644 (file)
@@ -153,6 +153,7 @@ struct vbo_save_context {
    GLubyte *currentsz[VBO_ATTRIB_MAX];
 };
 
+#if FEATURE_dlist
 
 void vbo_save_init( GLcontext *ctx );
 void vbo_save_destroy( GLcontext *ctx );
@@ -181,4 +182,18 @@ void vbo_save_playback_vertex_list( GLcontext *ctx, void *data );
 
 void vbo_save_api_init( struct vbo_save_context *save );
 
-#endif
+#else /* FEATURE_dlist */
+
+static INLINE void
+vbo_save_init( GLcontext *ctx )
+{
+}
+
+static INLINE void
+vbo_save_destroy( GLcontext *ctx )
+{
+}
+
+#endif /* FEATURE_dlist */
+
+#endif /* VBO_SAVE_H */
index c867cb03f63d9d4b0ac3ac3b00907917c457d743..c3727cb52acac1d2bfa864ce078ee70acb6c95d3 100644 (file)
@@ -83,6 +83,9 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #include "vbo_context.h"
 
 
+#if FEATURE_dlist
+
+
 #ifdef ERROR
 #undef ERROR
 #endif
@@ -1263,3 +1266,5 @@ void vbo_save_api_init( struct vbo_save_context *save )
    _mesa_install_save_vtxfmt( ctx, &ctx->ListState.ListVtxfmt );
 }
 
+
+#endif /* FEATURE_dlist */
index a7cf29acd4f9061079777667dab8ffe54ea58a5e..148ea283312f7d4cc5df359240fb7fa8e0aadcc4 100644 (file)
@@ -38,6 +38,9 @@
 #include "vbo_context.h"
 
 
+#if FEATURE_dlist
+
+
 /*
  * After playback, copy everything but the position from the
  * last vertex to the saved state
@@ -288,3 +291,6 @@ void vbo_save_playback_vertex_list( GLcontext *ctx, void *data )
     */
    _playback_copy_to_current( ctx, node );
 }
+
+
+#endif /* FEATURE_dlist */
index 3f581ea02daaf1dab44800a8d15e0adca55f240e..5d1c7e48102258a5a62e879433bfa7bda0e5b627 100644 (file)
@@ -36,6 +36,8 @@
 #include "vbo_context.h"
 
 
+#if FEATURE_dlist
+
 
 typedef void (*attr_func)( GLcontext *ctx, GLint target, const GLfloat * );
 
@@ -188,3 +190,6 @@ void vbo_loopback_vertex_list( GLcontext *ctx,
       }
    }
 }
+
+
+#endif /* FEATURE_dlist */
index 9c3e9d2adf81f032844df77cf0faecc8f170eeff..2fd3e5f04a9d8ed4cf5b819d7a14ebff8152b3f1 100644 (file)
@@ -12,7 +12,6 @@ INCLUDE_DIRS = \
        -I.. \
        -I../main \
        -I../math \
-       -I../glapi \
        -I../tnl
 
 
diff --git a/src/mesa/x86-64/glapi_x86-64.S b/src/mesa/x86-64/glapi_x86-64.S
deleted file mode 100644 (file)
index 9693016..0000000
+++ /dev/null
@@ -1,31286 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_x86-64_asm.py (from Mesa) script */
-
-/*
- * (C) Copyright IBM Corporation 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.
- */
-
-/* If we build with gcc's -fvisibility=hidden flag, we'll need to change
- * the symbol visibility mode to 'default'.
- */
-
-#include "x86/assyntax.h"
-
-#ifdef __GNUC__
-#  pragma GCC visibility push(default)
-#  define HIDDEN(x) .hidden x
-#else
-#  define HIDDEN(x)
-#endif
-
-# if defined(USE_MGL_NAMESPACE)
-#  define GL_PREFIX(n) GLNAME(CONCAT(mgl,n))
-#  define _glapi_Dispatch _mglapi_Dispatch
-# else
-#  define GL_PREFIX(n) GLNAME(CONCAT(gl,n))
-# endif
-
-#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)
-#  define THREADS
-#endif
-
-       .text
-
-#ifdef GLX_USE_TLS
-
-       .globl _x86_64_get_get_dispatch; HIDDEN(_x86_64_get_get_dispatch)
-_x86_64_get_get_dispatch:
-       lea     _x86_64_get_dispatch(%rip), %rax
-       ret
-
-       .p2align        4,,15
-_x86_64_get_dispatch:
-       movq    _glapi_tls_Dispatch@GOTTPOFF(%rip), %rax
-       movq    %fs:(%rax), %rax
-       ret
-       .size   _x86_64_get_dispatch, .-_x86_64_get_dispatch
-
-#elif defined(PTHREADS)
-
-       .extern _glapi_Dispatch
-       .extern _gl_DispatchTSD
-       .extern pthread_getspecific
-
-       .p2align        4,,15
-_x86_64_get_dispatch:
-       movq    _gl_DispatchTSD(%rip), %rdi
-       jmp     pthread_getspecific@PLT
-
-#elif defined(THREADS)
-
-       .extern _glapi_get_dispatch
-
-#endif
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(NewList)
-       .type   GL_PREFIX(NewList), @function
-GL_PREFIX(NewList):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    0(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    (%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    0(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    0(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(NewList), .-GL_PREFIX(NewList)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EndList)
-       .type   GL_PREFIX(EndList), @function
-GL_PREFIX(EndList):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    8(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    8(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    8(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EndList), .-GL_PREFIX(EndList)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CallList)
-       .type   GL_PREFIX(CallList), @function
-GL_PREFIX(CallList):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    16(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    16(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    16(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CallList), .-GL_PREFIX(CallList)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CallLists)
-       .type   GL_PREFIX(CallLists), @function
-GL_PREFIX(CallLists):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    24(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    24(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    24(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CallLists), .-GL_PREFIX(CallLists)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteLists)
-       .type   GL_PREFIX(DeleteLists), @function
-GL_PREFIX(DeleteLists):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    32(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    32(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    32(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteLists), .-GL_PREFIX(DeleteLists)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenLists)
-       .type   GL_PREFIX(GenLists), @function
-GL_PREFIX(GenLists):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    40(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    40(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    40(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenLists), .-GL_PREFIX(GenLists)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ListBase)
-       .type   GL_PREFIX(ListBase), @function
-GL_PREFIX(ListBase):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    48(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    48(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    48(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    48(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ListBase), .-GL_PREFIX(ListBase)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Begin)
-       .type   GL_PREFIX(Begin), @function
-GL_PREFIX(Begin):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    56(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    56(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    56(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    56(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Begin), .-GL_PREFIX(Begin)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Bitmap)
-       .type   GL_PREFIX(Bitmap), @function
-GL_PREFIX(Bitmap):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    64(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       movq    %rdx, 48(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    48(%rsp), %rdx
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    64(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    64(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       movq    %rdx, 48(%rsp)
-       call    _glapi_get_dispatch
-       movq    48(%rsp), %rdx
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    64(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Bitmap), .-GL_PREFIX(Bitmap)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3b)
-       .type   GL_PREFIX(Color3b), @function
-GL_PREFIX(Color3b):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    72(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    72(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    72(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    72(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3b), .-GL_PREFIX(Color3b)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3bv)
-       .type   GL_PREFIX(Color3bv), @function
-GL_PREFIX(Color3bv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    80(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    80(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    80(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    80(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3bv), .-GL_PREFIX(Color3bv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3d)
-       .type   GL_PREFIX(Color3d), @function
-GL_PREFIX(Color3d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    88(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    88(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    88(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    88(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3d), .-GL_PREFIX(Color3d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3dv)
-       .type   GL_PREFIX(Color3dv), @function
-GL_PREFIX(Color3dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    96(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    96(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    96(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    96(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3dv), .-GL_PREFIX(Color3dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3f)
-       .type   GL_PREFIX(Color3f), @function
-GL_PREFIX(Color3f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    104(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    104(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    104(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    104(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3f), .-GL_PREFIX(Color3f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3fv)
-       .type   GL_PREFIX(Color3fv), @function
-GL_PREFIX(Color3fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    112(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    112(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    112(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    112(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3fv), .-GL_PREFIX(Color3fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3i)
-       .type   GL_PREFIX(Color3i), @function
-GL_PREFIX(Color3i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    120(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    120(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    120(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    120(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3i), .-GL_PREFIX(Color3i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3iv)
-       .type   GL_PREFIX(Color3iv), @function
-GL_PREFIX(Color3iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    128(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    128(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    128(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    128(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3iv), .-GL_PREFIX(Color3iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3s)
-       .type   GL_PREFIX(Color3s), @function
-GL_PREFIX(Color3s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    136(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    136(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    136(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    136(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3s), .-GL_PREFIX(Color3s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3sv)
-       .type   GL_PREFIX(Color3sv), @function
-GL_PREFIX(Color3sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    144(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    144(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    144(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    144(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3sv), .-GL_PREFIX(Color3sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3ub)
-       .type   GL_PREFIX(Color3ub), @function
-GL_PREFIX(Color3ub):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    152(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    152(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    152(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    152(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3ub), .-GL_PREFIX(Color3ub)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3ubv)
-       .type   GL_PREFIX(Color3ubv), @function
-GL_PREFIX(Color3ubv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    160(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    160(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    160(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    160(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3ubv), .-GL_PREFIX(Color3ubv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3ui)
-       .type   GL_PREFIX(Color3ui), @function
-GL_PREFIX(Color3ui):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    168(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    168(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    168(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    168(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3ui), .-GL_PREFIX(Color3ui)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3uiv)
-       .type   GL_PREFIX(Color3uiv), @function
-GL_PREFIX(Color3uiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    176(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    176(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    176(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    176(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3uiv), .-GL_PREFIX(Color3uiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3us)
-       .type   GL_PREFIX(Color3us), @function
-GL_PREFIX(Color3us):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    184(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    184(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    184(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    184(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3us), .-GL_PREFIX(Color3us)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color3usv)
-       .type   GL_PREFIX(Color3usv), @function
-GL_PREFIX(Color3usv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    192(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    192(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    192(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    192(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color3usv), .-GL_PREFIX(Color3usv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4b)
-       .type   GL_PREFIX(Color4b), @function
-GL_PREFIX(Color4b):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    200(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    200(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    200(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    200(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4b), .-GL_PREFIX(Color4b)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4bv)
-       .type   GL_PREFIX(Color4bv), @function
-GL_PREFIX(Color4bv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    208(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    208(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    208(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    208(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4bv), .-GL_PREFIX(Color4bv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4d)
-       .type   GL_PREFIX(Color4d), @function
-GL_PREFIX(Color4d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    216(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    216(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    216(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    216(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4d), .-GL_PREFIX(Color4d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4dv)
-       .type   GL_PREFIX(Color4dv), @function
-GL_PREFIX(Color4dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    224(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    224(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    224(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    224(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4dv), .-GL_PREFIX(Color4dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4f)
-       .type   GL_PREFIX(Color4f), @function
-GL_PREFIX(Color4f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    232(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    232(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    232(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    232(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4f), .-GL_PREFIX(Color4f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4fv)
-       .type   GL_PREFIX(Color4fv), @function
-GL_PREFIX(Color4fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    240(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    240(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    240(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    240(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4fv), .-GL_PREFIX(Color4fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4i)
-       .type   GL_PREFIX(Color4i), @function
-GL_PREFIX(Color4i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    248(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    248(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    248(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    248(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4i), .-GL_PREFIX(Color4i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4iv)
-       .type   GL_PREFIX(Color4iv), @function
-GL_PREFIX(Color4iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    256(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    256(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    256(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    256(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4iv), .-GL_PREFIX(Color4iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4s)
-       .type   GL_PREFIX(Color4s), @function
-GL_PREFIX(Color4s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    264(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    264(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    264(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    264(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4s), .-GL_PREFIX(Color4s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4sv)
-       .type   GL_PREFIX(Color4sv), @function
-GL_PREFIX(Color4sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    272(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    272(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    272(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    272(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4sv), .-GL_PREFIX(Color4sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4ub)
-       .type   GL_PREFIX(Color4ub), @function
-GL_PREFIX(Color4ub):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    280(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    280(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    280(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    280(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4ub), .-GL_PREFIX(Color4ub)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4ubv)
-       .type   GL_PREFIX(Color4ubv), @function
-GL_PREFIX(Color4ubv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    288(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    288(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    288(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    288(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4ubv), .-GL_PREFIX(Color4ubv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4ui)
-       .type   GL_PREFIX(Color4ui), @function
-GL_PREFIX(Color4ui):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    296(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    296(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    296(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    296(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4ui), .-GL_PREFIX(Color4ui)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4uiv)
-       .type   GL_PREFIX(Color4uiv), @function
-GL_PREFIX(Color4uiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    304(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    304(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    304(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    304(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4uiv), .-GL_PREFIX(Color4uiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4us)
-       .type   GL_PREFIX(Color4us), @function
-GL_PREFIX(Color4us):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    312(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    312(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    312(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    312(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4us), .-GL_PREFIX(Color4us)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Color4usv)
-       .type   GL_PREFIX(Color4usv), @function
-GL_PREFIX(Color4usv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    320(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    320(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    320(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    320(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Color4usv), .-GL_PREFIX(Color4usv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EdgeFlag)
-       .type   GL_PREFIX(EdgeFlag), @function
-GL_PREFIX(EdgeFlag):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    328(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    328(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    328(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    328(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EdgeFlag), .-GL_PREFIX(EdgeFlag)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EdgeFlagv)
-       .type   GL_PREFIX(EdgeFlagv), @function
-GL_PREFIX(EdgeFlagv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    336(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    336(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    336(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    336(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EdgeFlagv), .-GL_PREFIX(EdgeFlagv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(End)
-       .type   GL_PREFIX(End), @function
-GL_PREFIX(End):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    344(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    344(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    344(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    344(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(End), .-GL_PREFIX(End)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexd)
-       .type   GL_PREFIX(Indexd), @function
-GL_PREFIX(Indexd):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    352(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    352(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    352(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    352(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexd), .-GL_PREFIX(Indexd)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexdv)
-       .type   GL_PREFIX(Indexdv), @function
-GL_PREFIX(Indexdv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    360(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    360(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    360(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    360(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexdv), .-GL_PREFIX(Indexdv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexf)
-       .type   GL_PREFIX(Indexf), @function
-GL_PREFIX(Indexf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    368(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    368(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    368(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    368(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexf), .-GL_PREFIX(Indexf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexfv)
-       .type   GL_PREFIX(Indexfv), @function
-GL_PREFIX(Indexfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    376(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    376(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    376(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    376(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexfv), .-GL_PREFIX(Indexfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexi)
-       .type   GL_PREFIX(Indexi), @function
-GL_PREFIX(Indexi):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    384(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    384(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    384(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    384(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexi), .-GL_PREFIX(Indexi)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexiv)
-       .type   GL_PREFIX(Indexiv), @function
-GL_PREFIX(Indexiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    392(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    392(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    392(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    392(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexiv), .-GL_PREFIX(Indexiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexs)
-       .type   GL_PREFIX(Indexs), @function
-GL_PREFIX(Indexs):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    400(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    400(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    400(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    400(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexs), .-GL_PREFIX(Indexs)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexsv)
-       .type   GL_PREFIX(Indexsv), @function
-GL_PREFIX(Indexsv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    408(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    408(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    408(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    408(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexsv), .-GL_PREFIX(Indexsv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3b)
-       .type   GL_PREFIX(Normal3b), @function
-GL_PREFIX(Normal3b):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    416(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    416(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    416(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    416(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3b), .-GL_PREFIX(Normal3b)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3bv)
-       .type   GL_PREFIX(Normal3bv), @function
-GL_PREFIX(Normal3bv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    424(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    424(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    424(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    424(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3bv), .-GL_PREFIX(Normal3bv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3d)
-       .type   GL_PREFIX(Normal3d), @function
-GL_PREFIX(Normal3d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    432(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    432(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    432(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    432(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3d), .-GL_PREFIX(Normal3d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3dv)
-       .type   GL_PREFIX(Normal3dv), @function
-GL_PREFIX(Normal3dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    440(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    440(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    440(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    440(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3dv), .-GL_PREFIX(Normal3dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3f)
-       .type   GL_PREFIX(Normal3f), @function
-GL_PREFIX(Normal3f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    448(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    448(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    448(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    448(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3f), .-GL_PREFIX(Normal3f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3fv)
-       .type   GL_PREFIX(Normal3fv), @function
-GL_PREFIX(Normal3fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    456(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    456(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    456(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    456(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3fv), .-GL_PREFIX(Normal3fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3i)
-       .type   GL_PREFIX(Normal3i), @function
-GL_PREFIX(Normal3i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    464(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    464(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    464(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    464(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3i), .-GL_PREFIX(Normal3i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3iv)
-       .type   GL_PREFIX(Normal3iv), @function
-GL_PREFIX(Normal3iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    472(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    472(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    472(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    472(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3iv), .-GL_PREFIX(Normal3iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3s)
-       .type   GL_PREFIX(Normal3s), @function
-GL_PREFIX(Normal3s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    480(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    480(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    480(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    480(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3s), .-GL_PREFIX(Normal3s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Normal3sv)
-       .type   GL_PREFIX(Normal3sv), @function
-GL_PREFIX(Normal3sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    488(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    488(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    488(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    488(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Normal3sv), .-GL_PREFIX(Normal3sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2d)
-       .type   GL_PREFIX(RasterPos2d), @function
-GL_PREFIX(RasterPos2d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    496(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    496(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    496(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    496(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2d), .-GL_PREFIX(RasterPos2d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2dv)
-       .type   GL_PREFIX(RasterPos2dv), @function
-GL_PREFIX(RasterPos2dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    504(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    504(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    504(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    504(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2dv), .-GL_PREFIX(RasterPos2dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2f)
-       .type   GL_PREFIX(RasterPos2f), @function
-GL_PREFIX(RasterPos2f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    512(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    512(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    512(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    512(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2f), .-GL_PREFIX(RasterPos2f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2fv)
-       .type   GL_PREFIX(RasterPos2fv), @function
-GL_PREFIX(RasterPos2fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    520(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    520(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    520(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    520(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2fv), .-GL_PREFIX(RasterPos2fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2i)
-       .type   GL_PREFIX(RasterPos2i), @function
-GL_PREFIX(RasterPos2i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    528(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    528(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    528(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    528(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2i), .-GL_PREFIX(RasterPos2i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2iv)
-       .type   GL_PREFIX(RasterPos2iv), @function
-GL_PREFIX(RasterPos2iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    536(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    536(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    536(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    536(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2iv), .-GL_PREFIX(RasterPos2iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2s)
-       .type   GL_PREFIX(RasterPos2s), @function
-GL_PREFIX(RasterPos2s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    544(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    544(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    544(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    544(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2s), .-GL_PREFIX(RasterPos2s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos2sv)
-       .type   GL_PREFIX(RasterPos2sv), @function
-GL_PREFIX(RasterPos2sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    552(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    552(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    552(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    552(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos2sv), .-GL_PREFIX(RasterPos2sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3d)
-       .type   GL_PREFIX(RasterPos3d), @function
-GL_PREFIX(RasterPos3d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    560(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    560(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    560(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    560(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3d), .-GL_PREFIX(RasterPos3d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3dv)
-       .type   GL_PREFIX(RasterPos3dv), @function
-GL_PREFIX(RasterPos3dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    568(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    568(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    568(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    568(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3dv), .-GL_PREFIX(RasterPos3dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3f)
-       .type   GL_PREFIX(RasterPos3f), @function
-GL_PREFIX(RasterPos3f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    576(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    576(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    576(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    576(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3f), .-GL_PREFIX(RasterPos3f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3fv)
-       .type   GL_PREFIX(RasterPos3fv), @function
-GL_PREFIX(RasterPos3fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    584(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    584(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    584(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    584(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3fv), .-GL_PREFIX(RasterPos3fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3i)
-       .type   GL_PREFIX(RasterPos3i), @function
-GL_PREFIX(RasterPos3i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    592(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    592(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    592(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    592(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3i), .-GL_PREFIX(RasterPos3i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3iv)
-       .type   GL_PREFIX(RasterPos3iv), @function
-GL_PREFIX(RasterPos3iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    600(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    600(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    600(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    600(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3iv), .-GL_PREFIX(RasterPos3iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3s)
-       .type   GL_PREFIX(RasterPos3s), @function
-GL_PREFIX(RasterPos3s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    608(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    608(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    608(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    608(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3s), .-GL_PREFIX(RasterPos3s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos3sv)
-       .type   GL_PREFIX(RasterPos3sv), @function
-GL_PREFIX(RasterPos3sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    616(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    616(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    616(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    616(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos3sv), .-GL_PREFIX(RasterPos3sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4d)
-       .type   GL_PREFIX(RasterPos4d), @function
-GL_PREFIX(RasterPos4d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    624(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    624(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    624(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    624(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4d), .-GL_PREFIX(RasterPos4d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4dv)
-       .type   GL_PREFIX(RasterPos4dv), @function
-GL_PREFIX(RasterPos4dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    632(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    632(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    632(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    632(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4dv), .-GL_PREFIX(RasterPos4dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4f)
-       .type   GL_PREFIX(RasterPos4f), @function
-GL_PREFIX(RasterPos4f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    640(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    640(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    640(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    640(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4f), .-GL_PREFIX(RasterPos4f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4fv)
-       .type   GL_PREFIX(RasterPos4fv), @function
-GL_PREFIX(RasterPos4fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    648(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    648(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    648(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    648(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4fv), .-GL_PREFIX(RasterPos4fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4i)
-       .type   GL_PREFIX(RasterPos4i), @function
-GL_PREFIX(RasterPos4i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    656(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    656(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    656(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    656(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4i), .-GL_PREFIX(RasterPos4i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4iv)
-       .type   GL_PREFIX(RasterPos4iv), @function
-GL_PREFIX(RasterPos4iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    664(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    664(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    664(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    664(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4iv), .-GL_PREFIX(RasterPos4iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4s)
-       .type   GL_PREFIX(RasterPos4s), @function
-GL_PREFIX(RasterPos4s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    672(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    672(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    672(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    672(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4s), .-GL_PREFIX(RasterPos4s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RasterPos4sv)
-       .type   GL_PREFIX(RasterPos4sv), @function
-GL_PREFIX(RasterPos4sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    680(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    680(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    680(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    680(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RasterPos4sv), .-GL_PREFIX(RasterPos4sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rectd)
-       .type   GL_PREFIX(Rectd), @function
-GL_PREFIX(Rectd):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    688(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    688(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    688(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    688(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rectd), .-GL_PREFIX(Rectd)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rectdv)
-       .type   GL_PREFIX(Rectdv), @function
-GL_PREFIX(Rectdv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    696(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    696(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    696(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    696(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rectdv), .-GL_PREFIX(Rectdv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rectf)
-       .type   GL_PREFIX(Rectf), @function
-GL_PREFIX(Rectf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    704(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    704(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    704(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    704(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rectf), .-GL_PREFIX(Rectf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rectfv)
-       .type   GL_PREFIX(Rectfv), @function
-GL_PREFIX(Rectfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    712(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    712(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    712(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    712(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rectfv), .-GL_PREFIX(Rectfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Recti)
-       .type   GL_PREFIX(Recti), @function
-GL_PREFIX(Recti):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    720(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    720(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    720(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    720(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Recti), .-GL_PREFIX(Recti)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rectiv)
-       .type   GL_PREFIX(Rectiv), @function
-GL_PREFIX(Rectiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    728(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    728(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    728(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    728(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rectiv), .-GL_PREFIX(Rectiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rects)
-       .type   GL_PREFIX(Rects), @function
-GL_PREFIX(Rects):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    736(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    736(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    736(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    736(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rects), .-GL_PREFIX(Rects)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rectsv)
-       .type   GL_PREFIX(Rectsv), @function
-GL_PREFIX(Rectsv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    744(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    744(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    744(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    744(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rectsv), .-GL_PREFIX(Rectsv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1d)
-       .type   GL_PREFIX(TexCoord1d), @function
-GL_PREFIX(TexCoord1d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    752(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    752(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    752(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    752(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1d), .-GL_PREFIX(TexCoord1d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1dv)
-       .type   GL_PREFIX(TexCoord1dv), @function
-GL_PREFIX(TexCoord1dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    760(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    760(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    760(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    760(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1dv), .-GL_PREFIX(TexCoord1dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1f)
-       .type   GL_PREFIX(TexCoord1f), @function
-GL_PREFIX(TexCoord1f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    768(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    768(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    768(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    768(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1f), .-GL_PREFIX(TexCoord1f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1fv)
-       .type   GL_PREFIX(TexCoord1fv), @function
-GL_PREFIX(TexCoord1fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    776(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    776(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    776(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    776(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1fv), .-GL_PREFIX(TexCoord1fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1i)
-       .type   GL_PREFIX(TexCoord1i), @function
-GL_PREFIX(TexCoord1i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    784(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    784(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    784(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    784(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1i), .-GL_PREFIX(TexCoord1i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1iv)
-       .type   GL_PREFIX(TexCoord1iv), @function
-GL_PREFIX(TexCoord1iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    792(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    792(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    792(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    792(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1iv), .-GL_PREFIX(TexCoord1iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1s)
-       .type   GL_PREFIX(TexCoord1s), @function
-GL_PREFIX(TexCoord1s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    800(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    800(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    800(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    800(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1s), .-GL_PREFIX(TexCoord1s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord1sv)
-       .type   GL_PREFIX(TexCoord1sv), @function
-GL_PREFIX(TexCoord1sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    808(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    808(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    808(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    808(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord1sv), .-GL_PREFIX(TexCoord1sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2d)
-       .type   GL_PREFIX(TexCoord2d), @function
-GL_PREFIX(TexCoord2d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    816(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    816(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    816(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    816(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2d), .-GL_PREFIX(TexCoord2d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2dv)
-       .type   GL_PREFIX(TexCoord2dv), @function
-GL_PREFIX(TexCoord2dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    824(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    824(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    824(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    824(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2dv), .-GL_PREFIX(TexCoord2dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2f)
-       .type   GL_PREFIX(TexCoord2f), @function
-GL_PREFIX(TexCoord2f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    832(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    832(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    832(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    832(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2f), .-GL_PREFIX(TexCoord2f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2fv)
-       .type   GL_PREFIX(TexCoord2fv), @function
-GL_PREFIX(TexCoord2fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    840(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    840(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    840(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    840(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2fv), .-GL_PREFIX(TexCoord2fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2i)
-       .type   GL_PREFIX(TexCoord2i), @function
-GL_PREFIX(TexCoord2i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    848(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    848(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    848(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    848(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2i), .-GL_PREFIX(TexCoord2i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2iv)
-       .type   GL_PREFIX(TexCoord2iv), @function
-GL_PREFIX(TexCoord2iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    856(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    856(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    856(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    856(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2iv), .-GL_PREFIX(TexCoord2iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2s)
-       .type   GL_PREFIX(TexCoord2s), @function
-GL_PREFIX(TexCoord2s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    864(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    864(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    864(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    864(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2s), .-GL_PREFIX(TexCoord2s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord2sv)
-       .type   GL_PREFIX(TexCoord2sv), @function
-GL_PREFIX(TexCoord2sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    872(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    872(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    872(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    872(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord2sv), .-GL_PREFIX(TexCoord2sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3d)
-       .type   GL_PREFIX(TexCoord3d), @function
-GL_PREFIX(TexCoord3d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    880(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    880(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    880(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    880(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3d), .-GL_PREFIX(TexCoord3d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3dv)
-       .type   GL_PREFIX(TexCoord3dv), @function
-GL_PREFIX(TexCoord3dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    888(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    888(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    888(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    888(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3dv), .-GL_PREFIX(TexCoord3dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3f)
-       .type   GL_PREFIX(TexCoord3f), @function
-GL_PREFIX(TexCoord3f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    896(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    896(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    896(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    896(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3f), .-GL_PREFIX(TexCoord3f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3fv)
-       .type   GL_PREFIX(TexCoord3fv), @function
-GL_PREFIX(TexCoord3fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    904(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    904(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    904(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    904(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3fv), .-GL_PREFIX(TexCoord3fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3i)
-       .type   GL_PREFIX(TexCoord3i), @function
-GL_PREFIX(TexCoord3i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    912(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    912(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    912(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    912(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3i), .-GL_PREFIX(TexCoord3i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3iv)
-       .type   GL_PREFIX(TexCoord3iv), @function
-GL_PREFIX(TexCoord3iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    920(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    920(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    920(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    920(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3iv), .-GL_PREFIX(TexCoord3iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3s)
-       .type   GL_PREFIX(TexCoord3s), @function
-GL_PREFIX(TexCoord3s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    928(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    928(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    928(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    928(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3s), .-GL_PREFIX(TexCoord3s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord3sv)
-       .type   GL_PREFIX(TexCoord3sv), @function
-GL_PREFIX(TexCoord3sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    936(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    936(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    936(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    936(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord3sv), .-GL_PREFIX(TexCoord3sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4d)
-       .type   GL_PREFIX(TexCoord4d), @function
-GL_PREFIX(TexCoord4d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    944(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    944(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    944(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    944(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4d), .-GL_PREFIX(TexCoord4d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4dv)
-       .type   GL_PREFIX(TexCoord4dv), @function
-GL_PREFIX(TexCoord4dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    952(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    952(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    952(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    952(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4dv), .-GL_PREFIX(TexCoord4dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4f)
-       .type   GL_PREFIX(TexCoord4f), @function
-GL_PREFIX(TexCoord4f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    960(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    960(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    960(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    960(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4f), .-GL_PREFIX(TexCoord4f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4fv)
-       .type   GL_PREFIX(TexCoord4fv), @function
-GL_PREFIX(TexCoord4fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    968(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    968(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    968(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    968(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4fv), .-GL_PREFIX(TexCoord4fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4i)
-       .type   GL_PREFIX(TexCoord4i), @function
-GL_PREFIX(TexCoord4i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    976(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    976(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    976(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    976(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4i), .-GL_PREFIX(TexCoord4i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4iv)
-       .type   GL_PREFIX(TexCoord4iv), @function
-GL_PREFIX(TexCoord4iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    984(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    984(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    984(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    984(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4iv), .-GL_PREFIX(TexCoord4iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4s)
-       .type   GL_PREFIX(TexCoord4s), @function
-GL_PREFIX(TexCoord4s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    992(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    992(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    992(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    992(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4s), .-GL_PREFIX(TexCoord4s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoord4sv)
-       .type   GL_PREFIX(TexCoord4sv), @function
-GL_PREFIX(TexCoord4sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1000(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1000(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1000(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1000(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoord4sv), .-GL_PREFIX(TexCoord4sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2d)
-       .type   GL_PREFIX(Vertex2d), @function
-GL_PREFIX(Vertex2d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1008(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1008(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1008(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1008(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2d), .-GL_PREFIX(Vertex2d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2dv)
-       .type   GL_PREFIX(Vertex2dv), @function
-GL_PREFIX(Vertex2dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1016(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1016(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1016(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1016(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2dv), .-GL_PREFIX(Vertex2dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2f)
-       .type   GL_PREFIX(Vertex2f), @function
-GL_PREFIX(Vertex2f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1024(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1024(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1024(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1024(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2f), .-GL_PREFIX(Vertex2f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2fv)
-       .type   GL_PREFIX(Vertex2fv), @function
-GL_PREFIX(Vertex2fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1032(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1032(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1032(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1032(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2fv), .-GL_PREFIX(Vertex2fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2i)
-       .type   GL_PREFIX(Vertex2i), @function
-GL_PREFIX(Vertex2i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1040(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1040(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1040(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1040(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2i), .-GL_PREFIX(Vertex2i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2iv)
-       .type   GL_PREFIX(Vertex2iv), @function
-GL_PREFIX(Vertex2iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1048(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1048(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1048(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1048(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2iv), .-GL_PREFIX(Vertex2iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2s)
-       .type   GL_PREFIX(Vertex2s), @function
-GL_PREFIX(Vertex2s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1056(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1056(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1056(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1056(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2s), .-GL_PREFIX(Vertex2s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex2sv)
-       .type   GL_PREFIX(Vertex2sv), @function
-GL_PREFIX(Vertex2sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1064(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1064(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1064(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1064(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex2sv), .-GL_PREFIX(Vertex2sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3d)
-       .type   GL_PREFIX(Vertex3d), @function
-GL_PREFIX(Vertex3d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1072(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1072(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1072(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1072(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3d), .-GL_PREFIX(Vertex3d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3dv)
-       .type   GL_PREFIX(Vertex3dv), @function
-GL_PREFIX(Vertex3dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1080(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1080(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1080(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1080(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3dv), .-GL_PREFIX(Vertex3dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3f)
-       .type   GL_PREFIX(Vertex3f), @function
-GL_PREFIX(Vertex3f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1088(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1088(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1088(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1088(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3f), .-GL_PREFIX(Vertex3f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3fv)
-       .type   GL_PREFIX(Vertex3fv), @function
-GL_PREFIX(Vertex3fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1096(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1096(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1096(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1096(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3fv), .-GL_PREFIX(Vertex3fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3i)
-       .type   GL_PREFIX(Vertex3i), @function
-GL_PREFIX(Vertex3i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1104(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1104(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1104(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1104(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3i), .-GL_PREFIX(Vertex3i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3iv)
-       .type   GL_PREFIX(Vertex3iv), @function
-GL_PREFIX(Vertex3iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1112(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1112(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1112(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1112(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3iv), .-GL_PREFIX(Vertex3iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3s)
-       .type   GL_PREFIX(Vertex3s), @function
-GL_PREFIX(Vertex3s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1120(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1120(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1120(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1120(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3s), .-GL_PREFIX(Vertex3s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex3sv)
-       .type   GL_PREFIX(Vertex3sv), @function
-GL_PREFIX(Vertex3sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1128(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1128(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1128(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1128(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex3sv), .-GL_PREFIX(Vertex3sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4d)
-       .type   GL_PREFIX(Vertex4d), @function
-GL_PREFIX(Vertex4d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1136(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    1136(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1136(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    1136(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4d), .-GL_PREFIX(Vertex4d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4dv)
-       .type   GL_PREFIX(Vertex4dv), @function
-GL_PREFIX(Vertex4dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1144(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1144(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1144(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1144(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4dv), .-GL_PREFIX(Vertex4dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4f)
-       .type   GL_PREFIX(Vertex4f), @function
-GL_PREFIX(Vertex4f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1152(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    1152(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1152(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    1152(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4f), .-GL_PREFIX(Vertex4f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4fv)
-       .type   GL_PREFIX(Vertex4fv), @function
-GL_PREFIX(Vertex4fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1160(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1160(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1160(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1160(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4fv), .-GL_PREFIX(Vertex4fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4i)
-       .type   GL_PREFIX(Vertex4i), @function
-GL_PREFIX(Vertex4i):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1168(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1168(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1168(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1168(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4i), .-GL_PREFIX(Vertex4i)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4iv)
-       .type   GL_PREFIX(Vertex4iv), @function
-GL_PREFIX(Vertex4iv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1176(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1176(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1176(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1176(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4iv), .-GL_PREFIX(Vertex4iv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4s)
-       .type   GL_PREFIX(Vertex4s), @function
-GL_PREFIX(Vertex4s):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1184(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1184(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1184(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1184(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4s), .-GL_PREFIX(Vertex4s)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Vertex4sv)
-       .type   GL_PREFIX(Vertex4sv), @function
-GL_PREFIX(Vertex4sv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1192(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1192(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1192(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1192(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Vertex4sv), .-GL_PREFIX(Vertex4sv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClipPlane)
-       .type   GL_PREFIX(ClipPlane), @function
-GL_PREFIX(ClipPlane):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1200(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1200(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1200(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1200(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClipPlane), .-GL_PREFIX(ClipPlane)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorMaterial)
-       .type   GL_PREFIX(ColorMaterial), @function
-GL_PREFIX(ColorMaterial):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1208(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1208(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1208(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1208(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorMaterial), .-GL_PREFIX(ColorMaterial)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CullFace)
-       .type   GL_PREFIX(CullFace), @function
-GL_PREFIX(CullFace):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1216(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1216(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1216(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1216(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CullFace), .-GL_PREFIX(CullFace)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Fogf)
-       .type   GL_PREFIX(Fogf), @function
-GL_PREFIX(Fogf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1224(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1224(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1224(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1224(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Fogf), .-GL_PREFIX(Fogf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Fogfv)
-       .type   GL_PREFIX(Fogfv), @function
-GL_PREFIX(Fogfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1232(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1232(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1232(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1232(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Fogfv), .-GL_PREFIX(Fogfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Fogi)
-       .type   GL_PREFIX(Fogi), @function
-GL_PREFIX(Fogi):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1240(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1240(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1240(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1240(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Fogi), .-GL_PREFIX(Fogi)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Fogiv)
-       .type   GL_PREFIX(Fogiv), @function
-GL_PREFIX(Fogiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1248(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1248(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1248(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1248(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Fogiv), .-GL_PREFIX(Fogiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FrontFace)
-       .type   GL_PREFIX(FrontFace), @function
-GL_PREFIX(FrontFace):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1256(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1256(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1256(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1256(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FrontFace), .-GL_PREFIX(FrontFace)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Hint)
-       .type   GL_PREFIX(Hint), @function
-GL_PREFIX(Hint):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1264(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1264(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1264(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1264(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Hint), .-GL_PREFIX(Hint)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Lightf)
-       .type   GL_PREFIX(Lightf), @function
-GL_PREFIX(Lightf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1272(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1272(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1272(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1272(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Lightf), .-GL_PREFIX(Lightf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Lightfv)
-       .type   GL_PREFIX(Lightfv), @function
-GL_PREFIX(Lightfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1280(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1280(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1280(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1280(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Lightfv), .-GL_PREFIX(Lightfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Lighti)
-       .type   GL_PREFIX(Lighti), @function
-GL_PREFIX(Lighti):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1288(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1288(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1288(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1288(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Lighti), .-GL_PREFIX(Lighti)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Lightiv)
-       .type   GL_PREFIX(Lightiv), @function
-GL_PREFIX(Lightiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1296(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1296(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1296(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1296(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Lightiv), .-GL_PREFIX(Lightiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LightModelf)
-       .type   GL_PREFIX(LightModelf), @function
-GL_PREFIX(LightModelf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1304(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1304(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1304(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1304(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LightModelf), .-GL_PREFIX(LightModelf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LightModelfv)
-       .type   GL_PREFIX(LightModelfv), @function
-GL_PREFIX(LightModelfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1312(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1312(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1312(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1312(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LightModelfv), .-GL_PREFIX(LightModelfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LightModeli)
-       .type   GL_PREFIX(LightModeli), @function
-GL_PREFIX(LightModeli):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1320(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1320(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1320(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1320(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LightModeli), .-GL_PREFIX(LightModeli)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LightModeliv)
-       .type   GL_PREFIX(LightModeliv), @function
-GL_PREFIX(LightModeliv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1328(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1328(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1328(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1328(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LightModeliv), .-GL_PREFIX(LightModeliv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LineStipple)
-       .type   GL_PREFIX(LineStipple), @function
-GL_PREFIX(LineStipple):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1336(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1336(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1336(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1336(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LineStipple), .-GL_PREFIX(LineStipple)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LineWidth)
-       .type   GL_PREFIX(LineWidth), @function
-GL_PREFIX(LineWidth):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1344(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1344(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1344(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1344(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LineWidth), .-GL_PREFIX(LineWidth)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Materialf)
-       .type   GL_PREFIX(Materialf), @function
-GL_PREFIX(Materialf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1352(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1352(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1352(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1352(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Materialf), .-GL_PREFIX(Materialf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Materialfv)
-       .type   GL_PREFIX(Materialfv), @function
-GL_PREFIX(Materialfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1360(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1360(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1360(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1360(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Materialfv), .-GL_PREFIX(Materialfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Materiali)
-       .type   GL_PREFIX(Materiali), @function
-GL_PREFIX(Materiali):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1368(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1368(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1368(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1368(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Materiali), .-GL_PREFIX(Materiali)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Materialiv)
-       .type   GL_PREFIX(Materialiv), @function
-GL_PREFIX(Materialiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1376(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1376(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1376(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1376(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Materialiv), .-GL_PREFIX(Materialiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PointSize)
-       .type   GL_PREFIX(PointSize), @function
-GL_PREFIX(PointSize):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1384(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1384(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1384(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1384(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PointSize), .-GL_PREFIX(PointSize)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PolygonMode)
-       .type   GL_PREFIX(PolygonMode), @function
-GL_PREFIX(PolygonMode):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1392(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1392(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1392(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1392(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PolygonMode), .-GL_PREFIX(PolygonMode)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PolygonStipple)
-       .type   GL_PREFIX(PolygonStipple), @function
-GL_PREFIX(PolygonStipple):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1400(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1400(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1400(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1400(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PolygonStipple), .-GL_PREFIX(PolygonStipple)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Scissor)
-       .type   GL_PREFIX(Scissor), @function
-GL_PREFIX(Scissor):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1408(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1408(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1408(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1408(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Scissor), .-GL_PREFIX(Scissor)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ShadeModel)
-       .type   GL_PREFIX(ShadeModel), @function
-GL_PREFIX(ShadeModel):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1416(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1416(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1416(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1416(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ShadeModel), .-GL_PREFIX(ShadeModel)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexParameterf)
-       .type   GL_PREFIX(TexParameterf), @function
-GL_PREFIX(TexParameterf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1424(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1424(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1424(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1424(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexParameterf), .-GL_PREFIX(TexParameterf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexParameterfv)
-       .type   GL_PREFIX(TexParameterfv), @function
-GL_PREFIX(TexParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1432(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1432(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1432(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1432(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexParameterfv), .-GL_PREFIX(TexParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexParameteri)
-       .type   GL_PREFIX(TexParameteri), @function
-GL_PREFIX(TexParameteri):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1440(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1440(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1440(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1440(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexParameteri), .-GL_PREFIX(TexParameteri)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexParameteriv)
-       .type   GL_PREFIX(TexParameteriv), @function
-GL_PREFIX(TexParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1448(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1448(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1448(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1448(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexParameteriv), .-GL_PREFIX(TexParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexImage1D)
-       .type   GL_PREFIX(TexImage1D), @function
-GL_PREFIX(TexImage1D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1456(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1456(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1456(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1456(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexImage1D), .-GL_PREFIX(TexImage1D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexImage2D)
-       .type   GL_PREFIX(TexImage2D), @function
-GL_PREFIX(TexImage2D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1464(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1464(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1464(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1464(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexImage2D), .-GL_PREFIX(TexImage2D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexEnvf)
-       .type   GL_PREFIX(TexEnvf), @function
-GL_PREFIX(TexEnvf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1472(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1472(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1472(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1472(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexEnvf), .-GL_PREFIX(TexEnvf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexEnvfv)
-       .type   GL_PREFIX(TexEnvfv), @function
-GL_PREFIX(TexEnvfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1480(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1480(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1480(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1480(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexEnvfv), .-GL_PREFIX(TexEnvfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexEnvi)
-       .type   GL_PREFIX(TexEnvi), @function
-GL_PREFIX(TexEnvi):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1488(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1488(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1488(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1488(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexEnvi), .-GL_PREFIX(TexEnvi)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexEnviv)
-       .type   GL_PREFIX(TexEnviv), @function
-GL_PREFIX(TexEnviv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1496(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1496(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1496(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1496(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexEnviv), .-GL_PREFIX(TexEnviv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexGend)
-       .type   GL_PREFIX(TexGend), @function
-GL_PREFIX(TexGend):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1504(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1504(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1504(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1504(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexGend), .-GL_PREFIX(TexGend)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexGendv)
-       .type   GL_PREFIX(TexGendv), @function
-GL_PREFIX(TexGendv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1512(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1512(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1512(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1512(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexGendv), .-GL_PREFIX(TexGendv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexGenf)
-       .type   GL_PREFIX(TexGenf), @function
-GL_PREFIX(TexGenf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1520(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1520(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1520(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1520(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexGenf), .-GL_PREFIX(TexGenf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexGenfv)
-       .type   GL_PREFIX(TexGenfv), @function
-GL_PREFIX(TexGenfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1528(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1528(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1528(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1528(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexGenfv), .-GL_PREFIX(TexGenfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexGeni)
-       .type   GL_PREFIX(TexGeni), @function
-GL_PREFIX(TexGeni):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1536(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1536(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1536(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1536(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexGeni), .-GL_PREFIX(TexGeni)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexGeniv)
-       .type   GL_PREFIX(TexGeniv), @function
-GL_PREFIX(TexGeniv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1544(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1544(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1544(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1544(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexGeniv), .-GL_PREFIX(TexGeniv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FeedbackBuffer)
-       .type   GL_PREFIX(FeedbackBuffer), @function
-GL_PREFIX(FeedbackBuffer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1552(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1552(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1552(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1552(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FeedbackBuffer), .-GL_PREFIX(FeedbackBuffer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SelectBuffer)
-       .type   GL_PREFIX(SelectBuffer), @function
-GL_PREFIX(SelectBuffer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1560(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1560(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1560(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1560(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SelectBuffer), .-GL_PREFIX(SelectBuffer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RenderMode)
-       .type   GL_PREFIX(RenderMode), @function
-GL_PREFIX(RenderMode):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1568(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1568(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1568(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1568(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RenderMode), .-GL_PREFIX(RenderMode)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(InitNames)
-       .type   GL_PREFIX(InitNames), @function
-GL_PREFIX(InitNames):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1576(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    1576(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1576(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    1576(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(InitNames), .-GL_PREFIX(InitNames)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LoadName)
-       .type   GL_PREFIX(LoadName), @function
-GL_PREFIX(LoadName):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1584(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1584(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1584(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1584(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LoadName), .-GL_PREFIX(LoadName)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PassThrough)
-       .type   GL_PREFIX(PassThrough), @function
-GL_PREFIX(PassThrough):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1592(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1592(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1592(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1592(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PassThrough), .-GL_PREFIX(PassThrough)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PopName)
-       .type   GL_PREFIX(PopName), @function
-GL_PREFIX(PopName):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1600(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    1600(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1600(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    1600(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PopName), .-GL_PREFIX(PopName)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PushName)
-       .type   GL_PREFIX(PushName), @function
-GL_PREFIX(PushName):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1608(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1608(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1608(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1608(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PushName), .-GL_PREFIX(PushName)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawBuffer)
-       .type   GL_PREFIX(DrawBuffer), @function
-GL_PREFIX(DrawBuffer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1616(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1616(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1616(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1616(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawBuffer), .-GL_PREFIX(DrawBuffer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Clear)
-       .type   GL_PREFIX(Clear), @function
-GL_PREFIX(Clear):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1624(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1624(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1624(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1624(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Clear), .-GL_PREFIX(Clear)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClearAccum)
-       .type   GL_PREFIX(ClearAccum), @function
-GL_PREFIX(ClearAccum):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1632(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    1632(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1632(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    1632(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClearAccum), .-GL_PREFIX(ClearAccum)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClearIndex)
-       .type   GL_PREFIX(ClearIndex), @function
-GL_PREFIX(ClearIndex):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1640(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1640(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1640(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1640(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClearIndex), .-GL_PREFIX(ClearIndex)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClearColor)
-       .type   GL_PREFIX(ClearColor), @function
-GL_PREFIX(ClearColor):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1648(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1648(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1648(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1648(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClearColor), .-GL_PREFIX(ClearColor)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClearStencil)
-       .type   GL_PREFIX(ClearStencil), @function
-GL_PREFIX(ClearStencil):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1656(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1656(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1656(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1656(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClearStencil), .-GL_PREFIX(ClearStencil)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClearDepth)
-       .type   GL_PREFIX(ClearDepth), @function
-GL_PREFIX(ClearDepth):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1664(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1664(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1664(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1664(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClearDepth), .-GL_PREFIX(ClearDepth)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(StencilMask)
-       .type   GL_PREFIX(StencilMask), @function
-GL_PREFIX(StencilMask):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1672(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1672(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1672(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1672(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(StencilMask), .-GL_PREFIX(StencilMask)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorMask)
-       .type   GL_PREFIX(ColorMask), @function
-GL_PREFIX(ColorMask):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1680(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1680(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1680(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1680(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorMask), .-GL_PREFIX(ColorMask)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DepthMask)
-       .type   GL_PREFIX(DepthMask), @function
-GL_PREFIX(DepthMask):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1688(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1688(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1688(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1688(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DepthMask), .-GL_PREFIX(DepthMask)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IndexMask)
-       .type   GL_PREFIX(IndexMask), @function
-GL_PREFIX(IndexMask):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1696(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1696(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1696(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1696(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IndexMask), .-GL_PREFIX(IndexMask)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Accum)
-       .type   GL_PREFIX(Accum), @function
-GL_PREFIX(Accum):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1704(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1704(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1704(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1704(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Accum), .-GL_PREFIX(Accum)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Disable)
-       .type   GL_PREFIX(Disable), @function
-GL_PREFIX(Disable):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1712(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1712(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1712(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1712(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Disable), .-GL_PREFIX(Disable)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Enable)
-       .type   GL_PREFIX(Enable), @function
-GL_PREFIX(Enable):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1720(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1720(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1720(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1720(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Enable), .-GL_PREFIX(Enable)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Finish)
-       .type   GL_PREFIX(Finish), @function
-GL_PREFIX(Finish):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1728(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    1728(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1728(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    1728(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Finish), .-GL_PREFIX(Finish)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Flush)
-       .type   GL_PREFIX(Flush), @function
-GL_PREFIX(Flush):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1736(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    1736(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1736(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    1736(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Flush), .-GL_PREFIX(Flush)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PopAttrib)
-       .type   GL_PREFIX(PopAttrib), @function
-GL_PREFIX(PopAttrib):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1744(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    1744(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1744(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    1744(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PopAttrib), .-GL_PREFIX(PopAttrib)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PushAttrib)
-       .type   GL_PREFIX(PushAttrib), @function
-GL_PREFIX(PushAttrib):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1752(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1752(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1752(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1752(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PushAttrib), .-GL_PREFIX(PushAttrib)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Map1d)
-       .type   GL_PREFIX(Map1d), @function
-GL_PREFIX(Map1d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1760(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %rcx, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %rcx
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1760(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1760(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %rcx, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %rcx
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1760(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Map1d), .-GL_PREFIX(Map1d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Map1f)
-       .type   GL_PREFIX(Map1f), @function
-GL_PREFIX(Map1f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1768(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %rcx, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %rcx
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1768(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1768(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %rcx, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %rcx
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1768(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Map1f), .-GL_PREFIX(Map1f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Map2d)
-       .type   GL_PREFIX(Map2d), @function
-GL_PREFIX(Map2d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1776(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $88, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       movq    %rcx, 56(%rsp)
-       movq    %r8, 64(%rsp)
-       movq    %r9, 72(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    72(%rsp), %r9
-       movq    64(%rsp), %r8
-       movq    56(%rsp), %rcx
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $88, %rsp
-       movq    1776(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1776(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $88, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       movq    %rcx, 56(%rsp)
-       movq    %r8, 64(%rsp)
-       movq    %r9, 72(%rsp)
-       call    _glapi_get_dispatch
-       movq    72(%rsp), %r9
-       movq    64(%rsp), %r8
-       movq    56(%rsp), %rcx
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $88, %rsp
-       movq    1776(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Map2d), .-GL_PREFIX(Map2d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Map2f)
-       .type   GL_PREFIX(Map2f), @function
-GL_PREFIX(Map2f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1784(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $88, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       movq    %rcx, 56(%rsp)
-       movq    %r8, 64(%rsp)
-       movq    %r9, 72(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    72(%rsp), %r9
-       movq    64(%rsp), %r8
-       movq    56(%rsp), %rcx
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $88, %rsp
-       movq    1784(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1784(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $88, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %rdx, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       movq    %rcx, 56(%rsp)
-       movq    %r8, 64(%rsp)
-       movq    %r9, 72(%rsp)
-       call    _glapi_get_dispatch
-       movq    72(%rsp), %r9
-       movq    64(%rsp), %r8
-       movq    56(%rsp), %rcx
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %rdx
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $88, %rsp
-       movq    1784(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Map2f), .-GL_PREFIX(Map2f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MapGrid1d)
-       .type   GL_PREFIX(MapGrid1d), @function
-GL_PREFIX(MapGrid1d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1792(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1792(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1792(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1792(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MapGrid1d), .-GL_PREFIX(MapGrid1d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MapGrid1f)
-       .type   GL_PREFIX(MapGrid1f), @function
-GL_PREFIX(MapGrid1f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1800(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1800(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1800(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1800(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MapGrid1f), .-GL_PREFIX(MapGrid1f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MapGrid2d)
-       .type   GL_PREFIX(MapGrid2d), @function
-GL_PREFIX(MapGrid2d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1808(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1808(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1808(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1808(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MapGrid2d), .-GL_PREFIX(MapGrid2d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MapGrid2f)
-       .type   GL_PREFIX(MapGrid2f), @function
-GL_PREFIX(MapGrid2f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1816(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1816(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1816(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %rsi, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %rsi
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    1816(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MapGrid2f), .-GL_PREFIX(MapGrid2f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord1d)
-       .type   GL_PREFIX(EvalCoord1d), @function
-GL_PREFIX(EvalCoord1d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1824(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1824(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1824(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1824(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord1d), .-GL_PREFIX(EvalCoord1d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord1dv)
-       .type   GL_PREFIX(EvalCoord1dv), @function
-GL_PREFIX(EvalCoord1dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1832(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1832(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1832(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1832(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord1dv), .-GL_PREFIX(EvalCoord1dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord1f)
-       .type   GL_PREFIX(EvalCoord1f), @function
-GL_PREFIX(EvalCoord1f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1840(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1840(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1840(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    1840(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord1f), .-GL_PREFIX(EvalCoord1f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord1fv)
-       .type   GL_PREFIX(EvalCoord1fv), @function
-GL_PREFIX(EvalCoord1fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1848(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1848(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1848(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1848(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord1fv), .-GL_PREFIX(EvalCoord1fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord2d)
-       .type   GL_PREFIX(EvalCoord2d), @function
-GL_PREFIX(EvalCoord2d):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1856(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1856(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1856(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1856(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord2d), .-GL_PREFIX(EvalCoord2d)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord2dv)
-       .type   GL_PREFIX(EvalCoord2dv), @function
-GL_PREFIX(EvalCoord2dv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1864(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1864(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1864(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1864(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord2dv), .-GL_PREFIX(EvalCoord2dv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord2f)
-       .type   GL_PREFIX(EvalCoord2f), @function
-GL_PREFIX(EvalCoord2f):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1872(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1872(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1872(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1872(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord2f), .-GL_PREFIX(EvalCoord2f)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalCoord2fv)
-       .type   GL_PREFIX(EvalCoord2fv), @function
-GL_PREFIX(EvalCoord2fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1880(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1880(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1880(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1880(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalCoord2fv), .-GL_PREFIX(EvalCoord2fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalMesh1)
-       .type   GL_PREFIX(EvalMesh1), @function
-GL_PREFIX(EvalMesh1):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1888(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1888(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1888(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1888(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalMesh1), .-GL_PREFIX(EvalMesh1)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalPoint1)
-       .type   GL_PREFIX(EvalPoint1), @function
-GL_PREFIX(EvalPoint1):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1896(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1896(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1896(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1896(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalPoint1), .-GL_PREFIX(EvalPoint1)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalMesh2)
-       .type   GL_PREFIX(EvalMesh2), @function
-GL_PREFIX(EvalMesh2):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1904(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1904(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1904(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1904(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalMesh2), .-GL_PREFIX(EvalMesh2)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EvalPoint2)
-       .type   GL_PREFIX(EvalPoint2), @function
-GL_PREFIX(EvalPoint2):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1912(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1912(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1912(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1912(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EvalPoint2), .-GL_PREFIX(EvalPoint2)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AlphaFunc)
-       .type   GL_PREFIX(AlphaFunc), @function
-GL_PREFIX(AlphaFunc):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1920(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1920(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1920(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1920(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AlphaFunc), .-GL_PREFIX(AlphaFunc)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BlendFunc)
-       .type   GL_PREFIX(BlendFunc), @function
-GL_PREFIX(BlendFunc):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1928(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1928(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1928(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1928(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BlendFunc), .-GL_PREFIX(BlendFunc)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LogicOp)
-       .type   GL_PREFIX(LogicOp), @function
-GL_PREFIX(LogicOp):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1936(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1936(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1936(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1936(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LogicOp), .-GL_PREFIX(LogicOp)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(StencilFunc)
-       .type   GL_PREFIX(StencilFunc), @function
-GL_PREFIX(StencilFunc):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1944(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1944(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1944(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1944(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(StencilFunc), .-GL_PREFIX(StencilFunc)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(StencilOp)
-       .type   GL_PREFIX(StencilOp), @function
-GL_PREFIX(StencilOp):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1952(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1952(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1952(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    1952(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(StencilOp), .-GL_PREFIX(StencilOp)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DepthFunc)
-       .type   GL_PREFIX(DepthFunc), @function
-GL_PREFIX(DepthFunc):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1960(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    1960(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1960(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    1960(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DepthFunc), .-GL_PREFIX(DepthFunc)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelZoom)
-       .type   GL_PREFIX(PixelZoom), @function
-GL_PREFIX(PixelZoom):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1968(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1968(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1968(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    1968(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelZoom), .-GL_PREFIX(PixelZoom)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelTransferf)
-       .type   GL_PREFIX(PixelTransferf), @function
-GL_PREFIX(PixelTransferf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1976(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1976(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1976(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1976(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelTransferf), .-GL_PREFIX(PixelTransferf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelTransferi)
-       .type   GL_PREFIX(PixelTransferi), @function
-GL_PREFIX(PixelTransferi):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1984(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1984(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1984(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    1984(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelTransferi), .-GL_PREFIX(PixelTransferi)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelStoref)
-       .type   GL_PREFIX(PixelStoref), @function
-GL_PREFIX(PixelStoref):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    1992(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1992(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    1992(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    1992(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelStoref), .-GL_PREFIX(PixelStoref)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelStorei)
-       .type   GL_PREFIX(PixelStorei), @function
-GL_PREFIX(PixelStorei):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2000(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2000(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2000(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2000(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelStorei), .-GL_PREFIX(PixelStorei)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelMapfv)
-       .type   GL_PREFIX(PixelMapfv), @function
-GL_PREFIX(PixelMapfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2008(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2008(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2008(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2008(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelMapfv), .-GL_PREFIX(PixelMapfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelMapuiv)
-       .type   GL_PREFIX(PixelMapuiv), @function
-GL_PREFIX(PixelMapuiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2016(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2016(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2016(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2016(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelMapuiv), .-GL_PREFIX(PixelMapuiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PixelMapusv)
-       .type   GL_PREFIX(PixelMapusv), @function
-GL_PREFIX(PixelMapusv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2024(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2024(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2024(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2024(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PixelMapusv), .-GL_PREFIX(PixelMapusv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ReadBuffer)
-       .type   GL_PREFIX(ReadBuffer), @function
-GL_PREFIX(ReadBuffer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2032(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2032(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2032(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2032(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ReadBuffer), .-GL_PREFIX(ReadBuffer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyPixels)
-       .type   GL_PREFIX(CopyPixels), @function
-GL_PREFIX(CopyPixels):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2040(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2040(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2040(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2040(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyPixels), .-GL_PREFIX(CopyPixels)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ReadPixels)
-       .type   GL_PREFIX(ReadPixels), @function
-GL_PREFIX(ReadPixels):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2048(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2048(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2048(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2048(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ReadPixels), .-GL_PREFIX(ReadPixels)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawPixels)
-       .type   GL_PREFIX(DrawPixels), @function
-GL_PREFIX(DrawPixels):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2056(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2056(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2056(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2056(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawPixels), .-GL_PREFIX(DrawPixels)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetBooleanv)
-       .type   GL_PREFIX(GetBooleanv), @function
-GL_PREFIX(GetBooleanv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2064(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2064(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2064(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2064(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetBooleanv), .-GL_PREFIX(GetBooleanv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetClipPlane)
-       .type   GL_PREFIX(GetClipPlane), @function
-GL_PREFIX(GetClipPlane):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2072(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2072(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2072(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2072(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetClipPlane), .-GL_PREFIX(GetClipPlane)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetDoublev)
-       .type   GL_PREFIX(GetDoublev), @function
-GL_PREFIX(GetDoublev):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2080(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2080(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2080(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2080(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetDoublev), .-GL_PREFIX(GetDoublev)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetError)
-       .type   GL_PREFIX(GetError), @function
-GL_PREFIX(GetError):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2088(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    2088(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2088(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    2088(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetError), .-GL_PREFIX(GetError)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetFloatv)
-       .type   GL_PREFIX(GetFloatv), @function
-GL_PREFIX(GetFloatv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2096(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2096(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2096(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2096(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetFloatv), .-GL_PREFIX(GetFloatv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetIntegerv)
-       .type   GL_PREFIX(GetIntegerv), @function
-GL_PREFIX(GetIntegerv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2104(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2104(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2104(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2104(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetIntegerv), .-GL_PREFIX(GetIntegerv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetLightfv)
-       .type   GL_PREFIX(GetLightfv), @function
-GL_PREFIX(GetLightfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2112(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2112(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2112(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2112(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetLightfv), .-GL_PREFIX(GetLightfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetLightiv)
-       .type   GL_PREFIX(GetLightiv), @function
-GL_PREFIX(GetLightiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2120(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2120(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2120(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2120(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetLightiv), .-GL_PREFIX(GetLightiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMapdv)
-       .type   GL_PREFIX(GetMapdv), @function
-GL_PREFIX(GetMapdv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2128(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2128(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2128(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2128(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMapdv), .-GL_PREFIX(GetMapdv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMapfv)
-       .type   GL_PREFIX(GetMapfv), @function
-GL_PREFIX(GetMapfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2136(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2136(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2136(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2136(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMapfv), .-GL_PREFIX(GetMapfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMapiv)
-       .type   GL_PREFIX(GetMapiv), @function
-GL_PREFIX(GetMapiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2144(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2144(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2144(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2144(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMapiv), .-GL_PREFIX(GetMapiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMaterialfv)
-       .type   GL_PREFIX(GetMaterialfv), @function
-GL_PREFIX(GetMaterialfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2152(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2152(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2152(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2152(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMaterialfv), .-GL_PREFIX(GetMaterialfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMaterialiv)
-       .type   GL_PREFIX(GetMaterialiv), @function
-GL_PREFIX(GetMaterialiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2160(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2160(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2160(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2160(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMaterialiv), .-GL_PREFIX(GetMaterialiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetPixelMapfv)
-       .type   GL_PREFIX(GetPixelMapfv), @function
-GL_PREFIX(GetPixelMapfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2168(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2168(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2168(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2168(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetPixelMapfv), .-GL_PREFIX(GetPixelMapfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetPixelMapuiv)
-       .type   GL_PREFIX(GetPixelMapuiv), @function
-GL_PREFIX(GetPixelMapuiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2176(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2176(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2176(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2176(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetPixelMapuiv), .-GL_PREFIX(GetPixelMapuiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetPixelMapusv)
-       .type   GL_PREFIX(GetPixelMapusv), @function
-GL_PREFIX(GetPixelMapusv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2184(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2184(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2184(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2184(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetPixelMapusv), .-GL_PREFIX(GetPixelMapusv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetPolygonStipple)
-       .type   GL_PREFIX(GetPolygonStipple), @function
-GL_PREFIX(GetPolygonStipple):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2192(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2192(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2192(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2192(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetPolygonStipple), .-GL_PREFIX(GetPolygonStipple)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetString)
-       .type   GL_PREFIX(GetString), @function
-GL_PREFIX(GetString):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2200(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2200(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2200(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2200(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetString), .-GL_PREFIX(GetString)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexEnvfv)
-       .type   GL_PREFIX(GetTexEnvfv), @function
-GL_PREFIX(GetTexEnvfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2208(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2208(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2208(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2208(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexEnvfv), .-GL_PREFIX(GetTexEnvfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexEnviv)
-       .type   GL_PREFIX(GetTexEnviv), @function
-GL_PREFIX(GetTexEnviv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2216(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2216(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2216(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2216(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexEnviv), .-GL_PREFIX(GetTexEnviv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexGendv)
-       .type   GL_PREFIX(GetTexGendv), @function
-GL_PREFIX(GetTexGendv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2224(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2224(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2224(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2224(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexGendv), .-GL_PREFIX(GetTexGendv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexGenfv)
-       .type   GL_PREFIX(GetTexGenfv), @function
-GL_PREFIX(GetTexGenfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2232(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2232(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2232(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2232(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexGenfv), .-GL_PREFIX(GetTexGenfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexGeniv)
-       .type   GL_PREFIX(GetTexGeniv), @function
-GL_PREFIX(GetTexGeniv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2240(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2240(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2240(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2240(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexGeniv), .-GL_PREFIX(GetTexGeniv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexImage)
-       .type   GL_PREFIX(GetTexImage), @function
-GL_PREFIX(GetTexImage):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2248(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2248(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2248(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2248(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexImage), .-GL_PREFIX(GetTexImage)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexParameterfv)
-       .type   GL_PREFIX(GetTexParameterfv), @function
-GL_PREFIX(GetTexParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2256(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2256(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2256(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2256(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexParameterfv), .-GL_PREFIX(GetTexParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexParameteriv)
-       .type   GL_PREFIX(GetTexParameteriv), @function
-GL_PREFIX(GetTexParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2264(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2264(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2264(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2264(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexParameteriv), .-GL_PREFIX(GetTexParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexLevelParameterfv)
-       .type   GL_PREFIX(GetTexLevelParameterfv), @function
-GL_PREFIX(GetTexLevelParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2272(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2272(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2272(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2272(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexLevelParameterfv), .-GL_PREFIX(GetTexLevelParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexLevelParameteriv)
-       .type   GL_PREFIX(GetTexLevelParameteriv), @function
-GL_PREFIX(GetTexLevelParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2280(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2280(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2280(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2280(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexLevelParameteriv), .-GL_PREFIX(GetTexLevelParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsEnabled)
-       .type   GL_PREFIX(IsEnabled), @function
-GL_PREFIX(IsEnabled):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2288(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2288(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2288(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2288(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsEnabled), .-GL_PREFIX(IsEnabled)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsList)
-       .type   GL_PREFIX(IsList), @function
-GL_PREFIX(IsList):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2296(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2296(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2296(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2296(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsList), .-GL_PREFIX(IsList)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DepthRange)
-       .type   GL_PREFIX(DepthRange), @function
-GL_PREFIX(DepthRange):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2304(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2304(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2304(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2304(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DepthRange), .-GL_PREFIX(DepthRange)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Frustum)
-       .type   GL_PREFIX(Frustum), @function
-GL_PREFIX(Frustum):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2312(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       movq    %xmm4, 32(%rsp)
-       movq    %xmm5, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm5
-       movq    32(%rsp), %xmm4
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $56, %rsp
-       movq    2312(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2312(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       movq    %xmm4, 32(%rsp)
-       movq    %xmm5, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm5
-       movq    32(%rsp), %xmm4
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $56, %rsp
-       movq    2312(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Frustum), .-GL_PREFIX(Frustum)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LoadIdentity)
-       .type   GL_PREFIX(LoadIdentity), @function
-GL_PREFIX(LoadIdentity):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2320(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    2320(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2320(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    2320(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LoadIdentity), .-GL_PREFIX(LoadIdentity)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LoadMatrixf)
-       .type   GL_PREFIX(LoadMatrixf), @function
-GL_PREFIX(LoadMatrixf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2328(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2328(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2328(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2328(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LoadMatrixf), .-GL_PREFIX(LoadMatrixf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LoadMatrixd)
-       .type   GL_PREFIX(LoadMatrixd), @function
-GL_PREFIX(LoadMatrixd):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2336(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2336(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2336(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2336(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LoadMatrixd), .-GL_PREFIX(LoadMatrixd)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MatrixMode)
-       .type   GL_PREFIX(MatrixMode), @function
-GL_PREFIX(MatrixMode):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2344(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2344(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2344(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2344(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MatrixMode), .-GL_PREFIX(MatrixMode)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultMatrixf)
-       .type   GL_PREFIX(MultMatrixf), @function
-GL_PREFIX(MultMatrixf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2352(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2352(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2352(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2352(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultMatrixf), .-GL_PREFIX(MultMatrixf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultMatrixd)
-       .type   GL_PREFIX(MultMatrixd), @function
-GL_PREFIX(MultMatrixd):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2360(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2360(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2360(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2360(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultMatrixd), .-GL_PREFIX(MultMatrixd)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Ortho)
-       .type   GL_PREFIX(Ortho), @function
-GL_PREFIX(Ortho):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2368(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       movq    %xmm4, 32(%rsp)
-       movq    %xmm5, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm5
-       movq    32(%rsp), %xmm4
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $56, %rsp
-       movq    2368(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2368(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       movq    %xmm4, 32(%rsp)
-       movq    %xmm5, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm5
-       movq    32(%rsp), %xmm4
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $56, %rsp
-       movq    2368(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Ortho), .-GL_PREFIX(Ortho)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PopMatrix)
-       .type   GL_PREFIX(PopMatrix), @function
-GL_PREFIX(PopMatrix):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2376(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    2376(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2376(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    2376(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PopMatrix), .-GL_PREFIX(PopMatrix)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PushMatrix)
-       .type   GL_PREFIX(PushMatrix), @function
-GL_PREFIX(PushMatrix):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2384(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    2384(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2384(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    2384(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PushMatrix), .-GL_PREFIX(PushMatrix)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rotated)
-       .type   GL_PREFIX(Rotated), @function
-GL_PREFIX(Rotated):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2392(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    2392(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2392(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    2392(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rotated), .-GL_PREFIX(Rotated)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Rotatef)
-       .type   GL_PREFIX(Rotatef), @function
-GL_PREFIX(Rotatef):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2400(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    2400(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2400(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    2400(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Rotatef), .-GL_PREFIX(Rotatef)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Scaled)
-       .type   GL_PREFIX(Scaled), @function
-GL_PREFIX(Scaled):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2408(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2408(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2408(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2408(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Scaled), .-GL_PREFIX(Scaled)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Scalef)
-       .type   GL_PREFIX(Scalef), @function
-GL_PREFIX(Scalef):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2416(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2416(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2416(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2416(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Scalef), .-GL_PREFIX(Scalef)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Translated)
-       .type   GL_PREFIX(Translated), @function
-GL_PREFIX(Translated):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2424(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2424(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2424(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2424(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Translated), .-GL_PREFIX(Translated)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Translatef)
-       .type   GL_PREFIX(Translatef), @function
-GL_PREFIX(Translatef):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2432(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2432(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2432(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2432(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Translatef), .-GL_PREFIX(Translatef)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Viewport)
-       .type   GL_PREFIX(Viewport), @function
-GL_PREFIX(Viewport):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2440(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2440(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2440(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2440(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Viewport), .-GL_PREFIX(Viewport)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ArrayElement)
-       .type   GL_PREFIX(ArrayElement), @function
-GL_PREFIX(ArrayElement):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2448(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2448(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2448(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2448(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ArrayElement), .-GL_PREFIX(ArrayElement)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindTexture)
-       .type   GL_PREFIX(BindTexture), @function
-GL_PREFIX(BindTexture):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2456(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2456(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2456(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2456(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindTexture), .-GL_PREFIX(BindTexture)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorPointer)
-       .type   GL_PREFIX(ColorPointer), @function
-GL_PREFIX(ColorPointer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2464(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2464(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2464(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2464(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorPointer), .-GL_PREFIX(ColorPointer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DisableClientState)
-       .type   GL_PREFIX(DisableClientState), @function
-GL_PREFIX(DisableClientState):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2472(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2472(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2472(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2472(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DisableClientState), .-GL_PREFIX(DisableClientState)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawArrays)
-       .type   GL_PREFIX(DrawArrays), @function
-GL_PREFIX(DrawArrays):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2480(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2480(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2480(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2480(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawArrays), .-GL_PREFIX(DrawArrays)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawElements)
-       .type   GL_PREFIX(DrawElements), @function
-GL_PREFIX(DrawElements):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2488(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2488(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2488(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2488(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawElements), .-GL_PREFIX(DrawElements)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EdgeFlagPointer)
-       .type   GL_PREFIX(EdgeFlagPointer), @function
-GL_PREFIX(EdgeFlagPointer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2496(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2496(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2496(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2496(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EdgeFlagPointer), .-GL_PREFIX(EdgeFlagPointer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EnableClientState)
-       .type   GL_PREFIX(EnableClientState), @function
-GL_PREFIX(EnableClientState):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2504(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2504(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2504(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2504(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EnableClientState), .-GL_PREFIX(EnableClientState)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IndexPointer)
-       .type   GL_PREFIX(IndexPointer), @function
-GL_PREFIX(IndexPointer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2512(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2512(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2512(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2512(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IndexPointer), .-GL_PREFIX(IndexPointer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexub)
-       .type   GL_PREFIX(Indexub), @function
-GL_PREFIX(Indexub):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2520(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2520(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2520(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2520(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexub), .-GL_PREFIX(Indexub)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Indexubv)
-       .type   GL_PREFIX(Indexubv), @function
-GL_PREFIX(Indexubv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2528(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2528(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2528(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2528(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Indexubv), .-GL_PREFIX(Indexubv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(InterleavedArrays)
-       .type   GL_PREFIX(InterleavedArrays), @function
-GL_PREFIX(InterleavedArrays):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2536(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2536(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2536(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2536(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(InterleavedArrays), .-GL_PREFIX(InterleavedArrays)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(NormalPointer)
-       .type   GL_PREFIX(NormalPointer), @function
-GL_PREFIX(NormalPointer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2544(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2544(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2544(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2544(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(NormalPointer), .-GL_PREFIX(NormalPointer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PolygonOffset)
-       .type   GL_PREFIX(PolygonOffset), @function
-GL_PREFIX(PolygonOffset):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2552(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2552(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2552(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    2552(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PolygonOffset), .-GL_PREFIX(PolygonOffset)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoordPointer)
-       .type   GL_PREFIX(TexCoordPointer), @function
-GL_PREFIX(TexCoordPointer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2560(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2560(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2560(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2560(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoordPointer), .-GL_PREFIX(TexCoordPointer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexPointer)
-       .type   GL_PREFIX(VertexPointer), @function
-GL_PREFIX(VertexPointer):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2568(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2568(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2568(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2568(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexPointer), .-GL_PREFIX(VertexPointer)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AreTexturesResident)
-       .type   GL_PREFIX(AreTexturesResident), @function
-GL_PREFIX(AreTexturesResident):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2576(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2576(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2576(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2576(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AreTexturesResident), .-GL_PREFIX(AreTexturesResident)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyTexImage1D)
-       .type   GL_PREFIX(CopyTexImage1D), @function
-GL_PREFIX(CopyTexImage1D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2584(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2584(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2584(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2584(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyTexImage1D), .-GL_PREFIX(CopyTexImage1D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyTexImage2D)
-       .type   GL_PREFIX(CopyTexImage2D), @function
-GL_PREFIX(CopyTexImage2D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2592(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2592(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2592(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2592(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyTexImage2D), .-GL_PREFIX(CopyTexImage2D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyTexSubImage1D)
-       .type   GL_PREFIX(CopyTexSubImage1D), @function
-GL_PREFIX(CopyTexSubImage1D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2600(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2600(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2600(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2600(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyTexSubImage1D), .-GL_PREFIX(CopyTexSubImage1D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyTexSubImage2D)
-       .type   GL_PREFIX(CopyTexSubImage2D), @function
-GL_PREFIX(CopyTexSubImage2D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2608(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2608(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2608(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2608(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyTexSubImage2D), .-GL_PREFIX(CopyTexSubImage2D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteTextures)
-       .type   GL_PREFIX(DeleteTextures), @function
-GL_PREFIX(DeleteTextures):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2616(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2616(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2616(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2616(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteTextures), .-GL_PREFIX(DeleteTextures)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenTextures)
-       .type   GL_PREFIX(GenTextures), @function
-GL_PREFIX(GenTextures):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2624(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2624(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2624(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2624(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenTextures), .-GL_PREFIX(GenTextures)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetPointerv)
-       .type   GL_PREFIX(GetPointerv), @function
-GL_PREFIX(GetPointerv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2632(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2632(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2632(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    2632(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetPointerv), .-GL_PREFIX(GetPointerv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsTexture)
-       .type   GL_PREFIX(IsTexture), @function
-GL_PREFIX(IsTexture):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2640(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2640(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2640(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2640(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsTexture), .-GL_PREFIX(IsTexture)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PrioritizeTextures)
-       .type   GL_PREFIX(PrioritizeTextures), @function
-GL_PREFIX(PrioritizeTextures):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2648(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2648(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2648(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2648(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PrioritizeTextures), .-GL_PREFIX(PrioritizeTextures)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexSubImage1D)
-       .type   GL_PREFIX(TexSubImage1D), @function
-GL_PREFIX(TexSubImage1D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2656(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2656(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2656(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2656(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexSubImage1D), .-GL_PREFIX(TexSubImage1D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexSubImage2D)
-       .type   GL_PREFIX(TexSubImage2D), @function
-GL_PREFIX(TexSubImage2D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2664(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2664(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2664(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2664(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexSubImage2D), .-GL_PREFIX(TexSubImage2D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PopClientAttrib)
-       .type   GL_PREFIX(PopClientAttrib), @function
-GL_PREFIX(PopClientAttrib):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2672(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    2672(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2672(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    2672(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PopClientAttrib), .-GL_PREFIX(PopClientAttrib)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PushClientAttrib)
-       .type   GL_PREFIX(PushClientAttrib), @function
-GL_PREFIX(PushClientAttrib):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2680(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2680(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2680(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2680(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PushClientAttrib), .-GL_PREFIX(PushClientAttrib)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BlendColor)
-       .type   GL_PREFIX(BlendColor), @function
-GL_PREFIX(BlendColor):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2688(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2688(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2688(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2688(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BlendColor), .-GL_PREFIX(BlendColor)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BlendEquation)
-       .type   GL_PREFIX(BlendEquation), @function
-GL_PREFIX(BlendEquation):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2696(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2696(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2696(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2696(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BlendEquation), .-GL_PREFIX(BlendEquation)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawRangeElements)
-       .type   GL_PREFIX(DrawRangeElements), @function
-GL_PREFIX(DrawRangeElements):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2704(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2704(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2704(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2704(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawRangeElements), .-GL_PREFIX(DrawRangeElements)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorTable)
-       .type   GL_PREFIX(ColorTable), @function
-GL_PREFIX(ColorTable):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2712(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2712(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2712(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2712(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorTable), .-GL_PREFIX(ColorTable)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorTableParameterfv)
-       .type   GL_PREFIX(ColorTableParameterfv), @function
-GL_PREFIX(ColorTableParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2720(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2720(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2720(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2720(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorTableParameterfv), .-GL_PREFIX(ColorTableParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorTableParameteriv)
-       .type   GL_PREFIX(ColorTableParameteriv), @function
-GL_PREFIX(ColorTableParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2728(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2728(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2728(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2728(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorTableParameteriv), .-GL_PREFIX(ColorTableParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyColorTable)
-       .type   GL_PREFIX(CopyColorTable), @function
-GL_PREFIX(CopyColorTable):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2736(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2736(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2736(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2736(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyColorTable), .-GL_PREFIX(CopyColorTable)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetColorTable)
-       .type   GL_PREFIX(GetColorTable), @function
-GL_PREFIX(GetColorTable):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2744(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2744(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2744(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2744(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetColorTable), .-GL_PREFIX(GetColorTable)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetColorTableParameterfv)
-       .type   GL_PREFIX(GetColorTableParameterfv), @function
-GL_PREFIX(GetColorTableParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2752(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2752(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2752(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2752(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetColorTableParameterfv), .-GL_PREFIX(GetColorTableParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetColorTableParameteriv)
-       .type   GL_PREFIX(GetColorTableParameteriv), @function
-GL_PREFIX(GetColorTableParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2760(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2760(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2760(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2760(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetColorTableParameteriv), .-GL_PREFIX(GetColorTableParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorSubTable)
-       .type   GL_PREFIX(ColorSubTable), @function
-GL_PREFIX(ColorSubTable):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2768(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2768(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2768(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2768(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorSubTable), .-GL_PREFIX(ColorSubTable)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyColorSubTable)
-       .type   GL_PREFIX(CopyColorSubTable), @function
-GL_PREFIX(CopyColorSubTable):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2776(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2776(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2776(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2776(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyColorSubTable), .-GL_PREFIX(CopyColorSubTable)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ConvolutionFilter1D)
-       .type   GL_PREFIX(ConvolutionFilter1D), @function
-GL_PREFIX(ConvolutionFilter1D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2784(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2784(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2784(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2784(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ConvolutionFilter1D), .-GL_PREFIX(ConvolutionFilter1D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ConvolutionFilter2D)
-       .type   GL_PREFIX(ConvolutionFilter2D), @function
-GL_PREFIX(ConvolutionFilter2D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2792(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2792(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2792(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2792(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ConvolutionFilter2D), .-GL_PREFIX(ConvolutionFilter2D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ConvolutionParameterf)
-       .type   GL_PREFIX(ConvolutionParameterf), @function
-GL_PREFIX(ConvolutionParameterf):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2800(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    2800(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2800(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    2800(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ConvolutionParameterf), .-GL_PREFIX(ConvolutionParameterf)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ConvolutionParameterfv)
-       .type   GL_PREFIX(ConvolutionParameterfv), @function
-GL_PREFIX(ConvolutionParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2808(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2808(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2808(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2808(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ConvolutionParameterfv), .-GL_PREFIX(ConvolutionParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ConvolutionParameteri)
-       .type   GL_PREFIX(ConvolutionParameteri), @function
-GL_PREFIX(ConvolutionParameteri):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2816(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2816(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2816(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2816(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ConvolutionParameteri), .-GL_PREFIX(ConvolutionParameteri)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ConvolutionParameteriv)
-       .type   GL_PREFIX(ConvolutionParameteriv), @function
-GL_PREFIX(ConvolutionParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2824(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2824(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2824(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2824(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ConvolutionParameteriv), .-GL_PREFIX(ConvolutionParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyConvolutionFilter1D)
-       .type   GL_PREFIX(CopyConvolutionFilter1D), @function
-GL_PREFIX(CopyConvolutionFilter1D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2832(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2832(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2832(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2832(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyConvolutionFilter1D), .-GL_PREFIX(CopyConvolutionFilter1D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyConvolutionFilter2D)
-       .type   GL_PREFIX(CopyConvolutionFilter2D), @function
-GL_PREFIX(CopyConvolutionFilter2D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2840(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2840(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2840(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2840(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyConvolutionFilter2D), .-GL_PREFIX(CopyConvolutionFilter2D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetConvolutionFilter)
-       .type   GL_PREFIX(GetConvolutionFilter), @function
-GL_PREFIX(GetConvolutionFilter):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2848(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2848(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2848(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2848(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetConvolutionFilter), .-GL_PREFIX(GetConvolutionFilter)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetConvolutionParameterfv)
-       .type   GL_PREFIX(GetConvolutionParameterfv), @function
-GL_PREFIX(GetConvolutionParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2856(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2856(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2856(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2856(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetConvolutionParameterfv), .-GL_PREFIX(GetConvolutionParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetConvolutionParameteriv)
-       .type   GL_PREFIX(GetConvolutionParameteriv), @function
-GL_PREFIX(GetConvolutionParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2864(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2864(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2864(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2864(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetConvolutionParameteriv), .-GL_PREFIX(GetConvolutionParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetSeparableFilter)
-       .type   GL_PREFIX(GetSeparableFilter), @function
-GL_PREFIX(GetSeparableFilter):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2872(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2872(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2872(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2872(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetSeparableFilter), .-GL_PREFIX(GetSeparableFilter)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SeparableFilter2D)
-       .type   GL_PREFIX(SeparableFilter2D), @function
-GL_PREFIX(SeparableFilter2D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2880(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2880(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2880(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2880(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SeparableFilter2D), .-GL_PREFIX(SeparableFilter2D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetHistogram)
-       .type   GL_PREFIX(GetHistogram), @function
-GL_PREFIX(GetHistogram):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2888(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2888(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2888(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2888(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetHistogram), .-GL_PREFIX(GetHistogram)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetHistogramParameterfv)
-       .type   GL_PREFIX(GetHistogramParameterfv), @function
-GL_PREFIX(GetHistogramParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2896(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2896(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2896(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2896(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetHistogramParameterfv), .-GL_PREFIX(GetHistogramParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetHistogramParameteriv)
-       .type   GL_PREFIX(GetHistogramParameteriv), @function
-GL_PREFIX(GetHistogramParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2904(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2904(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2904(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2904(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetHistogramParameteriv), .-GL_PREFIX(GetHistogramParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMinmax)
-       .type   GL_PREFIX(GetMinmax), @function
-GL_PREFIX(GetMinmax):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2912(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2912(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2912(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2912(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMinmax), .-GL_PREFIX(GetMinmax)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMinmaxParameterfv)
-       .type   GL_PREFIX(GetMinmaxParameterfv), @function
-GL_PREFIX(GetMinmaxParameterfv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2920(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2920(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2920(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2920(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMinmaxParameterfv), .-GL_PREFIX(GetMinmaxParameterfv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetMinmaxParameteriv)
-       .type   GL_PREFIX(GetMinmaxParameteriv), @function
-GL_PREFIX(GetMinmaxParameteriv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2928(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2928(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2928(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2928(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetMinmaxParameteriv), .-GL_PREFIX(GetMinmaxParameteriv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Histogram)
-       .type   GL_PREFIX(Histogram), @function
-GL_PREFIX(Histogram):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2936(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2936(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2936(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2936(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Histogram), .-GL_PREFIX(Histogram)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Minmax)
-       .type   GL_PREFIX(Minmax), @function
-GL_PREFIX(Minmax):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2944(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2944(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2944(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2944(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Minmax), .-GL_PREFIX(Minmax)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ResetHistogram)
-       .type   GL_PREFIX(ResetHistogram), @function
-GL_PREFIX(ResetHistogram):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2952(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2952(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2952(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2952(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ResetHistogram), .-GL_PREFIX(ResetHistogram)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ResetMinmax)
-       .type   GL_PREFIX(ResetMinmax), @function
-GL_PREFIX(ResetMinmax):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2960(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2960(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2960(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2960(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ResetMinmax), .-GL_PREFIX(ResetMinmax)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexImage3D)
-       .type   GL_PREFIX(TexImage3D), @function
-GL_PREFIX(TexImage3D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2968(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2968(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2968(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2968(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexImage3D), .-GL_PREFIX(TexImage3D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexSubImage3D)
-       .type   GL_PREFIX(TexSubImage3D), @function
-GL_PREFIX(TexSubImage3D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2976(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2976(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2976(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2976(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexSubImage3D), .-GL_PREFIX(TexSubImage3D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyTexSubImage3D)
-       .type   GL_PREFIX(CopyTexSubImage3D), @function
-GL_PREFIX(CopyTexSubImage3D):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2984(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2984(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2984(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    2984(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyTexSubImage3D), .-GL_PREFIX(CopyTexSubImage3D)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ActiveTextureARB)
-       .type   GL_PREFIX(ActiveTextureARB), @function
-GL_PREFIX(ActiveTextureARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    2992(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    2992(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    2992(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    2992(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ActiveTextureARB), .-GL_PREFIX(ActiveTextureARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClientActiveTextureARB)
-       .type   GL_PREFIX(ClientActiveTextureARB), @function
-GL_PREFIX(ClientActiveTextureARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3000(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3000(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3000(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3000(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClientActiveTextureARB), .-GL_PREFIX(ClientActiveTextureARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1dARB)
-       .type   GL_PREFIX(MultiTexCoord1dARB), @function
-GL_PREFIX(MultiTexCoord1dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3008(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3008(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3008(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3008(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1dARB), .-GL_PREFIX(MultiTexCoord1dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1dvARB)
-       .type   GL_PREFIX(MultiTexCoord1dvARB), @function
-GL_PREFIX(MultiTexCoord1dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3016(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3016(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3016(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3016(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1dvARB), .-GL_PREFIX(MultiTexCoord1dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1fARB)
-       .type   GL_PREFIX(MultiTexCoord1fARB), @function
-GL_PREFIX(MultiTexCoord1fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3024(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3024(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3024(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3024(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1fARB), .-GL_PREFIX(MultiTexCoord1fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1fvARB)
-       .type   GL_PREFIX(MultiTexCoord1fvARB), @function
-GL_PREFIX(MultiTexCoord1fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3032(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3032(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3032(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3032(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1fvARB), .-GL_PREFIX(MultiTexCoord1fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1iARB)
-       .type   GL_PREFIX(MultiTexCoord1iARB), @function
-GL_PREFIX(MultiTexCoord1iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3040(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3040(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3040(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3040(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1iARB), .-GL_PREFIX(MultiTexCoord1iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1ivARB)
-       .type   GL_PREFIX(MultiTexCoord1ivARB), @function
-GL_PREFIX(MultiTexCoord1ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3048(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3048(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3048(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3048(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1ivARB), .-GL_PREFIX(MultiTexCoord1ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1sARB)
-       .type   GL_PREFIX(MultiTexCoord1sARB), @function
-GL_PREFIX(MultiTexCoord1sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3056(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3056(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3056(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3056(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1sARB), .-GL_PREFIX(MultiTexCoord1sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord1svARB)
-       .type   GL_PREFIX(MultiTexCoord1svARB), @function
-GL_PREFIX(MultiTexCoord1svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3064(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3064(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3064(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3064(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord1svARB), .-GL_PREFIX(MultiTexCoord1svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2dARB)
-       .type   GL_PREFIX(MultiTexCoord2dARB), @function
-GL_PREFIX(MultiTexCoord2dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3072(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3072(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3072(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3072(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2dARB), .-GL_PREFIX(MultiTexCoord2dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2dvARB)
-       .type   GL_PREFIX(MultiTexCoord2dvARB), @function
-GL_PREFIX(MultiTexCoord2dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3080(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3080(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3080(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3080(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2dvARB), .-GL_PREFIX(MultiTexCoord2dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2fARB)
-       .type   GL_PREFIX(MultiTexCoord2fARB), @function
-GL_PREFIX(MultiTexCoord2fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3088(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3088(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3088(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3088(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2fARB), .-GL_PREFIX(MultiTexCoord2fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2fvARB)
-       .type   GL_PREFIX(MultiTexCoord2fvARB), @function
-GL_PREFIX(MultiTexCoord2fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3096(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3096(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3096(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3096(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2fvARB), .-GL_PREFIX(MultiTexCoord2fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2iARB)
-       .type   GL_PREFIX(MultiTexCoord2iARB), @function
-GL_PREFIX(MultiTexCoord2iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3104(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3104(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3104(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3104(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2iARB), .-GL_PREFIX(MultiTexCoord2iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2ivARB)
-       .type   GL_PREFIX(MultiTexCoord2ivARB), @function
-GL_PREFIX(MultiTexCoord2ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3112(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3112(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3112(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3112(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2ivARB), .-GL_PREFIX(MultiTexCoord2ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2sARB)
-       .type   GL_PREFIX(MultiTexCoord2sARB), @function
-GL_PREFIX(MultiTexCoord2sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3120(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3120(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3120(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3120(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2sARB), .-GL_PREFIX(MultiTexCoord2sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord2svARB)
-       .type   GL_PREFIX(MultiTexCoord2svARB), @function
-GL_PREFIX(MultiTexCoord2svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3128(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3128(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3128(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3128(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord2svARB), .-GL_PREFIX(MultiTexCoord2svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3dARB)
-       .type   GL_PREFIX(MultiTexCoord3dARB), @function
-GL_PREFIX(MultiTexCoord3dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3136(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3136(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3136(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3136(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3dARB), .-GL_PREFIX(MultiTexCoord3dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3dvARB)
-       .type   GL_PREFIX(MultiTexCoord3dvARB), @function
-GL_PREFIX(MultiTexCoord3dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3144(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3144(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3144(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3144(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3dvARB), .-GL_PREFIX(MultiTexCoord3dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3fARB)
-       .type   GL_PREFIX(MultiTexCoord3fARB), @function
-GL_PREFIX(MultiTexCoord3fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3152(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3152(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3152(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3152(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3fARB), .-GL_PREFIX(MultiTexCoord3fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3fvARB)
-       .type   GL_PREFIX(MultiTexCoord3fvARB), @function
-GL_PREFIX(MultiTexCoord3fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3160(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3160(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3160(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3160(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3fvARB), .-GL_PREFIX(MultiTexCoord3fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3iARB)
-       .type   GL_PREFIX(MultiTexCoord3iARB), @function
-GL_PREFIX(MultiTexCoord3iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3168(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3168(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3168(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3168(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3iARB), .-GL_PREFIX(MultiTexCoord3iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3ivARB)
-       .type   GL_PREFIX(MultiTexCoord3ivARB), @function
-GL_PREFIX(MultiTexCoord3ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3176(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3176(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3176(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3176(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3ivARB), .-GL_PREFIX(MultiTexCoord3ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3sARB)
-       .type   GL_PREFIX(MultiTexCoord3sARB), @function
-GL_PREFIX(MultiTexCoord3sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3184(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3184(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3184(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3184(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3sARB), .-GL_PREFIX(MultiTexCoord3sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord3svARB)
-       .type   GL_PREFIX(MultiTexCoord3svARB), @function
-GL_PREFIX(MultiTexCoord3svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3192(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3192(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3192(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3192(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord3svARB), .-GL_PREFIX(MultiTexCoord3svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4dARB)
-       .type   GL_PREFIX(MultiTexCoord4dARB), @function
-GL_PREFIX(MultiTexCoord4dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3200(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3200(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3200(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _glapi_get_dispatch
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3200(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4dARB), .-GL_PREFIX(MultiTexCoord4dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4dvARB)
-       .type   GL_PREFIX(MultiTexCoord4dvARB), @function
-GL_PREFIX(MultiTexCoord4dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3208(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3208(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3208(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3208(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4dvARB), .-GL_PREFIX(MultiTexCoord4dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4fARB)
-       .type   GL_PREFIX(MultiTexCoord4fARB), @function
-GL_PREFIX(MultiTexCoord4fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3216(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3216(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3216(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _glapi_get_dispatch
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3216(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4fARB), .-GL_PREFIX(MultiTexCoord4fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4fvARB)
-       .type   GL_PREFIX(MultiTexCoord4fvARB), @function
-GL_PREFIX(MultiTexCoord4fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3224(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3224(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3224(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3224(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4fvARB), .-GL_PREFIX(MultiTexCoord4fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4iARB)
-       .type   GL_PREFIX(MultiTexCoord4iARB), @function
-GL_PREFIX(MultiTexCoord4iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3232(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3232(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3232(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3232(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4iARB), .-GL_PREFIX(MultiTexCoord4iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4ivARB)
-       .type   GL_PREFIX(MultiTexCoord4ivARB), @function
-GL_PREFIX(MultiTexCoord4ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3240(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3240(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3240(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3240(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4ivARB), .-GL_PREFIX(MultiTexCoord4ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4sARB)
-       .type   GL_PREFIX(MultiTexCoord4sARB), @function
-GL_PREFIX(MultiTexCoord4sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3248(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3248(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3248(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3248(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4sARB), .-GL_PREFIX(MultiTexCoord4sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiTexCoord4svARB)
-       .type   GL_PREFIX(MultiTexCoord4svARB), @function
-GL_PREFIX(MultiTexCoord4svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3256(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3256(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3256(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3256(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiTexCoord4svARB), .-GL_PREFIX(MultiTexCoord4svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AttachShader)
-       .type   GL_PREFIX(AttachShader), @function
-GL_PREFIX(AttachShader):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3264(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3264(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3264(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3264(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AttachShader), .-GL_PREFIX(AttachShader)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CreateProgram)
-       .type   GL_PREFIX(CreateProgram), @function
-GL_PREFIX(CreateProgram):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3272(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    3272(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3272(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    3272(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CreateProgram), .-GL_PREFIX(CreateProgram)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CreateShader)
-       .type   GL_PREFIX(CreateShader), @function
-GL_PREFIX(CreateShader):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3280(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3280(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3280(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3280(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CreateShader), .-GL_PREFIX(CreateShader)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteProgram)
-       .type   GL_PREFIX(DeleteProgram), @function
-GL_PREFIX(DeleteProgram):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3288(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3288(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3288(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3288(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteProgram), .-GL_PREFIX(DeleteProgram)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteShader)
-       .type   GL_PREFIX(DeleteShader), @function
-GL_PREFIX(DeleteShader):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3296(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3296(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3296(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3296(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteShader), .-GL_PREFIX(DeleteShader)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DetachShader)
-       .type   GL_PREFIX(DetachShader), @function
-GL_PREFIX(DetachShader):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3304(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3304(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3304(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3304(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DetachShader), .-GL_PREFIX(DetachShader)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetAttachedShaders)
-       .type   GL_PREFIX(GetAttachedShaders), @function
-GL_PREFIX(GetAttachedShaders):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3312(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3312(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3312(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3312(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetAttachedShaders), .-GL_PREFIX(GetAttachedShaders)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramInfoLog)
-       .type   GL_PREFIX(GetProgramInfoLog), @function
-GL_PREFIX(GetProgramInfoLog):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3320(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3320(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3320(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3320(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramInfoLog), .-GL_PREFIX(GetProgramInfoLog)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramiv)
-       .type   GL_PREFIX(GetProgramiv), @function
-GL_PREFIX(GetProgramiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3328(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3328(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3328(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3328(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramiv), .-GL_PREFIX(GetProgramiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetShaderInfoLog)
-       .type   GL_PREFIX(GetShaderInfoLog), @function
-GL_PREFIX(GetShaderInfoLog):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3336(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3336(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3336(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3336(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetShaderInfoLog), .-GL_PREFIX(GetShaderInfoLog)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetShaderiv)
-       .type   GL_PREFIX(GetShaderiv), @function
-GL_PREFIX(GetShaderiv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3344(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3344(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3344(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3344(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetShaderiv), .-GL_PREFIX(GetShaderiv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsProgram)
-       .type   GL_PREFIX(IsProgram), @function
-GL_PREFIX(IsProgram):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3352(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3352(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3352(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3352(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsProgram), .-GL_PREFIX(IsProgram)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsShader)
-       .type   GL_PREFIX(IsShader), @function
-GL_PREFIX(IsShader):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3360(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3360(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3360(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3360(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsShader), .-GL_PREFIX(IsShader)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(StencilFuncSeparate)
-       .type   GL_PREFIX(StencilFuncSeparate), @function
-GL_PREFIX(StencilFuncSeparate):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3368(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3368(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3368(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3368(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(StencilFuncSeparate), .-GL_PREFIX(StencilFuncSeparate)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(StencilMaskSeparate)
-       .type   GL_PREFIX(StencilMaskSeparate), @function
-GL_PREFIX(StencilMaskSeparate):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3376(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3376(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3376(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3376(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(StencilMaskSeparate), .-GL_PREFIX(StencilMaskSeparate)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(StencilOpSeparate)
-       .type   GL_PREFIX(StencilOpSeparate), @function
-GL_PREFIX(StencilOpSeparate):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3384(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3384(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3384(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3384(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(StencilOpSeparate), .-GL_PREFIX(StencilOpSeparate)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix2x3fv)
-       .type   GL_PREFIX(UniformMatrix2x3fv), @function
-GL_PREFIX(UniformMatrix2x3fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3392(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3392(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3392(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3392(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix2x3fv), .-GL_PREFIX(UniformMatrix2x3fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix2x4fv)
-       .type   GL_PREFIX(UniformMatrix2x4fv), @function
-GL_PREFIX(UniformMatrix2x4fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3400(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3400(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3400(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3400(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix2x4fv), .-GL_PREFIX(UniformMatrix2x4fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix3x2fv)
-       .type   GL_PREFIX(UniformMatrix3x2fv), @function
-GL_PREFIX(UniformMatrix3x2fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3408(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3408(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3408(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3408(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix3x2fv), .-GL_PREFIX(UniformMatrix3x2fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix3x4fv)
-       .type   GL_PREFIX(UniformMatrix3x4fv), @function
-GL_PREFIX(UniformMatrix3x4fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3416(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3416(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3416(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3416(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix3x4fv), .-GL_PREFIX(UniformMatrix3x4fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix4x2fv)
-       .type   GL_PREFIX(UniformMatrix4x2fv), @function
-GL_PREFIX(UniformMatrix4x2fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3424(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3424(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3424(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3424(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix4x2fv), .-GL_PREFIX(UniformMatrix4x2fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix4x3fv)
-       .type   GL_PREFIX(UniformMatrix4x3fv), @function
-GL_PREFIX(UniformMatrix4x3fv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3432(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3432(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3432(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3432(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix4x3fv), .-GL_PREFIX(UniformMatrix4x3fv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawArraysInstanced)
-       .type   GL_PREFIX(DrawArraysInstanced), @function
-GL_PREFIX(DrawArraysInstanced):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3440(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3440(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3440(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3440(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawArraysInstanced), .-GL_PREFIX(DrawArraysInstanced)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawElementsInstanced)
-       .type   GL_PREFIX(DrawElementsInstanced), @function
-GL_PREFIX(DrawElementsInstanced):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3448(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3448(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3448(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3448(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawElementsInstanced), .-GL_PREFIX(DrawElementsInstanced)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LoadTransposeMatrixdARB)
-       .type   GL_PREFIX(LoadTransposeMatrixdARB), @function
-GL_PREFIX(LoadTransposeMatrixdARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3456(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3456(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3456(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3456(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LoadTransposeMatrixdARB), .-GL_PREFIX(LoadTransposeMatrixdARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LoadTransposeMatrixfARB)
-       .type   GL_PREFIX(LoadTransposeMatrixfARB), @function
-GL_PREFIX(LoadTransposeMatrixfARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3464(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3464(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3464(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3464(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LoadTransposeMatrixfARB), .-GL_PREFIX(LoadTransposeMatrixfARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultTransposeMatrixdARB)
-       .type   GL_PREFIX(MultTransposeMatrixdARB), @function
-GL_PREFIX(MultTransposeMatrixdARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3472(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3472(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3472(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3472(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultTransposeMatrixdARB), .-GL_PREFIX(MultTransposeMatrixdARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultTransposeMatrixfARB)
-       .type   GL_PREFIX(MultTransposeMatrixfARB), @function
-GL_PREFIX(MultTransposeMatrixfARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3480(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3480(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3480(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3480(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultTransposeMatrixfARB), .-GL_PREFIX(MultTransposeMatrixfARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SampleCoverageARB)
-       .type   GL_PREFIX(SampleCoverageARB), @function
-GL_PREFIX(SampleCoverageARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3488(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3488(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3488(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3488(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SampleCoverageARB), .-GL_PREFIX(SampleCoverageARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CompressedTexImage1DARB)
-       .type   GL_PREFIX(CompressedTexImage1DARB), @function
-GL_PREFIX(CompressedTexImage1DARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3496(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3496(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3496(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3496(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CompressedTexImage1DARB), .-GL_PREFIX(CompressedTexImage1DARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CompressedTexImage2DARB)
-       .type   GL_PREFIX(CompressedTexImage2DARB), @function
-GL_PREFIX(CompressedTexImage2DARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3504(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3504(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3504(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3504(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CompressedTexImage2DARB), .-GL_PREFIX(CompressedTexImage2DARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CompressedTexImage3DARB)
-       .type   GL_PREFIX(CompressedTexImage3DARB), @function
-GL_PREFIX(CompressedTexImage3DARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3512(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3512(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3512(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3512(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CompressedTexImage3DARB), .-GL_PREFIX(CompressedTexImage3DARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CompressedTexSubImage1DARB)
-       .type   GL_PREFIX(CompressedTexSubImage1DARB), @function
-GL_PREFIX(CompressedTexSubImage1DARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3520(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3520(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3520(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3520(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CompressedTexSubImage1DARB), .-GL_PREFIX(CompressedTexSubImage1DARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CompressedTexSubImage2DARB)
-       .type   GL_PREFIX(CompressedTexSubImage2DARB), @function
-GL_PREFIX(CompressedTexSubImage2DARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3528(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3528(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3528(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3528(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CompressedTexSubImage2DARB), .-GL_PREFIX(CompressedTexSubImage2DARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CompressedTexSubImage3DARB)
-       .type   GL_PREFIX(CompressedTexSubImage3DARB), @function
-GL_PREFIX(CompressedTexSubImage3DARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3536(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3536(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3536(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3536(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CompressedTexSubImage3DARB), .-GL_PREFIX(CompressedTexSubImage3DARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetCompressedTexImageARB)
-       .type   GL_PREFIX(GetCompressedTexImageARB), @function
-GL_PREFIX(GetCompressedTexImageARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3544(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3544(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3544(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3544(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetCompressedTexImageARB), .-GL_PREFIX(GetCompressedTexImageARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DisableVertexAttribArrayARB)
-       .type   GL_PREFIX(DisableVertexAttribArrayARB), @function
-GL_PREFIX(DisableVertexAttribArrayARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3552(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3552(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3552(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3552(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DisableVertexAttribArrayARB), .-GL_PREFIX(DisableVertexAttribArrayARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EnableVertexAttribArrayARB)
-       .type   GL_PREFIX(EnableVertexAttribArrayARB), @function
-GL_PREFIX(EnableVertexAttribArrayARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3560(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    3560(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3560(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    3560(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EnableVertexAttribArrayARB), .-GL_PREFIX(EnableVertexAttribArrayARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramEnvParameterdvARB)
-       .type   GL_PREFIX(GetProgramEnvParameterdvARB), @function
-GL_PREFIX(GetProgramEnvParameterdvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3568(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3568(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3568(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3568(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramEnvParameterdvARB), .-GL_PREFIX(GetProgramEnvParameterdvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramEnvParameterfvARB)
-       .type   GL_PREFIX(GetProgramEnvParameterfvARB), @function
-GL_PREFIX(GetProgramEnvParameterfvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3576(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3576(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3576(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3576(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramEnvParameterfvARB), .-GL_PREFIX(GetProgramEnvParameterfvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramLocalParameterdvARB)
-       .type   GL_PREFIX(GetProgramLocalParameterdvARB), @function
-GL_PREFIX(GetProgramLocalParameterdvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3584(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3584(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3584(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3584(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramLocalParameterdvARB), .-GL_PREFIX(GetProgramLocalParameterdvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramLocalParameterfvARB)
-       .type   GL_PREFIX(GetProgramLocalParameterfvARB), @function
-GL_PREFIX(GetProgramLocalParameterfvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3592(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3592(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3592(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3592(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramLocalParameterfvARB), .-GL_PREFIX(GetProgramLocalParameterfvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramStringARB)
-       .type   GL_PREFIX(GetProgramStringARB), @function
-GL_PREFIX(GetProgramStringARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3600(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3600(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3600(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3600(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramStringARB), .-GL_PREFIX(GetProgramStringARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramivARB)
-       .type   GL_PREFIX(GetProgramivARB), @function
-GL_PREFIX(GetProgramivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3608(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3608(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3608(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3608(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramivARB), .-GL_PREFIX(GetProgramivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetVertexAttribdvARB)
-       .type   GL_PREFIX(GetVertexAttribdvARB), @function
-GL_PREFIX(GetVertexAttribdvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3616(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3616(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3616(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3616(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetVertexAttribdvARB), .-GL_PREFIX(GetVertexAttribdvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetVertexAttribfvARB)
-       .type   GL_PREFIX(GetVertexAttribfvARB), @function
-GL_PREFIX(GetVertexAttribfvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3624(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3624(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3624(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3624(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetVertexAttribfvARB), .-GL_PREFIX(GetVertexAttribfvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetVertexAttribivARB)
-       .type   GL_PREFIX(GetVertexAttribivARB), @function
-GL_PREFIX(GetVertexAttribivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3632(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3632(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3632(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3632(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetVertexAttribivARB), .-GL_PREFIX(GetVertexAttribivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramEnvParameter4dARB)
-       .type   GL_PREFIX(ProgramEnvParameter4dARB), @function
-GL_PREFIX(ProgramEnvParameter4dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3640(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3640(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3640(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3640(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramEnvParameter4dARB), .-GL_PREFIX(ProgramEnvParameter4dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramEnvParameter4dvARB)
-       .type   GL_PREFIX(ProgramEnvParameter4dvARB), @function
-GL_PREFIX(ProgramEnvParameter4dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3648(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3648(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3648(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3648(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramEnvParameter4dvARB), .-GL_PREFIX(ProgramEnvParameter4dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramEnvParameter4fARB)
-       .type   GL_PREFIX(ProgramEnvParameter4fARB), @function
-GL_PREFIX(ProgramEnvParameter4fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3656(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3656(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3656(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3656(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramEnvParameter4fARB), .-GL_PREFIX(ProgramEnvParameter4fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramEnvParameter4fvARB)
-       .type   GL_PREFIX(ProgramEnvParameter4fvARB), @function
-GL_PREFIX(ProgramEnvParameter4fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3664(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3664(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3664(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3664(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramEnvParameter4fvARB), .-GL_PREFIX(ProgramEnvParameter4fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramLocalParameter4dARB)
-       .type   GL_PREFIX(ProgramLocalParameter4dARB), @function
-GL_PREFIX(ProgramLocalParameter4dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3672(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3672(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3672(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3672(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramLocalParameter4dARB), .-GL_PREFIX(ProgramLocalParameter4dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramLocalParameter4dvARB)
-       .type   GL_PREFIX(ProgramLocalParameter4dvARB), @function
-GL_PREFIX(ProgramLocalParameter4dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3680(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3680(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3680(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3680(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramLocalParameter4dvARB), .-GL_PREFIX(ProgramLocalParameter4dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramLocalParameter4fARB)
-       .type   GL_PREFIX(ProgramLocalParameter4fARB), @function
-GL_PREFIX(ProgramLocalParameter4fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3688(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3688(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3688(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %xmm0, 16(%rsp)
-       movq    %xmm1, 24(%rsp)
-       movq    %xmm2, 32(%rsp)
-       movq    %xmm3, 40(%rsp)
-       call    _glapi_get_dispatch
-       movq    40(%rsp), %xmm3
-       movq    32(%rsp), %xmm2
-       movq    24(%rsp), %xmm1
-       movq    16(%rsp), %xmm0
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    3688(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramLocalParameter4fARB), .-GL_PREFIX(ProgramLocalParameter4fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramLocalParameter4fvARB)
-       .type   GL_PREFIX(ProgramLocalParameter4fvARB), @function
-GL_PREFIX(ProgramLocalParameter4fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3696(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3696(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3696(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3696(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramLocalParameter4fvARB), .-GL_PREFIX(ProgramLocalParameter4fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramStringARB)
-       .type   GL_PREFIX(ProgramStringARB), @function
-GL_PREFIX(ProgramStringARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3704(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3704(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3704(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3704(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramStringARB), .-GL_PREFIX(ProgramStringARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1dARB)
-       .type   GL_PREFIX(VertexAttrib1dARB), @function
-GL_PREFIX(VertexAttrib1dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3712(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3712(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3712(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3712(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1dARB), .-GL_PREFIX(VertexAttrib1dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1dvARB)
-       .type   GL_PREFIX(VertexAttrib1dvARB), @function
-GL_PREFIX(VertexAttrib1dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3720(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3720(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3720(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3720(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1dvARB), .-GL_PREFIX(VertexAttrib1dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1fARB)
-       .type   GL_PREFIX(VertexAttrib1fARB), @function
-GL_PREFIX(VertexAttrib1fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3728(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3728(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3728(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3728(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1fARB), .-GL_PREFIX(VertexAttrib1fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1fvARB)
-       .type   GL_PREFIX(VertexAttrib1fvARB), @function
-GL_PREFIX(VertexAttrib1fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3736(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3736(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3736(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3736(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1fvARB), .-GL_PREFIX(VertexAttrib1fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1sARB)
-       .type   GL_PREFIX(VertexAttrib1sARB), @function
-GL_PREFIX(VertexAttrib1sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3744(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3744(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3744(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3744(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1sARB), .-GL_PREFIX(VertexAttrib1sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1svARB)
-       .type   GL_PREFIX(VertexAttrib1svARB), @function
-GL_PREFIX(VertexAttrib1svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3752(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3752(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3752(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3752(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1svARB), .-GL_PREFIX(VertexAttrib1svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2dARB)
-       .type   GL_PREFIX(VertexAttrib2dARB), @function
-GL_PREFIX(VertexAttrib2dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3760(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3760(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3760(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3760(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2dARB), .-GL_PREFIX(VertexAttrib2dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2dvARB)
-       .type   GL_PREFIX(VertexAttrib2dvARB), @function
-GL_PREFIX(VertexAttrib2dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3768(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3768(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3768(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3768(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2dvARB), .-GL_PREFIX(VertexAttrib2dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2fARB)
-       .type   GL_PREFIX(VertexAttrib2fARB), @function
-GL_PREFIX(VertexAttrib2fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3776(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3776(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3776(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    3776(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2fARB), .-GL_PREFIX(VertexAttrib2fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2fvARB)
-       .type   GL_PREFIX(VertexAttrib2fvARB), @function
-GL_PREFIX(VertexAttrib2fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3784(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3784(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3784(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3784(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2fvARB), .-GL_PREFIX(VertexAttrib2fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2sARB)
-       .type   GL_PREFIX(VertexAttrib2sARB), @function
-GL_PREFIX(VertexAttrib2sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3792(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3792(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3792(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3792(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2sARB), .-GL_PREFIX(VertexAttrib2sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2svARB)
-       .type   GL_PREFIX(VertexAttrib2svARB), @function
-GL_PREFIX(VertexAttrib2svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3800(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3800(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3800(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3800(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2svARB), .-GL_PREFIX(VertexAttrib2svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3dARB)
-       .type   GL_PREFIX(VertexAttrib3dARB), @function
-GL_PREFIX(VertexAttrib3dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3808(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3808(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3808(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3808(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3dARB), .-GL_PREFIX(VertexAttrib3dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3dvARB)
-       .type   GL_PREFIX(VertexAttrib3dvARB), @function
-GL_PREFIX(VertexAttrib3dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3816(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3816(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3816(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3816(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3dvARB), .-GL_PREFIX(VertexAttrib3dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3fARB)
-       .type   GL_PREFIX(VertexAttrib3fARB), @function
-GL_PREFIX(VertexAttrib3fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3824(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3824(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3824(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3824(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3fARB), .-GL_PREFIX(VertexAttrib3fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3fvARB)
-       .type   GL_PREFIX(VertexAttrib3fvARB), @function
-GL_PREFIX(VertexAttrib3fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3832(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3832(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3832(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3832(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3fvARB), .-GL_PREFIX(VertexAttrib3fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3sARB)
-       .type   GL_PREFIX(VertexAttrib3sARB), @function
-GL_PREFIX(VertexAttrib3sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3840(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3840(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3840(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3840(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3sARB), .-GL_PREFIX(VertexAttrib3sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3svARB)
-       .type   GL_PREFIX(VertexAttrib3svARB), @function
-GL_PREFIX(VertexAttrib3svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3848(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3848(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3848(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3848(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3svARB), .-GL_PREFIX(VertexAttrib3svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4NbvARB)
-       .type   GL_PREFIX(VertexAttrib4NbvARB), @function
-GL_PREFIX(VertexAttrib4NbvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3856(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3856(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3856(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3856(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4NbvARB), .-GL_PREFIX(VertexAttrib4NbvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4NivARB)
-       .type   GL_PREFIX(VertexAttrib4NivARB), @function
-GL_PREFIX(VertexAttrib4NivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3864(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3864(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3864(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3864(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4NivARB), .-GL_PREFIX(VertexAttrib4NivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4NsvARB)
-       .type   GL_PREFIX(VertexAttrib4NsvARB), @function
-GL_PREFIX(VertexAttrib4NsvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3872(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3872(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3872(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3872(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4NsvARB), .-GL_PREFIX(VertexAttrib4NsvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4NubARB)
-       .type   GL_PREFIX(VertexAttrib4NubARB), @function
-GL_PREFIX(VertexAttrib4NubARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3880(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3880(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3880(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3880(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4NubARB), .-GL_PREFIX(VertexAttrib4NubARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4NubvARB)
-       .type   GL_PREFIX(VertexAttrib4NubvARB), @function
-GL_PREFIX(VertexAttrib4NubvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3888(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3888(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3888(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3888(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4NubvARB), .-GL_PREFIX(VertexAttrib4NubvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4NuivARB)
-       .type   GL_PREFIX(VertexAttrib4NuivARB), @function
-GL_PREFIX(VertexAttrib4NuivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3896(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3896(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3896(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3896(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4NuivARB), .-GL_PREFIX(VertexAttrib4NuivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4NusvARB)
-       .type   GL_PREFIX(VertexAttrib4NusvARB), @function
-GL_PREFIX(VertexAttrib4NusvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3904(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3904(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3904(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3904(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4NusvARB), .-GL_PREFIX(VertexAttrib4NusvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4bvARB)
-       .type   GL_PREFIX(VertexAttrib4bvARB), @function
-GL_PREFIX(VertexAttrib4bvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3912(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3912(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3912(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3912(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4bvARB), .-GL_PREFIX(VertexAttrib4bvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4dARB)
-       .type   GL_PREFIX(VertexAttrib4dARB), @function
-GL_PREFIX(VertexAttrib4dARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3920(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3920(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3920(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _glapi_get_dispatch
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3920(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4dARB), .-GL_PREFIX(VertexAttrib4dARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4dvARB)
-       .type   GL_PREFIX(VertexAttrib4dvARB), @function
-GL_PREFIX(VertexAttrib4dvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3928(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3928(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3928(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3928(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4dvARB), .-GL_PREFIX(VertexAttrib4dvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4fARB)
-       .type   GL_PREFIX(VertexAttrib4fARB), @function
-GL_PREFIX(VertexAttrib4fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3936(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3936(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3936(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _glapi_get_dispatch
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    3936(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4fARB), .-GL_PREFIX(VertexAttrib4fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4fvARB)
-       .type   GL_PREFIX(VertexAttrib4fvARB), @function
-GL_PREFIX(VertexAttrib4fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3944(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3944(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3944(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3944(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4fvARB), .-GL_PREFIX(VertexAttrib4fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4ivARB)
-       .type   GL_PREFIX(VertexAttrib4ivARB), @function
-GL_PREFIX(VertexAttrib4ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3952(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3952(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3952(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3952(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4ivARB), .-GL_PREFIX(VertexAttrib4ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4sARB)
-       .type   GL_PREFIX(VertexAttrib4sARB), @function
-GL_PREFIX(VertexAttrib4sARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3960(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3960(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3960(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    3960(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4sARB), .-GL_PREFIX(VertexAttrib4sARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4svARB)
-       .type   GL_PREFIX(VertexAttrib4svARB), @function
-GL_PREFIX(VertexAttrib4svARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3968(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3968(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3968(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3968(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4svARB), .-GL_PREFIX(VertexAttrib4svARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4ubvARB)
-       .type   GL_PREFIX(VertexAttrib4ubvARB), @function
-GL_PREFIX(VertexAttrib4ubvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3976(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3976(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3976(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3976(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4ubvARB), .-GL_PREFIX(VertexAttrib4ubvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4uivARB)
-       .type   GL_PREFIX(VertexAttrib4uivARB), @function
-GL_PREFIX(VertexAttrib4uivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3984(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3984(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3984(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3984(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4uivARB), .-GL_PREFIX(VertexAttrib4uivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4usvARB)
-       .type   GL_PREFIX(VertexAttrib4usvARB), @function
-GL_PREFIX(VertexAttrib4usvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    3992(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3992(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    3992(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    3992(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4usvARB), .-GL_PREFIX(VertexAttrib4usvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribPointerARB)
-       .type   GL_PREFIX(VertexAttribPointerARB), @function
-GL_PREFIX(VertexAttribPointerARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4000(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4000(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4000(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4000(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribPointerARB), .-GL_PREFIX(VertexAttribPointerARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindBufferARB)
-       .type   GL_PREFIX(BindBufferARB), @function
-GL_PREFIX(BindBufferARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4008(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4008(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4008(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4008(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindBufferARB), .-GL_PREFIX(BindBufferARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BufferDataARB)
-       .type   GL_PREFIX(BufferDataARB), @function
-GL_PREFIX(BufferDataARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4016(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4016(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4016(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4016(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BufferDataARB), .-GL_PREFIX(BufferDataARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BufferSubDataARB)
-       .type   GL_PREFIX(BufferSubDataARB), @function
-GL_PREFIX(BufferSubDataARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4024(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4024(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4024(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4024(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BufferSubDataARB), .-GL_PREFIX(BufferSubDataARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteBuffersARB)
-       .type   GL_PREFIX(DeleteBuffersARB), @function
-GL_PREFIX(DeleteBuffersARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4032(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4032(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4032(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4032(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteBuffersARB), .-GL_PREFIX(DeleteBuffersARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenBuffersARB)
-       .type   GL_PREFIX(GenBuffersARB), @function
-GL_PREFIX(GenBuffersARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4040(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4040(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4040(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4040(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenBuffersARB), .-GL_PREFIX(GenBuffersARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetBufferParameterivARB)
-       .type   GL_PREFIX(GetBufferParameterivARB), @function
-GL_PREFIX(GetBufferParameterivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4048(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4048(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4048(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4048(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetBufferParameterivARB), .-GL_PREFIX(GetBufferParameterivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetBufferPointervARB)
-       .type   GL_PREFIX(GetBufferPointervARB), @function
-GL_PREFIX(GetBufferPointervARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4056(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4056(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4056(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4056(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetBufferPointervARB), .-GL_PREFIX(GetBufferPointervARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetBufferSubDataARB)
-       .type   GL_PREFIX(GetBufferSubDataARB), @function
-GL_PREFIX(GetBufferSubDataARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4064(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4064(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4064(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4064(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetBufferSubDataARB), .-GL_PREFIX(GetBufferSubDataARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsBufferARB)
-       .type   GL_PREFIX(IsBufferARB), @function
-GL_PREFIX(IsBufferARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4072(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4072(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4072(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4072(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsBufferARB), .-GL_PREFIX(IsBufferARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MapBufferARB)
-       .type   GL_PREFIX(MapBufferARB), @function
-GL_PREFIX(MapBufferARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4080(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4080(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4080(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4080(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MapBufferARB), .-GL_PREFIX(MapBufferARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UnmapBufferARB)
-       .type   GL_PREFIX(UnmapBufferARB), @function
-GL_PREFIX(UnmapBufferARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4088(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4088(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4088(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4088(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UnmapBufferARB), .-GL_PREFIX(UnmapBufferARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BeginQueryARB)
-       .type   GL_PREFIX(BeginQueryARB), @function
-GL_PREFIX(BeginQueryARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4096(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4096(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4096(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4096(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BeginQueryARB), .-GL_PREFIX(BeginQueryARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteQueriesARB)
-       .type   GL_PREFIX(DeleteQueriesARB), @function
-GL_PREFIX(DeleteQueriesARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4104(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4104(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4104(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4104(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteQueriesARB), .-GL_PREFIX(DeleteQueriesARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EndQueryARB)
-       .type   GL_PREFIX(EndQueryARB), @function
-GL_PREFIX(EndQueryARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4112(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4112(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4112(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4112(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EndQueryARB), .-GL_PREFIX(EndQueryARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenQueriesARB)
-       .type   GL_PREFIX(GenQueriesARB), @function
-GL_PREFIX(GenQueriesARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4120(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4120(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4120(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4120(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenQueriesARB), .-GL_PREFIX(GenQueriesARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetQueryObjectivARB)
-       .type   GL_PREFIX(GetQueryObjectivARB), @function
-GL_PREFIX(GetQueryObjectivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4128(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4128(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4128(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4128(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetQueryObjectivARB), .-GL_PREFIX(GetQueryObjectivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetQueryObjectuivARB)
-       .type   GL_PREFIX(GetQueryObjectuivARB), @function
-GL_PREFIX(GetQueryObjectuivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4136(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4136(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4136(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4136(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetQueryObjectuivARB), .-GL_PREFIX(GetQueryObjectuivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetQueryivARB)
-       .type   GL_PREFIX(GetQueryivARB), @function
-GL_PREFIX(GetQueryivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4144(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4144(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4144(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4144(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetQueryivARB), .-GL_PREFIX(GetQueryivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsQueryARB)
-       .type   GL_PREFIX(IsQueryARB), @function
-GL_PREFIX(IsQueryARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4152(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4152(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4152(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4152(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsQueryARB), .-GL_PREFIX(IsQueryARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AttachObjectARB)
-       .type   GL_PREFIX(AttachObjectARB), @function
-GL_PREFIX(AttachObjectARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4160(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4160(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4160(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4160(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AttachObjectARB), .-GL_PREFIX(AttachObjectARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CompileShaderARB)
-       .type   GL_PREFIX(CompileShaderARB), @function
-GL_PREFIX(CompileShaderARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4168(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4168(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4168(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4168(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CompileShaderARB), .-GL_PREFIX(CompileShaderARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CreateProgramObjectARB)
-       .type   GL_PREFIX(CreateProgramObjectARB), @function
-GL_PREFIX(CreateProgramObjectARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4176(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    4176(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4176(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    4176(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CreateProgramObjectARB), .-GL_PREFIX(CreateProgramObjectARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CreateShaderObjectARB)
-       .type   GL_PREFIX(CreateShaderObjectARB), @function
-GL_PREFIX(CreateShaderObjectARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4184(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4184(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4184(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4184(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CreateShaderObjectARB), .-GL_PREFIX(CreateShaderObjectARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteObjectARB)
-       .type   GL_PREFIX(DeleteObjectARB), @function
-GL_PREFIX(DeleteObjectARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4192(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4192(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4192(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4192(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteObjectARB), .-GL_PREFIX(DeleteObjectARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DetachObjectARB)
-       .type   GL_PREFIX(DetachObjectARB), @function
-GL_PREFIX(DetachObjectARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4200(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4200(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4200(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4200(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DetachObjectARB), .-GL_PREFIX(DetachObjectARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetActiveUniformARB)
-       .type   GL_PREFIX(GetActiveUniformARB), @function
-GL_PREFIX(GetActiveUniformARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4208(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4208(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4208(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4208(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetActiveUniformARB), .-GL_PREFIX(GetActiveUniformARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetAttachedObjectsARB)
-       .type   GL_PREFIX(GetAttachedObjectsARB), @function
-GL_PREFIX(GetAttachedObjectsARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4216(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4216(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4216(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4216(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetAttachedObjectsARB), .-GL_PREFIX(GetAttachedObjectsARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetHandleARB)
-       .type   GL_PREFIX(GetHandleARB), @function
-GL_PREFIX(GetHandleARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4224(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4224(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4224(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4224(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetHandleARB), .-GL_PREFIX(GetHandleARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetInfoLogARB)
-       .type   GL_PREFIX(GetInfoLogARB), @function
-GL_PREFIX(GetInfoLogARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4232(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4232(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4232(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4232(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetInfoLogARB), .-GL_PREFIX(GetInfoLogARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetObjectParameterfvARB)
-       .type   GL_PREFIX(GetObjectParameterfvARB), @function
-GL_PREFIX(GetObjectParameterfvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4240(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4240(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4240(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4240(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetObjectParameterfvARB), .-GL_PREFIX(GetObjectParameterfvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetObjectParameterivARB)
-       .type   GL_PREFIX(GetObjectParameterivARB), @function
-GL_PREFIX(GetObjectParameterivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4248(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4248(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4248(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4248(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetObjectParameterivARB), .-GL_PREFIX(GetObjectParameterivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetShaderSourceARB)
-       .type   GL_PREFIX(GetShaderSourceARB), @function
-GL_PREFIX(GetShaderSourceARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4256(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4256(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4256(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4256(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetShaderSourceARB), .-GL_PREFIX(GetShaderSourceARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetUniformLocationARB)
-       .type   GL_PREFIX(GetUniformLocationARB), @function
-GL_PREFIX(GetUniformLocationARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4264(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4264(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4264(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4264(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetUniformLocationARB), .-GL_PREFIX(GetUniformLocationARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetUniformfvARB)
-       .type   GL_PREFIX(GetUniformfvARB), @function
-GL_PREFIX(GetUniformfvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4272(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4272(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4272(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4272(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetUniformfvARB), .-GL_PREFIX(GetUniformfvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetUniformivARB)
-       .type   GL_PREFIX(GetUniformivARB), @function
-GL_PREFIX(GetUniformivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4280(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4280(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4280(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4280(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetUniformivARB), .-GL_PREFIX(GetUniformivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LinkProgramARB)
-       .type   GL_PREFIX(LinkProgramARB), @function
-GL_PREFIX(LinkProgramARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4288(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4288(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4288(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4288(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LinkProgramARB), .-GL_PREFIX(LinkProgramARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ShaderSourceARB)
-       .type   GL_PREFIX(ShaderSourceARB), @function
-GL_PREFIX(ShaderSourceARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4296(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4296(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4296(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4296(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ShaderSourceARB), .-GL_PREFIX(ShaderSourceARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform1fARB)
-       .type   GL_PREFIX(Uniform1fARB), @function
-GL_PREFIX(Uniform1fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4304(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4304(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4304(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4304(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform1fARB), .-GL_PREFIX(Uniform1fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform1fvARB)
-       .type   GL_PREFIX(Uniform1fvARB), @function
-GL_PREFIX(Uniform1fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4312(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4312(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4312(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4312(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform1fvARB), .-GL_PREFIX(Uniform1fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform1iARB)
-       .type   GL_PREFIX(Uniform1iARB), @function
-GL_PREFIX(Uniform1iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4320(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4320(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4320(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4320(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform1iARB), .-GL_PREFIX(Uniform1iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform1ivARB)
-       .type   GL_PREFIX(Uniform1ivARB), @function
-GL_PREFIX(Uniform1ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4328(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4328(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4328(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4328(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform1ivARB), .-GL_PREFIX(Uniform1ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform2fARB)
-       .type   GL_PREFIX(Uniform2fARB), @function
-GL_PREFIX(Uniform2fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4336(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4336(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4336(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4336(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform2fARB), .-GL_PREFIX(Uniform2fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform2fvARB)
-       .type   GL_PREFIX(Uniform2fvARB), @function
-GL_PREFIX(Uniform2fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4344(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4344(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4344(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4344(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform2fvARB), .-GL_PREFIX(Uniform2fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform2iARB)
-       .type   GL_PREFIX(Uniform2iARB), @function
-GL_PREFIX(Uniform2iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4352(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4352(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4352(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4352(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform2iARB), .-GL_PREFIX(Uniform2iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform2ivARB)
-       .type   GL_PREFIX(Uniform2ivARB), @function
-GL_PREFIX(Uniform2ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4360(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4360(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4360(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4360(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform2ivARB), .-GL_PREFIX(Uniform2ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform3fARB)
-       .type   GL_PREFIX(Uniform3fARB), @function
-GL_PREFIX(Uniform3fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4368(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    4368(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4368(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    4368(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform3fARB), .-GL_PREFIX(Uniform3fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform3fvARB)
-       .type   GL_PREFIX(Uniform3fvARB), @function
-GL_PREFIX(Uniform3fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4376(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4376(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4376(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4376(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform3fvARB), .-GL_PREFIX(Uniform3fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform3iARB)
-       .type   GL_PREFIX(Uniform3iARB), @function
-GL_PREFIX(Uniform3iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4384(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4384(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4384(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4384(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform3iARB), .-GL_PREFIX(Uniform3iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform3ivARB)
-       .type   GL_PREFIX(Uniform3ivARB), @function
-GL_PREFIX(Uniform3ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4392(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4392(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4392(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4392(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform3ivARB), .-GL_PREFIX(Uniform3ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform4fARB)
-       .type   GL_PREFIX(Uniform4fARB), @function
-GL_PREFIX(Uniform4fARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4400(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    4400(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4400(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _glapi_get_dispatch
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    4400(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform4fARB), .-GL_PREFIX(Uniform4fARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform4fvARB)
-       .type   GL_PREFIX(Uniform4fvARB), @function
-GL_PREFIX(Uniform4fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4408(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4408(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4408(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4408(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform4fvARB), .-GL_PREFIX(Uniform4fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform4iARB)
-       .type   GL_PREFIX(Uniform4iARB), @function
-GL_PREFIX(Uniform4iARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4416(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4416(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4416(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4416(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform4iARB), .-GL_PREFIX(Uniform4iARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(Uniform4ivARB)
-       .type   GL_PREFIX(Uniform4ivARB), @function
-GL_PREFIX(Uniform4ivARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4424(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4424(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4424(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4424(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(Uniform4ivARB), .-GL_PREFIX(Uniform4ivARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix2fvARB)
-       .type   GL_PREFIX(UniformMatrix2fvARB), @function
-GL_PREFIX(UniformMatrix2fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4432(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4432(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4432(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4432(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix2fvARB), .-GL_PREFIX(UniformMatrix2fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix3fvARB)
-       .type   GL_PREFIX(UniformMatrix3fvARB), @function
-GL_PREFIX(UniformMatrix3fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4440(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4440(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4440(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4440(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix3fvARB), .-GL_PREFIX(UniformMatrix3fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UniformMatrix4fvARB)
-       .type   GL_PREFIX(UniformMatrix4fvARB), @function
-GL_PREFIX(UniformMatrix4fvARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4448(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4448(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4448(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4448(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UniformMatrix4fvARB), .-GL_PREFIX(UniformMatrix4fvARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UseProgramObjectARB)
-       .type   GL_PREFIX(UseProgramObjectARB), @function
-GL_PREFIX(UseProgramObjectARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4456(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4456(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4456(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4456(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UseProgramObjectARB), .-GL_PREFIX(UseProgramObjectARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ValidateProgramARB)
-       .type   GL_PREFIX(ValidateProgramARB), @function
-GL_PREFIX(ValidateProgramARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4464(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4464(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4464(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4464(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ValidateProgramARB), .-GL_PREFIX(ValidateProgramARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindAttribLocationARB)
-       .type   GL_PREFIX(BindAttribLocationARB), @function
-GL_PREFIX(BindAttribLocationARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4472(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4472(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4472(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4472(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindAttribLocationARB), .-GL_PREFIX(BindAttribLocationARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetActiveAttribARB)
-       .type   GL_PREFIX(GetActiveAttribARB), @function
-GL_PREFIX(GetActiveAttribARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4480(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4480(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4480(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4480(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetActiveAttribARB), .-GL_PREFIX(GetActiveAttribARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetAttribLocationARB)
-       .type   GL_PREFIX(GetAttribLocationARB), @function
-GL_PREFIX(GetAttribLocationARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4488(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4488(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4488(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4488(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetAttribLocationARB), .-GL_PREFIX(GetAttribLocationARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawBuffersARB)
-       .type   GL_PREFIX(DrawBuffersARB), @function
-GL_PREFIX(DrawBuffersARB):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4496(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4496(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4496(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4496(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawBuffersARB), .-GL_PREFIX(DrawBuffersARB)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RenderbufferStorageMultisample)
-       .type   GL_PREFIX(RenderbufferStorageMultisample), @function
-GL_PREFIX(RenderbufferStorageMultisample):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4504(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4504(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4504(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4504(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RenderbufferStorageMultisample), .-GL_PREFIX(RenderbufferStorageMultisample)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FlushMappedBufferRange)
-       .type   GL_PREFIX(FlushMappedBufferRange), @function
-GL_PREFIX(FlushMappedBufferRange):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4512(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4512(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4512(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4512(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FlushMappedBufferRange), .-GL_PREFIX(FlushMappedBufferRange)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MapBufferRange)
-       .type   GL_PREFIX(MapBufferRange), @function
-GL_PREFIX(MapBufferRange):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4520(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4520(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4520(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4520(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MapBufferRange), .-GL_PREFIX(MapBufferRange)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindVertexArray)
-       .type   GL_PREFIX(BindVertexArray), @function
-GL_PREFIX(BindVertexArray):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4528(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4528(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4528(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4528(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindVertexArray), .-GL_PREFIX(BindVertexArray)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenVertexArrays)
-       .type   GL_PREFIX(GenVertexArrays), @function
-GL_PREFIX(GenVertexArrays):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4536(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4536(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4536(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4536(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenVertexArrays), .-GL_PREFIX(GenVertexArrays)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CopyBufferSubData)
-       .type   GL_PREFIX(CopyBufferSubData), @function
-GL_PREFIX(CopyBufferSubData):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4544(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4544(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4544(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4544(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CopyBufferSubData), .-GL_PREFIX(CopyBufferSubData)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ClientWaitSync)
-       .type   GL_PREFIX(ClientWaitSync), @function
-GL_PREFIX(ClientWaitSync):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4552(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4552(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4552(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4552(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ClientWaitSync), .-GL_PREFIX(ClientWaitSync)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteSync)
-       .type   GL_PREFIX(DeleteSync), @function
-GL_PREFIX(DeleteSync):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4560(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4560(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4560(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4560(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteSync), .-GL_PREFIX(DeleteSync)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FenceSync)
-       .type   GL_PREFIX(FenceSync), @function
-GL_PREFIX(FenceSync):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4568(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4568(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4568(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4568(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FenceSync), .-GL_PREFIX(FenceSync)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetInteger64v)
-       .type   GL_PREFIX(GetInteger64v), @function
-GL_PREFIX(GetInteger64v):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4576(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4576(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4576(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4576(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetInteger64v), .-GL_PREFIX(GetInteger64v)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetSynciv)
-       .type   GL_PREFIX(GetSynciv), @function
-GL_PREFIX(GetSynciv):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4584(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4584(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4584(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4584(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetSynciv), .-GL_PREFIX(GetSynciv)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsSync)
-       .type   GL_PREFIX(IsSync), @function
-GL_PREFIX(IsSync):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4592(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4592(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4592(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4592(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsSync), .-GL_PREFIX(IsSync)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WaitSync)
-       .type   GL_PREFIX(WaitSync), @function
-GL_PREFIX(WaitSync):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4600(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4600(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4600(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4600(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WaitSync), .-GL_PREFIX(WaitSync)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawElementsBaseVertex)
-       .type   GL_PREFIX(DrawElementsBaseVertex), @function
-GL_PREFIX(DrawElementsBaseVertex):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4608(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4608(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4608(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4608(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawElementsBaseVertex), .-GL_PREFIX(DrawElementsBaseVertex)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DrawRangeElementsBaseVertex)
-       .type   GL_PREFIX(DrawRangeElementsBaseVertex), @function
-GL_PREFIX(DrawRangeElementsBaseVertex):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4616(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4616(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4616(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4616(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DrawRangeElementsBaseVertex), .-GL_PREFIX(DrawRangeElementsBaseVertex)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiDrawElementsBaseVertex)
-       .type   GL_PREFIX(MultiDrawElementsBaseVertex), @function
-GL_PREFIX(MultiDrawElementsBaseVertex):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4624(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4624(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4624(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4624(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiDrawElementsBaseVertex), .-GL_PREFIX(MultiDrawElementsBaseVertex)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PolygonOffsetEXT)
-       .type   GL_PREFIX(PolygonOffsetEXT), @function
-GL_PREFIX(PolygonOffsetEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4632(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    4632(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4632(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    4632(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PolygonOffsetEXT), .-GL_PREFIX(PolygonOffsetEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_580)
-       .type   GL_PREFIX(_dispatch_stub_580), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_580))
-GL_PREFIX(_dispatch_stub_580):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4640(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4640(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4640(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4640(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_580), .-GL_PREFIX(_dispatch_stub_580)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_581)
-       .type   GL_PREFIX(_dispatch_stub_581), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_581))
-GL_PREFIX(_dispatch_stub_581):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4648(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4648(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4648(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4648(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_581), .-GL_PREFIX(_dispatch_stub_581)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_582)
-       .type   GL_PREFIX(_dispatch_stub_582), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_582))
-GL_PREFIX(_dispatch_stub_582):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4656(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4656(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4656(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4656(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_582), .-GL_PREFIX(_dispatch_stub_582)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_583)
-       .type   GL_PREFIX(_dispatch_stub_583), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_583))
-GL_PREFIX(_dispatch_stub_583):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4664(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4664(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4664(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4664(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_583), .-GL_PREFIX(_dispatch_stub_583)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_584)
-       .type   GL_PREFIX(_dispatch_stub_584), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_584))
-GL_PREFIX(_dispatch_stub_584):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4672(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4672(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4672(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4672(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_584), .-GL_PREFIX(_dispatch_stub_584)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_585)
-       .type   GL_PREFIX(_dispatch_stub_585), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_585))
-GL_PREFIX(_dispatch_stub_585):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4680(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4680(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4680(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4680(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_585), .-GL_PREFIX(_dispatch_stub_585)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_586)
-       .type   GL_PREFIX(_dispatch_stub_586), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_586))
-GL_PREFIX(_dispatch_stub_586):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4688(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4688(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4688(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4688(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_586), .-GL_PREFIX(_dispatch_stub_586)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_587)
-       .type   GL_PREFIX(_dispatch_stub_587), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_587))
-GL_PREFIX(_dispatch_stub_587):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4696(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4696(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4696(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4696(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_587), .-GL_PREFIX(_dispatch_stub_587)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorPointerEXT)
-       .type   GL_PREFIX(ColorPointerEXT), @function
-GL_PREFIX(ColorPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4704(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4704(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4704(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4704(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorPointerEXT), .-GL_PREFIX(ColorPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EdgeFlagPointerEXT)
-       .type   GL_PREFIX(EdgeFlagPointerEXT), @function
-GL_PREFIX(EdgeFlagPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4712(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4712(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4712(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4712(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EdgeFlagPointerEXT), .-GL_PREFIX(EdgeFlagPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IndexPointerEXT)
-       .type   GL_PREFIX(IndexPointerEXT), @function
-GL_PREFIX(IndexPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4720(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4720(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4720(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4720(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IndexPointerEXT), .-GL_PREFIX(IndexPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(NormalPointerEXT)
-       .type   GL_PREFIX(NormalPointerEXT), @function
-GL_PREFIX(NormalPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4728(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4728(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4728(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4728(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(NormalPointerEXT), .-GL_PREFIX(NormalPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexCoordPointerEXT)
-       .type   GL_PREFIX(TexCoordPointerEXT), @function
-GL_PREFIX(TexCoordPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4736(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4736(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4736(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4736(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexCoordPointerEXT), .-GL_PREFIX(TexCoordPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexPointerEXT)
-       .type   GL_PREFIX(VertexPointerEXT), @function
-GL_PREFIX(VertexPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4744(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4744(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4744(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4744(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexPointerEXT), .-GL_PREFIX(VertexPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PointParameterfEXT)
-       .type   GL_PREFIX(PointParameterfEXT), @function
-GL_PREFIX(PointParameterfEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4752(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4752(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4752(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    4752(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PointParameterfEXT), .-GL_PREFIX(PointParameterfEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PointParameterfvEXT)
-       .type   GL_PREFIX(PointParameterfvEXT), @function
-GL_PREFIX(PointParameterfvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4760(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4760(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4760(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4760(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PointParameterfvEXT), .-GL_PREFIX(PointParameterfvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LockArraysEXT)
-       .type   GL_PREFIX(LockArraysEXT), @function
-GL_PREFIX(LockArraysEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4768(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4768(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4768(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4768(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LockArraysEXT), .-GL_PREFIX(LockArraysEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(UnlockArraysEXT)
-       .type   GL_PREFIX(UnlockArraysEXT), @function
-GL_PREFIX(UnlockArraysEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4776(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    4776(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4776(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    4776(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(UnlockArraysEXT), .-GL_PREFIX(UnlockArraysEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_598)
-       .type   GL_PREFIX(_dispatch_stub_598), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_598))
-GL_PREFIX(_dispatch_stub_598):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4784(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4784(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4784(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4784(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_598), .-GL_PREFIX(_dispatch_stub_598)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_599)
-       .type   GL_PREFIX(_dispatch_stub_599), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_599))
-GL_PREFIX(_dispatch_stub_599):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4792(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4792(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4792(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    4792(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_599), .-GL_PREFIX(_dispatch_stub_599)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3bEXT)
-       .type   GL_PREFIX(SecondaryColor3bEXT), @function
-GL_PREFIX(SecondaryColor3bEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4800(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4800(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4800(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4800(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3bEXT), .-GL_PREFIX(SecondaryColor3bEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3bvEXT)
-       .type   GL_PREFIX(SecondaryColor3bvEXT), @function
-GL_PREFIX(SecondaryColor3bvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4808(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4808(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4808(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4808(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3bvEXT), .-GL_PREFIX(SecondaryColor3bvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3dEXT)
-       .type   GL_PREFIX(SecondaryColor3dEXT), @function
-GL_PREFIX(SecondaryColor3dEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4816(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    4816(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4816(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    4816(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3dEXT), .-GL_PREFIX(SecondaryColor3dEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3dvEXT)
-       .type   GL_PREFIX(SecondaryColor3dvEXT), @function
-GL_PREFIX(SecondaryColor3dvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4824(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4824(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4824(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4824(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3dvEXT), .-GL_PREFIX(SecondaryColor3dvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3fEXT)
-       .type   GL_PREFIX(SecondaryColor3fEXT), @function
-GL_PREFIX(SecondaryColor3fEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4832(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    4832(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4832(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    4832(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3fEXT), .-GL_PREFIX(SecondaryColor3fEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3fvEXT)
-       .type   GL_PREFIX(SecondaryColor3fvEXT), @function
-GL_PREFIX(SecondaryColor3fvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4840(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4840(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4840(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4840(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3fvEXT), .-GL_PREFIX(SecondaryColor3fvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3iEXT)
-       .type   GL_PREFIX(SecondaryColor3iEXT), @function
-GL_PREFIX(SecondaryColor3iEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4848(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4848(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4848(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4848(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3iEXT), .-GL_PREFIX(SecondaryColor3iEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3ivEXT)
-       .type   GL_PREFIX(SecondaryColor3ivEXT), @function
-GL_PREFIX(SecondaryColor3ivEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4856(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4856(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4856(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4856(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3ivEXT), .-GL_PREFIX(SecondaryColor3ivEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3sEXT)
-       .type   GL_PREFIX(SecondaryColor3sEXT), @function
-GL_PREFIX(SecondaryColor3sEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4864(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4864(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4864(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4864(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3sEXT), .-GL_PREFIX(SecondaryColor3sEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3svEXT)
-       .type   GL_PREFIX(SecondaryColor3svEXT), @function
-GL_PREFIX(SecondaryColor3svEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4872(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4872(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4872(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4872(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3svEXT), .-GL_PREFIX(SecondaryColor3svEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3ubEXT)
-       .type   GL_PREFIX(SecondaryColor3ubEXT), @function
-GL_PREFIX(SecondaryColor3ubEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4880(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4880(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4880(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4880(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3ubEXT), .-GL_PREFIX(SecondaryColor3ubEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3ubvEXT)
-       .type   GL_PREFIX(SecondaryColor3ubvEXT), @function
-GL_PREFIX(SecondaryColor3ubvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4888(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4888(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4888(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4888(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3ubvEXT), .-GL_PREFIX(SecondaryColor3ubvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3uiEXT)
-       .type   GL_PREFIX(SecondaryColor3uiEXT), @function
-GL_PREFIX(SecondaryColor3uiEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4896(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4896(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4896(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4896(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3uiEXT), .-GL_PREFIX(SecondaryColor3uiEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3uivEXT)
-       .type   GL_PREFIX(SecondaryColor3uivEXT), @function
-GL_PREFIX(SecondaryColor3uivEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4904(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4904(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4904(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4904(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3uivEXT), .-GL_PREFIX(SecondaryColor3uivEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3usEXT)
-       .type   GL_PREFIX(SecondaryColor3usEXT), @function
-GL_PREFIX(SecondaryColor3usEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4912(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4912(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4912(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4912(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3usEXT), .-GL_PREFIX(SecondaryColor3usEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColor3usvEXT)
-       .type   GL_PREFIX(SecondaryColor3usvEXT), @function
-GL_PREFIX(SecondaryColor3usvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4920(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4920(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4920(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4920(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColor3usvEXT), .-GL_PREFIX(SecondaryColor3usvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SecondaryColorPointerEXT)
-       .type   GL_PREFIX(SecondaryColorPointerEXT), @function
-GL_PREFIX(SecondaryColorPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4928(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4928(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4928(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4928(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SecondaryColorPointerEXT), .-GL_PREFIX(SecondaryColorPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiDrawArraysEXT)
-       .type   GL_PREFIX(MultiDrawArraysEXT), @function
-GL_PREFIX(MultiDrawArraysEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4936(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4936(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4936(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4936(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiDrawArraysEXT), .-GL_PREFIX(MultiDrawArraysEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(MultiDrawElementsEXT)
-       .type   GL_PREFIX(MultiDrawElementsEXT), @function
-GL_PREFIX(MultiDrawElementsEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4944(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4944(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4944(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4944(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(MultiDrawElementsEXT), .-GL_PREFIX(MultiDrawElementsEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FogCoordPointerEXT)
-       .type   GL_PREFIX(FogCoordPointerEXT), @function
-GL_PREFIX(FogCoordPointerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4952(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4952(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4952(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    4952(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FogCoordPointerEXT), .-GL_PREFIX(FogCoordPointerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FogCoorddEXT)
-       .type   GL_PREFIX(FogCoorddEXT), @function
-GL_PREFIX(FogCoorddEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4960(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    4960(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4960(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    4960(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FogCoorddEXT), .-GL_PREFIX(FogCoorddEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FogCoorddvEXT)
-       .type   GL_PREFIX(FogCoorddvEXT), @function
-GL_PREFIX(FogCoorddvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4968(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4968(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4968(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4968(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FogCoorddvEXT), .-GL_PREFIX(FogCoorddvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FogCoordfEXT)
-       .type   GL_PREFIX(FogCoordfEXT), @function
-GL_PREFIX(FogCoordfEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4976(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    4976(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4976(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $8, %rsp
-       movq    %xmm0, (%rsp)
-       call    _glapi_get_dispatch
-       movq    (%rsp), %xmm0
-       addq    $8, %rsp
-       movq    4976(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FogCoordfEXT), .-GL_PREFIX(FogCoordfEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FogCoordfvEXT)
-       .type   GL_PREFIX(FogCoordfvEXT), @function
-GL_PREFIX(FogCoordfvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4984(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4984(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4984(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4984(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FogCoordfvEXT), .-GL_PREFIX(FogCoordfvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_624)
-       .type   GL_PREFIX(_dispatch_stub_624), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_624))
-GL_PREFIX(_dispatch_stub_624):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    4992(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    4992(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    4992(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    4992(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_624), .-GL_PREFIX(_dispatch_stub_624)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BlendFuncSeparateEXT)
-       .type   GL_PREFIX(BlendFuncSeparateEXT), @function
-GL_PREFIX(BlendFuncSeparateEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5000(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5000(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5000(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5000(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BlendFuncSeparateEXT), .-GL_PREFIX(BlendFuncSeparateEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FlushVertexArrayRangeNV)
-       .type   GL_PREFIX(FlushVertexArrayRangeNV), @function
-GL_PREFIX(FlushVertexArrayRangeNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5008(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    5008(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5008(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    5008(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FlushVertexArrayRangeNV), .-GL_PREFIX(FlushVertexArrayRangeNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexArrayRangeNV)
-       .type   GL_PREFIX(VertexArrayRangeNV), @function
-GL_PREFIX(VertexArrayRangeNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5016(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5016(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5016(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5016(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexArrayRangeNV), .-GL_PREFIX(VertexArrayRangeNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CombinerInputNV)
-       .type   GL_PREFIX(CombinerInputNV), @function
-GL_PREFIX(CombinerInputNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5024(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5024(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5024(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5024(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CombinerInputNV), .-GL_PREFIX(CombinerInputNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CombinerOutputNV)
-       .type   GL_PREFIX(CombinerOutputNV), @function
-GL_PREFIX(CombinerOutputNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5032(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5032(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5032(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5032(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CombinerOutputNV), .-GL_PREFIX(CombinerOutputNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CombinerParameterfNV)
-       .type   GL_PREFIX(CombinerParameterfNV), @function
-GL_PREFIX(CombinerParameterfNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5040(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5040(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5040(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5040(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CombinerParameterfNV), .-GL_PREFIX(CombinerParameterfNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CombinerParameterfvNV)
-       .type   GL_PREFIX(CombinerParameterfvNV), @function
-GL_PREFIX(CombinerParameterfvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5048(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5048(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5048(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5048(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CombinerParameterfvNV), .-GL_PREFIX(CombinerParameterfvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CombinerParameteriNV)
-       .type   GL_PREFIX(CombinerParameteriNV), @function
-GL_PREFIX(CombinerParameteriNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5056(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5056(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5056(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5056(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CombinerParameteriNV), .-GL_PREFIX(CombinerParameteriNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CombinerParameterivNV)
-       .type   GL_PREFIX(CombinerParameterivNV), @function
-GL_PREFIX(CombinerParameterivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5064(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5064(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5064(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5064(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CombinerParameterivNV), .-GL_PREFIX(CombinerParameterivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FinalCombinerInputNV)
-       .type   GL_PREFIX(FinalCombinerInputNV), @function
-GL_PREFIX(FinalCombinerInputNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5072(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5072(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5072(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5072(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FinalCombinerInputNV), .-GL_PREFIX(FinalCombinerInputNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetCombinerInputParameterfvNV)
-       .type   GL_PREFIX(GetCombinerInputParameterfvNV), @function
-GL_PREFIX(GetCombinerInputParameterfvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5080(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5080(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5080(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5080(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetCombinerInputParameterfvNV), .-GL_PREFIX(GetCombinerInputParameterfvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetCombinerInputParameterivNV)
-       .type   GL_PREFIX(GetCombinerInputParameterivNV), @function
-GL_PREFIX(GetCombinerInputParameterivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5088(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5088(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5088(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5088(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetCombinerInputParameterivNV), .-GL_PREFIX(GetCombinerInputParameterivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetCombinerOutputParameterfvNV)
-       .type   GL_PREFIX(GetCombinerOutputParameterfvNV), @function
-GL_PREFIX(GetCombinerOutputParameterfvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5096(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5096(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5096(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5096(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetCombinerOutputParameterfvNV), .-GL_PREFIX(GetCombinerOutputParameterfvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetCombinerOutputParameterivNV)
-       .type   GL_PREFIX(GetCombinerOutputParameterivNV), @function
-GL_PREFIX(GetCombinerOutputParameterivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5104(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5104(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5104(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5104(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetCombinerOutputParameterivNV), .-GL_PREFIX(GetCombinerOutputParameterivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetFinalCombinerInputParameterfvNV)
-       .type   GL_PREFIX(GetFinalCombinerInputParameterfvNV), @function
-GL_PREFIX(GetFinalCombinerInputParameterfvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5112(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5112(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5112(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5112(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetFinalCombinerInputParameterfvNV), .-GL_PREFIX(GetFinalCombinerInputParameterfvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetFinalCombinerInputParameterivNV)
-       .type   GL_PREFIX(GetFinalCombinerInputParameterivNV), @function
-GL_PREFIX(GetFinalCombinerInputParameterivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5120(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5120(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5120(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5120(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetFinalCombinerInputParameterivNV), .-GL_PREFIX(GetFinalCombinerInputParameterivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ResizeBuffersMESA)
-       .type   GL_PREFIX(ResizeBuffersMESA), @function
-GL_PREFIX(ResizeBuffersMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5128(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    5128(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5128(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    5128(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ResizeBuffersMESA), .-GL_PREFIX(ResizeBuffersMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2dMESA)
-       .type   GL_PREFIX(WindowPos2dMESA), @function
-GL_PREFIX(WindowPos2dMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5136(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5136(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5136(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5136(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2dMESA), .-GL_PREFIX(WindowPos2dMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2dvMESA)
-       .type   GL_PREFIX(WindowPos2dvMESA), @function
-GL_PREFIX(WindowPos2dvMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5144(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5144(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5144(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5144(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2dvMESA), .-GL_PREFIX(WindowPos2dvMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2fMESA)
-       .type   GL_PREFIX(WindowPos2fMESA), @function
-GL_PREFIX(WindowPos2fMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5152(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5152(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5152(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5152(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2fMESA), .-GL_PREFIX(WindowPos2fMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2fvMESA)
-       .type   GL_PREFIX(WindowPos2fvMESA), @function
-GL_PREFIX(WindowPos2fvMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5160(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5160(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5160(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5160(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2fvMESA), .-GL_PREFIX(WindowPos2fvMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2iMESA)
-       .type   GL_PREFIX(WindowPos2iMESA), @function
-GL_PREFIX(WindowPos2iMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5168(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5168(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5168(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5168(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2iMESA), .-GL_PREFIX(WindowPos2iMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2ivMESA)
-       .type   GL_PREFIX(WindowPos2ivMESA), @function
-GL_PREFIX(WindowPos2ivMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5176(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5176(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5176(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5176(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2ivMESA), .-GL_PREFIX(WindowPos2ivMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2sMESA)
-       .type   GL_PREFIX(WindowPos2sMESA), @function
-GL_PREFIX(WindowPos2sMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5184(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5184(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5184(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5184(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2sMESA), .-GL_PREFIX(WindowPos2sMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos2svMESA)
-       .type   GL_PREFIX(WindowPos2svMESA), @function
-GL_PREFIX(WindowPos2svMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5192(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5192(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5192(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5192(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos2svMESA), .-GL_PREFIX(WindowPos2svMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3dMESA)
-       .type   GL_PREFIX(WindowPos3dMESA), @function
-GL_PREFIX(WindowPos3dMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5200(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5200(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5200(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5200(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3dMESA), .-GL_PREFIX(WindowPos3dMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3dvMESA)
-       .type   GL_PREFIX(WindowPos3dvMESA), @function
-GL_PREFIX(WindowPos3dvMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5208(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5208(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5208(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5208(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3dvMESA), .-GL_PREFIX(WindowPos3dvMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3fMESA)
-       .type   GL_PREFIX(WindowPos3fMESA), @function
-GL_PREFIX(WindowPos3fMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5216(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5216(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5216(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $24, %rsp
-       movq    5216(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3fMESA), .-GL_PREFIX(WindowPos3fMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3fvMESA)
-       .type   GL_PREFIX(WindowPos3fvMESA), @function
-GL_PREFIX(WindowPos3fvMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5224(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5224(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5224(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5224(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3fvMESA), .-GL_PREFIX(WindowPos3fvMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3iMESA)
-       .type   GL_PREFIX(WindowPos3iMESA), @function
-GL_PREFIX(WindowPos3iMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5232(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5232(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5232(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5232(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3iMESA), .-GL_PREFIX(WindowPos3iMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3ivMESA)
-       .type   GL_PREFIX(WindowPos3ivMESA), @function
-GL_PREFIX(WindowPos3ivMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5240(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5240(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5240(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5240(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3ivMESA), .-GL_PREFIX(WindowPos3ivMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3sMESA)
-       .type   GL_PREFIX(WindowPos3sMESA), @function
-GL_PREFIX(WindowPos3sMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5248(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5248(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5248(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5248(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3sMESA), .-GL_PREFIX(WindowPos3sMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos3svMESA)
-       .type   GL_PREFIX(WindowPos3svMESA), @function
-GL_PREFIX(WindowPos3svMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5256(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5256(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5256(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5256(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos3svMESA), .-GL_PREFIX(WindowPos3svMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4dMESA)
-       .type   GL_PREFIX(WindowPos4dMESA), @function
-GL_PREFIX(WindowPos4dMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5264(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    5264(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5264(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    5264(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4dMESA), .-GL_PREFIX(WindowPos4dMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4dvMESA)
-       .type   GL_PREFIX(WindowPos4dvMESA), @function
-GL_PREFIX(WindowPos4dvMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5272(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5272(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5272(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5272(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4dvMESA), .-GL_PREFIX(WindowPos4dvMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4fMESA)
-       .type   GL_PREFIX(WindowPos4fMESA), @function
-GL_PREFIX(WindowPos4fMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5280(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    5280(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5280(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %xmm0, (%rsp)
-       movq    %xmm1, 8(%rsp)
-       movq    %xmm2, 16(%rsp)
-       movq    %xmm3, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm3
-       movq    16(%rsp), %xmm2
-       movq    8(%rsp), %xmm1
-       movq    (%rsp), %xmm0
-       addq    $40, %rsp
-       movq    5280(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4fMESA), .-GL_PREFIX(WindowPos4fMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4fvMESA)
-       .type   GL_PREFIX(WindowPos4fvMESA), @function
-GL_PREFIX(WindowPos4fvMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5288(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5288(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5288(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5288(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4fvMESA), .-GL_PREFIX(WindowPos4fvMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4iMESA)
-       .type   GL_PREFIX(WindowPos4iMESA), @function
-GL_PREFIX(WindowPos4iMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5296(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5296(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5296(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5296(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4iMESA), .-GL_PREFIX(WindowPos4iMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4ivMESA)
-       .type   GL_PREFIX(WindowPos4ivMESA), @function
-GL_PREFIX(WindowPos4ivMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5304(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5304(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5304(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5304(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4ivMESA), .-GL_PREFIX(WindowPos4ivMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4sMESA)
-       .type   GL_PREFIX(WindowPos4sMESA), @function
-GL_PREFIX(WindowPos4sMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5312(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5312(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5312(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5312(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4sMESA), .-GL_PREFIX(WindowPos4sMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(WindowPos4svMESA)
-       .type   GL_PREFIX(WindowPos4svMESA), @function
-GL_PREFIX(WindowPos4svMESA):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5320(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5320(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5320(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5320(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(WindowPos4svMESA), .-GL_PREFIX(WindowPos4svMESA)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_666)
-       .type   GL_PREFIX(_dispatch_stub_666), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_666))
-GL_PREFIX(_dispatch_stub_666):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5328(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5328(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5328(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5328(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_666), .-GL_PREFIX(_dispatch_stub_666)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_667)
-       .type   GL_PREFIX(_dispatch_stub_667), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_667))
-GL_PREFIX(_dispatch_stub_667):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5336(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5336(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5336(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5336(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_667), .-GL_PREFIX(_dispatch_stub_667)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_668)
-       .type   GL_PREFIX(_dispatch_stub_668), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_668))
-GL_PREFIX(_dispatch_stub_668):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5344(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5344(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5344(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5344(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_668), .-GL_PREFIX(_dispatch_stub_668)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_669)
-       .type   GL_PREFIX(_dispatch_stub_669), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_669))
-GL_PREFIX(_dispatch_stub_669):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5352(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5352(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5352(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5352(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_669), .-GL_PREFIX(_dispatch_stub_669)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_670)
-       .type   GL_PREFIX(_dispatch_stub_670), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_670))
-GL_PREFIX(_dispatch_stub_670):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5360(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5360(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5360(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5360(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_670), .-GL_PREFIX(_dispatch_stub_670)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_671)
-       .type   GL_PREFIX(_dispatch_stub_671), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_671))
-GL_PREFIX(_dispatch_stub_671):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5368(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5368(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5368(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5368(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_671), .-GL_PREFIX(_dispatch_stub_671)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_672)
-       .type   GL_PREFIX(_dispatch_stub_672), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_672))
-GL_PREFIX(_dispatch_stub_672):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5376(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5376(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5376(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5376(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_672), .-GL_PREFIX(_dispatch_stub_672)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_673)
-       .type   GL_PREFIX(_dispatch_stub_673), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_673))
-GL_PREFIX(_dispatch_stub_673):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5384(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5384(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5384(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5384(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_673), .-GL_PREFIX(_dispatch_stub_673)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_674)
-       .type   GL_PREFIX(_dispatch_stub_674), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_674))
-GL_PREFIX(_dispatch_stub_674):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5392(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5392(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5392(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5392(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_674), .-GL_PREFIX(_dispatch_stub_674)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AreProgramsResidentNV)
-       .type   GL_PREFIX(AreProgramsResidentNV), @function
-GL_PREFIX(AreProgramsResidentNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5400(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5400(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5400(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5400(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AreProgramsResidentNV), .-GL_PREFIX(AreProgramsResidentNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindProgramNV)
-       .type   GL_PREFIX(BindProgramNV), @function
-GL_PREFIX(BindProgramNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5408(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5408(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5408(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5408(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindProgramNV), .-GL_PREFIX(BindProgramNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteProgramsNV)
-       .type   GL_PREFIX(DeleteProgramsNV), @function
-GL_PREFIX(DeleteProgramsNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5416(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5416(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5416(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5416(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteProgramsNV), .-GL_PREFIX(DeleteProgramsNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ExecuteProgramNV)
-       .type   GL_PREFIX(ExecuteProgramNV), @function
-GL_PREFIX(ExecuteProgramNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5424(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5424(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5424(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5424(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ExecuteProgramNV), .-GL_PREFIX(ExecuteProgramNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenProgramsNV)
-       .type   GL_PREFIX(GenProgramsNV), @function
-GL_PREFIX(GenProgramsNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5432(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5432(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5432(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5432(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenProgramsNV), .-GL_PREFIX(GenProgramsNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramParameterdvNV)
-       .type   GL_PREFIX(GetProgramParameterdvNV), @function
-GL_PREFIX(GetProgramParameterdvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5440(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5440(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5440(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5440(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramParameterdvNV), .-GL_PREFIX(GetProgramParameterdvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramParameterfvNV)
-       .type   GL_PREFIX(GetProgramParameterfvNV), @function
-GL_PREFIX(GetProgramParameterfvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5448(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5448(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5448(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5448(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramParameterfvNV), .-GL_PREFIX(GetProgramParameterfvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramStringNV)
-       .type   GL_PREFIX(GetProgramStringNV), @function
-GL_PREFIX(GetProgramStringNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5456(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5456(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5456(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5456(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramStringNV), .-GL_PREFIX(GetProgramStringNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramivNV)
-       .type   GL_PREFIX(GetProgramivNV), @function
-GL_PREFIX(GetProgramivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5464(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5464(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5464(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5464(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramivNV), .-GL_PREFIX(GetProgramivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTrackMatrixivNV)
-       .type   GL_PREFIX(GetTrackMatrixivNV), @function
-GL_PREFIX(GetTrackMatrixivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5472(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5472(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5472(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5472(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTrackMatrixivNV), .-GL_PREFIX(GetTrackMatrixivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetVertexAttribPointervNV)
-       .type   GL_PREFIX(GetVertexAttribPointervNV), @function
-GL_PREFIX(GetVertexAttribPointervNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5480(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5480(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5480(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5480(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetVertexAttribPointervNV), .-GL_PREFIX(GetVertexAttribPointervNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetVertexAttribdvNV)
-       .type   GL_PREFIX(GetVertexAttribdvNV), @function
-GL_PREFIX(GetVertexAttribdvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5488(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5488(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5488(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5488(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetVertexAttribdvNV), .-GL_PREFIX(GetVertexAttribdvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetVertexAttribfvNV)
-       .type   GL_PREFIX(GetVertexAttribfvNV), @function
-GL_PREFIX(GetVertexAttribfvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5496(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5496(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5496(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5496(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetVertexAttribfvNV), .-GL_PREFIX(GetVertexAttribfvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetVertexAttribivNV)
-       .type   GL_PREFIX(GetVertexAttribivNV), @function
-GL_PREFIX(GetVertexAttribivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5504(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5504(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5504(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5504(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetVertexAttribivNV), .-GL_PREFIX(GetVertexAttribivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsProgramNV)
-       .type   GL_PREFIX(IsProgramNV), @function
-GL_PREFIX(IsProgramNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5512(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5512(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5512(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5512(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsProgramNV), .-GL_PREFIX(IsProgramNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(LoadProgramNV)
-       .type   GL_PREFIX(LoadProgramNV), @function
-GL_PREFIX(LoadProgramNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5520(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5520(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5520(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5520(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(LoadProgramNV), .-GL_PREFIX(LoadProgramNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramParameters4dvNV)
-       .type   GL_PREFIX(ProgramParameters4dvNV), @function
-GL_PREFIX(ProgramParameters4dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5528(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5528(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5528(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5528(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramParameters4dvNV), .-GL_PREFIX(ProgramParameters4dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramParameters4fvNV)
-       .type   GL_PREFIX(ProgramParameters4fvNV), @function
-GL_PREFIX(ProgramParameters4fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5536(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5536(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5536(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5536(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramParameters4fvNV), .-GL_PREFIX(ProgramParameters4fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RequestResidentProgramsNV)
-       .type   GL_PREFIX(RequestResidentProgramsNV), @function
-GL_PREFIX(RequestResidentProgramsNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5544(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5544(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5544(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5544(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RequestResidentProgramsNV), .-GL_PREFIX(RequestResidentProgramsNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TrackMatrixNV)
-       .type   GL_PREFIX(TrackMatrixNV), @function
-GL_PREFIX(TrackMatrixNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5552(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5552(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5552(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5552(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TrackMatrixNV), .-GL_PREFIX(TrackMatrixNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1dNV)
-       .type   GL_PREFIX(VertexAttrib1dNV), @function
-GL_PREFIX(VertexAttrib1dNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5560(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5560(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5560(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5560(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1dNV), .-GL_PREFIX(VertexAttrib1dNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1dvNV)
-       .type   GL_PREFIX(VertexAttrib1dvNV), @function
-GL_PREFIX(VertexAttrib1dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5568(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5568(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5568(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5568(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1dvNV), .-GL_PREFIX(VertexAttrib1dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1fNV)
-       .type   GL_PREFIX(VertexAttrib1fNV), @function
-GL_PREFIX(VertexAttrib1fNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5576(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5576(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5576(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       call    _glapi_get_dispatch
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5576(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1fNV), .-GL_PREFIX(VertexAttrib1fNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1fvNV)
-       .type   GL_PREFIX(VertexAttrib1fvNV), @function
-GL_PREFIX(VertexAttrib1fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5584(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5584(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5584(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5584(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1fvNV), .-GL_PREFIX(VertexAttrib1fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1sNV)
-       .type   GL_PREFIX(VertexAttrib1sNV), @function
-GL_PREFIX(VertexAttrib1sNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5592(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5592(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5592(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5592(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1sNV), .-GL_PREFIX(VertexAttrib1sNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib1svNV)
-       .type   GL_PREFIX(VertexAttrib1svNV), @function
-GL_PREFIX(VertexAttrib1svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5600(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5600(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5600(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5600(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib1svNV), .-GL_PREFIX(VertexAttrib1svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2dNV)
-       .type   GL_PREFIX(VertexAttrib2dNV), @function
-GL_PREFIX(VertexAttrib2dNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5608(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5608(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5608(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5608(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2dNV), .-GL_PREFIX(VertexAttrib2dNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2dvNV)
-       .type   GL_PREFIX(VertexAttrib2dvNV), @function
-GL_PREFIX(VertexAttrib2dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5616(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5616(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5616(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5616(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2dvNV), .-GL_PREFIX(VertexAttrib2dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2fNV)
-       .type   GL_PREFIX(VertexAttrib2fNV), @function
-GL_PREFIX(VertexAttrib2fNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5624(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5624(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5624(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $24, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       call    _glapi_get_dispatch
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $24, %rsp
-       movq    5624(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2fNV), .-GL_PREFIX(VertexAttrib2fNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2fvNV)
-       .type   GL_PREFIX(VertexAttrib2fvNV), @function
-GL_PREFIX(VertexAttrib2fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5632(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5632(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5632(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5632(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2fvNV), .-GL_PREFIX(VertexAttrib2fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2sNV)
-       .type   GL_PREFIX(VertexAttrib2sNV), @function
-GL_PREFIX(VertexAttrib2sNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5640(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5640(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5640(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5640(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2sNV), .-GL_PREFIX(VertexAttrib2sNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib2svNV)
-       .type   GL_PREFIX(VertexAttrib2svNV), @function
-GL_PREFIX(VertexAttrib2svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5648(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5648(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5648(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5648(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib2svNV), .-GL_PREFIX(VertexAttrib2svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3dNV)
-       .type   GL_PREFIX(VertexAttrib3dNV), @function
-GL_PREFIX(VertexAttrib3dNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5656(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5656(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5656(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5656(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3dNV), .-GL_PREFIX(VertexAttrib3dNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3dvNV)
-       .type   GL_PREFIX(VertexAttrib3dvNV), @function
-GL_PREFIX(VertexAttrib3dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5664(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5664(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5664(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5664(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3dvNV), .-GL_PREFIX(VertexAttrib3dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3fNV)
-       .type   GL_PREFIX(VertexAttrib3fNV), @function
-GL_PREFIX(VertexAttrib3fNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5672(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5672(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5672(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       call    _glapi_get_dispatch
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5672(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3fNV), .-GL_PREFIX(VertexAttrib3fNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3fvNV)
-       .type   GL_PREFIX(VertexAttrib3fvNV), @function
-GL_PREFIX(VertexAttrib3fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5680(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5680(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5680(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5680(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3fvNV), .-GL_PREFIX(VertexAttrib3fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3sNV)
-       .type   GL_PREFIX(VertexAttrib3sNV), @function
-GL_PREFIX(VertexAttrib3sNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5688(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5688(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5688(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5688(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3sNV), .-GL_PREFIX(VertexAttrib3sNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib3svNV)
-       .type   GL_PREFIX(VertexAttrib3svNV), @function
-GL_PREFIX(VertexAttrib3svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5696(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5696(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5696(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5696(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib3svNV), .-GL_PREFIX(VertexAttrib3svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4dNV)
-       .type   GL_PREFIX(VertexAttrib4dNV), @function
-GL_PREFIX(VertexAttrib4dNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5704(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5704(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5704(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _glapi_get_dispatch
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5704(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4dNV), .-GL_PREFIX(VertexAttrib4dNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4dvNV)
-       .type   GL_PREFIX(VertexAttrib4dvNV), @function
-GL_PREFIX(VertexAttrib4dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5712(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5712(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5712(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5712(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4dvNV), .-GL_PREFIX(VertexAttrib4dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4fNV)
-       .type   GL_PREFIX(VertexAttrib4fNV), @function
-GL_PREFIX(VertexAttrib4fNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5720(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5720(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5720(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $40, %rsp
-       movq    %rdi, (%rsp)
-       movq    %xmm0, 8(%rsp)
-       movq    %xmm1, 16(%rsp)
-       movq    %xmm2, 24(%rsp)
-       movq    %xmm3, 32(%rsp)
-       call    _glapi_get_dispatch
-       movq    32(%rsp), %xmm3
-       movq    24(%rsp), %xmm2
-       movq    16(%rsp), %xmm1
-       movq    8(%rsp), %xmm0
-       movq    (%rsp), %rdi
-       addq    $40, %rsp
-       movq    5720(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4fNV), .-GL_PREFIX(VertexAttrib4fNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4fvNV)
-       .type   GL_PREFIX(VertexAttrib4fvNV), @function
-GL_PREFIX(VertexAttrib4fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5728(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5728(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5728(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5728(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4fvNV), .-GL_PREFIX(VertexAttrib4fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4sNV)
-       .type   GL_PREFIX(VertexAttrib4sNV), @function
-GL_PREFIX(VertexAttrib4sNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5736(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5736(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5736(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5736(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4sNV), .-GL_PREFIX(VertexAttrib4sNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4svNV)
-       .type   GL_PREFIX(VertexAttrib4svNV), @function
-GL_PREFIX(VertexAttrib4svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5744(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5744(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5744(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5744(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4svNV), .-GL_PREFIX(VertexAttrib4svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4ubNV)
-       .type   GL_PREFIX(VertexAttrib4ubNV), @function
-GL_PREFIX(VertexAttrib4ubNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5752(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5752(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5752(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5752(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4ubNV), .-GL_PREFIX(VertexAttrib4ubNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttrib4ubvNV)
-       .type   GL_PREFIX(VertexAttrib4ubvNV), @function
-GL_PREFIX(VertexAttrib4ubvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5760(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5760(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5760(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5760(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttrib4ubvNV), .-GL_PREFIX(VertexAttrib4ubvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribPointerNV)
-       .type   GL_PREFIX(VertexAttribPointerNV), @function
-GL_PREFIX(VertexAttribPointerNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5768(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5768(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5768(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5768(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribPointerNV), .-GL_PREFIX(VertexAttribPointerNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs1dvNV)
-       .type   GL_PREFIX(VertexAttribs1dvNV), @function
-GL_PREFIX(VertexAttribs1dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5776(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5776(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5776(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5776(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs1dvNV), .-GL_PREFIX(VertexAttribs1dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs1fvNV)
-       .type   GL_PREFIX(VertexAttribs1fvNV), @function
-GL_PREFIX(VertexAttribs1fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5784(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5784(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5784(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5784(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs1fvNV), .-GL_PREFIX(VertexAttribs1fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs1svNV)
-       .type   GL_PREFIX(VertexAttribs1svNV), @function
-GL_PREFIX(VertexAttribs1svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5792(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5792(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5792(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5792(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs1svNV), .-GL_PREFIX(VertexAttribs1svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs2dvNV)
-       .type   GL_PREFIX(VertexAttribs2dvNV), @function
-GL_PREFIX(VertexAttribs2dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5800(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5800(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5800(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5800(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs2dvNV), .-GL_PREFIX(VertexAttribs2dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs2fvNV)
-       .type   GL_PREFIX(VertexAttribs2fvNV), @function
-GL_PREFIX(VertexAttribs2fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5808(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5808(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5808(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5808(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs2fvNV), .-GL_PREFIX(VertexAttribs2fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs2svNV)
-       .type   GL_PREFIX(VertexAttribs2svNV), @function
-GL_PREFIX(VertexAttribs2svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5816(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5816(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5816(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5816(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs2svNV), .-GL_PREFIX(VertexAttribs2svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs3dvNV)
-       .type   GL_PREFIX(VertexAttribs3dvNV), @function
-GL_PREFIX(VertexAttribs3dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5824(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5824(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5824(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5824(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs3dvNV), .-GL_PREFIX(VertexAttribs3dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs3fvNV)
-       .type   GL_PREFIX(VertexAttribs3fvNV), @function
-GL_PREFIX(VertexAttribs3fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5832(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5832(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5832(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5832(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs3fvNV), .-GL_PREFIX(VertexAttribs3fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs3svNV)
-       .type   GL_PREFIX(VertexAttribs3svNV), @function
-GL_PREFIX(VertexAttribs3svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5840(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5840(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5840(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5840(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs3svNV), .-GL_PREFIX(VertexAttribs3svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs4dvNV)
-       .type   GL_PREFIX(VertexAttribs4dvNV), @function
-GL_PREFIX(VertexAttribs4dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5848(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5848(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5848(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5848(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs4dvNV), .-GL_PREFIX(VertexAttribs4dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs4fvNV)
-       .type   GL_PREFIX(VertexAttribs4fvNV), @function
-GL_PREFIX(VertexAttribs4fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5856(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5856(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5856(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5856(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs4fvNV), .-GL_PREFIX(VertexAttribs4fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs4svNV)
-       .type   GL_PREFIX(VertexAttribs4svNV), @function
-GL_PREFIX(VertexAttribs4svNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5864(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5864(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5864(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5864(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs4svNV), .-GL_PREFIX(VertexAttribs4svNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(VertexAttribs4ubvNV)
-       .type   GL_PREFIX(VertexAttribs4ubvNV), @function
-GL_PREFIX(VertexAttribs4ubvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5872(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5872(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5872(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5872(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(VertexAttribs4ubvNV), .-GL_PREFIX(VertexAttribs4ubvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexBumpParameterfvATI)
-       .type   GL_PREFIX(GetTexBumpParameterfvATI), @function
-GL_PREFIX(GetTexBumpParameterfvATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5880(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5880(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5880(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5880(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexBumpParameterfvATI), .-GL_PREFIX(GetTexBumpParameterfvATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTexBumpParameterivATI)
-       .type   GL_PREFIX(GetTexBumpParameterivATI), @function
-GL_PREFIX(GetTexBumpParameterivATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5888(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5888(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5888(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5888(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTexBumpParameterivATI), .-GL_PREFIX(GetTexBumpParameterivATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexBumpParameterfvATI)
-       .type   GL_PREFIX(TexBumpParameterfvATI), @function
-GL_PREFIX(TexBumpParameterfvATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5896(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5896(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5896(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5896(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexBumpParameterfvATI), .-GL_PREFIX(TexBumpParameterfvATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TexBumpParameterivATI)
-       .type   GL_PREFIX(TexBumpParameterivATI), @function
-GL_PREFIX(TexBumpParameterivATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5904(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5904(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5904(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    5904(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TexBumpParameterivATI), .-GL_PREFIX(TexBumpParameterivATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AlphaFragmentOp1ATI)
-       .type   GL_PREFIX(AlphaFragmentOp1ATI), @function
-GL_PREFIX(AlphaFragmentOp1ATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5912(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5912(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5912(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5912(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AlphaFragmentOp1ATI), .-GL_PREFIX(AlphaFragmentOp1ATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AlphaFragmentOp2ATI)
-       .type   GL_PREFIX(AlphaFragmentOp2ATI), @function
-GL_PREFIX(AlphaFragmentOp2ATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5920(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5920(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5920(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5920(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AlphaFragmentOp2ATI), .-GL_PREFIX(AlphaFragmentOp2ATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(AlphaFragmentOp3ATI)
-       .type   GL_PREFIX(AlphaFragmentOp3ATI), @function
-GL_PREFIX(AlphaFragmentOp3ATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5928(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5928(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5928(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5928(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(AlphaFragmentOp3ATI), .-GL_PREFIX(AlphaFragmentOp3ATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BeginFragmentShaderATI)
-       .type   GL_PREFIX(BeginFragmentShaderATI), @function
-GL_PREFIX(BeginFragmentShaderATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5936(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    5936(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5936(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    5936(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BeginFragmentShaderATI), .-GL_PREFIX(BeginFragmentShaderATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindFragmentShaderATI)
-       .type   GL_PREFIX(BindFragmentShaderATI), @function
-GL_PREFIX(BindFragmentShaderATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5944(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5944(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5944(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5944(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindFragmentShaderATI), .-GL_PREFIX(BindFragmentShaderATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorFragmentOp1ATI)
-       .type   GL_PREFIX(ColorFragmentOp1ATI), @function
-GL_PREFIX(ColorFragmentOp1ATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5952(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5952(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5952(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5952(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorFragmentOp1ATI), .-GL_PREFIX(ColorFragmentOp1ATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorFragmentOp2ATI)
-       .type   GL_PREFIX(ColorFragmentOp2ATI), @function
-GL_PREFIX(ColorFragmentOp2ATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5960(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5960(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5960(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5960(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorFragmentOp2ATI), .-GL_PREFIX(ColorFragmentOp2ATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorFragmentOp3ATI)
-       .type   GL_PREFIX(ColorFragmentOp3ATI), @function
-GL_PREFIX(ColorFragmentOp3ATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5968(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5968(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5968(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    5968(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorFragmentOp3ATI), .-GL_PREFIX(ColorFragmentOp3ATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteFragmentShaderATI)
-       .type   GL_PREFIX(DeleteFragmentShaderATI), @function
-GL_PREFIX(DeleteFragmentShaderATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5976(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5976(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5976(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5976(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteFragmentShaderATI), .-GL_PREFIX(DeleteFragmentShaderATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EndFragmentShaderATI)
-       .type   GL_PREFIX(EndFragmentShaderATI), @function
-GL_PREFIX(EndFragmentShaderATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5984(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    5984(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5984(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    5984(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EndFragmentShaderATI), .-GL_PREFIX(EndFragmentShaderATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenFragmentShadersATI)
-       .type   GL_PREFIX(GenFragmentShadersATI), @function
-GL_PREFIX(GenFragmentShadersATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    5992(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    5992(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    5992(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    5992(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenFragmentShadersATI), .-GL_PREFIX(GenFragmentShadersATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PassTexCoordATI)
-       .type   GL_PREFIX(PassTexCoordATI), @function
-GL_PREFIX(PassTexCoordATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6000(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6000(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6000(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6000(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PassTexCoordATI), .-GL_PREFIX(PassTexCoordATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SampleMapATI)
-       .type   GL_PREFIX(SampleMapATI), @function
-GL_PREFIX(SampleMapATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6008(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6008(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6008(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6008(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SampleMapATI), .-GL_PREFIX(SampleMapATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(SetFragmentShaderConstantATI)
-       .type   GL_PREFIX(SetFragmentShaderConstantATI), @function
-GL_PREFIX(SetFragmentShaderConstantATI):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6016(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6016(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6016(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6016(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(SetFragmentShaderConstantATI), .-GL_PREFIX(SetFragmentShaderConstantATI)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PointParameteriNV)
-       .type   GL_PREFIX(PointParameteriNV), @function
-GL_PREFIX(PointParameteriNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6024(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6024(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6024(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6024(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PointParameteriNV), .-GL_PREFIX(PointParameteriNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(PointParameterivNV)
-       .type   GL_PREFIX(PointParameterivNV), @function
-GL_PREFIX(PointParameterivNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6032(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6032(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6032(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6032(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(PointParameterivNV), .-GL_PREFIX(PointParameterivNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_755)
-       .type   GL_PREFIX(_dispatch_stub_755), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_755))
-GL_PREFIX(_dispatch_stub_755):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6040(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6040(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6040(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6040(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_755), .-GL_PREFIX(_dispatch_stub_755)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_756)
-       .type   GL_PREFIX(_dispatch_stub_756), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_756))
-GL_PREFIX(_dispatch_stub_756):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6048(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6048(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6048(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6048(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_756), .-GL_PREFIX(_dispatch_stub_756)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_757)
-       .type   GL_PREFIX(_dispatch_stub_757), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_757))
-GL_PREFIX(_dispatch_stub_757):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6056(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6056(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6056(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6056(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_757), .-GL_PREFIX(_dispatch_stub_757)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_758)
-       .type   GL_PREFIX(_dispatch_stub_758), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_758))
-GL_PREFIX(_dispatch_stub_758):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6064(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6064(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6064(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6064(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_758), .-GL_PREFIX(_dispatch_stub_758)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_759)
-       .type   GL_PREFIX(_dispatch_stub_759), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_759))
-GL_PREFIX(_dispatch_stub_759):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6072(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6072(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6072(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6072(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_759), .-GL_PREFIX(_dispatch_stub_759)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramNamedParameterdvNV)
-       .type   GL_PREFIX(GetProgramNamedParameterdvNV), @function
-GL_PREFIX(GetProgramNamedParameterdvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6080(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6080(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6080(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6080(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramNamedParameterdvNV), .-GL_PREFIX(GetProgramNamedParameterdvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetProgramNamedParameterfvNV)
-       .type   GL_PREFIX(GetProgramNamedParameterfvNV), @function
-GL_PREFIX(GetProgramNamedParameterfvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6088(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6088(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6088(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6088(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetProgramNamedParameterfvNV), .-GL_PREFIX(GetProgramNamedParameterfvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramNamedParameter4dNV)
-       .type   GL_PREFIX(ProgramNamedParameter4dNV), @function
-GL_PREFIX(ProgramNamedParameter4dNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6096(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %rdx, 16(%rsp)
-       movq    %xmm0, 24(%rsp)
-       movq    %xmm1, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %xmm1
-       movq    24(%rsp), %xmm0
-       movq    16(%rsp), %rdx
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    6096(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6096(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %rdx, 16(%rsp)
-       movq    %xmm0, 24(%rsp)
-       movq    %xmm1, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       call    _glapi_get_dispatch
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %xmm1
-       movq    24(%rsp), %xmm0
-       movq    16(%rsp), %rdx
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    6096(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramNamedParameter4dNV), .-GL_PREFIX(ProgramNamedParameter4dNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramNamedParameter4dvNV)
-       .type   GL_PREFIX(ProgramNamedParameter4dvNV), @function
-GL_PREFIX(ProgramNamedParameter4dvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6104(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6104(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6104(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6104(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramNamedParameter4dvNV), .-GL_PREFIX(ProgramNamedParameter4dvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramNamedParameter4fNV)
-       .type   GL_PREFIX(ProgramNamedParameter4fNV), @function
-GL_PREFIX(ProgramNamedParameter4fNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6112(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %rdx, 16(%rsp)
-       movq    %xmm0, 24(%rsp)
-       movq    %xmm1, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       call    _x86_64_get_dispatch@PLT
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %xmm1
-       movq    24(%rsp), %xmm0
-       movq    16(%rsp), %rdx
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    6112(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6112(%rax), %r11
-       jmp     *%r11
-1:
-       subq    $56, %rsp
-       movq    %rdi, (%rsp)
-       movq    %rsi, 8(%rsp)
-       movq    %rdx, 16(%rsp)
-       movq    %xmm0, 24(%rsp)
-       movq    %xmm1, 32(%rsp)
-       movq    %xmm2, 40(%rsp)
-       movq    %xmm3, 48(%rsp)
-       call    _glapi_get_dispatch
-       movq    48(%rsp), %xmm3
-       movq    40(%rsp), %xmm2
-       movq    32(%rsp), %xmm1
-       movq    24(%rsp), %xmm0
-       movq    16(%rsp), %rdx
-       movq    8(%rsp), %rsi
-       movq    (%rsp), %rdi
-       addq    $56, %rsp
-       movq    6112(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramNamedParameter4fNV), .-GL_PREFIX(ProgramNamedParameter4fNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProgramNamedParameter4fvNV)
-       .type   GL_PREFIX(ProgramNamedParameter4fvNV), @function
-GL_PREFIX(ProgramNamedParameter4fvNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6120(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6120(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6120(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6120(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProgramNamedParameter4fvNV), .-GL_PREFIX(ProgramNamedParameter4fvNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_766)
-       .type   GL_PREFIX(_dispatch_stub_766), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_766))
-GL_PREFIX(_dispatch_stub_766):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6128(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6128(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6128(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6128(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_766), .-GL_PREFIX(_dispatch_stub_766)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_767)
-       .type   GL_PREFIX(_dispatch_stub_767), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_767))
-GL_PREFIX(_dispatch_stub_767):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6136(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6136(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6136(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6136(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_767), .-GL_PREFIX(_dispatch_stub_767)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindFramebufferEXT)
-       .type   GL_PREFIX(BindFramebufferEXT), @function
-GL_PREFIX(BindFramebufferEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6144(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6144(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6144(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6144(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindFramebufferEXT), .-GL_PREFIX(BindFramebufferEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindRenderbufferEXT)
-       .type   GL_PREFIX(BindRenderbufferEXT), @function
-GL_PREFIX(BindRenderbufferEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6152(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6152(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6152(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6152(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindRenderbufferEXT), .-GL_PREFIX(BindRenderbufferEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(CheckFramebufferStatusEXT)
-       .type   GL_PREFIX(CheckFramebufferStatusEXT), @function
-GL_PREFIX(CheckFramebufferStatusEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6160(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6160(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6160(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6160(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(CheckFramebufferStatusEXT), .-GL_PREFIX(CheckFramebufferStatusEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteFramebuffersEXT)
-       .type   GL_PREFIX(DeleteFramebuffersEXT), @function
-GL_PREFIX(DeleteFramebuffersEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6168(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6168(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6168(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6168(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteFramebuffersEXT), .-GL_PREFIX(DeleteFramebuffersEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DeleteRenderbuffersEXT)
-       .type   GL_PREFIX(DeleteRenderbuffersEXT), @function
-GL_PREFIX(DeleteRenderbuffersEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6176(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6176(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6176(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6176(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DeleteRenderbuffersEXT), .-GL_PREFIX(DeleteRenderbuffersEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FramebufferRenderbufferEXT)
-       .type   GL_PREFIX(FramebufferRenderbufferEXT), @function
-GL_PREFIX(FramebufferRenderbufferEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6184(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6184(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6184(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6184(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FramebufferRenderbufferEXT), .-GL_PREFIX(FramebufferRenderbufferEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FramebufferTexture1DEXT)
-       .type   GL_PREFIX(FramebufferTexture1DEXT), @function
-GL_PREFIX(FramebufferTexture1DEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6192(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6192(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6192(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6192(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FramebufferTexture1DEXT), .-GL_PREFIX(FramebufferTexture1DEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FramebufferTexture2DEXT)
-       .type   GL_PREFIX(FramebufferTexture2DEXT), @function
-GL_PREFIX(FramebufferTexture2DEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6200(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6200(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6200(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6200(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FramebufferTexture2DEXT), .-GL_PREFIX(FramebufferTexture2DEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FramebufferTexture3DEXT)
-       .type   GL_PREFIX(FramebufferTexture3DEXT), @function
-GL_PREFIX(FramebufferTexture3DEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6208(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6208(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6208(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6208(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FramebufferTexture3DEXT), .-GL_PREFIX(FramebufferTexture3DEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenFramebuffersEXT)
-       .type   GL_PREFIX(GenFramebuffersEXT), @function
-GL_PREFIX(GenFramebuffersEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6216(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6216(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6216(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6216(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenFramebuffersEXT), .-GL_PREFIX(GenFramebuffersEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenRenderbuffersEXT)
-       .type   GL_PREFIX(GenRenderbuffersEXT), @function
-GL_PREFIX(GenRenderbuffersEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6224(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6224(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6224(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6224(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenRenderbuffersEXT), .-GL_PREFIX(GenRenderbuffersEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GenerateMipmapEXT)
-       .type   GL_PREFIX(GenerateMipmapEXT), @function
-GL_PREFIX(GenerateMipmapEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6232(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6232(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6232(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6232(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GenerateMipmapEXT), .-GL_PREFIX(GenerateMipmapEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetFramebufferAttachmentParameterivEXT)
-       .type   GL_PREFIX(GetFramebufferAttachmentParameterivEXT), @function
-GL_PREFIX(GetFramebufferAttachmentParameterivEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6240(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6240(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6240(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6240(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetFramebufferAttachmentParameterivEXT), .-GL_PREFIX(GetFramebufferAttachmentParameterivEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetRenderbufferParameterivEXT)
-       .type   GL_PREFIX(GetRenderbufferParameterivEXT), @function
-GL_PREFIX(GetRenderbufferParameterivEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6248(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6248(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6248(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6248(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetRenderbufferParameterivEXT), .-GL_PREFIX(GetRenderbufferParameterivEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsFramebufferEXT)
-       .type   GL_PREFIX(IsFramebufferEXT), @function
-GL_PREFIX(IsFramebufferEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6256(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6256(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6256(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6256(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsFramebufferEXT), .-GL_PREFIX(IsFramebufferEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsRenderbufferEXT)
-       .type   GL_PREFIX(IsRenderbufferEXT), @function
-GL_PREFIX(IsRenderbufferEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6264(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6264(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6264(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6264(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsRenderbufferEXT), .-GL_PREFIX(IsRenderbufferEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(RenderbufferStorageEXT)
-       .type   GL_PREFIX(RenderbufferStorageEXT), @function
-GL_PREFIX(RenderbufferStorageEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6272(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6272(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6272(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6272(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(RenderbufferStorageEXT), .-GL_PREFIX(RenderbufferStorageEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_785)
-       .type   GL_PREFIX(_dispatch_stub_785), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_785))
-GL_PREFIX(_dispatch_stub_785):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6280(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6280(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6280(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6280(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_785), .-GL_PREFIX(_dispatch_stub_785)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_786)
-       .type   GL_PREFIX(_dispatch_stub_786), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_786))
-GL_PREFIX(_dispatch_stub_786):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6288(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6288(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6288(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6288(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_786), .-GL_PREFIX(_dispatch_stub_786)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_787)
-       .type   GL_PREFIX(_dispatch_stub_787), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_787))
-GL_PREFIX(_dispatch_stub_787):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6296(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6296(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6296(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6296(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_787), .-GL_PREFIX(_dispatch_stub_787)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(FramebufferTextureLayerEXT)
-       .type   GL_PREFIX(FramebufferTextureLayerEXT), @function
-GL_PREFIX(FramebufferTextureLayerEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6304(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6304(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6304(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6304(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(FramebufferTextureLayerEXT), .-GL_PREFIX(FramebufferTextureLayerEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ColorMaskIndexedEXT)
-       .type   GL_PREFIX(ColorMaskIndexedEXT), @function
-GL_PREFIX(ColorMaskIndexedEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6312(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6312(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6312(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6312(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ColorMaskIndexedEXT), .-GL_PREFIX(ColorMaskIndexedEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(DisableIndexedEXT)
-       .type   GL_PREFIX(DisableIndexedEXT), @function
-GL_PREFIX(DisableIndexedEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6320(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6320(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6320(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6320(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(DisableIndexedEXT), .-GL_PREFIX(DisableIndexedEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EnableIndexedEXT)
-       .type   GL_PREFIX(EnableIndexedEXT), @function
-GL_PREFIX(EnableIndexedEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6328(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6328(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6328(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6328(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EnableIndexedEXT), .-GL_PREFIX(EnableIndexedEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetBooleanIndexedvEXT)
-       .type   GL_PREFIX(GetBooleanIndexedvEXT), @function
-GL_PREFIX(GetBooleanIndexedvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6336(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6336(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6336(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6336(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetBooleanIndexedvEXT), .-GL_PREFIX(GetBooleanIndexedvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetIntegerIndexedvEXT)
-       .type   GL_PREFIX(GetIntegerIndexedvEXT), @function
-GL_PREFIX(GetIntegerIndexedvEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6344(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6344(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6344(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6344(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetIntegerIndexedvEXT), .-GL_PREFIX(GetIntegerIndexedvEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(IsEnabledIndexedEXT)
-       .type   GL_PREFIX(IsEnabledIndexedEXT), @function
-GL_PREFIX(IsEnabledIndexedEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6352(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6352(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6352(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6352(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(IsEnabledIndexedEXT), .-GL_PREFIX(IsEnabledIndexedEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BeginConditionalRenderNV)
-       .type   GL_PREFIX(BeginConditionalRenderNV), @function
-GL_PREFIX(BeginConditionalRenderNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6360(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6360(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6360(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6360(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BeginConditionalRenderNV), .-GL_PREFIX(BeginConditionalRenderNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EndConditionalRenderNV)
-       .type   GL_PREFIX(EndConditionalRenderNV), @function
-GL_PREFIX(EndConditionalRenderNV):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6368(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    6368(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6368(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    6368(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EndConditionalRenderNV), .-GL_PREFIX(EndConditionalRenderNV)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BeginTransformFeedbackEXT)
-       .type   GL_PREFIX(BeginTransformFeedbackEXT), @function
-GL_PREFIX(BeginTransformFeedbackEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6376(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6376(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6376(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6376(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BeginTransformFeedbackEXT), .-GL_PREFIX(BeginTransformFeedbackEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindBufferBaseEXT)
-       .type   GL_PREFIX(BindBufferBaseEXT), @function
-GL_PREFIX(BindBufferBaseEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6384(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6384(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6384(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6384(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindBufferBaseEXT), .-GL_PREFIX(BindBufferBaseEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindBufferOffsetEXT)
-       .type   GL_PREFIX(BindBufferOffsetEXT), @function
-GL_PREFIX(BindBufferOffsetEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6392(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6392(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6392(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6392(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindBufferOffsetEXT), .-GL_PREFIX(BindBufferOffsetEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(BindBufferRangeEXT)
-       .type   GL_PREFIX(BindBufferRangeEXT), @function
-GL_PREFIX(BindBufferRangeEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6400(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _x86_64_get_dispatch@PLT
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6400(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6400(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       call    _glapi_get_dispatch
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6400(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(BindBufferRangeEXT), .-GL_PREFIX(BindBufferRangeEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EndTransformFeedbackEXT)
-       .type   GL_PREFIX(EndTransformFeedbackEXT), @function
-GL_PREFIX(EndTransformFeedbackEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6408(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       movq    6408(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6408(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       movq    6408(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EndTransformFeedbackEXT), .-GL_PREFIX(EndTransformFeedbackEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetTransformFeedbackVaryingEXT)
-       .type   GL_PREFIX(GetTransformFeedbackVaryingEXT), @function
-GL_PREFIX(GetTransformFeedbackVaryingEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6416(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6416(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6416(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %r8
-       pushq   %r9
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %r9
-       popq    %r8
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6416(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetTransformFeedbackVaryingEXT), .-GL_PREFIX(GetTransformFeedbackVaryingEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(TransformFeedbackVaryingsEXT)
-       .type   GL_PREFIX(TransformFeedbackVaryingsEXT), @function
-GL_PREFIX(TransformFeedbackVaryingsEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6424(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6424(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6424(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6424(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(TransformFeedbackVaryingsEXT), .-GL_PREFIX(TransformFeedbackVaryingsEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ProvokingVertexEXT)
-       .type   GL_PREFIX(ProvokingVertexEXT), @function
-GL_PREFIX(ProvokingVertexEXT):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6432(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdi
-       movq    6432(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6432(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       call    _glapi_get_dispatch
-       popq    %rdi
-       movq    6432(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ProvokingVertexEXT), .-GL_PREFIX(ProvokingVertexEXT)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_805)
-       .type   GL_PREFIX(_dispatch_stub_805), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_805))
-GL_PREFIX(_dispatch_stub_805):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6440(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6440(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6440(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6440(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_805), .-GL_PREFIX(_dispatch_stub_805)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_806)
-       .type   GL_PREFIX(_dispatch_stub_806), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_806))
-GL_PREFIX(_dispatch_stub_806):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6448(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6448(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6448(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6448(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_806), .-GL_PREFIX(_dispatch_stub_806)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(GetObjectParameterivAPPLE)
-       .type   GL_PREFIX(GetObjectParameterivAPPLE), @function
-GL_PREFIX(GetObjectParameterivAPPLE):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6456(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6456(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6456(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6456(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(GetObjectParameterivAPPLE), .-GL_PREFIX(GetObjectParameterivAPPLE)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ObjectPurgeableAPPLE)
-       .type   GL_PREFIX(ObjectPurgeableAPPLE), @function
-GL_PREFIX(ObjectPurgeableAPPLE):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6464(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6464(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6464(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6464(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ObjectPurgeableAPPLE), .-GL_PREFIX(ObjectPurgeableAPPLE)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(ObjectUnpurgeableAPPLE)
-       .type   GL_PREFIX(ObjectUnpurgeableAPPLE), @function
-GL_PREFIX(ObjectUnpurgeableAPPLE):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6472(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6472(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6472(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6472(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(ObjectUnpurgeableAPPLE), .-GL_PREFIX(ObjectUnpurgeableAPPLE)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_810)
-       .type   GL_PREFIX(_dispatch_stub_810), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_810))
-GL_PREFIX(_dispatch_stub_810):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6480(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6480(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6480(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6480(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_810), .-GL_PREFIX(_dispatch_stub_810)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_811)
-       .type   GL_PREFIX(_dispatch_stub_811), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_811))
-GL_PREFIX(_dispatch_stub_811):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6488(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6488(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6488(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6488(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_811), .-GL_PREFIX(_dispatch_stub_811)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_812)
-       .type   GL_PREFIX(_dispatch_stub_812), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_812))
-GL_PREFIX(_dispatch_stub_812):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6496(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6496(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6496(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       pushq   %rcx
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rcx
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6496(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_812), .-GL_PREFIX(_dispatch_stub_812)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_813)
-       .type   GL_PREFIX(_dispatch_stub_813), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_813))
-GL_PREFIX(_dispatch_stub_813):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6504(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6504(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6504(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6504(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_813), .-GL_PREFIX(_dispatch_stub_813)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(_dispatch_stub_814)
-       .type   GL_PREFIX(_dispatch_stub_814), @function
-       HIDDEN(GL_PREFIX(_dispatch_stub_814))
-GL_PREFIX(_dispatch_stub_814):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6512(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _x86_64_get_dispatch@PLT
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6512(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6512(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rdx
-       call    _glapi_get_dispatch
-       popq    %rdx
-       popq    %rsi
-       popq    %rdi
-       movq    6512(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(_dispatch_stub_814), .-GL_PREFIX(_dispatch_stub_814)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EGLImageTargetRenderbufferStorageOES)
-       .type   GL_PREFIX(EGLImageTargetRenderbufferStorageOES), @function
-GL_PREFIX(EGLImageTargetRenderbufferStorageOES):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6520(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6520(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6520(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6520(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EGLImageTargetRenderbufferStorageOES), .-GL_PREFIX(EGLImageTargetRenderbufferStorageOES)
-
-       .p2align        4,,15
-       .globl  GL_PREFIX(EGLImageTargetTexture2DOES)
-       .type   GL_PREFIX(EGLImageTargetTexture2DOES), @function
-GL_PREFIX(EGLImageTargetTexture2DOES):
-#if defined(GLX_USE_TLS)
-       call    _x86_64_get_dispatch@PLT
-       movq    6528(%rax), %r11
-       jmp     *%r11
-#elif defined(PTHREADS)
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _x86_64_get_dispatch@PLT
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6528(%rax), %r11
-       jmp     *%r11
-#else
-       movq    _glapi_Dispatch(%rip), %rax
-       testq   %rax, %rax
-       je      1f
-       movq    6528(%rax), %r11
-       jmp     *%r11
-1:
-       pushq   %rdi
-       pushq   %rsi
-       pushq   %rbp
-       call    _glapi_get_dispatch
-       popq    %rbp
-       popq    %rsi
-       popq    %rdi
-       movq    6528(%rax), %r11
-       jmp     *%r11
-#endif /* defined(GLX_USE_TLS) */
-       .size   GL_PREFIX(EGLImageTargetTexture2DOES), .-GL_PREFIX(EGLImageTargetTexture2DOES)
-
-       .globl GL_PREFIX(ArrayElementEXT) ; .set GL_PREFIX(ArrayElementEXT), GL_PREFIX(ArrayElement)
-       .globl GL_PREFIX(BindTextureEXT) ; .set GL_PREFIX(BindTextureEXT), GL_PREFIX(BindTexture)
-       .globl GL_PREFIX(DrawArraysEXT) ; .set GL_PREFIX(DrawArraysEXT), GL_PREFIX(DrawArrays)
-#ifndef GLX_INDIRECT_RENDERING
-       .globl GL_PREFIX(AreTexturesResidentEXT) ; .set GL_PREFIX(AreTexturesResidentEXT), GL_PREFIX(AreTexturesResident)
-#endif
-       .globl GL_PREFIX(CopyTexImage1DEXT) ; .set GL_PREFIX(CopyTexImage1DEXT), GL_PREFIX(CopyTexImage1D)
-       .globl GL_PREFIX(CopyTexImage2DEXT) ; .set GL_PREFIX(CopyTexImage2DEXT), GL_PREFIX(CopyTexImage2D)
-       .globl GL_PREFIX(CopyTexSubImage1DEXT) ; .set GL_PREFIX(CopyTexSubImage1DEXT), GL_PREFIX(CopyTexSubImage1D)
-       .globl GL_PREFIX(CopyTexSubImage2DEXT) ; .set GL_PREFIX(CopyTexSubImage2DEXT), GL_PREFIX(CopyTexSubImage2D)
-#ifndef GLX_INDIRECT_RENDERING
-       .globl GL_PREFIX(DeleteTexturesEXT) ; .set GL_PREFIX(DeleteTexturesEXT), GL_PREFIX(DeleteTextures)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       .globl GL_PREFIX(GenTexturesEXT) ; .set GL_PREFIX(GenTexturesEXT), GL_PREFIX(GenTextures)
-#endif
-       .globl GL_PREFIX(GetPointervEXT) ; .set GL_PREFIX(GetPointervEXT), GL_PREFIX(GetPointerv)
-#ifndef GLX_INDIRECT_RENDERING
-       .globl GL_PREFIX(IsTextureEXT) ; .set GL_PREFIX(IsTextureEXT), GL_PREFIX(IsTexture)
-#endif
-       .globl GL_PREFIX(PrioritizeTexturesEXT) ; .set GL_PREFIX(PrioritizeTexturesEXT), GL_PREFIX(PrioritizeTextures)
-       .globl GL_PREFIX(TexSubImage1DEXT) ; .set GL_PREFIX(TexSubImage1DEXT), GL_PREFIX(TexSubImage1D)
-       .globl GL_PREFIX(TexSubImage2DEXT) ; .set GL_PREFIX(TexSubImage2DEXT), GL_PREFIX(TexSubImage2D)
-       .globl GL_PREFIX(BlendColorEXT) ; .set GL_PREFIX(BlendColorEXT), GL_PREFIX(BlendColor)
-       .globl GL_PREFIX(BlendEquationEXT) ; .set GL_PREFIX(BlendEquationEXT), GL_PREFIX(BlendEquation)
-       .globl GL_PREFIX(DrawRangeElementsEXT) ; .set GL_PREFIX(DrawRangeElementsEXT), GL_PREFIX(DrawRangeElements)
-       .globl GL_PREFIX(ColorTableEXT) ; .set GL_PREFIX(ColorTableEXT), GL_PREFIX(ColorTable)
-#ifndef GLX_INDIRECT_RENDERING
-       .globl GL_PREFIX(GetColorTableEXT) ; .set GL_PREFIX(GetColorTableEXT), GL_PREFIX(GetColorTable)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       .globl GL_PREFIX(GetColorTableParameterfvEXT) ; .set GL_PREFIX(GetColorTableParameterfvEXT), GL_PREFIX(GetColorTableParameterfv)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       .globl GL_PREFIX(GetColorTableParameterivEXT) ; .set GL_PREFIX(GetColorTableParameterivEXT), GL_PREFIX(GetColorTableParameteriv)
-#endif
-       .globl GL_PREFIX(TexImage3DEXT) ; .set GL_PREFIX(TexImage3DEXT), GL_PREFIX(TexImage3D)
-       .globl GL_PREFIX(TexSubImage3DEXT) ; .set GL_PREFIX(TexSubImage3DEXT), GL_PREFIX(TexSubImage3D)
-       .globl GL_PREFIX(CopyTexSubImage3DEXT) ; .set GL_PREFIX(CopyTexSubImage3DEXT), GL_PREFIX(CopyTexSubImage3D)
-       .globl GL_PREFIX(ActiveTexture) ; .set GL_PREFIX(ActiveTexture), GL_PREFIX(ActiveTextureARB)
-       .globl GL_PREFIX(ClientActiveTexture) ; .set GL_PREFIX(ClientActiveTexture), GL_PREFIX(ClientActiveTextureARB)
-       .globl GL_PREFIX(MultiTexCoord1d) ; .set GL_PREFIX(MultiTexCoord1d), GL_PREFIX(MultiTexCoord1dARB)
-       .globl GL_PREFIX(MultiTexCoord1dv) ; .set GL_PREFIX(MultiTexCoord1dv), GL_PREFIX(MultiTexCoord1dvARB)
-       .globl GL_PREFIX(MultiTexCoord1f) ; .set GL_PREFIX(MultiTexCoord1f), GL_PREFIX(MultiTexCoord1fARB)
-       .globl GL_PREFIX(MultiTexCoord1fv) ; .set GL_PREFIX(MultiTexCoord1fv), GL_PREFIX(MultiTexCoord1fvARB)
-       .globl GL_PREFIX(MultiTexCoord1i) ; .set GL_PREFIX(MultiTexCoord1i), GL_PREFIX(MultiTexCoord1iARB)
-       .globl GL_PREFIX(MultiTexCoord1iv) ; .set GL_PREFIX(MultiTexCoord1iv), GL_PREFIX(MultiTexCoord1ivARB)
-       .globl GL_PREFIX(MultiTexCoord1s) ; .set GL_PREFIX(MultiTexCoord1s), GL_PREFIX(MultiTexCoord1sARB)
-       .globl GL_PREFIX(MultiTexCoord1sv) ; .set GL_PREFIX(MultiTexCoord1sv), GL_PREFIX(MultiTexCoord1svARB)
-       .globl GL_PREFIX(MultiTexCoord2d) ; .set GL_PREFIX(MultiTexCoord2d), GL_PREFIX(MultiTexCoord2dARB)
-       .globl GL_PREFIX(MultiTexCoord2dv) ; .set GL_PREFIX(MultiTexCoord2dv), GL_PREFIX(MultiTexCoord2dvARB)
-       .globl GL_PREFIX(MultiTexCoord2f) ; .set GL_PREFIX(MultiTexCoord2f), GL_PREFIX(MultiTexCoord2fARB)
-       .globl GL_PREFIX(MultiTexCoord2fv) ; .set GL_PREFIX(MultiTexCoord2fv), GL_PREFIX(MultiTexCoord2fvARB)
-       .globl GL_PREFIX(MultiTexCoord2i) ; .set GL_PREFIX(MultiTexCoord2i), GL_PREFIX(MultiTexCoord2iARB)
-       .globl GL_PREFIX(MultiTexCoord2iv) ; .set GL_PREFIX(MultiTexCoord2iv), GL_PREFIX(MultiTexCoord2ivARB)
-       .globl GL_PREFIX(MultiTexCoord2s) ; .set GL_PREFIX(MultiTexCoord2s), GL_PREFIX(MultiTexCoord2sARB)
-       .globl GL_PREFIX(MultiTexCoord2sv) ; .set GL_PREFIX(MultiTexCoord2sv), GL_PREFIX(MultiTexCoord2svARB)
-       .globl GL_PREFIX(MultiTexCoord3d) ; .set GL_PREFIX(MultiTexCoord3d), GL_PREFIX(MultiTexCoord3dARB)
-       .globl GL_PREFIX(MultiTexCoord3dv) ; .set GL_PREFIX(MultiTexCoord3dv), GL_PREFIX(MultiTexCoord3dvARB)
-       .globl GL_PREFIX(MultiTexCoord3f) ; .set GL_PREFIX(MultiTexCoord3f), GL_PREFIX(MultiTexCoord3fARB)
-       .globl GL_PREFIX(MultiTexCoord3fv) ; .set GL_PREFIX(MultiTexCoord3fv), GL_PREFIX(MultiTexCoord3fvARB)
-       .globl GL_PREFIX(MultiTexCoord3i) ; .set GL_PREFIX(MultiTexCoord3i), GL_PREFIX(MultiTexCoord3iARB)
-       .globl GL_PREFIX(MultiTexCoord3iv) ; .set GL_PREFIX(MultiTexCoord3iv), GL_PREFIX(MultiTexCoord3ivARB)
-       .globl GL_PREFIX(MultiTexCoord3s) ; .set GL_PREFIX(MultiTexCoord3s), GL_PREFIX(MultiTexCoord3sARB)
-       .globl GL_PREFIX(MultiTexCoord3sv) ; .set GL_PREFIX(MultiTexCoord3sv), GL_PREFIX(MultiTexCoord3svARB)
-       .globl GL_PREFIX(MultiTexCoord4d) ; .set GL_PREFIX(MultiTexCoord4d), GL_PREFIX(MultiTexCoord4dARB)
-       .globl GL_PREFIX(MultiTexCoord4dv) ; .set GL_PREFIX(MultiTexCoord4dv), GL_PREFIX(MultiTexCoord4dvARB)
-       .globl GL_PREFIX(MultiTexCoord4f) ; .set GL_PREFIX(MultiTexCoord4f), GL_PREFIX(MultiTexCoord4fARB)
-       .globl GL_PREFIX(MultiTexCoord4fv) ; .set GL_PREFIX(MultiTexCoord4fv), GL_PREFIX(MultiTexCoord4fvARB)
-       .globl GL_PREFIX(MultiTexCoord4i) ; .set GL_PREFIX(MultiTexCoord4i), GL_PREFIX(MultiTexCoord4iARB)
-       .globl GL_PREFIX(MultiTexCoord4iv) ; .set GL_PREFIX(MultiTexCoord4iv), GL_PREFIX(MultiTexCoord4ivARB)
-       .globl GL_PREFIX(MultiTexCoord4s) ; .set GL_PREFIX(MultiTexCoord4s), GL_PREFIX(MultiTexCoord4sARB)
-       .globl GL_PREFIX(MultiTexCoord4sv) ; .set GL_PREFIX(MultiTexCoord4sv), GL_PREFIX(MultiTexCoord4svARB)
-       .globl GL_PREFIX(DrawArraysInstancedARB) ; .set GL_PREFIX(DrawArraysInstancedARB), GL_PREFIX(DrawArraysInstanced)
-       .globl GL_PREFIX(DrawArraysInstancedEXT) ; .set GL_PREFIX(DrawArraysInstancedEXT), GL_PREFIX(DrawArraysInstanced)
-       .globl GL_PREFIX(DrawElementsInstancedARB) ; .set GL_PREFIX(DrawElementsInstancedARB), GL_PREFIX(DrawElementsInstanced)
-       .globl GL_PREFIX(DrawElementsInstancedEXT) ; .set GL_PREFIX(DrawElementsInstancedEXT), GL_PREFIX(DrawElementsInstanced)
-       .globl GL_PREFIX(LoadTransposeMatrixd) ; .set GL_PREFIX(LoadTransposeMatrixd), GL_PREFIX(LoadTransposeMatrixdARB)
-       .globl GL_PREFIX(LoadTransposeMatrixf) ; .set GL_PREFIX(LoadTransposeMatrixf), GL_PREFIX(LoadTransposeMatrixfARB)
-       .globl GL_PREFIX(MultTransposeMatrixd) ; .set GL_PREFIX(MultTransposeMatrixd), GL_PREFIX(MultTransposeMatrixdARB)
-       .globl GL_PREFIX(MultTransposeMatrixf) ; .set GL_PREFIX(MultTransposeMatrixf), GL_PREFIX(MultTransposeMatrixfARB)
-       .globl GL_PREFIX(SampleCoverage) ; .set GL_PREFIX(SampleCoverage), GL_PREFIX(SampleCoverageARB)
-       .globl GL_PREFIX(CompressedTexImage1D) ; .set GL_PREFIX(CompressedTexImage1D), GL_PREFIX(CompressedTexImage1DARB)
-       .globl GL_PREFIX(CompressedTexImage2D) ; .set GL_PREFIX(CompressedTexImage2D), GL_PREFIX(CompressedTexImage2DARB)
-       .globl GL_PREFIX(CompressedTexImage3D) ; .set GL_PREFIX(CompressedTexImage3D), GL_PREFIX(CompressedTexImage3DARB)
-       .globl GL_PREFIX(CompressedTexSubImage1D) ; .set GL_PREFIX(CompressedTexSubImage1D), GL_PREFIX(CompressedTexSubImage1DARB)
-       .globl GL_PREFIX(CompressedTexSubImage2D) ; .set GL_PREFIX(CompressedTexSubImage2D), GL_PREFIX(CompressedTexSubImage2DARB)
-       .globl GL_PREFIX(CompressedTexSubImage3D) ; .set GL_PREFIX(CompressedTexSubImage3D), GL_PREFIX(CompressedTexSubImage3DARB)
-       .globl GL_PREFIX(GetCompressedTexImage) ; .set GL_PREFIX(GetCompressedTexImage), GL_PREFIX(GetCompressedTexImageARB)
-       .globl GL_PREFIX(DisableVertexAttribArray) ; .set GL_PREFIX(DisableVertexAttribArray), GL_PREFIX(DisableVertexAttribArrayARB)
-       .globl GL_PREFIX(EnableVertexAttribArray) ; .set GL_PREFIX(EnableVertexAttribArray), GL_PREFIX(EnableVertexAttribArrayARB)
-       .globl GL_PREFIX(GetVertexAttribdv) ; .set GL_PREFIX(GetVertexAttribdv), GL_PREFIX(GetVertexAttribdvARB)
-       .globl GL_PREFIX(GetVertexAttribfv) ; .set GL_PREFIX(GetVertexAttribfv), GL_PREFIX(GetVertexAttribfvARB)
-       .globl GL_PREFIX(GetVertexAttribiv) ; .set GL_PREFIX(GetVertexAttribiv), GL_PREFIX(GetVertexAttribivARB)
-       .globl GL_PREFIX(ProgramParameter4dNV) ; .set GL_PREFIX(ProgramParameter4dNV), GL_PREFIX(ProgramEnvParameter4dARB)
-       .globl GL_PREFIX(ProgramParameter4dvNV) ; .set GL_PREFIX(ProgramParameter4dvNV), GL_PREFIX(ProgramEnvParameter4dvARB)
-       .globl GL_PREFIX(ProgramParameter4fNV) ; .set GL_PREFIX(ProgramParameter4fNV), GL_PREFIX(ProgramEnvParameter4fARB)
-       .globl GL_PREFIX(ProgramParameter4fvNV) ; .set GL_PREFIX(ProgramParameter4fvNV), GL_PREFIX(ProgramEnvParameter4fvARB)
-       .globl GL_PREFIX(VertexAttrib1d) ; .set GL_PREFIX(VertexAttrib1d), GL_PREFIX(VertexAttrib1dARB)
-       .globl GL_PREFIX(VertexAttrib1dv) ; .set GL_PREFIX(VertexAttrib1dv), GL_PREFIX(VertexAttrib1dvARB)
-       .globl GL_PREFIX(VertexAttrib1f) ; .set GL_PREFIX(VertexAttrib1f), GL_PREFIX(VertexAttrib1fARB)
-       .globl GL_PREFIX(VertexAttrib1fv) ; .set GL_PREFIX(VertexAttrib1fv), GL_PREFIX(VertexAttrib1fvARB)
-       .globl GL_PREFIX(VertexAttrib1s) ; .set GL_PREFIX(VertexAttrib1s), GL_PREFIX(VertexAttrib1sARB)
-       .globl GL_PREFIX(VertexAttrib1sv) ; .set GL_PREFIX(VertexAttrib1sv), GL_PREFIX(VertexAttrib1svARB)
-       .globl GL_PREFIX(VertexAttrib2d) ; .set GL_PREFIX(VertexAttrib2d), GL_PREFIX(VertexAttrib2dARB)
-       .globl GL_PREFIX(VertexAttrib2dv) ; .set GL_PREFIX(VertexAttrib2dv), GL_PREFIX(VertexAttrib2dvARB)
-       .globl GL_PREFIX(VertexAttrib2f) ; .set GL_PREFIX(VertexAttrib2f), GL_PREFIX(VertexAttrib2fARB)
-       .globl GL_PREFIX(VertexAttrib2fv) ; .set GL_PREFIX(VertexAttrib2fv), GL_PREFIX(VertexAttrib2fvARB)
-       .globl GL_PREFIX(VertexAttrib2s) ; .set GL_PREFIX(VertexAttrib2s), GL_PREFIX(VertexAttrib2sARB)
-       .globl GL_PREFIX(VertexAttrib2sv) ; .set GL_PREFIX(VertexAttrib2sv), GL_PREFIX(VertexAttrib2svARB)
-       .globl GL_PREFIX(VertexAttrib3d) ; .set GL_PREFIX(VertexAttrib3d), GL_PREFIX(VertexAttrib3dARB)
-       .globl GL_PREFIX(VertexAttrib3dv) ; .set GL_PREFIX(VertexAttrib3dv), GL_PREFIX(VertexAttrib3dvARB)
-       .globl GL_PREFIX(VertexAttrib3f) ; .set GL_PREFIX(VertexAttrib3f), GL_PREFIX(VertexAttrib3fARB)
-       .globl GL_PREFIX(VertexAttrib3fv) ; .set GL_PREFIX(VertexAttrib3fv), GL_PREFIX(VertexAttrib3fvARB)
-       .globl GL_PREFIX(VertexAttrib3s) ; .set GL_PREFIX(VertexAttrib3s), GL_PREFIX(VertexAttrib3sARB)
-       .globl GL_PREFIX(VertexAttrib3sv) ; .set GL_PREFIX(VertexAttrib3sv), GL_PREFIX(VertexAttrib3svARB)
-       .globl GL_PREFIX(VertexAttrib4Nbv) ; .set GL_PREFIX(VertexAttrib4Nbv), GL_PREFIX(VertexAttrib4NbvARB)
-       .globl GL_PREFIX(VertexAttrib4Niv) ; .set GL_PREFIX(VertexAttrib4Niv), GL_PREFIX(VertexAttrib4NivARB)
-       .globl GL_PREFIX(VertexAttrib4Nsv) ; .set GL_PREFIX(VertexAttrib4Nsv), GL_PREFIX(VertexAttrib4NsvARB)
-       .globl GL_PREFIX(VertexAttrib4Nub) ; .set GL_PREFIX(VertexAttrib4Nub), GL_PREFIX(VertexAttrib4NubARB)
-       .globl GL_PREFIX(VertexAttrib4Nubv) ; .set GL_PREFIX(VertexAttrib4Nubv), GL_PREFIX(VertexAttrib4NubvARB)
-       .globl GL_PREFIX(VertexAttrib4Nuiv) ; .set GL_PREFIX(VertexAttrib4Nuiv), GL_PREFIX(VertexAttrib4NuivARB)
-       .globl GL_PREFIX(VertexAttrib4Nusv) ; .set GL_PREFIX(VertexAttrib4Nusv), GL_PREFIX(VertexAttrib4NusvARB)
-       .globl GL_PREFIX(VertexAttrib4bv) ; .set GL_PREFIX(VertexAttrib4bv), GL_PREFIX(VertexAttrib4bvARB)
-       .globl GL_PREFIX(VertexAttrib4d) ; .set GL_PREFIX(VertexAttrib4d), GL_PREFIX(VertexAttrib4dARB)
-       .globl GL_PREFIX(VertexAttrib4dv) ; .set GL_PREFIX(VertexAttrib4dv), GL_PREFIX(VertexAttrib4dvARB)
-       .globl GL_PREFIX(VertexAttrib4f) ; .set GL_PREFIX(VertexAttrib4f), GL_PREFIX(VertexAttrib4fARB)
-       .globl GL_PREFIX(VertexAttrib4fv) ; .set GL_PREFIX(VertexAttrib4fv), GL_PREFIX(VertexAttrib4fvARB)
-       .globl GL_PREFIX(VertexAttrib4iv) ; .set GL_PREFIX(VertexAttrib4iv), GL_PREFIX(VertexAttrib4ivARB)
-       .globl GL_PREFIX(VertexAttrib4s) ; .set GL_PREFIX(VertexAttrib4s), GL_PREFIX(VertexAttrib4sARB)
-       .globl GL_PREFIX(VertexAttrib4sv) ; .set GL_PREFIX(VertexAttrib4sv), GL_PREFIX(VertexAttrib4svARB)
-       .globl GL_PREFIX(VertexAttrib4ubv) ; .set GL_PREFIX(VertexAttrib4ubv), GL_PREFIX(VertexAttrib4ubvARB)
-       .globl GL_PREFIX(VertexAttrib4uiv) ; .set GL_PREFIX(VertexAttrib4uiv), GL_PREFIX(VertexAttrib4uivARB)
-       .globl GL_PREFIX(VertexAttrib4usv) ; .set GL_PREFIX(VertexAttrib4usv), GL_PREFIX(VertexAttrib4usvARB)
-       .globl GL_PREFIX(VertexAttribPointer) ; .set GL_PREFIX(VertexAttribPointer), GL_PREFIX(VertexAttribPointerARB)
-       .globl GL_PREFIX(BindBuffer) ; .set GL_PREFIX(BindBuffer), GL_PREFIX(BindBufferARB)
-       .globl GL_PREFIX(BufferData) ; .set GL_PREFIX(BufferData), GL_PREFIX(BufferDataARB)
-       .globl GL_PREFIX(BufferSubData) ; .set GL_PREFIX(BufferSubData), GL_PREFIX(BufferSubDataARB)
-       .globl GL_PREFIX(DeleteBuffers) ; .set GL_PREFIX(DeleteBuffers), GL_PREFIX(DeleteBuffersARB)
-       .globl GL_PREFIX(GenBuffers) ; .set GL_PREFIX(GenBuffers), GL_PREFIX(GenBuffersARB)
-       .globl GL_PREFIX(GetBufferParameteriv) ; .set GL_PREFIX(GetBufferParameteriv), GL_PREFIX(GetBufferParameterivARB)
-       .globl GL_PREFIX(GetBufferPointerv) ; .set GL_PREFIX(GetBufferPointerv), GL_PREFIX(GetBufferPointervARB)
-       .globl GL_PREFIX(GetBufferSubData) ; .set GL_PREFIX(GetBufferSubData), GL_PREFIX(GetBufferSubDataARB)
-       .globl GL_PREFIX(IsBuffer) ; .set GL_PREFIX(IsBuffer), GL_PREFIX(IsBufferARB)
-       .globl GL_PREFIX(MapBuffer) ; .set GL_PREFIX(MapBuffer), GL_PREFIX(MapBufferARB)
-       .globl GL_PREFIX(UnmapBuffer) ; .set GL_PREFIX(UnmapBuffer), GL_PREFIX(UnmapBufferARB)
-       .globl GL_PREFIX(BeginQuery) ; .set GL_PREFIX(BeginQuery), GL_PREFIX(BeginQueryARB)
-       .globl GL_PREFIX(DeleteQueries) ; .set GL_PREFIX(DeleteQueries), GL_PREFIX(DeleteQueriesARB)
-       .globl GL_PREFIX(EndQuery) ; .set GL_PREFIX(EndQuery), GL_PREFIX(EndQueryARB)
-       .globl GL_PREFIX(GenQueries) ; .set GL_PREFIX(GenQueries), GL_PREFIX(GenQueriesARB)
-       .globl GL_PREFIX(GetQueryObjectiv) ; .set GL_PREFIX(GetQueryObjectiv), GL_PREFIX(GetQueryObjectivARB)
-       .globl GL_PREFIX(GetQueryObjectuiv) ; .set GL_PREFIX(GetQueryObjectuiv), GL_PREFIX(GetQueryObjectuivARB)
-       .globl GL_PREFIX(GetQueryiv) ; .set GL_PREFIX(GetQueryiv), GL_PREFIX(GetQueryivARB)
-       .globl GL_PREFIX(IsQuery) ; .set GL_PREFIX(IsQuery), GL_PREFIX(IsQueryARB)
-       .globl GL_PREFIX(CompileShader) ; .set GL_PREFIX(CompileShader), GL_PREFIX(CompileShaderARB)
-       .globl GL_PREFIX(GetActiveUniform) ; .set GL_PREFIX(GetActiveUniform), GL_PREFIX(GetActiveUniformARB)
-       .globl GL_PREFIX(GetShaderSource) ; .set GL_PREFIX(GetShaderSource), GL_PREFIX(GetShaderSourceARB)
-       .globl GL_PREFIX(GetUniformLocation) ; .set GL_PREFIX(GetUniformLocation), GL_PREFIX(GetUniformLocationARB)
-       .globl GL_PREFIX(GetUniformfv) ; .set GL_PREFIX(GetUniformfv), GL_PREFIX(GetUniformfvARB)
-       .globl GL_PREFIX(GetUniformiv) ; .set GL_PREFIX(GetUniformiv), GL_PREFIX(GetUniformivARB)
-       .globl GL_PREFIX(LinkProgram) ; .set GL_PREFIX(LinkProgram), GL_PREFIX(LinkProgramARB)
-       .globl GL_PREFIX(ShaderSource) ; .set GL_PREFIX(ShaderSource), GL_PREFIX(ShaderSourceARB)
-       .globl GL_PREFIX(Uniform1f) ; .set GL_PREFIX(Uniform1f), GL_PREFIX(Uniform1fARB)
-       .globl GL_PREFIX(Uniform1fv) ; .set GL_PREFIX(Uniform1fv), GL_PREFIX(Uniform1fvARB)
-       .globl GL_PREFIX(Uniform1i) ; .set GL_PREFIX(Uniform1i), GL_PREFIX(Uniform1iARB)
-       .globl GL_PREFIX(Uniform1iv) ; .set GL_PREFIX(Uniform1iv), GL_PREFIX(Uniform1ivARB)
-       .globl GL_PREFIX(Uniform2f) ; .set GL_PREFIX(Uniform2f), GL_PREFIX(Uniform2fARB)
-       .globl GL_PREFIX(Uniform2fv) ; .set GL_PREFIX(Uniform2fv), GL_PREFIX(Uniform2fvARB)
-       .globl GL_PREFIX(Uniform2i) ; .set GL_PREFIX(Uniform2i), GL_PREFIX(Uniform2iARB)
-       .globl GL_PREFIX(Uniform2iv) ; .set GL_PREFIX(Uniform2iv), GL_PREFIX(Uniform2ivARB)
-       .globl GL_PREFIX(Uniform3f) ; .set GL_PREFIX(Uniform3f), GL_PREFIX(Uniform3fARB)
-       .globl GL_PREFIX(Uniform3fv) ; .set GL_PREFIX(Uniform3fv), GL_PREFIX(Uniform3fvARB)
-       .globl GL_PREFIX(Uniform3i) ; .set GL_PREFIX(Uniform3i), GL_PREFIX(Uniform3iARB)
-       .globl GL_PREFIX(Uniform3iv) ; .set GL_PREFIX(Uniform3iv), GL_PREFIX(Uniform3ivARB)
-       .globl GL_PREFIX(Uniform4f) ; .set GL_PREFIX(Uniform4f), GL_PREFIX(Uniform4fARB)
-       .globl GL_PREFIX(Uniform4fv) ; .set GL_PREFIX(Uniform4fv), GL_PREFIX(Uniform4fvARB)
-       .globl GL_PREFIX(Uniform4i) ; .set GL_PREFIX(Uniform4i), GL_PREFIX(Uniform4iARB)
-       .globl GL_PREFIX(Uniform4iv) ; .set GL_PREFIX(Uniform4iv), GL_PREFIX(Uniform4ivARB)
-       .globl GL_PREFIX(UniformMatrix2fv) ; .set GL_PREFIX(UniformMatrix2fv), GL_PREFIX(UniformMatrix2fvARB)
-       .globl GL_PREFIX(UniformMatrix3fv) ; .set GL_PREFIX(UniformMatrix3fv), GL_PREFIX(UniformMatrix3fvARB)
-       .globl GL_PREFIX(UniformMatrix4fv) ; .set GL_PREFIX(UniformMatrix4fv), GL_PREFIX(UniformMatrix4fvARB)
-       .globl GL_PREFIX(UseProgram) ; .set GL_PREFIX(UseProgram), GL_PREFIX(UseProgramObjectARB)
-       .globl GL_PREFIX(ValidateProgram) ; .set GL_PREFIX(ValidateProgram), GL_PREFIX(ValidateProgramARB)
-       .globl GL_PREFIX(BindAttribLocation) ; .set GL_PREFIX(BindAttribLocation), GL_PREFIX(BindAttribLocationARB)
-       .globl GL_PREFIX(GetActiveAttrib) ; .set GL_PREFIX(GetActiveAttrib), GL_PREFIX(GetActiveAttribARB)
-       .globl GL_PREFIX(GetAttribLocation) ; .set GL_PREFIX(GetAttribLocation), GL_PREFIX(GetAttribLocationARB)
-       .globl GL_PREFIX(DrawBuffers) ; .set GL_PREFIX(DrawBuffers), GL_PREFIX(DrawBuffersARB)
-       .globl GL_PREFIX(DrawBuffersATI) ; .set GL_PREFIX(DrawBuffersATI), GL_PREFIX(DrawBuffersARB)
-       .globl GL_PREFIX(RenderbufferStorageMultisampleEXT) ; .set GL_PREFIX(RenderbufferStorageMultisampleEXT), GL_PREFIX(RenderbufferStorageMultisample)
-       .globl GL_PREFIX(PointParameterf) ; .set GL_PREFIX(PointParameterf), GL_PREFIX(PointParameterfEXT)
-       .globl GL_PREFIX(PointParameterfARB) ; .set GL_PREFIX(PointParameterfARB), GL_PREFIX(PointParameterfEXT)
-       .globl GL_PREFIX(PointParameterfv) ; .set GL_PREFIX(PointParameterfv), GL_PREFIX(PointParameterfvEXT)
-       .globl GL_PREFIX(PointParameterfvARB) ; .set GL_PREFIX(PointParameterfvARB), GL_PREFIX(PointParameterfvEXT)
-       .globl GL_PREFIX(SecondaryColor3b) ; .set GL_PREFIX(SecondaryColor3b), GL_PREFIX(SecondaryColor3bEXT)
-       .globl GL_PREFIX(SecondaryColor3bv) ; .set GL_PREFIX(SecondaryColor3bv), GL_PREFIX(SecondaryColor3bvEXT)
-       .globl GL_PREFIX(SecondaryColor3d) ; .set GL_PREFIX(SecondaryColor3d), GL_PREFIX(SecondaryColor3dEXT)
-       .globl GL_PREFIX(SecondaryColor3dv) ; .set GL_PREFIX(SecondaryColor3dv), GL_PREFIX(SecondaryColor3dvEXT)
-       .globl GL_PREFIX(SecondaryColor3f) ; .set GL_PREFIX(SecondaryColor3f), GL_PREFIX(SecondaryColor3fEXT)
-       .globl GL_PREFIX(SecondaryColor3fv) ; .set GL_PREFIX(SecondaryColor3fv), GL_PREFIX(SecondaryColor3fvEXT)
-       .globl GL_PREFIX(SecondaryColor3i) ; .set GL_PREFIX(SecondaryColor3i), GL_PREFIX(SecondaryColor3iEXT)
-       .globl GL_PREFIX(SecondaryColor3iv) ; .set GL_PREFIX(SecondaryColor3iv), GL_PREFIX(SecondaryColor3ivEXT)
-       .globl GL_PREFIX(SecondaryColor3s) ; .set GL_PREFIX(SecondaryColor3s), GL_PREFIX(SecondaryColor3sEXT)
-       .globl GL_PREFIX(SecondaryColor3sv) ; .set GL_PREFIX(SecondaryColor3sv), GL_PREFIX(SecondaryColor3svEXT)
-       .globl GL_PREFIX(SecondaryColor3ub) ; .set GL_PREFIX(SecondaryColor3ub), GL_PREFIX(SecondaryColor3ubEXT)
-       .globl GL_PREFIX(SecondaryColor3ubv) ; .set GL_PREFIX(SecondaryColor3ubv), GL_PREFIX(SecondaryColor3ubvEXT)
-       .globl GL_PREFIX(SecondaryColor3ui) ; .set GL_PREFIX(SecondaryColor3ui), GL_PREFIX(SecondaryColor3uiEXT)
-       .globl GL_PREFIX(SecondaryColor3uiv) ; .set GL_PREFIX(SecondaryColor3uiv), GL_PREFIX(SecondaryColor3uivEXT)
-       .globl GL_PREFIX(SecondaryColor3us) ; .set GL_PREFIX(SecondaryColor3us), GL_PREFIX(SecondaryColor3usEXT)
-       .globl GL_PREFIX(SecondaryColor3usv) ; .set GL_PREFIX(SecondaryColor3usv), GL_PREFIX(SecondaryColor3usvEXT)
-       .globl GL_PREFIX(SecondaryColorPointer) ; .set GL_PREFIX(SecondaryColorPointer), GL_PREFIX(SecondaryColorPointerEXT)
-       .globl GL_PREFIX(MultiDrawArrays) ; .set GL_PREFIX(MultiDrawArrays), GL_PREFIX(MultiDrawArraysEXT)
-       .globl GL_PREFIX(MultiDrawElements) ; .set GL_PREFIX(MultiDrawElements), GL_PREFIX(MultiDrawElementsEXT)
-       .globl GL_PREFIX(FogCoordPointer) ; .set GL_PREFIX(FogCoordPointer), GL_PREFIX(FogCoordPointerEXT)
-       .globl GL_PREFIX(FogCoordd) ; .set GL_PREFIX(FogCoordd), GL_PREFIX(FogCoorddEXT)
-       .globl GL_PREFIX(FogCoorddv) ; .set GL_PREFIX(FogCoorddv), GL_PREFIX(FogCoorddvEXT)
-       .globl GL_PREFIX(FogCoordf) ; .set GL_PREFIX(FogCoordf), GL_PREFIX(FogCoordfEXT)
-       .globl GL_PREFIX(FogCoordfv) ; .set GL_PREFIX(FogCoordfv), GL_PREFIX(FogCoordfvEXT)
-       .globl GL_PREFIX(BlendFuncSeparate) ; .set GL_PREFIX(BlendFuncSeparate), GL_PREFIX(BlendFuncSeparateEXT)
-       .globl GL_PREFIX(WindowPos2d) ; .set GL_PREFIX(WindowPos2d), GL_PREFIX(WindowPos2dMESA)
-       .globl GL_PREFIX(WindowPos2dARB) ; .set GL_PREFIX(WindowPos2dARB), GL_PREFIX(WindowPos2dMESA)
-       .globl GL_PREFIX(WindowPos2dv) ; .set GL_PREFIX(WindowPos2dv), GL_PREFIX(WindowPos2dvMESA)
-       .globl GL_PREFIX(WindowPos2dvARB) ; .set GL_PREFIX(WindowPos2dvARB), GL_PREFIX(WindowPos2dvMESA)
-       .globl GL_PREFIX(WindowPos2f) ; .set GL_PREFIX(WindowPos2f), GL_PREFIX(WindowPos2fMESA)
-       .globl GL_PREFIX(WindowPos2fARB) ; .set GL_PREFIX(WindowPos2fARB), GL_PREFIX(WindowPos2fMESA)
-       .globl GL_PREFIX(WindowPos2fv) ; .set GL_PREFIX(WindowPos2fv), GL_PREFIX(WindowPos2fvMESA)
-       .globl GL_PREFIX(WindowPos2fvARB) ; .set GL_PREFIX(WindowPos2fvARB), GL_PREFIX(WindowPos2fvMESA)
-       .globl GL_PREFIX(WindowPos2i) ; .set GL_PREFIX(WindowPos2i), GL_PREFIX(WindowPos2iMESA)
-       .globl GL_PREFIX(WindowPos2iARB) ; .set GL_PREFIX(WindowPos2iARB), GL_PREFIX(WindowPos2iMESA)
-       .globl GL_PREFIX(WindowPos2iv) ; .set GL_PREFIX(WindowPos2iv), GL_PREFIX(WindowPos2ivMESA)
-       .globl GL_PREFIX(WindowPos2ivARB) ; .set GL_PREFIX(WindowPos2ivARB), GL_PREFIX(WindowPos2ivMESA)
-       .globl GL_PREFIX(WindowPos2s) ; .set GL_PREFIX(WindowPos2s), GL_PREFIX(WindowPos2sMESA)
-       .globl GL_PREFIX(WindowPos2sARB) ; .set GL_PREFIX(WindowPos2sARB), GL_PREFIX(WindowPos2sMESA)
-       .globl GL_PREFIX(WindowPos2sv) ; .set GL_PREFIX(WindowPos2sv), GL_PREFIX(WindowPos2svMESA)
-       .globl GL_PREFIX(WindowPos2svARB) ; .set GL_PREFIX(WindowPos2svARB), GL_PREFIX(WindowPos2svMESA)
-       .globl GL_PREFIX(WindowPos3d) ; .set GL_PREFIX(WindowPos3d), GL_PREFIX(WindowPos3dMESA)
-       .globl GL_PREFIX(WindowPos3dARB) ; .set GL_PREFIX(WindowPos3dARB), GL_PREFIX(WindowPos3dMESA)
-       .globl GL_PREFIX(WindowPos3dv) ; .set GL_PREFIX(WindowPos3dv), GL_PREFIX(WindowPos3dvMESA)
-       .globl GL_PREFIX(WindowPos3dvARB) ; .set GL_PREFIX(WindowPos3dvARB), GL_PREFIX(WindowPos3dvMESA)
-       .globl GL_PREFIX(WindowPos3f) ; .set GL_PREFIX(WindowPos3f), GL_PREFIX(WindowPos3fMESA)
-       .globl GL_PREFIX(WindowPos3fARB) ; .set GL_PREFIX(WindowPos3fARB), GL_PREFIX(WindowPos3fMESA)
-       .globl GL_PREFIX(WindowPos3fv) ; .set GL_PREFIX(WindowPos3fv), GL_PREFIX(WindowPos3fvMESA)
-       .globl GL_PREFIX(WindowPos3fvARB) ; .set GL_PREFIX(WindowPos3fvARB), GL_PREFIX(WindowPos3fvMESA)
-       .globl GL_PREFIX(WindowPos3i) ; .set GL_PREFIX(WindowPos3i), GL_PREFIX(WindowPos3iMESA)
-       .globl GL_PREFIX(WindowPos3iARB) ; .set GL_PREFIX(WindowPos3iARB), GL_PREFIX(WindowPos3iMESA)
-       .globl GL_PREFIX(WindowPos3iv) ; .set GL_PREFIX(WindowPos3iv), GL_PREFIX(WindowPos3ivMESA)
-       .globl GL_PREFIX(WindowPos3ivARB) ; .set GL_PREFIX(WindowPos3ivARB), GL_PREFIX(WindowPos3ivMESA)
-       .globl GL_PREFIX(WindowPos3s) ; .set GL_PREFIX(WindowPos3s), GL_PREFIX(WindowPos3sMESA)
-       .globl GL_PREFIX(WindowPos3sARB) ; .set GL_PREFIX(WindowPos3sARB), GL_PREFIX(WindowPos3sMESA)
-       .globl GL_PREFIX(WindowPos3sv) ; .set GL_PREFIX(WindowPos3sv), GL_PREFIX(WindowPos3svMESA)
-       .globl GL_PREFIX(WindowPos3svARB) ; .set GL_PREFIX(WindowPos3svARB), GL_PREFIX(WindowPos3svMESA)
-       .globl GL_PREFIX(BindProgramARB) ; .set GL_PREFIX(BindProgramARB), GL_PREFIX(BindProgramNV)
-       .globl GL_PREFIX(DeleteProgramsARB) ; .set GL_PREFIX(DeleteProgramsARB), GL_PREFIX(DeleteProgramsNV)
-       .globl GL_PREFIX(GenProgramsARB) ; .set GL_PREFIX(GenProgramsARB), GL_PREFIX(GenProgramsNV)
-       .globl GL_PREFIX(GetVertexAttribPointerv) ; .set GL_PREFIX(GetVertexAttribPointerv), GL_PREFIX(GetVertexAttribPointervNV)
-       .globl GL_PREFIX(GetVertexAttribPointervARB) ; .set GL_PREFIX(GetVertexAttribPointervARB), GL_PREFIX(GetVertexAttribPointervNV)
-       .globl GL_PREFIX(IsProgramARB) ; .set GL_PREFIX(IsProgramARB), GL_PREFIX(IsProgramNV)
-       .globl GL_PREFIX(PointParameteri) ; .set GL_PREFIX(PointParameteri), GL_PREFIX(PointParameteriNV)
-       .globl GL_PREFIX(PointParameteriv) ; .set GL_PREFIX(PointParameteriv), GL_PREFIX(PointParameterivNV)
-       .globl GL_PREFIX(DeleteVertexArrays) ; .set GL_PREFIX(DeleteVertexArrays), GL_PREFIX(_dispatch_stub_757)
-       .globl GL_PREFIX(IsVertexArray) ; .set GL_PREFIX(IsVertexArray), GL_PREFIX(_dispatch_stub_759)
-       .globl GL_PREFIX(BlendEquationSeparate) ; .set GL_PREFIX(BlendEquationSeparate), GL_PREFIX(_dispatch_stub_767)
-       .globl GL_PREFIX(BindFramebuffer) ; .set GL_PREFIX(BindFramebuffer), GL_PREFIX(BindFramebufferEXT)
-       .globl GL_PREFIX(BindRenderbuffer) ; .set GL_PREFIX(BindRenderbuffer), GL_PREFIX(BindRenderbufferEXT)
-       .globl GL_PREFIX(CheckFramebufferStatus) ; .set GL_PREFIX(CheckFramebufferStatus), GL_PREFIX(CheckFramebufferStatusEXT)
-       .globl GL_PREFIX(DeleteFramebuffers) ; .set GL_PREFIX(DeleteFramebuffers), GL_PREFIX(DeleteFramebuffersEXT)
-       .globl GL_PREFIX(DeleteRenderbuffers) ; .set GL_PREFIX(DeleteRenderbuffers), GL_PREFIX(DeleteRenderbuffersEXT)
-       .globl GL_PREFIX(FramebufferRenderbuffer) ; .set GL_PREFIX(FramebufferRenderbuffer), GL_PREFIX(FramebufferRenderbufferEXT)
-       .globl GL_PREFIX(FramebufferTexture1D) ; .set GL_PREFIX(FramebufferTexture1D), GL_PREFIX(FramebufferTexture1DEXT)
-       .globl GL_PREFIX(FramebufferTexture2D) ; .set GL_PREFIX(FramebufferTexture2D), GL_PREFIX(FramebufferTexture2DEXT)
-       .globl GL_PREFIX(FramebufferTexture3D) ; .set GL_PREFIX(FramebufferTexture3D), GL_PREFIX(FramebufferTexture3DEXT)
-       .globl GL_PREFIX(GenFramebuffers) ; .set GL_PREFIX(GenFramebuffers), GL_PREFIX(GenFramebuffersEXT)
-       .globl GL_PREFIX(GenRenderbuffers) ; .set GL_PREFIX(GenRenderbuffers), GL_PREFIX(GenRenderbuffersEXT)
-       .globl GL_PREFIX(GenerateMipmap) ; .set GL_PREFIX(GenerateMipmap), GL_PREFIX(GenerateMipmapEXT)
-       .globl GL_PREFIX(GetFramebufferAttachmentParameteriv) ; .set GL_PREFIX(GetFramebufferAttachmentParameteriv), GL_PREFIX(GetFramebufferAttachmentParameterivEXT)
-       .globl GL_PREFIX(GetRenderbufferParameteriv) ; .set GL_PREFIX(GetRenderbufferParameteriv), GL_PREFIX(GetRenderbufferParameterivEXT)
-       .globl GL_PREFIX(IsFramebuffer) ; .set GL_PREFIX(IsFramebuffer), GL_PREFIX(IsFramebufferEXT)
-       .globl GL_PREFIX(IsRenderbuffer) ; .set GL_PREFIX(IsRenderbuffer), GL_PREFIX(IsRenderbufferEXT)
-       .globl GL_PREFIX(RenderbufferStorage) ; .set GL_PREFIX(RenderbufferStorage), GL_PREFIX(RenderbufferStorageEXT)
-       .globl GL_PREFIX(BlitFramebuffer) ; .set GL_PREFIX(BlitFramebuffer), GL_PREFIX(_dispatch_stub_785)
-       .globl GL_PREFIX(FramebufferTextureLayer) ; .set GL_PREFIX(FramebufferTextureLayer), GL_PREFIX(FramebufferTextureLayerEXT)
-       .globl GL_PREFIX(BeginTransformFeedback) ; .set GL_PREFIX(BeginTransformFeedback), GL_PREFIX(BeginTransformFeedbackEXT)
-       .globl GL_PREFIX(BindBufferBase) ; .set GL_PREFIX(BindBufferBase), GL_PREFIX(BindBufferBaseEXT)
-       .globl GL_PREFIX(BindBufferRange) ; .set GL_PREFIX(BindBufferRange), GL_PREFIX(BindBufferRangeEXT)
-       .globl GL_PREFIX(EndTransformFeedback) ; .set GL_PREFIX(EndTransformFeedback), GL_PREFIX(EndTransformFeedbackEXT)
-       .globl GL_PREFIX(GetTransformFeedbackVarying) ; .set GL_PREFIX(GetTransformFeedbackVarying), GL_PREFIX(GetTransformFeedbackVaryingEXT)
-       .globl GL_PREFIX(TransformFeedbackVaryings) ; .set GL_PREFIX(TransformFeedbackVaryings), GL_PREFIX(TransformFeedbackVaryingsEXT)
-       .globl GL_PREFIX(ProvokingVertex) ; .set GL_PREFIX(ProvokingVertex), GL_PREFIX(ProvokingVertexEXT)
-
-#if defined(GLX_USE_TLS) && defined(__linux__)
-       .section ".note.ABI-tag", "a"
-       .p2align 2
-       .long   1f - 0f   /* name length */
-       .long   3f - 2f   /* data length */
-       .long   1         /* note length */
-0:     .asciz "GNU"      /* vendor name */
-1:     .p2align 2
-2:     .long   0         /* note data: the ABI tag */
-       .long   2,4,20    /* Minimum kernel version w/TLS */
-3:     .p2align 2        /* pad out section */
-#endif /* GLX_USE_TLS */
-
-#if defined (__ELF__) && defined (__linux__)
-       .section .note.GNU-stack,"",%progbits
-#endif
index 69122c114b0cbdafb6cdc3199fc78b2256c5ca4b..9716dc27f9779cf7fd1906c7d1c04af90da5f6c0 100644 (file)
@@ -7,10 +7,10 @@ include $(TOP)/configs/current
 INCLUDE_DIRS = \
        -I$(TOP)/include/GL \
        -I$(TOP)/include \
+       -I$(TOP)/src/mapi \
        -I.. \
        -I../main \
        -I../math \
-       -I../glapi \
        -I../tnl
 
 
diff --git a/src/mesa/x86/glapi_x86.S b/src/mesa/x86/glapi_x86.S
deleted file mode 100644 (file)
index 317f595..0000000
+++ /dev/null
@@ -1,1316 +0,0 @@
-/* DO NOT EDIT - This file generated automatically by gl_x86_asm.py (from Mesa) script */
-
-/*
- * Copyright (C) 1999-2001  Brian Paul   All Rights Reserved.
- * (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
- * BRIAN PAUL, 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 "x86/assyntax.h"
-#include "glapi/glapioffsets.h"
-
-#if defined(STDCALL_API)
-# if defined(USE_MGL_NAMESPACE)
-#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n2))
-# else
-#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n2))
-# endif
-#else
-# if defined(USE_MGL_NAMESPACE)
-#  define GL_PREFIX(n,n2) GLNAME(CONCAT(mgl,n))
-#  define _glapi_Dispatch _mglapi_Dispatch
-# else
-#  define GL_PREFIX(n,n2) GLNAME(CONCAT(gl,n))
-# endif
-#endif
-
-#define GL_OFFSET(x) CODEPTR(REGOFF(4 * x, EAX))
-
-#if defined(GNU_ASSEMBLER) && !defined(__DJGPP__) && !defined(__MINGW32__) && !defined(__APPLE__)
-#define GLOBL_FN(x) GLOBL x ; .type x, function
-#else
-#define GLOBL_FN(x) GLOBL x
-#endif
-
-#if defined(PTHREADS) || defined(WIN32_THREADS) || defined(BEOS_THREADS)
-#  define THREADS
-#endif
-
-#ifdef GLX_USE_TLS
-
-#ifdef GLX_X86_READONLY_TEXT
-# define CTX_INSNS MOV_L(GS:(EAX), EAX)
-#else
-# define CTX_INSNS NOP /* Pad for init_glapi_relocs() */
-#endif
-
-#  define GL_STUB(fn,off,fn_alt)                       \
-ALIGNTEXT16;                                           \
-GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
-GL_PREFIX(fn, fn_alt):                                 \
-       CALL(_x86_get_dispatch) ;                       \
-       CTX_INSNS ;                                     \
-       JMP(GL_OFFSET(off))
-
-#elif defined(PTHREADS)
-#  define GL_STUB(fn,off,fn_alt)                       \
-ALIGNTEXT16;                                           \
-GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
-GL_PREFIX(fn, fn_alt):                                 \
-       MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;  \
-       TEST_L(EAX, EAX) ;                              \
-       JE(1f) ;                                        \
-       JMP(GL_OFFSET(off)) ;                           \
-1:     CALL(_x86_get_dispatch) ;                       \
-       JMP(GL_OFFSET(off))
-#elif defined(THREADS)
-#  define GL_STUB(fn,off,fn_alt)                       \
-ALIGNTEXT16;                                           \
-GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
-GL_PREFIX(fn, fn_alt):                                 \
-       MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;  \
-       TEST_L(EAX, EAX) ;                              \
-       JE(1f) ;                                        \
-       JMP(GL_OFFSET(off)) ;                           \
-1:     CALL(_glapi_get_dispatch) ;                     \
-       JMP(GL_OFFSET(off))
-#else /* Non-threaded version. */
-#  define GL_STUB(fn,off,fn_alt)                       \
-ALIGNTEXT16;                                           \
-GLOBL_FN(GL_PREFIX(fn, fn_alt));                       \
-GL_PREFIX(fn, fn_alt):                                 \
-       MOV_L(CONTENT(GLNAME(_glapi_Dispatch)), EAX) ;  \
-       JMP(GL_OFFSET(off))
-#endif
-
-#ifdef HAVE_ALIAS
-#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt) \
-       .globl  GL_PREFIX(fn, fn_alt) ;                 \
-       .set    GL_PREFIX(fn, fn_alt), GL_PREFIX(alias, alias_alt)
-#else
-#  define GL_STUB_ALIAS(fn,off,fn_alt,alias,alias_alt) \
-    GL_STUB(fn, off, fn_alt)
-#endif
-
-SEG_TEXT
-
-#ifdef GLX_USE_TLS
-
-       GLOBL   GLNAME(_x86_get_dispatch)
-       HIDDEN(GLNAME(_x86_get_dispatch))
-ALIGNTEXT16
-GLNAME(_x86_get_dispatch):
-       call    1f
-1:     popl    %eax
-       addl    $_GLOBAL_OFFSET_TABLE_+[.-1b], %eax
-       movl    _glapi_tls_Dispatch@GOTNTPOFF(%eax), %eax
-       ret
-
-#elif defined(PTHREADS)
-EXTERN GLNAME(_glapi_Dispatch)
-EXTERN GLNAME(_gl_DispatchTSD)
-EXTERN GLNAME(pthread_getspecific)
-
-ALIGNTEXT16
-GLNAME(_x86_get_dispatch):
-       SUB_L(CONST(24), ESP)
-       PUSH_L(GLNAME(_gl_DispatchTSD))
-       CALL(GLNAME(pthread_getspecific))
-       ADD_L(CONST(28), ESP)
-       RET
-#elif defined(THREADS)
-EXTERN GLNAME(_glapi_get_dispatch)
-#endif
-
-#if defined( GLX_USE_TLS ) && !defined( GLX_X86_READONLY_TEXT )
-               .section        wtext, "awx", @progbits
-#endif /* defined( GLX_USE_TLS ) */
-
-               ALIGNTEXT16
-               GLOBL GLNAME(gl_dispatch_functions_start)
-               HIDDEN(GLNAME(gl_dispatch_functions_start))
-GLNAME(gl_dispatch_functions_start):
-
-       GL_STUB(NewList, _gloffset_NewList, NewList@8)
-       GL_STUB(EndList, _gloffset_EndList, EndList@0)
-       GL_STUB(CallList, _gloffset_CallList, CallList@4)
-       GL_STUB(CallLists, _gloffset_CallLists, CallLists@12)
-       GL_STUB(DeleteLists, _gloffset_DeleteLists, DeleteLists@8)
-       GL_STUB(GenLists, _gloffset_GenLists, GenLists@4)
-       GL_STUB(ListBase, _gloffset_ListBase, ListBase@4)
-       GL_STUB(Begin, _gloffset_Begin, Begin@4)
-       GL_STUB(Bitmap, _gloffset_Bitmap, Bitmap@28)
-       GL_STUB(Color3b, _gloffset_Color3b, Color3b@12)
-       GL_STUB(Color3bv, _gloffset_Color3bv, Color3bv@4)
-       GL_STUB(Color3d, _gloffset_Color3d, Color3d@24)
-       GL_STUB(Color3dv, _gloffset_Color3dv, Color3dv@4)
-       GL_STUB(Color3f, _gloffset_Color3f, Color3f@12)
-       GL_STUB(Color3fv, _gloffset_Color3fv, Color3fv@4)
-       GL_STUB(Color3i, _gloffset_Color3i, Color3i@12)
-       GL_STUB(Color3iv, _gloffset_Color3iv, Color3iv@4)
-       GL_STUB(Color3s, _gloffset_Color3s, Color3s@12)
-       GL_STUB(Color3sv, _gloffset_Color3sv, Color3sv@4)
-       GL_STUB(Color3ub, _gloffset_Color3ub, Color3ub@12)
-       GL_STUB(Color3ubv, _gloffset_Color3ubv, Color3ubv@4)
-       GL_STUB(Color3ui, _gloffset_Color3ui, Color3ui@12)
-       GL_STUB(Color3uiv, _gloffset_Color3uiv, Color3uiv@4)
-       GL_STUB(Color3us, _gloffset_Color3us, Color3us@12)
-       GL_STUB(Color3usv, _gloffset_Color3usv, Color3usv@4)
-       GL_STUB(Color4b, _gloffset_Color4b, Color4b@16)
-       GL_STUB(Color4bv, _gloffset_Color4bv, Color4bv@4)
-       GL_STUB(Color4d, _gloffset_Color4d, Color4d@32)
-       GL_STUB(Color4dv, _gloffset_Color4dv, Color4dv@4)
-       GL_STUB(Color4f, _gloffset_Color4f, Color4f@16)
-       GL_STUB(Color4fv, _gloffset_Color4fv, Color4fv@4)
-       GL_STUB(Color4i, _gloffset_Color4i, Color4i@16)
-       GL_STUB(Color4iv, _gloffset_Color4iv, Color4iv@4)
-       GL_STUB(Color4s, _gloffset_Color4s, Color4s@16)
-       GL_STUB(Color4sv, _gloffset_Color4sv, Color4sv@4)
-       GL_STUB(Color4ub, _gloffset_Color4ub, Color4ub@16)
-       GL_STUB(Color4ubv, _gloffset_Color4ubv, Color4ubv@4)
-       GL_STUB(Color4ui, _gloffset_Color4ui, Color4ui@16)
-       GL_STUB(Color4uiv, _gloffset_Color4uiv, Color4uiv@4)
-       GL_STUB(Color4us, _gloffset_Color4us, Color4us@16)
-       GL_STUB(Color4usv, _gloffset_Color4usv, Color4usv@4)
-       GL_STUB(EdgeFlag, _gloffset_EdgeFlag, EdgeFlag@4)
-       GL_STUB(EdgeFlagv, _gloffset_EdgeFlagv, EdgeFlagv@4)
-       GL_STUB(End, _gloffset_End, End@0)
-       GL_STUB(Indexd, _gloffset_Indexd, Indexd@8)
-       GL_STUB(Indexdv, _gloffset_Indexdv, Indexdv@4)
-       GL_STUB(Indexf, _gloffset_Indexf, Indexf@4)
-       GL_STUB(Indexfv, _gloffset_Indexfv, Indexfv@4)
-       GL_STUB(Indexi, _gloffset_Indexi, Indexi@4)
-       GL_STUB(Indexiv, _gloffset_Indexiv, Indexiv@4)
-       GL_STUB(Indexs, _gloffset_Indexs, Indexs@4)
-       GL_STUB(Indexsv, _gloffset_Indexsv, Indexsv@4)
-       GL_STUB(Normal3b, _gloffset_Normal3b, Normal3b@12)
-       GL_STUB(Normal3bv, _gloffset_Normal3bv, Normal3bv@4)
-       GL_STUB(Normal3d, _gloffset_Normal3d, Normal3d@24)
-       GL_STUB(Normal3dv, _gloffset_Normal3dv, Normal3dv@4)
-       GL_STUB(Normal3f, _gloffset_Normal3f, Normal3f@12)
-       GL_STUB(Normal3fv, _gloffset_Normal3fv, Normal3fv@4)
-       GL_STUB(Normal3i, _gloffset_Normal3i, Normal3i@12)
-       GL_STUB(Normal3iv, _gloffset_Normal3iv, Normal3iv@4)
-       GL_STUB(Normal3s, _gloffset_Normal3s, Normal3s@12)
-       GL_STUB(Normal3sv, _gloffset_Normal3sv, Normal3sv@4)
-       GL_STUB(RasterPos2d, _gloffset_RasterPos2d, RasterPos2d@16)
-       GL_STUB(RasterPos2dv, _gloffset_RasterPos2dv, RasterPos2dv@4)
-       GL_STUB(RasterPos2f, _gloffset_RasterPos2f, RasterPos2f@8)
-       GL_STUB(RasterPos2fv, _gloffset_RasterPos2fv, RasterPos2fv@4)
-       GL_STUB(RasterPos2i, _gloffset_RasterPos2i, RasterPos2i@8)
-       GL_STUB(RasterPos2iv, _gloffset_RasterPos2iv, RasterPos2iv@4)
-       GL_STUB(RasterPos2s, _gloffset_RasterPos2s, RasterPos2s@8)
-       GL_STUB(RasterPos2sv, _gloffset_RasterPos2sv, RasterPos2sv@4)
-       GL_STUB(RasterPos3d, _gloffset_RasterPos3d, RasterPos3d@24)
-       GL_STUB(RasterPos3dv, _gloffset_RasterPos3dv, RasterPos3dv@4)
-       GL_STUB(RasterPos3f, _gloffset_RasterPos3f, RasterPos3f@12)
-       GL_STUB(RasterPos3fv, _gloffset_RasterPos3fv, RasterPos3fv@4)
-       GL_STUB(RasterPos3i, _gloffset_RasterPos3i, RasterPos3i@12)
-       GL_STUB(RasterPos3iv, _gloffset_RasterPos3iv, RasterPos3iv@4)
-       GL_STUB(RasterPos3s, _gloffset_RasterPos3s, RasterPos3s@12)
-       GL_STUB(RasterPos3sv, _gloffset_RasterPos3sv, RasterPos3sv@4)
-       GL_STUB(RasterPos4d, _gloffset_RasterPos4d, RasterPos4d@32)
-       GL_STUB(RasterPos4dv, _gloffset_RasterPos4dv, RasterPos4dv@4)
-       GL_STUB(RasterPos4f, _gloffset_RasterPos4f, RasterPos4f@16)
-       GL_STUB(RasterPos4fv, _gloffset_RasterPos4fv, RasterPos4fv@4)
-       GL_STUB(RasterPos4i, _gloffset_RasterPos4i, RasterPos4i@16)
-       GL_STUB(RasterPos4iv, _gloffset_RasterPos4iv, RasterPos4iv@4)
-       GL_STUB(RasterPos4s, _gloffset_RasterPos4s, RasterPos4s@16)
-       GL_STUB(RasterPos4sv, _gloffset_RasterPos4sv, RasterPos4sv@4)
-       GL_STUB(Rectd, _gloffset_Rectd, Rectd@32)
-       GL_STUB(Rectdv, _gloffset_Rectdv, Rectdv@8)
-       GL_STUB(Rectf, _gloffset_Rectf, Rectf@16)
-       GL_STUB(Rectfv, _gloffset_Rectfv, Rectfv@8)
-       GL_STUB(Recti, _gloffset_Recti, Recti@16)
-       GL_STUB(Rectiv, _gloffset_Rectiv, Rectiv@8)
-       GL_STUB(Rects, _gloffset_Rects, Rects@16)
-       GL_STUB(Rectsv, _gloffset_Rectsv, Rectsv@8)
-       GL_STUB(TexCoord1d, _gloffset_TexCoord1d, TexCoord1d@8)
-       GL_STUB(TexCoord1dv, _gloffset_TexCoord1dv, TexCoord1dv@4)
-       GL_STUB(TexCoord1f, _gloffset_TexCoord1f, TexCoord1f@4)
-       GL_STUB(TexCoord1fv, _gloffset_TexCoord1fv, TexCoord1fv@4)
-       GL_STUB(TexCoord1i, _gloffset_TexCoord1i, TexCoord1i@4)
-       GL_STUB(TexCoord1iv, _gloffset_TexCoord1iv, TexCoord1iv@4)
-       GL_STUB(TexCoord1s, _gloffset_TexCoord1s, TexCoord1s@4)
-       GL_STUB(TexCoord1sv, _gloffset_TexCoord1sv, TexCoord1sv@4)
-       GL_STUB(TexCoord2d, _gloffset_TexCoord2d, TexCoord2d@16)
-       GL_STUB(TexCoord2dv, _gloffset_TexCoord2dv, TexCoord2dv@4)
-       GL_STUB(TexCoord2f, _gloffset_TexCoord2f, TexCoord2f@8)
-       GL_STUB(TexCoord2fv, _gloffset_TexCoord2fv, TexCoord2fv@4)
-       GL_STUB(TexCoord2i, _gloffset_TexCoord2i, TexCoord2i@8)
-       GL_STUB(TexCoord2iv, _gloffset_TexCoord2iv, TexCoord2iv@4)
-       GL_STUB(TexCoord2s, _gloffset_TexCoord2s, TexCoord2s@8)
-       GL_STUB(TexCoord2sv, _gloffset_TexCoord2sv, TexCoord2sv@4)
-       GL_STUB(TexCoord3d, _gloffset_TexCoord3d, TexCoord3d@24)
-       GL_STUB(TexCoord3dv, _gloffset_TexCoord3dv, TexCoord3dv@4)
-       GL_STUB(TexCoord3f, _gloffset_TexCoord3f, TexCoord3f@12)
-       GL_STUB(TexCoord3fv, _gloffset_TexCoord3fv, TexCoord3fv@4)
-       GL_STUB(TexCoord3i, _gloffset_TexCoord3i, TexCoord3i@12)
-       GL_STUB(TexCoord3iv, _gloffset_TexCoord3iv, TexCoord3iv@4)
-       GL_STUB(TexCoord3s, _gloffset_TexCoord3s, TexCoord3s@12)
-       GL_STUB(TexCoord3sv, _gloffset_TexCoord3sv, TexCoord3sv@4)
-       GL_STUB(TexCoord4d, _gloffset_TexCoord4d, TexCoord4d@32)
-       GL_STUB(TexCoord4dv, _gloffset_TexCoord4dv, TexCoord4dv@4)
-       GL_STUB(TexCoord4f, _gloffset_TexCoord4f, TexCoord4f@16)
-       GL_STUB(TexCoord4fv, _gloffset_TexCoord4fv, TexCoord4fv@4)
-       GL_STUB(TexCoord4i, _gloffset_TexCoord4i, TexCoord4i@16)
-       GL_STUB(TexCoord4iv, _gloffset_TexCoord4iv, TexCoord4iv@4)
-       GL_STUB(TexCoord4s, _gloffset_TexCoord4s, TexCoord4s@16)
-       GL_STUB(TexCoord4sv, _gloffset_TexCoord4sv, TexCoord4sv@4)
-       GL_STUB(Vertex2d, _gloffset_Vertex2d, Vertex2d@16)
-       GL_STUB(Vertex2dv, _gloffset_Vertex2dv, Vertex2dv@4)
-       GL_STUB(Vertex2f, _gloffset_Vertex2f, Vertex2f@8)
-       GL_STUB(Vertex2fv, _gloffset_Vertex2fv, Vertex2fv@4)
-       GL_STUB(Vertex2i, _gloffset_Vertex2i, Vertex2i@8)
-       GL_STUB(Vertex2iv, _gloffset_Vertex2iv, Vertex2iv@4)
-       GL_STUB(Vertex2s, _gloffset_Vertex2s, Vertex2s@8)
-       GL_STUB(Vertex2sv, _gloffset_Vertex2sv, Vertex2sv@4)
-       GL_STUB(Vertex3d, _gloffset_Vertex3d, Vertex3d@24)
-       GL_STUB(Vertex3dv, _gloffset_Vertex3dv, Vertex3dv@4)
-       GL_STUB(Vertex3f, _gloffset_Vertex3f, Vertex3f@12)
-       GL_STUB(Vertex3fv, _gloffset_Vertex3fv, Vertex3fv@4)
-       GL_STUB(Vertex3i, _gloffset_Vertex3i, Vertex3i@12)
-       GL_STUB(Vertex3iv, _gloffset_Vertex3iv, Vertex3iv@4)
-       GL_STUB(Vertex3s, _gloffset_Vertex3s, Vertex3s@12)
-       GL_STUB(Vertex3sv, _gloffset_Vertex3sv, Vertex3sv@4)
-       GL_STUB(Vertex4d, _gloffset_Vertex4d, Vertex4d@32)
-       GL_STUB(Vertex4dv, _gloffset_Vertex4dv, Vertex4dv@4)
-       GL_STUB(Vertex4f, _gloffset_Vertex4f, Vertex4f@16)
-       GL_STUB(Vertex4fv, _gloffset_Vertex4fv, Vertex4fv@4)
-       GL_STUB(Vertex4i, _gloffset_Vertex4i, Vertex4i@16)
-       GL_STUB(Vertex4iv, _gloffset_Vertex4iv, Vertex4iv@4)
-       GL_STUB(Vertex4s, _gloffset_Vertex4s, Vertex4s@16)
-       GL_STUB(Vertex4sv, _gloffset_Vertex4sv, Vertex4sv@4)
-       GL_STUB(ClipPlane, _gloffset_ClipPlane, ClipPlane@8)
-       GL_STUB(ColorMaterial, _gloffset_ColorMaterial, ColorMaterial@8)
-       GL_STUB(CullFace, _gloffset_CullFace, CullFace@4)
-       GL_STUB(Fogf, _gloffset_Fogf, Fogf@8)
-       GL_STUB(Fogfv, _gloffset_Fogfv, Fogfv@8)
-       GL_STUB(Fogi, _gloffset_Fogi, Fogi@8)
-       GL_STUB(Fogiv, _gloffset_Fogiv, Fogiv@8)
-       GL_STUB(FrontFace, _gloffset_FrontFace, FrontFace@4)
-       GL_STUB(Hint, _gloffset_Hint, Hint@8)
-       GL_STUB(Lightf, _gloffset_Lightf, Lightf@12)
-       GL_STUB(Lightfv, _gloffset_Lightfv, Lightfv@12)
-       GL_STUB(Lighti, _gloffset_Lighti, Lighti@12)
-       GL_STUB(Lightiv, _gloffset_Lightiv, Lightiv@12)
-       GL_STUB(LightModelf, _gloffset_LightModelf, LightModelf@8)
-       GL_STUB(LightModelfv, _gloffset_LightModelfv, LightModelfv@8)
-       GL_STUB(LightModeli, _gloffset_LightModeli, LightModeli@8)
-       GL_STUB(LightModeliv, _gloffset_LightModeliv, LightModeliv@8)
-       GL_STUB(LineStipple, _gloffset_LineStipple, LineStipple@8)
-       GL_STUB(LineWidth, _gloffset_LineWidth, LineWidth@4)
-       GL_STUB(Materialf, _gloffset_Materialf, Materialf@12)
-       GL_STUB(Materialfv, _gloffset_Materialfv, Materialfv@12)
-       GL_STUB(Materiali, _gloffset_Materiali, Materiali@12)
-       GL_STUB(Materialiv, _gloffset_Materialiv, Materialiv@12)
-       GL_STUB(PointSize, _gloffset_PointSize, PointSize@4)
-       GL_STUB(PolygonMode, _gloffset_PolygonMode, PolygonMode@8)
-       GL_STUB(PolygonStipple, _gloffset_PolygonStipple, PolygonStipple@4)
-       GL_STUB(Scissor, _gloffset_Scissor, Scissor@16)
-       GL_STUB(ShadeModel, _gloffset_ShadeModel, ShadeModel@4)
-       GL_STUB(TexParameterf, _gloffset_TexParameterf, TexParameterf@12)
-       GL_STUB(TexParameterfv, _gloffset_TexParameterfv, TexParameterfv@12)
-       GL_STUB(TexParameteri, _gloffset_TexParameteri, TexParameteri@12)
-       GL_STUB(TexParameteriv, _gloffset_TexParameteriv, TexParameteriv@12)
-       GL_STUB(TexImage1D, _gloffset_TexImage1D, TexImage1D@32)
-       GL_STUB(TexImage2D, _gloffset_TexImage2D, TexImage2D@36)
-       GL_STUB(TexEnvf, _gloffset_TexEnvf, TexEnvf@12)
-       GL_STUB(TexEnvfv, _gloffset_TexEnvfv, TexEnvfv@12)
-       GL_STUB(TexEnvi, _gloffset_TexEnvi, TexEnvi@12)
-       GL_STUB(TexEnviv, _gloffset_TexEnviv, TexEnviv@12)
-       GL_STUB(TexGend, _gloffset_TexGend, TexGend@16)
-       GL_STUB(TexGendv, _gloffset_TexGendv, TexGendv@12)
-       GL_STUB(TexGenf, _gloffset_TexGenf, TexGenf@12)
-       GL_STUB(TexGenfv, _gloffset_TexGenfv, TexGenfv@12)
-       GL_STUB(TexGeni, _gloffset_TexGeni, TexGeni@12)
-       GL_STUB(TexGeniv, _gloffset_TexGeniv, TexGeniv@12)
-       GL_STUB(FeedbackBuffer, _gloffset_FeedbackBuffer, FeedbackBuffer@12)
-       GL_STUB(SelectBuffer, _gloffset_SelectBuffer, SelectBuffer@8)
-       GL_STUB(RenderMode, _gloffset_RenderMode, RenderMode@4)
-       GL_STUB(InitNames, _gloffset_InitNames, InitNames@0)
-       GL_STUB(LoadName, _gloffset_LoadName, LoadName@4)
-       GL_STUB(PassThrough, _gloffset_PassThrough, PassThrough@4)
-       GL_STUB(PopName, _gloffset_PopName, PopName@0)
-       GL_STUB(PushName, _gloffset_PushName, PushName@4)
-       GL_STUB(DrawBuffer, _gloffset_DrawBuffer, DrawBuffer@4)
-       GL_STUB(Clear, _gloffset_Clear, Clear@4)
-       GL_STUB(ClearAccum, _gloffset_ClearAccum, ClearAccum@16)
-       GL_STUB(ClearIndex, _gloffset_ClearIndex, ClearIndex@4)
-       GL_STUB(ClearColor, _gloffset_ClearColor, ClearColor@16)
-       GL_STUB(ClearStencil, _gloffset_ClearStencil, ClearStencil@4)
-       GL_STUB(ClearDepth, _gloffset_ClearDepth, ClearDepth@8)
-       GL_STUB(StencilMask, _gloffset_StencilMask, StencilMask@4)
-       GL_STUB(ColorMask, _gloffset_ColorMask, ColorMask@16)
-       GL_STUB(DepthMask, _gloffset_DepthMask, DepthMask@4)
-       GL_STUB(IndexMask, _gloffset_IndexMask, IndexMask@4)
-       GL_STUB(Accum, _gloffset_Accum, Accum@8)
-       GL_STUB(Disable, _gloffset_Disable, Disable@4)
-       GL_STUB(Enable, _gloffset_Enable, Enable@4)
-       GL_STUB(Finish, _gloffset_Finish, Finish@0)
-       GL_STUB(Flush, _gloffset_Flush, Flush@0)
-       GL_STUB(PopAttrib, _gloffset_PopAttrib, PopAttrib@0)
-       GL_STUB(PushAttrib, _gloffset_PushAttrib, PushAttrib@4)
-       GL_STUB(Map1d, _gloffset_Map1d, Map1d@32)
-       GL_STUB(Map1f, _gloffset_Map1f, Map1f@24)
-       GL_STUB(Map2d, _gloffset_Map2d, Map2d@56)
-       GL_STUB(Map2f, _gloffset_Map2f, Map2f@40)
-       GL_STUB(MapGrid1d, _gloffset_MapGrid1d, MapGrid1d@20)
-       GL_STUB(MapGrid1f, _gloffset_MapGrid1f, MapGrid1f@12)
-       GL_STUB(MapGrid2d, _gloffset_MapGrid2d, MapGrid2d@40)
-       GL_STUB(MapGrid2f, _gloffset_MapGrid2f, MapGrid2f@24)
-       GL_STUB(EvalCoord1d, _gloffset_EvalCoord1d, EvalCoord1d@8)
-       GL_STUB(EvalCoord1dv, _gloffset_EvalCoord1dv, EvalCoord1dv@4)
-       GL_STUB(EvalCoord1f, _gloffset_EvalCoord1f, EvalCoord1f@4)
-       GL_STUB(EvalCoord1fv, _gloffset_EvalCoord1fv, EvalCoord1fv@4)
-       GL_STUB(EvalCoord2d, _gloffset_EvalCoord2d, EvalCoord2d@16)
-       GL_STUB(EvalCoord2dv, _gloffset_EvalCoord2dv, EvalCoord2dv@4)
-       GL_STUB(EvalCoord2f, _gloffset_EvalCoord2f, EvalCoord2f@8)
-       GL_STUB(EvalCoord2fv, _gloffset_EvalCoord2fv, EvalCoord2fv@4)
-       GL_STUB(EvalMesh1, _gloffset_EvalMesh1, EvalMesh1@12)
-       GL_STUB(EvalPoint1, _gloffset_EvalPoint1, EvalPoint1@4)
-       GL_STUB(EvalMesh2, _gloffset_EvalMesh2, EvalMesh2@20)
-       GL_STUB(EvalPoint2, _gloffset_EvalPoint2, EvalPoint2@8)
-       GL_STUB(AlphaFunc, _gloffset_AlphaFunc, AlphaFunc@8)
-       GL_STUB(BlendFunc, _gloffset_BlendFunc, BlendFunc@8)
-       GL_STUB(LogicOp, _gloffset_LogicOp, LogicOp@4)
-       GL_STUB(StencilFunc, _gloffset_StencilFunc, StencilFunc@12)
-       GL_STUB(StencilOp, _gloffset_StencilOp, StencilOp@12)
-       GL_STUB(DepthFunc, _gloffset_DepthFunc, DepthFunc@4)
-       GL_STUB(PixelZoom, _gloffset_PixelZoom, PixelZoom@8)
-       GL_STUB(PixelTransferf, _gloffset_PixelTransferf, PixelTransferf@8)
-       GL_STUB(PixelTransferi, _gloffset_PixelTransferi, PixelTransferi@8)
-       GL_STUB(PixelStoref, _gloffset_PixelStoref, PixelStoref@8)
-       GL_STUB(PixelStorei, _gloffset_PixelStorei, PixelStorei@8)
-       GL_STUB(PixelMapfv, _gloffset_PixelMapfv, PixelMapfv@12)
-       GL_STUB(PixelMapuiv, _gloffset_PixelMapuiv, PixelMapuiv@12)
-       GL_STUB(PixelMapusv, _gloffset_PixelMapusv, PixelMapusv@12)
-       GL_STUB(ReadBuffer, _gloffset_ReadBuffer, ReadBuffer@4)
-       GL_STUB(CopyPixels, _gloffset_CopyPixels, CopyPixels@20)
-       GL_STUB(ReadPixels, _gloffset_ReadPixels, ReadPixels@28)
-       GL_STUB(DrawPixels, _gloffset_DrawPixels, DrawPixels@20)
-       GL_STUB(GetBooleanv, _gloffset_GetBooleanv, GetBooleanv@8)
-       GL_STUB(GetClipPlane, _gloffset_GetClipPlane, GetClipPlane@8)
-       GL_STUB(GetDoublev, _gloffset_GetDoublev, GetDoublev@8)
-       GL_STUB(GetError, _gloffset_GetError, GetError@0)
-       GL_STUB(GetFloatv, _gloffset_GetFloatv, GetFloatv@8)
-       GL_STUB(GetIntegerv, _gloffset_GetIntegerv, GetIntegerv@8)
-       GL_STUB(GetLightfv, _gloffset_GetLightfv, GetLightfv@12)
-       GL_STUB(GetLightiv, _gloffset_GetLightiv, GetLightiv@12)
-       GL_STUB(GetMapdv, _gloffset_GetMapdv, GetMapdv@12)
-       GL_STUB(GetMapfv, _gloffset_GetMapfv, GetMapfv@12)
-       GL_STUB(GetMapiv, _gloffset_GetMapiv, GetMapiv@12)
-       GL_STUB(GetMaterialfv, _gloffset_GetMaterialfv, GetMaterialfv@12)
-       GL_STUB(GetMaterialiv, _gloffset_GetMaterialiv, GetMaterialiv@12)
-       GL_STUB(GetPixelMapfv, _gloffset_GetPixelMapfv, GetPixelMapfv@8)
-       GL_STUB(GetPixelMapuiv, _gloffset_GetPixelMapuiv, GetPixelMapuiv@8)
-       GL_STUB(GetPixelMapusv, _gloffset_GetPixelMapusv, GetPixelMapusv@8)
-       GL_STUB(GetPolygonStipple, _gloffset_GetPolygonStipple, GetPolygonStipple@4)
-       GL_STUB(GetString, _gloffset_GetString, GetString@4)
-       GL_STUB(GetTexEnvfv, _gloffset_GetTexEnvfv, GetTexEnvfv@12)
-       GL_STUB(GetTexEnviv, _gloffset_GetTexEnviv, GetTexEnviv@12)
-       GL_STUB(GetTexGendv, _gloffset_GetTexGendv, GetTexGendv@12)
-       GL_STUB(GetTexGenfv, _gloffset_GetTexGenfv, GetTexGenfv@12)
-       GL_STUB(GetTexGeniv, _gloffset_GetTexGeniv, GetTexGeniv@12)
-       GL_STUB(GetTexImage, _gloffset_GetTexImage, GetTexImage@20)
-       GL_STUB(GetTexParameterfv, _gloffset_GetTexParameterfv, GetTexParameterfv@12)
-       GL_STUB(GetTexParameteriv, _gloffset_GetTexParameteriv, GetTexParameteriv@12)
-       GL_STUB(GetTexLevelParameterfv, _gloffset_GetTexLevelParameterfv, GetTexLevelParameterfv@16)
-       GL_STUB(GetTexLevelParameteriv, _gloffset_GetTexLevelParameteriv, GetTexLevelParameteriv@16)
-       GL_STUB(IsEnabled, _gloffset_IsEnabled, IsEnabled@4)
-       GL_STUB(IsList, _gloffset_IsList, IsList@4)
-       GL_STUB(DepthRange, _gloffset_DepthRange, DepthRange@16)
-       GL_STUB(Frustum, _gloffset_Frustum, Frustum@48)
-       GL_STUB(LoadIdentity, _gloffset_LoadIdentity, LoadIdentity@0)
-       GL_STUB(LoadMatrixf, _gloffset_LoadMatrixf, LoadMatrixf@4)
-       GL_STUB(LoadMatrixd, _gloffset_LoadMatrixd, LoadMatrixd@4)
-       GL_STUB(MatrixMode, _gloffset_MatrixMode, MatrixMode@4)
-       GL_STUB(MultMatrixf, _gloffset_MultMatrixf, MultMatrixf@4)
-       GL_STUB(MultMatrixd, _gloffset_MultMatrixd, MultMatrixd@4)
-       GL_STUB(Ortho, _gloffset_Ortho, Ortho@48)
-       GL_STUB(PopMatrix, _gloffset_PopMatrix, PopMatrix@0)
-       GL_STUB(PushMatrix, _gloffset_PushMatrix, PushMatrix@0)
-       GL_STUB(Rotated, _gloffset_Rotated, Rotated@32)
-       GL_STUB(Rotatef, _gloffset_Rotatef, Rotatef@16)
-       GL_STUB(Scaled, _gloffset_Scaled, Scaled@24)
-       GL_STUB(Scalef, _gloffset_Scalef, Scalef@12)
-       GL_STUB(Translated, _gloffset_Translated, Translated@24)
-       GL_STUB(Translatef, _gloffset_Translatef, Translatef@12)
-       GL_STUB(Viewport, _gloffset_Viewport, Viewport@16)
-       GL_STUB(ArrayElement, _gloffset_ArrayElement, ArrayElement@4)
-       GL_STUB(BindTexture, _gloffset_BindTexture, BindTexture@8)
-       GL_STUB(ColorPointer, _gloffset_ColorPointer, ColorPointer@16)
-       GL_STUB(DisableClientState, _gloffset_DisableClientState, DisableClientState@4)
-       GL_STUB(DrawArrays, _gloffset_DrawArrays, DrawArrays@12)
-       GL_STUB(DrawElements, _gloffset_DrawElements, DrawElements@16)
-       GL_STUB(EdgeFlagPointer, _gloffset_EdgeFlagPointer, EdgeFlagPointer@8)
-       GL_STUB(EnableClientState, _gloffset_EnableClientState, EnableClientState@4)
-       GL_STUB(IndexPointer, _gloffset_IndexPointer, IndexPointer@12)
-       GL_STUB(Indexub, _gloffset_Indexub, Indexub@4)
-       GL_STUB(Indexubv, _gloffset_Indexubv, Indexubv@4)
-       GL_STUB(InterleavedArrays, _gloffset_InterleavedArrays, InterleavedArrays@12)
-       GL_STUB(NormalPointer, _gloffset_NormalPointer, NormalPointer@12)
-       GL_STUB(PolygonOffset, _gloffset_PolygonOffset, PolygonOffset@8)
-       GL_STUB(TexCoordPointer, _gloffset_TexCoordPointer, TexCoordPointer@16)
-       GL_STUB(VertexPointer, _gloffset_VertexPointer, VertexPointer@16)
-       GL_STUB(AreTexturesResident, _gloffset_AreTexturesResident, AreTexturesResident@12)
-       GL_STUB(CopyTexImage1D, _gloffset_CopyTexImage1D, CopyTexImage1D@28)
-       GL_STUB(CopyTexImage2D, _gloffset_CopyTexImage2D, CopyTexImage2D@32)
-       GL_STUB(CopyTexSubImage1D, _gloffset_CopyTexSubImage1D, CopyTexSubImage1D@24)
-       GL_STUB(CopyTexSubImage2D, _gloffset_CopyTexSubImage2D, CopyTexSubImage2D@32)
-       GL_STUB(DeleteTextures, _gloffset_DeleteTextures, DeleteTextures@8)
-       GL_STUB(GenTextures, _gloffset_GenTextures, GenTextures@8)
-       GL_STUB(GetPointerv, _gloffset_GetPointerv, GetPointerv@8)
-       GL_STUB(IsTexture, _gloffset_IsTexture, IsTexture@4)
-       GL_STUB(PrioritizeTextures, _gloffset_PrioritizeTextures, PrioritizeTextures@12)
-       GL_STUB(TexSubImage1D, _gloffset_TexSubImage1D, TexSubImage1D@28)
-       GL_STUB(TexSubImage2D, _gloffset_TexSubImage2D, TexSubImage2D@36)
-       GL_STUB(PopClientAttrib, _gloffset_PopClientAttrib, PopClientAttrib@0)
-       GL_STUB(PushClientAttrib, _gloffset_PushClientAttrib, PushClientAttrib@4)
-       GL_STUB(BlendColor, _gloffset_BlendColor, BlendColor@16)
-       GL_STUB(BlendEquation, _gloffset_BlendEquation, BlendEquation@4)
-       GL_STUB(DrawRangeElements, _gloffset_DrawRangeElements, DrawRangeElements@24)
-       GL_STUB(ColorTable, _gloffset_ColorTable, ColorTable@24)
-       GL_STUB(ColorTableParameterfv, _gloffset_ColorTableParameterfv, ColorTableParameterfv@12)
-       GL_STUB(ColorTableParameteriv, _gloffset_ColorTableParameteriv, ColorTableParameteriv@12)
-       GL_STUB(CopyColorTable, _gloffset_CopyColorTable, CopyColorTable@20)
-       GL_STUB(GetColorTable, _gloffset_GetColorTable, GetColorTable@16)
-       GL_STUB(GetColorTableParameterfv, _gloffset_GetColorTableParameterfv, GetColorTableParameterfv@12)
-       GL_STUB(GetColorTableParameteriv, _gloffset_GetColorTableParameteriv, GetColorTableParameteriv@12)
-       GL_STUB(ColorSubTable, _gloffset_ColorSubTable, ColorSubTable@24)
-       GL_STUB(CopyColorSubTable, _gloffset_CopyColorSubTable, CopyColorSubTable@20)
-       GL_STUB(ConvolutionFilter1D, _gloffset_ConvolutionFilter1D, ConvolutionFilter1D@24)
-       GL_STUB(ConvolutionFilter2D, _gloffset_ConvolutionFilter2D, ConvolutionFilter2D@28)
-       GL_STUB(ConvolutionParameterf, _gloffset_ConvolutionParameterf, ConvolutionParameterf@12)
-       GL_STUB(ConvolutionParameterfv, _gloffset_ConvolutionParameterfv, ConvolutionParameterfv@12)
-       GL_STUB(ConvolutionParameteri, _gloffset_ConvolutionParameteri, ConvolutionParameteri@12)
-       GL_STUB(ConvolutionParameteriv, _gloffset_ConvolutionParameteriv, ConvolutionParameteriv@12)
-       GL_STUB(CopyConvolutionFilter1D, _gloffset_CopyConvolutionFilter1D, CopyConvolutionFilter1D@20)
-       GL_STUB(CopyConvolutionFilter2D, _gloffset_CopyConvolutionFilter2D, CopyConvolutionFilter2D@24)
-       GL_STUB(GetConvolutionFilter, _gloffset_GetConvolutionFilter, GetConvolutionFilter@16)
-       GL_STUB(GetConvolutionParameterfv, _gloffset_GetConvolutionParameterfv, GetConvolutionParameterfv@12)
-       GL_STUB(GetConvolutionParameteriv, _gloffset_GetConvolutionParameteriv, GetConvolutionParameteriv@12)
-       GL_STUB(GetSeparableFilter, _gloffset_GetSeparableFilter, GetSeparableFilter@24)
-       GL_STUB(SeparableFilter2D, _gloffset_SeparableFilter2D, SeparableFilter2D@32)
-       GL_STUB(GetHistogram, _gloffset_GetHistogram, GetHistogram@20)
-       GL_STUB(GetHistogramParameterfv, _gloffset_GetHistogramParameterfv, GetHistogramParameterfv@12)
-       GL_STUB(GetHistogramParameteriv, _gloffset_GetHistogramParameteriv, GetHistogramParameteriv@12)
-       GL_STUB(GetMinmax, _gloffset_GetMinmax, GetMinmax@20)
-       GL_STUB(GetMinmaxParameterfv, _gloffset_GetMinmaxParameterfv, GetMinmaxParameterfv@12)
-       GL_STUB(GetMinmaxParameteriv, _gloffset_GetMinmaxParameteriv, GetMinmaxParameteriv@12)
-       GL_STUB(Histogram, _gloffset_Histogram, Histogram@16)
-       GL_STUB(Minmax, _gloffset_Minmax, Minmax@12)
-       GL_STUB(ResetHistogram, _gloffset_ResetHistogram, ResetHistogram@4)
-       GL_STUB(ResetMinmax, _gloffset_ResetMinmax, ResetMinmax@4)
-       GL_STUB(TexImage3D, _gloffset_TexImage3D, TexImage3D@40)
-       GL_STUB(TexSubImage3D, _gloffset_TexSubImage3D, TexSubImage3D@44)
-       GL_STUB(CopyTexSubImage3D, _gloffset_CopyTexSubImage3D, CopyTexSubImage3D@36)
-       GL_STUB(ActiveTextureARB, _gloffset_ActiveTextureARB, ActiveTextureARB@4)
-       GL_STUB(ClientActiveTextureARB, _gloffset_ClientActiveTextureARB, ClientActiveTextureARB@4)
-       GL_STUB(MultiTexCoord1dARB, _gloffset_MultiTexCoord1dARB, MultiTexCoord1dARB@12)
-       GL_STUB(MultiTexCoord1dvARB, _gloffset_MultiTexCoord1dvARB, MultiTexCoord1dvARB@8)
-       GL_STUB(MultiTexCoord1fARB, _gloffset_MultiTexCoord1fARB, MultiTexCoord1fARB@8)
-       GL_STUB(MultiTexCoord1fvARB, _gloffset_MultiTexCoord1fvARB, MultiTexCoord1fvARB@8)
-       GL_STUB(MultiTexCoord1iARB, _gloffset_MultiTexCoord1iARB, MultiTexCoord1iARB@8)
-       GL_STUB(MultiTexCoord1ivARB, _gloffset_MultiTexCoord1ivARB, MultiTexCoord1ivARB@8)
-       GL_STUB(MultiTexCoord1sARB, _gloffset_MultiTexCoord1sARB, MultiTexCoord1sARB@8)
-       GL_STUB(MultiTexCoord1svARB, _gloffset_MultiTexCoord1svARB, MultiTexCoord1svARB@8)
-       GL_STUB(MultiTexCoord2dARB, _gloffset_MultiTexCoord2dARB, MultiTexCoord2dARB@20)
-       GL_STUB(MultiTexCoord2dvARB, _gloffset_MultiTexCoord2dvARB, MultiTexCoord2dvARB@8)
-       GL_STUB(MultiTexCoord2fARB, _gloffset_MultiTexCoord2fARB, MultiTexCoord2fARB@12)
-       GL_STUB(MultiTexCoord2fvARB, _gloffset_MultiTexCoord2fvARB, MultiTexCoord2fvARB@8)
-       GL_STUB(MultiTexCoord2iARB, _gloffset_MultiTexCoord2iARB, MultiTexCoord2iARB@12)
-       GL_STUB(MultiTexCoord2ivARB, _gloffset_MultiTexCoord2ivARB, MultiTexCoord2ivARB@8)
-       GL_STUB(MultiTexCoord2sARB, _gloffset_MultiTexCoord2sARB, MultiTexCoord2sARB@12)
-       GL_STUB(MultiTexCoord2svARB, _gloffset_MultiTexCoord2svARB, MultiTexCoord2svARB@8)
-       GL_STUB(MultiTexCoord3dARB, _gloffset_MultiTexCoord3dARB, MultiTexCoord3dARB@28)
-       GL_STUB(MultiTexCoord3dvARB, _gloffset_MultiTexCoord3dvARB, MultiTexCoord3dvARB@8)
-       GL_STUB(MultiTexCoord3fARB, _gloffset_MultiTexCoord3fARB, MultiTexCoord3fARB@16)
-       GL_STUB(MultiTexCoord3fvARB, _gloffset_MultiTexCoord3fvARB, MultiTexCoord3fvARB@8)
-       GL_STUB(MultiTexCoord3iARB, _gloffset_MultiTexCoord3iARB, MultiTexCoord3iARB@16)
-       GL_STUB(MultiTexCoord3ivARB, _gloffset_MultiTexCoord3ivARB, MultiTexCoord3ivARB@8)
-       GL_STUB(MultiTexCoord3sARB, _gloffset_MultiTexCoord3sARB, MultiTexCoord3sARB@16)
-       GL_STUB(MultiTexCoord3svARB, _gloffset_MultiTexCoord3svARB, MultiTexCoord3svARB@8)
-       GL_STUB(MultiTexCoord4dARB, _gloffset_MultiTexCoord4dARB, MultiTexCoord4dARB@36)
-       GL_STUB(MultiTexCoord4dvARB, _gloffset_MultiTexCoord4dvARB, MultiTexCoord4dvARB@8)
-       GL_STUB(MultiTexCoord4fARB, _gloffset_MultiTexCoord4fARB, MultiTexCoord4fARB@20)
-       GL_STUB(MultiTexCoord4fvARB, _gloffset_MultiTexCoord4fvARB, MultiTexCoord4fvARB@8)
-       GL_STUB(MultiTexCoord4iARB, _gloffset_MultiTexCoord4iARB, MultiTexCoord4iARB@20)
-       GL_STUB(MultiTexCoord4ivARB, _gloffset_MultiTexCoord4ivARB, MultiTexCoord4ivARB@8)
-       GL_STUB(MultiTexCoord4sARB, _gloffset_MultiTexCoord4sARB, MultiTexCoord4sARB@20)
-       GL_STUB(MultiTexCoord4svARB, _gloffset_MultiTexCoord4svARB, MultiTexCoord4svARB@8)
-       GL_STUB(AttachShader, _gloffset_AttachShader, AttachShader@8)
-       GL_STUB(CreateProgram, _gloffset_CreateProgram, CreateProgram@0)
-       GL_STUB(CreateShader, _gloffset_CreateShader, CreateShader@4)
-       GL_STUB(DeleteProgram, _gloffset_DeleteProgram, DeleteProgram@4)
-       GL_STUB(DeleteShader, _gloffset_DeleteShader, DeleteShader@4)
-       GL_STUB(DetachShader, _gloffset_DetachShader, DetachShader@8)
-       GL_STUB(GetAttachedShaders, _gloffset_GetAttachedShaders, GetAttachedShaders@16)
-       GL_STUB(GetProgramInfoLog, _gloffset_GetProgramInfoLog, GetProgramInfoLog@16)
-       GL_STUB(GetProgramiv, _gloffset_GetProgramiv, GetProgramiv@12)
-       GL_STUB(GetShaderInfoLog, _gloffset_GetShaderInfoLog, GetShaderInfoLog@16)
-       GL_STUB(GetShaderiv, _gloffset_GetShaderiv, GetShaderiv@12)
-       GL_STUB(IsProgram, _gloffset_IsProgram, IsProgram@4)
-       GL_STUB(IsShader, _gloffset_IsShader, IsShader@4)
-       GL_STUB(StencilFuncSeparate, _gloffset_StencilFuncSeparate, StencilFuncSeparate@16)
-       GL_STUB(StencilMaskSeparate, _gloffset_StencilMaskSeparate, StencilMaskSeparate@8)
-       GL_STUB(StencilOpSeparate, _gloffset_StencilOpSeparate, StencilOpSeparate@16)
-       GL_STUB(UniformMatrix2x3fv, _gloffset_UniformMatrix2x3fv, UniformMatrix2x3fv@16)
-       GL_STUB(UniformMatrix2x4fv, _gloffset_UniformMatrix2x4fv, UniformMatrix2x4fv@16)
-       GL_STUB(UniformMatrix3x2fv, _gloffset_UniformMatrix3x2fv, UniformMatrix3x2fv@16)
-       GL_STUB(UniformMatrix3x4fv, _gloffset_UniformMatrix3x4fv, UniformMatrix3x4fv@16)
-       GL_STUB(UniformMatrix4x2fv, _gloffset_UniformMatrix4x2fv, UniformMatrix4x2fv@16)
-       GL_STUB(UniformMatrix4x3fv, _gloffset_UniformMatrix4x3fv, UniformMatrix4x3fv@16)
-       GL_STUB(DrawArraysInstanced, _gloffset_DrawArraysInstanced, DrawArraysInstanced@16)
-       GL_STUB(DrawElementsInstanced, _gloffset_DrawElementsInstanced, DrawElementsInstanced@20)
-       GL_STUB(LoadTransposeMatrixdARB, _gloffset_LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4)
-       GL_STUB(LoadTransposeMatrixfARB, _gloffset_LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4)
-       GL_STUB(MultTransposeMatrixdARB, _gloffset_MultTransposeMatrixdARB, MultTransposeMatrixdARB@4)
-       GL_STUB(MultTransposeMatrixfARB, _gloffset_MultTransposeMatrixfARB, MultTransposeMatrixfARB@4)
-       GL_STUB(SampleCoverageARB, _gloffset_SampleCoverageARB, SampleCoverageARB@8)
-       GL_STUB(CompressedTexImage1DARB, _gloffset_CompressedTexImage1DARB, CompressedTexImage1DARB@28)
-       GL_STUB(CompressedTexImage2DARB, _gloffset_CompressedTexImage2DARB, CompressedTexImage2DARB@32)
-       GL_STUB(CompressedTexImage3DARB, _gloffset_CompressedTexImage3DARB, CompressedTexImage3DARB@36)
-       GL_STUB(CompressedTexSubImage1DARB, _gloffset_CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28)
-       GL_STUB(CompressedTexSubImage2DARB, _gloffset_CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36)
-       GL_STUB(CompressedTexSubImage3DARB, _gloffset_CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44)
-       GL_STUB(GetCompressedTexImageARB, _gloffset_GetCompressedTexImageARB, GetCompressedTexImageARB@12)
-       GL_STUB(DisableVertexAttribArrayARB, _gloffset_DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4)
-       GL_STUB(EnableVertexAttribArrayARB, _gloffset_EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4)
-       GL_STUB(GetProgramEnvParameterdvARB, _gloffset_GetProgramEnvParameterdvARB, GetProgramEnvParameterdvARB@12)
-       GL_STUB(GetProgramEnvParameterfvARB, _gloffset_GetProgramEnvParameterfvARB, GetProgramEnvParameterfvARB@12)
-       GL_STUB(GetProgramLocalParameterdvARB, _gloffset_GetProgramLocalParameterdvARB, GetProgramLocalParameterdvARB@12)
-       GL_STUB(GetProgramLocalParameterfvARB, _gloffset_GetProgramLocalParameterfvARB, GetProgramLocalParameterfvARB@12)
-       GL_STUB(GetProgramStringARB, _gloffset_GetProgramStringARB, GetProgramStringARB@12)
-       GL_STUB(GetProgramivARB, _gloffset_GetProgramivARB, GetProgramivARB@12)
-       GL_STUB(GetVertexAttribdvARB, _gloffset_GetVertexAttribdvARB, GetVertexAttribdvARB@12)
-       GL_STUB(GetVertexAttribfvARB, _gloffset_GetVertexAttribfvARB, GetVertexAttribfvARB@12)
-       GL_STUB(GetVertexAttribivARB, _gloffset_GetVertexAttribivARB, GetVertexAttribivARB@12)
-       GL_STUB(ProgramEnvParameter4dARB, _gloffset_ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40)
-       GL_STUB(ProgramEnvParameter4dvARB, _gloffset_ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12)
-       GL_STUB(ProgramEnvParameter4fARB, _gloffset_ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24)
-       GL_STUB(ProgramEnvParameter4fvARB, _gloffset_ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12)
-       GL_STUB(ProgramLocalParameter4dARB, _gloffset_ProgramLocalParameter4dARB, ProgramLocalParameter4dARB@40)
-       GL_STUB(ProgramLocalParameter4dvARB, _gloffset_ProgramLocalParameter4dvARB, ProgramLocalParameter4dvARB@12)
-       GL_STUB(ProgramLocalParameter4fARB, _gloffset_ProgramLocalParameter4fARB, ProgramLocalParameter4fARB@24)
-       GL_STUB(ProgramLocalParameter4fvARB, _gloffset_ProgramLocalParameter4fvARB, ProgramLocalParameter4fvARB@12)
-       GL_STUB(ProgramStringARB, _gloffset_ProgramStringARB, ProgramStringARB@16)
-       GL_STUB(VertexAttrib1dARB, _gloffset_VertexAttrib1dARB, VertexAttrib1dARB@12)
-       GL_STUB(VertexAttrib1dvARB, _gloffset_VertexAttrib1dvARB, VertexAttrib1dvARB@8)
-       GL_STUB(VertexAttrib1fARB, _gloffset_VertexAttrib1fARB, VertexAttrib1fARB@8)
-       GL_STUB(VertexAttrib1fvARB, _gloffset_VertexAttrib1fvARB, VertexAttrib1fvARB@8)
-       GL_STUB(VertexAttrib1sARB, _gloffset_VertexAttrib1sARB, VertexAttrib1sARB@8)
-       GL_STUB(VertexAttrib1svARB, _gloffset_VertexAttrib1svARB, VertexAttrib1svARB@8)
-       GL_STUB(VertexAttrib2dARB, _gloffset_VertexAttrib2dARB, VertexAttrib2dARB@20)
-       GL_STUB(VertexAttrib2dvARB, _gloffset_VertexAttrib2dvARB, VertexAttrib2dvARB@8)
-       GL_STUB(VertexAttrib2fARB, _gloffset_VertexAttrib2fARB, VertexAttrib2fARB@12)
-       GL_STUB(VertexAttrib2fvARB, _gloffset_VertexAttrib2fvARB, VertexAttrib2fvARB@8)
-       GL_STUB(VertexAttrib2sARB, _gloffset_VertexAttrib2sARB, VertexAttrib2sARB@12)
-       GL_STUB(VertexAttrib2svARB, _gloffset_VertexAttrib2svARB, VertexAttrib2svARB@8)
-       GL_STUB(VertexAttrib3dARB, _gloffset_VertexAttrib3dARB, VertexAttrib3dARB@28)
-       GL_STUB(VertexAttrib3dvARB, _gloffset_VertexAttrib3dvARB, VertexAttrib3dvARB@8)
-       GL_STUB(VertexAttrib3fARB, _gloffset_VertexAttrib3fARB, VertexAttrib3fARB@16)
-       GL_STUB(VertexAttrib3fvARB, _gloffset_VertexAttrib3fvARB, VertexAttrib3fvARB@8)
-       GL_STUB(VertexAttrib3sARB, _gloffset_VertexAttrib3sARB, VertexAttrib3sARB@16)
-       GL_STUB(VertexAttrib3svARB, _gloffset_VertexAttrib3svARB, VertexAttrib3svARB@8)
-       GL_STUB(VertexAttrib4NbvARB, _gloffset_VertexAttrib4NbvARB, VertexAttrib4NbvARB@8)
-       GL_STUB(VertexAttrib4NivARB, _gloffset_VertexAttrib4NivARB, VertexAttrib4NivARB@8)
-       GL_STUB(VertexAttrib4NsvARB, _gloffset_VertexAttrib4NsvARB, VertexAttrib4NsvARB@8)
-       GL_STUB(VertexAttrib4NubARB, _gloffset_VertexAttrib4NubARB, VertexAttrib4NubARB@20)
-       GL_STUB(VertexAttrib4NubvARB, _gloffset_VertexAttrib4NubvARB, VertexAttrib4NubvARB@8)
-       GL_STUB(VertexAttrib4NuivARB, _gloffset_VertexAttrib4NuivARB, VertexAttrib4NuivARB@8)
-       GL_STUB(VertexAttrib4NusvARB, _gloffset_VertexAttrib4NusvARB, VertexAttrib4NusvARB@8)
-       GL_STUB(VertexAttrib4bvARB, _gloffset_VertexAttrib4bvARB, VertexAttrib4bvARB@8)
-       GL_STUB(VertexAttrib4dARB, _gloffset_VertexAttrib4dARB, VertexAttrib4dARB@36)
-       GL_STUB(VertexAttrib4dvARB, _gloffset_VertexAttrib4dvARB, VertexAttrib4dvARB@8)
-       GL_STUB(VertexAttrib4fARB, _gloffset_VertexAttrib4fARB, VertexAttrib4fARB@20)
-       GL_STUB(VertexAttrib4fvARB, _gloffset_VertexAttrib4fvARB, VertexAttrib4fvARB@8)
-       GL_STUB(VertexAttrib4ivARB, _gloffset_VertexAttrib4ivARB, VertexAttrib4ivARB@8)
-       GL_STUB(VertexAttrib4sARB, _gloffset_VertexAttrib4sARB, VertexAttrib4sARB@20)
-       GL_STUB(VertexAttrib4svARB, _gloffset_VertexAttrib4svARB, VertexAttrib4svARB@8)
-       GL_STUB(VertexAttrib4ubvARB, _gloffset_VertexAttrib4ubvARB, VertexAttrib4ubvARB@8)
-       GL_STUB(VertexAttrib4uivARB, _gloffset_VertexAttrib4uivARB, VertexAttrib4uivARB@8)
-       GL_STUB(VertexAttrib4usvARB, _gloffset_VertexAttrib4usvARB, VertexAttrib4usvARB@8)
-       GL_STUB(VertexAttribPointerARB, _gloffset_VertexAttribPointerARB, VertexAttribPointerARB@24)
-       GL_STUB(BindBufferARB, _gloffset_BindBufferARB, BindBufferARB@8)
-       GL_STUB(BufferDataARB, _gloffset_BufferDataARB, BufferDataARB@16)
-       GL_STUB(BufferSubDataARB, _gloffset_BufferSubDataARB, BufferSubDataARB@16)
-       GL_STUB(DeleteBuffersARB, _gloffset_DeleteBuffersARB, DeleteBuffersARB@8)
-       GL_STUB(GenBuffersARB, _gloffset_GenBuffersARB, GenBuffersARB@8)
-       GL_STUB(GetBufferParameterivARB, _gloffset_GetBufferParameterivARB, GetBufferParameterivARB@12)
-       GL_STUB(GetBufferPointervARB, _gloffset_GetBufferPointervARB, GetBufferPointervARB@12)
-       GL_STUB(GetBufferSubDataARB, _gloffset_GetBufferSubDataARB, GetBufferSubDataARB@16)
-       GL_STUB(IsBufferARB, _gloffset_IsBufferARB, IsBufferARB@4)
-       GL_STUB(MapBufferARB, _gloffset_MapBufferARB, MapBufferARB@8)
-       GL_STUB(UnmapBufferARB, _gloffset_UnmapBufferARB, UnmapBufferARB@4)
-       GL_STUB(BeginQueryARB, _gloffset_BeginQueryARB, BeginQueryARB@8)
-       GL_STUB(DeleteQueriesARB, _gloffset_DeleteQueriesARB, DeleteQueriesARB@8)
-       GL_STUB(EndQueryARB, _gloffset_EndQueryARB, EndQueryARB@4)
-       GL_STUB(GenQueriesARB, _gloffset_GenQueriesARB, GenQueriesARB@8)
-       GL_STUB(GetQueryObjectivARB, _gloffset_GetQueryObjectivARB, GetQueryObjectivARB@12)
-       GL_STUB(GetQueryObjectuivARB, _gloffset_GetQueryObjectuivARB, GetQueryObjectuivARB@12)
-       GL_STUB(GetQueryivARB, _gloffset_GetQueryivARB, GetQueryivARB@12)
-       GL_STUB(IsQueryARB, _gloffset_IsQueryARB, IsQueryARB@4)
-       GL_STUB(AttachObjectARB, _gloffset_AttachObjectARB, AttachObjectARB@8)
-       GL_STUB(CompileShaderARB, _gloffset_CompileShaderARB, CompileShaderARB@4)
-       GL_STUB(CreateProgramObjectARB, _gloffset_CreateProgramObjectARB, CreateProgramObjectARB@0)
-       GL_STUB(CreateShaderObjectARB, _gloffset_CreateShaderObjectARB, CreateShaderObjectARB@4)
-       GL_STUB(DeleteObjectARB, _gloffset_DeleteObjectARB, DeleteObjectARB@4)
-       GL_STUB(DetachObjectARB, _gloffset_DetachObjectARB, DetachObjectARB@8)
-       GL_STUB(GetActiveUniformARB, _gloffset_GetActiveUniformARB, GetActiveUniformARB@28)
-       GL_STUB(GetAttachedObjectsARB, _gloffset_GetAttachedObjectsARB, GetAttachedObjectsARB@16)
-       GL_STUB(GetHandleARB, _gloffset_GetHandleARB, GetHandleARB@4)
-       GL_STUB(GetInfoLogARB, _gloffset_GetInfoLogARB, GetInfoLogARB@16)
-       GL_STUB(GetObjectParameterfvARB, _gloffset_GetObjectParameterfvARB, GetObjectParameterfvARB@12)
-       GL_STUB(GetObjectParameterivARB, _gloffset_GetObjectParameterivARB, GetObjectParameterivARB@12)
-       GL_STUB(GetShaderSourceARB, _gloffset_GetShaderSourceARB, GetShaderSourceARB@16)
-       GL_STUB(GetUniformLocationARB, _gloffset_GetUniformLocationARB, GetUniformLocationARB@8)
-       GL_STUB(GetUniformfvARB, _gloffset_GetUniformfvARB, GetUniformfvARB@12)
-       GL_STUB(GetUniformivARB, _gloffset_GetUniformivARB, GetUniformivARB@12)
-       GL_STUB(LinkProgramARB, _gloffset_LinkProgramARB, LinkProgramARB@4)
-       GL_STUB(ShaderSourceARB, _gloffset_ShaderSourceARB, ShaderSourceARB@16)
-       GL_STUB(Uniform1fARB, _gloffset_Uniform1fARB, Uniform1fARB@8)
-       GL_STUB(Uniform1fvARB, _gloffset_Uniform1fvARB, Uniform1fvARB@12)
-       GL_STUB(Uniform1iARB, _gloffset_Uniform1iARB, Uniform1iARB@8)
-       GL_STUB(Uniform1ivARB, _gloffset_Uniform1ivARB, Uniform1ivARB@12)
-       GL_STUB(Uniform2fARB, _gloffset_Uniform2fARB, Uniform2fARB@12)
-       GL_STUB(Uniform2fvARB, _gloffset_Uniform2fvARB, Uniform2fvARB@12)
-       GL_STUB(Uniform2iARB, _gloffset_Uniform2iARB, Uniform2iARB@12)
-       GL_STUB(Uniform2ivARB, _gloffset_Uniform2ivARB, Uniform2ivARB@12)
-       GL_STUB(Uniform3fARB, _gloffset_Uniform3fARB, Uniform3fARB@16)
-       GL_STUB(Uniform3fvARB, _gloffset_Uniform3fvARB, Uniform3fvARB@12)
-       GL_STUB(Uniform3iARB, _gloffset_Uniform3iARB, Uniform3iARB@16)
-       GL_STUB(Uniform3ivARB, _gloffset_Uniform3ivARB, Uniform3ivARB@12)
-       GL_STUB(Uniform4fARB, _gloffset_Uniform4fARB, Uniform4fARB@20)
-       GL_STUB(Uniform4fvARB, _gloffset_Uniform4fvARB, Uniform4fvARB@12)
-       GL_STUB(Uniform4iARB, _gloffset_Uniform4iARB, Uniform4iARB@20)
-       GL_STUB(Uniform4ivARB, _gloffset_Uniform4ivARB, Uniform4ivARB@12)
-       GL_STUB(UniformMatrix2fvARB, _gloffset_UniformMatrix2fvARB, UniformMatrix2fvARB@16)
-       GL_STUB(UniformMatrix3fvARB, _gloffset_UniformMatrix3fvARB, UniformMatrix3fvARB@16)
-       GL_STUB(UniformMatrix4fvARB, _gloffset_UniformMatrix4fvARB, UniformMatrix4fvARB@16)
-       GL_STUB(UseProgramObjectARB, _gloffset_UseProgramObjectARB, UseProgramObjectARB@4)
-       GL_STUB(ValidateProgramARB, _gloffset_ValidateProgramARB, ValidateProgramARB@4)
-       GL_STUB(BindAttribLocationARB, _gloffset_BindAttribLocationARB, BindAttribLocationARB@12)
-       GL_STUB(GetActiveAttribARB, _gloffset_GetActiveAttribARB, GetActiveAttribARB@28)
-       GL_STUB(GetAttribLocationARB, _gloffset_GetAttribLocationARB, GetAttribLocationARB@8)
-       GL_STUB(DrawBuffersARB, _gloffset_DrawBuffersARB, DrawBuffersARB@8)
-       GL_STUB(RenderbufferStorageMultisample, _gloffset_RenderbufferStorageMultisample, RenderbufferStorageMultisample@20)
-       GL_STUB(FlushMappedBufferRange, _gloffset_FlushMappedBufferRange, FlushMappedBufferRange@12)
-       GL_STUB(MapBufferRange, _gloffset_MapBufferRange, MapBufferRange@16)
-       GL_STUB(BindVertexArray, _gloffset_BindVertexArray, BindVertexArray@4)
-       GL_STUB(GenVertexArrays, _gloffset_GenVertexArrays, GenVertexArrays@8)
-       GL_STUB(CopyBufferSubData, _gloffset_CopyBufferSubData, CopyBufferSubData@20)
-       GL_STUB(ClientWaitSync, _gloffset_ClientWaitSync, ClientWaitSync@12)
-       GL_STUB(DeleteSync, _gloffset_DeleteSync, DeleteSync@4)
-       GL_STUB(FenceSync, _gloffset_FenceSync, FenceSync@8)
-       GL_STUB(GetInteger64v, _gloffset_GetInteger64v, GetInteger64v@8)
-       GL_STUB(GetSynciv, _gloffset_GetSynciv, GetSynciv@20)
-       GL_STUB(IsSync, _gloffset_IsSync, IsSync@4)
-       GL_STUB(WaitSync, _gloffset_WaitSync, WaitSync@12)
-       GL_STUB(DrawElementsBaseVertex, _gloffset_DrawElementsBaseVertex, DrawElementsBaseVertex@20)
-       GL_STUB(DrawRangeElementsBaseVertex, _gloffset_DrawRangeElementsBaseVertex, DrawRangeElementsBaseVertex@28)
-       GL_STUB(MultiDrawElementsBaseVertex, _gloffset_MultiDrawElementsBaseVertex, MultiDrawElementsBaseVertex@24)
-       GL_STUB(PolygonOffsetEXT, _gloffset_PolygonOffsetEXT, PolygonOffsetEXT@8)
-       GL_STUB(_dispatch_stub_580, _gloffset_GetPixelTexGenParameterfvSGIS, _dispatch_stub_580@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_580, _dispatch_stub_580@8))
-       GL_STUB(_dispatch_stub_581, _gloffset_GetPixelTexGenParameterivSGIS, _dispatch_stub_581@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_581, _dispatch_stub_581@8))
-       GL_STUB(_dispatch_stub_582, _gloffset_PixelTexGenParameterfSGIS, _dispatch_stub_582@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_582, _dispatch_stub_582@8))
-       GL_STUB(_dispatch_stub_583, _gloffset_PixelTexGenParameterfvSGIS, _dispatch_stub_583@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_583, _dispatch_stub_583@8))
-       GL_STUB(_dispatch_stub_584, _gloffset_PixelTexGenParameteriSGIS, _dispatch_stub_584@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_584, _dispatch_stub_584@8))
-       GL_STUB(_dispatch_stub_585, _gloffset_PixelTexGenParameterivSGIS, _dispatch_stub_585@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_585, _dispatch_stub_585@8))
-       GL_STUB(_dispatch_stub_586, _gloffset_SampleMaskSGIS, _dispatch_stub_586@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_586, _dispatch_stub_586@8))
-       GL_STUB(_dispatch_stub_587, _gloffset_SamplePatternSGIS, _dispatch_stub_587@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_587, _dispatch_stub_587@4))
-       GL_STUB(ColorPointerEXT, _gloffset_ColorPointerEXT, ColorPointerEXT@20)
-       GL_STUB(EdgeFlagPointerEXT, _gloffset_EdgeFlagPointerEXT, EdgeFlagPointerEXT@12)
-       GL_STUB(IndexPointerEXT, _gloffset_IndexPointerEXT, IndexPointerEXT@16)
-       GL_STUB(NormalPointerEXT, _gloffset_NormalPointerEXT, NormalPointerEXT@16)
-       GL_STUB(TexCoordPointerEXT, _gloffset_TexCoordPointerEXT, TexCoordPointerEXT@20)
-       GL_STUB(VertexPointerEXT, _gloffset_VertexPointerEXT, VertexPointerEXT@20)
-       GL_STUB(PointParameterfEXT, _gloffset_PointParameterfEXT, PointParameterfEXT@8)
-       GL_STUB(PointParameterfvEXT, _gloffset_PointParameterfvEXT, PointParameterfvEXT@8)
-       GL_STUB(LockArraysEXT, _gloffset_LockArraysEXT, LockArraysEXT@8)
-       GL_STUB(UnlockArraysEXT, _gloffset_UnlockArraysEXT, UnlockArraysEXT@0)
-       GL_STUB(_dispatch_stub_598, _gloffset_CullParameterdvEXT, _dispatch_stub_598@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_598, _dispatch_stub_598@8))
-       GL_STUB(_dispatch_stub_599, _gloffset_CullParameterfvEXT, _dispatch_stub_599@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_599, _dispatch_stub_599@8))
-       GL_STUB(SecondaryColor3bEXT, _gloffset_SecondaryColor3bEXT, SecondaryColor3bEXT@12)
-       GL_STUB(SecondaryColor3bvEXT, _gloffset_SecondaryColor3bvEXT, SecondaryColor3bvEXT@4)
-       GL_STUB(SecondaryColor3dEXT, _gloffset_SecondaryColor3dEXT, SecondaryColor3dEXT@24)
-       GL_STUB(SecondaryColor3dvEXT, _gloffset_SecondaryColor3dvEXT, SecondaryColor3dvEXT@4)
-       GL_STUB(SecondaryColor3fEXT, _gloffset_SecondaryColor3fEXT, SecondaryColor3fEXT@12)
-       GL_STUB(SecondaryColor3fvEXT, _gloffset_SecondaryColor3fvEXT, SecondaryColor3fvEXT@4)
-       GL_STUB(SecondaryColor3iEXT, _gloffset_SecondaryColor3iEXT, SecondaryColor3iEXT@12)
-       GL_STUB(SecondaryColor3ivEXT, _gloffset_SecondaryColor3ivEXT, SecondaryColor3ivEXT@4)
-       GL_STUB(SecondaryColor3sEXT, _gloffset_SecondaryColor3sEXT, SecondaryColor3sEXT@12)
-       GL_STUB(SecondaryColor3svEXT, _gloffset_SecondaryColor3svEXT, SecondaryColor3svEXT@4)
-       GL_STUB(SecondaryColor3ubEXT, _gloffset_SecondaryColor3ubEXT, SecondaryColor3ubEXT@12)
-       GL_STUB(SecondaryColor3ubvEXT, _gloffset_SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4)
-       GL_STUB(SecondaryColor3uiEXT, _gloffset_SecondaryColor3uiEXT, SecondaryColor3uiEXT@12)
-       GL_STUB(SecondaryColor3uivEXT, _gloffset_SecondaryColor3uivEXT, SecondaryColor3uivEXT@4)
-       GL_STUB(SecondaryColor3usEXT, _gloffset_SecondaryColor3usEXT, SecondaryColor3usEXT@12)
-       GL_STUB(SecondaryColor3usvEXT, _gloffset_SecondaryColor3usvEXT, SecondaryColor3usvEXT@4)
-       GL_STUB(SecondaryColorPointerEXT, _gloffset_SecondaryColorPointerEXT, SecondaryColorPointerEXT@16)
-       GL_STUB(MultiDrawArraysEXT, _gloffset_MultiDrawArraysEXT, MultiDrawArraysEXT@16)
-       GL_STUB(MultiDrawElementsEXT, _gloffset_MultiDrawElementsEXT, MultiDrawElementsEXT@20)
-       GL_STUB(FogCoordPointerEXT, _gloffset_FogCoordPointerEXT, FogCoordPointerEXT@12)
-       GL_STUB(FogCoorddEXT, _gloffset_FogCoorddEXT, FogCoorddEXT@8)
-       GL_STUB(FogCoorddvEXT, _gloffset_FogCoorddvEXT, FogCoorddvEXT@4)
-       GL_STUB(FogCoordfEXT, _gloffset_FogCoordfEXT, FogCoordfEXT@4)
-       GL_STUB(FogCoordfvEXT, _gloffset_FogCoordfvEXT, FogCoordfvEXT@4)
-       GL_STUB(_dispatch_stub_624, _gloffset_PixelTexGenSGIX, _dispatch_stub_624@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_624, _dispatch_stub_624@4))
-       GL_STUB(BlendFuncSeparateEXT, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
-       GL_STUB(FlushVertexArrayRangeNV, _gloffset_FlushVertexArrayRangeNV, FlushVertexArrayRangeNV@0)
-       GL_STUB(VertexArrayRangeNV, _gloffset_VertexArrayRangeNV, VertexArrayRangeNV@8)
-       GL_STUB(CombinerInputNV, _gloffset_CombinerInputNV, CombinerInputNV@24)
-       GL_STUB(CombinerOutputNV, _gloffset_CombinerOutputNV, CombinerOutputNV@40)
-       GL_STUB(CombinerParameterfNV, _gloffset_CombinerParameterfNV, CombinerParameterfNV@8)
-       GL_STUB(CombinerParameterfvNV, _gloffset_CombinerParameterfvNV, CombinerParameterfvNV@8)
-       GL_STUB(CombinerParameteriNV, _gloffset_CombinerParameteriNV, CombinerParameteriNV@8)
-       GL_STUB(CombinerParameterivNV, _gloffset_CombinerParameterivNV, CombinerParameterivNV@8)
-       GL_STUB(FinalCombinerInputNV, _gloffset_FinalCombinerInputNV, FinalCombinerInputNV@16)
-       GL_STUB(GetCombinerInputParameterfvNV, _gloffset_GetCombinerInputParameterfvNV, GetCombinerInputParameterfvNV@20)
-       GL_STUB(GetCombinerInputParameterivNV, _gloffset_GetCombinerInputParameterivNV, GetCombinerInputParameterivNV@20)
-       GL_STUB(GetCombinerOutputParameterfvNV, _gloffset_GetCombinerOutputParameterfvNV, GetCombinerOutputParameterfvNV@16)
-       GL_STUB(GetCombinerOutputParameterivNV, _gloffset_GetCombinerOutputParameterivNV, GetCombinerOutputParameterivNV@16)
-       GL_STUB(GetFinalCombinerInputParameterfvNV, _gloffset_GetFinalCombinerInputParameterfvNV, GetFinalCombinerInputParameterfvNV@12)
-       GL_STUB(GetFinalCombinerInputParameterivNV, _gloffset_GetFinalCombinerInputParameterivNV, GetFinalCombinerInputParameterivNV@12)
-       GL_STUB(ResizeBuffersMESA, _gloffset_ResizeBuffersMESA, ResizeBuffersMESA@0)
-       GL_STUB(WindowPos2dMESA, _gloffset_WindowPos2dMESA, WindowPos2dMESA@16)
-       GL_STUB(WindowPos2dvMESA, _gloffset_WindowPos2dvMESA, WindowPos2dvMESA@4)
-       GL_STUB(WindowPos2fMESA, _gloffset_WindowPos2fMESA, WindowPos2fMESA@8)
-       GL_STUB(WindowPos2fvMESA, _gloffset_WindowPos2fvMESA, WindowPos2fvMESA@4)
-       GL_STUB(WindowPos2iMESA, _gloffset_WindowPos2iMESA, WindowPos2iMESA@8)
-       GL_STUB(WindowPos2ivMESA, _gloffset_WindowPos2ivMESA, WindowPos2ivMESA@4)
-       GL_STUB(WindowPos2sMESA, _gloffset_WindowPos2sMESA, WindowPos2sMESA@8)
-       GL_STUB(WindowPos2svMESA, _gloffset_WindowPos2svMESA, WindowPos2svMESA@4)
-       GL_STUB(WindowPos3dMESA, _gloffset_WindowPos3dMESA, WindowPos3dMESA@24)
-       GL_STUB(WindowPos3dvMESA, _gloffset_WindowPos3dvMESA, WindowPos3dvMESA@4)
-       GL_STUB(WindowPos3fMESA, _gloffset_WindowPos3fMESA, WindowPos3fMESA@12)
-       GL_STUB(WindowPos3fvMESA, _gloffset_WindowPos3fvMESA, WindowPos3fvMESA@4)
-       GL_STUB(WindowPos3iMESA, _gloffset_WindowPos3iMESA, WindowPos3iMESA@12)
-       GL_STUB(WindowPos3ivMESA, _gloffset_WindowPos3ivMESA, WindowPos3ivMESA@4)
-       GL_STUB(WindowPos3sMESA, _gloffset_WindowPos3sMESA, WindowPos3sMESA@12)
-       GL_STUB(WindowPos3svMESA, _gloffset_WindowPos3svMESA, WindowPos3svMESA@4)
-       GL_STUB(WindowPos4dMESA, _gloffset_WindowPos4dMESA, WindowPos4dMESA@32)
-       GL_STUB(WindowPos4dvMESA, _gloffset_WindowPos4dvMESA, WindowPos4dvMESA@4)
-       GL_STUB(WindowPos4fMESA, _gloffset_WindowPos4fMESA, WindowPos4fMESA@16)
-       GL_STUB(WindowPos4fvMESA, _gloffset_WindowPos4fvMESA, WindowPos4fvMESA@4)
-       GL_STUB(WindowPos4iMESA, _gloffset_WindowPos4iMESA, WindowPos4iMESA@16)
-       GL_STUB(WindowPos4ivMESA, _gloffset_WindowPos4ivMESA, WindowPos4ivMESA@4)
-       GL_STUB(WindowPos4sMESA, _gloffset_WindowPos4sMESA, WindowPos4sMESA@16)
-       GL_STUB(WindowPos4svMESA, _gloffset_WindowPos4svMESA, WindowPos4svMESA@4)
-       GL_STUB(_dispatch_stub_666, _gloffset_MultiModeDrawArraysIBM, _dispatch_stub_666@20)
-       HIDDEN(GL_PREFIX(_dispatch_stub_666, _dispatch_stub_666@20))
-       GL_STUB(_dispatch_stub_667, _gloffset_MultiModeDrawElementsIBM, _dispatch_stub_667@24)
-       HIDDEN(GL_PREFIX(_dispatch_stub_667, _dispatch_stub_667@24))
-       GL_STUB(_dispatch_stub_668, _gloffset_DeleteFencesNV, _dispatch_stub_668@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_668, _dispatch_stub_668@8))
-       GL_STUB(_dispatch_stub_669, _gloffset_FinishFenceNV, _dispatch_stub_669@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_669, _dispatch_stub_669@4))
-       GL_STUB(_dispatch_stub_670, _gloffset_GenFencesNV, _dispatch_stub_670@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_670, _dispatch_stub_670@8))
-       GL_STUB(_dispatch_stub_671, _gloffset_GetFenceivNV, _dispatch_stub_671@12)
-       HIDDEN(GL_PREFIX(_dispatch_stub_671, _dispatch_stub_671@12))
-       GL_STUB(_dispatch_stub_672, _gloffset_IsFenceNV, _dispatch_stub_672@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_672, _dispatch_stub_672@4))
-       GL_STUB(_dispatch_stub_673, _gloffset_SetFenceNV, _dispatch_stub_673@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_673, _dispatch_stub_673@8))
-       GL_STUB(_dispatch_stub_674, _gloffset_TestFenceNV, _dispatch_stub_674@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_674, _dispatch_stub_674@4))
-       GL_STUB(AreProgramsResidentNV, _gloffset_AreProgramsResidentNV, AreProgramsResidentNV@12)
-       GL_STUB(BindProgramNV, _gloffset_BindProgramNV, BindProgramNV@8)
-       GL_STUB(DeleteProgramsNV, _gloffset_DeleteProgramsNV, DeleteProgramsNV@8)
-       GL_STUB(ExecuteProgramNV, _gloffset_ExecuteProgramNV, ExecuteProgramNV@12)
-       GL_STUB(GenProgramsNV, _gloffset_GenProgramsNV, GenProgramsNV@8)
-       GL_STUB(GetProgramParameterdvNV, _gloffset_GetProgramParameterdvNV, GetProgramParameterdvNV@16)
-       GL_STUB(GetProgramParameterfvNV, _gloffset_GetProgramParameterfvNV, GetProgramParameterfvNV@16)
-       GL_STUB(GetProgramStringNV, _gloffset_GetProgramStringNV, GetProgramStringNV@12)
-       GL_STUB(GetProgramivNV, _gloffset_GetProgramivNV, GetProgramivNV@12)
-       GL_STUB(GetTrackMatrixivNV, _gloffset_GetTrackMatrixivNV, GetTrackMatrixivNV@16)
-       GL_STUB(GetVertexAttribPointervNV, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
-       GL_STUB(GetVertexAttribdvNV, _gloffset_GetVertexAttribdvNV, GetVertexAttribdvNV@12)
-       GL_STUB(GetVertexAttribfvNV, _gloffset_GetVertexAttribfvNV, GetVertexAttribfvNV@12)
-       GL_STUB(GetVertexAttribivNV, _gloffset_GetVertexAttribivNV, GetVertexAttribivNV@12)
-       GL_STUB(IsProgramNV, _gloffset_IsProgramNV, IsProgramNV@4)
-       GL_STUB(LoadProgramNV, _gloffset_LoadProgramNV, LoadProgramNV@16)
-       GL_STUB(ProgramParameters4dvNV, _gloffset_ProgramParameters4dvNV, ProgramParameters4dvNV@16)
-       GL_STUB(ProgramParameters4fvNV, _gloffset_ProgramParameters4fvNV, ProgramParameters4fvNV@16)
-       GL_STUB(RequestResidentProgramsNV, _gloffset_RequestResidentProgramsNV, RequestResidentProgramsNV@8)
-       GL_STUB(TrackMatrixNV, _gloffset_TrackMatrixNV, TrackMatrixNV@16)
-       GL_STUB(VertexAttrib1dNV, _gloffset_VertexAttrib1dNV, VertexAttrib1dNV@12)
-       GL_STUB(VertexAttrib1dvNV, _gloffset_VertexAttrib1dvNV, VertexAttrib1dvNV@8)
-       GL_STUB(VertexAttrib1fNV, _gloffset_VertexAttrib1fNV, VertexAttrib1fNV@8)
-       GL_STUB(VertexAttrib1fvNV, _gloffset_VertexAttrib1fvNV, VertexAttrib1fvNV@8)
-       GL_STUB(VertexAttrib1sNV, _gloffset_VertexAttrib1sNV, VertexAttrib1sNV@8)
-       GL_STUB(VertexAttrib1svNV, _gloffset_VertexAttrib1svNV, VertexAttrib1svNV@8)
-       GL_STUB(VertexAttrib2dNV, _gloffset_VertexAttrib2dNV, VertexAttrib2dNV@20)
-       GL_STUB(VertexAttrib2dvNV, _gloffset_VertexAttrib2dvNV, VertexAttrib2dvNV@8)
-       GL_STUB(VertexAttrib2fNV, _gloffset_VertexAttrib2fNV, VertexAttrib2fNV@12)
-       GL_STUB(VertexAttrib2fvNV, _gloffset_VertexAttrib2fvNV, VertexAttrib2fvNV@8)
-       GL_STUB(VertexAttrib2sNV, _gloffset_VertexAttrib2sNV, VertexAttrib2sNV@12)
-       GL_STUB(VertexAttrib2svNV, _gloffset_VertexAttrib2svNV, VertexAttrib2svNV@8)
-       GL_STUB(VertexAttrib3dNV, _gloffset_VertexAttrib3dNV, VertexAttrib3dNV@28)
-       GL_STUB(VertexAttrib3dvNV, _gloffset_VertexAttrib3dvNV, VertexAttrib3dvNV@8)
-       GL_STUB(VertexAttrib3fNV, _gloffset_VertexAttrib3fNV, VertexAttrib3fNV@16)
-       GL_STUB(VertexAttrib3fvNV, _gloffset_VertexAttrib3fvNV, VertexAttrib3fvNV@8)
-       GL_STUB(VertexAttrib3sNV, _gloffset_VertexAttrib3sNV, VertexAttrib3sNV@16)
-       GL_STUB(VertexAttrib3svNV, _gloffset_VertexAttrib3svNV, VertexAttrib3svNV@8)
-       GL_STUB(VertexAttrib4dNV, _gloffset_VertexAttrib4dNV, VertexAttrib4dNV@36)
-       GL_STUB(VertexAttrib4dvNV, _gloffset_VertexAttrib4dvNV, VertexAttrib4dvNV@8)
-       GL_STUB(VertexAttrib4fNV, _gloffset_VertexAttrib4fNV, VertexAttrib4fNV@20)
-       GL_STUB(VertexAttrib4fvNV, _gloffset_VertexAttrib4fvNV, VertexAttrib4fvNV@8)
-       GL_STUB(VertexAttrib4sNV, _gloffset_VertexAttrib4sNV, VertexAttrib4sNV@20)
-       GL_STUB(VertexAttrib4svNV, _gloffset_VertexAttrib4svNV, VertexAttrib4svNV@8)
-       GL_STUB(VertexAttrib4ubNV, _gloffset_VertexAttrib4ubNV, VertexAttrib4ubNV@20)
-       GL_STUB(VertexAttrib4ubvNV, _gloffset_VertexAttrib4ubvNV, VertexAttrib4ubvNV@8)
-       GL_STUB(VertexAttribPointerNV, _gloffset_VertexAttribPointerNV, VertexAttribPointerNV@20)
-       GL_STUB(VertexAttribs1dvNV, _gloffset_VertexAttribs1dvNV, VertexAttribs1dvNV@12)
-       GL_STUB(VertexAttribs1fvNV, _gloffset_VertexAttribs1fvNV, VertexAttribs1fvNV@12)
-       GL_STUB(VertexAttribs1svNV, _gloffset_VertexAttribs1svNV, VertexAttribs1svNV@12)
-       GL_STUB(VertexAttribs2dvNV, _gloffset_VertexAttribs2dvNV, VertexAttribs2dvNV@12)
-       GL_STUB(VertexAttribs2fvNV, _gloffset_VertexAttribs2fvNV, VertexAttribs2fvNV@12)
-       GL_STUB(VertexAttribs2svNV, _gloffset_VertexAttribs2svNV, VertexAttribs2svNV@12)
-       GL_STUB(VertexAttribs3dvNV, _gloffset_VertexAttribs3dvNV, VertexAttribs3dvNV@12)
-       GL_STUB(VertexAttribs3fvNV, _gloffset_VertexAttribs3fvNV, VertexAttribs3fvNV@12)
-       GL_STUB(VertexAttribs3svNV, _gloffset_VertexAttribs3svNV, VertexAttribs3svNV@12)
-       GL_STUB(VertexAttribs4dvNV, _gloffset_VertexAttribs4dvNV, VertexAttribs4dvNV@12)
-       GL_STUB(VertexAttribs4fvNV, _gloffset_VertexAttribs4fvNV, VertexAttribs4fvNV@12)
-       GL_STUB(VertexAttribs4svNV, _gloffset_VertexAttribs4svNV, VertexAttribs4svNV@12)
-       GL_STUB(VertexAttribs4ubvNV, _gloffset_VertexAttribs4ubvNV, VertexAttribs4ubvNV@12)
-       GL_STUB(GetTexBumpParameterfvATI, _gloffset_GetTexBumpParameterfvATI, GetTexBumpParameterfvATI@8)
-       GL_STUB(GetTexBumpParameterivATI, _gloffset_GetTexBumpParameterivATI, GetTexBumpParameterivATI@8)
-       GL_STUB(TexBumpParameterfvATI, _gloffset_TexBumpParameterfvATI, TexBumpParameterfvATI@8)
-       GL_STUB(TexBumpParameterivATI, _gloffset_TexBumpParameterivATI, TexBumpParameterivATI@8)
-       GL_STUB(AlphaFragmentOp1ATI, _gloffset_AlphaFragmentOp1ATI, AlphaFragmentOp1ATI@24)
-       GL_STUB(AlphaFragmentOp2ATI, _gloffset_AlphaFragmentOp2ATI, AlphaFragmentOp2ATI@36)
-       GL_STUB(AlphaFragmentOp3ATI, _gloffset_AlphaFragmentOp3ATI, AlphaFragmentOp3ATI@48)
-       GL_STUB(BeginFragmentShaderATI, _gloffset_BeginFragmentShaderATI, BeginFragmentShaderATI@0)
-       GL_STUB(BindFragmentShaderATI, _gloffset_BindFragmentShaderATI, BindFragmentShaderATI@4)
-       GL_STUB(ColorFragmentOp1ATI, _gloffset_ColorFragmentOp1ATI, ColorFragmentOp1ATI@28)
-       GL_STUB(ColorFragmentOp2ATI, _gloffset_ColorFragmentOp2ATI, ColorFragmentOp2ATI@40)
-       GL_STUB(ColorFragmentOp3ATI, _gloffset_ColorFragmentOp3ATI, ColorFragmentOp3ATI@52)
-       GL_STUB(DeleteFragmentShaderATI, _gloffset_DeleteFragmentShaderATI, DeleteFragmentShaderATI@4)
-       GL_STUB(EndFragmentShaderATI, _gloffset_EndFragmentShaderATI, EndFragmentShaderATI@0)
-       GL_STUB(GenFragmentShadersATI, _gloffset_GenFragmentShadersATI, GenFragmentShadersATI@4)
-       GL_STUB(PassTexCoordATI, _gloffset_PassTexCoordATI, PassTexCoordATI@12)
-       GL_STUB(SampleMapATI, _gloffset_SampleMapATI, SampleMapATI@12)
-       GL_STUB(SetFragmentShaderConstantATI, _gloffset_SetFragmentShaderConstantATI, SetFragmentShaderConstantATI@8)
-       GL_STUB(PointParameteriNV, _gloffset_PointParameteriNV, PointParameteriNV@8)
-       GL_STUB(PointParameterivNV, _gloffset_PointParameterivNV, PointParameterivNV@8)
-       GL_STUB(_dispatch_stub_755, _gloffset_ActiveStencilFaceEXT, _dispatch_stub_755@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_755, _dispatch_stub_755@4))
-       GL_STUB(_dispatch_stub_756, _gloffset_BindVertexArrayAPPLE, _dispatch_stub_756@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_756, _dispatch_stub_756@4))
-       GL_STUB(_dispatch_stub_757, _gloffset_DeleteVertexArraysAPPLE, _dispatch_stub_757@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_757, _dispatch_stub_757@8))
-       GL_STUB(_dispatch_stub_758, _gloffset_GenVertexArraysAPPLE, _dispatch_stub_758@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_758, _dispatch_stub_758@8))
-       GL_STUB(_dispatch_stub_759, _gloffset_IsVertexArrayAPPLE, _dispatch_stub_759@4)
-       HIDDEN(GL_PREFIX(_dispatch_stub_759, _dispatch_stub_759@4))
-       GL_STUB(GetProgramNamedParameterdvNV, _gloffset_GetProgramNamedParameterdvNV, GetProgramNamedParameterdvNV@16)
-       GL_STUB(GetProgramNamedParameterfvNV, _gloffset_GetProgramNamedParameterfvNV, GetProgramNamedParameterfvNV@16)
-       GL_STUB(ProgramNamedParameter4dNV, _gloffset_ProgramNamedParameter4dNV, ProgramNamedParameter4dNV@44)
-       GL_STUB(ProgramNamedParameter4dvNV, _gloffset_ProgramNamedParameter4dvNV, ProgramNamedParameter4dvNV@16)
-       GL_STUB(ProgramNamedParameter4fNV, _gloffset_ProgramNamedParameter4fNV, ProgramNamedParameter4fNV@28)
-       GL_STUB(ProgramNamedParameter4fvNV, _gloffset_ProgramNamedParameter4fvNV, ProgramNamedParameter4fvNV@16)
-       GL_STUB(_dispatch_stub_766, _gloffset_DepthBoundsEXT, _dispatch_stub_766@16)
-       HIDDEN(GL_PREFIX(_dispatch_stub_766, _dispatch_stub_766@16))
-       GL_STUB(_dispatch_stub_767, _gloffset_BlendEquationSeparateEXT, _dispatch_stub_767@8)
-       HIDDEN(GL_PREFIX(_dispatch_stub_767, _dispatch_stub_767@8))
-       GL_STUB(BindFramebufferEXT, _gloffset_BindFramebufferEXT, BindFramebufferEXT@8)
-       GL_STUB(BindRenderbufferEXT, _gloffset_BindRenderbufferEXT, BindRenderbufferEXT@8)
-       GL_STUB(CheckFramebufferStatusEXT, _gloffset_CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4)
-       GL_STUB(DeleteFramebuffersEXT, _gloffset_DeleteFramebuffersEXT, DeleteFramebuffersEXT@8)
-       GL_STUB(DeleteRenderbuffersEXT, _gloffset_DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8)
-       GL_STUB(FramebufferRenderbufferEXT, _gloffset_FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16)
-       GL_STUB(FramebufferTexture1DEXT, _gloffset_FramebufferTexture1DEXT, FramebufferTexture1DEXT@20)
-       GL_STUB(FramebufferTexture2DEXT, _gloffset_FramebufferTexture2DEXT, FramebufferTexture2DEXT@20)
-       GL_STUB(FramebufferTexture3DEXT, _gloffset_FramebufferTexture3DEXT, FramebufferTexture3DEXT@24)
-       GL_STUB(GenFramebuffersEXT, _gloffset_GenFramebuffersEXT, GenFramebuffersEXT@8)
-       GL_STUB(GenRenderbuffersEXT, _gloffset_GenRenderbuffersEXT, GenRenderbuffersEXT@8)
-       GL_STUB(GenerateMipmapEXT, _gloffset_GenerateMipmapEXT, GenerateMipmapEXT@4)
-       GL_STUB(GetFramebufferAttachmentParameterivEXT, _gloffset_GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16)
-       GL_STUB(GetRenderbufferParameterivEXT, _gloffset_GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12)
-       GL_STUB(IsFramebufferEXT, _gloffset_IsFramebufferEXT, IsFramebufferEXT@4)
-       GL_STUB(IsRenderbufferEXT, _gloffset_IsRenderbufferEXT, IsRenderbufferEXT@4)
-       GL_STUB(RenderbufferStorageEXT, _gloffset_RenderbufferStorageEXT, RenderbufferStorageEXT@16)
-       GL_STUB(_dispatch_stub_785, _gloffset_BlitFramebufferEXT, _dispatch_stub_785@40)
-       HIDDEN(GL_PREFIX(_dispatch_stub_785, _dispatch_stub_785@40))
-       GL_STUB(_dispatch_stub_786, _gloffset_BufferParameteriAPPLE, _dispatch_stub_786@12)
-       HIDDEN(GL_PREFIX(_dispatch_stub_786, _dispatch_stub_786@12))
-       GL_STUB(_dispatch_stub_787, _gloffset_FlushMappedBufferRangeAPPLE, _dispatch_stub_787@12)
-       HIDDEN(GL_PREFIX(_dispatch_stub_787, _dispatch_stub_787@12))
-       GL_STUB(FramebufferTextureLayerEXT, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
-       GL_STUB(ColorMaskIndexedEXT, _gloffset_ColorMaskIndexedEXT, ColorMaskIndexedEXT@20)
-       GL_STUB(DisableIndexedEXT, _gloffset_DisableIndexedEXT, DisableIndexedEXT@8)
-       GL_STUB(EnableIndexedEXT, _gloffset_EnableIndexedEXT, EnableIndexedEXT@8)
-       GL_STUB(GetBooleanIndexedvEXT, _gloffset_GetBooleanIndexedvEXT, GetBooleanIndexedvEXT@12)
-       GL_STUB(GetIntegerIndexedvEXT, _gloffset_GetIntegerIndexedvEXT, GetIntegerIndexedvEXT@12)
-       GL_STUB(IsEnabledIndexedEXT, _gloffset_IsEnabledIndexedEXT, IsEnabledIndexedEXT@8)
-       GL_STUB(BeginConditionalRenderNV, _gloffset_BeginConditionalRenderNV, BeginConditionalRenderNV@8)
-       GL_STUB(EndConditionalRenderNV, _gloffset_EndConditionalRenderNV, EndConditionalRenderNV@0)
-       GL_STUB(BeginTransformFeedbackEXT, _gloffset_BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4)
-       GL_STUB(BindBufferBaseEXT, _gloffset_BindBufferBaseEXT, BindBufferBaseEXT@12)
-       GL_STUB(BindBufferOffsetEXT, _gloffset_BindBufferOffsetEXT, BindBufferOffsetEXT@16)
-       GL_STUB(BindBufferRangeEXT, _gloffset_BindBufferRangeEXT, BindBufferRangeEXT@20)
-       GL_STUB(EndTransformFeedbackEXT, _gloffset_EndTransformFeedbackEXT, EndTransformFeedbackEXT@0)
-       GL_STUB(GetTransformFeedbackVaryingEXT, _gloffset_GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28)
-       GL_STUB(TransformFeedbackVaryingsEXT, _gloffset_TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16)
-       GL_STUB(ProvokingVertexEXT, _gloffset_ProvokingVertexEXT, ProvokingVertexEXT@4)
-       GL_STUB(_dispatch_stub_805, _gloffset_GetTexParameterPointervAPPLE, _dispatch_stub_805@12)
-       HIDDEN(GL_PREFIX(_dispatch_stub_805, _dispatch_stub_805@12))
-       GL_STUB(_dispatch_stub_806, _gloffset_TextureRangeAPPLE, _dispatch_stub_806@12)
-       HIDDEN(GL_PREFIX(_dispatch_stub_806, _dispatch_stub_806@12))
-       GL_STUB(GetObjectParameterivAPPLE, _gloffset_GetObjectParameterivAPPLE, GetObjectParameterivAPPLE@16)
-       GL_STUB(ObjectPurgeableAPPLE, _gloffset_ObjectPurgeableAPPLE, ObjectPurgeableAPPLE@12)
-       GL_STUB(ObjectUnpurgeableAPPLE, _gloffset_ObjectUnpurgeableAPPLE, ObjectUnpurgeableAPPLE@12)
-       GL_STUB(_dispatch_stub_810, _gloffset_StencilFuncSeparateATI, _dispatch_stub_810@16)
-       HIDDEN(GL_PREFIX(_dispatch_stub_810, _dispatch_stub_810@16))
-       GL_STUB(_dispatch_stub_811, _gloffset_ProgramEnvParameters4fvEXT, _dispatch_stub_811@16)
-       HIDDEN(GL_PREFIX(_dispatch_stub_811, _dispatch_stub_811@16))
-       GL_STUB(_dispatch_stub_812, _gloffset_ProgramLocalParameters4fvEXT, _dispatch_stub_812@16)
-       HIDDEN(GL_PREFIX(_dispatch_stub_812, _dispatch_stub_812@16))
-       GL_STUB(_dispatch_stub_813, _gloffset_GetQueryObjecti64vEXT, _dispatch_stub_813@12)
-       HIDDEN(GL_PREFIX(_dispatch_stub_813, _dispatch_stub_813@12))
-       GL_STUB(_dispatch_stub_814, _gloffset_GetQueryObjectui64vEXT, _dispatch_stub_814@12)
-       HIDDEN(GL_PREFIX(_dispatch_stub_814, _dispatch_stub_814@12))
-       GL_STUB(EGLImageTargetRenderbufferStorageOES, _gloffset_EGLImageTargetRenderbufferStorageOES, EGLImageTargetRenderbufferStorageOES@8)
-       GL_STUB(EGLImageTargetTexture2DOES, _gloffset_EGLImageTargetTexture2DOES, EGLImageTargetTexture2DOES@8)
-       GL_STUB_ALIAS(ArrayElementEXT, _gloffset_ArrayElement, ArrayElementEXT@4, ArrayElement, ArrayElement@4)
-       GL_STUB_ALIAS(BindTextureEXT, _gloffset_BindTexture, BindTextureEXT@8, BindTexture, BindTexture@8)
-       GL_STUB_ALIAS(DrawArraysEXT, _gloffset_DrawArrays, DrawArraysEXT@12, DrawArrays, DrawArrays@12)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(AreTexturesResidentEXT, _gloffset_AreTexturesResident, AreTexturesResidentEXT@12, AreTexturesResident, AreTexturesResident@12)
-#endif
-       GL_STUB_ALIAS(CopyTexImage1DEXT, _gloffset_CopyTexImage1D, CopyTexImage1DEXT@28, CopyTexImage1D, CopyTexImage1D@28)
-       GL_STUB_ALIAS(CopyTexImage2DEXT, _gloffset_CopyTexImage2D, CopyTexImage2DEXT@32, CopyTexImage2D, CopyTexImage2D@32)
-       GL_STUB_ALIAS(CopyTexSubImage1DEXT, _gloffset_CopyTexSubImage1D, CopyTexSubImage1DEXT@24, CopyTexSubImage1D, CopyTexSubImage1D@24)
-       GL_STUB_ALIAS(CopyTexSubImage2DEXT, _gloffset_CopyTexSubImage2D, CopyTexSubImage2DEXT@32, CopyTexSubImage2D, CopyTexSubImage2D@32)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(DeleteTexturesEXT, _gloffset_DeleteTextures, DeleteTexturesEXT@8, DeleteTextures, DeleteTextures@8)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(GenTexturesEXT, _gloffset_GenTextures, GenTexturesEXT@8, GenTextures, GenTextures@8)
-#endif
-       GL_STUB_ALIAS(GetPointervEXT, _gloffset_GetPointerv, GetPointervEXT@8, GetPointerv, GetPointerv@8)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(IsTextureEXT, _gloffset_IsTexture, IsTextureEXT@4, IsTexture, IsTexture@4)
-#endif
-       GL_STUB_ALIAS(PrioritizeTexturesEXT, _gloffset_PrioritizeTextures, PrioritizeTexturesEXT@12, PrioritizeTextures, PrioritizeTextures@12)
-       GL_STUB_ALIAS(TexSubImage1DEXT, _gloffset_TexSubImage1D, TexSubImage1DEXT@28, TexSubImage1D, TexSubImage1D@28)
-       GL_STUB_ALIAS(TexSubImage2DEXT, _gloffset_TexSubImage2D, TexSubImage2DEXT@36, TexSubImage2D, TexSubImage2D@36)
-       GL_STUB_ALIAS(BlendColorEXT, _gloffset_BlendColor, BlendColorEXT@16, BlendColor, BlendColor@16)
-       GL_STUB_ALIAS(BlendEquationEXT, _gloffset_BlendEquation, BlendEquationEXT@4, BlendEquation, BlendEquation@4)
-       GL_STUB_ALIAS(DrawRangeElementsEXT, _gloffset_DrawRangeElements, DrawRangeElementsEXT@24, DrawRangeElements, DrawRangeElements@24)
-       GL_STUB_ALIAS(ColorTableEXT, _gloffset_ColorTable, ColorTableEXT@24, ColorTable, ColorTable@24)
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(GetColorTableEXT, _gloffset_GetColorTable, GetColorTableEXT@16, GetColorTable, GetColorTable@16)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(GetColorTableParameterfvEXT, _gloffset_GetColorTableParameterfv, GetColorTableParameterfvEXT@12, GetColorTableParameterfv, GetColorTableParameterfv@12)
-#endif
-#ifndef GLX_INDIRECT_RENDERING
-       GL_STUB_ALIAS(GetColorTableParameterivEXT, _gloffset_GetColorTableParameteriv, GetColorTableParameterivEXT@12, GetColorTableParameteriv, GetColorTableParameteriv@12)
-#endif
-       GL_STUB_ALIAS(TexImage3DEXT, _gloffset_TexImage3D, TexImage3DEXT@40, TexImage3D, TexImage3D@40)
-       GL_STUB_ALIAS(TexSubImage3DEXT, _gloffset_TexSubImage3D, TexSubImage3DEXT@44, TexSubImage3D, TexSubImage3D@44)
-       GL_STUB_ALIAS(CopyTexSubImage3DEXT, _gloffset_CopyTexSubImage3D, CopyTexSubImage3DEXT@36, CopyTexSubImage3D, CopyTexSubImage3D@36)
-       GL_STUB_ALIAS(ActiveTexture, _gloffset_ActiveTextureARB, ActiveTexture@4, ActiveTextureARB, ActiveTextureARB@4)
-       GL_STUB_ALIAS(ClientActiveTexture, _gloffset_ClientActiveTextureARB, ClientActiveTexture@4, ClientActiveTextureARB, ClientActiveTextureARB@4)
-       GL_STUB_ALIAS(MultiTexCoord1d, _gloffset_MultiTexCoord1dARB, MultiTexCoord1d@12, MultiTexCoord1dARB, MultiTexCoord1dARB@12)
-       GL_STUB_ALIAS(MultiTexCoord1dv, _gloffset_MultiTexCoord1dvARB, MultiTexCoord1dv@8, MultiTexCoord1dvARB, MultiTexCoord1dvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord1f, _gloffset_MultiTexCoord1fARB, MultiTexCoord1f@8, MultiTexCoord1fARB, MultiTexCoord1fARB@8)
-       GL_STUB_ALIAS(MultiTexCoord1fv, _gloffset_MultiTexCoord1fvARB, MultiTexCoord1fv@8, MultiTexCoord1fvARB, MultiTexCoord1fvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord1i, _gloffset_MultiTexCoord1iARB, MultiTexCoord1i@8, MultiTexCoord1iARB, MultiTexCoord1iARB@8)
-       GL_STUB_ALIAS(MultiTexCoord1iv, _gloffset_MultiTexCoord1ivARB, MultiTexCoord1iv@8, MultiTexCoord1ivARB, MultiTexCoord1ivARB@8)
-       GL_STUB_ALIAS(MultiTexCoord1s, _gloffset_MultiTexCoord1sARB, MultiTexCoord1s@8, MultiTexCoord1sARB, MultiTexCoord1sARB@8)
-       GL_STUB_ALIAS(MultiTexCoord1sv, _gloffset_MultiTexCoord1svARB, MultiTexCoord1sv@8, MultiTexCoord1svARB, MultiTexCoord1svARB@8)
-       GL_STUB_ALIAS(MultiTexCoord2d, _gloffset_MultiTexCoord2dARB, MultiTexCoord2d@20, MultiTexCoord2dARB, MultiTexCoord2dARB@20)
-       GL_STUB_ALIAS(MultiTexCoord2dv, _gloffset_MultiTexCoord2dvARB, MultiTexCoord2dv@8, MultiTexCoord2dvARB, MultiTexCoord2dvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord2f, _gloffset_MultiTexCoord2fARB, MultiTexCoord2f@12, MultiTexCoord2fARB, MultiTexCoord2fARB@12)
-       GL_STUB_ALIAS(MultiTexCoord2fv, _gloffset_MultiTexCoord2fvARB, MultiTexCoord2fv@8, MultiTexCoord2fvARB, MultiTexCoord2fvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord2i, _gloffset_MultiTexCoord2iARB, MultiTexCoord2i@12, MultiTexCoord2iARB, MultiTexCoord2iARB@12)
-       GL_STUB_ALIAS(MultiTexCoord2iv, _gloffset_MultiTexCoord2ivARB, MultiTexCoord2iv@8, MultiTexCoord2ivARB, MultiTexCoord2ivARB@8)
-       GL_STUB_ALIAS(MultiTexCoord2s, _gloffset_MultiTexCoord2sARB, MultiTexCoord2s@12, MultiTexCoord2sARB, MultiTexCoord2sARB@12)
-       GL_STUB_ALIAS(MultiTexCoord2sv, _gloffset_MultiTexCoord2svARB, MultiTexCoord2sv@8, MultiTexCoord2svARB, MultiTexCoord2svARB@8)
-       GL_STUB_ALIAS(MultiTexCoord3d, _gloffset_MultiTexCoord3dARB, MultiTexCoord3d@28, MultiTexCoord3dARB, MultiTexCoord3dARB@28)
-       GL_STUB_ALIAS(MultiTexCoord3dv, _gloffset_MultiTexCoord3dvARB, MultiTexCoord3dv@8, MultiTexCoord3dvARB, MultiTexCoord3dvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord3f, _gloffset_MultiTexCoord3fARB, MultiTexCoord3f@16, MultiTexCoord3fARB, MultiTexCoord3fARB@16)
-       GL_STUB_ALIAS(MultiTexCoord3fv, _gloffset_MultiTexCoord3fvARB, MultiTexCoord3fv@8, MultiTexCoord3fvARB, MultiTexCoord3fvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord3i, _gloffset_MultiTexCoord3iARB, MultiTexCoord3i@16, MultiTexCoord3iARB, MultiTexCoord3iARB@16)
-       GL_STUB_ALIAS(MultiTexCoord3iv, _gloffset_MultiTexCoord3ivARB, MultiTexCoord3iv@8, MultiTexCoord3ivARB, MultiTexCoord3ivARB@8)
-       GL_STUB_ALIAS(MultiTexCoord3s, _gloffset_MultiTexCoord3sARB, MultiTexCoord3s@16, MultiTexCoord3sARB, MultiTexCoord3sARB@16)
-       GL_STUB_ALIAS(MultiTexCoord3sv, _gloffset_MultiTexCoord3svARB, MultiTexCoord3sv@8, MultiTexCoord3svARB, MultiTexCoord3svARB@8)
-       GL_STUB_ALIAS(MultiTexCoord4d, _gloffset_MultiTexCoord4dARB, MultiTexCoord4d@36, MultiTexCoord4dARB, MultiTexCoord4dARB@36)
-       GL_STUB_ALIAS(MultiTexCoord4dv, _gloffset_MultiTexCoord4dvARB, MultiTexCoord4dv@8, MultiTexCoord4dvARB, MultiTexCoord4dvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord4f, _gloffset_MultiTexCoord4fARB, MultiTexCoord4f@20, MultiTexCoord4fARB, MultiTexCoord4fARB@20)
-       GL_STUB_ALIAS(MultiTexCoord4fv, _gloffset_MultiTexCoord4fvARB, MultiTexCoord4fv@8, MultiTexCoord4fvARB, MultiTexCoord4fvARB@8)
-       GL_STUB_ALIAS(MultiTexCoord4i, _gloffset_MultiTexCoord4iARB, MultiTexCoord4i@20, MultiTexCoord4iARB, MultiTexCoord4iARB@20)
-       GL_STUB_ALIAS(MultiTexCoord4iv, _gloffset_MultiTexCoord4ivARB, MultiTexCoord4iv@8, MultiTexCoord4ivARB, MultiTexCoord4ivARB@8)
-       GL_STUB_ALIAS(MultiTexCoord4s, _gloffset_MultiTexCoord4sARB, MultiTexCoord4s@20, MultiTexCoord4sARB, MultiTexCoord4sARB@20)
-       GL_STUB_ALIAS(MultiTexCoord4sv, _gloffset_MultiTexCoord4svARB, MultiTexCoord4sv@8, MultiTexCoord4svARB, MultiTexCoord4svARB@8)
-       GL_STUB_ALIAS(DrawArraysInstancedARB, _gloffset_DrawArraysInstanced, DrawArraysInstancedARB@16, DrawArraysInstanced, DrawArraysInstanced@16)
-       GL_STUB_ALIAS(DrawArraysInstancedEXT, _gloffset_DrawArraysInstanced, DrawArraysInstancedEXT@16, DrawArraysInstanced, DrawArraysInstanced@16)
-       GL_STUB_ALIAS(DrawElementsInstancedARB, _gloffset_DrawElementsInstanced, DrawElementsInstancedARB@20, DrawElementsInstanced, DrawElementsInstanced@20)
-       GL_STUB_ALIAS(DrawElementsInstancedEXT, _gloffset_DrawElementsInstanced, DrawElementsInstancedEXT@20, DrawElementsInstanced, DrawElementsInstanced@20)
-       GL_STUB_ALIAS(LoadTransposeMatrixd, _gloffset_LoadTransposeMatrixdARB, LoadTransposeMatrixd@4, LoadTransposeMatrixdARB, LoadTransposeMatrixdARB@4)
-       GL_STUB_ALIAS(LoadTransposeMatrixf, _gloffset_LoadTransposeMatrixfARB, LoadTransposeMatrixf@4, LoadTransposeMatrixfARB, LoadTransposeMatrixfARB@4)
-       GL_STUB_ALIAS(MultTransposeMatrixd, _gloffset_MultTransposeMatrixdARB, MultTransposeMatrixd@4, MultTransposeMatrixdARB, MultTransposeMatrixdARB@4)
-       GL_STUB_ALIAS(MultTransposeMatrixf, _gloffset_MultTransposeMatrixfARB, MultTransposeMatrixf@4, MultTransposeMatrixfARB, MultTransposeMatrixfARB@4)
-       GL_STUB_ALIAS(SampleCoverage, _gloffset_SampleCoverageARB, SampleCoverage@8, SampleCoverageARB, SampleCoverageARB@8)
-       GL_STUB_ALIAS(CompressedTexImage1D, _gloffset_CompressedTexImage1DARB, CompressedTexImage1D@28, CompressedTexImage1DARB, CompressedTexImage1DARB@28)
-       GL_STUB_ALIAS(CompressedTexImage2D, _gloffset_CompressedTexImage2DARB, CompressedTexImage2D@32, CompressedTexImage2DARB, CompressedTexImage2DARB@32)
-       GL_STUB_ALIAS(CompressedTexImage3D, _gloffset_CompressedTexImage3DARB, CompressedTexImage3D@36, CompressedTexImage3DARB, CompressedTexImage3DARB@36)
-       GL_STUB_ALIAS(CompressedTexSubImage1D, _gloffset_CompressedTexSubImage1DARB, CompressedTexSubImage1D@28, CompressedTexSubImage1DARB, CompressedTexSubImage1DARB@28)
-       GL_STUB_ALIAS(CompressedTexSubImage2D, _gloffset_CompressedTexSubImage2DARB, CompressedTexSubImage2D@36, CompressedTexSubImage2DARB, CompressedTexSubImage2DARB@36)
-       GL_STUB_ALIAS(CompressedTexSubImage3D, _gloffset_CompressedTexSubImage3DARB, CompressedTexSubImage3D@44, CompressedTexSubImage3DARB, CompressedTexSubImage3DARB@44)
-       GL_STUB_ALIAS(GetCompressedTexImage, _gloffset_GetCompressedTexImageARB, GetCompressedTexImage@12, GetCompressedTexImageARB, GetCompressedTexImageARB@12)
-       GL_STUB_ALIAS(DisableVertexAttribArray, _gloffset_DisableVertexAttribArrayARB, DisableVertexAttribArray@4, DisableVertexAttribArrayARB, DisableVertexAttribArrayARB@4)
-       GL_STUB_ALIAS(EnableVertexAttribArray, _gloffset_EnableVertexAttribArrayARB, EnableVertexAttribArray@4, EnableVertexAttribArrayARB, EnableVertexAttribArrayARB@4)
-       GL_STUB_ALIAS(GetVertexAttribdv, _gloffset_GetVertexAttribdvARB, GetVertexAttribdv@12, GetVertexAttribdvARB, GetVertexAttribdvARB@12)
-       GL_STUB_ALIAS(GetVertexAttribfv, _gloffset_GetVertexAttribfvARB, GetVertexAttribfv@12, GetVertexAttribfvARB, GetVertexAttribfvARB@12)
-       GL_STUB_ALIAS(GetVertexAttribiv, _gloffset_GetVertexAttribivARB, GetVertexAttribiv@12, GetVertexAttribivARB, GetVertexAttribivARB@12)
-       GL_STUB_ALIAS(ProgramParameter4dNV, _gloffset_ProgramEnvParameter4dARB, ProgramParameter4dNV@40, ProgramEnvParameter4dARB, ProgramEnvParameter4dARB@40)
-       GL_STUB_ALIAS(ProgramParameter4dvNV, _gloffset_ProgramEnvParameter4dvARB, ProgramParameter4dvNV@12, ProgramEnvParameter4dvARB, ProgramEnvParameter4dvARB@12)
-       GL_STUB_ALIAS(ProgramParameter4fNV, _gloffset_ProgramEnvParameter4fARB, ProgramParameter4fNV@24, ProgramEnvParameter4fARB, ProgramEnvParameter4fARB@24)
-       GL_STUB_ALIAS(ProgramParameter4fvNV, _gloffset_ProgramEnvParameter4fvARB, ProgramParameter4fvNV@12, ProgramEnvParameter4fvARB, ProgramEnvParameter4fvARB@12)
-       GL_STUB_ALIAS(VertexAttrib1d, _gloffset_VertexAttrib1dARB, VertexAttrib1d@12, VertexAttrib1dARB, VertexAttrib1dARB@12)
-       GL_STUB_ALIAS(VertexAttrib1dv, _gloffset_VertexAttrib1dvARB, VertexAttrib1dv@8, VertexAttrib1dvARB, VertexAttrib1dvARB@8)
-       GL_STUB_ALIAS(VertexAttrib1f, _gloffset_VertexAttrib1fARB, VertexAttrib1f@8, VertexAttrib1fARB, VertexAttrib1fARB@8)
-       GL_STUB_ALIAS(VertexAttrib1fv, _gloffset_VertexAttrib1fvARB, VertexAttrib1fv@8, VertexAttrib1fvARB, VertexAttrib1fvARB@8)
-       GL_STUB_ALIAS(VertexAttrib1s, _gloffset_VertexAttrib1sARB, VertexAttrib1s@8, VertexAttrib1sARB, VertexAttrib1sARB@8)
-       GL_STUB_ALIAS(VertexAttrib1sv, _gloffset_VertexAttrib1svARB, VertexAttrib1sv@8, VertexAttrib1svARB, VertexAttrib1svARB@8)
-       GL_STUB_ALIAS(VertexAttrib2d, _gloffset_VertexAttrib2dARB, VertexAttrib2d@20, VertexAttrib2dARB, VertexAttrib2dARB@20)
-       GL_STUB_ALIAS(VertexAttrib2dv, _gloffset_VertexAttrib2dvARB, VertexAttrib2dv@8, VertexAttrib2dvARB, VertexAttrib2dvARB@8)
-       GL_STUB_ALIAS(VertexAttrib2f, _gloffset_VertexAttrib2fARB, VertexAttrib2f@12, VertexAttrib2fARB, VertexAttrib2fARB@12)
-       GL_STUB_ALIAS(VertexAttrib2fv, _gloffset_VertexAttrib2fvARB, VertexAttrib2fv@8, VertexAttrib2fvARB, VertexAttrib2fvARB@8)
-       GL_STUB_ALIAS(VertexAttrib2s, _gloffset_VertexAttrib2sARB, VertexAttrib2s@12, VertexAttrib2sARB, VertexAttrib2sARB@12)
-       GL_STUB_ALIAS(VertexAttrib2sv, _gloffset_VertexAttrib2svARB, VertexAttrib2sv@8, VertexAttrib2svARB, VertexAttrib2svARB@8)
-       GL_STUB_ALIAS(VertexAttrib3d, _gloffset_VertexAttrib3dARB, VertexAttrib3d@28, VertexAttrib3dARB, VertexAttrib3dARB@28)
-       GL_STUB_ALIAS(VertexAttrib3dv, _gloffset_VertexAttrib3dvARB, VertexAttrib3dv@8, VertexAttrib3dvARB, VertexAttrib3dvARB@8)
-       GL_STUB_ALIAS(VertexAttrib3f, _gloffset_VertexAttrib3fARB, VertexAttrib3f@16, VertexAttrib3fARB, VertexAttrib3fARB@16)
-       GL_STUB_ALIAS(VertexAttrib3fv, _gloffset_VertexAttrib3fvARB, VertexAttrib3fv@8, VertexAttrib3fvARB, VertexAttrib3fvARB@8)
-       GL_STUB_ALIAS(VertexAttrib3s, _gloffset_VertexAttrib3sARB, VertexAttrib3s@16, VertexAttrib3sARB, VertexAttrib3sARB@16)
-       GL_STUB_ALIAS(VertexAttrib3sv, _gloffset_VertexAttrib3svARB, VertexAttrib3sv@8, VertexAttrib3svARB, VertexAttrib3svARB@8)
-       GL_STUB_ALIAS(VertexAttrib4Nbv, _gloffset_VertexAttrib4NbvARB, VertexAttrib4Nbv@8, VertexAttrib4NbvARB, VertexAttrib4NbvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4Niv, _gloffset_VertexAttrib4NivARB, VertexAttrib4Niv@8, VertexAttrib4NivARB, VertexAttrib4NivARB@8)
-       GL_STUB_ALIAS(VertexAttrib4Nsv, _gloffset_VertexAttrib4NsvARB, VertexAttrib4Nsv@8, VertexAttrib4NsvARB, VertexAttrib4NsvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4Nub, _gloffset_VertexAttrib4NubARB, VertexAttrib4Nub@20, VertexAttrib4NubARB, VertexAttrib4NubARB@20)
-       GL_STUB_ALIAS(VertexAttrib4Nubv, _gloffset_VertexAttrib4NubvARB, VertexAttrib4Nubv@8, VertexAttrib4NubvARB, VertexAttrib4NubvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4Nuiv, _gloffset_VertexAttrib4NuivARB, VertexAttrib4Nuiv@8, VertexAttrib4NuivARB, VertexAttrib4NuivARB@8)
-       GL_STUB_ALIAS(VertexAttrib4Nusv, _gloffset_VertexAttrib4NusvARB, VertexAttrib4Nusv@8, VertexAttrib4NusvARB, VertexAttrib4NusvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4bv, _gloffset_VertexAttrib4bvARB, VertexAttrib4bv@8, VertexAttrib4bvARB, VertexAttrib4bvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4d, _gloffset_VertexAttrib4dARB, VertexAttrib4d@36, VertexAttrib4dARB, VertexAttrib4dARB@36)
-       GL_STUB_ALIAS(VertexAttrib4dv, _gloffset_VertexAttrib4dvARB, VertexAttrib4dv@8, VertexAttrib4dvARB, VertexAttrib4dvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4f, _gloffset_VertexAttrib4fARB, VertexAttrib4f@20, VertexAttrib4fARB, VertexAttrib4fARB@20)
-       GL_STUB_ALIAS(VertexAttrib4fv, _gloffset_VertexAttrib4fvARB, VertexAttrib4fv@8, VertexAttrib4fvARB, VertexAttrib4fvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4iv, _gloffset_VertexAttrib4ivARB, VertexAttrib4iv@8, VertexAttrib4ivARB, VertexAttrib4ivARB@8)
-       GL_STUB_ALIAS(VertexAttrib4s, _gloffset_VertexAttrib4sARB, VertexAttrib4s@20, VertexAttrib4sARB, VertexAttrib4sARB@20)
-       GL_STUB_ALIAS(VertexAttrib4sv, _gloffset_VertexAttrib4svARB, VertexAttrib4sv@8, VertexAttrib4svARB, VertexAttrib4svARB@8)
-       GL_STUB_ALIAS(VertexAttrib4ubv, _gloffset_VertexAttrib4ubvARB, VertexAttrib4ubv@8, VertexAttrib4ubvARB, VertexAttrib4ubvARB@8)
-       GL_STUB_ALIAS(VertexAttrib4uiv, _gloffset_VertexAttrib4uivARB, VertexAttrib4uiv@8, VertexAttrib4uivARB, VertexAttrib4uivARB@8)
-       GL_STUB_ALIAS(VertexAttrib4usv, _gloffset_VertexAttrib4usvARB, VertexAttrib4usv@8, VertexAttrib4usvARB, VertexAttrib4usvARB@8)
-       GL_STUB_ALIAS(VertexAttribPointer, _gloffset_VertexAttribPointerARB, VertexAttribPointer@24, VertexAttribPointerARB, VertexAttribPointerARB@24)
-       GL_STUB_ALIAS(BindBuffer, _gloffset_BindBufferARB, BindBuffer@8, BindBufferARB, BindBufferARB@8)
-       GL_STUB_ALIAS(BufferData, _gloffset_BufferDataARB, BufferData@16, BufferDataARB, BufferDataARB@16)
-       GL_STUB_ALIAS(BufferSubData, _gloffset_BufferSubDataARB, BufferSubData@16, BufferSubDataARB, BufferSubDataARB@16)
-       GL_STUB_ALIAS(DeleteBuffers, _gloffset_DeleteBuffersARB, DeleteBuffers@8, DeleteBuffersARB, DeleteBuffersARB@8)
-       GL_STUB_ALIAS(GenBuffers, _gloffset_GenBuffersARB, GenBuffers@8, GenBuffersARB, GenBuffersARB@8)
-       GL_STUB_ALIAS(GetBufferParameteriv, _gloffset_GetBufferParameterivARB, GetBufferParameteriv@12, GetBufferParameterivARB, GetBufferParameterivARB@12)
-       GL_STUB_ALIAS(GetBufferPointerv, _gloffset_GetBufferPointervARB, GetBufferPointerv@12, GetBufferPointervARB, GetBufferPointervARB@12)
-       GL_STUB_ALIAS(GetBufferSubData, _gloffset_GetBufferSubDataARB, GetBufferSubData@16, GetBufferSubDataARB, GetBufferSubDataARB@16)
-       GL_STUB_ALIAS(IsBuffer, _gloffset_IsBufferARB, IsBuffer@4, IsBufferARB, IsBufferARB@4)
-       GL_STUB_ALIAS(MapBuffer, _gloffset_MapBufferARB, MapBuffer@8, MapBufferARB, MapBufferARB@8)
-       GL_STUB_ALIAS(UnmapBuffer, _gloffset_UnmapBufferARB, UnmapBuffer@4, UnmapBufferARB, UnmapBufferARB@4)
-       GL_STUB_ALIAS(BeginQuery, _gloffset_BeginQueryARB, BeginQuery@8, BeginQueryARB, BeginQueryARB@8)
-       GL_STUB_ALIAS(DeleteQueries, _gloffset_DeleteQueriesARB, DeleteQueries@8, DeleteQueriesARB, DeleteQueriesARB@8)
-       GL_STUB_ALIAS(EndQuery, _gloffset_EndQueryARB, EndQuery@4, EndQueryARB, EndQueryARB@4)
-       GL_STUB_ALIAS(GenQueries, _gloffset_GenQueriesARB, GenQueries@8, GenQueriesARB, GenQueriesARB@8)
-       GL_STUB_ALIAS(GetQueryObjectiv, _gloffset_GetQueryObjectivARB, GetQueryObjectiv@12, GetQueryObjectivARB, GetQueryObjectivARB@12)
-       GL_STUB_ALIAS(GetQueryObjectuiv, _gloffset_GetQueryObjectuivARB, GetQueryObjectuiv@12, GetQueryObjectuivARB, GetQueryObjectuivARB@12)
-       GL_STUB_ALIAS(GetQueryiv, _gloffset_GetQueryivARB, GetQueryiv@12, GetQueryivARB, GetQueryivARB@12)
-       GL_STUB_ALIAS(IsQuery, _gloffset_IsQueryARB, IsQuery@4, IsQueryARB, IsQueryARB@4)
-       GL_STUB_ALIAS(CompileShader, _gloffset_CompileShaderARB, CompileShader@4, CompileShaderARB, CompileShaderARB@4)
-       GL_STUB_ALIAS(GetActiveUniform, _gloffset_GetActiveUniformARB, GetActiveUniform@28, GetActiveUniformARB, GetActiveUniformARB@28)
-       GL_STUB_ALIAS(GetShaderSource, _gloffset_GetShaderSourceARB, GetShaderSource@16, GetShaderSourceARB, GetShaderSourceARB@16)
-       GL_STUB_ALIAS(GetUniformLocation, _gloffset_GetUniformLocationARB, GetUniformLocation@8, GetUniformLocationARB, GetUniformLocationARB@8)
-       GL_STUB_ALIAS(GetUniformfv, _gloffset_GetUniformfvARB, GetUniformfv@12, GetUniformfvARB, GetUniformfvARB@12)
-       GL_STUB_ALIAS(GetUniformiv, _gloffset_GetUniformivARB, GetUniformiv@12, GetUniformivARB, GetUniformivARB@12)
-       GL_STUB_ALIAS(LinkProgram, _gloffset_LinkProgramARB, LinkProgram@4, LinkProgramARB, LinkProgramARB@4)
-       GL_STUB_ALIAS(ShaderSource, _gloffset_ShaderSourceARB, ShaderSource@16, ShaderSourceARB, ShaderSourceARB@16)
-       GL_STUB_ALIAS(Uniform1f, _gloffset_Uniform1fARB, Uniform1f@8, Uniform1fARB, Uniform1fARB@8)
-       GL_STUB_ALIAS(Uniform1fv, _gloffset_Uniform1fvARB, Uniform1fv@12, Uniform1fvARB, Uniform1fvARB@12)
-       GL_STUB_ALIAS(Uniform1i, _gloffset_Uniform1iARB, Uniform1i@8, Uniform1iARB, Uniform1iARB@8)
-       GL_STUB_ALIAS(Uniform1iv, _gloffset_Uniform1ivARB, Uniform1iv@12, Uniform1ivARB, Uniform1ivARB@12)
-       GL_STUB_ALIAS(Uniform2f, _gloffset_Uniform2fARB, Uniform2f@12, Uniform2fARB, Uniform2fARB@12)
-       GL_STUB_ALIAS(Uniform2fv, _gloffset_Uniform2fvARB, Uniform2fv@12, Uniform2fvARB, Uniform2fvARB@12)
-       GL_STUB_ALIAS(Uniform2i, _gloffset_Uniform2iARB, Uniform2i@12, Uniform2iARB, Uniform2iARB@12)
-       GL_STUB_ALIAS(Uniform2iv, _gloffset_Uniform2ivARB, Uniform2iv@12, Uniform2ivARB, Uniform2ivARB@12)
-       GL_STUB_ALIAS(Uniform3f, _gloffset_Uniform3fARB, Uniform3f@16, Uniform3fARB, Uniform3fARB@16)
-       GL_STUB_ALIAS(Uniform3fv, _gloffset_Uniform3fvARB, Uniform3fv@12, Uniform3fvARB, Uniform3fvARB@12)
-       GL_STUB_ALIAS(Uniform3i, _gloffset_Uniform3iARB, Uniform3i@16, Uniform3iARB, Uniform3iARB@16)
-       GL_STUB_ALIAS(Uniform3iv, _gloffset_Uniform3ivARB, Uniform3iv@12, Uniform3ivARB, Uniform3ivARB@12)
-       GL_STUB_ALIAS(Uniform4f, _gloffset_Uniform4fARB, Uniform4f@20, Uniform4fARB, Uniform4fARB@20)
-       GL_STUB_ALIAS(Uniform4fv, _gloffset_Uniform4fvARB, Uniform4fv@12, Uniform4fvARB, Uniform4fvARB@12)
-       GL_STUB_ALIAS(Uniform4i, _gloffset_Uniform4iARB, Uniform4i@20, Uniform4iARB, Uniform4iARB@20)
-       GL_STUB_ALIAS(Uniform4iv, _gloffset_Uniform4ivARB, Uniform4iv@12, Uniform4ivARB, Uniform4ivARB@12)
-       GL_STUB_ALIAS(UniformMatrix2fv, _gloffset_UniformMatrix2fvARB, UniformMatrix2fv@16, UniformMatrix2fvARB, UniformMatrix2fvARB@16)
-       GL_STUB_ALIAS(UniformMatrix3fv, _gloffset_UniformMatrix3fvARB, UniformMatrix3fv@16, UniformMatrix3fvARB, UniformMatrix3fvARB@16)
-       GL_STUB_ALIAS(UniformMatrix4fv, _gloffset_UniformMatrix4fvARB, UniformMatrix4fv@16, UniformMatrix4fvARB, UniformMatrix4fvARB@16)
-       GL_STUB_ALIAS(UseProgram, _gloffset_UseProgramObjectARB, UseProgram@4, UseProgramObjectARB, UseProgramObjectARB@4)
-       GL_STUB_ALIAS(ValidateProgram, _gloffset_ValidateProgramARB, ValidateProgram@4, ValidateProgramARB, ValidateProgramARB@4)
-       GL_STUB_ALIAS(BindAttribLocation, _gloffset_BindAttribLocationARB, BindAttribLocation@12, BindAttribLocationARB, BindAttribLocationARB@12)
-       GL_STUB_ALIAS(GetActiveAttrib, _gloffset_GetActiveAttribARB, GetActiveAttrib@28, GetActiveAttribARB, GetActiveAttribARB@28)
-       GL_STUB_ALIAS(GetAttribLocation, _gloffset_GetAttribLocationARB, GetAttribLocation@8, GetAttribLocationARB, GetAttribLocationARB@8)
-       GL_STUB_ALIAS(DrawBuffers, _gloffset_DrawBuffersARB, DrawBuffers@8, DrawBuffersARB, DrawBuffersARB@8)
-       GL_STUB_ALIAS(DrawBuffersATI, _gloffset_DrawBuffersARB, DrawBuffersATI@8, DrawBuffersARB, DrawBuffersARB@8)
-       GL_STUB_ALIAS(RenderbufferStorageMultisampleEXT, _gloffset_RenderbufferStorageMultisample, RenderbufferStorageMultisampleEXT@20, RenderbufferStorageMultisample, RenderbufferStorageMultisample@20)
-       GL_STUB_ALIAS(PointParameterf, _gloffset_PointParameterfEXT, PointParameterf@8, PointParameterfEXT, PointParameterfEXT@8)
-       GL_STUB_ALIAS(PointParameterfARB, _gloffset_PointParameterfEXT, PointParameterfARB@8, PointParameterfEXT, PointParameterfEXT@8)
-       GL_STUB_ALIAS(PointParameterfv, _gloffset_PointParameterfvEXT, PointParameterfv@8, PointParameterfvEXT, PointParameterfvEXT@8)
-       GL_STUB_ALIAS(PointParameterfvARB, _gloffset_PointParameterfvEXT, PointParameterfvARB@8, PointParameterfvEXT, PointParameterfvEXT@8)
-       GL_STUB_ALIAS(SecondaryColor3b, _gloffset_SecondaryColor3bEXT, SecondaryColor3b@12, SecondaryColor3bEXT, SecondaryColor3bEXT@12)
-       GL_STUB_ALIAS(SecondaryColor3bv, _gloffset_SecondaryColor3bvEXT, SecondaryColor3bv@4, SecondaryColor3bvEXT, SecondaryColor3bvEXT@4)
-       GL_STUB_ALIAS(SecondaryColor3d, _gloffset_SecondaryColor3dEXT, SecondaryColor3d@24, SecondaryColor3dEXT, SecondaryColor3dEXT@24)
-       GL_STUB_ALIAS(SecondaryColor3dv, _gloffset_SecondaryColor3dvEXT, SecondaryColor3dv@4, SecondaryColor3dvEXT, SecondaryColor3dvEXT@4)
-       GL_STUB_ALIAS(SecondaryColor3f, _gloffset_SecondaryColor3fEXT, SecondaryColor3f@12, SecondaryColor3fEXT, SecondaryColor3fEXT@12)
-       GL_STUB_ALIAS(SecondaryColor3fv, _gloffset_SecondaryColor3fvEXT, SecondaryColor3fv@4, SecondaryColor3fvEXT, SecondaryColor3fvEXT@4)
-       GL_STUB_ALIAS(SecondaryColor3i, _gloffset_SecondaryColor3iEXT, SecondaryColor3i@12, SecondaryColor3iEXT, SecondaryColor3iEXT@12)
-       GL_STUB_ALIAS(SecondaryColor3iv, _gloffset_SecondaryColor3ivEXT, SecondaryColor3iv@4, SecondaryColor3ivEXT, SecondaryColor3ivEXT@4)
-       GL_STUB_ALIAS(SecondaryColor3s, _gloffset_SecondaryColor3sEXT, SecondaryColor3s@12, SecondaryColor3sEXT, SecondaryColor3sEXT@12)
-       GL_STUB_ALIAS(SecondaryColor3sv, _gloffset_SecondaryColor3svEXT, SecondaryColor3sv@4, SecondaryColor3svEXT, SecondaryColor3svEXT@4)
-       GL_STUB_ALIAS(SecondaryColor3ub, _gloffset_SecondaryColor3ubEXT, SecondaryColor3ub@12, SecondaryColor3ubEXT, SecondaryColor3ubEXT@12)
-       GL_STUB_ALIAS(SecondaryColor3ubv, _gloffset_SecondaryColor3ubvEXT, SecondaryColor3ubv@4, SecondaryColor3ubvEXT, SecondaryColor3ubvEXT@4)
-       GL_STUB_ALIAS(SecondaryColor3ui, _gloffset_SecondaryColor3uiEXT, SecondaryColor3ui@12, SecondaryColor3uiEXT, SecondaryColor3uiEXT@12)
-       GL_STUB_ALIAS(SecondaryColor3uiv, _gloffset_SecondaryColor3uivEXT, SecondaryColor3uiv@4, SecondaryColor3uivEXT, SecondaryColor3uivEXT@4)
-       GL_STUB_ALIAS(SecondaryColor3us, _gloffset_SecondaryColor3usEXT, SecondaryColor3us@12, SecondaryColor3usEXT, SecondaryColor3usEXT@12)
-       GL_STUB_ALIAS(SecondaryColor3usv, _gloffset_SecondaryColor3usvEXT, SecondaryColor3usv@4, SecondaryColor3usvEXT, SecondaryColor3usvEXT@4)
-       GL_STUB_ALIAS(SecondaryColorPointer, _gloffset_SecondaryColorPointerEXT, SecondaryColorPointer@16, SecondaryColorPointerEXT, SecondaryColorPointerEXT@16)
-       GL_STUB_ALIAS(MultiDrawArrays, _gloffset_MultiDrawArraysEXT, MultiDrawArrays@16, MultiDrawArraysEXT, MultiDrawArraysEXT@16)
-       GL_STUB_ALIAS(MultiDrawElements, _gloffset_MultiDrawElementsEXT, MultiDrawElements@20, MultiDrawElementsEXT, MultiDrawElementsEXT@20)
-       GL_STUB_ALIAS(FogCoordPointer, _gloffset_FogCoordPointerEXT, FogCoordPointer@12, FogCoordPointerEXT, FogCoordPointerEXT@12)
-       GL_STUB_ALIAS(FogCoordd, _gloffset_FogCoorddEXT, FogCoordd@8, FogCoorddEXT, FogCoorddEXT@8)
-       GL_STUB_ALIAS(FogCoorddv, _gloffset_FogCoorddvEXT, FogCoorddv@4, FogCoorddvEXT, FogCoorddvEXT@4)
-       GL_STUB_ALIAS(FogCoordf, _gloffset_FogCoordfEXT, FogCoordf@4, FogCoordfEXT, FogCoordfEXT@4)
-       GL_STUB_ALIAS(FogCoordfv, _gloffset_FogCoordfvEXT, FogCoordfv@4, FogCoordfvEXT, FogCoordfvEXT@4)
-       GL_STUB_ALIAS(BlendFuncSeparate, _gloffset_BlendFuncSeparateEXT, BlendFuncSeparate@16, BlendFuncSeparateEXT, BlendFuncSeparateEXT@16)
-       GL_STUB_ALIAS(WindowPos2d, _gloffset_WindowPos2dMESA, WindowPos2d@16, WindowPos2dMESA, WindowPos2dMESA@16)
-       GL_STUB_ALIAS(WindowPos2dARB, _gloffset_WindowPos2dMESA, WindowPos2dARB@16, WindowPos2dMESA, WindowPos2dMESA@16)
-       GL_STUB_ALIAS(WindowPos2dv, _gloffset_WindowPos2dvMESA, WindowPos2dv@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
-       GL_STUB_ALIAS(WindowPos2dvARB, _gloffset_WindowPos2dvMESA, WindowPos2dvARB@4, WindowPos2dvMESA, WindowPos2dvMESA@4)
-       GL_STUB_ALIAS(WindowPos2f, _gloffset_WindowPos2fMESA, WindowPos2f@8, WindowPos2fMESA, WindowPos2fMESA@8)
-       GL_STUB_ALIAS(WindowPos2fARB, _gloffset_WindowPos2fMESA, WindowPos2fARB@8, WindowPos2fMESA, WindowPos2fMESA@8)
-       GL_STUB_ALIAS(WindowPos2fv, _gloffset_WindowPos2fvMESA, WindowPos2fv@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
-       GL_STUB_ALIAS(WindowPos2fvARB, _gloffset_WindowPos2fvMESA, WindowPos2fvARB@4, WindowPos2fvMESA, WindowPos2fvMESA@4)
-       GL_STUB_ALIAS(WindowPos2i, _gloffset_WindowPos2iMESA, WindowPos2i@8, WindowPos2iMESA, WindowPos2iMESA@8)
-       GL_STUB_ALIAS(WindowPos2iARB, _gloffset_WindowPos2iMESA, WindowPos2iARB@8, WindowPos2iMESA, WindowPos2iMESA@8)
-       GL_STUB_ALIAS(WindowPos2iv, _gloffset_WindowPos2ivMESA, WindowPos2iv@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
-       GL_STUB_ALIAS(WindowPos2ivARB, _gloffset_WindowPos2ivMESA, WindowPos2ivARB@4, WindowPos2ivMESA, WindowPos2ivMESA@4)
-       GL_STUB_ALIAS(WindowPos2s, _gloffset_WindowPos2sMESA, WindowPos2s@8, WindowPos2sMESA, WindowPos2sMESA@8)
-       GL_STUB_ALIAS(WindowPos2sARB, _gloffset_WindowPos2sMESA, WindowPos2sARB@8, WindowPos2sMESA, WindowPos2sMESA@8)
-       GL_STUB_ALIAS(WindowPos2sv, _gloffset_WindowPos2svMESA, WindowPos2sv@4, WindowPos2svMESA, WindowPos2svMESA@4)
-       GL_STUB_ALIAS(WindowPos2svARB, _gloffset_WindowPos2svMESA, WindowPos2svARB@4, WindowPos2svMESA, WindowPos2svMESA@4)
-       GL_STUB_ALIAS(WindowPos3d, _gloffset_WindowPos3dMESA, WindowPos3d@24, WindowPos3dMESA, WindowPos3dMESA@24)
-       GL_STUB_ALIAS(WindowPos3dARB, _gloffset_WindowPos3dMESA, WindowPos3dARB@24, WindowPos3dMESA, WindowPos3dMESA@24)
-       GL_STUB_ALIAS(WindowPos3dv, _gloffset_WindowPos3dvMESA, WindowPos3dv@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
-       GL_STUB_ALIAS(WindowPos3dvARB, _gloffset_WindowPos3dvMESA, WindowPos3dvARB@4, WindowPos3dvMESA, WindowPos3dvMESA@4)
-       GL_STUB_ALIAS(WindowPos3f, _gloffset_WindowPos3fMESA, WindowPos3f@12, WindowPos3fMESA, WindowPos3fMESA@12)
-       GL_STUB_ALIAS(WindowPos3fARB, _gloffset_WindowPos3fMESA, WindowPos3fARB@12, WindowPos3fMESA, WindowPos3fMESA@12)
-       GL_STUB_ALIAS(WindowPos3fv, _gloffset_WindowPos3fvMESA, WindowPos3fv@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
-       GL_STUB_ALIAS(WindowPos3fvARB, _gloffset_WindowPos3fvMESA, WindowPos3fvARB@4, WindowPos3fvMESA, WindowPos3fvMESA@4)
-       GL_STUB_ALIAS(WindowPos3i, _gloffset_WindowPos3iMESA, WindowPos3i@12, WindowPos3iMESA, WindowPos3iMESA@12)
-       GL_STUB_ALIAS(WindowPos3iARB, _gloffset_WindowPos3iMESA, WindowPos3iARB@12, WindowPos3iMESA, WindowPos3iMESA@12)
-       GL_STUB_ALIAS(WindowPos3iv, _gloffset_WindowPos3ivMESA, WindowPos3iv@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
-       GL_STUB_ALIAS(WindowPos3ivARB, _gloffset_WindowPos3ivMESA, WindowPos3ivARB@4, WindowPos3ivMESA, WindowPos3ivMESA@4)
-       GL_STUB_ALIAS(WindowPos3s, _gloffset_WindowPos3sMESA, WindowPos3s@12, WindowPos3sMESA, WindowPos3sMESA@12)
-       GL_STUB_ALIAS(WindowPos3sARB, _gloffset_WindowPos3sMESA, WindowPos3sARB@12, WindowPos3sMESA, WindowPos3sMESA@12)
-       GL_STUB_ALIAS(WindowPos3sv, _gloffset_WindowPos3svMESA, WindowPos3sv@4, WindowPos3svMESA, WindowPos3svMESA@4)
-       GL_STUB_ALIAS(WindowPos3svARB, _gloffset_WindowPos3svMESA, WindowPos3svARB@4, WindowPos3svMESA, WindowPos3svMESA@4)
-       GL_STUB_ALIAS(BindProgramARB, _gloffset_BindProgramNV, BindProgramARB@8, BindProgramNV, BindProgramNV@8)
-       GL_STUB_ALIAS(DeleteProgramsARB, _gloffset_DeleteProgramsNV, DeleteProgramsARB@8, DeleteProgramsNV, DeleteProgramsNV@8)
-       GL_STUB_ALIAS(GenProgramsARB, _gloffset_GenProgramsNV, GenProgramsARB@8, GenProgramsNV, GenProgramsNV@8)
-       GL_STUB_ALIAS(GetVertexAttribPointerv, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointerv@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
-       GL_STUB_ALIAS(GetVertexAttribPointervARB, _gloffset_GetVertexAttribPointervNV, GetVertexAttribPointervARB@12, GetVertexAttribPointervNV, GetVertexAttribPointervNV@12)
-       GL_STUB_ALIAS(IsProgramARB, _gloffset_IsProgramNV, IsProgramARB@4, IsProgramNV, IsProgramNV@4)
-       GL_STUB_ALIAS(PointParameteri, _gloffset_PointParameteriNV, PointParameteri@8, PointParameteriNV, PointParameteriNV@8)
-       GL_STUB_ALIAS(PointParameteriv, _gloffset_PointParameterivNV, PointParameteriv@8, PointParameterivNV, PointParameterivNV@8)
-       GL_STUB_ALIAS(DeleteVertexArrays, _gloffset_DeleteVertexArraysAPPLE, DeleteVertexArrays@8, _dispatch_stub_757, _dispatch_stub_757@8)
-       GL_STUB_ALIAS(IsVertexArray, _gloffset_IsVertexArrayAPPLE, IsVertexArray@4, _dispatch_stub_759, _dispatch_stub_759@4)
-       GL_STUB_ALIAS(BlendEquationSeparate, _gloffset_BlendEquationSeparateEXT, BlendEquationSeparate@8, _dispatch_stub_767, _dispatch_stub_767@8)
-       GL_STUB_ALIAS(BindFramebuffer, _gloffset_BindFramebufferEXT, BindFramebuffer@8, BindFramebufferEXT, BindFramebufferEXT@8)
-       GL_STUB_ALIAS(BindRenderbuffer, _gloffset_BindRenderbufferEXT, BindRenderbuffer@8, BindRenderbufferEXT, BindRenderbufferEXT@8)
-       GL_STUB_ALIAS(CheckFramebufferStatus, _gloffset_CheckFramebufferStatusEXT, CheckFramebufferStatus@4, CheckFramebufferStatusEXT, CheckFramebufferStatusEXT@4)
-       GL_STUB_ALIAS(DeleteFramebuffers, _gloffset_DeleteFramebuffersEXT, DeleteFramebuffers@8, DeleteFramebuffersEXT, DeleteFramebuffersEXT@8)
-       GL_STUB_ALIAS(DeleteRenderbuffers, _gloffset_DeleteRenderbuffersEXT, DeleteRenderbuffers@8, DeleteRenderbuffersEXT, DeleteRenderbuffersEXT@8)
-       GL_STUB_ALIAS(FramebufferRenderbuffer, _gloffset_FramebufferRenderbufferEXT, FramebufferRenderbuffer@16, FramebufferRenderbufferEXT, FramebufferRenderbufferEXT@16)
-       GL_STUB_ALIAS(FramebufferTexture1D, _gloffset_FramebufferTexture1DEXT, FramebufferTexture1D@20, FramebufferTexture1DEXT, FramebufferTexture1DEXT@20)
-       GL_STUB_ALIAS(FramebufferTexture2D, _gloffset_FramebufferTexture2DEXT, FramebufferTexture2D@20, FramebufferTexture2DEXT, FramebufferTexture2DEXT@20)
-       GL_STUB_ALIAS(FramebufferTexture3D, _gloffset_FramebufferTexture3DEXT, FramebufferTexture3D@24, FramebufferTexture3DEXT, FramebufferTexture3DEXT@24)
-       GL_STUB_ALIAS(GenFramebuffers, _gloffset_GenFramebuffersEXT, GenFramebuffers@8, GenFramebuffersEXT, GenFramebuffersEXT@8)
-       GL_STUB_ALIAS(GenRenderbuffers, _gloffset_GenRenderbuffersEXT, GenRenderbuffers@8, GenRenderbuffersEXT, GenRenderbuffersEXT@8)
-       GL_STUB_ALIAS(GenerateMipmap, _gloffset_GenerateMipmapEXT, GenerateMipmap@4, GenerateMipmapEXT, GenerateMipmapEXT@4)
-       GL_STUB_ALIAS(GetFramebufferAttachmentParameteriv, _gloffset_GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameteriv@16, GetFramebufferAttachmentParameterivEXT, GetFramebufferAttachmentParameterivEXT@16)
-       GL_STUB_ALIAS(GetRenderbufferParameteriv, _gloffset_GetRenderbufferParameterivEXT, GetRenderbufferParameteriv@12, GetRenderbufferParameterivEXT, GetRenderbufferParameterivEXT@12)
-       GL_STUB_ALIAS(IsFramebuffer, _gloffset_IsFramebufferEXT, IsFramebuffer@4, IsFramebufferEXT, IsFramebufferEXT@4)
-       GL_STUB_ALIAS(IsRenderbuffer, _gloffset_IsRenderbufferEXT, IsRenderbuffer@4, IsRenderbufferEXT, IsRenderbufferEXT@4)
-       GL_STUB_ALIAS(RenderbufferStorage, _gloffset_RenderbufferStorageEXT, RenderbufferStorage@16, RenderbufferStorageEXT, RenderbufferStorageEXT@16)
-       GL_STUB_ALIAS(BlitFramebuffer, _gloffset_BlitFramebufferEXT, BlitFramebuffer@40, _dispatch_stub_785, _dispatch_stub_785@40)
-       GL_STUB_ALIAS(FramebufferTextureLayer, _gloffset_FramebufferTextureLayerEXT, FramebufferTextureLayer@20, FramebufferTextureLayerEXT, FramebufferTextureLayerEXT@20)
-       GL_STUB_ALIAS(BeginTransformFeedback, _gloffset_BeginTransformFeedbackEXT, BeginTransformFeedback@4, BeginTransformFeedbackEXT, BeginTransformFeedbackEXT@4)
-       GL_STUB_ALIAS(BindBufferBase, _gloffset_BindBufferBaseEXT, BindBufferBase@12, BindBufferBaseEXT, BindBufferBaseEXT@12)
-       GL_STUB_ALIAS(BindBufferRange, _gloffset_BindBufferRangeEXT, BindBufferRange@20, BindBufferRangeEXT, BindBufferRangeEXT@20)
-       GL_STUB_ALIAS(EndTransformFeedback, _gloffset_EndTransformFeedbackEXT, EndTransformFeedback@0, EndTransformFeedbackEXT, EndTransformFeedbackEXT@0)
-       GL_STUB_ALIAS(GetTransformFeedbackVarying, _gloffset_GetTransformFeedbackVaryingEXT, GetTransformFeedbackVarying@28, GetTransformFeedbackVaryingEXT, GetTransformFeedbackVaryingEXT@28)
-       GL_STUB_ALIAS(TransformFeedbackVaryings, _gloffset_TransformFeedbackVaryingsEXT, TransformFeedbackVaryings@16, TransformFeedbackVaryingsEXT, TransformFeedbackVaryingsEXT@16)
-       GL_STUB_ALIAS(ProvokingVertex, _gloffset_ProvokingVertexEXT, ProvokingVertex@4, ProvokingVertexEXT, ProvokingVertexEXT@4)
-
-               GLOBL   GLNAME(gl_dispatch_functions_end)
-               HIDDEN(GLNAME(gl_dispatch_functions_end))
-               ALIGNTEXT16
-GLNAME(gl_dispatch_functions_end):
-
-#if defined(GLX_USE_TLS) && defined(__linux__)
-       .section ".note.ABI-tag", "a"
-       .p2align 2
-       .long   1f - 0f   /* name length */
-       .long   3f - 2f   /* data length */
-       .long   1         /* note length */
-0:     .asciz "GNU"      /* vendor name */
-1:     .p2align 2
-2:     .long   0         /* note data: the ABI tag */
-       .long   2,4,20    /* Minimum kernel version w/TLS */
-3:     .p2align 2        /* pad out section */
-#endif /* GLX_USE_TLS */
-
-#if defined (__ELF__) && defined (__linux__)
-       .section .note.GNU-stack,"",%progbits
-#endif